Microsoft PowerPoint - o4.pptx

Similar documents
Figure 5.01

6주차.key

Microsoft PowerPoint OS-Thread

Microsoft PowerPoint os5.ppt

제11장 프로세스와 쓰레드

Microsoft PowerPoint os5.ppt [호환 모드]

Microsoft PowerPoint os4.ppt [호환 모드]

침입방지솔루션도입검토보고서

Microsoft PowerPoint - StallingsOS6e-Chap04.pptx

<C0CCBCBCBFB52DC1A4B4EBBFF82DBCAEBBE7B3EDB9AE2D D382E687770>

Microsoft PowerPoint - 11_Thread

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

PCServerMgmt7

1

임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과

JVM 메모리구조

[Brochure] KOR_TunA

02 C h a p t e r Java

C# Programming Guide - Types

Microsoft PowerPoint APUE(Intro).ppt

untitled

PowerPoint 프레젠테이션

Microsoft PowerPoint - Lecture_Note_7.ppt [Compatibility Mode]

untitled

iii. Design Tab 을 Click 하여 WindowBuilder 가자동으로생성한 GUI 프로그래밍환경을확인한다.

슬라이드 1

vm-웨어-01장

Microsoft PowerPoint - o8.pptx

2009년도 한국멀티미디어학회 춘계학술발표대회 논문집 12권1호 1. 서론 게임을 개발하는 과정에서 게임 엔진은 자동차의 엔진과 같은 역할이다. 자동차의 가치를 평가하는 요소 중에 어떤 엔진을 적용 했는가는 자동차를 평가하는데 중요하다. 게임도 게임 개발 기술 중 엔진

ESP1ºÎ-04

Chapter #01 Subject

1. 자바프로그램기초 및개발환경 2 장 & 3 장. 자바개발도구 충남대학교 컴퓨터공학과

2013년 1회 정보처리산업기사 실기.hwp

임베디드시스템설계강의자료 6 system call 1/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과

PowerPoint 프레젠테이션

Sharing Memory Between Drivers and Applications

untitled

쉽게 풀어쓴 C 프로그래밍

Microsoft Word - 3부A windows 환경 IVF + visual studio.doc

비긴쿡-자바 00앞부속


강의10

초보자를 위한 C++

슬라이드 1

슬라이드 1

example code are examined in this stage The low pressure pressurizer reactor trip module of the Plant Protection System was programmed as subject for

Something that can be seen, touched or otherwise sensed

PowerPoint 프레젠테이션

1

Interstage5 SOAP서비스 설정 가이드

Microsoft PowerPoint - o5.pptx

Microsoft PowerPoint - o5.pptx

Chap7.PDF

Microsoft PowerPoint - 알고리즘_5주차_1차시.pptx

PowerPoint 프레젠테이션

API STORE 키발급및 API 사용가이드 Document Information 문서명 : API STORE 언어별 Client 사용가이드작성자 : 작성일 : 업무영역 : 버전 : 1 st Draft. 서브시스템 : 문서번호 : 단계 : Docum

KEY 디바이스 드라이버

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

No Slide Title

1217 WebTrafMon II

Chap04(Signals and Sessions).PDF

품질검증분야 Stack 통합 Test 결과보고서 [ The Bug Genie ]

Integ

리눅스 프로세스 관리

歯J PDF

10주차.key

Microsoft PowerPoint - chap01-C언어개요.pptx

<4D F736F F D205B4354BDC9C3FEB8AEC6F7C6AE5D3131C8A35FC5ACB6F3BFECB5E520C4C4C7BBC6C320B1E2BCFA20B5BFC7E2>

Backup Exec

Special Theme _ 모바일웹과 스마트폰 본 고에서는 모바일웹에서의 단말 API인 W3C DAP (Device API and Policy) 의 표준 개발 현황에 대해서 살펴보고 관 련하여 개발 중인 사례를 통하여 이해를 돕고자 한다. 2. 웹 애플리케이션과 네이

