본문 바로가기

Programming/Operating System

[OS] Process VS Thread

[OS] Process VS Thread


프로세스(Process)


  1. 운영체제(OS)로부터 자원을 할당 받는 작업의 단위
  2. Code, Data, Stack, Heap의 구조로 되어있는 독립된 메모리 영역을 할당 받음
  3. 리소스(Resource)와 쓰레드(Thread)로 구성
  4. 모든 프로세스는 하나 이상의 쓰레드(메인 쓰레드)를 가지고 있음
  5. 프로세스 상태
    1. 생성(Create) : 프로세스가 생성되는 중
    2. 실행(Running) : 프로세스가 CPU를 차지하여 명령어들이 실행되고 있음
    3. 준비(Ready) : 프로세스가 CPU를 사용하고 있지는 않지만 언제든지 사용할 수 있는 상태, CPU가 할당되기를 기다리고 있음 일반적으로 준비 상태의 프로세스 중 우선순우가 높은 프로세스가 CPU를 할당 받음
    4. 대기(Waiting) : 프로세스가 입출력 완료, 시그널 수신 등 어떤 사건을 기다리고 있는 상태
    5. 종료(Terminated) : 프로세스의 실행 종료
  6. 멀티 프로세스(프로세스가 독립적으로 처리해야 할 작업의 수만큼 프로세스를 만드는 방법)의 단점
    : 프로세스가 많이 생성 될수록 메모리 사용량이 증가하고 스케줄링 횟수도 많아져 프로그램 성능이 떨어짐. 프로세스들 사이에 데이터를 공유하기 불편함. 공유하려면 운영체제의 도움을 받아 프로세스간 통신(IPC: Inter Process Communication)을 해야한다.Code 영역(Text 영역) : 프로그램의 기계어 명령이 들어있음, 읽기만 가능메모리의 낮은 주소Data 영역 : 초기화된 전역 변수와 정적 변수가 저장됨
    • BSS(Block started symbol Segment) : 초기화 되지 않은 전역 변수와 정적 변수가 저장됨


Thread(스레드)


  1. 프로세스가 할당받은 자원을 이용하는 실행의 단위
  2. 프로세스 내의 주소 공간이나 자원들(Code, Data, Heap)을 대부분 공유하면서 실행, 별도의 Stack만 가짐
  3. Context Switching시 Stack영역만 switching하므로 프로세스 switching보다 빠름
  4. 쓰레드 간 자원 공유가 가능하여 편리하지만 자원 동기화의 문제가 있음
  5. 시스템의 자원 소모가 줄어듬
  6. 프로세스간 통신 방법에 비해 쓰레드 간의 통신 방법이 훨씬 간단함
  7. 프로그램 디버깅이 어려움(여러 개의 쓰레드를 이용할 때 주의 깊게 설계해야함. 공유자원이 충돌날 수 있고, 동기화 문제도 발생할 수 있음)
  8. 단일 프로세서 시스템에서는 효과를 기대하기 어려움


사용자 수준의 쓰레드(User Level Thread) [쓰레드를 생성해 주는 대상이 유저 레벨일 경우]


커널에 의존적이지 않은 형태로 쓰레드의 기능을 제공하는 라이브러리 활용, 유저 영역에서 쓰레드 관리가 이루어짐

  • 장점
    커널의 쓰레드 존재를 모르기 때문에, 유저 모드 -> 커널 모드 전환이 필요 없음.(성능이 좋음)
  • 단점
    운영체제는 쓰레드의 존재를 모름(프로세스 존재만 앎), 프로세스 내의 쓰레드의 문제가 생기지 않게 해야하기 때문에 프로그래밍이 어렵고 커널 레벨 쓰레드에 비해 결과 예측이 어려움

커널 수준의 쓰레드(Kernel Level Thread) [쓰레드를 생성해 주는 대상이 커널 레벨일 경우]


운영체제가 제공하는 시스템 함수 호출을 통해서 쓰레드 생성을 요구해야 함, 운영체제가 해당 쓰레드의 생성 및 관리를 함, 쓰레드 생성 및 스케줄링하는 주체가 커널임

  • 장점
    : 커널에서 직접 제공하기 때문에 안정성과 다양한 기능성을 제공
  • 단점
    : 커널에서 제공해 주는 기능이기 때문에 유저 모드에서 커널 모드의 전환이 빈번하게 일어남(성능 저하로 이어짐)

Reference


[운영체제] 프로세스와 쓰레드의 차이


'Programming > Operating System' 카테고리의 다른 글

[OS] DeadLock  (3) 2018.11.14