본 게시글은 PC버전에 최적화 되어 있습니다.
Operating Systems, Internals and Design Principles (9th Ed.), William Stallings, Pearson, 2017
충남대학교 컴퓨터공학과 최훈 교수님의 '운영체제 및 실습'을 참고하였습니다.
1. Processses and Threads
쓰레드는 프로세스 내부의 실행 단위. 쓰레드를 가벼운 프로세서라고도 부르기도 함.
하나의 프로세스에 여러 개의 쓰레드가 존재할 수 있다. -> 멀티쓰레드
하나의 프로세스는 최소한 하나의 쓰레드를 가지고 있어야 함.
프로세스는 Code, Data, Stack, Register Context를 갖고 있지만
쓰레드는 Register Context와 Stack으로 구성.
그림에서 보이는 것처럼 쓰레드는 프로세스의 자원을 공유.
Single Thread에는 MS-DOS와 옛날 버젼의 UNIX
Multi Thread는 그냥 최근 OS 대부분 ㅇㅇ...
여러 프로세스로 나누는 것보다 하나의 프로세스에서 멀티쓰레드로 구성하는 것이 효율적이다.
1. 프로세스 생성보다 쓰레드 생성이 더 빠름.
2. 종료 역시 더 빠름.
3. 문맥 전환 과정 역시 더 빠름.
4. IPC 할 필요가 없어서 더 빠름. Why? 하나의 프로세스에서 일어나는 일이므로
IPC = Inter Process Communication -> Message Sending, Shared Memory
5. 하나의 프로세스 내부에서 일어나므로 커널을 호출할 필요가 없음.
그냥 장점 투성
멀티 프로그래밍과 유사하다.
기존의 쓰레드가 Block이 되면 다른 쓰레드에서 이를 이어받아 수행 -> time slice를 최대한 효율적으로 이용.
그렇다면 데이터는? 위에서 말했듯이 Date, Code 영역은 공유. 그래서 Context Switch없이 바로 바로 수행이 가능.
1) User-Level Thread VS Kernel-Level Thread
1. 유저레벨 쓰레드
유저가 직접 생성하고 관리하는 쓰레드. 커널입장에서는 Single 쓰레드 형태.
장점 : 인터럽트가 발생할 때 커널 레벨 스레드보다 오버헤드가 적다.
단점 : 커널 입장에서 Single로 인식하므로 여러 개의 쓰레드 중에 하나만 Block 되어도 Block으로 인식.
2. 커널레벨 쓰레드
장점 : 1:1이므로 멀티 프로세서 환경에서 매우 빠르게 동작한다. 커널이 직접 관리하므로 안정성이 좋다.
단점 : Mode Change 과정이 연속적으로 일어나므로 성능 저하가 발생한다.
'📚 CS > Operating System' 카테고리의 다른 글
[OS] 6. I/O Management andDisk Scheduling (0) | 2021.04.20 |
---|---|
[OS] 5. Concurrency : Deadlock and Starvation (0) | 2021.04.20 |
[OS] 4. Concurrency : Mutual Exlusion and Synchronization (0) | 2021.04.19 |
[OS] 3. Threads (0) | 2021.04.19 |
[OS] 2. Process Description and Control (0) | 2021.04.19 |
[OS] 1. Operating System Overview (0) | 2021.04.19 |