제 8장 기억장치 관리 (Memory Management) 8.1 배경 주소 바인딩 (Address Binding)

Slides:



Advertisements
Similar presentations
1 08 시스템 구성도 고려사항 * 웹 서버 클러스터 구성  클러스터 구축은 ㈜ 클루닉스의 Encluster 로 구축 (KT 인증,IT 인증 획득, 실제 클러스터 구축 사이트 200 여곳 )  웹 서버 클러스터는 Dynamic, Static, Image.
Advertisements

제 8 장 메모리 관리전략. 개요 2 기억장치 관리의 발전 개요 SSD(Solid State Drive) – 반도체 메모리 내장함, 처리속도 빠르고 소음이 없고 전력소모량이 적은 플래시 메모리 기반의 모델 주소 바인딩 (address binding) – 정의 논리적.
컴퓨터와 인터넷.
Chatpter 07 메모리 관리 01 메모리 관리의 개요 02 연속 메모리 할당 03 분산 메모리 할당 1 : 페이징
제14장 동적 메모리.
8장 주 기억 장치 관리.
인공지능실험실 석사 2학기 이희재 TCP/IP Socket Programming… 제 11장 프로세스간 통신 인공지능실험실 석사 2학기 이희재
제 9 장 구조체와 공용체.
컴퓨터 프로그래밍 기초 [Final] 기말고사
제7강 학습 내용 주소지정 방식의 예 값 즉시 지정 방식과 실행 예 레지스터 직접지정 방식 메모리 직접지정 방식과 실행 예
CHAPTER 05. 운영 체제 컴퓨터 시스템과 사용자 간의 중개자_운영 체제의 개념과 동작 원리
운영체제 4장 요약정리(CPU 스케줄링) 2A 박훈.
가상 기억장치 (Virtual Memory)
가상 기억장치 (Virtual Memory)
어셈블리 문법 보강 4월 10일.
시스템 보안 [Buffer Overflow] DEC, 15, 2013 By 박동혁.
쉽게 풀어쓴 C언어 Express 제17장 동적메모리와 연결리스트 C Express Slide 1 (of 13)
UNIT 07 Memory Map 로봇 SW 교육원 조용수.
07. 디바이스 드라이버의 초기화와 종료 김진홍
CHAPTER 02 OpenCV 개요 PART 01 영상 처리 개요 및 OpenCV 소개.
기억 장치 관리 (Memory Management)
DK-128 ADC 실습 아이티즌 기술연구소
WinCE Device Driver 실습 #3
Chapter 08 가상 메모리(Virtual Memory)
DK-128 실습 EEPROM 제어 아이티즌 기술연구소
타이머카운터 사용법 휴먼네트웍스 기술연구소
DK-128 FND 실습 아이티즌 기술연구소 김태성 연구원
Chap 6.Assembler 유건우.
디지털회로설계 (15주차) 17. 시프트 레지스터와 카운터 18. 멀티바이브레이터 * RAM & ROM.
UNIT 07 Memory Map 로봇 SW 교육원 조용수.
리눅스 시스템 & 커널 기초 P.46 – P.53 이름: nsh009 학번: 112 1/20.
7장 메모리 관리 메모리 관리를 위한 메모리 할당 기법 과 경영에 대해 알아본다. 단편화 현상의 원인과 해결 방법을 알
제 8장 가상 기억장치 구성 A 박남규.
Chapter 08 가상 메모리(Virtual Memory)
DK-128 FND 실습 아이티즌 기술연구소
운영체제 (Operating Systems) (Memory Management Strategies)
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
7장 메모리 관리 메모리 관리를 위한 메모리 할당 기법과 경영에 대해 알아본다. 단편화 현상의 원인과 해결 방법을 알아본다.
USN(Ubiquitous Sensor Network)
7장 주기억장치 관리 A박도하.
논리회로 설계 및 실험 5주차.
DK-128 실습 내부 EEPROM 제어 아이티즌 기술연구소 김태성 연구원
DK-128 실습 타이머카운터 사용법 아이티즌 기술연구소
컴퓨터 프로그래밍 기초 - 10th : 포인터 및 구조체 -
컴퓨터 시스템 하드웨어 컴퓨터 시스템 소프트웨어 C P U Control Unit 입 력 장 치 출 력 장 치 ALU
ARM Development Suite v1.2
컴퓨터 프로그래밍 기초 - 8th : 함수와 변수 / 배열 -
빌드 성공.
Canary value 스택 가드(Stack Guard).
4장 가상 기억장치 관리 4.1 가상 기억 장치의 개요 4.2 주소사상 기법 4.3 블록 사상(block mapping)
제 6 장 가상 기억 장치의 구성 Section 1 개 요 Section 2 페이징 기법 Section 3 세그먼테이션 기법
8 가상 메모리.
AT MEGA 128 기초와 응용 I 기본적인 구조.
8장 가상 기억장치의 구성 C반 권예용.
운영체제 레프토 (8장 가상 기억장치 구성) b반 박상수.
멀티미디어시스템 제 5 장. 멀티미디어 데이터베이스 개념 IT응용시스템공학과 김 형 진 교수.
5.2.3 교환방식의 비교 학습내용 교환방식의 비교.
3.2 분기 명령어.
Summary of Pointers and Arrays
System Security Operating System.
Numerical Analysis Programming using NRs
제 4 장 Record.
1. 지역변수와 전역변수 2. auto, register 3. static,extern 4. 도움말 사용법
과 목 명 : 운영체제 담당교수 : 박 승 기 학 과 : 컴퓨터 소프트웨어 학 번 : 이 름 : 최 현 식
개정판 누구나 즐기는 C언어 콘서트 제13장 동적 메모리 출처: pixabay.
CODE INJECTION 시스템B 김한슬.
임시테이블과 테이블변수 SQLWorld Study Group - 최명환 -.
버스와 메모리 전송 버스 시스템 레지스터와 레지스터들 사이의 정보 전송을 위한 경로
2. 프로세스 B 안우진 - 운영체제 -.
ARP.
Presentation transcript:

