Halo World

프로세스의 개념과 PCB 본문

개발 지식/OS

프로세스의 개념과 PCB

_Yeony 2017. 7. 9. 20:49

| 프로세스란?


운영체제에서 수행중인 프로그램



| 프로세스 상태


생성(New)         : 프로세스가 생성 중임

실행(Running)    : 명령어들이 실행되고 있음

대기(Waiting)     : 프로세스가 어떤 사건이 일어나기를 기다리는 상태

준비(Ready) : 프로세스가 처리기에 할당되기를 기다림

완료(Terminated) : 프로세스의 실행이 종료




| 프로세스 제어 블록(PCB : Process Control Block)


특정한 프로세스를 관리할 필요가 있는 정보를 포함하는 운영체제 커널의 자료구조

특정 프로세스에 대한 정보를 담고 있음


> PCB가 담고 있는 정보


  - 프로세스 식별자(Process ID)

  - 프로세스 상태 : 생성, 준비, 실행, 대기, 완료

  - 프로그램 카운터 : 프로세스가 다음에 실행할 명령어의 주소를 가리킴

  - CPU 레지스터 및 일반 레지스터

  - CPU 스케줄링 정보 : 우선순위, 최종 실행시각, CPU 점유시간 등

  - 메모리 관리 정보 : 해당 프로세스의 주소 공간 등

  - 프로세스 계정 정보 : 페이지 테이블, 스케줄링 큐 포인터, 소유자, 부모 등

  - 입/출력 상태 정보 : 프로세스에 할당된 입출력장치 목록, 열린 파일 목록 등



> PCB의 위치

   : 프로세스의 중요한 정보를 포함하고 있기 때문에, 일반 사용자가 접근하지 못하도록 보호된 메모리 영역 안에 남는다.

    일부 운영체제에서 PCB는 커널 스택의 처음에 위치한다. (편리하면서 보호받는 위치임)



| 프로세스간 CPU 스위치






[참고]

https://ko.wikipedia.org/wiki/%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4_%EC%A0%9C%EC%96%B4_%EB%B8%94%EB%A1%9D 

http://onewaykim.tistory.com/23 



'개발 지식 > OS' 카테고리의 다른 글

프로세스 간 동기화 (공유 자원에 대한 접근 문제)  (0) 2017.07.11
CPU 스케줄링  (0) 2017.07.10
[OS 문제] 2일차  (0) 2017.07.06
커널과 쉘  (0) 2017.07.06
리눅스 커널모드와 유저모드  (0) 2017.07.04