2020-10-30 운영체제 기초(4) 스레드

스레드

  • 스레드란 CPU를 실행하는 단위이고 lightweight process라고도 부른다.

  • 프로세스 1개에 CPU 실행단위를 여러개 둔다.
  • CPU 수행을 위해서는 현재 Code의 어떤 부분을 실행하는걸 가리켜야한다. Program Counter를 통해 알 수 있다.
  • 스레드는 프로세스가 사용하고 있는 많은 자원(메모리 주소공간, 프로세스 상태, 메모리, CPU 등)들을 공유한다. 다만, Program Counter, register, stack
  • 구성
    • Program counter
    • register set
    • stack space
  • 다른 스레드들끼리 공유하는 부분(task라고 한다) : code section, data secion, OS Resources
  • 다중 스레드로 구성된 태스크 구조에선느 하나의 서버 스레드가 blocked(waiting)상태인 동안에도 동일한 태스크 내의 다른 스레드가 실행(running)되어 빠른 처리할 수 있다.
  • 동일한 일을 수행할때 다중 스레드가 협력하여 성능을 향상시킬 수 있다.
  • 병렬성을 높일 수 있다.

  • 1개의 PCB에서 stack, register부분만 스레드별로 가지고 있다.
  • 장점
    • 응답성 : 응답이 빠르다.
    • 자원공유 : CPU자원을 공유하기 때문에 효율적이다.
    • 경제성 : 프로세스를 1개 생성하면 비용이 크다. 반면 스레드를 만드는건 프로세스 생성에 비해 저렴하다. 프로세스간 Context Switchting은 비싼 반면 스레드간 Context Switchting은 저렴하다.
  • 구현방법 : 커널의 지원을 받는 커널스레드, 사용자 스레드
    • 커널스레드 : 커널이 cpu 스위칭에 대해서 알고있다.
    • 사용자스레드 : 라이브러리를 통해 지원, 프로세스안에 스레드가 여러개있는걸 운영체제가 모른다. 프로그램이 관리한다.

Reference

  • https://letsgrasp.blogspot.com/2018/12/operating-system-explain.html
  • 이미지 출처(반효경교수님 OS강의) : https://core.ewha.ac.kr/publicview/C0101020140307151724641842?vmode=f
  • https://jun-itworld.tistory.com/9
  • https://lh3.googleusercontent.com/proxy/CzJGB2SmP7Ys2zeWO-vlXe5ocXTUpFo9aQOiSG0poYROONiSBgsFqQV3BmCvX64nUKqqHmGV_nkZZ2Tak0iqunAi2zN-BDm43qJRoinmdklP605N-c4H0xI
  • https://media.geeksforgeeks.org/wp-content/uploads/20200518084828/Storage-Structure-heirarchy.png
  • https://binaryterms.com/wp-content/uploads/2019/08/Swapping.jpg
  • https://media.vlpt.us/images/dltlsgh5/post/04fb6174-7eff-409b-aa0e-9c55edf117eb/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%A8%20%EC%8B%A4%ED%96%89%20%EC%82%AC%EC%9D%B4%ED%81%B4.JPG
  • https://prepinsta.com/wp-content/uploads/2019/03/Process-address-space.png
  • https://img1.daumcdn.net/thumb/R800x0/?scode=mtistory2&fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99E85E3A5C460F1906
  • https://img1.daumcdn.net/thumb/R800x0/?scode=mtistory2&fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F2142EF505714CBD520
  • https://t1.daumcdn.net/cfile/tistory/994590345BB1B4DB2F
  • https://4.bp.blogspot.com/-5CET2xT2zII/VmWAgATBgDI/AAAAAAAAA0g/O3c3VWmCT2w/s1600/queueing%2Bdiagram.jpg
  • https://lh3.googleusercontent.com/proxy/JQDZBnOW436XWROjcoStp9fogjaCb4xNYmFaZFc7k24rAlU50bUYE0KCFE5QXycAsm61biZvb1hdmFGG_rkM3pWbXg0w4zfjdkS_6Qe5FE9mCfq3-t2QGHCyMfdc0lE0pocbNqNpSgmlr8T2yJL1HQdsVD80k9D0-6NSKA
Written on October 30, 2020