Data Engineering/혼공컴운

혼자 공부하는 컴퓨터구조 + 운영체제 10장 정리

potatode 2025. 4. 1. 20:35

10. 프로세스와 스레드

10-1. 프로세스 개요

  • 우리가 실행 중인 프로그램을 ‘프로세스’라고 함
  • 포그라운드 프로세스 : 사용자가 볼 수 있는 공간에서 실행되는 프로세스
  • 백그라운드 프로세스 : 보이지 않는 공간에서 실행되는 프로세스
    • 유닉스에서는 데몬
    • 윈도우에서는 서비스라고 부름

프로세스 제어 블록 (PCB)

  • 운영체제는 번갈아 수행되는 프로세스틔 실행순서를 관리
    • 프로세스에 CPU 비롯한 자원 분배 필요

⇒ 프로세스 제어 블록 이용

  • 프로세스 제어 블록 : 프로세스와 관련된 정보를 저장하는 자료구조
    • 상품에 달린 태그와 비슷한 역할
  • PCB에 담기는 정보들
    • 프로세스ID (PID)
    • : 프로세스 식별을 위해 부여하는 고유한 번호
    • 레지스터값
      • 이전까지 사용한 레지스터의 중간값 모두 복원
      • 그래야 그대로 이어 실행할 수 있음
    • 프로세스 상태
    • CPU 스케줄링 정보
    • 메모리 관리 정보
      • 프로세스마다 메모리에 저장된 위치가 다르기 때문
    • 사용한 파일과 입출력장치 목록

문맥 교환

  • 문맥 : 하나의 프로세스 수행을 재개하기 위해 기억해야 할 정보
    • PCB에 기록되는 정보들
  • 인터럽트 발생 → 운영체제는 해당 프로세스의 PCB에 문맥을 백업
  • → 프로세스의 문맥 복구

⇒ 문맥 교환

  • 여러 프로세스가 끊임없이 빠르게 번갈아가며 실행되는 원리

프로세스의 메모리 영역

  • 사용자 영역에 프로세스 배치되는 방법은?
  • 사용자 영역은 코드, 데이터, 힙, 스택 영역으로 나뉨
  • 코드 영역
    • 기계어로 이루어진 명령어 저장
    • 읽기 전용 공간
  • = 텍스트 영역
  • 데이터 영역
    • 프로그램이 실행되는 동안 유지할 데이터가 저장되는 공간
    • ex) 전역변수
  • 코드, 데이터영역은 정적 할당 영역
    • 크기가 고정된 영역
  • 힙 영역
    • 프로그래머가 직접 할당할 수 있는 저장 공간
    • 힙 영역에 메모리 공간을 할당했다면
      • 언젠가는 공간 반환 필요
      • 그렇지 않으면 메모리 낭비 초래
      • ⇒ 메모리 누수
  • 스택 영역
    • 데이터를 일시적으로 저장하는 공간
  • 힙, 스택 영역은 동적 할당 영역
    • 크기가 변할 수 있음

10-2. 프로세스 상태와 계층 구조

  • 운영체제는 동시에 실행되는 수많은 프로세스를 계층적으로 관리

프로세스 상태

  • 생성 상태
    • 이제 막 메모리에 적재되어 PCB 할당받은 상태
    • 생성 상태를 거쳐 실행 준비가 완료된 프로세스는 ‘준비 상태’가 됨
  • : 프로세스 생성 중
  • 준비 상태
  • : CPU 할당받아 실행할 수 있지만, 아직 자신의 차례가 아니라 기다리고 있는 상태
  • 실행 상태
  • : CPU를 할당받아 실행 중인 상태
  • 대기 상태
  • : 입출력장치의 작업을 기다리는 상태
  • 종료 상태
  • : 프로세스가 종료된 상태

프로세스의 계층 구조

  • 프로세스는 실행 도중 다른 프로세스 생성 가능
    • 생성한 프로세스 : 부모 프로세스
    • 생성된 프로세스 : 자식 프로세스
  • 많은 운영체제는 프로세스가 프로세스를 낳는 계층적인 구조로써 프로세스 관리

프로세스 생성 기법

  • 부모 프로세스 - fork를 통해 자신의 복사본을 자식 프로세스로 생성
  • 자식 프로세스 - exec를 통해 자신의 메모리 공간을 다른 프로그램으로 교체
  • exec 호출 시 코드영역과 데이터 영억의 내용이 실행할 프로그램의 내용으로 바뀜/ 나머지 영역 초기화
  • 부모, 자식 프로세스를 실행하며 계층 구조를 이루는 것
    • fork와 exec가 반복되는 과정

10-3. 스레드

  • 스레드 : 프로세스를 구성하는 실행의 단위

프로세스와 스레드

  • 단일 스레드 프로세스 : 하나의 실행 흐름을 가지고 한 번에 하나의 부분만 실행
  • 스레드 개념 도입 → 하나의 프로세스가 한번에 여러 일 동시에 처리 가능해짐 (멀티 스레드 프로세스)
  • ⇒ 프로세스를 구성하는 여러 명령어를 동시에 실행 가능해짐
  • 스레드 구성요소
    • 스레드 ID
    • 프로그램 카운터 값을 비롯한 레지스터 값
    • 스택
  • 프로세스 내에서 각기 다른 구성요소를 갖고 있기에 스레드마다 각기 다른 코드 실행 가능
  • 스레드들은 실행에 필요한 최소한의 정보만을 유지한 채 프로세스 자원을 공유하며 실행

멀티 프로세스와 멀티 스레드

  • 멀티 프로세스 : 여러 프로세스 동시 실행
  • 멀티 스레드 : 여러 스레드로 프로세스 동시 실행
  • 멀티프로세스와 멀티스레드 차이
    • 프로세스는 자원 공유 X
      • 독립적 실행
    • 스레드는 자원 공유
      • 서로 협력과 통신에 유리
      • 하나의 스레드에 문제가 생기면 프로세스 전체에 문제가 생길 수 있음
반응형