운영체제는 01~08장에 걸쳐 배운 컴퓨터 부품들을 관리하고 프로그램을 작동시키는 특별한 프로그램
09-1. 운영체제를 알아야 하는 이유
운영체제란
실행할 프로그램에 필요한 자원을 할당하고, 프로그램이 올바르게 실행되도록 돕는 특별한 프로그램. 운영체제 또한 프로그램이나, 특별한 프로그램이므로 항상 컴퓨터가 부팅 될 때 메모리 내 커널 영역이라는 공간에 따로 적재된다. 나머지 영역은 사용자가 사용하는 응용 프로그램이 적재되는 사용자 영역이라고 한다. 정부에 비유할 수 있다.
운영체제를 알아야 하는 이유
운영체제와의 대화로 하드웨어와 프로그램을 더 깊이 이해하고, 문제 해결의 실마리를 찾을 수 있다.
09-2. 운영체제의 큰 그림
커널, 이중모드, 시스템 호출, 운영체제가 응용 프로그램에 제공하는 서비스 종류에 대해 알아보자
운영체제의 심장, 커널
커널(kernel): 자원에 접근하고 조작하는 기능, 프로그램이 올바르고 안전하게 실행되게 하는 기능 등 운영체제의 핵심 서비스를 담당하는 부분. 대부분의 운영체제 전공서는 커널을 설명한다.
*사용자 인터페이스: 윈도우의 바탕화면과 같이 사용자가 컴퓨터와 상호작용할 수 있는 통로. 커널에 포함되지 않으면서 운영체제가 제공하는 서비스다. 그래픽 유저 인터페이스(GUI), 커맨드 라인 인터페이스(CLI)가 있다.
이중 모드와 시스템 호출
운영체제는 응용 프로그램이 하드웨어 자원에 직접 접근하는 것을 방지하고 자신을 통해서만 접근하도록 문지기 역할을 한다.
이중 모드(dual mode): CPU가 명령어를 실행하는 모드를 사용자 모드와 커널 모드로 구분하는 방식
- 사용자 모드(user mode): 커널 영역의 코드를 실행할 수 없는 모드. 일반적인 응용 프로그램은 기본적으로 사용자 모드로 실행되며, 자원에 접근할 수 없다.
- 커널 모드(kernel mode): 커널 영역의 코드를 실행할 수 있는 모드. 자원에 접근하는 명령어를 비롯한 모든 명령어를 실행할 수 있다.
(플래그 레지스터 속 슈퍼바이저 플래그를 보면 두 모드 중 어떤 것으로 실행되고 있는지 알 수 있다.)
시스템 호출(system call): 운영체제 서비스를 제공받기 위해 커널 모드로 전환하는 방법. 소프트웨어 인터럽트 중 하나다. 그래서 CPU가 시스템 호출을 처리하는 순서는 04장에서 설명한 인터럽트 처리 순서와 유사하다.
*소프트웨어 인터럽트: 특정 명령어에 의해 발생하는 인터럽트
시스템 호출 명령어 실행 - CPU는 지금까지의 작업을 다시 백업 - 커널 영역 내에 시스템 호출을 수행하는 코드(인터럽트 서비스 루틴) 실행 - 다시 기존에 실행하던 응용 프로그램으로 복귀
운영체제의 핵심 서비스
운영체제의 핵심 서비스를 제공하는 부분은 커널이며, 사용자 프로세스가 커널의 서비스를 제공 받기 위해서는 시스템 호출을 통해 사용자 모드에서 커널 모드로 전환해야 한다. 그리고 이이 책에서 다룰 대표적인 커러의 서시브로는 프로세스 관리, 자원 접근 및 할당, 파일 시스템 관리가 이따.
프로세스 관리
프로세스: 실행 중인 프로그램. 일반적으로 하나의 CPU는 한 번에 하나의 프로세스만 실행할 수 있기에 프로세스들을 조금씩 번갈아 가며 실행한다. 여러 프로세스가 동시에 실행되는 환경에서는 '프로세스 동기화'가 필수적이고, 프로세스가 꼼짝도 못하고 더 이상 실행되지 못하는 상황인 '교착 상태'를 해결해야 한다.
자원 접근 및 할당
모든 프로세스는 실행을 위해 자원을 필요로 한다. 그리고 운영체제는 프로세스들이 사용할 자원에 접근하고 조작함으로써 프로세스에 필요한 자원을 할당해 준다.
CPU
CPU 스케줄링: 운영체제가 프로세스들에 공정하게 CPU를 할당하기 위해 어떤 프로세스부터 CPU를 이용하게 할 것인지, 얼마나 오래 CPU를 이용하게 할지 결정하는 것
메모리
메모리에 적재된 프로세스들은 크기와 주소가 각기 달라 운영체제가 새로운 프로세스가 적재될 때마다 어느 주소에 적재할 지를 결정해야 한다.
입출력장치
인터럽트 서비스 루틴은 운영체제가 제공하는 기능으로 커널 영역에 있다.
파일 시스템 관리
파일 시스템도 운영체제가 지원하는 핵심 서비스다.
'Programming > Computer Science' 카테고리의 다른 글
[혼공스터디 9기] 혼.공.컴.운. - 11. CPU 스케줄링(선택 미션 포함) (0) | 2023.02.05 |
---|---|
[혼공학습단 9기] 혼.공.컴.운. - 10. 프로세스와 스레드 (미션 포함) (0) | 2023.02.04 |
[혼공학습단 9기] 혼.공.컴.운. - 8. 입출력장치 (0) | 2023.02.04 |
[혼공학습단 9기] 혼.공.컴.운. - 7. 보조기억장치(미션 포함) (0) | 2023.01.23 |
[혼공학습단 9기] 혼.공.컴.운. - 6. 메모리와 캐시 메모리 (미션 포함) (0) | 2023.01.23 |
댓글