학습 목표
- 프로세스가 생성된 후 어떤 상태 변화를 거치는지 알아본다.
- 프로세스 제어 블록의 구성과 문맥 교환 시 동작 과정을 알아본다.
- 프로세스의 생성과 복사, 전환 과정을 알아본다.
- 스레드의 개념을 이해하고 멀티스레드 시스템의 장점을 알아본다.
목차
- 프로세스 제어 블록
- 문맥 교환
프로세스 제어 블록
프로세스 제어 블록(PCB)는 프로그램이 실행되기 전 메모리에 프로그램에 관한 중요한 정보를 보관하는 자료 구조로 TCB(Task Control Block)이라고도 한다.
- 모든 프로세스는 고유의 프로세스 제어 블록을 가진다.
- 실행시 만들어지며 완료시 폐기된다.
프로세스 제어 블록의 구성
- 포인터
프로세스 제어 블록 첫 번째 블록에는 포인터가 저장된다. 프로세스 제어 블록에 연결하여 준비 상태나 대기 상태 큐를 구현할 때 사용한다. - 프로세스 상태
프로세스 상태에는 생성, 준비, 실행, 대기, 보류 준비, 보류 대기 등이 있다. 프로세스의 현재 상태를 나타내며 두 번째 블록에 저장된다. - 프로세스 구분자
운영체제 내에 있는 여러 프로세스를 식별하기 위해 구분자를 저장한다(PID) - 프로그램 카운터
다음에 실행될 명령어의 위치를 가리키는 프로그램 카운터의 값을 저장한다. - 프로그램 우선순위
CPU 스케줄러가 대기 상태에 있는 프로세스를 선별할 때 우선순위를 참고하게 된다. 프로세스는 우선순위에 따른 큐로 구별되어 대기한다. 낮은 우선순위보다 높은 우선순위의 프로세스가 더 먼저, 자주 실행된다. - 각종 레지스터 정보
자신이 사용하던 레지스터의 중간 값을 보관한다. - 메모리 관리 정보
현재 프로세스가 메모리 어디에 위치해 있는지에 대한 위치 정보 및 경계, 한계 레지스터의 값등이 저장된다. - 할당된 자원 정보
실행에 필요한 파일이나 사운드 카드에 대한 정보를 저장한다. - 계정 정보
계정 번호, CPU 할당 시간, CPU 사용 시간과 같은 정보를 저장한다. - 부모 프로세스 구분자와 자식 프로세스 구분자
부모 프로세스 PPID(Parent PID), 자식 프로세스 CPID(Child PID) 정보가 저장된다.
포인터의 역할
각 주변장치 별로 대기 큐를 만들어 관리한다. (복잡하게 섞여있으면 전부 뒤져서 찾아야하기 때문이다.) 여기서 입출력을 기다리는 프로세스끼리 모여있는걸 대기 큐라 한다. 이후 대기 큐에서 준비큐로 넘어간다. 준비 큐 또한 대기 큐 처럼 여러개가 있다.
문맥 교환(context switching)
문맥 교환의 의미
문맥 교환은 CPU를 사용하던 프로세스가 나가고 새로운 프로세스에게 CPU를 넘기는 작업을 의미한다. 문맥 교환마다 각 프로세스에 맞는 프로세스 제어 블록이 교환된다.
'운영체제' 카테고리의 다른 글
[#13] 프로세스의 개요 : 스레드(thread) (0) | 2022.08.14 |
---|---|
[#12] 프로세스의 개요 : 프로세스 구조와 특징 (0) | 2022.08.07 |
[#10] 프로세스의 개요 : 프로그램과 프로세스 (0) | 2022.07.30 |
[#9] 컴퓨터 구조와 성능 향상 - Q/A (0) | 2022.07.28 |
[#8] 컴퓨터 구조와 성능 향상 -4 (0) | 2022.07.25 |