제 4 장. 쓰레드, SMP, 그리고마이크로커널 4 장의강의목표 쓰레드 (thread) 의개념을이해하고, 프로세스와의차이점를구별한다. 쓰레드의장단점을이해한다. 사용자수준쓰레드와커널수준쓰레드의개념을이해한다. 대칭적다중처리 (SMP) 에대해서이해한다. 마이크로커널의개념과장단점을이해한다. Windows, Solaris, Linux 의쓰레드관리및 SMP 관리기법을이해한다. 쓰레드, SMP 및마이크로커널 2
목차 4.1 프로세스및쓰레드 (Thread) 4.2 대칭적다중처리 (Symmetric Multiprocessing, SMP) 4.3 마이크로커널 (Microkernels) 4.4 Windows 쓰레드및 SMP 관리 4.5 Solaris 쓰레드및 SMP 관리 4.6 Linux 프로세스및쓰레드관리 쓰레드, SMP 및마이크로커널 3 프로세스 4.1 프로세스와쓰레드 (thread) 실행중인프로그램 (A program in execution) 메모리 ( 코드, 데이터, 스택 ), 파일, signal, IPC, accounting, CPU 레지스터정보, 스케줄링정보 자원소유권 (resource ownership) 수행 / 스케줄링 (execution/scheduling) 개체 현대 OS 에서프로세스는태스크 (task) 및쓰레드 (thread) 라는두객체 ( 특성 ) 로분리 태스크 : Resource Container ( 사용자문맥, 시스템문맥 ) 쓰레드 : 제어흐름 ( 실행정보, 레지스터문맥 ) 쓰레드를경량프로세스 (lightweight process) 라고부르기도함 프로세스및태스크를서로혼용하여사용하기도함 쓰레드, SMP 및마이크로커널 4
4.1 프로세스와스레드 다중쓰레딩 단일쓰레딩 (threading) vs. 다중쓰레딩 (Multithreading) 단일프로세스내에다중쓰레드실행을지원가능 쓰레드, SMP 및마이크로커널 5 4.1 프로세스와스레드다중쓰레딩 프로세스와쓰레드사례 MS-DOS 는단일사용자프로세스와단일쓰레드를지원 UNIX 계열의여러운영체제는다중사용자, 다중프로세스를지원하지만, 프로세스당하나의쓰레드를지원한다. Java 수행시간환경 (run-time environment) 은하나의프로세스가다중쓰레드를지원한다. 최신버전의 UNIX, Windows, Solaris 는다중쓰레드를지원하는다중프로세스를사용한다. 쓰레드, SMP 및마이크로커널 6
4.1 프로세스와스레드다중쓰레딩 다중쓰레딩환경 태스크 ( 또는프로세스 ) 관련사항 프로세스이미지를유지하는가상주소공간 처리기, (IPC 를위한 ) 다른프로세스, 파일, I/O 자원들에대한접근제어 쓰레드관련사항 실행상태 ( 수행, 준비, 블록, ) 수행중이아닐때저장되는쓰레드문맥 실행스택 지역변수저장을위해각쓰레드가사용하는어떤정적저장소 (storage) 자신프로세스의메모리및자원들에대한접근공유 한프로세스내의모든쓰레드들은그프로세스의자원들을공유 쓰레드, SMP 및마이크로커널 7 4.1 프로세스와스레드다중쓰레딩 단일 / 다중쓰레드모델 쓰레드모델 쓰레드, SMP 및마이크로커널 8
4.1 프로세스와스레드다중쓰레딩 쓰레드의장점 (benefits) 프로세스에비해새로운쓰레드생성시간 / 비용이절약 프로세스종료시간보다쓰레드종료시간이짧다. 한프로세스내의쓰레드들사이의교환 / 교체시간이짧다. 동일프로세스내의쓰레드들은메모리및파일을공유하기때문에, 이들쓰레드들은커널의개입없이서로통신가능 한프로그램의구조 (structure) 를단순화 Module program structure 다중처리기 (multiprocessor) 의효율적사용 빠른수행 빠른 IPC ( 메시지전송이아닌공유메모리사용가능 ) 비동기처리 병행서버 (listening thread and responding threads) Foreground and background processing 쓰레드, SMP 및마이크로커널 9 4.1 프로세스와스레드 쓰레드의기능 예 : 쓰레드를사용한원격프로시져호출 쓰레드, SMP 및마이크로커널 10
4.1 프로세스와스레드 쓰레드상태 수행 / 준비 / 블록 / 종료 기본적인쓰레드연산 : 쓰레드의기능 ( 계속 ) 보류 = Suspend(?) 생성 (Spawn), 디스패치 (Dispatch), 블록 (Block), 비블록 (Unblock), 종료 (Finish) 그림 4.4: 단일처리기상에서다중쓰레딩예 쓰레드, SMP 및마이크로커널 11 4.1 프로세스와스레드 쓰레드동기화 (synchronization) 쓰레드의기능 한프로세스내의모든쓰레드들은동일주소공간및자원들을공유 공유자원 전역변수 / 파일 동적할당메모리 : 예 ) 이중연결리스트 (double linked lists) 공유자원에대해동시접근시 ( 특히, 갱신시 ), 일관성유지기법필요 예 ) 한공유변수에대해읽기연산은동시접근이가능하나, 쓰기연산은한순간에하나만가능 동기화관련내용은제 5 장및제 6 장에서다룸 쓰레드, SMP 및마이크로커널 12
4.1 프로세스와스레드 사용자수준쓰레드와커널수준쓰레드 User-Level Thread(ULT) vs. Kernel-Level Thread(KLT) Kernel-supported thread Lightweight process 쓰레드, SMP 및마이크로커널 13 4.1 프로세스와스레드사용자수준쓰레드와커널수준쓰레드 ( 계속 ) 사용자수준쓰레드 응용이모든쓰레드관리를책임짐 : 쓰레드라이브러리가쓰레드생성, 제거, 데이터전송, 동기화, 스케줄, 문맥교환을수행 커널은쓰레드의존재를모름 쓰레드라이브러리예 : cthread, pthread 등 커널수준쓰레드 커널이프로세스및쓰레드에대한문맥정보를관리 쓰레드에대한스케줄링이커널수준에서수행됨 예 : Windows 결합된접근방법 (Combined approach) 예 :Solaris 쓰레드, SMP 및마이크로커널 14
4.1 프로세스와스레드사용자수준쓰레드와커널수준쓰레드 사용자수준쓰레드의장점 사용자수준쓰레드 쓰레드교환 / 교체시에커널모드권한이불필요 두번의모드전이오버헤드를절약가능 특정응용에적합한스케줄링적용가능 모든 OS 에서수행가능 사용자수준쓰레드의단점 한쓰레드가블록상태를유발하는시스템호출을수행할경우, 자신은물론그프로세스내의모든다른쓰레드들도블록됨 다중처리기의장점을살리지못함. 쓰레드, SMP 및마이크로커널 15 4.1 프로세스와스레드사용자수준쓰레드와커널수준쓰레드사용자수준쓰레드 사용자수준쓰레드상태와프로세스상태사이의관계 스레드 2 가입출력시스템호출 쓰레드, SMP 및마이크로커널 16
4.1 프로세스와스레드 프로세스와쓰레드간의관계 쓰레드, SMP 및마이크로커널 17 4.2 대칭적다중처리 전통적으로컴퓨터는순차적실행기계임 처리기하나는한시점에한명령어만을처리할수있음 Each instruction is a sequence of operations 병렬성 (parallelism) 지원을위한두가지방법 대칭적다중처리 (Symmetric MultiProcessors: SMP) Clusters (chapter 16) 쓰레드, SMP 및마이크로커널 18
4.2 대칭적다중처리 SMP 구조 컴퓨터시스템의분류 (by Flynn) Single Instruction Single Data (SISD) stream 단일처리기가한메모리에저장된데이터를처리하기위해단일명령스트림을수행 Single Instruction Multiple Data (SIMD) stream 각 ( 동일 ) 명령이서로다른데이터집합에대하여서로다른처리기에의해수행 벡터및배열처리기 (vector and array processors) Pentium 처리기의 superscalar 구조 Multiple Instruction Single Data (MISD) stream ( 같은 ) 일련의데이터가처리기들의집합에전송되고, 각처리기는서로다른명령을수행 지금까지구현된적이없음 Multiple Instruction Multiple Data (MIMD) stream 다수의처리기가서로다른데이터집합에대하여서로다른일련의명령어들을동시에수행 쓰레드, SMP 및마이크로커널 19 4.2 대칭적다중처리 SMP 구조 병렬처리기들의분류 (Categories of Parallel Processors) 쓰레드, SMP 및마이크로커널 20
4.2 대칭적다중처리 SMP 구성 캐시일관성문제 쓰레드, SMP 및마이크로커널 21 4.2 대칭적다중처리 SMP 를위한 OS 설계시고려사항 목적 : 사용자가다중프로그래밍단일처리기시스템 (multiprogramming uniprocessor system) 과동일한관점을가질수있게자원을관리 동시적병행 (simultaneous concurrent) 프로세스또는쓰레드 재진입 (reentrant) 커널코드, 분리된 (separated) 커널자료구조 SMP 를위한스케줄링 전역큐 / 지역큐, 집단스케줄링 (gang scheduling), 친화성 (affinity) 동기화 상호배제 (mutual exclusion), 사건순서화 (event ordering) 메모리관리 다중포트메모리 (multiport memory): dualport memory 신뢰성및결함허용 (fault tolerance) 이주 (migration) 쓰레드, SMP 및마이크로커널 22
4.3 마이크로커널 (Microkernel) OS 는초대형프로그램 OS/360의첫번째버전 : 백만줄이상의코드로구성 Multics는 2천만줄의코드로구성 모듈화프로그래밍기술필요 커널구조 단일체 (monolithic) 운영체제 계층적 (Layered) 커널 각계층은상당한기능을포함하고인접계층간에많은상호작용 한계층의변화는인접한계층에여러영향을미침 마이크로커널 (Microkernel) 쓰레드, SMP 및마이크로커널 23 4.3 마이크로커널 단일체커널 (Monolithic Kernel) Monolithic Architecture Every component contained in kernel Any component can directly communicate with any other Tend to be highly efficient Disadvantage is difficulty determining source of subtle errors 쓰레드, SMP 및마이크로커널 24
4.3 마이크로커널 마이크로커널의구조 마이크로커널 : 스케줄링, 보호, 메시지교환등등의필수적인핵심 OS 기능 / 함수들만유지 서비스 : 장치드라이버 (driver), 파일시스템, 가상메모리관리자, 윈도우시스템, 보안서비스등과같은기능들을제공 쓰레드, SMP 및마이크로커널 25 4.3 마이크로커널 마이크로커널구성의이점 (benefits) 일관된인터페이스 (uniform interface) 메시지전달에의해제공되는커널및사용자수준서비스 확장성 (extensibility) 새로운서비스의삽입이용이 유연성 (flexibility, 융통성 ) 서비스의삽입및삭제가용이하여응용에최적인운영체제구성가능 이식성 (portability) 새로운구조의시스템에커널포팅이용이 신뢰성 (reliability) 모듈단위로설계된커널보다, 작은마이크로커널이더철저히검증될수있다. 분산시스템지원에적합 마이크로커널은근본적으로클라이언트-서버모델 마이크로커널수준에서, 프로세스는해당서비스가어떤목표 ( 대상 ) 시스템에서처리되는지를파악할필요없이메시지를전송 객체지향운영체제와잘부합 마이크로커널은객체지향의원리를반영 쓰레드, SMP 및마이크로커널 26
4.3 마이크로커널 마이크로커널의성능 일관된인터페이스 (uniform interface) 에의한요청처리 메시지전송방식으로모든서비스를제공 커널수준서비스및사용자수준서비스사이의차이점구별이없음 성능상의고려사항 (performance consideration) 1 세대마이크로커널 단일체커널에서단일시스템호출처리시간보다, 마이크로커널에서메시지를통한서비스요청및응답처리시간이더걸림 2 세대마이크로커널 ( 예 : L4) 12KB 의코드와 7 개의시스템호출로구성되어, 계층화된 OS 에비해성능이떨어지지않음 쓰레드, SMP 및마이크로커널 27 4.3 마이크로커널 마이크로커널의설계 마이크로커널에서제공할서비스 저수준메모리관리 (Low-level Memory Management) IPC (Interprocess Communication): 메시지, 포트, I/O 및인터럽트관리 저수준메모리관리 가상페이지각각을물리적프레임으로사상시켜주는기능포함 주소공간보호, 페이지교체, 페이징논리는메모리관리서버로구현 예 ) 그림 4.11 Mach의외부페이지 (external pager) 가페이지폴트 (page fault) 를처리하는예 쓰레드, SMP 및마이크로커널 28
4.3 마이크로커널 마이크로커널의설계 ( 계속 ) 프로세스간통신 포트를기반으로한메시지사용 I/O 와인터럽트관리 하드웨어인터럽트를메시지로처리 쓰레드, SMP 및마이크로커널 29 사례연구 (Case Studies) Windows, Solaris, Linux 서로다른운영체제환경에의해지원되는프로세스구조와기능표현방법 프로세스의이름부여방법 프로세스내에서쓰레드의지원여부 프로세스의표현방법 프로세스자원의보호방법 프로세스간통신과동기화를위해서사용되는기법 프로세스들이상호연관되는방법 쓰레드, SMP 및마이크로커널 30
Windows 쓰레드및 SMP 관리 Windows 프로세스 프로세스와서비스는객체로구현 각프로세스는하나이상의쓰레드포함 각프로세스와쓰레드는내재된 (built-in) 동기화기법포함 SMP 지원 Threads can run on any processor But an application can restrict affinity 연성친화력 (Soft Affinity) The dispatcher tries to assign a ready thread to the same processor it last ran on. This helps reuse data still in that processor s memory caches from the previous execution of the thread. 경성친화력 (Hard Affinity) An application restricts threads to certain processor 쓰레드, SMP 및마이크로커널 31 Windows 쓰레드및 SMP 관리 Windows 프로세스와자원 ( 그림 4.12) 쓰레드, SMP 및마이크로커널 32
Windows 쓰레드및 SMP 관리 프로세스객체및쓰레드객체 ( 그림 4.13) 쓰레드, SMP 및마이크로커널 33 Windows 쓰레드및 SMP 관리 그림 4.14: 6 가지쓰레드상태 쓰레드, SMP 및마이크로커널 34
Solaris 쓰레드및 SMP 관리 다단계쓰레드구조 프로세스 : 보통의 UNIX 프로세스 사용자주소공간, 스택, 프로세스제어블록 (PCB) 등을포함 사용자수준쓰레드 (ULT) 프로세스주소공간에서쓰레드라이브러리를통해구현 경량프로세스 (Lightweight processes LWP) ULT와커널쓰레드사이의사상 (mapping) 커널쓰레드 커널수준쓰레드 (KLT) 처리기에수행되는기본개체 그림 4.15 참조 쓰레드, SMP 및마이크로커널 35 Solaris 쓰레드및 SMP 관리 프로세스와쓰레드관계 쓰레드, SMP 및마이크로커널 36
Solaris 쓰레드및 SMP 관리 Solaris 다중쓰레드구조의예 쓰레드, SMP 및마이크로커널 37 Solaris 쓰레드및 SMP 관리 동기 (motivations) 어떤프로그램은논리적인병렬성 (parallelism) 을가지지만하드웨어병렬성을요구하지않는다. 하나의 LWP에 ULT들의집합사상가능 예 : 다중윈도우환경에서한순간에하나의윈도우만이활성화 어떤응용이 (I/O 요청과같이 ) 블록될수있는쓰레드를포함하는경우에는다수의 LWP를이용하는것이효과적 어떤응용에서는 ULT를 LWP에일대일로사상하는것이효과적 예 : 병렬배열계산 (parallel array computation) 혼합형태 (Hybrids): bound and unbound ULTs가공존 예 : 어떤쓰레드는 RT 스케줄링을수행하고, 나머지쓰레드는후면함수 (background functions) 을수행 순수커널쓰레드 쓰레드, SMP 및마이크로커널 38
Solaris 쓰레드및 SMP 관리 전통적인 UNIX 및 Solaris 에서프로세스구조 ( 그림 4.16) 쓰레드, SMP 및마이크로커널 39 Solaris 쓰레드및 SMP 관리 Solaris thread state 쓰레드, SMP 및마이크로커널 40
Solaris 쓰레드및 SMP 관리 활성화 (active, 수행중 ) 상태의 ULT 쓰레드에대한상태전이의예 동기화필요 : 수면 (sleeping) 상태로전이 예 : 5 장에서기술될상호배제필요 보류 (suspension): 쓰레드를보류시켜정지 (stopped) 상태로전이 선점 (preemption): 활성화상태의쓰레드가수행가능 (runnable) 상태로전이 양보 (yielding): thr_yield() 라이브러리함수를호출하면수행가능상태로전이 Solaris: Interrupts as Threads 인터럽트쓰레드도입 쓰레드, SMP 및마이크로커널 41 Linux 프로세스및쓰레드관리 Linux 태스크 (task_struct 자료구조 ) 상태 Running, Interruptable, Uninterruptable, Stopped, Zombie 스케줄링정보 정책 : SCHED_RR, SCHED_FIFO, SCHED_OTHER O(1) scheduler in Linux 2.6.* 식별자 (pid, uid, gid) 프로세스간통신 (IPC) 링크 : 부모프로세스, 준비상태의프로세스들, 블록상태의프로세스들 시간과타이머 파일시스템 주소공간 처리기의존문맥 (processor-specific context) : 레지스터및스택정 보Linux: 다른플래그 (flag) 를갖는 clone() 쓰레드를위해별도의분리된자료구조가없다. 쓰레드, SMP 및마이크로커널 42
Linux 프로세스및쓰레드관리 프로세스 / 쓰레드모델 정지 (stopped) 수행중 (executing) 좀비 (zombie) 시그널 (signal) 사건 (event) 쓰레드, SMP 및마이크로커널 43 프로세스와쓰레드 요약 자원컨테이너대제어흐름 쓰레드상태 사용자수준쓰레드 (ULT) 대커널수준쓰레드 (KLT) 대칭적다중처리 마이크로커널 Windows 쓰레드및 SMP (Symmetric Multiprocessor) 관리 Solaris 쓰레드및 SMP 관리 ULT, KLT, 경량프로세스 (lightweight process) Linux 프로세스및쓰레드관리 쓰레드, SMP 및마이크로커널 44