본문 바로가기
정리/OS

Part 2 - Chapter 4

by 2744m 2018. 11. 13.

Chapter 4. 쓰레드


OS는 프로세스와 쓰레드의 특성을 독립적으로 취금

- 자원 소유권의 단위 : 프로세스

- 디스패칭의 단위 : 쓰레드, 경량 프로세스


** 프로세스는 별 말이 없으면 커널 단위 // 쓰레드는 커널단위와 사용자 단위를 잘 구분해야하나 별 말이 없으면 사용자 단위


쓰레드 ≒ 함수 


멀티 쓰레딩

- 운영체제가 하나의 프로세스 내에서 수행되는 여려 개의 쓰레드를 지원하는 기능

- 멀티 쓰레딩에서는 쓰레드는 디스패칭의 단위

장점

1) 새로운 프로세스 생성보다 새로운 쓰레드 생성시간이 짧다

2) 프로세스 종료보다 쓰레드 종료시간이 더 짧다.

3) 프로세스 간 교환보다 쓰레드 간 교환이 더 효율적

4) 같은 프로세스 내의 쓰레드 들은 메모리 및 파일을 공유하므로, 커널을 호출하지 않고도 서로 통신이 가능



쓰레드 동기화

프로세스 내의 모든 쓰레드들은 그 프로세스의 상태와 자원을 공유

  즉, 하나의 쓰레드에 의한 자원 변경은 같은 프로세스 내 존재하는 모든 쓰레드 환경에 영향

- 쓰레드 들이 서로 간섭하지 않도록 또는 자료구조를 손상시키지 않도록 쓰레드 들의 행위를 동기화하는 것이 필요


쓰레드의 단점

1. 동기화

2. 스케줄링의 문제

3. 보호(공유)의 문제


쓰레드의 유형 <사용자 수준 쓰레드(ULT) VS 커널 수준 쓰레드(KLT)>

1. 사용자 수준 쓰레드

- 응용이 쓰레드 라이브러리(응용수준함수)를 통해 모든 쓰레드를 관리 수행함

- 커널은 쓰레드의 존재를 모름

- 여기서 커널은 프로세스 스케줄링, 프로세스 문맥 유지만 함

장점

1. 쓰레드 교환에 커널 모드의 권한이 요구되지 않아 속도가 빠름

2. 스케줄링 정책을 응용에 맞게 구성 가능함

3. 커널 변경이 필요 없어 어떤 OS에도 적용 간으

단점

1. 한 쓰레드의 시스템 호출은 같은 프로세스 내에 있는 모든 쓰레드를 블록시킴

2. 멀티프로세서(또는 멀티코어)의 장점을 활용할 수 없음 (WHY? 코어 할당은 커널이 하기 때문에)


2. 커널 수준 쓰레드

- 커널이 모든 쓰레드 관리를 수행

- 응용은 API를 통해 쓰레드 생성 및 종료를 요청

- 커널이 프로세스와 쓰레드 문맥 정보를 유지

- 스케줄링은 쓰레드 기반으로 이루어짐

장점

1. 같은 프로세스 내의 여러 쓰레드를 여러 프로세서(또는 코어)에 동시 스케줄링 할 수 있음

2. 한 프로세스 내의 특정 쓰레드가 블록되면 다른 쓰레드를 스케줄 할 수 있음

3. 커널 루틴 자체가 다중 쓰레드로 구성

단점

1. 쓰레드 교호나시 커널로의 모드 전환이 필요 => 오버헤드 발생


멀티 코어상에서의 SW 성능

- 멀티코어 구조의 성능 향상은 응용이 병렬 자원을 효율적으로 이용할 수 있는 능력에 있음

- 암달의 법칙 : 시스템 일부가 개선될 떄 전체 시스템에서 어느 정도의 개선이 기대 될 수 있는지를 나타냄














P : SW 개선 비율  S : HW 속도 향상 정도


ex) 코어 수가 6개인 pc에서 작업/코어 1개가 작업을 처리 하는데 100시간 소모/ 95% 개선

속도 항샹 = 1 / (1 - 0.95) + 0.95/6 = 4.8


병렬화 효율성

쓰레드 < 명령어 < micro operatioin


'정리 > OS' 카테고리의 다른 글

Part 2 - Chapter 3  (0) 2018.11.11
Part 1 Chapter 1, 2  (0) 2018.10.10

댓글