Last update: @1/7/2023
•
커널(kernel)
: 운영체제의 핵심 서비스를 담당하는 부분(자원 접근/조작, 프로그램 관리 등)
◦
운영체제는 응용 프로그램들이 자원에 접근하려고 할 때 오직 자신을 통해서만 접근하도록
하여 자원을 보호함. 이런 역할은 이중모드로써 구현함
▪
이중 모드(dual mode)
: CPU가 명령어를실행하는 모드를 크게 사용자 모드와 커널 모드로 구분하는 방식. CPU는 명령어를 사용자 모드로써 실행할 수 있고, 커널 모드로써 실행할 수 있음
•
사용자 모드(user mode)
: 운영체제 서비스를 제공받을 수 없는 실행 모드로, 커널 영역의 코드를 실행할 수 없는 모드
◦
일반적인 응용 프로그램은 기본적으로 사용자 모드로 실행됨
◦
사용자 모드로 실행 중인 CPU는 입출력 명령어와 같이 하드웨어 자원에 접근하는 명령어를 실행할 수없음
◦
그래서 사용자 모드로 실행되는 일반적인 응용 프로그램은 자원에 접근할 수 없음
•
커널 모드(kernel mode)
: 커널 모드kernel mode는 운영체제 서비스를 제공받을 수 있는 실행 모드로, 커널 영역의
코드를 실행할 수 있는 모드
◦
CPU가 커널 모드로 명령어를 실행하면 자원에 접근하는 명령어 를 비롯한 모든 명령어를 실행할 수 있음
◦
운영체제는 커널 모드로 실행되기 때문에 자원에 접근할 수 있음
▪
시스템 호출(system call)
: 사용자 모드로 실행되는 프로그램이 자원에 접근하는 운영체제 서비스를 제공받으려면 운영체제에 요청을 보내 커널 모드로 전환되어야 하는데, 이때 운영체제 서비스를 제공받기 위한 요청
•
시스템 호출은 일종의 인터럽트, 정확히는 특정 명령어에 의해 발생하는 소프트웨어 입터럽트임
(입출력장치에 의해 발생하는 하드웨어 인터럽트와 비교)
•
하드 디스크 데이터 저장 예시
1.
응용프로그램은 하드 디스크에 데이터를 저장하는 시스템 호출을 발생시켜 커널 모드로 전환
2.
운영체제 내의 ‘하드 디스크에 데이터를 저장하는 코드’를 실행함으로써 하드 디스크에
접근할 수 있음
3.
그리고 하드 디스크에 접근이 끝나면 다시 사용자 모드로 복귀하여 실행을 계속함
•
일반적으로 응용 프로그램은 실행 과정에서 운영체제 서비스들을 매우 빈번하게 이용함. 그 과
정에서 빈번하게 시스템 호출을 발생시키고 사용자 모드와 커널 모드를 오가며 실행됨
•
◦
운영체제의 핵심 서비스
▪
프로세스 관리
•
프로세스(process)
: 실행 중인 프로그램
•
일반적으로 하나의 CPU는 한 번에 하나의 프로세스만 실행할 수 있기에 CPU는 이 프로세스들을 조금씩 번갈아 가며 실행함
◦
프로세스들은 자신의 차례가 되면 정해진 시간만큼 CPU를 이용하고, 시간이 끝났음을 알리는 타이머 인터럽트가 발생하면 자신의 차례를 양보하고 다음 차례가 올 때까지 기다림
▪
타이머 인터럽트(타임아웃 인터럽트)는 클럭 신호를 발생시키는 장치에 의해 주기적으로 발생하는 하드웨어 인터럽트임
•
각 프로세스는 상태도, 사용하고자 하는 자원도 다양함
◦
입출력장치를 주로 사용하는 프로세스도 있고, 입출력장치는 거의 사용하지 않고 주로 CPU만 사용하는 프로세스도 있음
◦
또 당장 실행할 수 있는 프로세스가 있는 반면, 당장 실행이 불가능한 프로세스도 있음
•
여러 프로세스가 동시에 실행되는 환경에서는 ‘프로세스 동기화’가 필수적이고, 프로세스가 꼼짝도 못하고 더 이상 실행되지 못하는 상황인 ‘교착 상태’를 해결해야 함(12장, 13장)
▪
자원 접근 및 할당
•
CPU
◦
CPU 스케줄링
: 운영체제는 프로세스들에 공정하게 CPU를 할당하기 위해 어떤 프로세스부터 CPU를 이용하게 할 것인지, 얼마나 오래 CPU를 이용하게 할지를 결정하는 것(11장)
•
메모리
◦
새로운 프로세스가 적재될 때마다 어느 주소에 적재해야 할지를 결정
◦
메모리가 꽉 찬 경우, 공간이 있음에도 프로세스를 적재하지 못하는 경우
•
입출력장치
◦
입출력장치가 CPU에 하드웨어 인터럽트 요청 신호를 보내면 CPU는 하던 일을 잠시 백업한 뒤 커널 영역에 있는 인터럽트 서비스 루틴을 실행함
◦
운영체제는 인터럽트를 처리하는 프로그램, 즉 인터럽트 서비스 루틴을 제공함으로써 입출력작업을 수행함
•
파일 시스템 관리
◦
파일 열기, 생성, 삭제, 디렉터리 관리 등(15장)
•
커널에 포함되지 않는 서비스 중 대표적인 것
◦
사용자 인터페이스(UI; User Interface)
: 사용자가 컴퓨터와 상호작용할 수 있는 통로
▪
그래픽 유저 인터페이스(GUI; Graphical User Interface)
▪
커맨드 라인 인터페이스(CLI; Command Line Interface)
•
가상 머신
◦
컴퓨터에 설치된 운영체제에서 가상 머신을 설치 및 실행한다면, 그 가상 머신 또한 응용 프로그램임
◦
그래서 사용자 모드로 작동하고, 마찬가지로 가상 머신상에 설치된 운영체제 또한 사용자 모드로 작동함
◦
가상 머신에 설치된 응용 프로그램이 운영체제 서비스를 제공받기 위해서는 커널 모드로 전환되어야 하는데, 가상 머신에 설치된 운영체제도 사용자 모드로 작동하면 운영체제 서비스를제공받기 어려움
◦
그래서 가상화를 지원하는 CPU는 커널 모드와 사용자 모드 이외에 가상 머신을 위한 모드인 하이퍼
바이저 모드를 따로 둠
◦
이로써 가상 머신 상에서 작동하는 응용 프로그램들은 하이퍼바이저 모
드로써 가상 머신에 설치된 운영체제로부터 운영체제 서비스를 받을 수 있음