이것저것

Process, Thread 본문

Operating Systems

Process, Thread

nays111 2021. 1. 17. 13:53

Program (=실행시킬 수 있는 파일)

실행되기 전 상태의 명령어, 코드 및 정적인 데이터의 묶음

Processor (=실행을 하는 HW)

프로세스가 동작될 수 있도록 하는 HW (=CPU)

(동작이란, 프로그램의 자원들이 메모리에 올라오고, 실행 되어야 할 코드의 메모리 주소를 CPU의 레지스터로 올리는 것을 의미한다.)

"프로세서(CPU)는 한 순간에 하나의 프로세스만을 실행할 수 있다."

그러나 작업관리자를 실행시켜 보이면 여러개의 프로세스가 실행되고 있는 것을 볼 수 있다

그 이유는?

OS가 짧은 시간에 실행할 프로세스를 교체하고 있기 때문에, 동시에 여러 개의 프로세스가 실행되고 있는 것처럼 느끼는 것이다

Process (= 실행 중인 파일)

실행 중인 Program

OS로부터 시스템 자원을 할당 받는 작업의 단위

 

프로세스의 구조

한 운영체제 안에서 여러 프로세스들이 실행되니깐 OS는 프로세스를 관리할 수 있어야한다. ⇒ PCB

PCB

  • 각 프로세스는 OS에서 PCB로 표현된다.
  • PID : 프로세스 식별자
  • 프로세스 상태 : new, ready, running, waiting, halted 등
  • 프로그램 카운터 (PC) : 다음 실행할 명령어의 주소
  • 스케줄링 정보 : 우선순위, 최종실행시각, CPU 점유시간 등

프로세스의 상태


Thread

프로세스 내에서 실행되는 흐름의 단위

CPU 이용의 기본 단위

Text, data, heap 영역을 공유

각 thread 별도의 stack 영역을 가짐


 

 

Multi Process

하나의 작업을 여러 개의 프로세스가 처리한다.(=자원을 공유하지 못한다.)

자원을 공유하지 못하므로 프로세스간 통신이 필요하다. (IPC - Socket, pipe 등등)

Context Switching 비용이 크다.

자식 프로세스 중 하나만 문제가 생겨도 다른 프로세스에 영향이 없다.

ex) Google Chrome (탭 마다 다른 프로세스이다 ) (browser process, gpu process, plugin process, rendere process 등등)

Multi Thread

프로세스의 자원을 공유

향상된 응답성

Context Switching 비용이 적다

자원을 공유하는 만큼 충돌을 주의해야한다.

한 프로세스 안의 쓰레드가 문제가 생기면 같은 프로세스 안의 쓰레드도 같이 문제가 생긴다.

같은 데이터를 공유하기에, 데이터 동기화에 신경을 써야한다.

ex) Web Server (html, css, js 등~~ 쓰레드로 할당받아 처리한다.)

 

'Operating Systems' 카테고리의 다른 글

운영체제의 역할  (0) 2021.04.17
Swap memory  (0) 2021.01.07
Comments