본문 바로가기

개인공부/혼공학습단 13기 - 컴운

혼공학습단 13기- 4주차

@ 3주차 Keyword

RAM  - DRAM, SRAM

캐시메모리는 CPU 코어에 멀어질수록 용량이 커지고, 속도는 작아진다.

플래시 메모리는 우리가 흔히 사용하는 USB, SSD, SD카드 이다.

플래시 메모리 - SLC타입, MLC타입, TLC 타입

 

셀보다 더 큰단위는 페이지, 블록, 플레인, 다이 순서이다.

RAID는 하드디스크 또는 SSD 를 이용하는 기술로, 여러개의 디스크를 이용하여 하나의 디스크 처럼 취급하는 기술임

 

입출력은 프로그램 입출력, 인터럽트 기반 입출력 DMA 입출력 이 있다.


9. 운영체제 시작하기

9.1. 운영체제를 알아야 하는 이유

9.1.1. 운영체제란

- 모든 프로그램은 하드웨어를 필요로하며, 프로그램 실행에 필요한 요소를 '시스템 자원' 또는 '자원' 이라고 함

- 실행할 프로그램에 필요한 자원을 할당하고, 프로그램이 올바르게 실행되도록 하는 프로그램이 '운영체제' 임

- 운영체제 또한 프로그램이기에 메모리에 적재되는데, → 메모리 내 커널 영역 이라는 특별한 공간에 적재

- 커널 영역을 제외한 나머지 영역을 '사용자 영역' 이라고 함

▷ 운영체제는 커널 영역에 적재되어 사용자 영역에 적재된 프로그램들에게 자원을 할당하고 올바르게 실행되도록 함

 

9.1.2. 운영체제를 알아야 하는 이유

- 운영체제는 하드웨어를 조작하고 관리하는 기능들을 제공 → 개발자들이 하드웨어 조작 코드를 작성할 필요 X

- 운영체제와 대화 통해 하드웨어와 프로그램을 더 깊이 이해하고, 문제 해결의 실마리를 찾을 수 있음

- 여기서 운영체제와의 대화는 오류 메세지

 

9.2. 운영체제의 큰 그림

9.2.1. 운영체제의 심장 커널

- 운영체제는 현존하는 프로그램 중 가장 큰 규모를 가진 프로그램

- 커널은 운영체제의 핵심 서비스 → 자원에 접근하고 조작하는 기능, 프로그램이 올바르고 안전하게 실행되게 하는 기능

- 운영체제가 설치된 모든 기기에는 커널 존재

- 사용자 인터페이스는 사용자가 컴퓨터와 상호작용 할 수 있도록 하지만, 커널에 포함되는 서비스는 아님

- 사용자 인터페이스에는 GUI와 커맨드 라인 인터페이스(CLI)가 있음

 

9.2.2. 이중 모드와 시스템 호출

- 운영체제는 사용자가 실행하는 응용 프로그램이 하드웨어 자원에 직접 접근하는 것을 방지 → 시스템 자원을 보호

- 응용 프로그램의 요청을 받은 운영체제는 응용 프로그램 대신 자원에 접근하여 요청한 작업을 수행 → 이중 모드로써 구현

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

 

사용자 모드 : 운영체제 서비스를 제공받을 수 없는 실행 모드, 커널 영역의 코드를 실행할 수 없음

- 사용자 모드로 실행 중인 CPU는 입출력 명령어와 같이 하드웨어 자원에 접근하는 명령어를 실행할 수 없음

커널모드 : 운영체제 서비스를 제공받을 수 있는 실행 모드, 커널 영역의 코드를 실행할 수 있음

- CPU가 커널 모드로 명령어를 실행하면 자원에 접근하는 명령어를 비롯한 모든 명령어를 실행할 수 있음

 

- 사용자 모드에서 자원에 접근하는 운영체제 서비스를 제공받으려면 운영체제에 요청을 보내 커널 모드로 전환 되어야함

- 이를 위한 요청을 시스템 호출(시스템 콜)이라고 함, 시스템 호출은 소프트웨어적인 인터럽트임

 

