프로세스 - Thread

Single Ko·2023년 4월 25일
0

operating system

목록 보기
5/13

Thread

  • "프로세스에서 CPU 수행에 대한 부분"(스레드)만 별도로 가지고 있다
  • 동일한 프로그램을 여러개 띄우더라도 한개의 프로세스가 만들어진다.
  • PCB에서 다른 부분은 share를 하고 PC의 값만 스레드 별로 가지고 있다.
  • 동일한 프로세스 안에서 Thread1 → Thread2로 넘어가는 것은 Context Switch가 필요하지 않다.(효율적)

Thread의 구성

"A thread (or lightweight process) 는 CPU 수행의 기본 단위"

✨ Thread의 구성
✓ program counter
✓ register set
✓ stack space

✨ Thread가 동료 thread와 공유하는 부분(=task)
✓ code section
✓ data section
✓ OS resources

  • 전통적인 개념의 heavyweight process는 하나의 thread를 가지고
    있는 task로 볼 수 있다

스레드를 활용하면 얻는 장점

✨ 응답성(Responsiveness)

  • 다중 스레드로 구성된 태스크 구조에서는 하나의 서버 스레드가 blocked (waiting) 상태인 동안에도 동일한 태스크 내의 다른 스레드가 실행(running)되어 빠른 처리를 할 수 있다.

✨ 리소스 공유(Resource Sharing)

  • 동일한 일을 수행하는 다중 스레드가 협력하여 높은 처리율(throughput)과 성능 향상을 얻을 수 있다

✨ 경제적(Economy)

  • creating(Process를 만드는 것과 Thread를 만드는 것),
  • CPU switching thread (rather than a process)
  • Solaris OS의 경우 위 두 가지 overhead가 각각 30배, 5배

✨ 멀티프로세서 아키텍처 활용

  • 다른 프로세서에서 각각의 스레드가 병렬적으로 사용

스레드 안전(Thread-Safety)

✨ 스레드 안전(Thread-Satety)

  • 멀티 스레드 프로그래밍에서 어떤 함수나 변수, 혹은 객체가 여러 스레드로부터 동시에 접근이 이루어져도 프로그램의 실행에 문제가 없는 것을 말한다.

  • 하나의 함수가 한 스레드로부터 호출되어 실행 중일 때, 다른 스레드가 그 함수를 호출하여 동시에 함께 실행되더라도 각 스레드에서의 함수의 수행 결과가 옳바르게 나오는 것을 말한다.

  • Thread-sate하다라는 의미는 두 개 이상의 스레드가 race condition에 들어가거나 같은 객체에 동시에 접근해도 연산 결과는 정합성이 보장될 수 있게 메모리 가시성이 확보된 상태이다.

스레드를 구현하는 방법

Kernel Threads

  • 운영체제가 스레드가 여러 개인 것을 알고 있어서 스레드간의 CPU 교환을 ‘커널이’ CPU 스케줄링을 하듯이 관리한다.

User Threads

  • 운영체제는 스레드가 여러 개인 것을 모르는 상태에서 사용자 프로그램이 라이브러리의 지원을 받아 스스로 여러 개의 스레드들을 관리한다.
profile
공부 정리 블로그

0개의 댓글