28
Unix 운운운운운 운운 Chapter 6.1 ~ 6.4 운운운운운 운운 운운운 2009. 09 .02

Unix 운영체제의 설계

Embed Size (px)

DESCRIPTION

Unix 운영체제의 설계. Chapter 6.1 ~ 6.4 프로세스의 구조. 안재윤 2009. 09 .02. Contents. Ⅰ. 6.1 프로세스 상태와 전이. 6.2 시스템 메모리의 배치. Ⅱ. Ⅲ. 6.3 프로세스의 실행 환경. Ⅳ. 6.4 프로세스의 실행 환경의 보관. Ⅰ. 6.1 프로세스 상태와 전이. 6.2 시스템 메모리의 배치. Ⅱ. Ⅲ. 6.3 프로세스의 실행 환경. Ⅳ. 6.4 프로세스의 실행 환경의 보관. UNIX 운영체제의 구조. - PowerPoint PPT Presentation

Citation preview

Page 1: Unix  운영체제의 설계

Unix 운영체제의 설계

Chapter 6.1 ~ 6.4 프로세스의 구조

안재윤

2009. 09 .02

Page 2: Unix  운영체제의 설계

2

Contents

6.1 프로세스 상태와 전이

6.2 시스템 메모리의 배치

6.3 프로세스의 실행 환경

Ⅳ 6.4 프로세스의 실행 환경의 보관

Page 3: Unix  운영체제의 설계

3

6.1 프로세스 상태와 전이

6.2 시스템 메모리의 배치

6.3 프로세스의 실행 환경

Ⅳ 6.4 프로세스의 실행 환경의 보관

Page 4: Unix  운영체제의 설계

4

UNIX 운영체제의 구조

Block Diagram of the System Kernel

System Call Interface

File Subsystem Inter-processcommunication

Scheduler

Memorymanagement

Process

Control

SubsystemDevice drivers

hardware control

hardware

LibrariesUser Programs

User Level

Kernel Level

Hardware Level

trap

Character Block

Buffer cache

Page 5: Unix  운영체제의 설계

5

6.1 프로세스 상태와 전이

프로세스 상태 전이 다이어그램 사용자 수행중

수면 , 스웹됨 스웹된 실행준비

1

2

34

수면

깨움

프로세서를 다시 스케쥴

메모리에서수행 대기

메모리에서 수면

시스템 호출 ,인터럽트

복귀

인터럽트 , 인터럽트 복귀

커널 수행중

97

8

6 5메모리부족( 스웹핑 시스템에서 )

Zombie

exit프리엠프트 프리엠프트된 상태

Swap-out

Sw

ap-o

ut

Sw

ap-in

깨움

생성fork

각 프로세스 상태 정의

프로세스가 생성되고 사용자 모드에서 수행되는 과정

Page 6: Unix  운영체제의 설계

6

6.1 프로세스 상태와 전이

프로세스의 상태를 나타내는 커널의 2 가지 데이터 구조

ProcessTable

U-area

Kernel

Page 7: Unix  운영체제의 설계

7

6.1 프로세스 상태와 전이

■ 프로세스에 관한 가장 기본이 되는 자료

1. 상태정보 , 프로세스의 크기

2. Region 테이블을 가리키는 포인터 정보와 U Area 가 가리키는 포인터

3. 사용자의 ID 또는 GID, UDI : 프로세스들의 privilege 결정

4. 프로세스 번호 (PID) : 프로세스가 ‘생성’상태로 들어갈 때 부여됨

5. 수면상태에 있을 때의 이벤트 식별자

6. 스케쥴링 매개변수 : 커널모드 & 사용자모드 상태로 가는 순서 결정

7. Signal 필드

8. 여러가지 타이머 : 프로세스 수행시간 , 커널 자원의 이용율을 나타냄

프로세스 테이블

Page 8: Unix  운영체제의 설계

8

6.1 프로세스 상태와 전이

프로세스의 상태를 나타내는 커널의 2 가지 데이터 구조

ProcessTable

U-area

Kernel

Page 9: Unix  운영체제의 설계

9

6.1 프로세스 상태와 전이

■ 프로세스가 스케쥴러에 의해 CPU 를 할당받아 실행될 때만 생성되는 항목

1. 프로세스 테이블에 대한 포인터 ( 해당 U area 에 대응되는 프로세스 테이블 엔트리 )

2. 실제 사용자 ID, 유효 사용자 ID ( 파일 액세스 권리등 여러 가지 privilege 결정 )

3. 타이머 필드 ( 프로세스가 사용자모드와 커널모드에서 실행에 사용한 시간을 기록 )

4. Signal 을 위한 반응 필드들 ( 여러 Signal 이 들어왔을 때 대처할 행동지침 )

5. 오류필드 ( 실행 중 오류 발생시 관련오류를 이곳에 전달 )

6. 복귀값 필드 (system call 의 return value 저장 )

