티스토리 뷰
PCB(Process Control Block)
Process Metadata
프로세스는 컴퓨터에서 연속적으로 실행되고 있는 동적인 상태의 컴퓨터 프로그램, 즉 하나의 작업 단위이다. 프로세스는 여러가지 특징을 가지고 있는데 이러한 특징을 Process Metadata 라고 한다. 이 메타데이터는 프로세스가 생성되면 PCB(Process Control Block)에 저장된다. 이러한 메타 데이터를 통해 CPU는 각 프로세스를 구분할 수 있고, 이를 통해 프로세스가 여러 개일 때 전부 관리할 수 있다. 이렇게 프로세스 여러 개를 CPU 스케쥴링을 통해 관리하는 것을 Process Management 라고 한다.
※Process Metadata
- process-id : 새로운 프로세스에 시스템이 할당해주는 고유 id
- process- state : 프로세스의 라이프 타임과 관련된 상태로, waiting, running, ready, blocked, end, suspend-wait, suspend-ready 가 있다
- priority : 프로세스 스케줄링을 위한 우선순위이다
- Process Accounting Information : CPU를 사용한 시간, CPU 할당 시간 등이 있다
- Program Counter : 이전에 배운 PC로 다음 작업할 명령어 위치를 기억한다
- List of Open Files : 실행 중에 프로그램에 필요한 모든 파일의 정보를 포함한다
- Process I/0 status information : 해당 프로세스가 실행 중에 할당을 요구한 I/O 장치에 대한 정보를 담는다
- CPU 레지스터 : context switch가 발생하면 이 때의 레지스터 정보를 기억해서 다시 프로세스가 CPU 할당을 받으면 사용한다. accumulator, index, stack pointer 와 같은 레지스터의 값이 저장된다
- PCB Pointer : 준비중인 다음 프로세스의 주소를 가리킨다. 준비 상태나, 대기 상태의 큐를 구현할 때 다음을 가리키는 포인터로 사용된다
- Memory management information : 메모리 관리 정보로 프로세스가 메모리의 어디에 있는 지 나타내는 메모리 정보와 메모리 보호를 위한 경계 레지스터, 한계 레지스터 값등이 저장된다. 또한, segmentation table , page table 등 정보도 보관한다
- PPID, CPID : 부모 프로세스를 가리키는 PPID, 자식 프로세스를 관리하는 CPID가 저장된다.
Metadata의 생성과 PCB
이 Metadata는 프로세스가 생성되면 PCB에 저장된다.
1. 프로그램 실행
2. 프로세스 생성(프로그램을 메모리에 적재)
3. 프로세스 메타 데이터 생성
4. 메타 데이터를 PCB에 저장
(이때, 한 PCB에는 한 프로세스의 정보가 담긴다.)
PCB의 필요성
프로세스가 여러 개 생성될 때, CPU는 프로세스 상태에 따라 교체 작업을 수행한다. 따라서 수행대기 중인 프로세스에 관한 저장 값을 PCB에 저장해 두어야 한다. PCB는 연결리스트(LinkedList) 방식으로 관리되어 삽입과 삭제가 용이하다. 따라서 프로세스가 생성될 때 PCB List Head 에 PCB가 삽입되고, 프로세스가 완료되면 PCB가 삭제되는 식으로 관리된다.
※ 교체작업
1. Interrupt 발생
2. 할당 받은 프로세스 Waiting 상태로 변경
3. 다른 프로세스를 Running 상태로 변경
문맥 교환(Context Switching)
Context Switching 란 ?
현재 CPU가 실행하고 있는 프로세스 정보를 문맥(Context)라고 하며 이를 교환하는 행위가 문맥 교환(Context Switching)이다. 수행 중인 Task(Process/Thread)가 변경될 때, CPU 레지스터 정보가 변경되는 것을 뜻한다. 즉, 이전 프로세스의 상태를 PCB에 보관하고 다른 프로세스의 정보를 PCB에서 읽어와 CPU 레지스터에 적재하는 과정이다.
* Context
CPU가 다루는 프로세스/스레드에 대한 정보로 대부분 레지스터에 저장되어 있고 PCB로 관리한다.
상태 변경
CPU를 차지하며 Running 상태이던 프로세스가 나가고 새로운 프로세스가 Running 상태가 되는 작업이며, 이때 각 프로세스의 PCB가 변경된다. 즉, 실행 상태에서 나가는 프로세스의 PCB는 작업 내용을 저장하며 실행 상태로 들어오는 프로세스는 PCB 내용을 바탕으로 CPU가 세팅 된다.
Context Switching 은 보통 인터럽트 발생, 현재 프로세스의 선점 허용 기간을 모두 소모한 상황, 입출력을 위해 대기하는 경우에 발생하게 된다.
Context Switching 이 필요한 이유
CPU는 한 번에 하나의 프로세스만 수행할 수 있지만, 실생활에서 우리는 여러 개의 프로세스를 동시에 수행하고자 한다. 따라서 CPU는 여러 개의 프로세스를 번 갈아가면서 수행함으로써 동시에 수행하는 것처럼 보이게 하기 위하여 Context Switching을 사용한다.
'Study > CS' 카테고리의 다른 글
[운영체제] 세마포어(Semaphore)와 뮤텍스(Mutex) (0) | 2022.07.23 |
---|---|
[데이터베이스] 트랜잭션(Transaction) (0) | 2022.07.23 |
[데이터베이스] 인덱스(Index) (0) | 2022.07.17 |
[데이터베이스] SQL Injection (0) | 2022.07.09 |
[컴퓨터구조] ARM 프로세서(ARM Processor) (0) | 2022.07.09 |
- Total
- Today
- Yesterday
- CS.
- 이진탐색
- 완전탐색
- 알고리즘
- 프로그래머스
- 데이터베이스
- 스터디
- 보험
- CS
- CS 스터디
- Greedy sort
- https
- 운영체제
- 코드업 기초
- 프로그래머스강의
- 프로세스 주소공간
- 파이썬
- 자바
- 리스트함축
- SW
- 리스트2
- 이차 리스트
- 자료구조
- 리스트 복사
- 정렬
- It
- 네트워크
- 연결리스트활용
- 리스트
- 자료구조와알고리즘 23강
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |