전체 글(590)
-
[기타] OPic IM2
많이 늦었다...
2025.02.24 -
[1000줄 OS 구현하기] 메모리 할당
메모리 할당 | OS in 1,000 Lines operating-system-in-1000-lines.vercel.app 1. 이론 가. 가상 메모리 (Virtual Memory)보조 저장자치의 일정 영역을 주 저장장치처럼 활용하는 방법을 제공. 훨씬 더 큰 공간의 보조 메모리를 가상의 메인 메모리(스왑 영역)로 사용하는 방식. 가상의 주소를 물리 주소와 매핑한다. CPU는 가상의 주소를 사용한다. 가상 주소 공간은 메모리 관리 장치(MMU)에 의해서 물리 주소로 변환된다. (address translation) 이 덕분에 프로그래머는 가상 주소 공간상에서 프로그램을 짜게 되어 프로그램이나 데이터가 주메모리상에 어떻게 존재하는지를 의식할 필요가 없어진다. 더보기💡swap 동작 순서메인 메모리에서 내려..
2025.02.11 -
[1000줄 OS 구현하기] 예외
예외 (Exception) | OS in 1,000 Lines operating-system-in-1000-lines.vercel.app 1. 예외 운영체제(OS)에서 예외(Exception)는 프로그램 실행 중에 발생하는 예기치 않은 상황이나 오류를 의미한다. 이는 하드웨어나 소프트웨어에서 발생할 수 있으며, 정상적인 프로그램의 흐름을 방해하는 사건입니다. 예외는 크게 다음과 같은 상황에서 발생할 수 있다:하드웨어 인터럽트: 외부 장치로부터의 신호나 이벤트소프트웨어 인터럽트: 시스템 콜과 같은 프로그램의 의도적인 요청프로그램 오류: 0으로 나누기, 잘못된 메모리 접근, 페이지 폴트 등 운영체제는 이러한 예외 상황이 발생했을 때 적절한 예외 처리 루틴을 실행하여 시스템의 안정성을 유지해야 한다. 프로세스..
2025.02.05 -
[1000줄 OS 구현하기] 커널 패닉
커널 패닉 (Kernel Panic) | OS in 1,000 Lines operating-system-in-1000-lines.vercel.app 1. 커널 패닉 커널 패닉은 운영체제의 커널에서 복구할 수 없는 치명적인 오류가 발생했을 때 시스템이 안전하게 작동할 수 없다고 판단하여 즉시 작동을 중지하는 상태를 말합니다. 블루스크린과 같다고 생각하면 된다. 이번 챕터에서는 크리티컬 한 오류가 발생하면 커널이 동작을 멈추도록 구현해 보았다. kernel.h#define PANIC(fmt, ...) \ do { ..
2025.02.03 -
[1000줄 OS 구현하기] C 표준 라이브러리
C 표준 라이브러리 | OS in 1,000 Lines operating-system-in-1000-lines.vercel.app 1. C 표준 라이브러리 기본 타입과 메모리 조작, 문자열 조작 함수를 직접 구현해 본다. 가. 기본 타입들 common.htypedef int bool;typedef unsigned char uint8_t;typedef unsigned short uint16_t;typedef unsigned int uint32_t;typedef unsigned long long uint64_t;typedef uint32_t size_t;typedef uint32_t paddr_t;typedef uint32_t vaddr_t;#define true 1#define false 0#define..
2025.02.03 -
[1000줄 OS 구현하기] Hello World!
Hello World! | OS in 1,000 Lines operating-system-in-1000-lines.vercel.app한글 번역이 생겼습니다! 1. SBI로 출력 SBI를 OS의 API 정도로 소개했었다. SBI의 function을 호출하기 위해선 ecall 명령어를 사용한다. 가. kernel.c#include "kernel.h"typedef unsigned char uint8_t;typedef unsigned int uint32_t;typedef uint32_t size_t;extern char __bss[], __bss_end[], __stack_top[];void *memset(void *buf, char c, size_t n) { uint8_t *p = (uint8_t..
2025.02.03 -
[1000줄 OS 구현하기] Boot
Boot | OS in 1,000 Lines operating-system-in-1000-lines.vercel.app 1. Booting 보통 컴퓨터를 부팅하면 BIOS나 UEFI가 하드웨어를 초기화하고 OS를 로드한다. QEME virt machine에서는 OpenSBI가 BIOS나 UEFI 역할을 수행한다. 종류long form설명특징BIOSBasic Input/Output System컴퓨터 부팅 시 가장 먼저 실행되는 펌웨어하드웨어 초기화, 운영체제 로드, 오래된 PC에서 주로 사용UEFIUnified Extensible Firmware InterfaceBIOS를 대체하는 현대적인 펌웨어 인터페이스빠른 부팅 속도, 더 많은 기능 제공, 현대 PC에서 주로 사용OpenSBIOpen Supervis..
2025.01.21 -
[1000줄 OS 구현하기] RISC-V Assembly
RISC-V 101 | OS in 1,000 Lines operating-system-in-1000-lines.vercel.app 1. RISC-V RISC-V는 (”리스크 파이브"로 발음한다.) 축소 명령어 집합 컴퓨터 즉, RISC(Reduced Instruction Set Computer) 기반의 개발형 명령어 집합(ISA)이다. 대부분의 ISA와 달리 RISC-V ISA는 일부 목적으로는 자유로이 사용할 수 있으며, 누구든지 RISC-V 칩과 소프트웨어를 설계, 제조, 판매할 수 있게 허가되어 있다. 저자는 RISC-V를 CPU로 선택한 이유가 명세가 간단하고 초보자에게 적합하며, x86과 Arm과 함께 최근 주목받는 ISA이기 때문이라 한다. RISC-V Ratified Specificatio..
2025.01.17