[운영체제] 프로세스와 스레드

2024. 10. 18. 15:05·💻 CS/운영체제

프로세스와 스레드: 운영체제의 핵심 개념 이해하기

1. 프로세스(Process)란?

프로세스는 컴퓨터에서 실행되고 있는 프로그램을 의미합니다. CPU 스케줄링의 대상이 되는 작업(Task)과 거의 같은 의미로 사용되고 있습니다. 프로그램이 메모리(RAM)에 로드되면 프로세스가 되는 인스턴스화가 일어나고, 이후 운영체제의 CPU 스케줄러에 따라 CPU가 프로세스를 실행합니다.

1.1 프로세스의 상태

  • 생성(Create) 상태: 프로세스가 생성된 상태
  • 대기(Ready) 상태: CPU 스케줄러로부터 CPU 소유권이 넘어오기를 기다리는 상태
  • 실행(Run) 상태: CPU 소유권과 메모리를 할당받고 인스트럭션을 수행 중인 상태
  • 중단(Blocked) 상태: 어떤 이벤트가 발생한 이후 기다리며 프로세스가 차단된 상태
  • 종료(Terminated) 상태: 메모리와 CPU 소유권을 모두 반환하고 종료된 상태

📢 PCB(프로세스 제어 블록, Process Control Block)는 운영체제가 프로세스에 대한 중요한 정보를 저장하는 데이터 구조입니다.

1.2 프로세스의 메모리 구조

프로세스의 메모리 구조는 다음과 같이 구성됩니다:

  • 스택(Stack): 지역 변수, 매개 변수, 함수 호출 정보 등을 저장
  • 힙(Heap): 동적으로 할당되는 메모리 영역
  • 데이터 영역: 전역 변수, static 변수 등을 저장
  • 코드 영역: 실행할 프로그램의 코드가 저장되는 영역

2. PCB(Process Control Block)

PCB는 운영체제가 프로세스를 관리하기 위해 프로세스마다 유지하는 정보 구조체입니다. 주요 정보로는 프로세스 상태, 프로세스 ID, 프로그램 카운터, 레지스터 정보 등이 있습니다.

2.1 컨텍스트 스위칭(Context Switching)

컨텍스트 스위칭은 PCB를 기반으로 프로세스의 상태를 저장하고 로드하는 과정입니다. 이를 통해 여러 프로세스가 번갈아가며 실행되어 동시에 실행되는 것처럼 보이게 됩니다.

3. 멀티프로세싱

멀티프로세싱은 여러 개의 프로세스를 동시에 실행하여 두 가지 이상의 작업을 동시에 처리할 수 있는 시스템을 말합니다.

3.1 IPC(Inter Process Communication)

IPC는 프로세스 간 통신을 위한 메커니즘으로, 다음과 같은 방법들이 있습니다:

  • 공유 메모리(Shared Memory)
  • 파일
  • 소켓
  • 파이프(Pipe)
  • 메시지 큐(Message Queue)

4. 스레드(Thread)와 멀티스레딩

스레드는 프로세스의 실행 가능한 가장 작은 단위입니다. 멀티스레딩은 하나의 프로세스 내에서 여러 개의 스레드를 동시에 실행하는 기법입니다.

📢 동시성(Concurrency): 서로 독립적인 작업들을 작은 단위로 나누고 동시에 실행되는 것처럼 보이게 하는 것입니다.

5. 공유 자원과 임계 영역

공유 자원은 여러 프로세스나 스레드가 동시에 접근할 수 있는 자원을 말합니다. 임계 영역은 둘 이상의 프로세스나 스레드가 공유 자원에 접근할 때 문제가 발생할 수 있는 코드 영역을 의미합니다.

5.1 임계 영역 문제 해결 방법

  • 뮤텍스(Mutex): 상호 배제를 위한 동기화 객체
  • 세마포어(Semaphore): 한정된 자원에 대한 접근을 제어하는 동기화 객체
  • 모니터(Monitor): 고급 동기화 메커니즘을 제공하는 프로그래밍 언어 구성 요소

6. 교착 상태(Deadlock)

교착 상태는 두 개 이상의 프로세스들이 서로가 가진 자원을 기다리며 중단된 상태를 말합니다.

6.1 교착 상태의 발생 조건

  1. 상호 배제(Mutual Exclusion)
  2. 점유 대기(Hold and Wait)
  3. 비선점(No Preemption)
  4. 환형 대기(Circular Wait)

6.2 교착 상태 해결 방법

  1. 예방(Prevention)
  2. 회피(Avoidance)
  3. 탐지 및 복구(Detection and Recovery)
  4. 무시(Ignorance)

📢 은행원 알고리즘: 교착 상태를 방지하기 위한 자원 할당 알고리즘으로, 시스템이 안전 상태를 유지하도록 자원을 할당합니다.

결론

프로세스와 스레드는 현대 운영체제의 핵심 개념입니다. 이들을 효과적으로 관리하고 동기화하는 것이 시스템의 성능과 안정성을 결정짓는 중요한 요소입니다.

'💻 CS > 운영체제' 카테고리의 다른 글

[운영체제] CPU 스케줄링 알고리즘  (0) 2024.10.22
[운영체제] 메모리 : 메모리의 계층, 메모리 관리  (0) 2024.10.17
[운영체제] 운영체제와 컴퓨터  (0) 2024.10.17
'💻 CS/운영체제' 카테고리의 다른 글
  • [운영체제] CPU 스케줄링 알고리즘
  • [운영체제] 메모리 : 메모리의 계층, 메모리 관리
  • [운영체제] 운영체제와 컴퓨터
kkongdo
kkongdo
kkongdo 님의 블로그 입니다.
  • kkongdo
    숲을 바라보며 나무를 심는 아이
    kkongdo
  • 전체
    오늘
    어제
    • 분류 전체보기 (32)
      • 🌏 Web (0)
      • ☕ Java (5)
      • 🌱 Spring (9)
        • Spring Boot (7)
        • Spring Data JPA & QueryDSL (2)
      • 🗂️ Database (5)
      • 💻 CS (12)
        • 운영체제 (4)
        • 네트워크 (5)
        • 자료구조 (3)
      • 🗃️Git (1)
      • 🔍 Algorithm (0)
      • 📡 DevOps (0)
        • Docker (0)
      • 🔭 ETC (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
    • GitHub
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    DI
    스케줄링
    복잡도
    db
    JPA
    데이터베이스
    springbatch
    @annotation
    QueryDSL
    네트워크
    자료구조
    java
    spring
    CS
    SpringMVC
    SpringSecurity
    조인
    OS
    네트워크기기
    운영체제
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
kkongdo
[운영체제] 프로세스와 스레드
상단으로

티스토리툴바