운영체제

[운영체제] 01 스레드부터 스케쥴링까지

juju824 2020. 9. 25. 02:50

📌 스레드란? (Thread)

하나의 프로세스 내에서 시스템의 여러 자원을 할당받아 실행하는 프로그램의 단위 

동일 프로세스 환경에서 서로 독립적 다중 수행이 가능 

❓사용자 수준의 스레드

사용자가 만든 라이브러리 사용, 스레드 운용

 

✔️프로세스 주요 상태 

준비 

실행 ( 할당 시간이 종료되면 프로세스는 준비 상태로 전이된다 )

대기

 

👉 하나의 프로세스에는 여러개의 스레드가 존재 => 병행성 증진 

스레드는 독립된 제어 흐름을 가지며 고유 레지스터 사용 

프로세스 내부에만 존재

 

 

 

📌스케쥴링이란?

[ 목적 ] 

-처리율 증가 

-CPU (중앙처리장치) 이용률 증가

-응답 시간 최소화 => 빨리 응답해주기

-반환 시간 최소화

-대기 시간 최소화 

 

❓문맥 교환이란? ( Context Swtiching)

-다중 프로그래밍 시스템에서 CPU가 할당되는 프로세스 변경 위해 현재 실행되고 있는 프로세스의 상태 정보를 저장 

-앞으로 실행될 프로세스의 상태 정보 설정 후 CPU 할당하여 실행 

-오버헤드 발생 요인 중 하나 

👉즉, A 가 일하고 있었을 때 A의 상태 저장해놓고 B 상태 정보 설정 후 다시 실행 

 

 

 

📌스케쥴링의 종류에는?

 

✔️비선점 : 선점하지 않는 것 

이미 할당된 CPU는 다른 프로세스가 강제로 뺏기 불가능 ! 공정하게 처리 

👉 줬다 뺏기 없긔~

ex) FIFO(FCFS), SJF, 우선순위, HRN, 기한부 등 

 

✔️선점 : 선점하는 것 

우선순위가 높은 프로세스 빠르게 처리해주기 

빠른 응답시간 요구하는 대화식 시분할 시스템에 사용

선점으로 인해 오버헤드가 많이 발생 

선점을 위해 시간 배당을 위한 interrupt용 타이머 클럭 필요

👉 너가 더 급해? 먼저 가! 

ex) SRT, RR(Round Robin), 다단계 큐, 다단계 피드백 큐 (MFQ-적응 기법의 개념 적용), 선점 우선순위

 

 

📌비선점 종류를 보자❗️

✔️ FIFO (=FCFS) : First In First Out

먼저 도착한 애가 먼저 실행되고 나가기 

프로세스 실행시간
P1 10
P2 2
P3 15

FCFS 알고리즘,

👉 최대 평균 반환 시간은?

P3가 먼저 들어온 경우 : [ 15 + (15+2) + (15+2+10) ] / 3 = 19.6...

👉 그럼 최소 평균 반환 시간은?

P2가 먼저 들어온 경우 : [ 2 + (2+10) + (2+10+15) ] / 3 = 13.6...

 

 

✔️SJF ( Shortest Job First )

-실행시간이 가장 짧은 프로세스에 먼저 CPU 할당 

빨리 끝날 것 같아? 너 먼저 해! 

작업 도착시간 실행시간
1 0 6
2 1 3
3 2 4

👉작업 2의 종료 시간은? 

0초에 도착한 1 먼저하고 실행시간 가장 짧은 작업 2 실행 => 6+3 = 9초 

작업 도착시간 실행시간
1 0 6
2 1 3
3 2 1

👉만약 작업3의 실행시간이 1초라면?

0초에 도착한 1 먼저 => 가장 짧은 3 => 그다음 2 실행 => 6+1+3 = 작업 2의 종료시간은 10초

 

 

✔️HRN ( Highest Response Rate Next)

-SJF를 보완하기 위한 기법, 우선 순위를 정하는 스케쥴링 기법

우선 순위를 높게 책정하는 기준이 뭔가?

( 대기시간 + 서비스시간 ) / 서비스시간 👉이 계산식이 클수록 우선순위가 높다!

 

