• Tidak ada hasil yang ditemukan

제 4 장. 쓰레드, SMP, 그리고 마이크로커널

N/A
N/A
Protected

Academic year: 2023

Membagikan "제 4 장. 쓰레드, SMP, 그리고 마이크로커널"

Copied!
22
0
0

Teks penuh

(1)

4 . 쓰레드 , SMP, 그리고 마이크로커널

4 장의 강의 목표

• 쓰레드(thread)의 개념을 이해하고, 프로세스와의 차이점 를 구별한다.

• 쓰레드의 장단점을 이해한다 .

• 사용자 수준 쓰레드와 커널 수준 쓰레드의 개념을 이해한 다.

• 대칭적 다중처리(SMP)에 대해서 이해한다.

• 마이크로 커널의 개념과 장단점을 이해한다 .

Windows, Solaris, Linux의 쓰레드 관리 및 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)

Î자원 소유권(resource ownership)

Î수행/스케줄링(execution/scheduling)개체

– 메모리(코드, 데이터, 스택), 파일, signal, IPC, accounting, … – CPU 레지스터 정보, 스케줄링 정보

• 현대 OS에서 프로세스는 태스크(task) 및 쓰레드(thread)라 는 두 객체(특성)로 분리

– 태스크: Resource Container (사용자 문맥, 시스템 문맥) – 쓰레드: 제어 흐름(실행 정보, 레지스터 문맥)

(3)

다중쓰레딩

• 단일 쓰레딩(threading) vs. 다중쓰레딩(Multithreading)

– 단일 프로세스 내에 다중 쓰레드 실행을 지원 가능

쓰레드, SMP 및 마이크로커널 5 4.1 프로세스와 스레드

프로세스와 쓰레드 사례

MS-DOS는 단일 사용자 프로세스와 단일 쓰레드를 지원

UNIX 계열의 여러 운영체제는 다중 사용자, 다중 프로세스

를 지원하지만 , 프로세스 당 하나의 쓰레드를 지원한다 .

Java 수행시간환경(run-time environment)은 하나의 프로 세스가 다중 쓰레드를 지원한다.

• 최신 버전의 UNIX, Windows, Solaris는 다중 쓰레드를 지 원하는 다중 프로세스를 사용한다.

4.1 프로세스와 스레드 다중 쓰레딩

(4)

다중쓰레딩 환경

• 태스크 (또는 프로세스) 관련 사항

– 프로세스 이미지를 유지하는 가상 주소 공간

– 처리기, (IPC를 위한) 다른 프로세스, 파일, I/O 자원들에 대한 접 근제어

• 쓰레드 관련 사항

– 실행 상태(수행, 준비, 블록, …)

– 수행 중이 아닐 때 저장되는 쓰레드 문맥 – 실행 스택

– 지역 변수 저장을 위해 각 쓰레드가 사용하는 어떤 정적 저장소 (storage)

– 자신 프로세스의 메모리 및 자원들에 대한 접근 공유

• 한 프로세스 내의 모든 쓰레드들은 그 프로세스의 자원들 을 공유

쓰레드, SMP 및 마이크로커널 7

4.1 프로세스와 스레드 다중 쓰레딩

쓰레드 모델

• 단일/다중 쓰레드 모델

4.1 프로세스와 스레드 다중 쓰레딩

(5)

쓰레드의 장점 (benefits)

• 프로세스에 비해 새로운 쓰레드 생성 시간/비용이 절약

• 프로세스 종료 시간보다 쓰레드 종료 시간이 짧다.

• 한 프로세스 내의 쓰레드들 사이의 교환/교체 시간이 짧다.

• 동일 프로세스 내의 쓰레드들은 메모리 및 파일을 공유하기 때문에 , 이들 쓰레드들은 커널의 개입 없이 서로 통신 가능

• 한 프로그램의 구조(structure)를 단순화

– Module program structure

• 다중처리기(multiprocessor)의 효율적 사용

– 빠른 수행

• 빠른 IPC (메시지 전송이 아닌 공유 메모리 사용 가능)

– 비동기 처리

• 병행 서버 (listening thread and responding threads)

– Foreground and background processing

쓰레드, SMP 및 마이크로커널 9

4.1 프로세스와 스레드 다중 쓰레딩

• 예: 쓰레드를 사용한 원격 프로시져 호출

쓰레드의 기능

4.1 프로세스와 스레드

(6)

쓰레드의 기능 ( 계속 )

• 쓰레드 상태

– 수행 / 준비 / 블록/ 종료 – 기본적인 쓰레드 연산:

• 생성(Spawn), 디스패치(Dispatch), 블록(Block), 비블록(Unblock), 종료(Finish)

– 그림 4.4: 단일 처리기 상에서 다중 쓰레딩 예

쓰레드, SMP 및 마이크로커널 11

)보류= Suspend(?)

4.1 프로세스와 스레드

