제 9 장 가상기억장치 (Virtual Memory)

Slides:



Advertisements
Similar presentations
제 8 장 메모리 관리전략. 개요 2 기억장치 관리의 발전 개요 SSD(Solid State Drive) – 반도체 메모리 내장함, 처리속도 빠르고 소음이 없고 전력소모량이 적은 플래시 메모리 기반의 모델 주소 바인딩 (address binding) – 정의 논리적.
Advertisements

8 가상 메모리.
컴퓨터와 인터넷.
UNIX 운영 체제의 설계 - Chapter 4. 파일의 내부 표현
컴퓨터 운영체제의 역사 손용범.
Image & Video processing
제14장 동적 메모리.
1. Windows Server 2003의 역사 개인용 Windows의 발전 과정
연결리스트(linked list).
컴퓨터 프로그래밍 기초 [Final] 기말고사
운영체제 4장 요약정리(CPU 스케줄링) 2A 박훈.
가상 기억장치 (Virtual Memory)
가상 기억장치 (Virtual Memory)
Windows Server 장. 사고를 대비한 데이터 백업.
07. 디바이스 드라이버의 초기화와 종료 김진홍
CHAPTER 02 OpenCV 개요 PART 01 영상 처리 개요 및 OpenCV 소개.
11장. 포인터 01_ 포인터의 기본 02_ 포인터와 Const.
기억 장치 관리 (Memory Management)
FTP 프로그램 채계화 박재은 박수민.
SqlParameter 클래스 선문 비트 18기 발표자 : 박성한.
                              데이터베이스 프로그래밍 (소프트웨어 개발 트랙)                               퍼스널 오라클 9i 인스톨.
WinCE Device Driver 실습 #3
운영체제 (Operating Systems)
보조저장장치 구조(Secondary Storage Structure)
제 4 장 가상 메모리 관리 4.1 개요 가상 메모리는 하나의 프로세스 전체가 한 번에 주기억 장치 내에 존재하지 않고 일부만 있어도 수행하게 하는 방법을 제공함. 가상 메모리를 사용하면 사용자는 실제 주소 공간의 크기에 구애 받지 않고 보다 큰 가상 주소 공간상에서 프로그래밍을.
리눅스 시스템 & 커널 기초 P.46 – P.53 이름: nsh009 학번: 112 1/20.
자료구조: CHAP 7 트리 –review 순천향대학교 컴퓨터공학과 하 상 호.
27장. 모듈화 프로그래밍.
메모리 관리 & 동적 할당.
멀티미디어시스템 제 6 장. 운영체제 IT응용시스템공학과 김 형 진 교수.
제 8장 가상 기억장치 구성 A 박남규.
뇌를 자극하는 Windows Server 2012 R2
제 8장 기억장치 관리 (Memory Management) 8.1 배경 주소 바인딩 (Address Binding)
제9장 가상 기억 장치(Virtual Memory)
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
USN(Ubiquitous Sensor Network)
7장 주기억장치 관리 A박도하.
DK-128 실습 내부 EEPROM 제어 아이티즌 기술연구소 김태성 연구원
컴퓨터 프로그래밍 기초 - 10th : 포인터 및 구조체 -
컴퓨터 시스템 하드웨어 컴퓨터 시스템 소프트웨어 C P U Control Unit 입 력 장 치 출 력 장 치 ALU
컴퓨터 프로그래밍 기초 - 8th : 함수와 변수 / 배열 -
보고서 #7 (기한: 6/2) 2개의 스택, stk1, stk2를 이용하여 큐를 구현하라.
네트워크 환경 구축과 이미지 전송 호스트/타겟 통신 직렬 통신을 이용한 이미지 전송 수퍼 데몬 BOOTP 환경 구축
4장 가상 기억장치 관리 4.1 가상 기억 장치의 개요 4.2 주소사상 기법 4.3 블록 사상(block mapping)
뇌를 자극하는 Solaris bible.
9장 파일시스템(File System) 박동근.
제9장 가상 메모리 관리.
가상 기억 장치(Virtual Memory)
8 가상 메모리.
AT MEGA 128 기초와 응용 I 기본적인 구조.
8장 가상 기억장치의 구성 C반 권예용.
01. 분산 파일 시스템의 개요 네트워크에 분산된 파일을 사용자가 쉽게 접근하고 관리할 수 있게 해준다.
기초C언어 제2주 실습 프로그래밍의 개념, 프로그램 작성 과정 컴퓨터시뮬레이션학과 2016년 봄학기 담당교수 : 이형원
멀티미디어시스템 제 5 장. 멀티미디어 데이터베이스 개념 IT응용시스템공학과 김 형 진 교수.
발표자 : 이지연 Programming Systems Lab.
System Security Operating System.
프로그래밍 언어 학습을 위한 가상실습환경 창원대학교 이수현.
가상 기억 장치(Virtual Memory)
동적메모리와 연결 리스트 컴퓨터시뮬레이션학과 2016년 봄학기 담당교수 : 이형원 E304호,
제 4 장 Record.
06. 디바이스의 등록과 해제 김진홍
29장. 템플릿과 STL 01_ 템플릿 02_ STL.
과 목 명 : 운영체제 담당교수 : 박 승 기 학 과 : 컴퓨터 소프트웨어 학 번 : 이 름 : 최 현 식
9장 파일 시스템 이성연.
제 8장 가상 기억장치의 구성과 관리 장태양.
임시테이블과 테이블변수 SQLWorld Study Group - 최명환 -.
교착 상태 해결 : 교착 상태 탐지 교착 상태 탐지(Deadlock Detection)
6 객체.
2. 프로세스 B 안우진 - 운영체제 -.
ARP.
Presentation transcript:

