Upload
presencia-queiro
View
179
Download
0
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
Unix 운영체제의 설계
Chapter 6.1 ~ 6.4 프로세스의 구조
안재윤
2009. 09 .02
2
Contents
Ⅰ
Ⅱ
Ⅲ
6.1 프로세스 상태와 전이
6.2 시스템 메모리의 배치
6.3 프로세스의 실행 환경
Ⅳ 6.4 프로세스의 실행 환경의 보관
3
Ⅰ
Ⅱ
Ⅲ
6.1 프로세스 상태와 전이
6.2 시스템 메모리의 배치
6.3 프로세스의 실행 환경
Ⅳ 6.4 프로세스의 실행 환경의 보관
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
5
6.1 프로세스 상태와 전이
프로세스 상태 전이 다이어그램 사용자 수행중
수면 , 스웹됨 스웹된 실행준비
1
2
34
수면
깨움
프로세서를 다시 스케쥴
메모리에서수행 대기
메모리에서 수면
시스템 호출 ,인터럽트
복귀
인터럽트 , 인터럽트 복귀
커널 수행중
97
8
6 5메모리부족( 스웹핑 시스템에서 )
Zombie
exit프리엠프트 프리엠프트된 상태
Swap-out
Sw
ap-o
ut
Sw
ap-in
깨움
생성fork
각 프로세스 상태 정의
프로세스가 생성되고 사용자 모드에서 수행되는 과정
6
6.1 프로세스 상태와 전이
프로세스의 상태를 나타내는 커널의 2 가지 데이터 구조
ProcessTable
U-area
Kernel
7
6.1 프로세스 상태와 전이
■ 프로세스에 관한 가장 기본이 되는 자료
1. 상태정보 , 프로세스의 크기
2. Region 테이블을 가리키는 포인터 정보와 U Area 가 가리키는 포인터
3. 사용자의 ID 또는 GID, UDI : 프로세스들의 privilege 결정
4. 프로세스 번호 (PID) : 프로세스가 ‘생성’상태로 들어갈 때 부여됨
5. 수면상태에 있을 때의 이벤트 식별자
6. 스케쥴링 매개변수 : 커널모드 & 사용자모드 상태로 가는 순서 결정
7. Signal 필드
8. 여러가지 타이머 : 프로세스 수행시간 , 커널 자원의 이용율을 나타냄
프로세스 테이블
8
6.1 프로세스 상태와 전이
프로세스의 상태를 나타내는 커널의 2 가지 데이터 구조
ProcessTable
U-area
Kernel
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
10
6.1 프로세스 상태와 전이
커널의 2 가지 데이터 구조 간의 차이점
ProcessTable
U-area
Kernel
VS커널이 항상 접근할 필요가 있는 프로세스들의 필드들을 포함
현재 실행 중인 프로세스의 정보 필드 만을 포함
11
Ⅱ
Ⅲ
6.1 프로세스 상태와 전이
6.2 시스템 메모리의 배치
6.3 프로세스의 실행 환경
Ⅰ
Ⅳ 6.4 프로세스의 실행 환경의 보관
12
6.2 시스템 메모리의 배치
UNIX 시스템의 프로세스 구성
u area
Process table
Per-processregion table
Regiontable
주 메모리
Active process
13
6.2 시스템 메모리의 배치
8K
32K
16K
4K
8K
32K
a
텍스트데이터
스택
텍스트데이터
스택
프로세스 A
프로세스 B
프로세스당 영역 테이블( 가상 주소 )
b
d
e
c
프로세스와 Region
14
6.2 시스템 메모리의 배치
■ 각 영역 (Region) 의 메모리상의 위치정보를 관리하는 테이블
■ 각 프로세스마다 다 하나씩 소유
■ 커널이 한 프로세스를 실행시키기 위한 기초 정보
■ Region table entry 에 대한 포인터와 그 프로세스 내의 Region 의 가상 시작 주소 포함(* 단 , 공유 Region 은 각 프로세스에서 다른 가상 주소를 가질 수 있음 )
■ 허용필드 : read-only, read-write, read-execute
프로세스 당 영역 테이블 (Pregion)
15
6.2 시스템 메모리의 배치
■ 해당 Region 의 내용이 실제 메모리상의 어느 부분에 위치해 있는 가를 나타내는 정보
■ 메모리를 관리하기 위한 데이터 구조
■ 정보가 들어가있는 위치를 다양화
리전 ( 영역 ) 테이블 (Region Ta-ble)
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 바이트의 페이지크기를 가진다면 ?
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 를 액세스하기를 원하는 경우
18
6.2 시스템 메모리의 배치
사용자 모드에서 커널 모드로의 변환
• 주소변환과정의 속도 향상을 위해 Hardware Register & Cache 를 사용
Memory management register triple
register#1 : 실제 메모리에서 페이지 테이블의 주소register#2 : 그 triple 을 통해 결정된 첫번째 가상 주소register#3 : 페이지 테이블 내의 페이지 수와 페이지 액세스 허용과 같은 통제정보를 가짐
※ exception 발생어떤 프로세스가 자신의 가상 주소 공간 밖의 메모리 위치 쓰기 방지가 되어 있는 텍스트 Region 내의 주소에 write
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
사용자 모드에서 커널 모드로의 변환
< 프로세스 페이지 테이 블 > < 커널 페이지 테이블 >
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페이지 테이블 정보를 복사하여 참조
21
Ⅲ
Ⅱ
6.1 프로세스 상태와 전이
6.2 시스템 메모리의 배치
6.3 프로세스의 실행 환경
Ⅰ
Ⅳ 6.4 프로세스의 실행 환경의 보관
22
6.3 프로세스의 실행환경
프로세스 실행환경
Register context
System-level context
User-level
context
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 엔트리
24
6.3 프로세스의 실행환경
층 3 의 커널 스택층 2 의 저장된
레지스터 실행환경
층 2 의 커널 스택층 1 의 저장된
레지스터 실행환경
( 사용자 수준 )
층 1 의 커널 스택층 0 의 저장된
레지스터 실행환경
.
.
.
실행환경의 동적 부분
층 3
층 2
층 1
커널실행환경계층 0
사용자 수준 실행환경
시스템 수준 실행환경의 정적 부분
프로세스 텍스트데이터스택
공유 데이터
프로세스 테이블 엔트리U area
프로세스당 영역 테이블(per process region ta-
ble)
실행환경의 정적 부분
25
Ⅱ
6.1 프로세스 상태와 전이
6.2 시스템 메모리의 배치
Ⅰ
Ⅳ 6.4 프로세스의 실행 환경의 보관
Ⅲ 6.3 프로세스의 실행 환경
26
6.4 프로세스의 실행환경의 보관
▶ 커널은 새로운 시스템 실행 환경 층을 PUSH 할 때마다 프로세스의 실행 환경을 보관
1. 시스템이 인터럽트를 받을 때
2. 프로세스가 System Call 을 실행할 때
3. 커널이 실행환경을 교환할 때
4. 중도포기 복귀를 위한 실행환경의 저장
5. 시스템과 사용자 주소 공간 사이의 데이터 복사
프로세스 실행환경의 보관
감사합니다
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)을 한 상태