본문 바로가기
개발 일지

CPU와 메모리 심화

by 만식 2024. 3. 20.

 

내일배움캠프 출처 : https://spartacodingclub.kr/nb?utm_source=google&utm_medium=sa&utm_campaign=google_sa_general&utm_term=%EC%8A%A4%ED%8C%8C%EB%A5%B4%ED%83%80%EC%BD%94%EB%94%A9%ED%81%B4%EB%9F%BD&gcl_keyword=%EC%8A%A4%ED%8C%8C%EB%A5%B4%ED%83%80%EC%BD%94%EB%94%A9%ED%81%B4%EB%9F%BD&gcl_network=g&gad_source=1&gclid=CjwKCAjwkuqvBhAQEiwA65XxQFwiMOe6FLFW3nmZPUB2Y1yvXVEgm2RLN8ki_cRjyTR2YZfIp0O1XRoCtkIQAvD_BwE

 

스파르타 국비지원 | 내일배움카드로 0원에 코딩 공부하기

코딩교육 1위 스파르타코딩클럽의 강의를 0원에 수강하세요! 국민내일배움카드 발급 가능 대상자라면 누구나 가능합니다.

spartacodingclub.kr

 

 

TIL(24.03.20)

.

.

.

 

CS 핵심 용어 정리

  • 프로그램을 실행해 주는 주체 = 프로세스
  •   ex) sns를 실행하는 포로세스 
  • 작업을 처리해 주는 주체 = 쓰레드
  •   ex) 메시지 발송을 처리하는 쓰레드

 

CPU를 사용하기 위해선 프로세스 배정 필요!

 - CPU의 한정된 자원을 최대한 성능으로 이끌어내기 위해선 =  OS를 실행 대기 중인 프로그램(프로세스)들에게 CPU 자원 배정을 적절하게 사용하여 시스템의 성능을 끌어올릴 수 있다.(결국 처리는 CPU)

 - 공통 배정 조건 : 오버헤드 ↓ / 사용률 ↑ / 기아 현상 ↓

  • 오버헤드 : 프로세스가 필요한 자원보다 더 많이 사용하지 않도록
  • 사용률 : 프로세스가 많은 자원을 받고 빨리 처리하도록
  • 기아 현상 : 프로세스가 할당받지 못하여 배고프지 않도록

 - 목표에 따른 배정조건 :

  1. 배치 시스템 : 가능하면 많은 일을 수행/시간보단 처리량(throughout)이 중요
  2. 대화형 시스템 : 빠른 응답 시간/적은 대기 시간이 중요
  3. 실시간 시스템 : 실시간 즉, 빠른 응답이 중요

 

정책에 따라서 3가지로 나뉜다. 

  1. CPU 이용률을 최대화
  2. 오버헤드를 최소화
  3. 모든 프로세스가 공평하게 분배하는 방식

 

 

스케쥴링의 단위

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