운영체제의 심장
0. 운영체제 부팅과정
- 전원이 켜지면 BIOS(Basic Input/Output System)가 POST(Power-On Self Test)를 수행
→ CPU, 메모리, 기타 하드웨어가 정상 작동하는지 점검 - BIOS는 부트로더(Bootloader)를 주기억장치(RAM)로 가져와 실행
- 부트로더는 하드디스크/SSD에서 운영체제 커널을 찾아 메모리에 적재
→ 커널이 메모리에 올라가면서 시스템 제어를 인계받음 - 이후 사용자가 실행하는 일반 프로그램은 보조기억장치에 저장되며,
운영체제가 이를 메모리에 로딩해 프로세스로 실행함 - 커널은 메모리에 올라온 프로세스를 CPU에 할당
→ CPU가 명령어를 해석하고 실행하며, 운영체제가 여러 프로세스에 CPU 시간을 분배
1. 커널(Kernel)의 역할
- 하드웨어와 소프트웨어 애플리케이션 간 통신을 관리
- 프로세스 관리 : CPU 스케줄링, 컨텍스트 스위칭, 프로세스 상태 제어
- 메모리 관리 : 가상 메모리, 페이징, 메모리 할당 및 해제
- 파일 시스템 관리 : 파일 생성/삭제, 디렉토리 구조, 권한 관리 등
- 보안 관리 : 사용자 권한 검증, 접근 제어 리스트(ACL), 인증 등
- 입출력(I/O) 관리
2. 커널 모드(Kernel Mode) vs 사용자 모드(User Mode)
운영체제는 안정성을 위해 작업을 두 모드로 나누어 실행한다.
- 커널 모드: 하드웨어에 직접 접근 가능. 커널이나 장치 드라이버 코드가 이 모드에서 실행됨.
- 사용자 모드: 일반 애플리케이션이 실행되는 모드. 커널의 기능을 직접 호출하지 못하고 시스템 콜을 통해 접근함.
3. 1 시스템 콜(System Call)
사용자 애플리케이션이 운영체제의 커널 기능을 사용하기 위해 호출하는 인터페이스 함수
→ 사용자 모드에서 직접 하드웨어나 커널 자원에 접근할 수 없기 때문에, 시스템 콜을 통해 커널 모드로 전환하여 요청을 처리
시스템 콜 동작 과정
- 사용자 애플리케이션이 시스템 콜 라이브러리 함수 호출 (ex. read(), fork(), exec())
- 라이브러리 함수는 시스템 콜 번호를 설정하고 커널 인터럽트(ex. int 0x80, syscall)를 발생시킴
- 커널 모드로 전환되어 해당 시스템 콜 처리
- 결과를 사용자 공간으로 반환하고 사용자 모드로 복귀
3. 2 인터럽트(Interrupt)
하드웨어나 소프트웨어가 CPU에게 즉시 처리해야 할 이벤트가 발생했음을 알리는 신호
커널은 인터럽트 발생 시, 현재 작업을 일시 중지하고 해당 요청을 우선 처리
→ 효율적 자원 사용과 멀티태스킹을 위한 핵심 개념
인터럽트 동작 과정
- 장치나 프로그램이 인터럽트 신호(Interrupt Request, IRQ)를 발생시킴
- CPU는 현재 실행 중인 작업의 상태(Context)를 저장
- 해당 인터럽트에 등록된 인터럽트 핸들러(Interrupt Handler)를 실행
- 처리 완료 후, 이전 작업 상태를 복원하고 다시 실행 계속
4. 커널(Kernel)의 유형
모놀리식 커널(monolithic kernel)
- 운영체제의 모든 핵심 기능을 하나의 큰 커널 공간 내에서 실행되도록 설계
- 프로세스/메모리/파일 시스템/네트워킹/드라이버 등 모든 기능이 커널 공간에서 동작
- ex) 리눅스(Linux), 유닉스(Unix)
마이크로 커널(microkernel)
- 커널은 최소한의 기능(예: 프로세스 스케줄링, 메모리 보호, IPC 등)만 제공하고, 파일 시스템, 네트워크, 드라이버 등은 사용자 공간에서 실행
- 안정성과 모듈성이 뛰어나며, 개별 컴포넌트가 실패해도 시스템 전체가 영향을 받지 않음
- 단점으로는 커널과 사용자 영역 간 통신 비용으로 인해 성능이 저하될 수 있음
- ex) QNX
하이브리드 커널(hybrid kernel)
- 모놀리식 커널과 마이크로 커널의 특징을 결합한 방식
- 모놀리식과 성능 + 마이크로 모듈성 모두 제공 목표
- 핵심 기능을 커널에 두지만, 가능한 모듈화하여 유지보수와 업데이트를 용이하게 함
- 즉, 컴퓨터의 안정성을 높이고 모놀리식 커널에 가까운 성능을 제공하는게 목표
- ex) 윈도우(Window), iOS
5. 각 커널 아키텍처의 장단점
모놀리식 | - 고성능 - 커널 내 함수 호출이 빠름 - 성숙한 구조 (예: Linux) |
- 하나의 컴포넌트 오류가 전체 시스템에 영향 - 디버깅과 유지보수 어려움 |
마이크로커널 | - 높은 안정성 - 모듈화된 구조로 유지보수 용이 - 하나의 컴포넌트 실패 시 전체 시스템 영향 적음 |
- IPC 비용으로 성능 저하 - 구현 복잡도 증가 |
하이브리드 커널 | - 모놀리식에 가까운 성능 - 일부 모듈화로 유지보수와 확장성 확보 |
- 구조가 복잡하고 구현마다 성능/안정성 차이 있음 |
'Computer Science > Operating System' 카테고리의 다른 글
[OS] CPU 스케줄링 알고리즘 (0) | 2025.04.06 |
---|