03. 프로세스의 이해

헬리코박도·2021년 10월 15일
0

운영체제

목록 보기
4/10

공룡책 ch03 Process -1-

프로세스 Process

정의

  • 실행 중인 프로그램
  • os에서 작업의 단위
  • CPU time, memory, files, I/O device 등의 자원을 필요로 함

섹션 Sections

  • 여러 구역으로 나누어진 프로세스의 메모리 레이아웃
  • Text section: 실행 가능한 코드가 저장되는 섹션
  • Data section: 전역 변수가 저장되는 섹션
  • Heap section: 프로그램이 실행되는 동안 동적으로 할당할 수 있는 공간
  • Stack section: 함수를 호출할 때 사용되는 섹션, 함수의 패러미터, 반환 주소나 지역 변수가 저장됨

상태 state

  • 프로세스는 실행되면서 상태를 변화한다.
  • New: 프로세스가 생성되었을 때의 상태
  • Running: 프로세스가 CPU를 점유하여 명령어들이 실행될 때의 상태
  • Waiting: 다른 프로세스가 CPU를 점유하여 차례를 기다리며 대기할 때의 상태
  • Ready: waiting에서 running으로 넘어가기 전에 대기하는 상태, waiting에서 바로 CPU를 점유하지 못함
  • Terminated: 프로세스가 실행을 마친 상태

PCB Process Control Block

  • TCB Task Control Block라고도 함(주로 리눅스에서)
  • 프로세스가 가져야 할 정보를 저장하는 구조체
  • PCB가 가지는 정보들
    • 프로세스의 상태
    • 프로그램 카운터: 메모리에서 IR로 명령어를 가져올 때 필요한 주소를 저장
    • CPU 레지스터들
    • CPU 스케쥴링 정보
    • 메모리 관리 정보
    • 어카운팅 정보
    • I/O 스테이터스 정보

쓰레드 Thread

  • 프로세스를 쪼개어 낸 단위
  • 한 번에 한 태스크 밖에 처리하지 못함
  • 멀티스레딩 Multithreading: 여러 개의 스레드를 실행하여 여러 개의 태스크를 동시에 수행할 수 있게 함
  • 여러 개의 작업을 수행하는 것이 사실상 OS의 개발 목적

멀티 프로그래밍의 목적

  • 동시에 여러 개의 프로세스를 실행
  • 그에 따른 CPU 효용 증가

타임 쉐어링의 목적

  • Time sharing: CPU의 처리 속도가 매우 빠르므로 시간에 따라 하는 일을 변경하여 사용자 입장에서 동시에 여러 작업을 수행하는 것처럼 보이게 함

스케쥴링 큐 Scheduling Queues

  • Queue의 FIFO 특성 이용
  • ready queue: 프로세스가 CPU를 점유하기 전에 대기하는 대기열
  • wait queue: I/O 작업등의 이벤트가 있을 때 대기하는 큐, ready queue로 감
  • PCB를 원소로 갖는 연결 리스트로 구현함

문맥 교환 Context Switch

  • context: PCB에 저장된 프로세스의 사용되고 있는 상태
  • Context Switch
    • CPU 코어를 다른 프로세스에게 넘겨줌
    • 현재 프로세스의 상태를 저장
    • 다시 상태를 복원
  • ex) 인터럽트가 발생 시
    • running process의 context를 저장
    • 이후 다시 running될 때 저장된 context를 복원해옴

프로세스의 생성

  • 프로세스는 프로세스를 만들 수 있음
  • parent process: 생성 작업을 한 프로세스
  • child process: 생성된 프로세스
  • fork() 시스템 콜을 통해 부모 프로세스가 자식 프로세스 생성할 수 있음

부모-자식 두가지 실행 선택지

  • 부모 프로세스가 자식 프로세스와 동시에 실행
  • 부모 프로세스는 wait로 들어가고 자식 프로세스가 종료되면 run

부모-자식 주소 공간

  • 자식 프로세스가 부모 프로세스의 주소 공간을 복사
  • 자식 프로세스가 부모와는 다른 새 프로그램으로 주소 공간 복사 X

프로세스의 종료

  • 코드가 모두 끝났을 때(return)
  • exit() 시스템 콜을 사용해 강제로 종료
  • 프로세스가 종료되면 os가 프로세스에 할당 되었던 것들을 모두 해제하고 회수함

좀비 프로세스와 고아 프로세스

  • zombie process: 자식 프로세스가 종료되었으나 부모 프로세스가 wait()를 호출하지 않아 자식이 좀비가 됨
  • orphan process: 부모 프로세스가 wait()를 호출하지 않고 부모 프로세스가 종료된 자식 프로세스
profile
Data Engineer

0개의 댓글