프로세스 (Process)와 스레드 (Thread)

샘물공원·2023년 4월 14일
0

javascript

목록 보기
8/8

프로세스(Process)

운영체제로부터 자원을 할당받아 실행 중인 프로그램을 의미합니다. 각 프로세스는 별도의 주소 공간을 가지고 있어, 독립적으로 실행될 수 있습니다. 이러한 프로세스는 운영체제로부터 CPU, 메모리, 파일 등의 자원을 할당받으며, 프로세스 간의 자원 공유는 IPC(Inter-Process Communication) 기법을 사용합니다.

IPC(Inter-Process Communication)는 프로세스 간에 데이터를 주고받기 위한 기법입니다. 프로세스는 독립된 메모리 공간을 가지고 있기 때문에, 다른 프로세스의 메모리 공간에 직접적으로 접근할 수 없습니다. 따라서, IPC를 사용하여 데이터를 주고받아야 합니다.

  • 대표적인 IPC 기법
  1. 파이프(Pipe)
    부모 프로세스와 자식 프로세스 간에 단방향으로 데이터를 전송할 수 있는 방식입니다.
  2. 메시지 큐(Message Queue)
    여러 프로세스 간에 데이터를 비동기적으로 전송할 수 있는 방식입니다.
  3. 공유 메모리(Shared Memory)
    여러 프로세스 간에 동일한 메모리 공간을 공유하여 데이터를 전송할 수 있는 방식입니다.
  4. 소켓(Socket)
    네트워크 상에서 데이터를 주고받기 위한 방식이며, 여러 프로세스 간에 데이터를 전송할 수 있습니다.
  5. 파일(File)
    파일을 공유하여 데이터를 전송할 수 있는 방식입니다.

스레드(Thread)

프로세스 내에서 실행되는 작은 실행 단위입니다. 각 스레드는 프로세스의 주소 공간을 공유하며, 스레드 간의 자원 공유는 동일한 프로세스 내에서 직접적으로 이루어집니다. 이러한 스레드는 CPU 스케줄링에 따라 실행되며, 멀티 스레딩을 통해 동시에 여러 작업을 수행할 수 있습니다.


프로세스(Process)와 스레드(Thread)의 차이점

1. 자원 공유
프로세스는 독립된 메모리 공간을 가지기 때문에, 자원 공유에 있어서 IPC 기법을 사용해야 합니다.
스레드는 동일한 프로세스 내에서 실행되며, 해당 프로세스의 메모리 공간을 공유하기 때문에, 자원 공유가 쉽고 빠릅니다.
2. 생성 비용
프로세스는 운영체제로부터 메모리 공간 등의 자원을 할당받아야 하기 때문에, 생성 비용이 높습니다.
스레드는 프로세스 내에서 생성되기 때문에, 생성 비용이 상대적으로 적습니다.
3. 컨텍스트 스위칭 비용
프로세스는 독립된 메모리 공간을 가지고 있기 때문에, 컨텍스트 스위칭 비용이 높습니다.
스레드는 동일한 프로세스 내에서 실행되기 때문에, 컨텍스트 스위칭 비용이 상대적으로 적습니다.
4. 안정성
프로세스는 독립된 메모리 공간을 가지고 있기 때문에, 한 프로세스가 다른 프로세스에 영향을 주지 않습니다. 따라서 안정성이 높습니다.
스레드는 동일한 프로세스 내에서 실행되기 때문에, 한 스레드의 오류가 전체 프로세스에 영향을 미칠 수 있습니다. 따라서 안정성이 낮을 수 있습니다

profile
게임개발

0개의 댓글