질문 답변 > 동기식 입출력과 비동기식 입출력
- 동기식 입출력 ( Synchronous I/O)
- I/O 요청 후 입출력 작업이 완료된 후
에야 제어가 사용자 프로그램에 넘어감
- 구현방법 1
: I/O가 끝날때까지 CPPU를 낭비시킴
: 매시점 하나의 I/O만 일어날 수 있음
- 구현방법 2
: I/O가 완료될 떄까지 해당 프로그램에게서 CPU를 빼앗음
: I/O 처리를 기다리는 줄에 그 프로그램을 줄 세움
: 다른 프로그램에게 CPU를 줌
- 비동기식 입출력(Asynchronous I/O)
- I/O가 시작된 후 입출력 작업이 끝나기를 기다리지 않고
제어가 사용자 프로그램에 즉시 넘어감
Thread
- A thread(or lightweight process) is a basic unit of CPU utilization
프로세스 하나에 CPU 수행 단위만 여러개 두고 있는 것을 thread라고 한다.
그림1 | 그림2 |
---|
| |
- Thread의 구성
- program counter
- register set
- stack space
- Thread 가 동료 thread와 공유하는 부분(=task)
- code section
- data section
- OS resources
Thread 사용의 장점
- 다중 스레드로 구성된 태스크 구조에서는 하나의 서버 스레드가 blocked(waiting) 상태인 동안에도 동일한 태스크 내의 다른 스레드가 실행되어 빠른 처리를 할 수 있다
- 스레드를 사용하면 병렬성을 높일 수 있다.(CPU가 여러 개 달린 컴퓨터에서만 얻을 수 있는 장점)(CPU가 하나밖에 없으면 안됨)
프로세스 #3
Single and Multithreaded Processes
Single and Multithreaded Processes |
---|
|
Benefits of Threads
-
Responsiveness(응답성 향상)
: 답답함 해소 / 원래는 프로세스가 블럭되는데 요청한 그 스레드만 막히고 다른 스레드가 텍스트라도 보여줄 수 있어서 응답성에 있어서의 장점이 생긴다.이미지 파일을 불러오는 동안에 다른 애가 먼저 텍스트 화면에 보여줄 수 있게 됨(비동기식 입출력)
-
Resource Sharing(자원 공유)
: 똑같은 일을 하는 프로그램이 여러 개 있을 때, 프로그램을 하나만 만들어두고 CPU 수행단위만 여러 개 두게 되면 스레드들이 공유를 통해 자원을 효과적으로 사용할 수 있음
-
Economy(경제성)
: 문맥 교환(프로세스를 여러개 만드는 것보다, 스레드하나를 생성하고 CPU를 스위치 하는게 오버헤드가 적게 든다)
-
Utilization of MP Architectures
: 스레드가 여러 개 있을때 서로 다른 CPU에서 병렬적으로 일을 수행할 수 있음 -> 멀티 프로세서 환경에서 효율적으로 실행 가능
Implementation of Threads
1. Kernel Threads
- threads가 여러 개 있다는 사실을 운영체제 커널이 알고 있음
2. User Threads
- 라이브러리를 이용해서 지원됨
- 커널은 모르고 있어서 일반적인 프로세스로 보임
- 사용자 수준에서 threads 구현하게 됨