개발

[운영체제] Process(프로세스) - 2 (Thread, Single and Multithreaded Processes, Benefits of Threads (쓰레드의 장점), Implementation of Threads (쓰레드의 구현 방법))

김나나_ 2024. 7. 5. 17:29

📌Thread (쓰레드)

  • A Thread (or lightweight process) is a basic unit of CPU utilization
    : 쓰레드는 프로세스의 실행 주체로, 프로세스가 할당받은 자원을 바탕으로 실행하는 실행 단위 이다.
  • Thread 의 구성(쓰레드가 독립적으로 가지고 있는 것)
    1. program counter
    2. register set
    3. stack space
  • Thread가 동료 thread와 공유하는 부분(= task)
    1. code section
    2. data section
    3. OS resources (각종 자원들)
  • 전통적인 개념의 heavyweight process는 하나의 thread를 가지고 있는 task로 볼 수 있다.

 

- 쓰레드는 프로세스 내부에 CPU 수행 단위가 여러 개 있는 경우이다.

- program counter: 메모리의 어느 부분을 실행하고 있는 지 가리키는 레지스터

prgram counter: 다음에 실행할 명령어의 주소를 기억하고 있는 중앙처리장치(CPU)의 레지스터 중 하나이다. 메모리에 있는 명령어들을 주기에 따라 순차적으로 실행될 수 있게 한다. (네이버 지식백과) 

 

- 프로세스 하나에서 공유할 수 있는 것은 최대한 공유한다. 별도로 가지고 있는 것은 PC, 레지스터, 스택 (CPU 수행과 관련 된 것)

 

 

  • 다중 스레드로 구성된 태스크 구조에서는 하나의 서버 스레드가 blocked (wating) 상태인 동안에도 동일한 태스크 내의 다른 스레드가 실행(running)되어 빠른 처리를 할 수 있다. => 빠른 응답성
  • 동일한 일을 수행하는 다중 스레드가 협력하여 높은 처리율(throughput)과 성능 향상을 얻을 수 있다. (자원 절약)
  • 스레드를 사용하면 병렬성을 높일 수 있다. (CPU 가 여러 개 달린 경우에만 해당됨)

- 네트워크를 통해 웹페이지를 읽어 오는 작업도 I/O 작업이다. 불러오는 동안은 웹브라우저는 blocked 상태. 웹페이지를 다 읽어올 때까지 화면에 아무것도 불러오지 않으면 사용자 입장에선 답답하다. 이 때 또 다른 스레드가 이미 읽어온 텍스트라도 사용자 화면에 노출 시키면 좋다. (다른 스레드는 이미지 등 다른 것을 불러온다)

- 같은 일을 하는 프로세스를 여러 가지 만들게 되면 메모리를 많이 차지 하게 된다. (메모리 낭비)

 

 

 

- 프로세스 하나당 PCB 한 개

 

 

📌Single and Multithreaded Processes

 

 

📌 Benefits of Threads (쓰레드의 장점)

  1. Presponsiveness (응답성) - 빠름!
    • ex) multi-threaded Web - if one thread is blocked (eg network), another thread continues (eg display)
  2. Resource Sharing
    • n threads can share binary code, data, resource of the process
  3. Economy
    • creating & CPU switching thread (rather than a process)
    • Solaris의 경우 위 두 가지 overhead가 각각 30배, 5배
  4. Utilization of MP Architectures (MP: MutlProcessor)
    • each thread may be running in parallel on a different processor

 

- 프로세스 하나를 만드는 것은 오버헤드가 크지만 프로세스 하나에 쓰레드 하나를 추가하는 것은 오버헤드 그렇게 크지 않다

- 문맥교환도 오버헤드가 크다

- 쓰레드 간에 CPU 교환 되는 것은 오버헤드가 크지 않음

- 1,2,3 번은 CPU 가 하나있는 상황에서도 적용 가능, 4번은 CPU가 여러 개인 경우에 적용 가능하다.

 

📌 Implementation of Threads (쓰레드의 구현 방법)

  • Some are supported by kernel => Kernel Threads
    • Windows 95/98/NT
    • Solaris
    • Digital UNIX, Mach
  • Others are supported by library => User Threads
    • POSIX Pthreads
    • Mach C-threads
    • Solaris threds
  • Some are real-time threads

- 자세히 설명은 X, 가볍게 넘기기

- Kernel Threads : 쓰레드가 여러 개 있다는 사실을 커널이 알고 있음

- User Threads: 라이브러리를 통해 지원된다. 쓰레드가 여러 개 있다는 사실을 커널이 모름. 사용자 수준에서 쓰레드를 구현

 

코어, 쓰레드를 쉽게 이해 할 수 있는 유튜브 강의:
https://www.youtube.com/watch?v=_dhLLWJNhwY

 

참고 강의:

http://www.kocw.net/home/search/kemView.do?kemId=1046323

 

운영체제

운영체제는 컴퓨터 하드웨어 바로 위에 설치되는 소프트웨어 계층으로서 모든 컴퓨터 시스템의 필수적인 부분이다. 본 강좌에서는 이와 같은 운영체제의 개념과 역할, 운영체제를 구성하는 각

www.kocw.net

이화여자대학교 반효경 교수님의 운영체제 강의