본문 바로가기
Computer Science/Operating System

[OS] 프로세스와 스레드

by Dev_Green 2023. 8. 3.

프로세스(Process)란?

  • 메모리에 적재되어 실행되고 있는 프로그램의 인스턴스
  • 각 프로세스는 독립된 메모리 영역(Code, Data, Stack, Heap)을 할당받는다.
  • 서로 다른 프로세스는 각각 개별적으로 실행되므로 서로의 데이터에 직접적으로 접근할 수 없다.
  • 다른 프로세스의 자원에 접근하려면 IPC(InterProcess Communication)을 활용해야 한다.
  • 프로세스는 1개 이상의 스레드를 가지고 있다.
  • 프로세스 구조
    • Code: 프로그램 코드가 CPU가 해석 가능한 기계어 형태로 저장되어 있다.
    • Data: 전역 변수, 클래스 변수, 상수 등이 저장되어 있다.
    • Stack: 함수 호출 시 할당되는 공간으로 함수 종료 시 소멸된다. 함수 내의 내역 변수 또한 저장된다.
    • Heap: 동적으로 할당되는 데이터가 저장되는 공간

프로세스 구조

스레드(Thread)란?

  • 프로세스 내에서 동시에 진행되는 작업 흐름의 단위 /  프로세스 내에서 동시에 진행되는 작업 갈래, 흐름의 단위 
  • 한 프로세스 내의 스레드들 간에는 프로세스의 자원을 공유한다.
    • Code, Data, Heap 영역은 모든 스레드들에게 공유되나, Stack은 스레드 별로 각각 존재한다.
      • Stack은 함수 호출 시 전달되는 매개변수, 되돌아갈 주소값, 함수 내의 지역 변수 등을 저장하는 메모리 공간이다. 이러한 공간을 별도로 가짐으로써 스레드는 독립적인 실행 흐름을 가질 수 있게 된다.

'Computer Science > Operating System' 카테고리의 다른 글

[OS] 가상 메모리  (0) 2023.08.16
[OS] 운영체제의 구조  (0) 2023.02.01