tlov

[스터디] 2. 운영체제의 큰 그림 본문

개발/운영체제

[스터디] 2. 운영체제의 큰 그림

nowitzki 2024. 8. 15. 15:05

- 커널이란?

- 운영체제의 서비스 종류

- 시스템 콜과 이중 모드란?

 

운영체제는 굉장히 방대한 프로그램이다. 세상에는 다양한 종류의 운영체제가 있다.

그렇기에 운영체제가 프로그램에 제공하는 기능은 정말 다양하다. 하지만, 가장 핵심적인 서비스는 존재한다.

이러한 운영체제의 핵심 서비스를 담당하는 부분을 '커널(Kernel)'이라고 한다.

 

운영체제에는 속하지만 커널에 속하지 않는 기능 -> UI; User Interface

 

 

이중모드와 시스템 호출

사용자가 실행하는 프로그램은 자원에 직접 접근할 수 없다. 자원에 직접 접근하는 것은 위험하다. 왜냐면, 예를 들어 응용 프로그램이 SSD나 HDD와 같은 저장장치에 직접 접근하여 어떤 파일을 수정한 경우 만약 수정 전, 후로 다른 응용 프로그램이 이 자원에 접근하였다면 이 응용 프로그램은 의도치 않게 자원이 수정되어버리기 때문이다.

 

그래서 운영체제는 일반 응용 프로그램이 자원에 접근하려고 할 때 오직 자신을 통해서만 접근하도록 하여 자원을 보호하는 역할을 수행한다. 응용 프로그램들은 자원에 접근하려면 운영체제에게 요청(=운영체제의 코드를 실행)해야한다.

 

이처럼 운영체제의 자원 보호 역할은 '이중모드'로써 실행된다.

 

이중 모드

- CPU가 명령어를 실행하는 모드를 크게 사용자 모드와 커널 모드로 구분하는 방식

 

사용자 모드

- 운영체제 서비스를 제공받을 수 없는 실행 모드

- 커널 영역의 코드를 실행할 수 없는 실행 모드

- 자원 접근 불가

 

커널 모드

- 운영체제의 서비스를 제공받을 수 있는 실행 모드

- 자원 접근을 비롯한 모든 명령어 실행 가능

 

이러한 이중 모드는 FLAG 레지스터 안에 슈퍼바이저 플래그로 커널 모드로 실행 중인지 사용자 모드로 실행 중인지를 나타냄

 

언제 커널 모드가 호출되고 사용자 모드가 호출될까?

시스템 호출 --> 커널 모드로 전환

ㄴ 커널 모드로 전환해서 실행하기 위해서 소프트웨어 인터럽트를 걸어주는 것.

 

운영체제의 핵심 서비스

- 프로세스 관리

- 자원 접근 및 할당

- 파일 시스템 관리

 

프로세스 관리

- 프로세스 == 실행 중인 프로그램

 

운영체제는 동시다발적으로 실행되고 생성되고 삭제되는 프로세스들을 잘 관리해야한다.

 

자원 접근 및 할당

- CPU 접근 및 할당

- 메모리 접근 및 할당

- 입출력 장치 접근 및 할당

 

CPU에서는 CPU 스케줄링 : 어떤 프로세스를 먼저, 얼마나 오래 실행할까?를 배움

 

메모리 접근 및 할당에서는 페이징, 스와핑 개념을 배워 알아볼 것이다. 새로운 프로세스를 적재할 때에 비어있는 공간에다가 적재를 해야하는데 이러한 공간을 어떻게 찾을 것인지? 다양한 프로세스들을 전부 다 메모리에 적재하는 것이 효율적인지? 실행하고자 프로세스가 메모리보다 크다면 어떻게 실행할 것인지?와 같은 내용을 배움

 

입출력 장치는 인터럽트 서비스 루틴과 같다.

 

파일 시스템 관리

- 관련된 정보를 파일이라는 단위로 저장 장치에 보관

- 파일들을 묶어 디렉토리 단위로 저장 장치에 보관