Process : 실행중인 프로그램 ( 메모리에 로딩된 형태)

메모리에 최상단은 OS가 탑재되어 있으며, 그 이후에는 프로세스들이 적재된 모습을 볼 수 있다.

 

PCB :프로세스 제어 블록(Process Control Block, 줄여서 PCB)은 특정한 프로세스를 관리할 필요가 있는 정보를 포함하는 운영 체제 커널의 자료 구조이다. 

PCB가 프로세스의 중요한 정보를 포함하고 있기 때문에, 일반 사용자가 접근하지 못하도록 보호된 메모리 영역 안에 남는다. 일부 운영 체제에서 PCB는 커널 스택의 처음에 위치한다. (이 메모리 영역은 편리하면서도 보호를 받는 위치이기 때문이다.)

 

OS가 관리하는 프로세서의 명세서를 의미한다.

맨 처음 process state(프로세스 상태)가 들어간다.

 

 

프로세스가 실행하고 있는 프로그램을 프로세스 이미지라고 한다.

 

프로세스 주소공간 구조 : 최상단 : 스택 , 실행 힙, 데이터(정적 변수), 텍스트(코드)

 

프로세스 분류 : 

  1. 시스템(커널) 프로세스

  2. 사용자 프로세스

  3. 병행 프로세스

            - 독립 프로세스

   - 프로세스 여러 개가 병행하여 수행 시 주어진 초기값에 따라 항상 같은 결과를 보여줌

    - 서로 독립적으로 실행되어 다른 프로세스에 영향을 받지 않고, 데이터를 공유하지않음

            - 협동 프로세스

 - 다른 프로세스에 영향을 주거나 다른 프로세스에 의해 영향을 받음

    - 컴퓨터 시스템의 제한된 자원을 공유하는 프로세스들이 통제되어 상호 작용해야 하는 경우 발생

    - 컴퓨터 시스템의 제한된 자원을 공유하는 프로세스들이 통제되어 상호 작용해야 하는 경우 발생

    - 서로 협동해야 하는 경우, 통신을 위한 수단과 동기화 기능이 필요

 

디스패처(Dispatcher) : 프로세스 스케쥴러

준비 큐 맨 앞에 있던 프로세스가 프로세서를 선택하는 것.

 

문맥교환 (context Switch)

  1. 프로세스의 교환은 Interrupt

  2. Trap

  3. System call의 동작으로 시행된다.

 

절차 

  1. 프로세스 P1가 실행되다가 타임 아웃이 되면 P1의 상태를 PCB에 저장하고, PCB2에서 P2의 상태를 가져옴 (디스패치)

  2. 프로세스 P2가 실행되다가 타임아웃이 되면 P2의 상태를 PCB2에 저장하고, PCB1에서 P1의 상태를 가져온다(디스패치)

문맥 교환 횟수가 늘어날수록 성능이 낮아진다.

 

프로세스 구조  (Parent - Child)

 

프로세스 관리 : 프로세서의 생성과 종료, 제거, 서스펜드, 재시작, 우선순위 변경, 보류, 깨움

 

프로세서의 생성 

  1. Fork() 시스템콜 함수는 PCB를 메모리에 생성해준다.

  2. Child 프로세스가 생성되면 parent 프로세스에게 PID값을 넘긴다.

  3. Parent 프로세스는 PID값으로 Child 프로세스를 구분한다.

 

프로세스의 종료 

  1. 정상적인 종료 : exit()

  2. 비정상적인 종료 : Timeout, 파일 입출력 실패( 파일 조회 최대 횟수 초과), 오류 발생(산술오류, 보호오류, 데이터 오류), 메모리 부족, 메모리 접근 불가 지역의 접근 시도 등

프로세스가 종료되면 프로세스를 제거한다. (PCB 제거 및 관련된 자원을 회수한다.)

 

VMS는 프로세스가 종료되면 Chile 프로세스는 강제종료되며

UNIX는 부모가 변경된다.

 

프로세스 우선순위와 관리

디스패처가 CPU에 할당할 프로세스를 선택할 때 우선순위를 보고 결정한다.

 

 

 

 

 

'OS' 카테고리의 다른 글

OS - RR(Round Robin) Scheduling  (0) 2019.11.14
5) 교착상태  (0) 2019.10.15
4) 세파모어와 IPC  (0) 2019.10.07
3) Thread  (0) 2019.10.03
1) 운영체제의 소개  (0) 2019.10.01

+ Recent posts