Zettelkasten

프로세스의 이해

·수정 2026.04.23·수정 2
  • 프로세스: 실행중인 프로그램(Program in Exectuion)
  • 프로세스는 작업을 완료하기위해 자원들이 필요함
    • CPU Time
    • memory
    • files
    • I/O devies
  • 프로세스의 메모리 구조는 여러 부분으로 나눠짐
    • Text Section: 함수 코드
    • Data Section: 전역 변수
    • Heap Section: 동적할당을 위한 영역
    • Stack Section: 함수를 실행하면서 사용하는 영역

stack heap.png

  • gcc 3.1 memory layout.c

  • size ./a.out

  • os는 프로세스를 어떻게 관리하는가?

    • 프로세스는 상태를 갖고 있음
      • New: 생성된 상태
      • Running: 명령어가 실행중
      • Waiting: 프로세스가 특정 이벤트가 일어나길 기다리고 있음
      • Ready: 프로세스가 프로세서에 할당되길 기다리고 있음
      • Terminated: 프로세스가 실행을 종료함 Diagram of process state.png
  • waiting queue

  • scheduler dispatch: ready에서 running으로 만드는 것

  • 프로세스 관리하는 법

  • PCB(Process Countrol Block), TCB(Task Countrol Block)

    • 프로세스의 모든 상태를 PCB에 넣어서 관리하는 구조체
    • 담고 있는 정보
      • Process state
      • Context
        • Program Counter: 명령어 메모리 주소
        • CPU registers
      • CPU-scheduling information
      • Accounting Information
  • Process는 a single thread(한줄로) of execution

    • single thread: only one task at a time
  • multi thread

  • 스레드: 가벼운 프로세스(lightweight process)

  • multi 프로그래밍의 목적: 동시에 돌아가는 프로세스를 구현 하기 위함

    • CPU 사용 효율을 극대화하기 위함
  • time sharing

    • 프로세스간 CPU 코어를 빠르게, 자주 전환해, 마치 동시에 실행되고 있는 것처럼 보이게 하자
  • scheduling queues

    • ready queue, wait queue
    • PCB의 링크드 리스트로 구현
  • waiting queue는 여러개 있을 수 있음 the ready queue and wait queue.png os process flow chart.png Context Switch: CPU 코어를 다른 프로세스로 전환

  1. 현재 프로그램의 Context를 저장
  2. 다음 프로그램의 Context를 불러옴
  • os는 반드시 프로세스 생성과 종료 메커니즘을 제공해야함

  • 프로세스 생성

    • fork a tree of processes on a typical linux system.png
  • 실행의 2가지 방식

    • 부모와 자식을 동시에 실행하는 방식
    • 자식 프로세스가 종료될까지 기다리는 방식
  • 주소 공관 관점에서 2가지

    • 부모 프로세스를 복제하는 경우
    • 자식 프로세스가 새로운 프로그램을 로드하는 경우
  • 종료 방식

    • 마지막 명령문을 실행시킴
    • exit 시스템 call
  • 예외 사항

    • orphan: 부모가 없는 프로세스
    • zombie: 부모가 wait을 하지 않는 상태에서 종료된 자식 프로세스 zombie