[운영체제] Chapter 3. Process(2)

2022. 12. 14. 17:16CS/운영체제

728x90

//공부 기록용 포스팅입니다. 틀린 부분이 있을 경우 댓글로 알려주시면 감사합니다! 😎

Thread, Single and Multithreaded Process, Benefits of Threads, Implemetation of Threads

 

1. Thread(스레드)

thread (or lightweight process) is a basic unit of CPU utilization 
스레드(가벼운 프로세스)는 프로세스 내부의 여러 개의 CPU 수행 단위이다.

 

  • 동일한 일을 하는 프로세스가 여러 개 있으면
    • 별도의 주소 공간이 여러 개 만들어져 메모리가 낭비됨
  • 그렇다면 같은 일을 하는 프로세스를 여러 개 띄워 놓고 싶다면?
    • 주소 공간은 1개만 띄어 놓고 각 프로세스마다 다른 부분의 코드를 실행할 수 있게 한다 : 스레드의 개념
      • 각 프로세스마다 다른 부분의 코드를 실행하려면 현재 CPU가 코드의 어느 부분을 실행하고 있는지를 알아야 한다 
        PCB에 Pogram Counter를 여러 개 두어 하나의 주소 공간으로 여러 개의 프로세스를 실행
      • 각 스레드마다 코드를 실행하다 함수 호출을 하면 리턴 등의 관련 정보가 stack에 쌓인다. 
        CPU 수행 단위가 여러 개 있게 되면 stack도 별도로 두어야 한다.
  • 프로세스 1개에 CPU 수행 단위만 여러 개 두고 있는 것을 스레드(thread)라고 한다.

1-1. 스레드의 구성: CPU 수행 관련으로 스레드가 독립적으로 가짐

  • program counter
  • register set
  • stack space - 함수 호출과 관련된 부분

→ CPU 수행 관련 정보는 독립적으로 가짐

1-2. 스레드가 동료 스레드와 공유하는 부분: task

  • code section
  • data section
  • OS resources

→ 공유할 수 있는 부분은 최대한 공유

thread가 여러 개일 때 task는 1개

1-3. lightweight process

  • 전통적인 개념) heavyweight process는 하나의 스레드를 가지고 있는 task로 볼 수 있다.
  • process를 별도로 두는 것보다 process안에 스레드를 여러 개 두는 것이 가볍기 때문에 process를 thread로 관리 ~ thread를 lightweight process라 한다.
  • CPU 수행 관련 정보만 따로 뽑아서 관리를 한다 : lightweight process

1-4. 스레드의 장점

  • 응답성(responsiveness)
    • 다중 스레드로 구성된 태스크 구조에서는 하나의 서버 스레드가 blocked 상태인 동안에도 동일한 태스크 내의 다른 스레드가 running 되어 빠른 처리를 할 수 있다.
    • 예) 웹 브라우저에서 웹 페이지를 띄우면 html 문서가 날아와 문서 안에 임베디드 된 여러 이미지를 웹 브라우저가 해석 → 웹 서버에 이미지 요청 → display
      • 웹 서버에 이미지를 요청(오래 걸리는 작업): 네트워크를 요청한 스레드만 blocked
      • 다른 스레드가 이미 읽어온 html 문서를 먼저 display
    → I/O 결과를 보고 작업하지 않고, I/O 요청을 하고 할 수 있는 작업을 먼저 하는 비동기식 입출력 작업, 스레드 환경에서 효과적으로 동작
  • 자원 공유(Resource Sharing)
    • 동일한 일을 하는 프로그램이 여러 개 있을 때 별도의 프로세스보다는 하나의 프로세스에 CPU 수행 단위를 여러 개 두게 되면
      • code, data, resource를 공유하며 자원을 효율적으로 사용할 수 있다.
  • 경제성(Economy)
    • 프로세스를 생성, 문맥 교환 오버헤드 >> 스레드를 생성, 문맥 교환 오버헤드
    • Solaris의 경우 30배 >> 5배
  • Utilization of MP Architectures
    • CPU가 여러 개 있는 상황에서 스레드를 두었을 때 각각의 스레드가 서로 다른 CPU에서 병렬적으로 일을 해서 결과를 더 빨리 얻을 수 있다.

1-5. 스레드의 구현

  • Kernel Thread: 커널의 지원을 받는 스레드
    • 스레드가 여러 개 있다는 사실을 OS 커널에서 알고 있어
      • CPU가 다른 커널로 넘어가는 것도 커널이 CPU 스케줄링하듯 넘겨줌
    • Windows 95/98/NT, Solaris, Digital UNIX, Mach
  • User Thread: 라이브러리의 지원을 받는 스레드
    • 스레드가 여러 개 있다는 사실을 OS 커널은 모르고 있다
      • 유저 프로그램이 스스로 여러 개의 스레드를 관리
    • POSIX Pthreads, Mach C-threads, Solaris threads
  • Thread가 빠르기 땜누에 real-time 목적으로 사용되는 경우도 있다.

 

[복습]

    1. 스레드: 프로세스 내부의 여러 개의 CPU 수행 단위
      • PCB에 PC와 레지스터를 여러개 두어 하나의 주소 공간으로 여러 개의 프로세스를 실행할 수 있다
    2. 스레드의 구성(CPU 수행 관련으로 스레드가 독립적으로 가짐): program counter, register set, stack sapce
    3. 스레드가 동료 스레드와 공유하는 부분(task): code section, data section, OS resources
    4. lightweight process(프로세스안에 스레드 여러 개) ↔ heavyweight process(프로세스는 하나의 스레드)
    5. 스레드의 장점
      • 응답성: 하나의 스레드가 blocked되어도 동일한 task 내의 다른 스레드가 running 되어 빠른 처리
      • 자원 공유: code, data, resource를 공유하며 자원을 효율적으로 사용
      • 경제성: 스레드를 생성하고 문맥교환하는데 드는 오버헤드가 프로세스보다 적음
      • Utilization of MP Architectures: 서로 다른 CPU에서 병렬적인 일 처리
    6. 스레드의 구현: kernel thread, user thread

 

 

 

 


이화여자대학교 반효경 교수님의 [2014년 1학기 운영체제] 강의 정리입니다.

 반효경 교수님의 [운영체제와 정보기술의 원리] 교재를 참고하였습니다. 감사합니다.

https://core.ewha.ac.kr/publicview/C0101020140321141759959993?vmode=f 

 

반효경 [운영체제] 6. Process2

설명이 없습니다.

core.ewha.ac.kr

https://core.ewha.ac.kr/publicview/C0101020140321143516139010?vmode=f 

 

반효경 [운영체제] 7. Process3

설명이 없습니다.

core.ewha.ac.kr

 

728x90