스파르타 국비지원 | 내일배움카드로 0원에 코딩 공부하기
코딩교육 1위 스파르타코딩클럽의 강의를 0원에 수강하세요! 국민내일배움카드 발급 가능 대상자라면 누구나 가능합니다.
spartacodingclub.kr
TIL(24.03.20)
.
.
.
CS 핵심 용어 정리
- 프로그램을 실행해 주는 주체 = 프로세스
- ex) sns를 실행하는 포로세스
- 작업을 처리해 주는 주체 = 쓰레드
- ex) 메시지 발송을 처리하는 쓰레드
CPU를 사용하기 위해선 프로세스 배정 필요!
- CPU의 한정된 자원을 최대한 성능으로 이끌어내기 위해선 = OS를 실행 대기 중인 프로그램(프로세스)들에게 CPU 자원 배정을 적절하게 사용하여 시스템의 성능을 끌어올릴 수 있다.(결국 처리는 CPU)
- 공통 배정 조건 : 오버헤드 ↓ / 사용률 ↑ / 기아 현상 ↓
- 오버헤드 : 프로세스가 필요한 자원보다 더 많이 사용하지 않도록
- 사용률 : 프로세스가 많은 자원을 받고 빨리 처리하도록
- 기아 현상 : 프로세스가 할당받지 못하여 배고프지 않도록
- 목표에 따른 배정조건 :
- 배치 시스템 : 가능하면 많은 일을 수행/시간보단 처리량(throughout)이 중요
- 대화형 시스템 : 빠른 응답 시간/적은 대기 시간이 중요
- 실시간 시스템 : 실시간 즉, 빠른 응답이 중요
정책에 따라서 3가지로 나뉜다.
- CPU 이용률을 최대화
- 오버헤드를 최소화
- 모든 프로세스가 공평하게 분배하는 방식
스케쥴링의 단위
CPU, I/O Burst Cycle
- 프로세스 실행은 “CPU실행 ↔ 입/출력 대기”의 반복을 의미함
- CPU Burst
- 프로세스의 사용 중에는 연속적으로 CPU를 사용하는 구간을 의미
- 즉, 실제 CPU를 사용하는 스케쥴링의 단위
- I/O Burst
- 프로레스의 실행 중에 I/O 작업이 끝날 때까지 Block 되는 구간을 의미
스케쥴링의 종류
- 선점 스케쥴링(Preemptive Scheduling)
- 가장 자원이 필요한 프로세스에게 CPU를 분배하며 상황에 따라 강제로 회수할 수도 있다.
- 따라서 빠른 응답시간을 요하는 대화식 시분활 시스템에 적합하며 긴급한 프로세스를 제어할 수 있다.
- 우선순의 스케쥴링(Priority Scheduling)
특징
- 정적/동적으로 우선순위를 부여하여 우선순위가 높은 순서대로 처리
- 우선순위가 낮은 프로세스가 무한정 기다리는 기아 현상 발생 가능
- aging 방법으로 기아현상 문제 해결 가능
미리 주어진 프로세스의 우선순위에 따라서 스케쥴링하는 방식이다.
- but, 우선순위가 낮은 프로세스는 할당되지 않기도 하는데, 이를 기아(Starvation)이라고 부름
- 이를 방지하기 위한 해결책으로는 노화(aging)가 있는데 기다리는 시간에 따라 우선순위를 증가시키는 방식. / 마찬가지로 우선순위가 같으면 FCFS를 적용
- 라운드로빈(Round Robin)
FCFS에 의해 프로세스들이 보내지면 각 프로세스는 동일한 시간 (Time Quantum)만큼 CPU 할당
정해진 시간 할당량만큼 프로세스를 할당한 뒤, 작업이 끝난 프로세스는 준비완료 큐(순환 큐)의 가장 마지막에 가서 재할당을 기다리는 방법(회전식)
- 시간 할당량이 중요한데, 너무 작으면 빈번한 문맥 전환 (context Switching)이 발생하고, 너무 길면 FCFS와 다를 바 없어짐
- 다단계 큐(Multilevel-Queue)
준비완료 큐를 여러 개의 큐로 분류하여 각 큐가 각각 다른 스케쥴링 알고리즘을 가지는 방식.
큐와 큐 사이에도 스케쥴링이 필요하다.
ex) 우선순위가 높은 Forground Queue
- 대화형 프로세스를 위한 큐
- Round Robin
우선순위가 낮은 background queue
- 연산작업을 처리하는 프로세스 큐
- FCFS
여기서 Forground 큐가 비어있지 않는 한 Background 큐는 먼저 실행될 수 없으며,
Background큐가 먼저 실행 중이더라도 Forground 큐에 프로세스가 들어오면 선점됨
- 비선점 스케쥴링 (Non-Preemptive Scheduling)
프로세스 종료 or I/O 등 이벤트가 있을 때까지 실행 보장 (처리시간 예측 용이)
어떤 프로세스가 CPU를 할당받으면 그 프로세스가 종료되거나, 입출력 요구가 발생하여 자발적으로 중지될 때까지 계속 실행되도록 보장하는 방법
- 순서대로 처리되는 공정성, 다음에 처리해야 할 프로세스와 상관없이 응답시간을 예상 가능
- 선점방식보다 스케쥴러 호출 빈도가 낮고, 문맥 교환에 의해 호버헤드가 적음
- 일괄처리 시스템에 적합하며 자칫 CPU 사용기간이 긴 프로세스가 다른 프로세스들을 대기시킬 수 있어서 처리율이 떨어질 수 있다는 단점
FCFS 특징
- 큐에 도착한 순서대로 CPU 할당
- 실행 시간이 짧은 게 뒤로 가면 평균 대기 시간이 길어짐
먼저 도착한 프로세스를 먼저 처리하는 것이 기본적인 스케쥴링 알고리즘
- 비 선점형이며 FIFO큐(먼저 입력된 것 먼저 출력)를 이용하여 간단하게 구현
- but, Convoy Effect(호의효과)가 발생하는데, 긴 처리시간의 프로세스가 선점되어 버리면 나머지 프로세스들은 끝날 때까지 대기해야 함
- 먼저 도착한 프로세스의 버스트 타임에 따라 평균 대기 시간의 편차가 큼
'개발 일지' 카테고리의 다른 글
TIL(24.03.22) (2) | 2024.03.22 |
---|---|
TIL(24.03.21) (1) | 2024.03.21 |
CPU와 메모리 (1) | 2024.03.19 |
CS 강의 1강 정리 (2) | 2024.03.18 |
TIL(24.03.15) (1) | 2024.03.15 |