일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- deque
- 프로세스의 상태
- 서로소 집합
- 탐욕 알고리즘
- binary search
- 동적 계획법
- 중위 표기법
- disjoint-sets
- quick-sort
- 이진 검색
- 후위 표기법
- merge-sort
- 알고리즘 문제
- prim 알고리즘
- 알고리즘
- 이진탐색트리
- 3190번
- 최단 경로 알고리즘
- 완전 탐색
- 부분 집합
- 트리
- BST
- 다이나믹 프로그래밍
- divide and conquer
- union-find
- CPU scheduling
- 프로세스
- 자료구조
- 최소 비용 신장 트리
- kruskal 알고리즘
- Today
- Total
Dionysus
[CS 공부🤖 - 운영체제] Section 4. 프로세스 Ⅱ 본문
가볍게 알아보는 CS 지식!
아래 순서로 진행해볼게요!🧐
☝🏻프로세스
- 프로세스(Process)와 스레드(Thread)의 개념
- 프로세스 상태 전이
- PCB (Process Control Block, 프로세스 제어 블록)
- 문맥 교환(Context Switching)
✌🏻프로세스 스케줄링
- 스케줄링의 개념과 목적
- 스케줄링 기법
👌🏻스케줄링 알고리즘
- 선점형 기법
- 비 선점형 기법
✌🏻프로세스 스케줄링
✅ 스케줄링(Scheduling)의 개념과 목적
✔️ CPU 스케줄링(CPU Scheduling)
메모리에 올라온 프로세스(process)들 중 어떤 프로세스를 먼저 처리할지 순서를 정하는 것으로, 준비 큐(Ready Queue)에 있는 프로세스들 중 CPU를 할당받을 프로세스를 결정하는 과정을 의미한다.
- CPU 스케줄링이 발생하는 상황
CPU 스케줄링은 프로세스(process)의 상태가 전환될 때 발생한다. - CPU 스케줄링의 목적
- 공평성: 모든 프로세스가 자원을 공평하게 배정받아야 함
- 효율성: 시스템 자원을 최대한 활용하여 스케줄링하여야 함
- 안정성: 중요한 프로세스가 우선적으로 처리되어야 함
- 반응 시간 보장: 프로세스의 요구에 적절한 시간 내에 반응해야 함
- 무한 연기 방지: 특정 프로세스가 무한히 연기되지 않도록 해야 함
💡 다중 프로그래밍
다중 프로그래밍은 CPU가 항상 실행중인 프로그램을 가지도록 하여 CPU 이용률을 최대화하는 것을 목적으로 한다. 따라서 현재 실행 상태에 있던 프로세스(process)가 다른 상태로 전이하게 될 때(즉 CPU가 유휴 상태가 될 때), 운영체제(OS)는 그 프로세스로부터 CPU를 회수하여 실행 상태로 전이시킬 다른 프로세스를 선정하고 CPU를 할당한다.

이때 다음으로 실행시킬 프로세스는, CPU 스케줄러(CPU Scheduler)에 의해 준비 큐(Ready Queue)에 들어있는 프로세스들 중 하나를 선택하게 된다. (준비 큐에 대기하고 있는 프로세스들은 언제든지 실행될 수 있는 상태이며, 프로세스들의 PCB(Process Control Block)들이 준비 큐에 저장된다. PCB에는 각 프로세스의 우선순위(priority) 정보가 담겨있다.)

📌 프로세스 우선순위
CPU를 사용하고 싶어하는 프로세스들이 순차적으로 CPU를 사용하게 하는 방법은 언뜻 들으면 합리적인 방식 같으나, 프로세스마다의 우선순위를 고려하지 못한다는 한계점이 있다. 빠르게 처리해야 하는 프로세스일수록 우선순위가 높은데, 대표적으로는 입출력(I/O) 작업이 많은 프로세스가 해당한다.
💭 입출력(I/O) 작업이 많은 프로세스가 우선순위가 높은 이유는 무엇일까?
CPU 집중 프로세스(CPU bound process)가 입출력 집중 프로세스(I/O bound process)보다 CPU 사용량이 상대적으로 많은 프로세스이므로 동일한 빈도로 CPU를 할당하는 것은 비합리적이다. 만약, CPU 집중 프로세스와 입출력 집중 프로세스가 동시에 CPU 자원을 요구한다고 가정하면, 입출력 집중 프로세스를 가능한 한 빨리 실행시켜 입출력장치를 끊임없이 작동시키고, 그 다음 CPU 집중 프로세스에 집중적으로 CPU를 할당하는 것이 더 효율적이기 때문이다.

▶ 즉, I/O bound process에 우선순위를 두어 입출력 작업이 발생했을 때, 작업을 완료하기 전까지 CPU bound process는 대기 상태로 존재하게 되는데, 만약 I/O bound process의 작업이 빨리 완료된다면 CPU는 대기 없이 다른 프로세스를 바로 실행할 수 있다. 반면 CPU bound process에 우선순위를 둔다면, I/O가 필요한 프로세스는 계속 대기하게 되므로 CPU가 비효율적으로 사용될 수 있다.


