Processes (Part 1, 2)

Jeongtae Kim·2024년 3월 25일

공룡책

목록 보기
2/2

AI 3줄 요약

프로세스는 단일 스레드 실행 프로그램으로, CPU, 메모리, 파일 및 IO 장치가 필요하며 멀티 프로세싱 및 멀티스레딩을 통해 여러 작업을 동시에 수행한다.
프로세스는 텍스트, 데이터, 힙, 스택 섹션으로 구성되며, 라이프사이클은 생성, 실행, 대기, 준비, 종료로 이루어진다. PCB는 프로세스의 상태, 프로그램 카운터, 레지스터 정보 등을 저장하고 관리한다.
멀티프로세싱은 CPU 사용 효율을 극대화하며, 프로세스 생성은 Pork라는 운영체제 콜을 통해 이루어진다.
종료는 return이나 exit() 시스템 콜로 이루어지며, Zombie 및 Orphan 프로세스는 특정 환경에서 발생한다.

Process

  • 하나의 싱글 스레드를 실행하는 프로그램
  • 운영체제에서 하나의 작업 단위가 process
  • 프로세스가 실행되기 위해 CPU, memory, files, io devices가 필요함
  • 여러개의 쓰레드를 동시에 실행하는 것 ⇒ 멀티 프로세싱
  • 프로그램 한개에서도 여러 쓰레드를 실행해야 함 ⇒ 쓰레드 개념 생성, 멀티쓰레딩

프로세스 메모리 레이아웃

  • 텍스트 섹션
    • 실행할 수 있는 코드
  • 데이터 섹션
    • 전역 변수
  • 힙 섹션
    • 다이나믹 메모리 로케이션
  • 스택 섹션
    • 함수 호출 관련 로케이션

프로세스의 라이프사이클

New

프로세스가 생성된 상태

Running

명령어를 cpu에 로드해서 실행하는 상태

Waiting

cpu를 쓸 수 있는 상태를 만들기 위해 기다리는 상태

Ready

cpu를 할당받으면 바로 작업할 수 있는 상태

Terminated

프로세스 종료

PCB (Process Control Block)

  • 각 프로세스가 가져야 할 정보를 PCB에 저장하고 핸들링

PCB가 가지고있는 정보

  • Process state
  • Program counter: 어디 메모리에 있는 명령어를 가져올건지?
  • CPU 레지스터 정보
  • CPU 스케쥴링 정보
  • 메모리 관리 정보
  • 계정 정보
  • I/O 상태 정보

멀티프로세싱

  • 동시에 여러개의 프로세스를 실행시키기
  • CPU의 사용효율을 극대화

time sharing

  • cpu 코어를 프로세스간에 자주 변경해서 사용자에게 여러 프로세스가 동시에 도는 것 처럼 보이도록 하기 위함
  • 스케줄링 큐를 이용해서 cpu 사용 순서 지정
  • ready queue 에서 cpu 할당 기다림

Context Switch

  • 프로세스가 사용되고 있는 상태가 context (PCB에 저장됨)
  • 운영체제 입장에의 Context는 PCB 정보
  • 현재 프로세스의 PCB를 저장하고, 새로운 프로세스의 PCB를 복원하는 과정

Pork

  • 하나의 프로세스가 여러개의 프로세스를 생성할 수 있음
  • 프로세스를 생성하는 것 : 부모 프로세스
  • 생성된 프로세스: 자식 프로세스
  • Pork 라는 운영체제 콜로 프로세스를 생성

실행되는 두가지 옵션

  • 부모와 자식이 모두 지속적으로 실행되는 경쟁하는 상태
  • 자식이 프로세스가 도는 동안 기다리는 상태

공간에 두가지 옵션

  • 명령어 공간을 부모 프로세스와 복제하는 경우 (복제 == 공유?)
  • 새로운 프로그램을 로딩하는 경우

프로세스 종료

  • return
  • 시스템 콜: exit()
  • os에선 메모리, 파일 오픈, io 버퍼 모두 회수

Zombie Process

부모와 자식이 별도로 실행되는 상황

  • daemon
  • background

에서 활용

Orphan Process

부모 프로세스가 wait()를 호출하지 않고 종료해버린 경우

자식 프로세스만 남은 상태

profile
Data Engineer

0개의 댓글