목 차 Ⅰ. 일반사항 1 Ⅱ. 특기사항 3 Ⅲ. 물품내역 및 세부규격 8 Ⅳ. 주의사항

Alternating Sequence of CPU And I/O Bursts 6.2

vm-웨어-앞부속

PowerPoint 프레젠테이션

서현수

Here is a "PLDWorld.com"... // EXCALIBUR... // Additional Resources // µc/os-ii... Page 1 of 23 Additional Resources: µc/os-ii Author: Source: HiTEL D

Microsoft PowerPoint - additional01.ppt [호환 모드]

Analyst Briefing

< B3E2C1A632C8B8BFF6B5E531B1DE42C7FC2E687770>

Microsoft PowerPoint - 발표_090513_IBM세미나_IPTV_디디오넷_완료.ppt

Microsoft PowerPoint - CSharp-10-예외처리

Chapter ...

wp1_ hwp

Windows Embedded Compact 2013 [그림 1]은 Windows CE 로 알려진 Microsoft의 Windows Embedded Compact OS의 history를 보여주고 있다. [표 1] 은 각 Windows CE 버전들의 주요 특징들을 담고

adfasdfasfdasfasfadf

오늘날의 기업들은 24시간 365일 멈추지 않고 돌아간다. 그리고 이러한 기업들을 위해서 업무와 관련 된 중요한 문서들은 언제 어디서라도 항상 접근하여 활용이 가능해야 한다. 끊임없이 변화하는 기업들 의 경쟁 속에서 기업내의 중요 문서의 효율적인 관리와 활용 방안은 이

1. auto_ptr 다음프로그램의문제점은무엇인가? void func(void) int *p = new int; cout << " 양수입력 : "; cin >> *p; if (*p <= 0) cout << " 양수를입력해야합니다 " << endl; return; 동적할

Solaris Express Developer Edition

금오공대 컴퓨터공학전공 강의자료

PowerPoint Template

Analytics > Log & Crash Search > Unity ios SDK [Deprecated] Log & Crash Unity ios SDK. TOAST SDK. Log & Crash Unity SDK Log & Crash Search. Log & Cras

Microsoft PowerPoint - Java7.pptx

C++ Programming

Deok9_Exploit Technique

SQL Developer Connect to TimesTen 유니원아이앤씨 DB 기술지원팀 2010 년 07 월 28 일 문서정보 프로젝트명 SQL Developer Connect to TimesTen 서브시스템명 버전 1.0 문서명 작성일 작성자

The Self-Managing Database : Automatic Health Monitoring and Alerting

MPLAB C18 C

Microsoft PowerPoint - 2.Catalyst Switch Intrastructure Protection_이충용_V1 0.ppt [호환 모드]


Transcription:

목표 쓰레드 (thread) 개념소개 Thread API Multithreaded 프로그래밍관련이슈 4 장. 쓰레드 2 4.1 개요 쓰레드 쓰레드 (Thread ) CPU 이용의기본실행단위 단일쓰레드 (Single threaded) Processes 전통적인프로세스 한개의실행단위로구성 다중쓰레드 (Multithreaded) Process 여러개의실행쓰레드를갖는프로세스 한프로세스가동시에하나이상의작업수행가능 전통적인프로세스의확장 process (single threaded) multithreaded process Thread 사용자원 같은프로세서에속한다른 thread 들과 code, data, OS 자원 ( 예 : open file, signal) 들을공유함 stack, CPU register 저장공간은 thread 전용공간사용 Thread Control Block (TCB) 쓰레드에대한정보를보관 ( 프로세스의 PCB 와유사 ) thread ID thread 실행상태 program counter, register set thread context stack thread specific 메모리공간 (static 메모리 ) threads 3 4