9.2.3. 운영체제의 핵심 서비스

- 프로세스 관리, 자원 접근 및 할당, 파일 시스템 관리

 

1) 프로세스 관리

- 실행중인 프로그램을 프로세스라고 하며, 일반적으로 하나의 CPU는 한 번에 하나의 프로세스만 실행할 수 있음

- 여러 프로그램 실행시 조금씩 번갈아 가며 실행됨

- 여러 프로세스가 동시에 실행되는 환경에서는 '프로세스 동기화'가 필수적임

- 프로세스가 더 이상 실행되지 못하는 '교착 상태'를 해결 필요

 

2) 자원 접근 및 할당

- 운영체제는 프로세스들이 사용할 자원에 접근하고 조작함으로써 프로세스에 필요한 필요한 자원을 할당함

 

2-1) CPU 

- 일반적으로 메모리에는 여러 프로세스가 적재, 하나의 CPU는 한번에 하나의 프로세스만 실행 가능

- 운영체제는 프로세스들에 공정하게 CPU를 할당하기 위해 어떤 프로세스부터 CPU를 할당 할지 등 결정 필요

→ CPU 스케쥴링

 

2-2) 메모리

- 메모리에 적재되는 프로세스들의 주소는 가지각색 → 운영체제에서 프로세스 적재 시 메모리 주소를 결정해야 함

- 메모리 공간이 꽉 차있는 경우, 메모리 공간이 남아 있지만 프로세스를 적재하지 못하는 경우가 있음

 

2-3) 입출력장치

- 입터럽트 서비스 루틴은 운영체제가 제공하는 기능 → 당연하게도, 입출력장치에서 발생하는 하드웨어 인터럽트도 포함됨

 

3) 파일 시스템 관리

- 파일시스템은 운영체제가 지원하는 핵심 서비스 중 하나, 데이터를 파일과 디렉터리로 관리

 


10. 프로세스와 스레드

10.1. 프로세스 개요

10.1.1. 프로세스 직접 확인하기

- 사용자가 볼 수 있는 공간에서 실행되는 프로세스 → 포그라운드 프로세스

- 사용자가 볼 수 없는 공간에서 실행되는 프로세스 → 백그라운드 프로세스

- 백그라운드 프로세스 중, 사용자와 직접 상호 작용할 수 있는 백그라운드 프로세스도 있음

- 백그라운드 프로세스는 유닉스 체계의 운영체제에서 데몬, 윈도우 운영 체제에서는 서비스라고 부름

 

10.1.2. 프로세스 제어 블록 (PCB)

- 모든 프로세스는 실행을 위해 CPU가 필요하지만, CPU 자원은 한정적

- 순서대로 한정된 시간동안 CPU를 이용 → 제한된 시간이 끝나면 인터럽트가 발생(타이머 인터럽트) → 다음 순서까지 대기

- 운영체제는 빠르게 번갈아 수행되는 프로세스의 실행 순서를 관리하고, 프로세스 CPU를 비롯한 자원을 배분함

프로세스 제어 블록 (PCB, process control block) 이라고 함

- 프로세스 제어 블록은 프로세스와 관련된 정보를 저장하는 자료 구조임

- PCB는 커널 영역에 생성, 특정 프로세스를 식별하고 해당 프로세스를 처리하는데 필요한 정보를 판단

- 프로세스 생성 시 PCB 생성 → 실행 종료가 되면 PCB 폐기

ex) '새로운 프로세스가 생성되었다' = '운영체제가 PCB를 생성했다'

ex) ' 프로세스가 종료되었다' = '운영체제가 해당 PCB를 폐기했다'

 

프로세스 ID)

- 프로세스 ID (PID, process ID)는 특정 프로세스를 식별하기 위해 부여하는 고유한 번호임

- 같은 일을 수행하는 프로그램을 두 번 실행하면, PID가 다른 두 개의 프로세스가 생성됨

 

레지스터 값)

- 프로세스는 자신의 실행 차례가 돌아오면 이전까지 사용했던 레지스터의 중간값들을 모두 복원

