본문 바로가기

프로그래밍/컴퓨터공학

[운영체제 학습 노트] 스레드 매핑, 스케줄링 기법 라운드로빈, 스레드 동기화

728x90
반응형

멀티스레딩 매핑

N:1

장점 : 속도가 빠르다

단점 : 병렬성을 얻을 수 없다

1:1

장점 : 높은 병렬성

단점 : 컨텍스트 스위칭 등의 비용 부담이 크다

N:M

장점 : 커널 레벨 스레드가 적어 커널 부담이 적다

단점 : 매핑 스케줄링 과정이 복잡하다

 

멀티 스레드 운영체제에서

PCB에 저장하는것 

환경 컨텍스트, 모든 스레드가 공유하는 프로세스의 정보

 

TCB에 저장하는것 

실행 컨텍스트, 현재 실행중인 실행단위 정보

 

CPU 스케줄링

정의

Ready 상태의 스레드를 선택하여 cpu 할당

 

목적

cpu 유휴 시간을 줄여 cpu 활용률 향상

프로세스가 i/o를 요청하면 다른 프로세스에게 cpu 할당

 

CPU 스케줄링 선택 기준 = CPU 스케줄링 목적

1. CPU 활용률 향상

2. CPU 처리율 향상

3. 응답시간 감소

4. 대기시간 감소

5. 소요시간 감소

6. 오버헤드 최소화

 

타임슬라이스

선점형: 끄집어내기 가능(강제중단 시키고 다른 스레드 선택)

비선점형: 끄집어내기 불가능(작업시간 예층 가능)

 

라운드로빈

1. 큐에 대기중인 스레드들을 타임슬라이스 주기로 돌아가며 선택

2. 선점 스케줄링

3. 스레드 우선순위 없음

4. 기아 없음

5. 타임슬라이스가 크면 FCS 작으면 SJF, SRTF 와 비슷

 

FCS

선입선처리

기아 없음

비선점

 

SJF

기아있음

최단작업우선스케줄링

비선점

 

SRTF

최소잔여시간우선스케줄링

선점

기아있음

오버헤드를 발생

 

스레드 동기화

정의

1. 공유 데이터에 대한 다수 스레드의 동시 접근에 따른 문제를 해결하기 위한 방법

2. 다수의 스레드가 공유데이터를 동시에 접근하는 충돌 상황에서 공유데이터가 훼손되지 않도록 스레드의 실행을 제어하는 기법

다수 스레드가 동시에 공유데이터를 읽는경우 -> 문제 없음
다수 스레드가 동시에 공유데이터를 쓰는 경우 -> 문제 발생

 

공유 데이터 접근 문제점 : 여러 스레드가 동시 접근할 때 공유 데이터가 훼손될 수 있다.

공유 데이터 접근 해결책: 스레드 동기화 -> 한 스레드가 공유 데이터에 대한 접근을 마칠 때 까지 다른 스레드가 접근하지 못하도록 제어한다

 

임계구역

공유데이터가 접근하는 코드 블록

 

상호배제

임계구역은 반드시 한 스레드만 배타적 독점적으로 실행되어져야하며 임계구역에 먼저 진입한 스레드가 임계구역의 실행을 끝낼 때 까지 다른 스레드가 진입하지 못하도록 보장하는것

 

상호배제 구현

1. 인터럽트 서비스 금지(비선점): 인터럽트를 무시하면 임계구역 실행 스레드가 중단되지 않음

2. 원자명령

 

원자명령

LOCK 변수를 읽고 쓸 때 컨텍스트 스위칭이 일어나지 않도록 읽고 쓰는 명령어를 하나로 만드는것

원자명령 없이 상호배제 구현시 컨텍스트 스위칭이 발생할 때 문제점이 발생

 

멀티스레드 동기화

LOCK 방식 - 뮤텍스, 스핀락

WAIT-SIGNAL 방식 - 세마포

 

뮤텍스

정의

잠김/열림 상태를 가지는 락변수를 이용하여 한 스레드만 임계구역에 진입시키고 다른 스레드는 큐에 대기시키는 수면 대기락 방식

 

특징

임계구역의 실행시간이 짧은 경우 비효율 -> 컨텍스트 스위칭이 두번 일어남

락이 잠겨있으면 블록됨

LOCK/UNLOCK 연산 비용이 낮음, 단일 CPU에 적합하며 사용자 응용프로그램에 적합

 

스핀락

정의

뮤텍스처럼 락을 기반하지만 대기큐가 없고 락이 풀릴 때 까지 무한 루프를 돌면서 락변수를 검사하는 바쁜 대기락

 

특징

컨텍스트 스위칭이 없음. 단일 CPU에서 비효율, 멀티코어에 적합, 커널 코드 ,인터럽트 서비스 루틴에 사용

임계구역 실행시간이 짧은 경우 효과적이다.

 

세마포

정의

N개의 자원을 다수의 스레드가 공유하여 사용할 수 있도록 하는 자원관리 기법

 

특징

카운터 변수를 사용하며 음수이면 대기열이 있다는 뜻이됨

P/V 연산을 사용함 P는 자원 요청, V는 자원 반환

 

수면 대기 세마포

P 연산 중 자원 사용을 허가 받지 못한 스레드를 대기 큐에 넣음 (대기큐 잠자기)

V 연산에서 사용 가능한 자원이 생기면 스레드의 자원 사용을 허락 (스레드 깨우기)

 

바쁜 대기 세마포

P 연산에서 가용자원이 생길 때 까지 무한 루프를 돌면서 검사

V 연산에 의해 가용 자원이 생기면 P연산에서 자원 획득

 

이진 세마포

0과 1로 카운터 변수를 사용

 

728x90
반응형