제 9 장 가상기억장치 (Virtual Memory) 프로세스가 기억장치에 없어도 실행이 가능한 기법 장점: 사용자 프로그램이 실제 기억장치보다 클 수 있다 단점: 구현이 어렵고 성능이 저하될 우려가 있다 9.1 배경 (Background) 프로그램 전체가 한꺼번에 요구되지는 않는다 오류 처리 코드: 매우 가끔 필요 배열, 테이블: 실제 필요량보다 크게 선언 프로그램 선택사항(option): 사용되지 않는 기능이 많음

부분 저장(기억장치에) 실행의 장점 물리 기억장치와 논리 기억장치를 분리 기억 공간의 크기 제약이 없어진다 같은 시간에 더 많은 수의 프로그램을 수행가능 적재(load)/스웹(swap)을 위한 I/O 시간 감소 물리 기억장치와 논리 기억장치를 분리 프로그래머는 기억장치 크기와 중첩(overlay)등을 고민하지 않음 (그림 9.1)

9.2 요구 페이징 (Demand Paging) 요구 페이징 순수 요구 페이징 필요한 페이지만 주기억 장치에 적재 (cf. 스웨핑-그림 9.2 ) 유효 무효 비트가 무효(invalid)면, 타당하지 않거나(주소 공간에 포함되지 않은 페이지), 타당하지만 현재 ‘디스크’에 있음을 의미 무효 페이지를 접근하려 하면, 페이지 부재(page fault) 트랩(trap) 발생 (그림 9.4) 순수 요구 페이징 최초 실행 시 매번 페이지 부재에 의해 페이지를 적재 요구될 때까지 결코 페이지를 기억장치에 들이지 않는다 H/W에 의해

9.3 요구 페이징의 성능 유효 접근 시간 = (1-p)  ma + p  페이지 부재 시간 페이지 부재 시간의 주 구성 요소 1. 페이지 부재 인터럽트의 처리 2. 페이지를 디스크로부터 판독 3. 프로세스 재시작 페이지 부재 횟수는 성능을 심각히 저하시킬 수 있다 예) 접근 시간 증가를 10% 미만으로 유지하려면... ma: 100nsec, 페이지 부재 시간: 25msec 110 > 100 + 25,000,000  p, p < 0.0000004 => 2백5십만번 중 한번 이하로 부재가 발생해야... 그러나 전체 P를 다 읽고 시작하는 것보단 나을 수 있다 페이지 부재 확률

9.4 페이지 교체 (Page Replacement) 새 페이지를 위한 가용 공간이 없으면 페이지 교체 필요 페이지 교체 과정 1. 디스크에서 페이지 위치 확인 2. 가용 프레임 찾기 a. 가용 프레임이 있으면 사용 b. 없으면 희생 프레임 선정(페이지 교체 알고리즘) c. 희생 페이지를 디스크에 기록하고, PT/FT 수정 3. 가용 프레임으로 페이지 판독, PT/FT 수정 4. 사용자 프로세스 재시작 수정(dirty) 비트: 페이지가 변화(기록)되었는지의 여부 수정되지 않았다면 디스크로 기록할 필요 없음