단일및다중쓰레드프로세스 중량프로세스와경량프로세스 share separate traditional process heavy-weight process thread light-weight process 5 thread 생성에필요한자원이 process 생성에필요한자원보다작다 경량 6 동기 장점 (Benefits) 단일응용프로그램이여러개의작업을동시에실행할필요가있음 word processor: 화면출력 + 키보드입력 + 스펠링검사 web browser: 화면출력 + 네트워크에서데이터수신 web server: 여러개 ( 수천개도가능 ) 의 client 의요청처리 OS kernel: 장치관리, 인터럽트처리등의여러작업 해결책 다중프로세스 (multiple processes) 프로세스생성오버헤드 다중쓰레드프로세스 쓰레드생성에필요한자원이적어서, 효율적 응답성 (Responsiveness) 프로그램의일부가 block 되거나, 긴작업을수행하여도, 대화형 (interactive) 작업의계속진행을허용 사용자에대한응답성증가 자원공유 (Resource Sharing) 기본적으로프로세스의메모리와자원을공유함 같은주소공간에서여러개의다른작업을수행하는 thread 허용 커널서비스호출없이 thread 간에통신가능 경제성 (Economy) thread 생성, 종료, context switch 에소요되는오버헤드가 process 에비해서적음 자원, 시간절약 ( 예 ) Solaris : 생성 30 배빠름, context switching 5 배빠름 규모확장성 (Scalability), 적응성 다중프로세서 ( 멀티코어 ) 구조에서 thread 들을병렬처리가능 multithreaded server 7 8

4.2 멀티코어프로그래밍 단일코어시스템에서의병행 (concurrent) 실행 멀티코어시스템에서의병렬 (parallel) 실행 병렬 (Parallel) 과병행 (Concurrency) 병렬실행과병행실행의구분 병렬시스템 (parallel system) 은동시에 1 개이상의작업수행 병행시스템 (concurrent system) 은 1 개이상의 task 를지원하여모든작업이진행되게함 Amdahl s Law N 개의프로세서를사용하여얻을수있는가능한성능이득 S : 순차 ( 비병렬 ) 실행요소비율 1-S : 병렬실행요소비율 N : 프로세서개수 N 이면, speedup 1/S ( 예 ) S=0.25 이면최대 4배의성능향상이가능 병렬실행 (parallelism) 의유형 data parallel 데이터의부분집합에대해서동일연산수행 task parallel 각프로세서마다고유연산수행 대부분두병렬실행방법이혼용된다. 9 10 4.3 다중쓰레드모델 사용자쓰레드와커널쓰레드 User threads : 커널지원없이사용자수준 ( 커널위 ) 에서 thread library 에의해서지원됨 Kernel threads : OS 커널에서직접지원되고관리됨. 모든현대운영체제는 kernel threads 를지원함 Windows, Solaris, Linux, Mac OS X 사용자프로그램의쓰레드와커널쓰레드간에연관관계가존재 Many-to-One 모델 One-to-One 모델 Many-to-Many 모델 11 Many-to-One 모델 다수의 user-level thread가한개의kernel thread (process) 에연관 thread 스케줄링과동기화가사용자공간의 thread library에서수행 장점 context 스위칭과동기화 overhead가작아서효율적 user process 단점 한 thread가 blocking system call을호출하여 block되면전체 process가 block됨 커널이 user-level thread의존재를알지못함 Multiprocessor 시스템에서 thread들의병렬실행불가 예 : Solaris Green Threads process GNU Portable Thread 12

