💻 혼자 공부하는 컴퓨터구조 + 운영체제 4주차
✍️4주차 프로세스와 스케줄링
이번 4주차에 공부한 내용은 1. 운영체제. 2. 프로세스와 스레드. 3. CPU 스케줄링에 대해 학습했습니다.
주요 내용은 다음과 같습니다.
- 운영체제가 하는 역할
- 프로세스와 스레드에 대한 이해
- CPU 스케줄링
1. 운영체제시작하기
1-1. 운영체제를알아야하는이유
운영체제의 가장 중요한 역할은 자원관리이다.
이름 | 설명 |
---|
운영체제 | 실행할 프로그램(ex. 응용 프로그램)에 자원을 할당하고, 프로그램이 올바르게 실행되도록 돕는 프로그램 |
메모리의 구분
이름 | 설명 |
---|
사용자(User) 영역 | 사용자가 이용하는 응용 프로그램이 적재되는 영역 |
커널(Kernel) 영역 | 컴퓨터 부팅 시에 운영체제가 로드되는 영역 |
1-2. 운영체제의 큰 그림
커널은 운영체제의 핵심 서비스를 담당한다.
이름 | 설명 |
---|
커널(Kernel) | 자원에 접근하고 조작하는 기능, 프로그램이 올바르고 안전하게 실행하게 하는 기능 등 운영체제의 핵심 서비스 |
커널에 포함되는 서비스 | 커널에 포함되지 않는 서비스 |
---|
자원에 접근하고 조작하는 기능 | 사용자 인터페이스(GUI, CLI) |
프로그램을 올바르게 실행시키는 기능 | |
이름 | 설명 |
---|
이중 모드 | CPU가 명령어를 실행하는 모드를 커널 모드와 사용자 모드로 구분 |
시스템 호출 | 운영체제의 서비스를 제공받기 위해 커널 모드로 전환하는 방법 |
대표적인 운영체제 서비스 |
---|
프로세스 관리 |
자원 접근 및 할당 |
파일 시스템 관리 |
2. 프로세스와 스레드
2-1. 프로세스 개요
프로세스 종류 | 설명 |
---|
포그라운드 프로세스 | 사용자가 보는 앞에서 실행되는 프로세스 |
백그라운드 프로세스 | 사용자가 보지 못하는 뒤편에서 실행되는 프로세스(데몬, 서비스) |
이름 | 설명 |
---|
문맥 교환 | 프로세스 간에 실행을 전환하는 것 |
PCB가 담고 있는 값의 종류 | 설명 |
---|
프로세스 ID | 특정 프로세스 식별을 위해 부여한 고유 번호 |
레지스터 값 | 해당 프로세스가 실행하며 사용했던 프로그램 카운터를 비롯한 레지스터 값 저장 |
프로세스 상태 | 현재 프로세스가 어떤 상태인지 기록(IO 상태, CPU 상태 등) |
CPU 스케줄링 정보 | 프로세스가 언제 어떤 순서로 CPU를 할당받을지에 대한 정보 |
메모리 관리 정보 | 프로세스가 어느 주소에 저장되어 있는지에 대한 정보(베이스 레지스터, 한계 레지스터 값 등) |
사용한 파일과 입출력장치 목록 | 어떤 입출력장치가 할당되었는지, 어떤 파일을 열었는지에 대한 정보 |
프로세스 사용자 영역 | 설명 |
---|
코드 영역(텍스트 영역) | 기계어로 이루어진 명령어 저장. 읽기 전용 공간 |
데이터 영역 | 프로그램이 실행되는 동안 유지할 데이터가 저장되는 공간(전역변수) |
힙 영역 | 프로그래머가 직접 할당할 수 있는 저장 공간(공간 반환 필요) |
스택 영역 | 데이터를 일시적으로 저장하는 공간(매개 변수, 지역변수) |
- 정적 할당 영역 : 코드 영역과 데이터 영역은 크기가 고정된 영역
- 동적 할당 영역 : 힙 영역과 스택 영역은 프로세스 실행 과정에서 그 크기가 변할 수 있는 영역
2-2. 프로세스 상태와 계층 구조
프로세스 상태 | 설명 |
---|
생성 | 프로세스를 생성 중인 상태(PCB 할당) |
준비 | CPU 할당을 기다리는 상태 |
실행 | CPU를 할당받아 실행 중인 상태 |
대기 | 입출력장치의 작업을 기다리는 상태 |
종료 | 프로세스가 종료된 상태. PCB와 메모리 정리 |
이름 | 설명 |
---|
부모 프로세스 | 프로세스가 다른 프로세스를 생성한 경우 프로세스를 생성한 프로세스 |
자식 프로세스 | 생성된 프로세스 |
이름 | 설명 |
---|
프로세스 계층 구조 | 프로세스가 새로운 프로세스를 낳는 구조 |
2-3. 스레드
이름 | 설명 |
---|
멀티프로세스 | 여러 프로세스를 동시에 실행하는 것 |
멀티스레드 | 여러 스레드로 프로세스를 동시에 실행하는 것 |
3. CPU 스케줄링
3-1. CPU 스케줄링 개요
이름 | 설명 |
---|
CPU 스케줄링 | 공정하고 합리적으로 CPU 자원을 배분하는 방법을 의미 |
| |
---|
PCB(Process Control Block) | 프로세스는 우선순위를 가지고 있고 이는 PCB에 명시됨. |
| |
---|
준비 큐 | CPU 할당을 기다리는 프로세스들을 위한 큐 |
대기 큐 | 입출력장치를 기다리는 프로세스들을 위한 큐 |
| |
---|
선점형 스케줄링 | 프로세스가 이용 중인 자원을 빼앗을 수 있음 |
비선점형 스케줄링 | 프로세스가 이용 중인 자원을 빼앗을 수 없음 |
3-2. CPU 스케줄링 알고리즘
CPU 스케줄링 알고리즘 | 설명 |
---|
선입 선처리 스케줄링 | 준비 큐에 삽입된 순서대로 CPU 할당 |
최단 작업 우선 스케줄링 | 준비 큐에 삽입된 프로세스 중 CPU 사용 시간의 길이가 가장 짧은 프로세스부터 CPU 할당 |
라운드 로빈 스케줄링 | 정해진 시간만큼만 돌아가며 PCU 할당 |
우선순위 스케줄링 | 가장 높은 우선순위를 가진 프로세스에 CPU 할당 |
다단계 피드백 큐 스케줄링 | 프로세스들이 큐 사이를 이동할 수 있는 다단계 큐 스케줄링 |
4주차 기본 미션
p. 304의 확인 문제 1번 풀고 인증하기
- 생성 상태
- 준비 상태
- 실행 상태
- 종료 상태
- 대기 상태
4주차 선택 미션
Ch.11(11-2) 준비 큐에 A,B,C,D 순으로 삽입되었다고 가정했을 때,
선입 선처리 스케줄링 알고리즘을 적용하면 어떤 프로세스 순서대로 CPU를 할당받는지 풀어보기
A -> B -> C -> D