[OS] Process vs Thread

RUNGOAT·2023년 4월 30일
0

OS

목록 보기
1/1

인트로 (용어 정리)

  • 실행 단위: cpu core에서 실행하는 하나의 단위로 프로세스와 스레드를 포괄하는 개념

1️⃣   Process & Thread

프로그램: 어떤 작업을 위해 운영체제 위에서 실행할 수 있는 파일
프로세스: 운영 체제 위에서 실행 중인 프로그램으로 디스크로부터 메모리에 적재되어 CPU의 할당을 받을 수 있는 것
프로세서: 프로세스가 동작될 수 있도록 하는 하드웨어(=CPU 코어)

1.1 Process

✅ 프로그램이 프로세스가 되면서 발생하는 일

1. 프로세스가 필요로 하는 재료들이 메모리에 올라가서 메모리 공간을 확보한다.

메모리에는 4가지 영역이 있다.

2. 프로세스의 생성과 동시에 고유한 PCB를 생성한다.

여기서 PCB(Process Control Block)
특정 프로세스에 대한 중요한 정보를 저장하고 있는 운영체제의 자료구조이다.
프로세스는 CPU를 할당 받아 작업을 처리하다가도 프로세스 전환이 발생하면 진행하던 작업을 저장하고 CPU를 반환해야 하는데, 이 때 작업의 진행 상황을 모두 PCB에 저장하게 된다.
그리고 다시 CPU를 할당받게 되면 PCB에 저장되어 있던 내용을 불러와 이전에 종료됐던 시점부터 다시 작업을 수행한다.

PCB에 저장되는 정보

  • 프로세스 식별자(Process ID, PID) : 프로세스 식별번호
  • Process State : new, ready, running, waiting, terminated 등의 상태를 저장
  • Program Counter : 프로세스가 다음에 실행할 명령어의 주소
  • CPU 레지스터
  • CPU 스케쥴링 정보 : 프로세스의 우선순위, 스케줄 큐에 대한 포인터 등
  • 메모리 관리 정보 : 페이지 테이블 또는 세그먼트 테이블 등과 같은 정보를 포함
  • 입출력 상태 정보 : 프로세스에 할당된 입출력 장치들과 열린 파일 목록
  • 어카운팅 정보 : 사용된 CPU 시간, 시간제한, 계정번호 등

1.2 Context Switching

: CPU가 한 프로세스에서 다른 프로세스로 전환할 때 발생하는 일련의 과정
(CPU는 한 번에 하나의 프로세스만 실행할 수 있다.)

예시

  • 동시 실행을 하고 싶은 프로세스(프로세스1, 프로세스2) 두 개가 존재
  • 동시에 실행하기 위해선 다음 과정이 짧은 텀으로 반복되어야 한다.
    1. 프로세스 1이 실행상태에 있으며 cpu에 적재되어 있다.
      프로세스2는 준비상태
    2. 프로세스 2를 실행하기 위해서는 프로세스1을 준비상태로 내리고 프로세스2를 cpu에 적재한다.
      해당 과정 반복...

1.3 Thread

: 프로세스의 실행 단위

  • 프로세스 내의 주소 공간이나 자원을 공유할 수 있다.
  • 하나의 프로세스 안에 다수의 스레드가 있을 때 공유되는 자원이 있기 때문에 경량화된 프로세스이다.

공유되는 자원이 있기 때문에 컨텍스트 스위칭이 일어날 때 캐싱 적중률이 올라간다.
쉽게 말해 모조리 다 빼고 다시 다 넣을 필요가 없다.


2️⃣   Multi-process & Multi-thread

멀티 프로세스와 멀티 스레드는 모두 처리 방식의 일종이다.
한 어플리케이션에 대한 두 가지 다른 처리방식


3️⃣   Multi-core

동시성 - 하나의 코어에서 짧은 순간에 cpu 시간을 분할하여 동시에 하는 것처럼 보이게 한다.

병렬 처리 - 물리적으로 여러 코어를 사용해서 다수의 실행 단위를 한순간에 처리할 수 있게 해준다.


4️⃣   요약

  1. 프로세스는 프로그램이 실행된 것이다.
  2. 스레드는 한 프로세스 내에서 나뉘어진 하나 이상의 실행 단위이다.
  3. 한 어플리케이션에 대한 작업을 동시에 하기 위해서는 2가지 처리 방식(멀티 프로세스, 멀티 스레드)이 있다.
  4. 동시에 실행이 되는 것처럼 보이기 위해서 실행 단위는 시분할로 cpu를 점유하며 context switching을 한다.
  5. 멀티 프로세스는 독립적인 메모리를 가지고 있지만 멀티 스레드는 자원을 공유한다. 그것에 따른 각각의 장단점이 있다.
  6. 멀티 코어는 하드웨어 측면에서 실행 단위를 병렬적으로 처리할 수 있도록 여러 프로세서가 있는 것이다.

📌 출처

profile
📞피드백 너무나 환영

0개의 댓글