3.1 프로세스의 정의
- "수행 중인 프로그램"
- 프로그램과 데이터를 기본으로 정상적인 실행을 위해 필요한 환경을 시스템으로부터 부여받은 능동적인 존재다.
- (프로그램 + 데이터) + 환경
Process Control Block 프로세스 제어 블록
- 시스템에서 프로세스를 생성하는 것은 PCB를 생성하는 것과 같다.
- 프로세스에 대한 모든 정보를 가진 자료구조다.
- 프로세스 생성 시에 만들어진다.
- PCB는 메모리에 상주한다.
- 프로세스 번호, 프로세스 상태(대기, 실행, 준비 등), 프로세스 우선순위, PC 값, 메모리 포인터, 문맥 데이터, 할당받은 자원들에 대한 목록, 계정 정보, 입출력 정보 등을 가진다.
프로세스 상태의 변화
- 준비, 보류 준비 둘 다 프로그램을 실행하기 위한 준비가 완벽히 되어있는 상태다.
- 준비는 보류 준비와는 다르게 메모리에 올라와 있으며, CPU만 받으면 바로 실행 가능하다.
- 준비, 실행, 대기 상태는 메모리에 올라와있는 Active State 이다.
- 보류는 프로세스로부터 메모리를 회수하는 것(Swapped out)이다.
- 재개는 프로세스에게 메모리를 할당하는 것(Swapped in)이다.
- 실행 중인 프로세스가 입출력 처리를 요청하거나 바로 확보될 수 없는 자원을 요청하면 대기 상태로 바뀐다.
문맥 교환
- 모드 스위칭(mode switching): 인터럽트 처리 전후의 프로세스가 같은 경우다.
- 프로세스 스위칭(process switching): 인터럽트 처리 전후의 프로세스가 다른 경우 = 문맥 교환. 처리해야 할 일이 모드 스위칭보다 많다.
3.2 Thread 스레드
- 프로세스 안에서 세분된 작은 일들이다.
- 프로세스는 부여된 자원의 소유자로서, 스레드는 스케줄링의 단위로서 존재하게 된다.
- 한 프로세스에 속한 각각의 스레드들은 프로세스가 가지는 자원을 공유하며 각자의 실행 환경은 따로 갖는다.
- 스레드는 실행 / 준비 / 대기의 상태를 가질 수 있으며, 동기화 방법은 프로세스의 동기화 방법과 같다.
스레드의 종류
1. 사용자 레벨 스레드
- 사용자 공간 안에 스레드 라이브러리 가 있으며, 스레드의 생성, 처리, 삭제 등 스레드와 관련된 모든 일을 담당한다.
- OS에게는 프로세스만 보이고 그 안에 스레드는 보이지 않는다.
- 스레드를 지원하지 않는 OS에서도 스레드 라이브러리를 통해 스레드를 사용할 수 있다.
- 특정 스레드의 실행에서 대기는 자신이 소속된 프로세스의 대기를 초래하며, 스레드 라이브러리가 실행 중이었던 스레드를 표시해 두고 나중에 CPU가 다시 이 프로세스에 할당되었을 때 계속 실행해 나갈 수 있도록 한다.
- 스레드 간 스위칭 시 운영체제가 정한 스케줄링에 따를 필요가 없다.
- CPU가 프로세스 단위로 할당되므로 스레드 단위의 다중처리가 되지 못한다는 단점이 있다.
2. 커널 레벨 스레드
- 모든 스레드의 관리를 커널이 맡는다.
- 한 프로세스 내의 다수 스레드는 각각 처리기를 할당받아 병렬 실행이 가능하다.
- 같은 프로세스에 속한 스레드 간의 스위칭에도 커널이 개입하므로, 모드 스위칭이 요구된다.
'강의노트' 카테고리의 다른 글
[2021-1 프로그래밍언어론] Chapter 14: Exception Handling and Event Handling (0) | 2021.06.01 |
---|---|
[2021-1 프로그래밍언어론] Chapter 12: Object-Oriented Programming (0) | 2021.06.01 |
[2021-1 프로그래밍언어론] Chapter 11: Abstract Data Types and Encapsulation Constructs (0) | 2021.06.01 |
[2021-1 프로그래밍언어론] Chapter 10: Implementing Subprograms (0) | 2021.05.30 |
[2021-1 데이터마이닝및분석] Chapter 2: Data (3) Similarity (0) | 2021.04.16 |