- CPU 버스트 (CPU burst): CPU를 이용하는 작업을 의미
- 입출력 버스트 (I/O burst): 입출력(I/O)장치를 기다리는 작업
프로세스의 종류마다 입출력(I/O) 장치 이용 시간과 CPU 이용 시간의 양에 차이가 존재하는데, 이를 기준으로 아래와 같이 분류할 수 있다.
- 입출력 집중 프로세스 (I/O bound process)
입출력(I/O) 작업이 많은 프로세스. 즉 입출력 버스트(I/O burst)가 많은 프로세스로, 실행 상태보다는 입출력을 위한 대기(Waiting) 상태에 더 많이 머무르게 됨. 대표적으로는 비디오 재생 또는 디스크 백업 작업 담당 프로세스가 있음.
- CPU 집중 프로세스 (CPU bound process)
CPU 작업이 많은 프로세스. 즉 CPU 버스트(CPU burst)가 많은 프로세스로, 대기(Waiting) 상태보다는 실행(Running) 상태에 더 많이 머무르게 됨. 대표적으로 복잡한 수학 연산과 컴파일, 또는 그래픽 처리 작업을 담당하는 프로세스가 있음.
▶ 운영체제(OS)는 각 프로세스의 PCB에 우선순위(priority) 정보를 명시하며, 해당 정보를 기준으로 우선순위가 높은 프로세스는 더 빨리, 더 자주 실행된다.
💡 CPU 스케줄링 성능의 척도
▶ 프로세서(CPU) 측면
- CPU 사용률
- 처리량 (Throughput)
▶ 프로세스 측면
- 대기 시간 (Waiting Time): CPU 할당받기 전, 준비 큐(Ready Queue)에서의 대기 시간
→ 프로세스가 CPU를 얻었다가 반환하고 다시 대기하는 시간을 모두 포함한 시간
- 응답 시간 (Response Time): 대기 상태에서 CPU를 최초로 얻기까지 걸리는 시간
→ Ready Queue에 들어온 후 최초로 CPU를 얻기까지 걸린 시간
- 반환 시간 (Turn - around Time): 프로세스 생성부터 종료 후 자원 반환까지 걸리는 시간
💭 입출력(I/O) 작업에는 CPU가 할당될까?
입출력 제어 방식(입출력 또는 입출력 장치를 제어하는 방식)은 아래와 같이 분류된다.
- CPU에 의한 방식
- DMA (Direct Memory Access) 방식
- 채널(Channel) 제어기에 의한 방식

