[CS] 10. 프로세스와 스레드

eunoia73·2025년 4월 9일
1

TIL

목록 보기
27/32

1. 프로세스 개요

프로세스 - 실행 중인 프로그램. 보조기억장치에 저장된 프로그램을 메모리에 적재하고 실행하는 순간 프로그램은 프로세스가 됨

  • 포그라운드 프로세스 - 사용자가 보는 앞에서 실행되는 프로세스
  • 백그라운드 프로세스 - 사용자가 보지 못하는 뒤편에서 실행되는 프로세스
  • 데몬(서비스) - 사용자와 상호작용하지 않고 정해진 일만 수행하는 백그라운드 프로세스

프로세스 제어 블록(PCB) - 프로세스와 관련된 정보를 저장하는 자료 구조
운영체제는 프로세스의 실행 순서를 관리하고 프로세스에 CPU를 비롯한 자원을 배분하는데, 이 때 PCB를 이용한다.
프로세스ID(PID), 레지스터 값, 프로세스 상태, CPU 스케줄링 정보, 메모리 관리 정보, 사용한 파일과 입출력장치 목록 등을 가지고 있음

문맥 교환 - 프로세스 간 실행을 전환하는 것
기존 프로세스의 문맥을 PCB에 백업하고, 새로운 프로세스를 실행하기 위해 문맥을 PCB에서 복구하여 새로운 프로세스를 실행하는 것
문맥 - 하나의 프로세스 수행을 재개하기 이해 기억해야 할 정보

프로세스의 메모리 영역

정적 할당 영역

  • 코드 영역 - 실행할 수 있는 코드, 기계어로 이뤄진 명령어 저장. 읽기 전용
  • 데이터 영역 - 프로그램이 실행되는 동안 유지할 데이터 저장(전역변수)

동적 할당 영역

  • 힙 영역 - 프로그래머가 직접 할당할 수 있는 저장공간(반환하지 않으면 메모리 누수 발생 가능성 있음)
  • 스택 영역 - 데이터를 일시적으로 저장하는 공간(매개변수, 지역변수)

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

1) 생성 상태 new - 프로세스를 생성 중인 상태
2) 준비 상태 ready - CPU를 할당받아 실행 가능한 상태이지만, 차례가 되지 않아 기다리고 있는 상태 (디스패치 - 준비 상태에서 실행 상태로 전환되는 것)
3) 실행 상태 running - CPU를 할당받아 실행 중인 상태
(할당된 시간을 모두 사용하면 준비상태가 됨. 실행 도중 입출력 장치의 작업을 기다린다면 대기 상태가 됨)
4) 대기 상태 blocked - 입출력장치의 작업을 기다리는 상태
5) 종료 상태 terminated - 프로세스가 종료된 상태

* 프로세스 생성 기법

fork - 자신의 프로세스의 복사본을 자식 프로세스로 생성하는 시스템 호출
exec - 자신의 메모리 공간을 새로운 프로그램으로 덮어쓰는 시스템 호출

3. 스레드

프로세스를 구성하는 실행의 흐름 단위
프로세스의 스레드들은 실행에 필요한 최소한의 정보(프로그램 카운터, 스택, 레지스터)는 개별적으로 유지한 채, 프로세스의 자원을 공유하며 실행됨


[혼자 공부하는 컴퓨터구조 + 운영체제] 책을 읽고 정리한 기록입니다.

0개의 댓글