- 프로세스가 입출력 요청을 했을 때
- 입출력 처리는 운영체제를 통해서 해야하므로, 운영체제에게 입출력 요청을 함
- 입출력 요청은 시간이 오래 걸림
- 동기식 입출력
- 입출력이 끝날 때까지 기다리고 아무것도 하지 말고 기다려야하는 것 - 비동기식 입출력
- 입출력이 진행되는 동안, 이 프로세스가 CPU를 잡아서 명령어를 실행하는 것
- 동기식 입출력 구현방법
- 동기식 입출력이므로, I/O가 요청된 후 이 프로세스는 일을 못함
- 구현방법 1
- I/O가 끝날 때까지 CPU를 가지고 있으면서 기다림
- 구현방법 2
- 어차피 일을 못하므로 CPU를 다른 프로세스에게 넘겨줌
- Thread 개요
- 프로세스 내부에 CPU 수행 단위가 여러개 있는 경우
- 같은 일을 하는 프로세스를 여러 개 띄워놓고 싶은 경우
- 주소 공간 (메모리)를 하나만 띄워 놓고
- 각 프로세스마다 다른 부분의 code를 실행할 수 있도록 해주면 됨
- CPU 수행과 관련된 정보만 별도로 가짐
- PC를 여러 개 두고, 각각 register 상태를 저장
- 함수 호출 정보를 stack에 쌓아야하므로, 별도의 stack
- Thread 정리
- CPU를 수행하는 단위
- Thread 단위 (Thread마다 독립적으로 가지는 영역)
- program counter
- register set
- stack
- Thread가 공유하는 부분(=task)
- code
- data
- 각종 자원들
- 하나의 프로세스 안에 Thread는 여러개, task는 1개
- Thread의 장점
- 1. 하나의 프로세스에 thread가 여러 개일 때
- 하나의 Thread가 blocked 상태일 때도
- 다른 Thread가 running이 가능하여
- 응답 시간이 빨라짐
- 예를 들면, 브라우저에서 웹페이지를 읽어올 때
- 웹페이지를 읽어오는 작업도 I/O
- 웹브라우저가 페이지를 읽어오는 동안 화면에 아무것도 보여줄 수 없음
- 하나의 thread가 사진을 읽어오는 동안
- 다른 thread가 이미 읽어온 텍스트라도 rendering 해주면
- 사용자 입장에서는 결과를 더 빨리 볼 수 있음
- 2. 메모리 절약
- 프로세스를 하나 더 실행하면
- 독자적인 메모리 공간이 필요하며, 이를 불필요하게 차지하게됨
- 1. 하나의 프로세스에 thread가 여러 개일 때
'CS > 운영체제' 카테고리의 다른 글
[운영체제] KOCW 반효경 교수님 강의 - 8. Process Management 1 (0) | 2022.03.30 |
---|---|
[운영체제] KOCW 반효경 교수님 강의 - 7. Process 3 (0) | 2022.03.30 |
[운영체제] KOCW 반효경 교수님 강의 - 5. Process 1 (0) | 2022.03.28 |
[운영체제] KOCW 반효경 교수님 강의 - 4. System Structure & Program Execution 2 (0) | 2022.03.27 |
[운영체제] KOCW 반효경 교수님 강의 - 3. System Structure & Program ExeCution 1 (0) | 2022.03.11 |