Home [OS] Process와 Thread
Post
Cancel

[OS] Process와 Thread

용어 정리

프로세서(Processor)

  • 하드웨어적 측면: 컴퓨터 내에서 프로그램을 수행하는 하드웨어 유닛, 중앙처리장치(CPU) 등
  • 소프트웨어적 측면: 데이터 포맷을 변환하는 역할을 수행하는 데이터 처리 시스템, 워드프로세서, 컴파일러 등

프로세스(Process)

  • 컴퓨터에서 연속적으로 실행되고 있는 컴퓨터 프로그램, 작업의 목록, 스케줄링의 대상이 됨

프로그램(Program)

  • 하드디스크 등의 저장공간에 저장되어 있는 코드와 리소스 등이 집합되어 있는 파일

스레드(Thread)

  • 프로세스 내 작업의 단위, 프로세스에서 한 단계 낮춰 규정한 것

프로세스와 스레드

프로세스

  • 컴퓨터에서 실행되고 있는 프로그램
  • Code, Data, Stack, Heap으로 구성된 독립된 메모리 영역을 할당 받음
  • 1개 이상의 스레드를 가지고 있음

스레드

  • 프로세스가 할당받은 자원을 이용하는 실행의 단위
  • 스레드끼리 프로세스의 메모리를 공유하며 작동할 수 있음
  • 프로세스 메모리 영역 내에서 Code, Data, Heap 형식으로 할당된 메모리 영역은 공유함
  • Stack, PC register 형식으로 할당된 메모리 영역은 스레드 별로 따로 할당받음

Stack, PC register를 독립적으로 가지는 이유

Stack

  • Stack은 함수 호출 시 전달되는 인자, 되돌아갈 주소값, 함수 내에서 선언하는 변수 등을 저장하기 위해 사용되는 메모리 공간
  • 스택 메모리 공간이 독립적이라는 것은, 독립적인 함수 호출이 가능하다는 것
  • 스레드의 정의에 따라 독립적인 실행 흐름을 추가하기 위한 최소 조건

PC register

  • PC 값은 스레드가 명령어의 어디까지 수행하였는지 나타냄
  • 스레드는 CPU를 할당 받았다가 스케줄러에 의해 다시 선점되므로, 어느 부분까지 수행했는지 기억해야 함

PCB(Process Control Block)

  • 프로세스 제어 블록
  • 특정 프로세스에 대한 중요한 정보를 저장하고 있는 운영체제의 자료구조
  • 프로세스가 생성되면 운영체제는 해당 프로세스의 PCB를 생성함
  • 프로세스 작업 중 프로세스 간 전환이 발생하면, 진행하던 작업 상황을 PCB에 저장하고 CPU를 반환함
  • 이후 다시 CPU를 할당받을 때 PCB에 저장된 내용을 불러와 이전에 종료한 시점부터 다시 작업을 진행함
  • 아래와 같은 정보들이 저장됨
    • Process State(프로세스 상태): new, ready, running 등 프로세스의 상태 정보
    • Process ID(프로세스 ID): 프로세스 ID, 해당 프로세스의 자식 프로세스 ID
    • Process priority(프로세스 권한): 컴퓨터 자원 또는 I/O 디바이스에 대한 권한 정보
    • Program counter(프로그램 카운터): 프로세스에서 실행해야 할 다음 명령어의 주소에 대한 포인터
    • CPU register(CPU 레지스터): 프로세스를 실행하기 위해 저장해야 할 레지스터에 대한 정보

Context Switching(문맥 교환)

  • PCB를 교환하는 과정
  • 프로세스에 할당된 시간이 끝나거나 인터럽트에 의해 발생함
  • 사용자 입장에서는 컴퓨터가 동시에 여러 프로그램을 실행하는 것처럼 보이지만, 프로세스 간 context switching을 통해 실행되는 프로세스를 전환하는 것

멀티태스킹 VS 멀티스레드

멀티 태스킹(Multi-Tasking)

  • 하나의 운영체제 안에서 여러 프로세스가 실행되는 것
  • 여러 프로세스가 동시에 실행되는 것처럼 보이지만, CPU 스케줄링에 의해 번갈아 가며 실행되는 것

멀티 스레드(Multi-Thread)

  • 하나의 프로세스가 여러 개의 스레드로 여러 작업을 수행하는 것

멀티 프로세스(Multi-Process)

  • 두 개 이상의 프로세서(CPU)가 하나의 작업을 동시에 처리하는 것
  • 하나의 프로그램을 여러 개의 프로세스로 구성하여 각 프로세스가 하나의 작업을 처리하도록 하는 것
  • IPC(Inter-Process Commuication): 프로세스끼리 데이터를 주고받고 공유 데이터를 관리하는 방법
  • 장점: 프로세스 중 하나에 문제가 생겨도 다른 프로세스에 영향을 주지 않음
  • 단점: 독립된 메모리 영역이기 때문에 작업량이 많을수록 Context Switching이 자주 일어나 성능저하가 발생할 수 있음
This post is licensed under CC BY 4.0 by the author.