운영체제의 심장, 커널
운영체제는 현존하는 프로그램 중 규모가 가장 큰 프로그램 중 하나
운영체제가 제공하는 기능은 다양한데, 가장 핵심적인 서비스를 담당하는 부분을 커널이라고 한다.
ex) 운영체제에는 속하는데, 커널에는 속하지 않는 기능: UI(유저 인터페이스) - 사용자와 컴퓨터 간 상호작용 위한 통로일 뿐
이중모드와 시스템 호출
일반적인 운영 프로그램은 기본적으로 자원에 직접적으로 접근할 수 없다.
운영체제는 오직 자신을 통해서만 접근하도록 하여 자원을 보호
-> 자원 접근을 대행하는 일종의 문지기
이중모드: CPU가 명령어를 실행하는 모드를 크게 사용자 모드와 커널 모드로 구분하는 방식
- 사용자 모드
- 운영체제 서비스를 제공받을 수 없는 실행 모드
- 커널 영역의 코드를 실행할 수 없는 실행 모드
- 자원 접근 불가
- 커널 모드
- 운영체제의 서비스를 제공받을 수 있는 실행 모드
- 자원 접근을 비롯한 모든 명령어 실행 가능
CPU 플래그 레지스터 안에 '슈퍼바이저 플래그'를 통해 현재 사용자 모드로 실행되는지, 커널 모드로 실행되는지 알 수 있음
시스템 호출: 커널 모드로 전환해 실행하기 위한 호출(일종의 소프트웨어 인터럽트)
ex) 새 자식 프로세스 생성 - fork(), 프로세스 실행 - execve(), 프로세스 종료 - exit(), 자식 프로세스 종료까지 대기 - waitpid() ...
(시스템 호출 -> 운영체제 코드 실행 -> 시스템 호출 복귀 과정 빈번하게 일어남)
운영체제의 핵심 서비스 3가지
1. 프로세스 관리
- 프로세스 == 실행중인 프로그램
- 수많은 프로세스들이 동시에 실행
- 동시다발적으로 생성/실행/삭제되는 다양한 프로세스를 일목요연하게 관리(프로세스와 스레드, 프로세스 동기화, 교착상태 해결)
2. 자원 접근 및 할당
- CPU(CPU 스케줄링: 어떤 프로세스를 먼저, 얼마나 더 오래 실행할까?)
- 메모리(페이징, 스와핑...)
- 입출력장치
3. 파일 시스템 관리
- 관련된 정보를 파일이라는 단위로 저장 장치에 보관
- 파일들을 묶어 폴더(디렉터리) 단위로 저장 장치에 보관
'Computer Science' 카테고리의 다른 글
운영체제(Operating System) - 스레드 (1) | 2025.01.04 |
---|---|
운영체제(Operating System) - 프로세스 (0) | 2025.01.03 |