[OS] 2. Process

dnjstjt12·2024년 11월 3일

Process

  • 수행되는 프로그램으로, 메모리에 적재되어있는 프로그램을 말한다.

  • 프로세스를 식별하기 위해 고유한 PID를 가진다.

Process in memory

  • Code(Text): 작성한 코드가 들어가는 부분
  • Data: Global variable을 포함하는 부분
  • Stack: Temporary data를 포함하는 부분
  • Heap: 런타임 중에 동적으로 할당되는 부분

State of Process

  • New: 새로운 프로세스가 생성된 상태
  • Ready: Process가 Processor에 할당되기를 기다리는 상태
  • Running: 명령어가 실행되는 상태
  • Blocked: Process가 I/O가 완료되기를 기다리는 상태
  • Exited: Process의 실행이 종료된 상태

Process의 계층

  • 프로세스들은 Tree형태의 구조로 이루어진다.
    프로세스(부모)는 다른 프로세스(자식)를 만들 수 있다.

fork()

  • Process 복제하고, 복제된 프로세스는 새로운 메모리 공간에 전부 복사된다.

exec() family

  • 현재 Process이미지에 새로운 process 이미지로 대체한다.

abort()

  • 프로그램 내부에서 비정상적인 오류가 발생하면 프로그램을 종료한다.

assert()

  • 파라미터로 들어온 표현식이 거짓이라면 abort()를 호출한다.

kill()

  • Process에게 signal을 보내고, 해당 프로세스는 종료된다.

wait()

  • 자식 Process가 종료되기를 기다린다.

Process Termination

  • Zombie
    부모 process에서 wait()나 waitpid()를 만나기 전 상태의 자식 process이다.
  • Orphan
    부모 Process가 종료되고, wait를 만나지 않아 종료가 되지 않은 자식 Process이다. 이들은 init/systemd process에 연결한다.

PCB

  • 프로세스의 정보를 포함한다.
    PID, Process state, program counter, cpu register 등을 포함한다.

[참고] Operating Systems Three Easy Pieces/Remzi H.Arpaci-Dusseau/ CreateSpace Publishing

profile
안녕하세요!

0개의 댓글