흔히 사용하는 데스크톱 컴퓨터나 노트북, 스마트폰에는 모두 운영체제가 설치되어 있다.
대표적인 데스크톱 운영체제로는 윈도우와 macOS, 리눅스가 있고, 스마트폰 운영체제로는 안드로이드와 iOS가 있으며 컴퓨터 부품들은 운영체제라는 특별한 프로그램의 지휘하에 작동한다.
운영체제
운영체제는 실행할 프로그램에 필요한 자원을 할당하고, 프로그램이 올바르게 실행되도록 돕는 특별한 프로그램이다.
1. 운영체제의 위치
운영체제는 인터넷 브라우저, 게임과 같은 프로그램이기 때문에 운영체제 또한 여느 프로그램과 마찬가지로 메모리에 적재되어야 한다.
다만 운영체제는 매우 특별한 프로그램이기 때문에 항상 컴퓨터가 부팅될 때 메모리 내 커널 영역이라는 공간에 따로 적재되어 실행된다.
- 메모리
- 커널 영역: 메모리 내 운영체제가 적재되는 공간
- 사용자 영역: 메모리 내 커널 영역을 제외한 나머지 영역, 사용자가 이용하는 응용 프로그램이 적재되는 영역
2. 운영체제가 하는 일
2.1 메모리 자원 관리
사용자가 실행할 프로그램을 메모리에 적재하고, 더 이상 실행되지 않는 프로그램을 메모리에서 삭제하며 지속적으로 메모리 자원을 관리한다.
관리할 자원별로 기능이 나누어져 있다.
2.2 CPU 자원 할당
최대한 공정하게 여러 프로그램에 CPU 자원을 할당한다.
2.3 응용 프로그램 자원 할당 및 관리
응용 프로그램과 하드웨어 사이에서 응용 프로그램에 필요한 자원을 할당하고, 응용 프로그램이 올바르게 실행되도록 관리한다.
2.4 자원 보호
응용 프로그램들이 자원에 접근하려고 할 때 응용 프로그램 대신 오직 자신을 통해서만 자원에 접근 및 요청하도록 하여 자원을 보호한다.
이러한 보호하는 역할은 이중 모드로써 구현된다.
3. 이중 모드와 시스템 호출
3.1 이중 모드: CPU가 명령어를 실행하는 모드를 크게 사용자 모드와 커널 모드로 구분하는 방식
- 사용자 모드: 커널 영역의 코드를 실행할 수 없는 모드
- 입출력 명령어와 같이 하드웨어 자원에 접근하는 명령어를 실행할 수 없다.
- 사용자 모드로 실행되는 일반적인 응용 프로그램은 자원에 접근할 수 없다.
- 커널 모드: 커널 영역의 코드를 실행할 수 있는 모드
- CPU가 커널 모드로 명령어를 실행하면 자원에 접근하는 명령어를 비롯한 모든 명령어를 실행할 수 있다. 운영체제는 커널 모드로 실행되기 때문에 자원에 접근할 수 있다.
- 사용자 모드로 실행되는 프로그램이 자원에 접근하는 운영체제 서비스를 제공받으려면 운영체제에 요청(시스템 호출)을 보내 커널 모드로 전환되어야 한다.
3.2 시스템 호출: 운영체제 서비스를 제공받기 위한 요청
- 사용자 모드로 실행되는 프로그램은 시스템 호출을 통해 커널 모드로 전환하여 운영체제 서비스를 제공받을 수 있다.
- 시스템 호출은 인터럽트를 발생시키는 특정 명령어에 의해 발생하는 소프트웨어 인터럽트이다.
4. 운영체제의 핵심 서비스
4.1 프로세스(실행 중인 프로그램) 관리
- 메모리 안에서는 새로운 프로세스들이 마구 생성되고, 사용되지 않는 프로세스는 메모리에서 삭제된다.
- 일반적으로 하나의 CPU는 한 번에 하나의 프로세스만 실행할 수 있기에 CPU는 이 프로세스들을 조금씩 번갈아가며 실행한다.
4.2 자원 접근 및 할당
- CPU
- CPU 스케줄링: 운영체제는 프로세스들에 공정하게 CPU를 할당하기 위해 어떤 프로세스부터 CPU를 이용하게 할 것인지, 얼마나 오래 CPU를 이용하게 할 지를 결정하는 방식
- 메모리
- 새로운 프로세스가 적재될 때마다 어느 주소에 적재해야 할지를 결정해야 한다.
- 입출력장치
- 인터럽트 서비스루틴은 운영체제가 제공하는 기능으로 커널 영역에 있다.
- 입출력장치가 발생시키는 하드웨어 인터럽트도 마찬가지이다.
- 입출력장치가 CPU에 하드웨어 인터럽트 요청 신호를 보내면 CPU는 하던 일을 잠시 백업한 뒤 커널 영역에 있는 인터럽트 서비스루틴을 실행한다.
- 운영체제는 인터럽트를 처리하는 프로그램, 즉 인터럽트 서비스루틴을 제공함으로써 입출력 작업을 수행한다.
4.3 파일 시스템 관리
- 파일 시스템: 파일들을 한데 묶은 디렉터리(폴더)
'CS > 운영체제' 카테고리의 다른 글
[운영체제] CPU 스케줄링에 대하여...더보기 (0) | 2024.11.30 |
---|---|
[운영체제] 교착 상태 발생 조건과 해결 방법 (0) | 2024.11.29 |
[운영체제] 프로세스 한 페이지로 정복하기 (0) | 2024.11.28 |