[OS] Process 와 Thread

2025. 2. 23. 20:28·CS/OS

프로세스란?

실행중인 프로그램을 의미합니다. 즉, 정적인 코드(프로그램)을 메모리에 로드하여 실행하는 작업을 프로세스라 합니다.

운영체제(OS)는 프로세스를 생성, 스케줄링, 종료하는 등의 관리를 담당합니다다. 또한, 프로세스는 단순히 실행 단위로만 볼 수도 있지만, 연산을 수행하는 기본 단위로도 볼 수 있습니다.

PCB

운영체제가 각 프로세스를 관리하기 위해 사용되는 데이터 구조로, 각 프로세스의 상태와 관련 정보를 저장하는 역할

  1. PID : 프로세스 식별자, 운영체제가 프로세스를 식별하기 위한 고유의 숫자
  2. Process State : Ready, Running, WatIng등 프로세스의 상태
  3. PC(Process Counter) : 현재 실행중인 명령어의 주소
  4. 메모리 관련 정보 : 프로세스 가 사용하는 메모리와 관련된 정보(기본주소, 한계주소, 페이지 테이블)

프로세스의 메모리 구조

OS가 프로세스에 메모리를 할당시키면 다음과 같은 구조로 할당됩니다.

 

Code, Text : 프로그래머가 작성한 코드들이 CPU가 이해할 수 있는 기계어로 저장되어 있는 공간

Data : 전역 변수와 정적 변수가 저장되는 공간, 프로세스가 실행되는 동안 계속 유지되어 있음

Heap : 동적으로 관리되는 변수가 저장되는 공간, new된 객체들이 있는 공간

Stack : 함수호출시 매개변수, 지역변수, 리턴 주소등이 저장되어 있는 공간

 

프로세스의 상태

 

대기 상태 (Waiting State)란?

프로세스가 즉시 실행되지 않고 특정 이벤트가 발생할 때까지 기다리는 상태를 의미한다. 보통 프로세스가 입출력(I/O) 요청, 동기화(Synchronization), 리소스 할당 등을 기다릴 때 발생한다.

  1. Blocking IO : Request를 요청한 쪽의 상태가 Response를 계속 기다리는 상태
  2. NonBlocking IO : Request를 요청한 쪽의 상태가 Response를 기다리지 않고 다른 작업을 수행할 수 있는 상태

쓰레드란?

프로세스 내에서 실행 흐름을 담당하는 주체입니다. 쓰레드는 각자의 Thread Local Stroage를 갖습니다.

이 Thread Local Storage란 각 쓰레드가 저장해야할 고유하게 저장해야할 데이터(지역변수, 임시데이터)등을 저장하고 있습니다.

이 TLS를 통해 같은 프로세스 내의 다른 쓰레드와 공유되지 않는 데이터를 관리할 수 있습니다.

프로세스와 쓰레드란

프로세스는 기본적으로 하나의 코드 흐름을 갖습니다. 이 코드의 흐름을 쓰레드가 처리합니다.

  • 단일 쓰레드 프로세스 : 하나의 작업을 하나의 쓰레드가 실행합니다.
  • 멀티 쓰레드 포르세스 : 하나의 작업을 여러개의 쓰레드가 실행합니다.

연산

연산을 수행하려면 CPU와 메모리가 필요하다.
이때, 운영체제(OS)가 CPU와 메모리를 각 프로세스에 적절히 할당하는 역할을 한다.

이때 OS가 프로세스를 관리하기 위해 필요한 정보를 PCB를 통해 확인할 수 있습니다. 또한 OS는 시분할을 통해 프로세스를 관리합니다.

 

중요한 점은 프로세스가 직접 하드웨어 수준의 실제 메모리(Physical Memory, RAM)를 사용하지 않는다는 것이다.
대신, 운영체제는 프로세스마다 가상 메모리(Virtual Memory)를 할당한다.

 

 

 

 

'CS > OS' 카테고리의 다른 글

[OS] 멀티 레벨 피드백 큐  (0) 2025.03.07
[OS] CPU 스케줄링  (0) 2025.03.06
[OS] 프로세스 생성과 종료  (0) 2025.02.24
[OS] 프로그램 실행 작업 순서와 컴퓨터 시스템 구조  (0) 2025.02.24
[운영체제] 운영체제란?  (0) 2024.11.11
'CS/OS' 카테고리의 다른 글
  • [OS] CPU 스케줄링
  • [OS] 프로세스 생성과 종료
  • [OS] 프로그램 실행 작업 순서와 컴퓨터 시스템 구조
  • [운영체제] 운영체제란?
절박한개발자
절박한개발자
깃허브 주소 : https://github.com/Kzerojun
  • 절박한개발자
    절박한개발
    절박한개발자
  • 전체
    오늘
    어제
    • 분류 전체보기 (99)
      • Server (5)
      • 프로젝트 (7)
      • Spring (7)
      • AI (1)
      • JPA (6)
      • JAVA (7)
      • Backend (3)
      • WEB (3)
      • 알고리즘-이론 (6)
      • 알고리즘-문제 (28)
      • CS (24)
        • 데이터베이스 (8)
        • Network (5)
        • OS (10)
        • LINUX (1)
      • 개발면접준비 (1)
      • 기타 (1)
  • 블로그 메뉴

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

  • 공지사항

  • 인기 글

  • 태그

    CPU
    2
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.2
절박한개발자
[OS] Process 와 Thread
상단으로

티스토리툴바