사용자가 컴퓨터를 쉽게 사용하도록 돕고 한정된 하드웨어 자원을 효율적으로 관리하는 중재자
전원 ON
BIOS/UEFI 실행: 내장된 펌웨어가 하드웨어 상태를 점검(POST).
부트스트랩 로더(Bootstrap Loader) 실행: 디스크에서 OS 커널(Kernel) 을 찾아 메모리(RAM)로 불러옴.
커널 실행: OS의 심장인 커널이 메모리에서 실행되며 시스템 제어권을 넘겨받음.
(CPU는 디스크에 있는 프로그램을 직접 실행할 수 없음. 따라서 OS 커널을 포함한 모든 프로그램은 반드시 메모리에 올라와야(Load) 실행)
사용자 모드 (User Mode): 일반 응용 프로그램이 실행되는 모드. 하드웨어 직접 접근이 차단
커널 모드 (Kernel Mode): OS 코드가 실행되는 모드. 모든 시스템 자원에 접근 가능
사용자 프로그램은 시스템 콜을 통해 커널 모드의 기능을 안전하게 요청
API (Application Programming Interface): 개발자가 쉽게 사용할 수 있도록 제공되는 함수. (printf(), write() 등)
System Call: API 함수 내부에서 커널에 실제 기능을 요청하기 위해 호출하는 저수준 인터페이스.
write() 함수로 파일에 데이터를 쓰는 과정
[사용자 모드] 프로그램이 API 함수 write()를 호출
라이브러리는 write에 해당하는 시스템 콜 번호와 파라미터를 레지스터에 저장
TRAP 명령이 실행되며 CPU가 커널 모드로 전환
[커널 모드] 커널은 '시스템 콜 테이블'에서 해당 번호의 함수를 찾아 실행. (실제 파일 쓰기 작업 수행)
작업 완료 후, 커널은 결과를 레지스터에 저장하고 사용자 모드로 복귀
[사용자 모드] write() 함수가 결과 값을 반환하고, 프로그램은 다음 코드를 실행
| 구분 | 모놀리틱 커널 (Monolithic Kernel) | 마이크로커널 (Microkernel) |
|---|---|---|
| 정의 | OS의 모든 핵심 서비스(프로세스, 메모리, 파일 시스템, 드라이버 등)가 하나의 거대한 프로그램처럼 커널 모드에서 동작 | 커널은 가장 필수적인 기능만 남기고, 나머지 서비스(파일 시스템 등)는 사용자 모드의 독립된 프로세스로 구현 |
| 장점 | - 성능이 빠름 (커널 내에서 함수 호출로 통신) | - 안정성이 높음 (서비스 하나가 죽어도 커널은 멀쩡) - 확장 및 유지보수가 용이함 |
| 단점 | - 안정성 취약 (드라이버 버그 하나가 시스템 전체를 멈출 수 있음) - 유지보수가 어려움 | - 성능이 느림 (사용자-커널 모드 간 전환 및 통신(IPC) 오버헤드 발생) |
| 대표 예시 | Linux, Unix, Windows 등 대부분의 상용 OS | Mach, L4 등 (과거 macOS의 기반) |
CPU 스케줄링 (프로세스 관리)
메모리 관리
프로세스 간 통신 (IPC, Inter-Process Communication)
링커: 컴파일된 여러 목적 파일(.o)과 라이브러리를 엮어 하나의 실행 파일로 만드는 역할.
로더: 실행 파일을 디스크에서 메모리로 가져와 실행할 수 있도록 준비하는 역할.
소스 코드 → [컴파일러] → 목적 파일 → [링커] → 실행 파일 (디스크) → [로더] → 프로세스 (메모리)
cf)~0911
우와와와와와ㅗ아ㅗ