PCB(Process Control Block)
- 운영체제에서 프로세스에 대한 메타데이터를 저장한 ‘데이터’
PCB는 운영체제 내에서 한 프로세스의 존재를 정의한다. 즉, 여러 개의 프로세스를 수행하는 다중 프로그래밍 환경 하에서 각 프로세스를 구분하기 위한 프로세스 제어 블록이다.
PCB 테이블은 프로세스들의 현재 상태를 기록한 정보 테이블이며 각 프로세스들의 주기억장치에 적재된 기억장치 위치 혹은 포인터(100,200,300,400)와 식별자 (식별자:1, 식별자:2...) emddl PCB 항목으로 기록된다.
프로세스 메타데이터들을 저장해 놓는 곳, 한 PCB 안에는 한 프로세스의 정보가 담김
프로그램 실행 → 프로세스 생성 → 프로세스 주소 공간에 (코드, 데이터, 스택) 생성 → 이 프로세스의 메타데이터들이 PCB에 저장
PCB가 왜 필요한가요?
CPU에서는 프로세스의 상태에 따라 교체작업이 이루어진다.
이때, 앞으로 다시 수행할 대기 중인 프로세스에 관한 저장 값을 PCB에 저장해두는 것이다.
PCB의 관리 방식
Linked List 방식으로 관리된다.
PCB List Head에 PCB들이 생성될 때마다 붙게 된다. 주소값으로 연결이 이루어져 있는 연결리스트이기 때문에 삽입 삭제가 용이하다.
즉, 프로세스가 생성되면 해당 PCB가 생성되고 프로세스 완료시 제거된다.
이렇게 수행 중인 프로세스를 변경할 때, CPU의 레지스터 정보가 변경되는 것을 Context Switching이라고 한다.
프로세스의 생성 과정
1. 새로운 프로세스를 위한 프로세스 식별자를 할당한다.
2. 새로운 프로세스를 한 주소 공간과 프로세스 제어블록(PCB)를 할당한다.
3. 새로운 프로세스의 프로세스 제어 블록을 초기화한다. (상태 정보, 카운터, 우선순위 등을 초기화)
4. 새로운 프로세스를 스케줄링 큐의 준비 또는 준비/보류 리스트에 연결한다.
Context Switching
- PCB를 교환하는 과정
CPU가 이전의 프로세스 상태를 PCB에 보관하고, 또 다른 프로세스의 정보를 PCB에 읽어 레지스터에 적재하는 과정
보통 인터럽트가 발생하거나, 실행 중인 CPU 사용 허가시간을 모두 소모하거나, 입출력을 위해 대기해야 하는 경우에 Context Switching이 발생한다.
즉, 프로세스가 Ready → Running, Running → Ready, Running → Waiting처럼 상태 변경 시 발생!
Context Switching의 OverHead란?
프로세스 작업 중에는 OverHead를 감수해야 하는 상황이 있다.
프로세스를 수행하다가 입출력 이벤트가 발생해서 대기 상태로 전환시킴
이때, CPU를 그냥 놀게 놔두는 것보다 다른 프로세스를 수행시키는 것이 효율적
즉, CPU에 계속 프로세스를 수행시키도록 하기 위해서 다른 프로세스를 실행시키고 Context Switching 하는 것
CPU가 놀지 않도록 만들고, 사용자에게 빠르게 일처리를 제공해주기 위한 것이다.
출처 : https://velog.io/@hoyun7443/PCB
PCB(Process Control Block)
CPU의 프로세스가 여러개일 때, CPU 스케줄링을 통해 관리하는 것을 말함이때, CPU는 각 프로세스들이 누군지 알아야 관리가 가능함프로세스들의 특징을 갖고있는 것이 바로 Process MetadataProcess IDPro
velog.io
'CS > 운영체제' 카테고리의 다른 글
공유자원과 임계 영역, 그리고 경쟁상태(race condition) (0) | 2022.07.26 |
---|---|
멀티프로세싱과 멀티스레딩, 그리고 IPC (0) | 2022.07.26 |
프로세스의 메모리 구조 (0) | 2022.07.26 |
프로그램과 프로세스 그리고 스레드의 차이 (0) | 2022.07.26 |
가상메모리와 스와핑, 페이지폴트 그리고 스레싱 (0) | 2022.07.26 |