본문으로 바로가기

Process vs Thread

category CS 공부OS (재정리) 4년 전

Process

  • 실행 중인 프로그램으로 메모리에 적재되어 CPU의 할당을 받을 수 있는 것.
  • 운영체제로 부터 시스템 자원인 주소, 파일, 메모리, 스택, 힙, 데이터, 코드 영역과 고유 PCB 를 할당 받는다.
  • PCB엔 PID, 프로세스 상태, PC, CPU register, 스케줄링 정보, 메모리 관리 정보 등이 있다.
  • 할당 받은 자원들은 프로세스마다 각각 독립적이며 다른 프로세스의 변수나 자료에 임의로 접근할 수 없다.
    => IPC 기법을 사용하면 접근이 가능하다 - 파이프, 소켓, 파일 등을 이용한 통신 방법.
  • 최소 1개의 쓰레드를 가지고 있다.
  • 멀티 프로세스 프로그래밍
    • 하나의 응용 프로그램을 여러 프로세스로 구성한다.
    • 장점
      • 프로그램 구현, 설계가 직관적이고 쉽다.
      • 문제 발생 시 해당 프로세스만 처리하면 되고 이러한 결과가 다른 프로세스에 쉽게 영향을 끼치지 않는다.
    • 단점
      • 응용 프로그램 구동시 필요한 공유 자원인 경우에 IPC 기법이라는 복잡하고 까다로운 기술이 필요하다.
      • 특정 조건에 의해 Context Switching이 발생할 경우 오버헤드가 크다.
      • CS 발생 시 여러 자원 정보(특히 cashe)를 PCB에 저장하고 초기화하고, 다시 할당 받을 때 적재하여야 한다.

Thread

  • 프로세스의 실행 단위로서 프로세스의 특정한 수행을 처리한다.
  • 프로세스의 여러 자원을 (Code, Data, Heap )을 공유하고, 레지스터(PC)와 Stack 영역은 쓰레드마다 할당 받는다.
  • 멀티 스레드 프로그래밍
    • 하나의 응용프로그램을 여러 개의 스레드로 구성하고 각 스레드로 하여금 하나의 작업을 처리하도록 하는 것이다.
    • 장점
      • 메모리 공간, 시스템 자원 소모가 감소되어 자원의 효율성이 증가한다.
        프로세스마다 필요한 자원을 하나로 나누어 쓰고, 이를 할당하는 데 필요한 시스템콜도 줄어든다.
      • 프로세스 내의 여러 쓰레드는 Heap 등을 통해 공유 자원 접근 및 통신이 용이하다.
      • 따라서 처리량, 응답시간이 상승한다.
      • 프로세스에 비해 작업의 크기가 작아 CS이 빠르고 모든 자원이 아닌 쓰레드의 Stack 영역만 초기화, 적재하면 된다.
    • 단점
      • 프로그래밍 설계가 복잡하고 어렵다.
      • 하나의 쓰레드에 문제가 있을 시 전체 프로세스에 악영향이 끼친다.
      • 공유 자원에 대한 동기화 문제가 존재한다.
    • Thread Safe 한 멀티 쓰레드 프로그래밍
      • 동기화 문제, 공유 자원 접근 시의 문제를 해결 하여 의도한대로 작동하도록 설계하자.
      • 임계영역에 대한 상호배제, 진행, 한정된 대기 특성을 만족시켜서 동기화를 달성한다.
      • 공유 자원 접근 시 제공된 매개 변수만을 사용하여 재진입성을 보장한다.

CS 공부OS (재정리)카테고리의 다른글

프로세스간 통신 (IPC)  (0) 2021.04.11
인터럽트, 시스템콜  (0) 2021.04.07
운영체제란?  (0) 2021.04.06
CPU 스케줄링 알고리즘  (0) 2021.04.06
운영체제 스케줄러  (0) 2021.04.06