One-to-One 모델 Many-to-Many 모델 각 user-level thread 가한개의 kernel thread 에연관 장점 : 더많은병행실행, 병렬실행 (multiprocessor) 한 thread 가 blocking system call 을호출하여 block 되면커널은같은 process 의다른 thread 로스케줄링 단점 : 쓰레드생성및 context 스위칭오버헤드 커널시스템호출을사용하여커널쓰레드생성해야함 커널에서 thread context switching 이이루어짐 예 최대 thread 수에제한이있음 Windows Linux Solaris 9 이후버전 user process 다수의 user-level thread 가다수의 kernel thread 에연관 kernel thread 의수는 user-level thread 의수와작거나같음 kernel thread 들을 user-level thread 들이 multiplex 하여사용 장점 kernel thread 개수는응용프로그램이나 machine 에따라서결정됨 one-to-one 모델과같은병행 / 병렬성 필요한만큼의 kernel thread 와연관되는경우 blocking system call 을호출하여 block 되었을때에다른 thread 를스케줄 user-level thread 개수보다적은 kernel thread 를사용할수있어서 kernel thread 수의제한에영향없음 user process multiplexing 13 14 세가지 thread 구현모델 One-to-One 모델 Two-level 모델 Many-to-One 모델 Many-to-Many 모델 many-to-many 모델의변형모델 일부 user-level thread 에대해서 one-to-one 연관허용 하나의 user-level thread 가하나의 kernel thread 에만연관될수있음 예 : IRIX, HP-UX, Tru64 UNIX, Solaris 8 and earlier user process bound multiplexing 15 16

Solaris 에서의 Many-to-Many 모델 (Two-level 모델 ) 4.4 Thread 라이브러리 LWP(lightweight process) 가 user thread 와 kernel thread 간의중개역할수행 user threads are mapped into LWPs Thread 라이브러리 thread 를생성하고관리하기위한 API 제공 thread 라이브러리구현 user-level library : 완전히 user space 에서구현 library 함수호출은 user space 에서의함수호출로이어짐 kernel-level library : library의코드와데이터가 kernel space에존재 library 함수호출은커널에대한 system call 호출로이어짐 주로사용되는 3가지 Thread libraries 1. POSIX Pthreads: user- or kernel-level library 2. Windows thread: kernel-level library 3. Java Thread: Java thread API 호스트시스템에서사용가능한 thread library로구현 17 18 Pthreads Pthreads API 를사용한 Multithreaded C program Thread 생성및동기화를위한 POSIX 표준 API (IEEE 1003.1c) thread library 의동작에대한명세 (specification) 구현방법을명시한것은아님 UNIX 계열 OS 에서일반적으로제공됨 (Solaris, Linux, Mac OS X) Pthread library 함수 pthread_create() - thread 생성 pthread_join() thread 종료를기다림 pthread_exit() thread 종료 pthread_attr_init() thread attribute 를 default 값으로초기화 19 20

Windows Threads Windows Threads ( 계속 ) CreateThread() thread 생성 WaitForSingleObject() 한 thread 종료기다림 WaitForMultipleObjects() - 여러 thread 종료기다림 Example code 21 22 Java Threads Extending the Thread Class Java threads 운영체제가아닌 Java 언어수준에서지원하고 JVM 이관리함 main() method 만으로구성된 Java program 은 JVM 에서단일 thread 로실행됨 Thread 생성방법 1. Extending Thread class ( 파생클래스생성 ) 2. Implementing the Runnable interface ( 인터페이스구현 ) public interface Runnable { public abstract void run(); } Thread s start() method 23 24

Implementing the Runnable Interface Joining Threads Thread thrd = new Thread(new Worker2()) public interface Runnable { public abstract void run(); } Thread s join() method 25 26 4.5 묵시적쓰레딩 Thread Pools 묵시적쓰레딩 (Implicit Threading) Thread 생성과관리를응용프로그램개발자가아닌 compiler 와 runtime library 에게넘겨주는것 멀티코어병렬처리를사용하는프로그램설계에사용 컴파일러에서멀티쓰레딩지원 Open MP GCD (Grand Central Dispatch) 멀티쓰레딩관리방법 Thread Pool Multithreaded server 에서의잠재적문제점 thread 생성오버헤드 : 요청마다 thread 를생성하는데시간이소요됨 thread 수가증가에따른자원고갈가능성 thread 수에제한이필요 해결책 Thread pool 프로세스를시작할때에일정한수의 thread 들을 thread pool 에미리생성하여대기함 요청을받을때마다 pool 에있는한 thread 를깨워서사용 장점 빠른속도 - 새 thread 생성소요시간보다기존 thread 로서비스하는것이더빠름 동시존재 thread 수제한 pool 의크기 task 생성방법을 task 에서분리하면 task 실행을다른방식으로할수있음 주기적실행, 일정시간후실행등 27 28

