SlideShare a Scribd company logo
Thread
운영체제 시그 22-1 나영근
Thread?

   CPU 이용의 기본 단위
   Thread ID, Program Counter, Register들, Stack으로 구성


   같은 Process에 속한 다른 쓰레드와 자원 공유
       코드, 데이터 섹션, 열린 파일, 신호 등
Multi Thread?

   많은 소프트웨어 패키지들은 다중 쓰레드 이용
   하나의 Application은 몇 개의 제어 Thread를 가진 독립적인 Process로 구현
   OS 커널에서도 다수의 쓰레드가 동작
       장치 또는 인터럽트 처리 등의 특정 작업을 수행하게 함
Multi Thread Programing의 장점

   응답성(Responsiveness)
        대화형 응용을 Multi Thrad화하면 긴 작업을 수행하더라도 프로그램의 수행이 계속되는 것을 허용
         할 수 있음.
        사용자에 대한 응답성 증가
   자원 공유(Resource sharing)
        Thread는 속한 Process의 자원과 메모리를 공유
        한 응용프로그램이 같은 주소 공간 내에 여러개의 다른 작업을 하는 Thread를 가짐
   경제성(Economy)
        Process 생성을 위한 메모리와 자원 할당의 비용을 줄임
        Thread는 Process의 자원을 공유하기 때문에 추가적인 오버헤드가 적다
   다중 처리기 구조의 활용(Utilization of multiprocessor architecture)
        각각의 Thread가 다른 CPU에서 병렬 수행 가능
        Multiprocessor에서 multithreading을 하면 병렬성 증대
Multithreading Model

   다대일 모델
       많은 사용자 수준 Thread를 하나의 커널 Thread로 mapping
       Thread 관리는 사용자 공간의 Thread Library에 의해 행해짐
       단점
            한 쓰레드가 봉쇄형 시스템을 호출할 경우 전체 프로세스가 봉쇄
            한번에 하나의 Thread만이 커널에 접근
            Multi Thread가 multiprocessor에서 돌아도 병렬로 작동 불능
Multithreading Model

   일대일 모델
       각 사용자 Thread를 각각 하나의 커널 Thread로 mapping
       하나의 Thread가 봉쇄적 시스템을 호출하더라도 다른 Thread 실행 가능
       다대일에 비해 더 많은 병렬성을 제공
       Multiprocessor에서 multi Thread가 병렬로 수행되는 것을 허용


       단점
            사용자 Thread를 생성할 때 항상 커널 Thread를 생성해야함
            이로인한 오버헤드로 성능 저하
            지원되는 Thread의 개수를 제한
Multithreading Model

   다대다 모델
       여러 개의 사용자 수준 Thread를 작거나 같은 커널 Thread로 다중화
       커널 쓰레드의 수는 응용프로그램이나 하드웨어에 따라 다름
            Multiprocessor인 경우 더 많이 준다거나.

       개발자가 원하는대로 Thread생성 허용
       스케줄을 통해 커널 Thread와 연결
       봉쇄형 시스템 호출을 발생시켰을 때 커널이 다른 쓰레드의 수행을 스케줄
Multithreading Model

   다대다 모델
       여러 개의 사용자 수준 Thread를 작거나 같은 커널 Thread로 다중화
       커널 쓰레드의 수는 응용프로그램이나 하드웨어에 따라 다름
            Multiprocessor인 경우 더 많이 준다거나.

       개발자가 원하는대로 Thread생성 허용
       스케줄을 통해 커널 Thread와 연결
       봉쇄형 시스템 호출을 발생시켰을 때 커널이 다른 쓰레드의 수행을 스케줄
Thread Library

   Thread Library는 Thread를 생성/관리하기 위한 API 제공


   커널 지원 없이 사용자 공간에서만 Library 제공
       Library를 위한 모든 코드와 자료구조는 사용자 공간에만 존재
            Library 함수를 호출하는 것은 system call이 아닌 지역 함수를 호출한다

   운영체제에 의해 지원되는 커널 수준 Library
       Library를 위한 코드와 자료구조가 커널공간에 존재
            Library를 호출하는 것은 커널 system call을 하는 것
            Win32 Thread
                  Window.h를 포함애햐함
Threading issue

   Fork()/ Exec() system call
        Thread가 fork()를 호출하면 새로운 Process는 모든 Thread를 복제해야 하는가?
        응용프로그램에 따라 고를 수 있다
   Cancelellation (취소)
        Thread 취소는 Thread가 종료되기 전에 강제 종료 시키는 작업
        자료구조 갱신 도중 취소 요청이 올경우
        시스템 자원을 회수하지 못하는 문제


        비동기식 취소
             한 Thread를 강제 종료
             시스템 자원을 회수하지 못할 수 있다
        지연 취소
             종료 시점을 점검하여 강제 종료할 수 있는 시점에 종료
