지금을 사는 사람

혼자 공부하는 컴퓨터 구조 + 운영체제 4주차 본문

스터디/혼공학습단

혼자 공부하는 컴퓨터 구조 + 운영체제 4주차

지금회 2023. 7. 31. 09:16
728x90

기본미션

p304의 확인문제 1번
1. 생성상태
2. 준비 상태
3. 실행 상태
4. 종료 상태
5. 대기 상태

 

선택미션

선입 선처리 스케줄링(FCFS)은 들어온 순서대로 프로세스를 처리한다.
큐(queue)는 들어온 순서대로 자료를 출력할 수 있는 구조로 선입 선처리 스케줄링 알고리즘을 적용한다면
들어온 순서대로인 A, B, C, D 순으로 CPU를 할당받는다.

 

운영체제

운영체제 : 프로그램이 실행되기 위해 필요한 자원을 할당하고 프로그램이 올바르게 실행되도록 하는 프로그램

커널 : 운영체제의 핵심 기능. 사용자가 프로그램을 실행할 때 자원에 접근, 조작을 수행한다.

이중모드 : CPU가 명령어를 사용자모드와 커널 모드로 구분하는데, 커널을 사용할 수 있는지의 유무로 구분된다.
- 사용자모드에서 운영체제의 커널의 도움이 필요하다면 시스템 콜을 사용하면 된다.

 

프로세스와 스레드

프로세스 : 실행중인 프로그램
- CPU의 자원은 한정되어 있어 프로세스들이 돌아가며 CPU를 이용하게 된다. 이때 프로그램이 전환되며 프로세스에 대한 정보를 프로세스 제어 블록(PCB)에 담아 프로세스를 교체한다.
- PCB(Process Control Block) : 프로세스 ID, 레지스터 값, 프로세스 상태와 CPU 스케줄링 정보, 메모리 관리 정보 
- 문맥 교환(Context Switching) : PCB가 교환되는 과정을 말한다.

스레드 : 프로세스를 구성하는 실행단위

 

메모리 영역

코드 영역 : CPU가 실행할 명령어 저장

데이터 영역 : 프로그램이 실행되며 유지해야 할 데이터 저장공간. 전역변수 저장

힙 영역 : 사용자가 직접 할당을 받는 공간. 사용자에게 책임이 있으므로 사용 후 미해제 시 메모리 누수가 발생

스택 영역 : 일시적인 데이터 저장. 매개 변수, 지역 변수 등 저장

 

프로세스 상태와 계층구조

프로세스 상태는 프로세스가 실행되는 과정을 의미한다.
5가지의 상태가 있으며 각 상태에 대한 설명은 아래와 같다.
생성 상태 : 프로세스를 실행하기 위해 메모리에 적재되어 PCB를 할당받은 상태
준비 상태 : 실행 전 대기 상태
실행 상태 : CPU를 할당받아 실행 중인 상태. 작업 종료 전 인터럽트가 발생하면 대기상태로 전환된다.
대기 상태: 인터럽트 발생 시 대기하는 상태
종료 상태: 프로세스 종료. PCB와 메모리가 정리된다.

프로세스 계층 구조
프로세스는 시스템 콜을 통해 다른 프로세스를 생성할 수 있다.
프로세스를 통해 생성하는 프로세스를 부모 프로세스, 부모로부터 생성된 프로세스를 자식 프로세스라고 부른다.
이와 같은 관계를 프로세스 계층구조라고 부른다.

 

CPU 스케줄링

CPU 자원을 배분하여 사용하는 것을 스케줄링이라고 부르며, 방법에 따라 다양한 스케줄링이 있다.

스케줄링 큐 : 실행되어야 하는 프로세스들은 모두 스케줄링 큐를 통해서 스케줄링 된다.

선점형 / 비선점형 스케줄링
: 크게 두 종류로 나눠지며 선점은 사용중인 자원을 뺏을 수 있으나 비선점은 그렇지 않다.

스케줄링 알고리즘의 종류
선입 선처리 스케줄링 : 큐에 삽입된 순서대로 프로세스를 실행한다. CPU를 오래 사용하는 CPU가 먼저 들어온다면 처리시간이 길어지는데 이를 콘보이 효과라고 부른다.

최단 작업 우선 스케줄링 : CPU 이용 시간의 길이가 짧은 프로세스부터 실행한다.

라운드 로빈 스케줄링 : 정해진 시간만큼 CPU를 사용하는 스케줄링

최소 잔여 시간 우선 스케줄링 : 프로세스를 정해진 타임만큼 사용하되 남은 작업시간을 함께 고려하는 스케줄링

우선순위 스케줄링 : 각 프로세스에 우선순위를 부여해서 순위에 따라 실행하는 스케줄링
우선순위가 낮은 프로세스는 계속해서 실행이 지연되는데 이러한 현상을 기하현상이라고 한다.

다단계 큐 스케줄링 : 우선순위별로 준비 큐를 여러개 두어 프로세스를 유형별로 구분한 스케줄링

다단계 피드백 큐 스케줄링 : 다단계 피드백 큐에서 프로세스가 큐 사이를 이동할 수 있도록한 스케줄링
728x90