- PCB 안에는 해당 프로세스가 실행하며 사용했던 프로그램 카운터를 비롯한 레지스터 값이 저장됨

 

프로세스 상태)

- 현재 프로세스가 어떤 상태인지도 PCB에 기록되어야 함

- 입출력장치 사용을 위한 대기 상태 여부, CPU 사용을 위한 대기 상태 여부, CPU 이용 상태 여부 등

 

CPU 스케줄링 정보)

- 프로세스가 언제, 어떤 순서로 CPU를 할당받을지에 대한 정보가 PCB에 기록

 

메모리 관리 정보)

- 프로세스마다 메모리에 저장된 위치가 다름 → PCB에 프로세스 주소 정보 필요함

- PCB에 베이스 레지스터, 한계 레지스터 값과 같은 정보들이 저장

- 프로세스 주소를 알기 위한 또다른 중요 정보인 페이지 테이블 정보도 저장

 

사용할 파일과 입출력장치 목록)

- 프로세스가 실행과정에서 특정 입출력장치나 파일을 사용하면 PCB에 해당 내용이 명시

- 어떤 입출력장치가 이 프로세스에 할당되었는지, 어떤 파일들을 열었는지에 대한 정보들이 PCB에 기록

 

10.1.3. 문맥 교환

- 중간 정보, 하나의 프로세스 수행을 재개하기 위해 기억해야 할 정보를 문맥이라고 함

- 하나의 프로세스 문맥은 해당 프로세스의 PCB에 표현되어 있음 (PCB에 기록되는 정보들)

- 인터럽트가 발생하면 운영체제는 해당 프로세스의 PCB에 문맥을 백업 → 다음 실행 프로세스의 문맥을 복구

- 이러한 절차를 문맥 교환이라고 하며, 여러 프로세스가 끊임없이 빠르게 번갈아 가며 실행되는 원리

 

10.1.4. 프로세스의 메모리 영역 (★ 프로그래밍에 있어 중요한 내용임)

 - 프로세스가 생성되면 커널 영역에 PCB가 생성됨

- 사용자 영역에는 코드 영역, 데이터 영역, 힙 영역, 스택 영역으로 나뉘어 저장

 

코드 영역 = 텍스트 영역)

- 실행할 수 있는 코드, 기계어로 이루어진 명령어가 저장됨

- 코드 영역에는 데이터가 아닌 CPU가 실행할 명령어가 담겨져 있기 때문에 쓰기가 금지 → 코드 영역은 읽기 전용 공간

 

데이터 영역)

- 잠깐 썼다가 없앨 데이터가 아닌, 프로그램이 실행되는 동안 유지할 데이터가 저장되는 공간 → 전역 변수가 대표적

- 전역 변수 : 프로그램이 실행되는 동안 유지, 프로그램 전체에 접근할 수 있는 변수

- 코드 영역과 데이터 영역은 크기가 변하지 않음 → 크기가 고정된 영역 = 정적 할당 영역

- 힙 영역과 스택 영역은 프로그램 실행 과정에서 크기가 변할 수 있는 영역 → 동적 할당 영역

 

힙 영역)

- 프로그램을 만드는 사용자, 프로그래머가 직접 할당할 수 있는 저장 공간임

- 프로그래밍 과정 중 힙 영역에 메모리 공간을 할당했다면, 반드시 해당 공간을 반환해야 함

- 메모리 공간 반환은 '더 이상 해당 메모리 공간을 사용하지 않겠다' 라고 운영체제에게 알림

- 메모리 공간을 반환하지 않으면 할당된 메모리 공간은 메모리에 계속 남아 메모리 공간 낭비를 초래

▷ 메모리 누수

 

스택 영역)

- 스택 영역은 데이터를 일시적으로 저장하는 공간

- 데이터 영역에 담기는 값과 달리 잠깐 쓰다가 없어질 값들이 저장되는 공간 → ex) 함수의 실행이 끝나면 사라지는 매개변수