Threading issue

   신호 처리 ( Signal Handling)
       신호란 프로그램이 불법적인 메모리 접근이나 0으로 나누는 등의 행동 시 발생
       신호의 처리 순서
            신호는 특정 사건이 일어나면 생성
            신호는 생성되면 프로세스에 전달된다
            전달된 신호는 반드시 처리되야 한다

       신호를 전달하기 위해서는 4가지 중 하나의 방법 사용
            신호가 적용될 Thread에게 전달
            모든 Thread에 전달
            몇몇 Thread에 선택적으로 전달
            특정 Thread가 모든 신호를 전달받도록 지정
Thread pool

   Multi Thread Server는 Service할 때마다 Thread를 생성
       Thread 생성에 소요되는 시간이 길다
       무한정 Thread를 만들다 보면 자원이 고갈


   때문에 Thread pool 사용
       일정한 수의 Thread를 미리 pool로 만들어 둔다
       평소엔 기다리고 있다가 요청이 들어오면 pool에서 하나의 Thread에 할당
       Pool에 남는 Thread가 바닥나면 요청의 대기하고 있는다


   장점
       새로운 Thread를 만들어 주는 것보다 기존의 Thread를 사용하는 것이 빠름
       Thread개수에 제한을 둠으로써 많은 수의 Thread를 병렬 처리할 수 없는 상황에서 유용
Threading issue

   Thread별 데이터
       한 Process에 속한 Thread들은 그 Process의 자료를 모두 공유
       자신만 접근 가능한 자료가 필요한 경우가 있다

More Related Content

Similar to 운영체제 Sig4

서버 아키텍처 이해를 위한 프로세스와 쓰레드
서버 아키텍처 이해를 위한 프로세스와 쓰레드서버 아키텍처 이해를 위한 프로세스와 쓰레드
서버 아키텍처 이해를 위한 프로세스와 쓰레드
KwangSeob Jeong
 
쓰레드.pdf
쓰레드.pdf쓰레드.pdf
쓰레드.pdf
Seokju Hong
 
파이썬 병렬프로그래밍
파이썬 병렬프로그래밍파이썬 병렬프로그래밍
파이썬 병렬프로그래밍
Yong Joon Moon
 
Windows via C/C++ 06 스레드의 기본
Windows via C/C++ 06 스레드의 기본Windows via C/C++ 06 스레드의 기본
Windows via C/C++ 06 스레드의 기본
ssuser0c2478
 
윈도우 커널 익스플로잇
윈도우 커널 익스플로잇윈도우 커널 익스플로잇
윈도우 커널 익스플로잇
Seungyong Lee
 
OS Process, Thread, CPU Scheduling에 대해 알아봅시다.pdf
OS Process, Thread, CPU Scheduling에 대해 알아봅시다.pdfOS Process, Thread, CPU Scheduling에 대해 알아봅시다.pdf
OS Process, Thread, CPU Scheduling에 대해 알아봅시다.pdf
Ho Jeong Im
 
Hadoop Overview 1
Hadoop Overview 1Hadoop Overview 1
Hadoop Overview 1
Kay Kim
 
Scalable system design patterns
Scalable system design patternsScalable system design patterns
Scalable system design patterns
Steve Min
 
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
devCAT Studio, NEXON
 
Nodejs발표자료 - 팀 세미나용
Nodejs발표자료 - 팀 세미나용 Nodejs발표자료 - 팀 세미나용
Nodejs발표자료 - 팀 세미나용
SuHyun Jeon
 
Linux 강의자료 ed10
Linux 강의자료 ed10Linux 강의자료 ed10
Linux 강의자료 ed10
hungrok
 
More Effective Python 3st (Multitask)
More Effective Python 3st (Multitask)More Effective Python 3st (Multitask)
More Effective Python 3st (Multitask)
경섭 심
 
Hadoop Introduction (1.0)
Hadoop Introduction (1.0)Hadoop Introduction (1.0)
Hadoop Introduction (1.0)
Keeyong Han
 
Nodejs 발표자료
Nodejs 발표자료Nodejs 발표자료
Nodejs 발표자료
shanka2
 
뇌자T etc.windows multi threading programming
뇌자T   etc.windows multi threading programming뇌자T   etc.windows multi threading programming
뇌자T etc.windows multi threading programmingcancan21st
 
System Infra와 Recovery 그리고 DevOps
System Infra와 Recovery 그리고 DevOpsSystem Infra와 Recovery 그리고 DevOps
System Infra와 Recovery 그리고 DevOps
Juseok Kim
 
Warp
WarpWarp
SQL-on-Hadoop with Apache Tajo, and application case of SK Telecom
SQL-on-Hadoop with Apache Tajo,  and application case of SK TelecomSQL-on-Hadoop with Apache Tajo,  and application case of SK Telecom
SQL-on-Hadoop with Apache Tajo, and application case of SK Telecom
Gruter
 