7. I/O 매개변수 (File 입출력을 위한 기본정보 )

8. 현재 디렉토리와 루트디렉토리 ( 해당 프로세스의 file system 환경 )

9. 사용자 file descriptor table(File access 를 위해 오픈했을 때 관련정보 )

10. 한계필드 ( 프로세스의 크기와 쓸 수 있는 File 의 크기를 제한 )

11. 허용모드필드 ( 프로세스가 생성한 File 의 모드설정 )

U area

Page 10: Unix  운영체제의 설계

10

6.1 프로세스 상태와 전이

커널의 2 가지 데이터 구조 간의 차이점

ProcessTable

U-area

Kernel

VS커널이 항상 접근할 필요가 있는 프로세스들의 필드들을 포함

현재 실행 중인 프로세스의 정보 필드 만을 포함

Page 11: Unix  운영체제의 설계

11

6.1 프로세스 상태와 전이

6.2 시스템 메모리의 배치

6.3 프로세스의 실행 환경

Ⅳ 6.4 프로세스의 실행 환경의 보관

Page 12: Unix  운영체제의 설계

12

6.2 시스템 메모리의 배치

UNIX 시스템의 프로세스 구성

u area

Process table

Per-processregion table

Regiontable

주 메모리

Active process

Page 13: Unix  운영체제의 설계

13

6.2 시스템 메모리의 배치

8K

32K

16K

4K

8K

32K

a

텍스트데이터

스택

텍스트데이터

스택

프로세스 A

프로세스 B

프로세스당 영역 테이블( 가상 주소 )

b

d

e

c

프로세스와 Region

Page 14: Unix  운영체제의 설계

14

6.2 시스템 메모리의 배치

■ 각 영역 (Region) 의 메모리상의 위치정보를 관리하는 테이블

■ 각 프로세스마다 다 하나씩 소유

■ 커널이 한 프로세스를 실행시키기 위한 기초 정보

■ Region table entry 에 대한 포인터와 그 프로세스 내의 Region 의 가상 시작 주소 포함(* 단 , 공유 Region 은 각 프로세스에서 다른 가상 주소를 가질 수 있음 )

■ 허용필드 : read-only, read-write, read-execute

프로세스 당 영역 테이블 (Pregion)

Page 15: Unix  운영체제의 설계

15

6.2 시스템 메모리의 배치

■ 해당 Region 의 내용이 실제 메모리상의 어느 부분에 위치해 있는 가를 나타내는 정보

■ 메모리를 관리하기 위한 데이터 구조

■ 정보가 들어가있는 위치를 다양화

리전 ( 영역 ) 테이블 (Region Ta-ble)

Page 16: Unix  운영체제의 설계

16

6.2 시스템 메모리의 배치

페이지에 기초한 메모리 관리구조

16 진 주소 584322 진수 0101 1000 0100 0011 0010페이지번호 , 페이지 offset 01 0110 0001 00 0011 001016 진수 표현 161 32

실제 메모리의 주소를 페이지로 지정

논리 페이지 번호 실제 페이지 번호0 1771 542 2093 17

논리 페이지 번호를 실제 페이지 번호로 mapping

어떤 컴퓨터가 232 바이트의 실제메모리와 1K 바이트의 페이지크기를 가진다면 ?

Page 17: Unix  운영체제의 설계

17

6.2 시스템 메모리의 배치

가상주소를 실제 주소로 사상

8K

64K

32K

텍스트

데이터스택

프로세스당 영역 테이블( 가상주소 )

가상 주소

541K

783K

986K

897K

87K

552K

727K

941K

1096K

empty

137K

852K

764K

433K

2001K

333K

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

페이지 테이블 ( 실제주소 )

Q? 페이지크기는1K 바이트프로세스가 가상메모리번지68,432 를 액세스하기를 원하는 경우

Page 18: Unix  운영체제의 설계

18

6.2 시스템 메모리의 배치

사용자 모드에서 커널 모드로의 변환

• 주소변환과정의 속도 향상을 위해 Hardware Register & Cache 를 사용

Memory management register triple

register#1 : 실제 메모리에서 페이지 테이블의 주소register#2 : 그 triple 을 통해 결정된 첫번째 가상 주소register#3 : 페이지 테이블 내의 페이지 수와 페이지 액세스 허용과 같은 통제정보를 가짐

※ exception 발생어떤 프로세스가 자신의 가상 주소 공간 밖의 메모리 위치 쓰기 방지가 되어 있는 텍스트 Region 내의 주소에 write

Page 19: Unix  운영체제의 설계

19

6.2 시스템 메모리의 배치

커널 레지스터 트리플 1

페이지 테이블의 주소

856K

917K

564K

444K

747K

950K

333K

556K

997K

458K

632K.......

.

.

.

.

.

.

.

.

.

.

.

.

.

.

01M2M4M

가상 주소페이지

테이블내의 페이지수