쓰레드 동기화 (synchronization)

• 한 프로세스 내의 모든 쓰레드들은 동일 주소 공간 및 자원 들을 공유

• 공유 자원

– 전역 변수/ 파일

– 동적 할당 메모리: 예)이중 연결 리스트(double linked lists)

• 공유 자원에 대해 동시 접근 시(특히, 갱신 시), 일관성 유지 기법 필요

– 예) 한 공유 변수에 대해 읽기 연산은 동시 접근이 가능하나, 쓰기 연산은 한 순간에 하나만 가능

– 동기화 관련 내용은 제5장 및 제 6장에서 다룸

쓰레드의 기능 4.1 프로세스와 스레드

(7)

사용자 수준 쓰레드와 커널 수준 쓰레드

User-Level Thread(ULT) vs. Kernel-Level Thread(KLT)

Kernel-supported thread Lightweight process

쓰레드, SMP 및 마이크로커널 13 4.1 프로세스와 스레드

• 사용자 수준 쓰레드

– 응용이 모든 쓰레드 관리를 책임짐:쓰레드 라이브러리가 쓰레드 생성, 제거, 데이터 전송, 동기화, 스케줄, 문맥교환을 수행

– 커널은 쓰레드의 존재를 모름

– 쓰레드 라이브러리 예:cthread,pthread

• 커널 수준 쓰레드

– 커널이 프로세스 및 쓰레드에 대한 문맥 정보를 관리 – 쓰레드에 대한 스케줄링이 커널 수준에서 수행됨 – 예: Windows

• 결합된 접근 방법 (Combined approach)

– 예: Solaris

사용자 수준 쓰레드와 커널 수준 쓰레드 ( 계속 )

4.1 프로세스와 스레드

(8)

사용자 수준 쓰레드

사용자 수준 쓰레드의 장점

– 쓰레드 교환/교체 시에 커널 모드 권한이 불필요

두 번의 모드 전이 오버헤드를 절약 가능 – 특정 응용에 적합한 스케줄링 적용 가능 – 모든 OS에서 수행 가능

사용자 수준 쓰레드의 단점

– 한 쓰레드가 블록 상태를 유발하는 시스템 호출을 수행할 경우, 자신은 물론 그 프로세스 내의 모든 다른 쓰레드들도 블록됨 – 다중처리기의 장점을 살리지 못함.

쓰레드, SMP 및 마이크로커널 15

4.1 프로세스와 스레드 사용자 수준 쓰레드와 커널 수준 쓰레드

• 사용자 수준 쓰레드 상태와 프로세스 상태 사이의 관계

사용자 수준 쓰레드

4.1 프로세스와 스레드 사용자 수준 쓰레드와 커널 수준 쓰레드

스레드2가 입출력 시스템 호출

(9)

프로세스와 쓰레드 간의 관계

쓰레드, SMP 및 마이크로커널 17 4.1 프로세스와 스레드

4.2 대칭적 다중처리

• 전통적으로 컴퓨터는 순차적 실행 기계임

– 처리기 하나는 한 시점에 한 명령어 만을 처리할 수 있음 – Each instruction is a sequence of operations

• 병렬성(parallelism) 지원을 위한 두 가지 방법

– 대칭적 다중처리(Symmetric MultiProcessors: SMP) – Clusters (chapter 16)

(10)

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 대칭적 다중처리

병렬 처리기들의 분류 (Categories of Parallel Processors)

4.2 대칭적 다중처리 SMP 구조

(11)

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)

4.2 대칭적 다중처리

(12)

4.3 마이크로 커널 (Microkernel)

OS 는 초대형 프로그램

– OS/360의 첫 번째 버전: 백만 줄 이상의 코드로 구성 – Multics는 2천만 줄의 코드로 구성

→ 모듈화 프로그래밍 기술 필요

• 커널 구조

– 단일체 (monolithic) 운영체제

• 계층적(Layered) 커널

각 계층은 상당한 기능을 포함하고 인접 계층 간에 많은 상호 작용 한 계층의 변화는 인접한 계층에 여러 영향을 미침

– 마이크로 커널(Microkernel)

쓰레드, SMP 및 마이크로커널 23