- 일시적으로 저장할 데이터는 스택 영역에 push, 더이상 필요하지 않는 데이터는 pop되어 스택 영역에서 사라짐

 

- 힙 영역과 스택 영역은 실시간으로 크기가 변할 수 있기 대문에 동적 할당 영역이라고 함

- 일반적으로 힙 영역은 메모리의 낮은 주소에서 높은 주소로 할당

- 일반적으로 스택 영역은 높은 주소에서 낮은 주소로 할당

▷ 그래야만 힙 영역과 스택 영역에 데이터가 쌓여도 새롭게 할당되는 주소가 겹치지 않음

 

 

10.2. 프로세스 상태와 계층 구조


10.2.1. 프로세스 상태

- 컴퓨터를 사용할 때 여러 프로세스들이 빠르게 번갈아가며 실행됨 → 하나의 프로세스는 여러 상태를 거치며 실행

- 운영체제는 프로세스의 상태를 PCB를 통해 인식하고 관리함

- 프로세스의 상태를 표현하는 방식은 운영체제마다 조금씩 차이가 있음

 

생성 상태)

- 프로세스를 생성 중인 상태를 생성 상태(new)라고 함 → 메모리에 막 적재되어 PCB를 할당 받은 상태

- 생성 상태 이후, 실행할 준비가 완료된 프로세스는 준비 상태가 되어 CPU 할당을 기다림

 

준비 상태)

- 준비 상태(ready)는 당장 CPU를 할당받아 실행할 수 있지만, 순서를 기다리는 상태임

- 준비 상태에서 순서가 되면 CPU를 할당받아 실행 상태가 됨

 

실행 상태) 

- 실행 상태(running)는 CPU를 할당받아 실행 중인 상태, 할당된 일정 시간 동안만 CPU를 사용할 수 있음

- 할당된 시간을 모두 사용하면(타이머 인터럽트 발생), 다시 준비 상태가 됨

- 입출력장치를 사용하여 입출력장치의 작업이 끝날 때까지 기다려야 한다면, 대기 상태가 됨

 

대기 상태)

- 프로세스는 실행 도중 입출력장치를 사용하는 경우가 있음

- 입출력 작업은 CPU에 비해 처리 속도가 느림

- 입출력 작업을 요청한 프로세스는 입출력장치가 입출력이 끝날 때까지(입출력 완료 인터럽트 받을 때까지) 기다려야 함

- 입출력장치의 작업을 기다리는 상태를 대기 상태(blocked)라고 하며, 작업이 완료되면 해당 프로세스는 다시 준비 상태

 

종료 상태)

- 종료 상태(terminated)는 프로세스가 종료된 상태임

- 프로세스가 종료되면 운영체제는 PCB와 프로세스가 사용한 메모리를 정리함

 

프로세스 상태 다이어 그램

    준비 상태  (디스 패치)
실행 상태    
생성 상태    종료 상태
   
(타이머 인터럽트)
   
         
   
(입출력 완료)
대기 상태
(입출력 요청)
   

 

 

 

 

10.2.2. 프로세스 계층 구조

- 프로세스는 실행 도중 시스템 호출을 통해 다른 프로세스를 생성할 수 있음

- 부모 프로세스 : 새 프로세스를 생성한 프로세스

- 자식 프로세스 : 부모 프로세스에 의해 생성된 프로세스

- 부모/자식 프로세스는 각기 다른 PID를 가짐일부 운영체제에서는 자식 프로세스에 PPID (부모 프로세스 PID) 기록

- 실행 과정 중 자식 프로세스에서 다시 자식 프로세스를 생성할 수 있음 = 계층적인 구조

 

10.2.3. 프로세스 생성 기법

- 부모 프로세스를 통해 생성된 자식 프로세스들은 복제와 옷갈아입기를 통해 실행됨

- 부모 프로세스는 fork를 통해 자신의 복사본을 자식 프로세스로 생성

- 만들어진 복사본(자식 프로세스)은 exec를 통해 자신의 메모리 공간을 다른 프로그램으로 교체

- fork : 자기 자신 프로세스의 복사본을 만드는 시스템 호출, PID 값이나 메모리 위치는 다름