커널 레지스터 트리플 2

사용자 레지스터 트리플 1커널 레지스터 트리플 3

사용자 레지스터 트리플 2사용자 레지스터 트리플 3

0K

4K

3K

17K

128K

97K

135K

256K

292K

304K

279K.......

.

.

.

.

.

.

.

.

.

.

.

.

.

.

139K

사용자 모드에서 커널 모드로의 변환

< 프로세스 페이지 테이 블 > < 커널 페이지 테이블 >

Page 20: Unix  운영체제의 설계

20

6.2 시스템 메모리의 배치

커널에서 u area 의 메모리 지도

레지스터 트리플 1

페이지 테이블의 주소

856K

917K

564K

444K

747K

950K

333K

556K

997K

458K

632K

2M 4

가상 주소페이지

테이블내의 페이지수

레지스터 트리플 2

(U Area) 레지스터 트리플 3

256K

292K

304K

279K333K

프로세스 A 프로세스 B 프로세스 C 프로세스 D

U Area 의 페이지 테이블

프로세스 A 에대한 u area페이지 테이블 정보를 복사하여 참조

Page 21: Unix  운영체제의 설계

21

6.1 프로세스 상태와 전이

6.2 시스템 메모리의 배치

6.3 프로세스의 실행 환경

Ⅳ 6.4 프로세스의 실행 환경의 보관

Page 22: Unix  운영체제의 설계

22

6.3 프로세스의 실행환경

프로세스 실행환경

Register context

System-level context

User-level

context

Page 23: Unix  운영체제의 설계

23

6.3 프로세스의 실행환경

User-level context : 가상 주소 공간의 텍스트 , 데이터 , 사용자 스택 , 공유메모리 (swapping, paging 으로 인해 정기적으로 메모리 내에 있지 않은 부분포함 )

Register context : PC(program counter), PS(program state register), Stack Pointer general-purpose register

System-level context

프로세스 실행환경

정적 부분 동적부분

프로세스 테이블 엔트리 커널 스택

프로세스의 U areaLayer 들의 집합

(LIFO last-in-first-out 스택 )

Pregion 엔트리

Page 24: Unix  운영체제의 설계

24

6.3 프로세스의 실행환경

층 3 의 커널 스택층 2 의 저장된

레지스터 실행환경

층 2 의 커널 스택층 1 의 저장된

레지스터 실행환경

( 사용자 수준 )

층 1 의 커널 스택층 0 의 저장된

레지스터 실행환경

.

.

.

실행환경의 동적 부분

층 3

층 2

층 1

커널실행환경계층 0

사용자 수준 실행환경

시스템 수준 실행환경의 정적 부분

프로세스 텍스트데이터스택

공유 데이터

프로세스 테이블 엔트리U area

프로세스당 영역 테이블(per process region ta-

ble)

실행환경의 정적 부분

Page 25: Unix  운영체제의 설계

25

6.1 프로세스 상태와 전이

6.2 시스템 메모리의 배치

Ⅳ 6.4 프로세스의 실행 환경의 보관

Ⅲ 6.3 프로세스의 실행 환경

Page 26: Unix  운영체제의 설계

26

6.4 프로세스의 실행환경의 보관

▶ 커널은 새로운 시스템 실행 환경 층을 PUSH 할 때마다 프로세스의 실행 환경을 보관

1. 시스템이 인터럽트를 받을 때

2. 프로세스가 System Call 을 실행할 때

3. 커널이 실행환경을 교환할 때

4. 중도포기 복귀를 위한 실행환경의 저장

5. 시스템과 사용자 주소 공간 사이의 데이터 복사

프로세스 실행환경의 보관

Page 27: Unix  운영체제의 설계

감사합니다

Page 28: Unix  운영체제의 설계

28

6.1 프로세스 상태와 전이

프로세스 상태

1 프로세스 사용자모드 (user mode) 실행 중

2 프로세스 커널모드 (Kernel mode) 실행 중

3 실행 중은 아니지만 커널이 스케쥴 하자마자 곧 실행할 준비가 된 상태

4 프로세스가 main memory 에서 sleeping

5 프로세스가 main memory 로 swap 되어야하는 상태

6프로세스 sleeping 상태 , main memory 내의 다른 프로세스를 위한 여유공간을 위해 보조기억장치로 swap 된 상태

8프로세스가 새로 생성 , 전이 상태-> 프로세스 0 을 제외한 모든 프로세스의 시작상태 (start state)

9프로세스가 exit system call 을 실행한 , zombie 상태 ( 프로세스의 마지막 상태 ) -> 부모프로세스가 수집할 exit 코드 , 시간 통계자료를 포함하는 기록을 남김 .

7프로세스가 커널모드에서 사용자모드로 복귀 , but, 커널이 preemption, 다른 프로세스를 스케쥴 하기 위해 실행 환경 교환 (context switch)을 한 상태