단일체 커널 (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

4.3 마이크로 커널

(13)

마이크로 커널의 구조

• 마이크로 커널: 스케줄링, 보호, 메시지 교환 등등의 필수적인 핵심OS 기능/함수들만 유지

서비스: 장치 드라이버(driver), 파일 시스템, 가상 메모리 관리자, 윈도우 시스템, 보안 서비스 등과 같은 기능들을 제공

쓰레드, SMP 및 마이크로커널 25 4.3 마이크로 커널

마이크로커널 구성의 이점 (benefits)

일관된 인터페이스(uniform interface)

메시지 전달에 의해 제공되는 커널 및 사용자 수준 서비스

확장성(extensibility)

새로운 서비스의 삽입이 용이

유연성(flexibility, 융통성)

서비스의 삽입 및 삭제가 용이하여 응용에 최적인 운영체제 구성 가능

이식성(portability)

새로운 구조의 시스템에 커널 포팅이 용이

신뢰성(reliability)

모듈 단위로 설계된 커널보다, 작은 마이크로 커널이 더 철저히 검증될 수 있다.

분산 시스템 지원에 적합

마이크로커널은 근본적으로 클라이언트-서버 모델

마이크로커널 수준에서, 프로세스는 해당 서비스가 어떤 목표(대상) 시스템에서 처리되는 지를 파악할 필요 없이 메시지를 전송

객체지향 운영체제와 잘 부합

마이크로커널은 객체 지향의 원리를 반영 4.3 마이크로 커널

(14)

마이크로커널의 성능

• 일관된 인터페이스(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)를 처 리하는 예

4.3 마이크로 커널

(15)

• 프로세스간 통신

– 포트를 기반으로 한 메시지 사용

I/O와 인터럽트 관리

– 하드웨어 인터럽트를 메시지로 처리

쓰레드, SMP 및 마이크로커널 29

마이크로커널의 설계 ( 계속 )

4.3 마이크로 커널

사례 연구(Case Studies)

Windows, Solaris, Linux

서로 다른 운영체제 환경에 의해 지원되는 프로세스 구 조와 기능 표현 방법

– 프로세스의 이름 부여 방법

– 프로세스 내에서 쓰레드의 지원 여부 – 프로세스의 표현 방법

– 프로세스 자원의 보호 방법

– 프로세스간 통신과 동기화를 위해서 사용되는 기법 – 프로세스들이 상호 연관되는 방법

(16)

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)

(17)

Windows 쓰레드 및 SMP 관리

프로세스 객체 및 쓰레드 객체 (그림 4.13)

쓰레드, SMP 및 마이크로커널 33

Windows 쓰레드 및 SMP 관리

그림 4.14: 6가지 쓰레드 상태

(18)

Solaris 쓰레드 및 SMP 관리

다단계 쓰레드 구조

– 프로세스: 보통의 UNIX 프로세스

• 사용자 주소공간, 스택, 프로세스 제어 블록(PCB) 등을 포함 – 사용자 수준 쓰레드 (ULT)

• 프로세스 주소공간에서 쓰레드 라이브러리를 통해 구현 – 경량 프로세스 (Lightweight processes ≡ LWP)

• ULT와 커널 쓰레드 사이의 사상(mapping) – 커널 쓰레드 ≡ 커널 수준 쓰레드 (KLT)

• 처리기에 수행되는 기본 개체

→ 그림 4.15 참조

쓰레드, SMP 및 마이크로커널 35

Solaris 쓰레드 및 SMP 관리

프로세스와 쓰레드 관계

(19)

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)을 수행

– 순수 커널 쓰레드

(20)

Solaris 쓰레드 및 SMP 관리

전통적인 UNIX 및 Solaris에서 프로세스 구조 (그림 4.16)

쓰레드, SMP 및 마이크로커널 39

Solaris 쓰레드 및 SMP 관리

Solaris thread state

(21)

Solaris 쓰레드 및 SMP 관리

활성화(active, 수행 중) 상태의 ULT 쓰레드에 대한 상태 전이의 예

– 동기화 필요: 수면(sleeping) 상태로 전이

• 예: 5장에서 기술될 상호배제 필요

– 보류(suspension): 쓰레드를 보류시켜 정지(stopped) 상태로 전 이

– 선점(preemption):

• 활성화 상태의 쓰레드가 수행가능(runnable) 상태로 전이 – 양보(yielding):

• thr_yield() 라이브러리 함수를 호출하면 수행가능 상태로 전이

쓰레드, SMP 및 마이크로커널 41

) Solaris: Interrupts as Threads

• 인터럽트 쓰레드 도입

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()

(22)

Linux 프로세스 및 쓰레드 관리

프로세스/쓰레드 모델 – 정지(stopped)

– 수행 중(executing) – 좀비 (zombie)

시그널(signal)

사건(event)

쓰레드, SMP 및 마이크로커널 43

요 약

프로세스와 쓰레드

– 자원 컨테이너 대 제어 흐름 – 쓰레드 상태

– 사용자 수준 쓰레드(ULT) 대 커널 수준 쓰레드(KLT)

대칭적 다중처리

마이크로 커널

Windows 쓰레드 및 SMP (Symmetric Multiprocessor) 관리

Solaris 쓰레드 및 SMP 관리

Referensi

Dokumen terkait

Nurse-patient communication is communication that focuses on the patient's healing process, nurses are able to communicate well with patients so that they can

Akan tetapi pada kenyatanya masih banyak anak yang masih melantarkan orang tuanya dengan cara menitipkan orang tuanya ke pati sosial, pada saat ini masih banyak anak