Processes and Threads

ian·2023년 1월 20일
1

Process:프로세스(Process)는 운영체제로부터 자원을 할당 받은 작업의 단위

Thread:쓰레드(Thread)는 프로세스가 할당 받은 자원을 이용하는 실행 흐름의 단위


Multi Process VS Multi Thread

Multi Process

장점

  • 멀티 프로세스는 프로세스 중 하나에 문제가 발생했을 때 그 프로세스 외의 프로세스에 영향이 생기지 않습니다.

단점

  • Context Switching이 발생하면 CPU 레지스터와 캐쉬에 있는 데이터를 모두 리셋해야 하므로 오버헤드가 매우 큽니다.
  • 프로세스는 각각의 독립된 메모리 영역을 할당 받았기 때문에 프로세스 사이의 통신을 위해서는 IPC를 이용해야 합니다.

Multi Thread

장점 :

  • 쓰레드 간 데이터 공유가 가능하므로 데이터를 주고 받는 것이 비교적 수월합니다.
  • Context Switching이 발생했을 때 stack 영역만 처리하므로 더 적은 오버헤드가 발생합니다.

더 적은 메모리 영역이 필요하므로 시스템의 자원 소모도 감소할 수 있습니다.

단점 :

  • 쓰레드 중 하나에 문제가 발생했을 때 전체 프로세스에 영향을 끼치는 단점이 있습니다.
  • 자원을 공유하기 때문에 동기화 문제가 발생할 수 있습니다.

Context switching

Context

프로세스에 대한 정보를 의미한다. 그 정보로는 현재 프로세스의 상태, 프로세스가 다음에 실행할 명령어, 레지스터 값, 프로세스 번호 등이다.

Context Switching Triggers

There are three major triggers for context switching. These are given as follows −

Multitasking:In a multitasking environment, a process is switched out of the CPU so another process can be run. The state of the old process is saved and the state of the new process is loaded. On a pre-emptive system, processes may be switched out by the scheduler.

Interrupt Handling:The hardware switches a part of the context when an interrupt occurs. This happens automatically. Only some of the context is changed to minimize the time required to handle the interrupt.

User and Kernel Mode Switching:A context switch may take place when a transition between the user mode and kernel mode is required in the operating system.


Context Switching Reason

Context Switching이 높은 Overhead를 갖음에도 수행하는 이유는 그것을 감안해도 더 이득이기 때문입니다. 프로세스를 수행하다가 I/O event가 발생하여 BLOCK 상태로 전환시켰을 때, CPU가 그냥 놀게 놔두는 것보다 다른 프로세스를 수행시키는 것이 효율적이므로, Context Switching을 수행하여 CPU로 다른 프로세스를 실행시킵니다.


Context Switching Cost

  1. Cache Reset
  2. Memory Mapping Reset
  3. Run kernel for contacting memory

따라서 잦은 Context Switching은 성능 저하를 가져옵니다.


PCB

A process control block (PCB) is a data structure used by computer operating systems to store Process Metadata (all the information about a process)

The role of the PCBs is central in process management

ref
https://www.tutorialspoint.com/what-is-context-switching-in-operating-system


IPC

  • 하나의 프로그램을 실행하더라도 여러 프로세스끼리 협력이 필요
  • 특정 Task를 여러 개의 Sub Task로 나누어 더 빠르게 수행해야 한다거나, 동시에 많은 Task를 한 번에 처리해야 하는 경우

정보 공유: 여러 사용자가 동일한 정보에 흥미를 가질 수 있음에 따라, 병행적으로 접근할 수 있는 환경 제공
계산 가속화: task를 sub task로 나누고, 병렬 처리를 통한 계산 가속화
모듈성: 시스템 기능을 변도의 프로세스 또는 스레드로 나누어 모듈식 형태로 시스템 구성
편의성: 한 순간에 작업할 많은 task를 가질 수 있음


IPC methods

Shared memory

  • 프로세스가 공유메모리를 커널에 요청
  • 해당 프로세스에 메모리 할당
  • 공유 메모리의 경우에는 처음 생성할 때만 시스템 호출을 사용하기 때문에 속도가 빠릅니다.
  • 동기화(synchronization)기술이 매우 중요한 분야
  • 프로세스 간 데이터를 동기화하고 보호하기 위해 semaphore, mutex 사용

memory mapping

  • 오픈된 파일에 한해서 메모리를 공유하는 방법

message passing

  • 필요한 공유자원을 그때 그때 프로세스 사이에서 전달하는 방식
  • 동기화에 대해 고민할 필요가 없음
  • 구현하기 편함 (복사 >> 보내기)
  • 공유메모리에 비해 느림

messeage queue

우편함과 같은 방식
메시지에 태그(번호)를 달아 메시지를 구분

memory space, linked list
다수의 process message passing

  • 비동기(Asynchronous): Queue에 넣기 때문에 나중에 처리할 수 있습니다.
  • 비동조(Decoupling): 애플리케이션과 분리할 수 있습니다.
  • 탄력성(Resilience): 일부가 실패 시 전체에 영향을 받지 않습니다.
  • 과잉(Redundancy): 실패할 경우 재실행 가능합니다.
  • 보증(Guarantees): 작업이 처리된걸 확인할 수 있습니다.
  • 확장성(Scalable): 다수의 프로세스들이 큐에 메시지를 보낼 수 있습니다.

socket

port간의 데이터 교환
process는 임의의 port를 담당하는 socket.
데이터 송수신을 진행

pipe

  • 1:1 통신
  • 하나의 프로세스는 데이터를 쓰기만, 다른 하나는 데이터를 읽기만 하는 단방향 통신만 가능

ref
https://www.geeksforgeeks.org/inter-process-communication-ipc/
https://dar0m.tistory.com/233
https://dokhakdubini.tistory.com/490
https://sweetday-alice.tistory.com/174
https://unix.stackexchange.com/questions/474946/are-sharing-a-memory-mapped-file-and-sharing-a-memory-region-implemented-based-o

profile
Backend Developer

0개의 댓글