일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 데이터베이스
- OS
- Kotlin
- 액티비티
- 운영체제
- 안드로이드
- 디자인패턴
- 앱
- Operating System
- db
- 앱개발
- 프로세스
- 안드로이드 개발
- 디자인 패턴
- 리액트
- CS지식
- 스레드
- Android
- 앱 개발
- github
- cs
- React
- Database
- 코틀린
- reactnative
- 개발
- MVVM
- 안드로이드 디자인 패턴
- 메모리
- 리액트네이티브
- Today
- Total
Tech Log
[Operating System] PCB(Process Control Block) 본문
[Operating System] PCB(Process Control Block)
yuhee kim 2023. 2. 11. 01:30PCB(Process Control Block, 프로세스 제어 블록)
운영체제에서 프로세스에 대한 메타데이터를 저장한 데이터를 말한다.
다시 말해, 프로세스를 실행하는 데 필요한 중요한 정보를 보관하는 자료 구조이다.
프로세스는 고유의 프로세스 제어 블록을 가진다.
*메타데이터 : 데이터에 관한 구조화된 데이터이자 데이터를 설명하는 작은 데이터. 대량의 정보 가운데에서 찾고 있는 정보를 효율적으로 찾아내서 이용하기 위해 일정한 규칙에 따라 콘텐츠에 부여되는 데이터.
프로세스 생성 시 만들어져서 프로세스가 실행을 완료하면 폐기한다.
프로그램이 실행되면 프로세스가 생성되고,
프로세스 주소 값들에 스택, 힙 등의 구조를 기반으로 메모리가 할당된다.
이 프로세스들의 메타데이터들이 PCB에 저장되어 관리된다.
PCB는 프로세스의 중요한 정보를 포함하고 있으므로
일반 사용자가 접근하지 못하도록 커널 스택의 가장 앞부분에서 관리된다.
*커널 스택 : 프로세스마다 하나씩 생성되는 스택. 프로세스는 유저 스택과 커널 스택을 갖는다. 커널 스택은 커널 모드를 사용할 때만 접근가능하다.
PCB의 구조
- 프로세스 ID(Process ID) : 프로세스 ID, 해당 프로세스의 자식 프로세스 ID
- 프로세스 스케줄링 상태(Process state) : '준비', '일시중단' 등 프로세스가 CPU에 대한 소유권을 얻은 이후의 상태
- 프로세스 우선순위(Process Priority) : 프로세스의 실행 순서를 결정하는 우선순위
- 프로세스 권한 : 컴퓨터 자원 또는 I/O 디바이스에 대한 권한 정보
- 프로그램 카운터(Program Counter) : 프로세스에서 실행해야 할 다음 명령어의 주소에 대한 포인터
- CPU 레지스터(CPU Register) : 프로세스를 실행하기 위해 저장해야 할 레지스터에 대한 정보
- CPU 스케줄링 정보 : CPU 스케줄러에 의해 중단된 시간 등에 대한 정보
- 계정 정보(Accounting Information) : 프로세스 실행에 사용된 CPU 사용량, 실행한 유저의 정보
- I/O 상태 정보 : 프로세스에 할당된 I/O 디바이스 목록
컨텍스트 스위칭(Context Switching)
PCB를 교환하는 과정.
한 프로세스에 할당된 시간이 끝나거나 인터럽트에 의해 발생.
컴퓨터가 많은 프로그램을 동시에 실행하는 것처럼 보이지만,
어떠한 시점에서 실행되고 있는 프로세스는 단 한 개이다(CPU가 싱글코어 일 때)
많은 프로그램이 동시에 실행되는 것처럼 보이는 것은 컨텍스트 스위칭이 아주 빠른 속도로 일어나는 것이다.
위 사진처럼 컨텍스트 스위칭이 일어날 때 유휴 시간(idle time)이 발생한다.
이와 같이 컨텍스트 스위칭이 일어날 때 비용이 발생한다.
이 비용에는 캐시미스라는 비용도 있다.
캐시미스
컨텍스트 스위칭이 일어날 때 프로세스가 가지고 있는 메모리 주소가 그대로 있으면,
잘못된 주소 변환이 생기므로 캐시클리어 과정을 겪게 된다.
이때 캐시미스가 일어난다.
스레드에서의 컨텍스트 스위칭
컨텍스트 스위칭은 스레드에서도 일어난다.
스레드는 스택 영역을 제외한 모든 메모리를 공유하기 때문에,
프로세스 컨텍스트 스위칭보다 비용이 더 적고 시간도 더 적게 걸린다.
참조
- 주홍철, 면접을 위한 CS 전공지식 노트, 길벗(2022)
- 조성호, 쉽게 배우는 운영체제, 한빛아카데미(2018)
- g0ni
'Computer Science > Operating System' 카테고리의 다른 글
[Operating System] 공유 자원과 임계 영역 (0) | 2023.02.11 |
---|---|
[Operating System] 멀티 프로세싱과 멀티 스레딩 (0) | 2023.02.11 |
[Operating System] 프로세스의 상태 (0) | 2023.02.10 |
[Operating System] 프로세스(Process) (0) | 2023.02.10 |
[Operating System] 페이지 교체 알고리즘 (0) | 2023.01.28 |