KOCW 반효경 교수님 운영체제 강의 정리
이 글은 공부한 것을 복습 및 기록하기 위한 게시물입니다.
잘못된 정보가 기입되어 있을 수 있으니 주의해주시기 바랍니다.
강의 링크 : http://www.kocw.net/home/cview.do?lid=29d9a718cff884c3, http://www.kocw.net/home/cview.do?lid=54e1a4abcd59272d
1. Thread
Thread란 CPU를 수행하는 단위를 뜻한다, 가벼운 Process라고 부르기도 한다.
Process 내부의 Thread가 여러개 있는 경우, Thread가 Process 내부에서 공유하는 것들을 task라고 칭한다.
동일한 일을 수행하는 Process가 여러 개 있을 경우 Process의 주소공간이 여러 개가 만들어지게 된다.
이러한 현상은 메모리를 낭비할 수 있다.
Thread는 Process 하나에서 공유할 수 있는 것은 최대한 공유하고 CPU 수행 관련 정보(PC, registers, stack)은 별도로 가지고 있게 된다.
예를 들어 네트워크를 통해 웹페이지를 불러올 때(이것 또한 I/O 작업) 다중 Thread 구조로 해놓으면
하나의 Thread가 웹서버에서 그림파일을 불러옴과 동시에 다른 Thread는 텍스트를 불러오게 된다.
이럴 경우 먼저 처리가 완료된 것 부터 표출되기 때문에 사용자는 기다리는 시간이 줄어들어 빠른 응답성을 제공받게 된다.
만약 웹페이지를 불러오는 것을 Thread가 아닌 Process 단위로 나누어 놓게 되면
동일한 일을 하게 되는데 메모리 낭비가 발생하게 된다.
CPU가 1개가 아닌 여러 개를 사용할 경우 Thread를 사용하면 병렬성을 높일 수 있다.
예를 들어 1000 x 1000 연산 작업을 수행할 때 행과 열을 곱하는 것을 Thread로 만들어 CPU가 각각 연산을 처리하고
더하게 되면 더 빠른 결과를 도출할 수 있다.
2. Benefits of Threads
Thread의 장점은 아래와 같다.
Resonsiveness(응답성)
ex) 웹 페이지를 불러올 때Resource Sharing(자원 공유)
하나의 Process 안에서 Code, Data, Resource를 공유함Economy(경제성)
Process 하나에 Thread를 추가하는 것은 Overhead가 크지 않으나 Process Context Switch는 Overhead가 높음Utilization of MP Architecctures(멀티프로세서 아키텍쳐 활용)
Thread가 서로 다른 CPU에서 병렬적으로 일을 할 수 있음(병렬성)
3. Implementation of Threads
Thread의 구현 방식은 아래와 같다.
Kernel Threads
Thread가 여러 개 있다는 것을 Kernel이 알고 있는 것이다.User Threads
Process 안에 Thread가 여러 개 있는 것을 Kernel은 모르고 사용자 프로그램이 스스로 라이브러리의 지원을 받아서
여러 개의 Thread를 관리한다. -> 구현 상의 제약이 있을 수 있다.
'Computer Science > OS' 카테고리의 다른 글
7. CPU Scheduling 1 (0) | 2021.03.14 |
---|---|
6. Process Management (0) | 2021.03.07 |
4. Process 1 (0) | 2021.02.27 |
3. System Structure & Program Execution 2 (0) | 2021.02.11 |
2. System Structure & Program Execution 1 (0) | 2021.02.11 |