Process

프로세스란?

프로세스(process)란 프로그램(executable 파일)이 실행을 위해 메모리에 올라온 동적인 인스턴스

  • 메모리에 올라온 프로세스를 CPU에 의해 실행되고, OS에 의해 스케줄링된다.
  • 프로그램이란 저장장치에 저장되어 운영체제가 프로세스를 초기구동하는데 사용되는 파일(exe 등의 MZ 파일)

인스턴스(프로세스)의 정보는 PCB를 통해 정의 및 제어된다

  • PCB(Process Control Block, 프로세스 제어 블록)이란 운영체제가 프로세스를 제어할 때 필요한 정보
  • 하나의 프로그램으로 여러 프로세스를 생성 할 수 있다(다중 인스턴스)

프로세스와 프로그램의 관계

프로세스의 로딩

로딩(loading)이란 운영체제의 로더(loader)가 메모리에 프로그램을 올려 프로세스로 만드는 과정

프로세스 로더

로더의 종류

  • 절대로더
    • 항상 고정된 위치에 로딩
    • 다중프로그래밍 불가능
  • 재배치 로더
    • 주기억장치의 상태에따라 목적 프로그램을 메모리상 임의의 위치에 적재
    • 세그멘테이션 기법
  • 동적 로더
    • 필요한 부분만 메모리에 저장하고 나머지는 보조기억장치체 저장
    • 필요한 부분만 가져다 메모리에 올렸다 필요없어지면 내림
    • 페이징 기법

프로세스의 LifeCycle

프로세스는 생성에서 종료까지 여러 상태로 바뀌면서 실행됨

프로세스 로더

상태 상세 내용
생성 상태 프로세스가 생성(메모리 할당)된 직후 PCB를 할당받은 직후
실행 준비가 완료된 상태
준비 상태 프로세스가 ready queue에서 실행 대기하는 상태
스케줄러가 실행될 프로세스를 ready queue에서 뽑는다.
- dispatch(PID) -> OS의 스케줄링을 통해 CPU에 의해 실행되는 과정
실행 상태 프로세스가 cpu를 사용하는 상태
- timeout(PID) -> 대기 상태(readyqueue에 다시 들어감)
- exit(PID) -> 완료상태
- block(PID) -> 대기 상태(readyqueue에 다시 들어감)
대기 상태 실행상태의 프로세스가 입출력을 요청하면 입출력이 완료 될때 까지 대기한다.
- wakeup(PID) -> 준비 상태
완료 상태 프로세스가 종료된 상태
메모리 상에서 삭제하고 프로세스 제어블록(PCB)가 삭제된다.
보류 상태 - 대기상태에서 입출력이 지연될때
- malware 격리
- 메모리 부족
- 프로그램 오류
- 긴주기에 따라 실행
등의 이유로 메모리상에서 내려가고 보조기억장치에 저장된 상태

PCB(Process Control Block)란?

  • 운영체제가 프로세스 관리를 목적으로 상태정보를 저장하는 자료구조
  • PCB/Process table이라는 곳에 저장
  • 프로세스마다 고유의 PCB가 존재
  • Context라고 부르기도 함

프로세스 로더

멀티 프로세싱(Context Switching)

CPU를 여러 프로세스가 시분할(Time-slicing)로 나눠 동시해 동작하는것 “처럼” 처리하는것

한 프로세스에서 다른 프로세스로 CPU를 넘겨주는 것을 Context Switching이라고 한다

  • 실행 상태 -> 준비, 대기, 보류 상태로 넘어가는 프로세스의 PCB에 작업내용 저장
    • PID=보류상태일땐 메모리의 정보도 함께 저장
  • 준비 상태 -> 실행 상태로 들어가는 프로세스의 PCB내용을 CPU에 셋팅

프로세스 로더

너무 많이 일어나면 시스템 성능이 떨어지게되기 때문에 스케줄링을 통해 적절하게 실행

  • Context switching의 전환시간이 존재해 오버헤드가 존재