Process

푸른별·2023년 5월 23일
0

Operating System

목록 보기
1/2
post-thumbnail

1. Process

Process: 현재 실행 중인 프로그램(running program)

프로그램 그 자체로는 아무런 기능을 수행할 수 없기 때문에, 운영체제는 이런 프로그램을 메모리로 가져온 후 CPU에서 동작하게 됩니다.

2. Process Structure

Memory(Address Space) - Stack, Heap, Data, Code(Text)
Register - Program Counter, Stack Pointer

메모리 부분을 그림으로 표현하면 다음과 같습니다.

힙, 데이터, 코드(텍스트) 영역은 점점 증가하며, 스택의 경우에만 예외로 감소하며 주소 공간을 할당합니다.

3. Process API

공통으로 가져야 하는 API
Create, Destroy, Wait, Miscellaneous Control, Status

  • Create: 프로그램 실행을 위해 Process 생성
  • Destroy: 존재하는 Process 제거
  • Wait: 실행을 멈춰야 할 때 Process 대기
  • Miscellaneous Control: 특정 Process 중단 후 재개(오동작 프로세스 제거)
  • Status: 특정 Process의 정보를 가져옴

4. Process Creation

  1. Process의 주소공간, 즉 Memory에 프로그램 코드를 Load
  2. Program의 Stack 영역에 지역 변수, 매개 변수 등의 값 저장
  3. Program의 Heap 영역에 동적 할당 데이터 저장
  4. OS의 초기화 작업
  5. main()함수에서부터 Program 시작

5. Process Status

Running, Ready, Blocked

  1. Running: Process가 실행 중인 상태
  2. Ready: 실행 가능한 상태이지만 OS에 의해 대기중
  3. Blocked: 우선순위가 높은 작업 또는 I/O 요청을 받았을 경우로, 잠시 중단상태

6. Process Control Block(PCB)

  • Process의 모든 정보를 담고 있음
  • 각 Process는 하나의 PCB를 가짐
  1. CPU register
  2. PID, PPID, Signals...
  3. CPU 스케쥴링 정보
  4. Credentials
  5. I/O 상태 정보...
    ...

7. Context Switch

CPU가 실행 중인 Process에서 다른 Process로 전환할 때 발생

  • 이전 Process를 save, 새로운 Process를 Load
  • Overhead가 일어나며, 이 때는 어떤 작업도 진행하지 않는다.
  • HW에 따라 걸리는 시간 상이함.

Reference: [Operating Systems: Three Easy Pieces] https://pages.cs.wisc.edu/~remzi/OSTEP/

profile
묵묵히 꾸준하게

0개의 댓글