Kubernetes
Kubernetes Kubernetes
Kubernetes
Kyung Koo Yoon
 

Similar to 운영체제 Sig4 (20)

서버 아키텍처 이해를 위한 프로세스와 쓰레드
서버 아키텍처 이해를 위한 프로세스와 쓰레드서버 아키텍처 이해를 위한 프로세스와 쓰레드
서버 아키텍처 이해를 위한 프로세스와 쓰레드
 
쓰레드.pdf
쓰레드.pdf쓰레드.pdf
쓰레드.pdf
 
파이썬 병렬프로그래밍
파이썬 병렬프로그래밍파이썬 병렬프로그래밍
파이썬 병렬프로그래밍
 
Windows via C/C++ 06 스레드의 기본
Windows via C/C++ 06 스레드의 기본Windows via C/C++ 06 스레드의 기본
Windows via C/C++ 06 스레드의 기본
 
윈도우 커널 익스플로잇
윈도우 커널 익스플로잇윈도우 커널 익스플로잇
윈도우 커널 익스플로잇
 
OS Process, Thread, CPU Scheduling에 대해 알아봅시다.pdf
OS Process, Thread, CPU Scheduling에 대해 알아봅시다.pdfOS Process, Thread, CPU Scheduling에 대해 알아봅시다.pdf
OS Process, Thread, CPU Scheduling에 대해 알아봅시다.pdf
 
Hadoop Overview 1
Hadoop Overview 1Hadoop Overview 1
Hadoop Overview 1
 
Scalable system design patterns
Scalable system design patternsScalable system design patterns
Scalable system design patterns
 
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
 
Nodejs발표자료 - 팀 세미나용
Nodejs발표자료 - 팀 세미나용 Nodejs발표자료 - 팀 세미나용
Nodejs발표자료 - 팀 세미나용
 
Linux 강의자료 ed10
Linux 강의자료 ed10Linux 강의자료 ed10
Linux 강의자료 ed10
 
More Effective Python 3st (Multitask)
More Effective Python 3st (Multitask)More Effective Python 3st (Multitask)
More Effective Python 3st (Multitask)
 
Hadoop Introduction (1.0)
Hadoop Introduction (1.0)Hadoop Introduction (1.0)
Hadoop Introduction (1.0)
 
Nodejs 발표자료
Nodejs 발표자료Nodejs 발표자료
Nodejs 발표자료
 
뇌자T etc.windows multi threading programming
뇌자T   etc.windows multi threading programming뇌자T   etc.windows multi threading programming
뇌자T etc.windows multi threading programming
 
System Infra와 Recovery 그리고 DevOps
System Infra와 Recovery 그리고 DevOpsSystem Infra와 Recovery 그리고 DevOps
System Infra와 Recovery 그리고 DevOps
 
Warp
WarpWarp
Warp
 
Node week1
Node week1Node week1
Node week1
 
SQL-on-Hadoop with Apache Tajo, and application case of SK Telecom
SQL-on-Hadoop with Apache Tajo,  and application case of SK TelecomSQL-on-Hadoop with Apache Tajo,  and application case of SK Telecom
SQL-on-Hadoop with Apache Tajo, and application case of SK Telecom
 
Kubernetes
Kubernetes Kubernetes
Kubernetes
 