- exec : 자신의 메모리 공간을 새로운 프로그램으로 덮어쓰는 시스템 호출, 새로운 프로그램 내용으로 전환하여 실행

 

운영체제 편은 코드와 맞닿아 있는 부분이 많음

 

10.3. 스레드

- 스레드는 프로세스를 구성하는 실행의 흐름 단위

- 하나의 프로세스는 여러 개의 스레드를 가질 수 있음 → 하나의 프로세스에서 여러 부분을 동시에 실행할 수 있음

 

10.3.1. 프로세스와 스레드

- 프로세스가 하나의 실행 흐름을 가지고 한 번에 하나의 부분만 실행 → 단일 스레드 프로세스

- 스레드 개념의 도입으로, 하나의 프로세스를 구성하는 여러 명령어를 동시에 실행할 수 있게 됨

- 스레드는 프로세스 내에서 각기 다른 스레드 ID, 프로그램 카운터 값, 레지스터 값, 스택으로 구성됨

- 각자 프로그램 카운터 값을 비롯한 레지스터 값, 스택을 갖고 있기에, 스레드마다 각기 다른 코드를 실행 할 수 있음

- 프로세스의 스레드들은 실행에 필요한 최소한의 정보만을 유지한 채 프로세스 자원을 공유하여 실행됨

- 프로세스 자원을 공유하는게 핵심

 

10.3.2. 멀티프로세스와 멀티스레드

- 여러 프로세스를 동시에 실행하는 것을 멀티프로세스라 함

- 여러 스레드로 프로세스를 동시에 실행하는 것을 멀티스레드라고 함

- 프로세스끼리는 기본적으로 자원을 공유하지 않지만, 스레드끼리는 같은 프로세스 내의 자원을 공유함

- 스레드는 같은 프로세스 내에서 동일한 주소 공간의 코드, 데이터, 힙 영역을 공유하고, 열린 파일과 같은 프로세스 자원을 공유

- 프로세스를 병행 실행하는 것보다 메모리, 통신, 협력에 더 효율적임

- 자원을 공유하는 특성의 단점 : 하나의 스레드에 문제가 생기면 프로세스 전체에 문제가 생길 수 있음

 


11. CPU 스케줄링

11.1. CPU 스케줄링 개요

- 운영체제가 프로세스들에게 공정하고 합리적인 CPU 자원을 배분하는 것을 CPU 스케줄링이라고 함

 

11.1.1. 프로세스 우선순위

- 프로세스마다 우선순위가 다르며, 우선순위가 높은 프로세스는 빨리 처리되어야 함

- 프로세스 종류마다 입출력장치를 이용하는 시간과 CPU를 이용하는 시간의 차이가 있음

- 입출력 집중 프로세스 : 입출력 작업이 많은 프로세스

- CPU 집중 프로세스 : CPU 작업이 많은 프로세스

- 입출력 집중 프로세스에서 CPU를 CPU 집중 프로세스와 동일한 빈도로 사용하는 것은 비합리적임

- 이러한 이유로, 모든 프로스세가 CPU를 순서대로 돌아가며 사용하는 것보다 상황에 맞게 CPU를 배분해야 효율적임

- 운영체제는 각 프로세스의 PCB에 우선순위를 명시하고, PCB에 적힌 우선순위를 기준으로 프로세스 처리

 

11.1.2. 스케줄링 큐

- CPU를 사용할 다음 프로세스를 찾기 위해 운영체제가 모든 프로세스의 PCB를 뒤적거리는 것은 비효율적임

- 운영체제는 메모리로 적재되고 싶은(새로 생성되는) 프로세스들, CPU 자원을 이용하고 싶은 프로세스들에 대해 각각의 큐에 삽입

- 운영체제가 관리하는 대부분의 자원은 큐로 관리됨

- 준비 큐 : CPU를 이용하고 싶은 프로세스들이 서는 줄

- 대기 큐 : 입출력장치를 이용하기 위해 대기 상태에 접어든 프로세스들이 서는 줄

