📌 스레드란? (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 |