1. CPU에 의한 방식
- 초기의 컴퓨터가 입출력(I/O) 장치를 제어한 방식.
- 입출력 장치가 컴퓨터에 연결되면 CPU 내에 고유의 레지스터가 할당되며, 여기에는 작동 여부를 표시하는 상태 레지스터(Status Register)가 존재함
- CPU가 어떤 입출력 장치를 사용할 땐, 해당 장치의 상태 레지스터에게 인터럽트를 걸어 사용 여부를 표시하는 방식으로 제어함
- 이때, CPU가 연결되어 있는 입출력 장치의 상태 레지스터를 모두 검사하면서 상태여부를 판단하는 과정을 Polling이라 함
- 따라서 CPU 자원을 사용하는 입출력(I/O)제어 방식임.
- CPU 자원 낭비 문제가 존재함 → 현재 진행해야 하는 작업이 있음에도, 입출력 장치를 사용하는 경우 CPU 자원이 입출력 장치를 제어하는 데 할당되기 때문
✔ Polling(폴링)
컴퓨터가 외부 장치나 상태를 주기적으로 확인하거나 읽는 프로세스
→ 컴퓨터의 CPU가 현재 실행중인 작업을 일시 중단하고 우선순위가 높은 다른 작업(이벤트)를 먼저 처리하는 인터럽트(interrupt)와 대비되는 개념이다.
2. DMA(Direct Memory Access) 방식
- DMA라는 중간 기기를 사용한 방식으로, 입력된 데이터를 주기억장치(e.g. CPU)에서 처리하는 방식으로 작동하던 기존 방식과 달리 CPU의 개입 없이 입출력(I/O)이 처리되는 방식.
✅ 스케줄링 기법
✔ 선점형 스케줄링 (Preemptive Scheduling)
운영체제(OS)가 현재 실행중인 프로세스로부터 CPU를 강제로 빼앗아 다른 프로세스에 할당할 수 있는 방식
- 어느 하나의 프로세스가 자원 사용을 독점할 수 없는 스케줄링 방식
- 프로세스마다 정해진 시간 만큼 CPU를 사용하고, 정해진 시간을 모두 소비하여 타이머 인터럽트가 발생하면 운엉체제(OS)가 해당 프로세스로부터 CPU 자원을 빼앗아 다음 프로세스에 할당함
- CPU 처리 시간이 매우 긴 프로세스의 CPU 사용 독점을 막을 수 있어 효율적인 운영이 가능함
- 오버헤드(Overhead)가 많이 발생할 수 있음
- 종류
- Round Robin
- SRT
- 다단계 큐 (MLQ, Multi-Level Queue)
- 다단계 피드백 큐 (Multi-Level Feedback Queue)
✔ 비선점형 스케줄링 (Non-Preemptive Scheduling)
프로세스가 CPU를 점유하고 있다면 운영체제(OS)가 이를 빼앗을 수 없는 방식
- 공정성을 보장하고 문맥 교환 오버헤드(overhead)가 적지만, 처리율(throughput)이 떨어질 수 있음
- 다음에 처리해야 할 프로세스와 관계없이 응답시간 예상이 가능함
- 종류
- FCFS
- SJF
- HRN
- 우선순위
- 기한부
✔ 기아현상과 에이징 기법
- 기아현상(Starvation): 시스템에 부하가 많아서 우선순위가 낮은 프로세스가 무한정 기다리는 현상
- SJF, 우선순위, SRT, MLQ 등이 해당함
- 에이징 기법(Aging): 기아현상을 해결하기 위한 기법
- HRN, MLFQ 등이 해당함
✔️참고한 사이트
[Chapter 5. CPU 스케줄링] CPU 스케줄링과 성능 평가의 기준
* 본 글은 '운영체제(Operating System: Concepts) 9th edition'의 내용과 2021학년도 1학기에 수강한 '운영체제' 과목 강의 내용을 함께 정리하여 작성하였습니다. CPU 스케줄링 (CPU Scheduling) 다중 프로그래밍
eunajung01.tistory.com
[Chapter 3. 프로세스] 프로세스의 상태
* 본 글은 '운영체제(Operating System: Concepts) 9th edition'의 내용과 2021학년도 1학기에 수강한 '운영체제' 과목 강의 내용을 함께 정리하여 작성하였습니다. 프로세스는 실행되면서 그 상태가 변한다.
eunajung01.tistory.com
[운영체제/OS] 프로세스 관리
프로세스 상태 ('생준 실대완'으로 암기!) - 하나의 프로세스는 여러가지 이벤트에 의해, 서로 구분되는 상태 변화를 겪는다. - 생성, 준비, 실행, 대기, 완료 상태를 가질 수 있다. 프로세스 상태
gaebom.tistory.com
[운영체제] CPU 스케줄링 (선점 & 비선점)
CPU Scheduling CPU를 사용하려고 하는 프로세스들 사이의 우선순위를 관리하는 작업 - 자원을 어떤 프로세스에 얼마나 할당하는지 정책을 만드는 것 프로세스들에게 자원을 최대한 공평하게 배분하
eun-jeong.tistory.com
26. 입출력 구조 - 입출력 제어
0. 시작하기 전에 - 이전 포스팅에서 입출력 구조를 이해하기 위한 시스템 BUS에 대해서 알아보았다. - 시스템 BUS는 단방향 통신으로 주기억장치와 CPU내부의 레지스터들과의 소통을 위한 회로다.
devraphy.tistory.com
[컴퓨터구조] 시스템 버스(System bus)
시스템 버스(System bus) - 컴퓨터의 구성요소를 서로 연결하고 데이터 전달을 위한 경로 - 주소 버스, 데이터 버스, 제어 버스로 구성 1) 주소 버스(Address Bus) - 메모리의 주소나 I/O Unit의 포트 번호를
dheldh77.tistory.com
[컴퓨터구조] 레지스터의 역할과 종류
레지스터는 CPU가 요청을 처리하는데 필요한 데이터를 일시적으로 저장하는 다목적 공간이다.CPU 내부에 존재하며 연산제어 및 디버깅 목적으로 사용된다. 일시적 메모리 역할을 한다. CPU가 메모
velog.io
입출력 제어방식
컴퓨터와 입·출력장치 사이의 데이터 전송은 여러 가지 모드로 나누어지는데, CPU를 중간 경로로 이용하여 데이터를 입·출력하는 것과 CPU를 거치지 않고 메모리와 직접 입·출력하는 것들로 구
velog.io
DMA(Direct Memory Access) 개념
[운영체제] DMA(Direct Memory Access) & 입출력 처리 방식 CPU 개입없이 메모리 접근하는 기법 CPU를 대신하여 I/O장치와 Memory사이의 데이터전송을 담당하는 장치를 지칭 CPU의 개입 없이 주변장치(입출력
naeunbi698.tistory.com
'CS 및 알고리즘 공부 > CS' 카테고리의 다른 글
[CS 공부🤖 - 운영체제] Section 4. 프로세스 Ⅰ (0) | 2024.09.01 |
---|---|
[자료구조🧬] 트리(Tree) (0) | 2024.08.27 |
[자료구조🧬] 큐 (Queue) (0) | 2024.08.13 |