제 8장 기억장치 관리 (Memory Management) 8.1 배경 8.1.1 주소 바인딩 (Address Binding) 바인딩: 한 주소 공간에서 다른 주소 공간으로의 사상 컴파일 시간, 적재 시간, 실행 시간 (그림 8.1) 8.1.2 동적 적재 (Dynamic Loading) 루틴이 실제로 호출될 때 까지는 디스크에 존재 예) 오류 처리 루틴 (매우 가끔 발생, 많은 양의 코드) OS 지원 없이 프로그래머가 구현 가능

8.1.3 동적 연결 (Dynamic Linking) 동적 연결 : 실행 시까지 메모리 상주 라이브러리 연결을 보류 정적 연결 : 이미지 내에 포함된 라이브러리의 복사본에 의한 자원 낭비가 문제 스터브(stub) : 이미지 당 하나, 라이브러리를 찾거나 적재 => 공유 라이브러리 8.1.4 중첩 (Overlay) 한 프로그램 내에서의 기억 장치 공유 (그림 8.2) 예) 중첩 A: 심볼 테이블(70K), 공통 루틴(30K), 패스 1(70K) 중첩 B: 심볼 테이블(70K), 공통 루틴(30K), 패스 2(80K) 중첩 구동기(overlay driver)가 추가로 필요(분기에 의해 실행) 적재는 빠르지만 실행은 늦어진다(중첩을 위한 입출력) 프로그래머의 부담이 크다

8.2 논리적/물리적 주소 공간 8.3 스웨핑 (Swapping) 논리적 주소(CPU 주소) vs. 물리적 주소(실제 주소) 실행시간 바인딩(동적 재배치) 기법: 두 주소가 달라짐 이 때의 논리 주소를 가상 주소(virtual address)라 한다 가상 주소에서 물리 주소로 사상하는 예 -> 기억장치 관리기(MMU) (H/W) (그림 8.3) 8.3 스웨핑 (Swapping) 주기억 장치와 보조 기억장치간 프로세스 이동 예) 방금 끝났거나 우선순위가 낮은 P를 swap(roll)-out CPU스케쥴러 <-> 기억장치 관리자(S/W) (그림 8.4)