운영체제 Sig4

  • 2. Thread?  CPU 이용의 기본 단위  Thread ID, Program Counter, Register들, Stack으로 구성  같은 Process에 속한 다른 쓰레드와 자원 공유  코드, 데이터 섹션, 열린 파일, 신호 등
  • 3. Multi Thread?  많은 소프트웨어 패키지들은 다중 쓰레드 이용  하나의 Application은 몇 개의 제어 Thread를 가진 독립적인 Process로 구현  OS 커널에서도 다수의 쓰레드가 동작  장치 또는 인터럽트 처리 등의 특정 작업을 수행하게 함
  • 4. Multi Thread Programing의 장점  응답성(Responsiveness)  대화형 응용을 Multi Thrad화하면 긴 작업을 수행하더라도 프로그램의 수행이 계속되는 것을 허용 할 수 있음.  사용자에 대한 응답성 증가  자원 공유(Resource sharing)  Thread는 속한 Process의 자원과 메모리를 공유  한 응용프로그램이 같은 주소 공간 내에 여러개의 다른 작업을 하는 Thread를 가짐  경제성(Economy)  Process 생성을 위한 메모리와 자원 할당의 비용을 줄임  Thread는 Process의 자원을 공유하기 때문에 추가적인 오버헤드가 적다  다중 처리기 구조의 활용(Utilization of multiprocessor architecture)  각각의 Thread가 다른 CPU에서 병렬 수행 가능  Multiprocessor에서 multithreading을 하면 병렬성 증대
  • 5. Multithreading Model  다대일 모델  많은 사용자 수준 Thread를 하나의 커널 Thread로 mapping  Thread 관리는 사용자 공간의 Thread Library에 의해 행해짐  단점  한 쓰레드가 봉쇄형 시스템을 호출할 경우 전체 프로세스가 봉쇄  한번에 하나의 Thread만이 커널에 접근  Multi Thread가 multiprocessor에서 돌아도 병렬로 작동 불능
  • 6. Multithreading Model  일대일 모델  각 사용자 Thread를 각각 하나의 커널 Thread로 mapping  하나의 Thread가 봉쇄적 시스템을 호출하더라도 다른 Thread 실행 가능  다대일에 비해 더 많은 병렬성을 제공  Multiprocessor에서 multi Thread가 병렬로 수행되는 것을 허용  단점  사용자 Thread를 생성할 때 항상 커널 Thread를 생성해야함  이로인한 오버헤드로 성능 저하  지원되는 Thread의 개수를 제한
  • 7. Multithreading Model  다대다 모델  여러 개의 사용자 수준 Thread를 작거나 같은 커널 Thread로 다중화  커널 쓰레드의 수는 응용프로그램이나 하드웨어에 따라 다름  Multiprocessor인 경우 더 많이 준다거나.  개발자가 원하는대로 Thread생성 허용  스케줄을 통해 커널 Thread와 연결  봉쇄형 시스템 호출을 발생시켰을 때 커널이 다른 쓰레드의 수행을 스케줄
  • 8. Multithreading Model  다대다 모델  여러 개의 사용자 수준 Thread를 작거나 같은 커널 Thread로 다중화  커널 쓰레드의 수는 응용프로그램이나 하드웨어에 따라 다름  Multiprocessor인 경우 더 많이 준다거나.  개발자가 원하는대로 Thread생성 허용  스케줄을 통해 커널 Thread와 연결  봉쇄형 시스템 호출을 발생시켰을 때 커널이 다른 쓰레드의 수행을 스케줄
  • 9. Thread Library  Thread Library는 Thread를 생성/관리하기 위한 API 제공  커널 지원 없이 사용자 공간에서만 Library 제공  Library를 위한 모든 코드와 자료구조는 사용자 공간에만 존재  Library 함수를 호출하는 것은 system call이 아닌 지역 함수를 호출한다  운영체제에 의해 지원되는 커널 수준 Library  Library를 위한 코드와 자료구조가 커널공간에 존재  Library를 호출하는 것은 커널 system call을 하는 것  Win32 Thread  Window.h를 포함애햐함
  • 10. Threading issue  Fork()/ Exec() system call  Thread가 fork()를 호출하면 새로운 Process는 모든 Thread를 복제해야 하는가?  응용프로그램에 따라 고를 수 있다  Cancelellation (취소)  Thread 취소는 Thread가 종료되기 전에 강제 종료 시키는 작업  자료구조 갱신 도중 취소 요청이 올경우  시스템 자원을 회수하지 못하는 문제  비동기식 취소  한 Thread를 강제 종료  시스템 자원을 회수하지 못할 수 있다  지연 취소  종료 시점을 점검하여 강제 종료할 수 있는 시점에 종료
  • 11. Threading issue  신호 처리 ( Signal Handling)  신호란 프로그램이 불법적인 메모리 접근이나 0으로 나누는 등의 행동 시 발생  신호의 처리 순서  신호는 특정 사건이 일어나면 생성  신호는 생성되면 프로세스에 전달된다  전달된 신호는 반드시 처리되야 한다  신호를 전달하기 위해서는 4가지 중 하나의 방법 사용  신호가 적용될 Thread에게 전달  모든 Thread에 전달  몇몇 Thread에 선택적으로 전달  특정 Thread가 모든 신호를 전달받도록 지정
  • 12. Thread pool  Multi Thread Server는 Service할 때마다 Thread를 생성  Thread 생성에 소요되는 시간이 길다  무한정 Thread를 만들다 보면 자원이 고갈  때문에 Thread pool 사용  일정한 수의 Thread를 미리 pool로 만들어 둔다  평소엔 기다리고 있다가 요청이 들어오면 pool에서 하나의 Thread에 할당  Pool에 남는 Thread가 바닥나면 요청의 대기하고 있는다  장점  새로운 Thread를 만들어 주는 것보다 기존의 Thread를 사용하는 것이 빠름  Thread개수에 제한을 둠으로써 많은 수의 Thread를 병렬 처리할 수 없는 상황에서 유용
  • 13. Threading issue  Thread별 데이터  한 Process에 속한 Thread들은 그 Process의 자료를 모두 공유  자신만 접근 가능한 자료가 필요한 경우가 있다