- 운영 체제는 PCB들이 큐에 삽입된 순서대로 프로세스를 하나씩 꺼내어 실행하되, 우선순위가 높은 프로세스를 먼저 실행

 

11.1.3. 선점형과 비선점형 스케줄링

- 현재 CPU를 사용 중인 프로세스로부터 CPU 자원을 빼앗아 다른 프로세스에 할당할 수도 있고, CPU를 사용 중인 프로세스의 작업이 끝날 때 까지 다른 급한 프로세스를 기다리게 할 수도 있음

 

- 선점형 스케줄링 : 프로세스가 CPU를 비롯한 자원을 사용하고 있더라도 운영체제가 프로세스로부터 자원을 강제로 빼앗아 다른 프로세스에 할당할 수 있는 스케줄링 방식 → 어느 하나의 프로세스가 자원 사용을 독점할 수 없는 스케줄링 방식

- 비선점형 스케줄링 : 하나의 프로세스가 자원을 사용하고 있다면, 그 프로세스가 종료되거나 스스로 대기 상태에 접어들기 전까진 다른 프로세스가 끼어들 수 없는 스케줄링 방식 → 하나의 프로세스가 자원 사용을 독점할 수 있는 스케줄링 방식

 

- 현재 대부분의 운영체제는 선점형 스케줄링 방식을 차용함

 

- 선점형 스케줄링은 더 급한 프로세스가 언제든 끼어들어 사용할 수 있는 스케줄링 방식

장점 : 골고루 자원을 배분

단점 : 문맥 교환과정에서 오버헤드 발생할 수 있음

 

- 비선점형 스케줄링은 문맥교환 횟수가 상대적으로 적음

장점 : 오버헤드는 적음

단점 : 하나의 프로세스가 자원을 사용 중이라면 당장 자원을 사용해야 하는 상황에서도 무작정 기다려야함, 골고루 자원 사용 X

 

11.2. CPU 스케줄링 알고리즘

11.2.1. 스케줄링 알고리즘의 종류

1) 선입 선처리 스케줄링

- FCFS (first com fist scheduling), 단순히 준비 큐에 삽입된 순서대로 프로세스들을 처리하는 비선점형 스케줄링 방식

- 선입 선처리 스케줄링은 CPU를 먼저 요청한 프로세스부터 CPU를 할당하는 스케줄링 방식

- 가끔 프로세스들이 기다리는 시간이 매우 길어질 수 있는 단점이 발생할 수 도 있음 (호위 효과, convoy effect)

2) 최단 작업 우선 스케줄링

- SJF 스케줄링, 준비된 큐에 삽입된 프로세스들 중 CPU 이용 시간의 길이가 가장 짧은 프로세스부터 실행하는 스케줄링 방식 

- 최단 작업 우선 스케줄링은 기본적으로 비선점형 스케줄링 알고리즘으로 분류되지만 선점형으로 구현 가능

3) 라운드 로빈 스케줄링

- 선입 선처리 스케줄링에 타임 슬라이스라는 개념이 더해진 방식

- 타임슬라이스란 각 프로세스가 CPU를 사용할 수 있는 정해진 시간을 의미

- 정해진 타임 슬라이스만큼의 시간 동안 돌아가며 CPU를 이용하는 선점형 스케줄링임 

- 타임 슬라이스 크기가 매우 중요

지나치게 크면 : 선입 선처리 스케줄링 처럼 호위 효과가 생길 수 있음

지나치게 작으면 : 문맥 교환에 발생하는 비용이 커, CPU는 프로세스를 처리하는 일보다 프로세스를 전환하는데 올인

 

4) 최소 잔여 시간 우선 스케줄링

- SRT 스케줄링이라고도 하며, 최단 작업 우선 스케줄링 알고리즘과 라운드 로빈 알고리즘을 합친 스케줄링 방식

- 최단 작업 우선 스케줄링의 경우 작업 시간이 짧은 프로세스부터 처리하는 스케줄링 알고리즘

- 라운드 로빈 알고리즘은 정해진 타임 슬라이스만큼 돌아가며 CPU를 사용하는 선점형 스케줄링 알고리즘