바인딩에 따라 swap(roll)-in 주소가 달라짐 실행 시간 바인딩 => 이전 위치와 다른 위치로 swap-in 디스패쳐는 다음 P가 MM에 없고 빈 공간도 없으면, P를 하나 내보내고 해당 P를 불러온다 문맥 교환 시간 증가: 스웹시간(전송 시간 + 지연 시간) 주의: 입출력 계류 중인 P 수정된 스웨핑 UNIX: 평소에는 안하다가 P가 많아지면 스웹 시작 Windows: 새 P를 위한 공간이 없으면 스웹 사용자가 시기 결정

8.4.1 단일 분할 할당 (Single-Partition Allocation) 8.4 연속 할당 8.4.1 단일 분할 할당 (Single-Partition Allocation) 디스패쳐가 두 ‘레지스터’(재배치/기준, 한계) 설정 프로세스를 보호 MMU가 동적으로 논리 주소를 사상 (그림 8.6) OS의 크기가 가변적(매우 가끔 쓰는 루틴 포함)이거나 프로세스가 하나일 때 유용 8.4.2 다중 분할 할당 (Multiple-Partition Allocation) 여러 P를 MM으로 적재할 필요가 있다 가장 간단한 방법: 고정 크기 분할, 분할 당 1 개의 프로세스

충분한 크기의 블록이 여럿일 때 선택하는 방법 가변 크기 분할 (그림 8.7, 8.8) OS가 가용 구간 ‘테이블’(이용 가능한 블록 크기 목록) 유지 기준 레지스터(base register)도 필요 입력 큐(MM 차지를 위한) 유지 => 스케쥴로 순서 배치 충분한 공간이 없으면 => 대기 혹은 입력 큐 조사 P가 선택되면 충분한 크기의 블록을 찾아 할당 여분 공간은 남겨둠 중간 중간에 블록 분리/결합 충분한 크기의 블록이 여럿일 때 선택하는 방법 최초 적합(First-fit), 최상 적합(Best-fit), 최악 적합(Worst-fit)

8.4.3 외부 및 내부 단편화 외부 단편화(external fragmentation) 전체 가용 공간이 충분하지만 연속적이지 않은 현상 해결책: 압축(compaction) (그림 8.10) 압축은 재배치가 동적인 경우에만 가능 압축 시 코드 절약 방법: P 이동이 필요하면 일단 swap-out 내부 단편화: 블록 크기와 요구량이 미세한 차이(분리할 경우 비용이 더 듬) => 내부 조각을 버려둠 (그림 8.9)

8.5 페이징 (Paging) 8.5.1 기본 방법 외부 단편화의 또 다른 해결 방법 고정된 크기의 블록 (2~4Kbyte) (논리적) 페이지(page) -> 프레임(frame) (물리적) 논리 주소 -> -> 주소 변환 하드웨어 + 해당 P의 PT -> 물리 주소 (그림 8.12, 8.13, 8.14) 페이지 번호 페이지 오프셋 p d m - n n 페이지 테이블(Page Table)

새 P -> 프레임 할당 -> PT 갱신 (그림 8.15) 페이징 자체가 동적 재배치 외부 단편화 없고, 내부 단편화 있다 새 P -> 프레임 할당 -> PT 갱신 (그림 8.15) 할당시 프레임 테이블 사용 사용자 관점에서는 ‘연속된 기억장치를 혼자 사용’ 문맥 교환 시 디스패쳐가 PCB에 기록되어 있는 pointer를 사용하여 해당 프로세스의 PT로 교체 문맥 교환 시간 증가

