sw사관학교정글/OS 개념정리

[week08] KOCW 운영체제(반효경교수님) - Process 2

D cron 2021. 12. 30. 17:06

Process 2

Thread

A thread(or lightweight process) is a basic unit of CPU utilization

즉, CPU를 수행하는 단위이다

thread의 구성

  • program counter
  • register set
    • 쓰레드마다 PC(Program Counter)의 값, register의 값이 있어야 문맥을 알 수 있다.
  • stack space
    • thread가 함수를 사용하면 함수를 호출하고 return 하는 정보를 stack에 쌓아야 하기 때문에 각 쓰레드마다 stack이 있다.

thread가 동료 thread와 공유하는 부분(task라고도 부름)

  • code section
  • data section
  • OS resource

Thread 장점

Responsiveness(응답성)

  • ex) multi-threaded web: 만약 thread가 blocked되면(network) 다른 thread가 이미지라도 먼저 띄우면 사용자 입장에서 덜 답답하다.

Resource Sharing(자원 공유)

  • code, data, 각종 자원 공유 → 효율적으로 자원 사용

Economy(경제성)

  • 프로세스를 만드는 것은 overhead 크다.
    • thread를 만드는 것은 비용이 덜 든다.
  • A프로세스에서 B프로세스로 문맥전환(context switching)을 하는것은 overhead가 크다.
    • thread간의 문맥전환은 비용이 덜 든다.

Utilization of MP Architectures

  • MP : Multiprocessor
  • thread를 사용하면 병렬성을 높일 수 있다.
    • CPU가 여러개 달린 컴퓨터에서만 얻을 수 있는 장점

Implementation of Threads(쓰레드의 구현)

Kernel Threads

  • thread가 여러개라는 사실을 커널(운영체제)이 알고 있다.
    • 따라서 thread A에서 thread B에서 넘어가는 것도 커널이 CPU scheduling을 하듯이 관리한다.

User Threads

  • library를 통해 지원됨
  • process안에 thread가 여러개라는 사실을 운영체제는 모른다.
  • 커널이 볼 때는 일반적인 process로 보인다.
  • 프로세스 본인이 CPU 수행단위를 여러개 두면서 관리함