- 최소 잔여 시간 우선 스케줄링 안에서, 프로세스는 정해진 타임 슬라이스 만큼 CPU를 사용하되,

- CPU를 사용할 다음 프로세스로는 남아 있는 작업시간이 가장 적은 프로세스가 선택

 

5) 우선순위 스케줄링

- 프로세스들에 우선순위를 부여하고, 가장 높은 우선순위를 가진 프로세스부터 실행하는 스케줄링 알고리즘

- 최단 작업 우선 스케줄링, 최소 잔여 시간 우선 스케줄링은 넓은 의미로 우선순위 스케줄링의 일종

- 우선순위 스케줄링은 근본적인 문제가 있음 → 기아 현상

- 우선순위가 높은 프로세스를 우선하여 처리하는 방식이기에 우선순위가 작은 프로세스는 실행이 계속해서 연기될 수 있음

- 기아 현상을 방지하기 위한 방법으로 에이징이 있음

- 에이징은 오랫동안 대기한 프로세스의 우선 순위를 점차 높이는 방식임

 

6) 다단계 큐 스케줄링

- 우선순위 스케줄링의 발전 형태로, 우선 순위별로 준비 큐를 여러 개 사용하는 스케줄링 방식임

- 우선순위가 가장 높은 큐에 있는 프로세스들을 먼저 처리하고, 다음 우선순위 큐에 있는 프로세스를 처리

- 큐마다 다른 스케줄링 알고리즘을 사용할 수 있음

 

7) 다단계 피드백 큐 스케줄링

- 다단계 큐 스케줄링의 발전된 형태

- 다단계 큐 스케줄링에서는 프로세스들이 큐 사이를 이동할 수 없기에, 기아 현상이 발생할 수 있음

- 다단계 피드백 큐 스케줄링은 프로세스들이 큐 사이를 이동할 수 있음

- CPU를 오래 사용해야 하는 CPU 집중 프로세스들의 우선순위는 점차 낮아지고,

- CPU를 적게 사용하는 입출력 집중 프로세스들은 우선순위가 높은 큐에서 실행

→ 어떤 프로세스의 CPU 이용 시간이 길면 낮은 우선순위 큐로 이동

→ 어떤 프로세스가 낮은 우선순위 큐에서 너무 오래 기다린다면 높은 우선순위 큐로 이동시킬 수 있음

- 가장 일반적인 CPU 스케줄링 알고리즘

 


# 진도 기본 숙제(필수) 추가 숙제(선택)
4주차
(2/3 ~ 2/9)
Chapter 09 ~ 11 p. 304의 확인 문제 1번 풀고 인증하기 Ch.11(11-2) 준비 큐에 A,B,C,D 순으로 삽입되었다고 가정했을 때, 선입 선처리 스케줄링 알고리즘을 적용하면 어떤 프로세스 순서대로 CPU를 할당받는지 풀어보기

 

1. 프로세스 상태 다이어그램 채우기

    2)준비 상태  (디스 패치)
3)실행 상태    
1) 생성 상태    4)종료 상태
   
(타이머 인터럽트)
   
         
   
(입출력 완료)
5)대기 상태
(입출력 요청)
   

 

2. Ch.11(11-2) 준비 큐에 A,B,C,D 순으로 삽입되었다고 가정했을 때, 선입 선처리 스케줄링 알고리즘을 적용하면 어떤 프로세스 순서대로 CPU를 할당받는지 풀어보기

- 입력한 순서대로 A,B,C,D 순으로 나오게 됨

- 호위 효과가 발생할 수도 있음

'개인공부 > 혼공학습단 13기 - 컴운' 카테고리의 다른 글

혼공학습단 13기- 6주차  (0) 2025.02.25
혼공학습단 13기- 5주차  (0) 2025.02.19
혼공학습단 13기- 3주차  (0) 2025.02.04
혼공학습단 13기- 2주차  (0) 2025.02.04
혼공학습단 13기- 1주차  (0) 2025.01.13