운영체제

03. 프로세스의 이해

syom 2021. 9. 3. 11:19

- 본 글은 인프런 공룡책 운영체제 강의를 듣고 정리한 내용입니다

프로세스

프로세스란 실행중인 프로그램

프로세스가 실행되려면

  • cpu 를 쓸수있어야 함
  • 메모리에 올라가있어야 함
  • 리소스들을 관리할 수 있어야함 (files, I/O device)

프로그램 사이즈 확인 방법

$ size ./a.out

text data bss(initialized data) dec hex filename

순으로 출력된다

프로세스의 생명주기(Life cycle)

  1. new : 프로세스 생성 (fork 같은게 실행된)
  2. Running : 프로세스를 CPU에 로딩한 상태
  3. Waiting : CPU 가 다른 프로세스를 실행중이라면 대기하는 상태
    • I/O 대기 같은 것 (queue)
  4. Ready : waiting 에서 준비가 되었다는걸 알리는 상태 (queue)
  5. Terminated : 종료된 상태

PCB (Process Control Block) or TCB (Task Control Block)

  • 프로세스가 가져야할 정보를 모두 다 저장되어있는 구조체
  • 운영체제가 관리해야함

PCB 의 정보

  • Process state : (new, ready 같은것)
  • Program counter : 명령어들의 주소가 저장되어있음(순서대로)
  • CPU register : instruction register , data register 정보들을 가지고 있음
  • CPU-scheduling information
  • Memory-management information : 메모리관리정보
  • Accounting information : 유저 계정 정보
  • I/O state information : 어떤 자원이 오픈되어잇고 등등
  • Stack Pointer 등등

Process

  • a program that performs a single thread of execution

Multi Processing

  • 멀티 스레드가 같이 도는 것 (multi tasking)
  • 여기까지는 한 프로세스에 싱글 스레드로 구성이 되어있는데 프로그램들이 복잡해지면서 싱글 스레드로는 부족해졌다
  • 스레드 라는 개념이 생겨남

멀티프로그래밍의 목적

  • 동시에 여러 프로그램을 실행시켜보자
  • 병렬적으로
  • ⇒ CPU 사용 효율을 높이기 위해서

Time sharing 목적

  • CPU 의 프로세스를 자주 교체하여 사용자가 프로그램들이 동시에 동작한다고 생각하게 하는 것
  • 동작하기 위해선 CPU를 스케쥴링 해주어야함

Scheduling Queue

  • 각 프로세스들이 대기열에 대기하고 있다가 차례대로 실행되는 것
  • ⇒ ready queue
  • ready → running → 다시 ready 로 가는 경우도 있지만 waiting 으로 가는 경우가 있음 ( I/O completion 을 기다림 → 끝나면 ready로 감)
  • linked list 로 구현 가능 (레디큐 밑엔 다 waiting queue)

Queueing Diagram

Context Switch (PCB 정보를 뜻함)

  • Context(문맥) 교환을 OS가 해주어야함
  • interrupt 가 일어났을 때 실행중이던 process 의 context 를 저장(PC, Progam Count : 어디까지 실행했는지)하고 다시 실행되었을때 다시 context 를 가져오는 것
  • 현재 실행중인 프로세스의 상태를 저장하고 새로 실행하는 프로세스의 상태를 가져오는 것

부모프로세스와 자식프로세스

  • 부모프로세스와 자식프로세스가 동시에 실행되는 경우, 부모가 wait 하는 경우 두가지
  • 부모프로세스와 코드가 같으면 굳이 두개를 만들 필요가 없기 때문에 PCB만 새로 만들고, 주소를 복사하여 실행위치만 다르게 진행될 수 있다

좀비 프로세스와 고아 프로세스

  • 좀비 프로세스 : 자식 프로세스 생성 후 부모프로세스가 wait 을 안하고 신경을 안쓰는 경우(daemon)
  • 고아(orphan) 프로세스 : 자식 프로세스 생성 후 부모 프로세스가 wait을 하지 않고 부모 프로세스가 종료된 경우

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

06. 프로세스간 통신의 실제  (0) 2021.09.06
05. 프로세스간 통신  (0) 2021.09.05
04. 프로세스의 생성  (0) 2021.09.04
02. 운영체제의 개념과 구조  (0) 2021.09.02
01. 운영체제 기초  (0) 2021.09.01