OpenMP GCD OpenMP (Open Multi-Processing) C, C++, Fortran 컴파일러의 directive 와 API 로 multithreaded 프로그래밍지원. 공유메모리환경에서의병렬프로그래밍지원 GCD (Grand Central Dispatch) Apple Mac OS X, ios 운영체제에서지원 C/C++ 언어의확장, API, runtime library로제공 병렬섹션을구분하여쓰레딩관리지원 블록표시 ^{ } ˆ{ printf("i am a block"); } 블록들은 dispatch queue 에넣고, queue 에서제거될때에 thread pool 에서가용 thread 에선택하여할당함 코어개수의쓰레드생성 29 30 4.6 쓰레드관련이슈 UNIX 에서의 Signal handling fork(), exec() 시스템호출 thread 에서 fork() 를호출할때의동작은? 두가지 fork() 구현방법 process 의모든 thread 들을복제 : fork no exec 의경우에사용 생성된프로세스는 multi-threaded 해당 thread 만복제 : fork exec 의경우에사용 생성된프로세스는 single threaded fork fork exec 31 Signal (Process 에대한 signal 은 CPU 에대한 interrupt 와비슷함 ) UNIX 에서프로세스에게특정 event 발생을알려주기위해서사용 동기식 signal (ex) illegal memory access, division by zero 비동기식 signal (ex) Ctrl-C로종료 signal handler signal( signal number) 을처리하기위해사용됨 signal은특정event에의해생성되어 process에게전달됨 process의 signal handler에서처리됨 process 두종류의 signal handler A default signal handler A user-defined signal handler Multithreaded process 에서의 signal 전달옵션 signal 이적용될 thread 에게전달 모든 thread 에게전달 일부 thread 에게선택적으로전달 signal 을전달받는 thread 지정 signal 의유형에따라서 signal 전달방법이정해짐 signal signal handler 32

Thread 취소 Thread-Local 저장소 Thread 취소 (cancellation) target thread 가종료되기전에 thread 를강제로중단시키는것 두가지취소방식 비동기 (asynchronous) 취소 : 즉시 target thread 를취소 지연 (deferred) 취소 : 주기적으로점검하여 target thread 를취소 thread 취소의어려운점 자원이할당되어있거나공유데이터를갱신하고있는 thread 를취소할때에처리에어려움이발생함 비동기취소방식에서자원회수에문제발생가능성 지원취소방식에서는취소시점 (cancellation point) 에서안전한취소가능여부를검사하여취소 Thread-Local Storage(TLS) thread 자신만이접근가능한저장공간 대부분의 thread library 가 TLS 지원기능제공 TLS, local variable, static variable 의비교 local 변수 함수호출동안에만일시적으로사용 static 변수 프로그램실행동안함수내의기억장소를유지 ( 같은함수를사용하는 thread 들은 static 기억장소공유 ) TLS static 변수와비슷하지만, 각 thread 별로분리된기억장소사용 33 34 Scheduler Activations 경량프로세스 (lightweight process: LWP) Many-to-many 모델에서는 user-level thread 와 kernel thread 사이에 LWP(lightweight process) 라고하는중간자료구조사용하여연결 각 LWP 는 kernel thread 에연결되며 user-thread library 에게 virtual processor 같이보여짐 가용 LWP 에 user-level thread 들을스케줄링 각응용에필요한 LWP 개수 CPU-bound 응용 : 1 개의 LWP 이면충분 I/O intensive 응용 : 여러개의 LWP 필요 Scheduler Activation upcall: thread 가 block 되거나 event 가발생하면커널에서 signal 을보내어 thread library 의 upcall handler 를호출함 upcall handler 는새 LWP 를할당받아실행되고다른 thread 에게스케줄링함 운영체제는 kernel thread 를스케줄링함 35