CS OS

[OS] 스레드,Thread

운영체제

Posted by kyoungIn on March 21, 2019

Process와 Thread

process

  • 메모리에 올라가 실행중인 프로그램
  • 프로세스는 각각 독립된 메모리 영역(Code, Data, Stack, Heap의 구조)을 할당받는다.
  • 최소 1개의 스레드를 가지고 있다.(메인 스레드 )

thread

  • 프로세스가 할당받은 자원을 이용하는 실행의 단위
  • 프로세스 내에서 실행 중인 여러 흐름
  • 프로세스 내에서 stack만 따로 할당받고, code,data,heap영역은 공유한다.

프로세스는 여러개의 쓰레드를 가질 수 있음 -> 멀티 스레드

스레드의 장점

  • 시스템의 throughput이 향상된다.
  • 시스템의 자원 소모가 줄어든다
  • 프로그램의 응답 시간이 단축된다.
  • 프로세스 간 통신 방법에 비해 스레드 간의 통신 방법이 훨씬 간단하다.

스레드의 단점

  • 여러 개의 스레드를 이용하는 프로그램을 작성하는 경우에는 주의 깊게 설계해야 한다. 미묘한 시간 차나 잘못된 변수를 공유함으로써 오류가 발생할수 있다.
  • 프로그램 디버깅이 어렵다.
  • 단일 프로세서 시스템에서는 효과를 기대하기 어렵다.

참고

https://gmlwjd9405.github.io/2018/09/14/process-vs-thread.html https://jaybdev.net/2017/06/05/Java-3/