CS

CS_운영체제_멀티프로세스, 스레드와 멀티 스레딩

99duuk 2024. 6. 30. 23:42

| 프로세스 (Process)

 

메모리에 적재되고 CPU 자원을 할당받아 프로그램이 실행되고 있는 상태
 

 

 

| 멀티 프로세스

 

하나의 애플리케이션을 여러 프로세스로 구성하여 각 프로세스가 하나의 작업을 처리하도록 하는 것

여러 프로세스가 동시에 실행되는 것을 말한다. 각 프로세스가 독립적으로 실행되며, 프로세스 간에 메모리를 공유하지 않는다. 

각각의 프로세스는 별도의 주소 공간을 가지고 독립적으로 실행된다.

 

멀티 프로세싱

두 개 이상의 cpu 또는 코어가 동시에 여러 프로세스를 실행하는 것을 말한다. 

멀티 프로세싱은 병렬 처리를 가능하게 하며, 성능 향상과 높은 처리량을 제공한다. 

특정 프로세스의 메모리, 프로세스 중 일부에 문제가 생겨도 다른 프로세스를 이용할 수 있으므로 신뢰성이 높다. 

 

 

 

| IPC (Inter-Process Communication)

여러 프로세스가 서로 데이터를 주고 받거나 자원을 공유하기 위한 매커니즘을 말한다. 

IPC는 프로세스 간의 협업과 동기화를 가능하게 한다. 

 

종류

1. 파이프 (Pipe) :

     - 익명 파이프 : 한 프로세스에서 다른 프로세스로 데이터 스트림을 전달한다. 보통 부모-자식 프로세스 간에 사용된다.

     - named 파이프 : 이름을 가지며, 관련 없는 프로세스 간에도 통신을 가능하다. 

 

2. 메시지 (Message Queue)

     - 프로세스 간에 메시지를 주고 받을 수 있는 큐를 제공한다. 메시지는 FIFO 방식으로 처리된다.

 

3. 공유 메모리 (Shared Memory)

     - 여러 프로세스가 같은 메모리 영역을 공유하여 데이터를 주고받을 수 있다. 가장 빠른 IPD 매커니즘 중 하나이다. 

 

4. 세마포어 (Semaphore)

     - 프로세스 간의 동기화를 위해 사용된다. 주로 자원의 접근 제어에 사용된다.

 

5. 소켓 (Socket)

     - 네트워크를 통해 프로세스 간에 통신을 할 수 있도록 한다. 로컬과 원격 프로세스 간에 모두 사용될 수 있다. 

 

 

 

 

 

 

 스레드 (Thread)

 

프로세스 내에서 실행되는 흐름의 단위로, 하나의 프로그램 내에서 여러 스레드가 존재 가능

스레드는 프로세스의 주소 공간을 공유하며,

 

1. 병렬 처리 : 여러 작업을 병렬로 수행해 성능을 향상

2. 자원 절약 : 같은 프로세스 내 자원 공유하기 때문에 새로운 프로세스를 생성하는 것보다 적은 자원을 사용

 

과 같은 이유로 사용된다. 

 

 

 

 

 

| 멀티 스레드

하나의 프로세스 내에서 여러 스레드가 동시에 실행되는 것을 말한다.

멀티 스레딩을 통해 병렬 처리를 쉽게 구현할 수 있다. 

 

응답성 향상, 자원 공유, 비용 절감 등의 이점이 있다. 

여러 스레드가 병렬로 작업을 처리하므로 응답성이 좋다.
같은 프로세스 내의 스레드들은 주소 공간을 공유하기 때문에 자원을 효율적으로 사용할 수 있다.
스레드를 생성하고 관리하는 비용이 프로세스보다 적다.

 

여러 스레드가 동시에 자원에 접근하기 때문에 안정성 문제가 발생할 수 있다.
이런 단점은 Critical Section 기법을 통해 대비한다.

임계 영역은 한 번에 하나의 스레드만 접근할 수 있는 코드 블록이다.
  상호 배제를 보장하는 락인 뮤텍스, 
  자원의 접근을 제어하는 세마포어, 
  바쁜 대기 상태를 유지하는 스핀락
등의 방법을 사용해 자원에 대한 동시 접근을 제어하고 데이터 불일치를 방지한다. 

 

 

 

| 멀티 스레딩

하나의 프로세스 내에서 여러 스레드를 생성하고 관리하여 병렬 처리를 수행하는 기법이다.

여러 작업을 동시에 수행할 수 있으며, 멀티 코어 프로세서의 성능을 극대화할 수 있다. 

 

동시성, 동기화, 부하분산 등의 특징이 있다. 

여러 스레드가 동시에 실행되어 작업을 병렬로 수행한다.
공유 자원에 대한 접근을 제어하기 위해 동기화 메커니즘이 필요합니다. 예를 들어, 뮤텍스, 세마포어 등이 사용된다.
여러 스레드가 작업을 나누어 처리하여 전체 시스템의 부하를 분산시킬 수 있다.

 

 

 

 

멀티 스레드 : 동일한 메모리 공유하기 때문에 교착상태가 발생할 수 있다. 

멀티 프로세스 : 교착상태는 발생하지 않지만 스레드에 비해 속도가 느리다.