Search

09-2 운영체제의 큰 그림

Last update: @1/7/2023
혼자 공부하는 컴퓨터구조 + 운영체제

운영체제

09 운영체제 시작하기

10 프로세스와 스레드

11 CPU 스케줄링

12 프로세스 동기화

13 교착 상태

14 가상 메모리

15 파일 시스템

커널(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는 커널 모드와 사용자 모드 이외에 가상 머신을 위한 모드인 하이퍼 바이저 모드를 따로 둠
이로써 가상 머신 상에서 작동하는 응용 프로그램들은 하이퍼바이저 모 드로써 가상 머신에 설치된 운영체제로부터 운영체제 서비스를 받을 수 있음