[ 이화여대 운영체제 - 반효경 교수님 강의 ]
-
동기식 입출력과 비동기식 입출력
-
프로세스 스케줄링 큐의 모습
-
Thread
동기식 입출력과 비동기식 입출력
동기식 입출력
- I/O 요청 후 입출력 작업이 완료된 후에야 제어가 사용자 프로그램에 넘어감
- 구현 1
- I/O 가 끝날 때 까지 CPU를 낭비하면서 기다림
- 구현2
- I/O가 끝날 때 까지 해당 프로그램에서 CPU를 빼앗음
Thread
프로세스 내부에 CPU 수행 단위가 여러 개 있는 경우, 프로세스를 별도로 두는 것보다 프로세스 안에 thread를 여러개 두는 것이 더 가벼움
CPU 실행 단위
= lightweight process ↔ heavyweight process
- Thread 구성 (공유하지 않는 것)
- program counter
- register set
- stack space
- Thread 가 동료 thread와 공유하는 부분 (task)
- code section
- data section
- OS resources
- 장점
- 쓰레드 하나가 blocked 상태일 때 다른 쓰레드 실행 가능해서 응답 시간 빠르다
- 자원 절약 : 다중 스레드가 협력하여 높은 처리율(throughput)과 성능 향상
- 병렬성을 높일 수 있음
PCB
※ CPU 수행 단위가 여러개 있게 되면, Stack도 별도로 가짐!
- 전통적인 개념의 heavyweight process는 하나의 thread를 가지고 있는 task로 올 수 있음
- 위의 그림처럼, 프로세스는 하나만, 프로그램 카운터만 여러개 띄워놓음
- 프로세스 하나에 CPU 수행단위만 여러개 두고 있는 것이 쓰레드
- 다중 쓰레드로 구성된 태스크 구조에서는 하나의 서버 쓰레드가 blocked(waiting) 상태인 동안에도 동일한 태스크 내의 다른 스레드가 실행(running)되어 빠른 처리를 할 수 있음
- 동일한 일을 수행하는 다중 쓰레드가 협력하여 높은 처리율(throughput)과 성능 향상을 얻을 수 있음
- 스레드를 사용하면 병렬성을 높일 수 있음
- 쓰레드를 이용하면 빠른 응답정 제공과 자원을 절약할 수 있는 장점이 있음
- 같은 일을 하는 프로세스를 여러개 띄워놓게 되면, 각각의 메모리에 올라가야하므로 메모리 낭비가 심함
- 하지만, 하나의 프로세스에 하나의 쓰레드만 놓게 되면, 성능 향상이나 자원 절약이 가능함
- Process는 하나기 때문에 PCB도 하나로 생성
- Process 안에 쓰레드가 여러개면, CPU 수행과 관련된 내용(program counter, registers)만 copy
Benefits of Threads
- Responsiveness (응답성)
- 홈페이지 접속할 때 이미지 넣어서 사용자에게 보여줌 → 속도 빨라짐
- Resource Sharing
- Economy
- 프로세스 하나 내에 쓰레드 추가 하는 거 오버해드가 적다
- 프로세스 내의 thread간의 cpu switch는 간단
- 프로세스 스위치는 오버해드 큼
- Utilization of MP Architectures
Implementation of Threads
-
Kernel Threads
-
User Threads