8.5.2 페이지 테이블의 구조 8.5.2.1 하드웨어 지원  전용 레지스터 집합: 페이지 개수 만큼 페이지 테이블 기준 레지스터 (PTBR:page-table base register) PT를 주기억장치에 저장 (항목 수가 너무 많으므로) 문맥 교환시 이 레지스터(1개)만 변화시킴 문제점 : 한 word 접근을 위해 기억장치 2번 접근 보완책 연관 레지스터(associative register) / 보조 예비 기억장치(translation look-aside buffers(TLB)) 고속, 각 레지스터는 ‘키 : 값’ (그림 8.16) 적중률(hit ratio) : 연관 레지스터에서 발견되는 비율 

8.5.3 다단계 페이징 (Multilevel Paging) 8.5.2.2 보호 (Protection) 유효-무효(valid-invalid) 비트 (그림 8.17) 페이지 테이블 길이 레지스터(PTLR)를 사용하기도 함: 안 쓰는 페이지가 많은데 비트를 모두 기록하는 것은 낭비 8.5.3 다단계 페이징 (Multilevel Paging) 현대 컴퓨터: 매우 큰 논리 주소 공간(232~264) 예) 논리 주소 공간=32bit, 페이지 크기=4K ( 212 ) PT 항목수 = 100만 ( 220 ) PT 각 항목의 크기 = 4byte, PT 전체 크기 = 4Mbyte => 너무크다  32 - 12

2단계 페이징 기법(two-level paging scheme) (그림 8.18) PT를 쪼개어 각각을 페이지에 저장(PT로만 채워진 페이지) 64비트의 경우 3단계 페이징  페이지 번호 페이지 변위 p1 p2 d 10 10 12  바깥 페이지 안쪽 페이지 페이지 변위 p1 p2 d 42 10 12 2번째 바깥 페이지 바깥 페이지 안쪽 페이지 변위 p1 p2 p3 d 32 10 10 12

8.5.4 역 페이지 테이블 (Inverted Page Table) 실제 페이지(프레임) 하나에 하나의 테이블 항목 시스템에는 단지 하나의 PT만 존재 (그림 8.20) 테이블 저장량 감소, 테이블 탐색 시간은 증가 페이지 부재 (스웨핑 등으로) 시 문제 발생 외부 PT (P당 하나씩) 사용 => swap 8.5.5 공유 페이지 (Shared Pages) 재진입 코드(pure code) : 실행 도중 결코 변하지 않음 그림 8.21 (데이터는 각자 보유) <-> Thread (데이터까지 공유)

8.6 세그먼테이션 (Segmentation) 8.6.1 기본 방법  사용자의 입장(개념)에 더욱 가까운 주소 방식 프로그램은 가변 크기 세그먼트의 모임, 순서 무의미 위치의 기준은 해당 세그먼트의 시작 위치 Sqrt 명령의 5번째 명령문 논리공간 = 세그먼트(이름 + 길이)의 집합 (그림 8.22) 주소 = 세그먼트의 이름(번호) + 변위 페이징에서는 구분 없음(하나의 주소) 하드웨어가 처리, 사용자(컴파일러)는 모름 8.6.2 하드웨어 (그림 8.23, 8.24)

8.6.4 보호(Protection)와 공유(Sharing) 8.6.3 세그먼트 테이블의 구현 레지스터 집합 STBR, STLR : 연관 레지스터로 보완 (PTBR, PTLR처럼) 8.6.4 보호(Protection)와 공유(Sharing) 보호 비트(읽기/쓰기/실행 전용 표현), 배열 관리 세그먼트의 특별한 장점 세그먼트는 스스로 수정하지 않는다 공유 세그먼트 수준에서 공유 (그림 8.25) 편집기 코드(공유) + 각자의 독립 세그먼트(지역 변수) 함수 Sqrt 공유

s1 s2 d1 d2 8 10 6 10 8.6.5 단편화 (Fragmentation) 8.7 페이지화된 세그먼테이션 외부 단편화 => 압축 필요(가변 크기 분할 기법에서처럼) 8.7 페이지화된 세그먼테이션 세그먼트 테이블 오버헤드 / 외부 단편화오버헤드를 줄이기 위한 대안 예) 그림 8.26, 그림 8.27 세그먼트 번호 변위 s1 s2 d1 d2 8 10 6 10 세그먼트 테이블 오버헤드 감소 외부 단편화 감소