[운영체제] 프로세스 제어 블록

2024. 11. 25. 22:37·CS/운영체제

 


 

1. 프로세스 제어 블록(PCB)

프로세스를 실행할 때 필요한 중요한 정보를 보관하는 자료구조이다. 프로세스가 생성될 때  커널 영역에서 만들어져 프로세스 실행이 끝나면 폐기된다.
 
PCB에 담기는 대표적인 정보는 아래와 같다.

  • 프로세스 ID: 특정 프로세스를 식별하기 위해 부여한 고유 번호
  • 레지스터 값: 프로세스는 자신의 실행 차례가 오면 이전까지 사용한 레지스터 중간값을 모두 복원 -> 실행 재개
  • 프로세스 상태: 실행, 대기, 준비 등 프로세스 상태
  • CPU 스케쥴링 정보: 프로세스가 언제 CPU를 할당받을 지에 대한 정보
  • 메모리 정보: 프로세스가 어느 주소에 저장되어 있는지, 페이지 테이블 등
  • 사용한 파일과 입출력 장치 정보: 할당된 입출력 장치, 사용중인 파일 정보

 

2. 문맥 교환(Context Switch)

한 프로세스에서 다른 프로세스로 실행 순서가 넘어가면 기존에 실행되던 프로세스는 중간 정보를 백업한다.
프로그램 카운터와 같은 레지스터 값, 메모리 정보, 파일, 입출력 장치 등
이러한 중간 정보를 문맥이라고 하고, 다음 차례가 왔을 때 실행을 재개하기 위해 백업한다.
 
이처럼 기존의 실행 중인 프로세스 문맥을 백업하고 새로운 프로세스를 실행하기 위해 문맥을 복구하는 과정을 문맥 교환이라고 한다.
 

3. 사용자 영역 프로세스

코드 영역(텍스트 영역)

  • 실행할 수 있는 코드, 기계어로 이루어진 명령어 저장
  • 데이터가 아닌 CPU가 실행할 명령어가 담기기에 쓰기가 금지됨(read only)

데이터 영역

  • 프로그램이 실행되는 동안 유지할 데이터 저장(전역 변수 등)

힙 영역

  • 프로그램을 만드는 사용자가 직접 할당할 수 있는 저장공간
  • 여러 프로그래밍 언어에는 힙 영역에 담긴 메모리를 자동으로 반환해주는 garbage collector가 있음(메모리 누수 방지)
  • 일반적으로 낮은 주소에서 높은 주소로 할당

스택 영역

  • 데이터가 일시적으로 저장되는 공간(매개 변수, 지역 변수 등)
  • 일반적으로 높은 주소에서 낮은 주소로 할당

 

저작자표시 비영리 변경금지

'CS > 운영체제' 카테고리의 다른 글

[운영체제] 스케줄링 시 고려 사항  (0) 2024.12.09
[운영체제] CPU 스케줄링 단계와 목적  (0) 2024.12.08
[운영체제] 스레드  (0) 2024.11.27
[운영체제] 프로세스 계층구조  (0) 2024.11.26
[운영체제] 프로세스의 상태  (0) 2024.11.24
'CS/운영체제' 카테고리의 다른 글
  • [운영체제] CPU 스케줄링 단계와 목적
  • [운영체제] 스레드
  • [운영체제] 프로세스 계층구조
  • [운영체제] 프로세스의 상태
초오오이
초오오이
  • 초오오이
    초이
    초오오이
  • 전체
    오늘
    어제
    • 분류 전체보기 (34)
      • PHP (3)
      • Laravel (2)
      • Vue.js (4)
      • CS (22)
        • WEB (1)
        • 컴퓨터 구조 (12)
        • 운영체제 (9)
      • etc (3)
  • 인기 글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
초오오이
[운영체제] 프로세스 제어 블록
상단으로

티스토리툴바