작업 대기시간 서비스시간
A 5 5
B 10 6
C 15 7
D 20 8

A 계산하면 = ( 5+5 ) / 5 = 2

B : ( 10+6 ) / 6 = 2.6

C : ( 15+7 ) / 7 = 3.1

D : ( 20+8) / 8 = 3.5

👉우선순위는 D > C > B > A

 

 

✔️기한부 : 제한된 시간 내에 반드시 작업 완료 

 

 

 

📌선점 종류를 보자❗️

✔️ SRT ( Shortest Remaining Time ) 

최단 잔여시간을 우선으로 하는 스케줄링

진행 중인 프로세스가 있어도, 최단 잔여시간인 프로세스를 위해 sleep시키고 짧은 프로세스를 먼저 할당

 

 

✔️RR ( Round Robin )

할당된 시간동안만 실행한 후 가장 뒤로 배치하기 

👉 할당되는 시간이 크다면?

FCFS, FIFO 와 기법이 같아지고

👉할당되는 시간이 작다면?

문맥교환 및 오버헤드가 자주 발생한다

 

프로세스 A B C
실행시간 17 4 5

라운드 로빈이며 타임 슬라이스( 할당된 시간)은 4초이다. 평균 반환 시간은? 

0-4 : A (13초 left, 맨 뒤로 보내기)

-8 : B (B 완료)

-12 : C (1초 left, 맨 뒤로 보내기)

-16 : A (9초 left, 맨 뒤로 보내기)

-17 : C (남은 1초 완료)

-26 : A (남았던 시간 모두 사용 후 완료)

 

B가 끝났던 시간 : 8초

C가 끝났던 시간 : 17초

A가 끝났던 시간 : 26초

( 8+17+26 ) / 3 = 17초

if) 제출시간 이 존재한다면 종료시간에서 제출시간 빼야 함 

 

 

 

📌Aging ( 에이징 )

프로세스가 자원을 기다리는 시간에 비례하여 우선순위를 부여함으로써 무기한 연기되는 문제를 방지하는 것 

SJF , 우선순위 스케쥴링 방식에서는 우선순위 높은애가 계속 들어오거나 실행시간 짧은애가 계속 들어오면 먼저 들어왔는데도 계속 기다리기만 하는 프로세스가 존재할 수 있다 👉 이럴 때 무한 연기 상태, 기아상태에 들어선다고 한다 

 

 

📌임계구역이란? 

임계구역에는 하나의 프로세스만 접근할 수 있다. 인터럽트 발생하지 않는다 

 

✔️임계구역 문제 해결을 위한 3가지

1. 상호 배제 (mutual exclusion)

-특정 프로세스가 공유 자원을 사용하고 있을 경우에 다른 프로세스가 해당 공유 자원을 사용하지 못하게 제어

-하드웨어적 구현 방법으로는 Test&Set 기법, Swap 명령어 기법이 있다.

-일종의 Locking mechanism

 

2. 진행 (progress)

 - 임계 구역에 실행되고 있는 프로세스가 없을 경우, 진행될 프로세스 선택 

 

3. 한정된 대기 (bounded waiting)

 - 프로세스의 기아를 방지하기 위해, 한번 임계 구역에서 실행된 프로세스는 다음 실행에 대한 제한을 갖는다

 

 

 

✔️<동기화 기법을 통한 임계 구역 문제 해결방안>

1. 세마포어란?

-P와 V연산에 의해 임계 구역 접근을 제어한다. 상호 배제의 원리를 보장함. 인터럽트 발생하지 않는다.

-여러 개의 프로세스가 동시에 값을 수정하지 못한다.

-세마포어를 2로 초기화 했다? => 임계구역에 2개의 프로세서가 들어갈 수 있음 

 

2. 모니터

-특정의 공유 자원을 할당하는 데 필요한 데이터 및 프로시저로 구성된 병행성 구조

-외부에서 직접 액세스 불가능

-한 순간에 한 프로세스만 모니터에 진입

'운영체제' 카테고리의 다른 글

[운영체제] 03 교착상태는..  (0) 2020.10.06
[운영체제] 02 UNIX란?  (0) 2020.09.25