커널
운영체제가 제공하는 기능은 다양하지만
가장 핵심적인 서비스는 존재한다
예를 들어 자원에 접근하고 조작하는 기능, 프로그램이 올바르고 안전하게 실행되게 하는 기능 등...
이러한 운영체제의 핵심 서비스를 담당하는 부분을 커널(kernel)이라고 한다
유저 인터페이스 (UI, User Interface)
운영체제에는 속하지만 커널에는 속하지 않는 기능
사용자와 컴퓨터 간의 통로일 뿐 운영체제의 핵심 기능(커널)은 아님
이중 모드
응용프로그램이 자원에 직접 접근하는 것은 위험하다
운영체제는 응용 프로그램들이 자원에 접근하려 할 때
오직 자신(운영체제)을 통해서만 접근하도록 하여 자원을 보호
따라서, 응용 프로그램이 자원에 접근하려면
운영체제에 도움을 요청(= 운영체제의 코드를 실행) 해야 한다
이러한 운영체제의 역할은 이중모드로 구현된다
CPU가 명령어를 실행하는 모드를 크게 사용자 모드와 커널 모드로 구분하는 방식
- 사용자 모드
운영체제 서비스를 제공받을 수 없는 실행 모드
커널 영역의 코드를 실행할 수 없는 실행 모드
자원 접근 불가
- 커널 모드
운영체제의 서비스를 제공받을 수 있는 실행 모드
자원 접근을 비롯한 모든 명령어 실행 가능
+ CPU 안의 플래그 레지스터에서 슈퍼바이저 플래그를 활용해서 판단한다
슈퍼바이저 플래그는 커널 모드로 실행 중인지, 사용자 모드로 실행 중인지를 나타내며
플래그가 1일 경우 커널 모드로 실행 중임을 의미하고
0일 경우 사용자 모드로 실행 중임을 의미한다
따라서, 이중 모드는 CPU가 명령어를 실행하는 모드를 커널 모드와 사용자 모드로 구분하는 방식이다
시스템 호출
일종의 소프트웨어 인터럽트로 운영체제 서비스를 제공받기 위해
커널 모드로 전환하여 실행하기 위한 호출
시스템 호출이 처리되는 방식은 하드웨어 인터럽트 처리 방식과 유사
운영체제의 핵심 서비스
- 프로세스 관리
- 자원 접근 및 할당
- 파일 시스템 관리
- 프로세스 관리
프로세스(실행 중인 프로그램)
동시에 실행중인 수많은 프로세스들을 관리
동시다발적으로 생성/실행/삭제되는 다양한 프로세스를 일목요연하게 관리
+ 페이징, 스와핑:
모든 실행중인 프로세스들을 모두 굳이 메모리에 올릴 필요는 없기 때문에
그것을 관리하는 운영체제의 기법
- 자원 접근 및 할당
CPU (CPU 스케줄링: 어떤 프로세스를 먼저, 얼마나 오래 실행하는지)
메모리 (페이징, 스와핑)
입출력장치 (인터럽트 서비스 루틴)
- 파일 시스템 관리
관련된 정보를 파일이라는 단위로 저장 장치에 보관
파일들을 묶어 폴더(디렉터리) 단위로 저장 장치에 보관
'CS > [혼자 공부하는] 운영체제' 카테고리의 다른 글
3-1] CPU 스케줄링: CPU 스케줄링 개요 (0) | 2023.06.05 |
---|---|
2-3] 프로세스와 스레드: 스레드 (0) | 2023.06.05 |
2-2] 프로세스와 스레드: 프로세스 상태와 계층 구조 (0) | 2023.06.04 |
2-1] 프로세스와 스레드: 프로세스 개요 (0) | 2023.06.04 |
1-1] 운영체제 기초: 운영체제를 알아야 하는 이유 (0) | 2023.06.03 |