운영체제

프로세스

leeeehhjj 2024. 2. 18. 14:11

01. process?

  • 프로세스는 실행 중인 프로그램이다.
  • 프로세스는 program counter(pc), process stack, data section, heap을 포함한다.
  • 프로그램은 디스크에 저장된 파일 같이 수동적 존재이고, 프로세스는 다음 실행 명령어를 지정하는 pc와 관련 resource set을 가진 능동적 존재이다.
  • 프로그램이 메모리에 로드되면 프로세스가 된다.

Process Control Block(PCB)

PCB는 특정 프로세스 관련 정보를 갖고 있다.

  • Process state : new, ready, running, wating, terminated 등의 프로세스 상태
  • Program Counter : 이 프로세스가 다음으로 실행할 명령어의 주소 가리킴
  • CPU Register 
  • CPU 스케줄링 정보 : 프로세스 우선 순위 등의 스케줄링 매개변수들을 포함
  • 메모리 관리 정보 
  • accounting 정보 : CPU 사용 시간, real time used, time limit, process number 등
  • 입출력 상태 정보 : 해당 프로세스에 할당된 I/O 기기들과 open file 목록 등을 포함

Thread

한 프로세스는 다수의 스레드를 가질 수 있고, 

따라서 프로세스가 한 번에 하나 이상의 일을 수행할 수 있다.

여러 스레드가 병렬로 수행되는 multi-core 시스템에서 이득이고, 스레드를 지원하는 시스템에서는 PCB가 각 스레드에 대한 정보 포함

 

02. 프로세스 스케줄링

single - processor 환경에서 실행 중인 프로세스는 한 개여야 하므로 process scheduler는 CPU를 switching 하며 여러 프로세스 중 하나의 프로세스에 할당해준다.

 

스케줄링 큐(scheduling Queue)

프로세스가 시스템에 들어오면 job queue에 놓이게 되고, job queue에는 시스템의 모든 프로세스가 올라와 있다.

주메모리에 존재하며, ready 상태에서 대기 중인 프로세스들은 ready queue에 올라간다.

I/O 를 대기하는 프로세스들은 device queue에 올라간다.

 

프로세스들은 life time 동안 상황에 따라 다양한 스케줄링 큐 사이에 있게 된다.

 

스케줄러

job scheduler는 대용량 메모리에 있는 프로세스들을 선택하여 메모리에 load 한다.

CPU scheduler는 실행 준비가 완료된 프로세스들 중 한 프로세스를 CPU에 할당한다.

 

Context Switching(문맥 교환)

  • interrupt 발생 시 시스템은 interrupt 처리 후 원래 context를 복구하도록 현재 실행 중인 프로세스의 context를 저장해야 함.
  • context는 프로세스의 PCB에 표현됨.
  • CPU를 다른 프로세스로 switch 하기 위해 이전 프로세스 상태를 PCB에 보관하고 새로운 프로세스의 saved context를 복구하는 작업을 문맥 교환이라 함.

03. operation on Process(프로세스에 대한 연산)

프로세스 생성

  • 실행되는 동안 프로세스는 여러 개의 새로운 프로세스 생성 가능.
  • 생성하는 프로세스를 부모 프로세스, 생성되는 프로세스를 자식 프로세스라 하며 자식 프로세스가 또 다른 프로세스를 생성할 수 있으며 그 결과 프로세스의 트리를 형성
  • 대부분의 os는 프로세스 식별자인 pid를 사용해 프로세스를 구분함.