OS/Concepts

프로세스와 스레드

uuuhhh 2022. 12. 1. 10:29

▪ 프로세스 (Process)


💡 프로세스 (Process) : 운영체제(OS)에서 할당 받은 시스템 자원을 사용한 독립적인 작업

 

 

  • 시스템 자원
    • CPU 시간
    • 주소 공간
    • Code, Data, Stack, Heap 구조의 메모리 영역
  • 각 프로세스는 다른 프로세스의 자원에 간섭이 불가능하다.
    • 단, IPC(Inter Proceses Communication)를 통하여 서로 간에 통신 및 접근이 가능하다.
💡 IPC(Inter Proceses Communication) : 프로세스 간 통신 → e.g.) 파이프, 소켓, 파일 ..

 

 

▪ 스레드 (Thread)


💡 스레드 (Thread) : 프로세스 내부에서 프로세스 상의 공용의 자원을 사용하는 작업의 흐름

 

  • 프로세스 자원
    • Code, Data, Heap - 공용 사용
    • Stack - 각각 따로 할당하여 사용
  • 프로세스 내 스레드들은 주소 공간과 자원 공유(Code, Data, Heap)가 가능하다.
    • 단, 서로 다른 프로세스 간 스레드들은 간섭 및 접근 불가능하다.

 

 

▪ 멀티 프로세스 (Multi Process)


  • 장점
    • 독립적이라 서로에게 영향을 미치지 않는다.
  • 단점
    • 문맥 교환 (Context Switching)으로 인한 오버헤드가 발생한다.
    • 복잡한 IPC 구현을 통해야만 자원 공유 및 접근이 가능하다.
    • 프로세스를 여러 개 생성 시 새로 시스템 자원 할당이 오버헤드..
💡 문맥 교환 (Context Switching) :
     하나의 프로세스가 CPU를 사용 중일 때 다른 프로세스가 CPU를 사용하기 위해
     이전 프로세스의 상태를 보관하고 새로운 프로세스의 상태를 올리는 작업

 

  • Context ?
    • 프로세스 정보
    • 다음 실행할 명령어
    • PID
    • 레지스트리
    • 등..

 

 

▪ 멀티 스레드 (Multi Thread)


  • 장점
    • 프로세스를 생성할 때 발생하는 시스템 콜이 줄어들어 자원의 효율성 상승
    • 자원을 공유하는 간단한 통신 방법으로 프로그램 응답 시간 감소
    • Stack 영역만 처리하는 스레드의 Context Switching으로 전환 속도 빠름
  • 단점
    • 자원을 동기화 함으로써 발생하는 관리 복잡성
    • 단일 실패 지점에 대한 위험 발생

 

 

ref.


[OS] 프로세스와 스레드의 차이 - Heee's Development Blog

문맥 교환 - 위키백과, 우리 모두의 백과사전