컴퓨터공학/운영체제

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

주정용 2021. 6. 18. 22:01
728x90

소개

  • 스레드
    • 프로세스 내부의 흐름
    • 공유자원(code, data, heap)과 개별자원(stack)이 있음
    • TCB에 상태정보 저장
  • 프로세스
    • 프로그램
    • 각각 독립된 메모리 영역이 있음(code, data, stack, heap)
    • 서로 간 메모리 영역을 침범할 수 없음
    • 프로세스 당 최소 1개의 스레드가 있음
    • PCB에 상태정보 저장

멀티 프로세싱

  • CPU가 여러 개가 존재하여 1개 이상의 프로세스를 동시에 처리하는 것입니다.(병행성)
  • 메모리 침범 문제가 OS 차원에서 해결되어 메모리의 독립성이 보장됩니다.
  • 각 프로세스가 메모리 상에 독립적인 영역을 소유하여 작업량이 많을수록 오버헤드가 발생합니다.
  • Context Switching으로 인하여 성능 저하가 발생합니다.

멀티 스레딩

  • 1개의 프로그램에서 여러 스레드가 각각 작업을 처리합니다.
  • 스택 이외의 메모리 영역을 공유하기 때문에 시간과 자원이 프로세스에 비해서 절약됩니다.
  • 공유 메모리에서 전역 변수 등 데이터를 공유할 수 있습니다.
  • 공유 메모리 상에 데이터 무결성이 깨질 수 있습니다.
  • 하나의 스레드가 데이터를 오염시키면 모든 스레드가 작동 불능 상태가 됩니다.
  • 교착 상태를 예방하기 위해서 상호배제 방지, 점유와 대기 방지, 비선점 방지, 순환 대기 방지를 할 수 있습니다.

'컴퓨터공학 > 운영체제' 카테고리의 다른 글

동시성(Concurrency)과 병렬성(Parallelism)  (0) 2021.06.20