9.5 페이지 교체 알고리즘 (Page Replacement Algorithm) 가장 낮은 페이지 부재율 달성이 목표 참조열(reference string): 평가의 기준 예) 참조주소 페이지당 100바이트 참조열 이후의 평가 기준 프레임 수: 3개 참조열: 7, 0, 1, 2, 0, 3, 0, 4, 2, 3, 0, 3, 2, 1, 2, 0, 1, 7, 0, 1 0100, 0432, 0101, 0612, 1012, 0103, 0104, 0101, 0611, 0102, 0103, 0104, 0101, 0610, 0102, 0103, 0104, 0101, 0609, 0102, 0105 1, 4, 1, 6, 1, 6, 1, 6, 1, 6, 1

9.5.2 최적 페이지 교체 알고리즘 (Optimal Algorithm, OPT)    9.5.1 선입선출 (FIFO) 알고리즘    가장 오래된 페이지를 교체 (그림 9.8) 프로그램하기 쉽다 Belady의 이상 현상(abnomaly): 프레임 수가 증가함에 따라 오히려 페이지 부재가 증가 (그림 9.9) => FIFO의 문제 9.5.2 최적 페이지 교체 알고리즘 (Optimal Algorithm, OPT)    가장 낮은 부재율, 이상 현상 없음 "앞으로 가장 오래 사용되지 않을 페이지를 교체하라” (그림 9.10) 구현 힘듬: 미래의 지식 요구 => 비교 기준으로 사용 (cf. SJF)

9.5.3 LRU (Least Recently Used) 알고리즘    가까운 미래의 근사치 대신 가장 최근의 과거 정보 활용 오랫동안 사용되지 않은 페이지를 교체 과거에 대한 OPT FIFO보다 낫지만 구현이 문제: 최후 사용 시간의 순서 결정 계수기(counter) : 페이지 테이블 항목에 참조 시간 기록 필드 유지 비용, 클럭 비용 스택(stack) (페이지 번호의) : 페이지가 참조될 때마다 스택의 Top으로 이동 이중 연결 리스트로 구현 (그림 9.12) Belady이상 현상 없음 하드웨어 지원 필요 (없으면 인터럽트가 너무 많음)

9.5.4.1 참조 비트(reference bits)가 추가된알고리즘 9.5.4 LRU 근접 알고리즘 페이지의 참조 비트(reference bit) (h/w에 기반)를 활용 9.5.4.1 참조 비트(reference bits)가 추가된알고리즘 일정 간격으로 참조 비트를 기록(예: 11010010) 타이머 인터럽트 -> 최상위 비트 교체 & shift-right 9.5.4.2 2차 기회(Second Chance) 페이지 교체 알고리즘 참조 비트가 오직 하나, circular 큐 (clock알고리즘) (그림 9.13) 참조 비트가 1인 경우만 한 번 기회를 더 줌 1이면 0으로 바꾸고 한 바퀴 돌고 나서도 0이면 쫒아냄 모든 비트 1이면 선입선출(FIFO) 처리

9.5.4.3 2차 기회 개선 (Enhanced Second Chance) 알고리즘 앞과 유사(순환)하지만 “참조 비트와 수정 비트 쌍” 사용 (0,0), (0,1), (1,0), (1,1)의 4등급으로 구분 참조비트가 1:최근 사용, 수정비트가 1:디스크 기록 필요 최저 등급 중 처음 만난 페이지를 교체 9.5.5 계수 알고리즘 (Counting Algorithm) 각 페이지를 참조한 숫자에 대한 계수기 유지 LFU 알고리즘: 최소 빈도 페이지를 교체 문제:초기에만 집중 사용 해결:시간에 따라 지수적으로 계수 감소 MFU 알고리즘: 최대 빈도 페이지를 교체(최신이므로) 둘다 어렵고 성능도 OPT에 접근 못함

9.5.6 페이지 버퍼 알고리즘 (Page Buffering Algorithm) 페이지를 내보내는 시간을 줄이자! 1. 희생될 프레임을 디스크로 보내기 전에 저장소(pool)에 저장: 페이지가 나가기 전에 프로그램을 빨리 재시작 가능 2. “변경”된 페이지의 리스트 유지 페이지 장치가 쉴 때마다 변경된 페이지를 디스크에 기록하고 변경 비트를 0으로 reset 3. 저장소의 각 프레임에 어떤 페이지가 있는지를 기억 디스크까지 가지 않고 저장소에서 직접 다시 사용 => FIFO 보완 방법

