본문 바로가기
스터디/CS 스터디

운영체제 - 프로세스와 스레드

by xladmt 2025. 3. 10.

프로세스(Process)란?

프로세스는 프로그램을 실행 시켜 정적인 프로그램이 동적으로 변하여 프로그램이 돌아가고 있는 상태를 말한다. 즉, 컴퓨터에서 작업 중인 프로그램을 의미한다.

실행중인 프로그램들(=프로세스들)

 

 

프로세스 상태

  • 생성 상태(create) : 프로세스의 생성
  • 준비 상태(ready) : 지금 당장 cpu를 할당받아서 실행할 수 있는 상태
  • 실행 상태(running) : 프로세스가 CPU를 차지하여 명령어들 실행
  • 대기 상태(blocked)
    • 지금 당장 실행할 수 없는 상태(이벤트를 기다리고 있는 상태)
    • 주로 입출력 장치 사용을 요청했을 때 일어남
      • 입출력 작업이 완료됐을 때까지 대기상태임.
  • 종료 상태(terminated) : 프로세스의 실행 종료

 

  1. 준비  -> 실행
    • 디스패치 : 준비 큐 맨 앞에 있는 프로세스가 프로세서를 점유하는 것
    • 다중 프로그래밍 운영체제는 실행 상태인 프로세스가 할당된 시간만큼만 프로세서를 사용하여 특정 프로세스의 독점을 방지
  2. 실행 -> 준비
    • 운영체제는 프로세스의 독점을 방지하기 위해 인터럽트 클록(interrupt clock)을 두어 일정 시간만 점유하도록 제한
    • 이 시간이 지나도 프로세서를 반환하지 않으면 클록이 인터럽트를 발생시켜 운영체제에 프로세서 제어권을 부여
  3. 실행 -> 대기
    • 할당된 시간 이전에 실행 상태의 프로세서에 입출력 연산 또는 자원 요청 등의 문제로 프로세서를 스스로 넘기는 경우
  4. 대기 -> 준비
    • 입출력 작업이 끝나거나 문제가 해결된다면 대기 상태에서 준비 상태가 됨

 

더보기

[실습:리눅스 환경]

$top > S (프로세스 상태)

R (Running) 실행 상태
S (Sleeping) 대기 상태
W (Waiting) 준비 상태
S (Stopped) 종료 상태
Z (Zombie) 프로세스 종료 후 자원이 반환되었지만 커널 영역에 프로세스가 남아있는 상태

 

 

프로세스 제어 블록(PCB)와 문맥 교환(Context Switch)

프로세스 제어 블록(PCB)

: 프로세스의 실행 정보는 프로세스 제어 블록에 저장된다.

정보 설명
프로세스 식별자(Process ID) 각 프로세스의 고유 식별자(숫자, 색인 항목)
프로세스 상태(Process State) 생성, 준비, 실행, 대기, 중단 등 상태 표시
프로그램 카운터(Program Counter) 프로세스 실행하는 다음 명령의 주소 표시
CPU 스케줄링 정보 우선 순위, 최종 실행시각, CPU 점유시간 등
메모리 관리 정보 해당 프로세스의 주소 공간 등
프로세스 계정 정보 페이지 테이블, 스케줄링 큐 포인터, 소유자, 부모 등
입출력 상태 정보 프로세스에 할당된 입출력장치 목록, 열린 파일 목록 등

 

문맥 교환(Context Switching)

운영체제는 현재 실행 중인 프로세스 외의 프로세스를 실행하기 위해 메모리에 적재된 PCB를 교체하는데 이를 문맥 교환이라고 한다.

 

스레드

  • 프로세스를 구성하는 실행 흐름의 단위
  • 각기 다른 스레드 ID, 프로그램 카운터, 레지스터, 스택

 

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

가장 주된 차이점은 자원 공유 여부

  • 프로세스 간에는 기본적으로 자원을 공유하지 않음
  • 스레드 간에는 프로세스의 자원(입출력 장치, ...)을 공유

 

멀티 프로세스

- 각각의 프로세스들은 각기 다른 자원으로써 실행

 

멀티 스레드

- 프로세스의 자원을 스레드가 공유

- 스레드가 공유하는 자원에 문제가 생기면 스레드 전체에 영향을 미침

 

예) 웹 브라우저 탭 기능

1. 웹 브라우저 탭 하나하나를 프로세스로 두었을 경우

- 하나의 탭에 문제 생겼을 때, 그 탭만 닫으면 됨. 다른 탭에 영향X

2. 각각의 탭을 하나의 스레드로 두었을 경우

- 하나의 탭이 잘못되면 웹 전체에 문제 생김. 다 껐다 켜야함.

 

프로세스 간에도 자원 공유가 가능하다!

-> 프로세스간 통신(IPC)

  • 공유 메모리를 통한 통신
  • 파이프를 통한 통신
  • 네트워크 소켓을 통한 통신
  • ...

 

 

[참고]

https://yanghs6.github.io/posts/1003_process_state/

'스터디 > CS 스터디' 카테고리의 다른 글

운영체제 - 가상 메모리  (0) 2025.03.17
운영체제 - 동기화와 교착상태  (0) 2025.03.14
운영체제 - CPU 스케줄링  (0) 2025.03.10
운영체제 - 메모리 영역  (0) 2025.03.10
컴퓨터 구조 - 기본, 명령어  (0) 2025.03.02