운영체제 3. 프로세스의 이해 Process (Part 1)

Jaewon·2023년 9월 29일
0

OperatingSystem

목록 보기
3/5

https://www.inflearn.com/course/%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C-%EA%B3%B5%EB%A3%A1%EC%B1%85-%EC%A0%84%EA%B3%B5%EA%B0%95%EC%9D%98/dashboard
https://codetravel.tistory.com/31
위 자료를 참고했다.


3.1 Process concpet

프로세스란?

  • 실행중인 프로그램
  • 운영체제에서의 작업의 단위
    • 즉, 운영체제는 프로세스를 관리하게 됨
  • 프로세스는 다음의 resource들을 필요로 한다.
    • CPU time
    • memory
    • files
    • I/O devices

      그림으로 보면 위 상태에 있는 게 프로세스

프로세스의 Memory layout

  • Text section
    • executable code
  • Data section
    • global variables
  • Heap section
    • 동적으로 할당되는 메모리 관련 (malloc 등..)
  • Stack section
    • 함수 호출 시 해당 영역에 쌓임
      - function parameter, return address, local variables...

프로세스 state 종류

  • New
    • 프로세스가 생성된 경우
  • Running
    • instruction들이 실행되고 있는 경우
  • Waiting
    • 대기상태. I/O completion / signal reception 등을 기다리고 있는 경우
  • Ready
    • 프로세서에 assign되기를 기다리는 경우
  • Terminated
    • execution을 마친 경우
      어떤 상황에서 각 state로 변환되는지에 주목

프로세스 관리는 어떻게 할 것인가?

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

  • 구조체 하나에 프로세스가 가져야 하는 모든 정보 다 저장하자

PCB가 갖는 정보

  • Process state (new, running...)
  • Program Counter
    • 메모리 상의 어느 instruction을 fetch해올 것인가

      요런 느낌. 시소때 배웠던 JUMP 명령어 등 참고
  • CPU registers (PC 포함) -> context라 통칭
    • IR
    • DR
  • CPU-scheduling information
  • Memory-management information
  • Accounting information
    • 어떤 유저가 creation했는가..
  • I/O status information

    이런 식으로 구조체로 관리

Process concpet

  • single thread의 경우, 한 번에 한 task만 처리 가능
  • 요즘 운영체제의 경우, 프로세스가 여러 개의 스레드를 수행할 수 있도록 함
    • multi-threading
    • 즉, 한 번에 여러 개의 task를 수행할 수 있는 것
    • 요즘은 multi-processing이 아닌, multi-threading이 주류

3.2 Process Scheduling

Multi programming / Multi processing의 목적

  • "동시에" 여러 프로세스를 구동하는 것 (Parallel x)
  • CPU 사용 효율을 최대화하자

Time sharing의 목적

  • CPU core를 프로세스 간 자주 switching해 각 프로그램이 "동시에 돌고 있는 것 처럼"하자.
    • 실제로는 동시에 도는 게 아님

Scheduling Queue

  • CPU를 scheduling해주는 큐

Ready Queue

  • Linked list로 구현 가능
  • ready상태의 프로세스들의 대기열

Waiting Queue

  • I/O completion 등을 기다리는 경우
  • waiting 상태가 끝나면 ready queue로 이동

맨 윗 줄이 ready queue, 아래가 waiting queue

Queueing Diagram


어떤 상황에 어떻게 되는가에 유의

Context Switch

  • OS가 수행
  • context란, PCB에 저장된 프로세스의 상태
  • interrupt가 발생했을 때, running process의 현재 context(PC 등..)를 저장하고, 다른 프로세스의 context정보를 restore하는 것
  • CPU core를 다른 프로세스에 넘기는 것

3.3 Operations on Processes

  • time sharing, multi-processing은 결국 OS scheduler에 의한 context switching을 통해 이뤄지는 것
    이를 위해 OS가 해야 하는 것

    • process creation
      • process는 새로운 process를 생성할 수 있음
      • 생성한 process가 parent process, 생성된 process가 child process
        • parent process와 child process가 concurrent하게 실행될 수 있음
        • 혹은 child process가 끝날 때까지 parent process가 waiting할 수 있음
    • process termination
  • address space와 관련해

    • child process가 parent process를 복제하는 경우
    • child process가 새로운 프로그램을 로드하는 경우

자세한 건 다음 시간 실습 참고

fork() system call 관련

이걸 잘 이해해야 함!!!!!

Process termination 관련

  • 주로 마지막 statement를 실행했을 때 (함수의 경우, return)
  • 강제로 끝내고 싶은 경우, exit() system call 존재
    • 할당된 메모리, 열린 파일, I/O buffer정리

Zombie process

  • 자식 프로세스가 종료되었지만 부모 프로세스가 자식 프로세스의 종료 상태를 회수하지 않았을 경우에 자식 프로세스

Orphan process

  • 부모 프로세스가 자식 프로세스보다 먼저 종료된 경우에서의 자식 프로세스

Zombie process, Orphan process는 daemon process를 만들 때, 즉 background process를 만들 때 많이 사용

profile
v ^_^ v

0개의 댓글