9.6 프레임의 할당 9.6.1 최소 프레임 수 여러 프로세스를 한정된 기억장치에 어떻게 배분? 하나의 명령어가 참조할 수 있는 모든 페이지를 수용해야 (페이지 부재 시 명령어를 처음부터 다시 시작하지 않게) 최소 프레임 수는 명령어 집합 구조(컴퓨터 구조)에 의해 정의 간접 참조가 문제 (예: move의 경우 6프레임 필요) 무한적 간접 참조 가능: 횟수 제한(계수기)

9.6.3 전역 대 지역 할당 (Global Versus Local Allocation) 9.6.2 할당 알고리즘 균등 할당, 비례 할당 (ai = si/S X m) 9.6.3 전역 대 지역 할당 (Global Versus Local Allocation) 지역 교체: 각 P가 자신에 할당된 프레임 중에서만 선택 가능 전역 교체: 자신의 페이지 부재율 조정 불가 (다른 P의 영향) 그러나 더 좋은 성능, 더 일반적

9.7 스레싱 (Thrashing)    한 P의 페이지 부재-> 다른 P의 페이지 부재 -> CPU 이용률 저하-> 새 P 시작(다중 프로그래밍 정도(degree) 증가)-> 더 심각한 이용률 저하 ->스레싱 (그림 9.14) 완화 방안: 지역/우선순위 교환 알고리즘 사용 여전히 개별 P의 스레싱은 가능->유효 접근 시간 증가 방지 방안: 작업 집합 (working set) 실행의 지역성 모델 (locality model) 지역: 실제로 함께 사용되는 페이지의 집합 프로그램은 여러 지역으로 구성(예: 서브루틴) 지역은 겹칠 수 있다 현재의 지역보다 많은 수의 프레임을 할당해야...

9.7.2 작업 집합 (Working Set) 모델 9.7.3 페이지 부재 (Page-Fault) 빈도 작업 집합: 최근  번의 참조에 포함된 페이지의 집합 : 작업 집합 창 (그림 9.16) “지역”의 근사값 “D > 유효 프레임의 수” 이면 스레싱 발생 D = WSSi (WSSi=작업 집합의 크기) 중지할 P를 선택하고 다른 P에 프레임 분배 스레싱을 방지하면서 다중 프로그래밍 정도를 높임 어려운 점: 작업 집합의 추적=>스레싱의 직접 조절은 힘듬 9.7.3 페이지 부재 (Page-Fault) 빈도 페이지 부재율의 상/하한을 정하여 직접적으로 페이지 부재율을 조절

9.8 기타 고려사항 9.8.1 프리페이징 (Prepaging) 9.8.2 페이지 크기 프로세스 시작 시 참조가 예상되는 페이지들(예: 작업 집합)을 한꺼번에 가져옴 프로세스 초기의 페이지 부재 집중 현상을 완화 9.8.2 페이지 크기 “페이지 테이블, 전송률, 페이지 부재”의 관점에서는 페이지가 클수록 좋다 “내부 단편화, 지역성”의 관점에서는 작을수록 좋다 최근 추세는 페이지가 커지는 방향 고용량, 고속화=>단편화 등은 별로 문제되지 않음 9.8.3 역 페이지 테이블 (8.5.4 참조)

9.8.5 입출력 상호 잠금 (Input/Output Interlock) 9.8.4 프로그램 구조 자료 구조/프로그래밍 구조를 조정=>지역성 증가 예) 배열, 적재기(서로 자주 호출하는 모듈들을 같은 페이지에) LISP는 포인터가 많아 (PASCAL보다) 참조 지역성이 낮다 9.8.5 입출력 상호 잠금 (Input/Output Interlock) 문제 상황: 어떤 P가 I/O 큐에 있는 동안 I/O버퍼에 해당되는 페이지가 다른 P에 의해 교체됨 (그림 9.18) 해결안: 1.사용자 기억장치에 대해서는 I/O를 수행하지 않음 사용자 기억장치-> 시스템 기억장치(복사)-> I/O 장치 오버헤드가 너무 크다 2.잠금 비트(lock-bit): I/O 관련 페이지는 교체 않함

