[4주차] Chapter 09. 운영체제, 커널, 이중 모드
Chapter 09 운영체제 시작하기
09-1 운영체제를 알아야 하는 이유
1. 운영체제란
① 시스템 자원(자원)
-프로그램을 실행할 때 필요한 요소들
ex) CPU, 메모리, 보조기억장치 같은 컴퓨터 부품 등
② 운영체제(operating system)
-프로그램 실행에 필요한 자원을 할당하여 프로그램이 올바르게 실행되도록 돕는 프로그램
-한 운영체제 안에 자원을 관리하는 여러 부분들이 있다. (CPU를 관리하는 부분, 메모리를 관리하는 부분 등)
ex) 실행할 프로그램을 적재하고, 실행되지 않는 프로그램을 삭제하며 메모리 자원을 관리한다.
ex) 여러 프로그램이 충돌하지 않고 공정하게 CPU를 이용할 수 있도록 분배한다.
③ 커널 영역(kernel space)
-컴퓨터가 부팅될 때 운영체제가 적재되고 실행되는 메모리 내의 영역
④ 사용자 영역(user space)
-메모리에서 커널 영역을 제외한 나머지 영역
-사용자가 이용하는 응용 프로그램이 적재된다.
-응용 프로그램(application software) : 사용자가 특정 목적을 위해 사용하는 일반적인 프로그램
2. 운영체제를 알아야 하는 이유
① 문제해결
-운영체제가 없다면 개발자는 프로그램을 메모리에 적재하는 코드, CPU가 연산을 하도록 하는 코드 등 코드를 하나하나 다 짜야한다.
-운영체제를 깊이 이해한다면, 운영체제가 현 컴퓨터의 상황을 전달해 주는 것을 이해하고 문제해결에 도움을 받을 수 있다.
ex) 오류 메시지
확인문제
1. (시스템) 자원
2. ②, 운영체제는 커널 영역에 적재된다.
09-2 운영체제의 큰 그림
1. 운영체제의 심장, 커널
① 커널(kernel)
-운영체제의 핵심 서비스인 자원에 접근하고 조작하는 기능, 프로그램이 정상적으로 실행되게 하는 기능을 담당하는 부분
② 사용자 인터페이스(UI; User Interface)
-운영체제가 제공하는 서비스 중 커널에 포함되지 않는 대표적 예시
-사용자가 컴퓨터와 상호작용할 수 있는 통로→같은 커널을 사용해도 사용자 인터페이스는 다를 수 있다.
-그래픽 유저 인터페이스(GUI; Graphic User Interface) : 사용자 인터페이스의 한 종류, 그래픽을 기반으로 상호작용할 수 있는 인터페이스
-커맨드 라인 인터페이스(CLI; Command Line Interface) : 사용자 인터페이스의 한 종류, 명령어를 기반으로 상호작용할 수 있는 인터페이스
2. 이중 모드와 시스템 호출
① 운영체제의 문지기 역할
-응용 프로그램이 하드웨어 자원에 직접 접근하는 것을 방지하여 자원을 보호
→응용 프로그램이 자원에 접근하려면 운영체제에 요청하고, 운영체제가 대신 접근한다.
② 이중모드(dual mode)
-운영체제의 문지기 역할을 구현하는 방식, CPU가 명령어를 실행하는 모드를 사용자 모드와 커널 모드로 구분한다.
-사용자 모드(user mode) : 운영체제 서비스를 제공받을 수 없는 실행 모드 = 커널 영역의 코드를 실행할 수 없는 모드
-커널 모드(kernel mode) : 운영체제 서비스를 제공받을 수 있는 실행 모드 = 커널 영역의 코드를 실행할 수 있는 모드
③ 시스템 호출(system call)
-운영체제 서비스를 제공받기 위한 요청
④ 소프트웨어 인터럽트
-특정 명령어에 의해 발생되는 인터럽트
-시스템 호출이 소프트웨어 인터럽트의 일종이다.
⑤ 시스템 호출 작동 예시
3. 운영체제의 핵심 서비스
① 프로세스 관리
-프로세스(process) : 실행 중인 프로그램
-일반적으로 CPU는 한 번에 하나의 프로세스만 실행 가능하여 여러 프로세스를 번갈아 가며 실행한다.
-이때, 운영체제가 다양한 프로세스를 효율적으로 관리하고 실행할 수 있게 해 준다.
② 자원 접근 및 할당
-CPU 스케줄링 : 운영체제가 프로세스의 CPU를 사용하는 순서와 기간을 결정
-메모리 : 새로운 프로세스가 적재될 때마다 어느 주소에 적재할지 결정
-입출력장치 : 커널 영역에 있는 인터럽트 서비스 루틴으로 하드웨어 인터럽트 요청 신호를 처리
③ 파일 시스템 관리
-파일 시스템(file system) : 흔히 사용하는 파일과 폴더 관리, 운영체제가 지원하는 핵심 서비스
+ 가상 머신(virtual machine)
-소프트웨어적으로 만들어낸 가상 컴퓨터
-가상화를 지원하는 CPU는 커널 모드, 사용자 모드뿐만 아니라 가상 머신을 위한 하이퍼 바이저 모드를 따로 둔다.
-가상 머신 상에서 작동하는 응용 프로그램은 하이퍼 바이저 모드로써 가상 머신에 설치된 운영체제로부터 운영체제 서비스를 받는다.
+시스템 호출의 종류
프로세스 관리 | fork() | 새 자식 프로세스 생성 |
execve() | 프로세스 실행(메모리 공간을 새로운 프로그램의 내용으로 덮어씌움) | |
exit() | 프로세스 종료 | |
waitpid() | 자식 프로세스가 종료할 때까지 대기 |
파일 관리 |
open() | 파일 열기 |
close() | 파일 닫기 | |
read() | 파일 읽기 | |
write() | 파일 쓰기 | |
stat() | 파일 정보 획득 |
파일 관리 | chdir() | 작업 디렉터리 변경 |
mkdir() | 디렉터리 생성 | |
rmdir() | 비어 있는 디렉터리 삭제 |
파일 관리 | mount() | 파일 시스템 마운트 |
umount() | 파일 시스템 마운트 해제 |
확인문제
1. 커널
2. ④, 시스템 호출은 소프트웨어 인터럽트이다.
3. ③