9.8.6 실시간 처리 (Real-Time Processing) 또 다른 문제 상황 예: 낮은 우선순위 P가 쓰려고 방금 가져온 페이지를 높은 우선순위 P가 교체하는 현상=>한번도 사용되지 않은 새 페이지는 교체하지 않음 9.8.6 실시간 처리 (Real-Time Processing) 가상 메모리는 실시간 처리에 부적합 결합 예: Solaris 2=> 실시간 P에 페이지 잠금 허용 9.9 요구 세그먼테이션 (Demand Segmentation) 페이지 대신 세그먼트 단위로 메모리를 교체: OS/2

제 10 장 파일 시스템 인터페이스 10.1 파일 개념 10.1.1 파일 속성 10.1.2 파일 조작 파일 시스템 = 파일 집합체 + 디렉토리(분할) 구조 10.1 파일 개념 파일: 보조기억장치에 기록된 연관된 정보의 집합체 보조기억장치의 가장 작은 논리적 할당 요소 프로그램 + 자료(data) 10.1.1 파일 속성 이름, 형태, 위치, 크기, 보호, 시간/날짜/사용자 식별 10.1.2 파일 조작 생성: 공간 찾기, “디렉토리”에 파일 항목 생성 파일이 존재하는 장치와 위치에 대한 포인터 파일의 이름과 위치 기록

개방(open) : 개방 파일 테이블(open-file table)   기록: 시스템 호출 (예: write(fname, info) ) 판독 재설정(reposition): seek 삭제(공간 회수, 디렉토리 항목 제거) , 절단(길이만 0) 개방(open) : 개방 파일 테이블(open-file table)   반복적인 디렉토리 탐색을 피함 개방 시 디렉토리 항목을 open-file table로 복사 현재 파일 포인터/파일 개방 카운트/디스크 위치 기억장치 사상(memory mapped) 파일   (그림 10.1) 현재 파일 위치 포인터(current file position pointer) 사용

10.1.3 파일 형태 10.1.4 파일 구조 대개, 파일 이름으로 파일의 형태를 구분 효율적으로 파일을 다룸 (그림 10.2) 10.1.4 파일 구조 파일의 구조를 구분할 필요 (예: .hwp <-> .dat) .hwp의 앞 부분에 자동 프로그램 연결을 위한 정보 포함 UNIX의 경우에는 구조 구분을 하지 않음 구조 구분이 적으면 프로그래밍이 번거롭고, 많으면 운영체제의 크기가 증가

10.1.5 내부 파일 구조 파일(논리 레코드의 집합) -> “블록(block)” -> 디스크 10.2 접근 방법 10.2.1 순차 접근 테이프 모델 (그림 10.3) 10.2.2 직접 접근 디스크 모델 블록 13 판독->블록 7기록->… 항로편 713의 여분 좌석수를 713번 블록에 저장: hash 사람 이름 DB에서 (사람 이름 to 블록번호) 조합(pack)/분해(unpack)

10.2.3 기타 접근 방법 10.3 디렉토리 구조 색인(index): 필요한 블록에 대한 포인터 (그림 10.5) 2차 색인: IBM의 ISAM(Indexed Sequential Access Method) 10.3 디렉토리 구조 분할요소(partition): 디렉토리 구성의 논리적 단위 (그림 10.6) 디렉토리상 동작 파일의 탐색/생성/삭제/재명명/traverse(훑기), 리스트(dir) 디렉토리의 논리적 구조 1단계/2단계/트리/비순환 그래프/일반 그래프 (그림 10.7~10.11)

10.4 보호 (가장 일반적이고 쉬운 방법은 “복사”) 10.4.1 접근의 형태 10.4 보호 (가장 일반적이고 쉬운 방법은 “복사”) 10.4.1 접근의 형태 다른 사용자의 파일 접근 형태를 제한 판독/기록/실행/추가(append)/삭제/리스트 10.4.2 접근 리스트와 그룹 접근 리스트: 파일별로 접근 가능한 사용자들 기록 (비효율적) 대안1:소유자(owner)/그룹/모든 사람(others)으로 구분 대안2: 암호 => 파일별/디렉토리별? all or nothing/다중암호? 10.5 일관성 의미 구조 (다수 사용자가 공유 파일 동시 접근) UNIX: 한 사용자가 개방된 파일에 기록하면 동시에 다른 사용자가 볼 수 있음 (단일 영상) <-> Andrew(세션 의미 구조) cf. HWP