운영체제 (Operating Systems) (Memory Management Strategies)

Slides:



Advertisements
Similar presentations
Dept. Computer Engineering DBLAB 정보처리개론 담당 교수 : 김정석 2009 년도 1 학기.
Advertisements

컴퓨터의 구조 2006년 2학기 컴퓨터의 개념 및 실습.
OS 소개 Introduction 설계목표 기본 용어 Resource Management History.
제 4 장 변수, 영역, 수명 변수 바인딩 영역 기억장소 할당과 수명 변수와 그 환경 변수 초기화 상수와 변수.
Basic of Buffer Over Flow
Linux/UNIX Programming APUE (The Environment of a UNIX Process)
제8장. RISC 및 슈퍼스칼라 프로세서 8.1 RISC의 출현 동기 8.2 RISC의 발전 경위
Part01. 시스템 해킹을 위한 기초 지식 Chapter01. 운영체제에 대한 이해
제 2장 컴퓨터 구조.
9장 가로채기(Interrupt) Slide 1 (of 15).
기본 컴퓨터 프로그래밍 Lecture #6.
Operating Systems Overview
3장. 컴퓨터의 기억장치 학번 : 이름 : 김현화.
7장 : 캐시와 메모리.
3장 MPU 내부구조 Slide 1 (of 28).
임베디드 하드웨어 Lecture #6.
컴퓨터 과학 개론 √ 원리를 알면 IT가 맛있다 컴퓨터 과학도를 위한 첫 전공서 ehanbit.net.
컴퓨터 구조학 정보보호학과.
12. 데이터베이스 설계.
Department of Computer Engineering
공학기초설계 Youn-Hee Han 강의 소개 & MinGW & gcc 공학기초설계 Youn-Hee Han
자바 가상 기계 (Java Virtual Machine)
제 3 장 로더와 링커(Loaders and Linkers)
컴퓨터 구조.
1 컴퓨터 시스템 소개.
4장. 컴퓨터 시스템의 구성과 기능 다루는 내용 컴퓨터 분해를 통한 본체 살펴보기 컴퓨터 구성요소 컴퓨터의 기능
+ 가상 메모리 -> 물리 메모리 Selector Offset DIR Page Segmetatation
9장. 중앙처리 장치의 조직과 기능 다루는 내용 컴퓨터 본체에서 CPU의 위치 살펴보기 CPU의 성능, 기능, 조직
1 마이크로프로세서의 원리 마이크로컨트롤러 AVR ATmega128.
2장 운영 체제의 개요 운영체제의 개념 운영체제의 유형 운영체제의 발전 과정 운영체제의 구성 운영체제 서비스 시스템 구조
Chapter 7. Pentium Processor
Computer Architecture
리버스 엔지니어링 안녕하십니까? 리버스 엔지니어링 발표를 맡은 정창하입니다. 지금부터 리버스 엔지니어링 발표를
6 중앙처리장치의 조직과 기능 IT CookBook, 컴퓨터 구조와 원리 2.0.
컴퓨터 시스템의 개요.
Lecture #3 프로세스(Process).
Geek-OS Project 정영진
3주 컴퓨터구조.
8086 프로세서의 구조 및 동작 방식 시스템 프로그래밍 - Lecture #2 신라대학교 컴퓨터공학과 시스템 프로그래밍.
Xen and the Art of Virtualization
제3,4,5장 프로세스, 스레드 관리 CPU 스케줄링.
Chapter 10. 파일 시스템 인터페이스(File System Interface)
파일 시스템 인터페이스(File System Interface)
제 1장 시스템 소프트웨어의 개요.
임베디드 소프트웨어 설계.
Computer System Architecture
Chapter 4 The Von Neumann Model.
제1장 시스템 소프트웨어의 개요 컴퓨터시스템 및 하드웨어 구성 컴퓨터의 구성과 기능 시스템프로그램의 개요
제5장 CPU스케줄링(CPU Scheduling)
제10,11,12장 파일시스템 디스크 스케줄링.
컴퓨터 시스템 개관 시스템 프로그래밍 - Lecture #1 신라대학교 컴퓨터공학과 시스템 프로그래밍.
제 4 장 가상 메모리 관리 4.1 개요 가상 메모리는 하나의 프로세스 전체가 한 번에 주기억 장치 내에 존재하지 않고 일부만 있어도 수행하게 하는 방법을 제공함. 가상 메모리를 사용하면 사용자는 실제 주소 공간의 크기에 구애 받지 않고 보다 큰 가상 주소 공간상에서 프로그래밍을.
기억장치 관리(Memory Management)
7장 메모리 관리 메모리 관리를 위한 메모리 할당 기법과 경영에 대해 알아본다. 단편화 현상의 원인과 해결 방법을 알아본다.
윤성우의 열혈 C 프로그래밍 윤성우 저 열혈강의 C 프로그래밍 개정판 Chapter 09. C언어의 핵심! 함수!
1. 컴퓨터 시스템 구성요소 메모리(Memory) 캐시메모리 개념 캐시메모리의 특징 적중률(hit ratio)
UNIT 21 Flash Memory Controller 로봇 SW 교육원 조용수.
Chapter 12 Memory Organization
Lecture #6 제5장 기억장치 (1).
23. Unix 시스템 커널. 개요 커널의 기본 서비스 커널의 특징 참고서적 프로세스 관리 장치 관리 파일 관리 가상 메모리
Signature, Strong Typing
Signature, Strong Typing
제9장 가상 메모리 관리.
기억장치 관리(Memory Management)
제 8 장 가상 기억장치 구성 이나현.
자료구조 세미나 발표 주제: 자료구조 기초 - 1회 차: 자료구조의 정의, 기초 지식 (함수, 포인터, 레퍼런스)
1. 데이터베이스 환경.
임베디드 하드웨어 Lecture #6.
Lecture 7 7-Segment LED controller using u-controller
가상 기억장치 (Virtual Memory)
Presentation transcript:

운영체제 (Operating Systems) (Memory Management Strategies) 메모리 관리 전략 (Memory Management Strategies) 문양세 강원대학교 IT대학 컴퓨터과학전공

강의 목표 메모리 하드웨어를 구성하는 다양한 방법을 학습한다. 메모리 관리 전략 메모리 하드웨어를 구성하는 다양한 방법을 학습한다. 페이징과 세그먼테이션 기법을 포함한 다양한 메모리 관리 기법을 학습한다.

세그먼테이션(Segmentation) 요약 강의 목차 메모리 관리 전략 배경 스와핑(Swapping) 연속 메모리 할당 페이징(Paging) 세그먼테이션(Segmentation) 요약

프로그램 실행과 메인 메모리 메모리는 각각 주소가 할당된 일련의 워드 또는 바이트로 구성된다. 메모리 관리 전략 메모리는 각각 주소가 할당된 일련의 워드 또는 바이트로 구성된다. CPU는 PC가 지시하는 대로 메모리로부터 다음 명령어를 가져온다. 해당 명령어는 필요한 경우 추가적인 데이터를 가져올 수 있으며, 반대로 데이터를 메모리로 내보낼 수 있다. 전형적인 명령어 실행 절차 메모리로부터 한 명령어를 가져온다. 가져온 명령어를 해독하고, 메모리에서 피연산자(operand)를 가져와 명령어를 실행한다. 실행 결과를 메모리에 다시 저장한다.

레지스터-캐시-메모리 기계 명령어는 메모리 주소만을 인수로 취하고, 디스크 주소는 인수로 취하지 않는다. 메모리 관리 전략 기계 명령어는 메모리 주소만을 인수로 취하고, 디스크 주소는 인수로 취하지 않는다. 따라서, 모든 명령어와 데이터들은 CPU가 직접 액세스할 수 있도록 메모리 혹은 레지스 터에 있어야 한다. 만일, 메모리에 없다면, 이를 처리하기 전에 디스크에서 메모리로 옮겨야 한다. CPU의 명령어/데이터 접근 레지스터들은 일반적을 CPU clock의 1 cycle(1 clock tick)로 접근이 가능하다. 반면에, 메모리는 많은 CPU clock tick을 필요로 하고, 이로 인해 데이터가 없어서 명령 어를 실행하지 못하고 지연되는(stall) 현상이 발생할 수 있다. 이를 해결하기 위해, 메모리와 레지스터에 캐시를 추가하여 성능을 보완한다.

기준 및 상한 레지스터 (1/3) CPU 스케줄링의 결과로 다음 두 가지를 향상시킬 수 있다. 성능 향상을 인식하기 위해서는 메모리 관리 전략 CPU 스케줄링의 결과로 다음 두 가지를 향상시킬 수 있다. CPU 사용률 사용자에 대한 컴퓨터의 반응 속도 성능 향상을 인식하기 위해서는 메모리에 여러 개의 프로세스를 유지해야 한다. 프로그램은 실행을 위해 메모리로 옮겨져서 독립된 공간에 위치한다 각 프로세스는 분리된 메모리 공간을 갖는다 기준 레지스터(base register)와 상한 레지스터(limit register)는 물리 메모리 내의 프로 세스 주소 공간을 결정하는 데 사용된다.  프로세스가 접근할 수 있는 합법적(legal) 메모리 주소 영역을 설정한다. 기준 레지스터는 가장 작은 물리 메모리 주소를 가진다. 상한 레지스터는 프로세스 주소 공간의 크기를 저장한다. OS Process 1 Process 2 Process 3

기준 및 상한 레지스터 (2/3) 왼쪽 메모리 맵에서 두 번째 프 로세스 기준 레지스터: 300040 메모리 관리 전략 왼쪽 메모리 맵에서 두 번째 프 로세스 기준 레지스터: 300040 상한 레지스터: 120900 이 프로세스가 접근할 수 있는 물리 메모리 범위는 300040부터 420940까지 이다.

기준 및 상한 레지스터 (3/3) 메모리 관리 전략 메모리 공간 보호는 CPU가 사용자 모드에서 생성되는 매 주소를 레지스 터(기준 및 상한)와 비교함으로써 이루어진다. 모든 불법적인 메모리 접근은 운영체제에게 트랩(trap)을 통해서 알린다. 범위를 벗어나는 메모리 접근 시도는 치명적 에러로 취급한다. 커널 모드에서 동작하는 운영체제는 모든 메모리 영역(운영체제, 사용자 영역)의 접근에 어떠한 제약도 받지 않는다.

입력 큐(Input Queue) 프로그램은 디스크에 이진 실행 파일(binary executable file)로 저장된다. 메모리 관리 전략 프로그램은 디스크에 이진 실행 파일(binary executable file)로 저장된다. 실행되기 위해, 프로그램은 메모리로 옮겨져 “프로세스”가 되어야 한다. 메모리 관리 전략에 따라, 프로세스는 실행되는 동안 디스크와 메모리 사이를 왔다 갔다 할 수 있다. 디스크에서 메모리로 들어오기를 기다리고 있는 프로세스들의 집합은 이른바 입력 큐를 형성한다. 입력 큐: 디스크 상의 프로세스 집합으로, 실행되기 위해 메모리로 옮겨 지기를 기다리고 있다.

사용자 프로그램의 단계별 처리 과정 사용자 프로그램들은 수행되기 전에 여러 단계를 거친다. 메모리 관리 전략 사용자 프로그램들은 수행되기 전에 여러 단계를 거친다. 각각의 단계에서 다른 방법으로 주소 가 표현될 수 있다. 명령어(instructions) 자료(data) 주소의 표현/변환 예제 소스 프로그램의 주소는 일반적으로 기호로 나타낸다. (int A) 컴파일러는 기호 주소를 재배치 주소로 바 인드할 것이다. (첫 번째 바이트로부터 14번 째 바이트 주소) 연결 편집기(linkage editor)나 적재기 (loader)는 재배치 주소를 절대 주소로 바인 드할 것이다. (74014)

명령어와 데이터의 메모리 주소 바인딩 메모리 관리 전략 명령어와 데이터의 메모리 주소에 대한 주소 바인딩은 세 가지 다른 단계 에서 이루어질 수 있다. 컴파일 시간(compile time): 메모리 위치를 사전에 안다면, 절대 코드(절대 주소)가 생성될 수 있다. 시작 위치가 바뀌면 코드를 재컴파일 해야 한다. (MS-DOS의 .com) 적재 시간(load time): 메모리 위치가 컴파일 시간에 알려지지 않았다면 재배치 코드를 생성하 고, 실제 물리 주소는 메모리로 실제 적재되는 시간에 결정된다. 실행 시간(execution time): 프로세스가 실행 동안 하나의 메모리 세그먼트에서 다른 세그먼트로 옮 겨갈 수 있다면, 바인딩은 실행 시간까지 미뤄진다. 주소 맵 사용을 위한 하드웨어 지원이 필요하다. (예, 기준 및 상한 레지스터) 실행 시, 논리 주소(가상 주소) vs 물리 주소 매핑이 필요하다.

논리 주소 공간 vs 물리 주소 공간 메모리 관리 전략 분리된 물리 주소 공간(separate physical address space)에 바인딩 되는 논리 주소 공간(logical address space) 개념이 메모리 관리의 핵심이다. 논리 주소: CPU에 의해 생성된다. 가상 주소(virtual address)라고도 불린다 물리 주소: 메모리 유닛에서 사용되는 실제 주소이다. 컴파일 시간 및 적재 시간 주소 바인딩에서는 논리와 물리 주소가 같다. 일단, 메모리에 적재된 이후에는 CPU가 사용하는 주소가 절대 물리 주소가 되는 것이다. 반면에, 실행 시간 주소 바인딩에서는 논리와 물리 주소가 다르다. CPU는 논리 주소를 사용하며, 이 주소는 적절한 변환을 거쳐 물리 주소에 매핑된다.

메모리 관리 유닛(MMU) 메모리 관리 전략 MMU(memory management unit): 가상 주소를 물리 주소로 매핑시키는 하드웨어 장치 MMU 방법에서, 재배치 레지스터(기준 레지스터에 해당)의 값은 주소가 메모리로 보내질 때마다 사용자 프로세스에 의해 생성되는 모든 주소에 더해진다. 예를 들어, 재배치 레지스터 값이 14000이라면, 프로세스가 200번지를 액세스할 때 실 은 메모리의 14200번지를 액세스하게 된다. 사용자 프로그램(프로세스)의 모든 주소는 논리 주소를 취급한다. 사용자 프로그램은 실제적인 물리 주소를 결코 알지 못한다.

재배치 레지스터를 사용한 동적 재배치 재배치 레지스터 = 기준 레지스터 메모리 관리 전략 재배치 레지스터 = 기준 레지스터 사용자 프로세스에 의해 생성되는 모든 주소(CPU가 사용하는 주소)에 재배치 레지스터의 값이 더해진다. 사용자 프로그램은 논리 주소를 사용하고, 메모리 매핑 하드웨어는 논리 주소를 물리 주소로 바꾼다.

동적 적재(Dynamic Loading) 메모리 관리 전략 프로세스가 실행되기 위해서는 그 프로세스 전체가 미리 메모리에 올라 와 있어야 한다? 이 경우, 프로세스 크기는 메모리 크기보다 커서는 안 된다. 또한 메모리 공간의 효율성이 크게 떨어진다.  동적 적재/동적 연결을 활용한다. 동적 적재에서 각 루틴은 실제 호출 전까지는 메모리에 올라오지 않는다. 예를 들어, main 루틴이 먼저 적재되고, main이 호출하는 다음 루틴이 적재된다. 사용되지 않는 루틴들은 절대로 미리 적재되지 않는 장점이 있다. (자주는 아니지만) 대규모 코드가 필요할 때도 유용하다. 라이브러리 측면에서, 다음의 동적 연결(dynamic linking)과 대비하는 측 면에서 정적 연결(static linking)이라 할 수 있다. 즉, 프로그램에서 사용하는 라이브러리들은 해당 프로그램 내에 포함되어야 한다.

동적 연결(Dynamic Linking) 메모리 관리 전략 정적 연결(static linking): 라이브러리가 프로그램 이미지에 결합된다. 프로그램 크기가 커지고, 동일한 라이브러리 코드가 메모리에 중복될 수 있다. 동적 연결: 라이브러리 연결이 실행(호출) 시기까지 연기된다. printf()를 사용하는 프로세스가 10개라 해도 printf() 코드는 한 곳에만 존재한다. 동적 연결에서는 라이브러리를 부르는 곳마다 스텁(stub)이 생긴다. 스텁은 (작은 코드 조각으로) 메모리에 존재하는 라이브러리를 찾는 방법이나, 메모리에 없을 경우 해당 라이브러리를 적재하는 방법을 알려준다. 위 방법으로 스텁은 라이브러리 루틴의 주소를 알아내게 되고, 자신을 그 루틴의 주소로 대체한 후 해당 루틴을 수행한다. 동적 연결은 라이브러리를 변경할 때도 유용하다. 라이브러리는 어느 때나 새로운 버전으로 교체가 가능하다. 정적 연결이라면, 해당 라이브러리를 포함하는 모든 프로그램이 새로 링크되어야 한다.

세그먼테이션(Segmentation) 요약 강의 목차 메모리 관리 전략 배경 스와핑(Swapping) 연속 메모리 할당 페이징(Paging) 세그먼테이션(Segmentation) 요약

스와핑(Swapping) (1/2) 메모리 관리 전략 프로세스는 임시적으로 보조 메모리(디스크)로 교체되어 나갔다 다시 메 모리로 돌아올 수 있다. 다중 프로그래밍 환경에서, CPU 할당이 끝난 프로세스는 메모리 관리자(memory manager)에 의해 보조 메모리로 보내고 다른 프로세스가 메모리로 올라올 수 있다. 스왑 인(swap in) vs 스왑 아웃(swap out) 이상적인 메모리 관리자 다음에 실행될(CPU 스케줄링될) 프로세스를 가 능한 빠르게 메모리에 준비시켜야 한다. 스왑 아웃되었던 프로세스가 스왑 인될 때의 주소 바인딩 컴파일 시간 및 적재 시간 바인딩에서는 스왑 아웃되기 전의 주소로 올라와야 한다. 실행 시간 바인딩의 경우 메모리 내 빈 공간 어디라도 들어올 수 있다.

스와핑(Swapping) (2/2) 스와핑 시간의 대부분은 전송 시간이다. 메모리 관리 전략 스와핑 시간의 대부분은 전송 시간이다. 스와핑이 발생한다면 문맥 전환 시간이 매우 길어질 수 있다. 전체 전송 시간은 스왑되는 총 메모리 양에 직접적으로 비례한다 스와핑 시간을 줄이기 위해서는 실제로 사용하는 부분만을 스왑한다. 백킹 스토어(backing store): 스와핑을 위한 보조 메모리 장치(영역)

스와핑의 도식적 관점 메모리 공간이 충분하지 않을 때, 디스패처가 프 로세스를 백킹 스토어에 있는 입력 큐로 스왑 아 웃한다. 메모리 관리 전략 메모리 공간이 충분하지 않을 때, 디스패처가 프 로세스를 백킹 스토어에 있는 입력 큐로 스왑 아 웃한다. 디스패처는 프로세스를 배킹 스토어로부터 준비 완료 큐로 스왑 인한다

세그먼테이션(Segmentation) 요약 강의 목차 메모리 관리 전략 배경 스와핑(Swapping) 연속 메모리 할당 페이징(Paging) 세그먼테이션(Segmentation) 요약

연속 메모리 할당(Contiguous Memory Allocation) 메모리 관리 전략 메인 메모리는 보통 두 부분으로 나뉜다. 상주하는 운영체제: 보통 인터럽트 벡터와 함께 하위 메모리에 위치한다. 사용자 프로세스: 보통 상위 메모리에 위치한다. 연속적인 할당(contiguous allocation) 각 프로세스는 메모리의 연속적인 부분에 할당된다. 재배치 레지스터 방법: 사용자 프로세스들 서로 보호하는데, 또한 운영체제 데이터와 코 드를 바꾸지 못하도록 보호하는데 사용된다. 재배치 레지스터(기준 레지스터)는 가장 작은 물리 주소 값을 포함한다. 상한 레지스터는 논리 주소 범위(각 논리 주소는 상한 레지스터보다 작아야 한다) 를 포함한다.

연속 할당 예제 메모리에 여러 사용자 프로세스들이 동시에 놓인다. 각 프로세스는 하나의 연속 메모리 부분에 놓인다. 메모리 관리 전략 메모리에 여러 사용자 프로세스들이 동시에 놓인다. 각 프로세스는 하나의 연속 메모리 부분에 놓인다.

기준 및 상한 레지스터를 통한 보호 각 논리 주소들은 상한 레지스터보다 작아야 한다. 메모리 관리 전략 각 논리 주소들은 상한 레지스터보다 작아야 한다. MMU는 재배치 레지스터의 값을 더함으로써 논리 주소를 동적으로 매핑하여 메모리에 보낸다.

연속 메모리 할당 방법 (1/3) 고정 분할 기법 가변 분할 기법 메모리를 동일한 크기의 파티션으로 분할한다. 메모리 관리 전략 고정 분할 기법 메모리를 동일한 크기의 파티션으로 분할한다. 하나의 프로세스는 하나의 파티션에 할당한다. 구현/관리는 쉬우나 제약이 너무 많다.  요즘은 사용되지 않는다. 가변 분할 기법 운영체제는 어느 부분이 사용되는지 어느 부분이 자유 공간인지를 테이블로 관리한다. 운영체제는 자유 공간에 프로세스를 할당한다. 이를 위해 운영체제는 항시 가용(자유) 공간의 크기와 입력 큐를 유지하여야 한다.

연속 메모리 할당 방법 (2/3) 다중 파티션 할당(multiple partition allocation) 메모리 관리 전략 다중 파티션 할당(multiple partition allocation) 공간(hole): 유효한 메모리 블록, 메모리에 산재된 다양한 크기의 공간들이 존재 운영체제는 아래 정보를 유지한다. (a) 할당된 파티션(allocated partitions) (b) 자유 파티션(free partitions)  공간(hole) 프로세스가 도착하면, 수용할 수 있는 충분히 큰 공간에 할당된다. OS OS OS OS process 5 process 5 process 5 process 5 process 9 process 9 process 8 process 10 process 2 process 2 process 2 process 2

연속 메모리 할당 방법 (3/3) 동적 메모리 할당 문제(dynamic storage allocation problem) 메모리 관리 전략 동적 메모리 할당 문제(dynamic storage allocation problem) 자유 공간 리스트에서 크기 n-바이트 블록을 어떻게 만족시킬 것인가? 해결책 최초 적합(first-fit): 프로세스를 담을 수 있는 충분히 큰 첫 번째 공간에 할당한다. 최적 적합(best-fit): 충분히 큰 공간 중에서 가장 작은 공간에 할당한다. 크기 순서대로 정렬되어 있지 않다면 전체 리스트를 검색해야 한다. 남은 공간이 너무 작아지는 문제가 있다. 최악 적합(worst-fit): 가장 큰 공간에 할당한다. 이 방법 또한 전체 리스트를 모두 검색해야 한다. 최초 적합과 최적 적합이 메모리 이용 효율 측면에서 최악 적합보다 좋다는 것이 입증 되었다.

단편화(Fragmentation) (1/2) 메모리 관리 전략 외부 단편화(external fragmentation) 단편(fragment)는 공간 중 일부가 사용하지 못하게 되는 부분을 일컫는다. 프로세스가 메모리에 적재/제거되는 일이 반복되면 자유 공간들이 단편화 된다. 자유 공간 전체를 합하면 프로세스 적재가 충분히 가능하나, 이들이 연속적이지 않아 실 제로는 적재할 수 없는 상황을 외부 단편화라 한다. 50% 규칙: 프로세스에 N개 블록이 할당되었다면, 통상 0.5N개는 단편화로 사용치 못한 다. 결국, 메모리의 1/3이 쓸 수 없게 된다는 이야기이다. 내부 단편화(internal fragmentation) 자유 공간으로 배정된 메모리가 요청한 메모리보다 약간 더 큰 경우에 생긴다. 내부 단편화 예제 자유 공간이 18,464B인데, 18,462B 프로세스가 할당되면, 2B 자유공간이 남는다. 2B 공간을 추적/관리하는 오버헤드가 크므로 그냥 18,464B를 할당한다. 이렇게 되면 2B는 사용치 못하게 되는데 이를 내부 단편화라 한다.

단편화(Fragmentation) (2/2) 메모리 관리 전략 단편화 해결 방법 압축(compaction)을 통해 외부 조각을 줄인다. 자유 공간들을 모아 큰 하나의 블록으로 만들기 위해 메모리 내용을 재배치 한다. 압축은 오직 재배치가 동적일 때만 가능하다. 또한 재배치가 실행 시간에 이루어지 는 경우에만 가능하다. 프로세스가 필요한 메모리를 연속이 아닌 비연속 공간으로 나누어 배치한다.  페이징(paging)과 세그먼테이션(segmentation) 기법

세그먼테이션(Segmentation) 요약 강의 목차 메모리 관리 전략 배경 스와핑(Swapping) 연속 메모리 할당 페이징(Paging) 세그먼테이션(Segmentation) 요약

페이징(Paging) – 메모리 관리 방법 페이징은 다음을 가능하게 한다. 메모리 관리 전략 페이징은 다음을 가능하게 한다. 프로세스의 물리 주소 공간은 연속적이지 않아도 된다. 프로세스는 메모리가 유효할 때는 언제든지 물리 메모리에 할당된다. 물리 메모리는 프레임(frame)이라 불리는 일정 크기 블록으로 나뉜다. 프레임의 크기는 2의 지수, 대개 512(=29)~16,384(=214) 바이트이다. 모든 자유 프레임들은 기록되고 관리된다. 논리 주소는 페이지라고 불리는 같은 크기의 블록으로 나뉜다. 크기가 n 페이지인 프로그램을 실행하기 위해, n개의 자유 프레임을 찾아서 프로그램을 로드 할 필요가 있다. 논리 주소를 물리주소로 변환하는 페이지 테이블을 설정한다. 이 경우에 외부 단편화는 발생하지 않으나 내부 단편화가 발생한다.

주소 변환 방법 CPU에 의해 생성되는 노리 주소는 아래와 같이 구성된다. 메모리 관리 전략 CPU에 의해 생성되는 노리 주소는 아래와 같이 구성된다. 페이지 번호(page number p): 물리 메모리 내 각 페이지의 기본 주소를 포함하는 페이 지 테이블의 인덱스로 사용된다. 페이지 오프셋(page offset d): 메모리 유닛에 보내지는 물리 메모리 주소를 정의하기 위 해 기본 주소와 조합된다. 논리 주소 공간의 크기가 2m이고, 페이지 크기가 2n인 주소 유닛이라면, 논리 주소의 상위 m–n 비트는 페이지 번호를 결정한다. 하위 n 비트는 페이지 오프셋을 결정한다. 페이지 번호 페이지 오프셋 p d m – n n

주소 변환 구조 페이지 테이블은 물리 메모리에 각 페이지의 기본 주소를 포함한다. 페이지 테이블은 각 프로세스 별로 생성된다 메모리 관리 전략 페이지 테이블은 물리 메모리에 각 페이지의 기본 주소를 포함한다. 페이지 테이블은 각 프로세스 별로 생성된다

페이징 예제 메모리 관리 전략

페이징 예제 페이지 (프레임) 크기: 4 bytes 물리 메모리: 32 bytes 논리 주소 공간: 16 bytes 메모리 관리 전략 페이지 (프레임) 크기: 4 bytes 물리 메모리: 32 bytes 8 프레임 물리 주소를 위한 5 bits 페이지 프레임을 위한 3 bits (8 프레임) 논리 주소 공간: 16 bytes 4 페이지 논리 주소를 위한 4 bits 논리 주소 4 bits 상위 2bits: 페이지 번호 하위 2bits: 페이지 오프셋 논리 주소 0(0000)은 페이지 0, 오프셋 0 → 5 x 4 + 0 = 20 논리 주소11 (1011)은 페이지 2, 오프셋 3 → 1 x 4 + 3 = 7

페이지 테이블 크기 페이지 테이블 크기는 다음에 의존한다. 일반적으로 각 페이지 테이블 엔트리는 4 바이트이다. 메모리 관리 전략 페이지 테이블 크기는 다음에 의존한다. 프로세스의 논리 주소 공간 크기 페이지 테이블 엔트리 크기 일반적으로 각 페이지 테이블 엔트리는 4 바이트이다. 4 바이트이면, 총 232개의 물리 페이지 프레임을 가리킬 수 있다. 엔트리 크기는 4 바이트가 아닌 다른 값을 가질 수도 있다. 페이지 프레임이 4KB라면, 가능한 물리 메모리 주소 공간은 244 바이트(=16 TB)이다. 최근 운영체제는 페이지 크기를 2KB~8KB 중에서 선택할 수 있도록 한다. 너무 크면 단편화 문제가 크게 작용한다. 너무 작으면 페이지 테이블이 커져 이를 위한 오버헤드가 발생한다.

자유 프레임 4 페이지 주소 공간이 필요한 새로운 프로세 스가 생성되면 메모리 관리 전략 4 페이지 주소 공간이 필요한 새로운 프로세 스가 생성되면 운영체제는 자유 공간 에 4 프레임이 유효한 지 검사한다. 새로운 페이지 테이블 이 생성된다. page 0 → frame 14 page 1 → frame 13 page 2 → frame 18 page 3 → frame 20 할당 이전 할당 이후

페이징 환경에서 코드 공유 메모리 관리 전략

세그먼테이션(Segmentation) 요약 강의 목차 메모리 관리 전략 배경 스와핑(Swapping) 연속 메모리 할당 페이징(Paging) 세그먼테이션(Segmentation) 요약

세그먼테이션(Segmentation) 메모리 관리 전략 프로그램을 메모리에 위치시키기 위한 사용자 관점 프로그램은 세그먼트들(segments)의 집합이다. 세그먼트는 다음과 같은 논리 단위이다. 메인 프로그램(main program) 프로시저(procedure), 함수(function), 메서드(method), 객체(object), 지역 변수(local variables), 전역 변수(global variables), 공통 블록(common block), 스택(stack), 심볼 테이블(symbol table), 배열(arrays) 등 세그먼테이션은 메모리의 사용자 관점을 지원하는 메모리 관리방법이다. 사용자는 “함수 A”의 다섯 번째 라인, 심볼 테이블의 13번째 항목 등으로 이해한다.

프로그램의 사용자 관점 프로그램은 세그먼트의 집합이다. 세그먼트 내 요소들은 세그먼트 시작 점으로부터의 오프셋으로 구별된다. 메모리 관리 전략 프로그램은 세그먼트의 집합이다. 메인 프로그램(main program) 서브루틴(subroutine) 제곱근(sqrt) 스택(stack) 심볼 테이블(symbol table) 세그먼트 내 요소들은 세그먼트 시작 점으로부터의 오프셋으로 구별된다. 제곱근(sqrt)의 1번째 문장 스택 내의 5번째 요소 논리 주소 = <세그먼트 이름, 오프셋> 로더  <세그먼트 번호, 오프셋>

세그먼테이션의 논리적인 관점 1 3 2 4 user space physical memory space 메모리 관리 전략 1 3 2 4 user space physical memory space 논리 주소 공간은 세그먼트들의 집합이다. 각 세그먼트는 이름(번호)과 길이를 갖는다. <세그먼트 이름, 오프셋>은 주소를 위해 사용된다. 세그먼테이션은 각 세그먼트를 물리 메모리에 매핑한다.

세그먼테이션 예제 메모리 관리 전략 일반적으로, 사용자 프로그램이 컴파일될 때, 컴파일러는 자동적으로 입 력 프로그램을 반영하는 세그먼트를 구축한다. C 컴파일러는 다음을 위해 분리된 세그먼트를 생성할 수 있다. 코드 전역 변수 메모리 할당을 위한 힙(heap) 각각의 스레드를 위한 스택 표준 C 라이브러리 라이브러리들은 분리된 서로 다른 세그먼트에 할당될 수 있다. 로더는 이 세그먼트들을 취해서 세그먼트 번호를 할당한다.

세그먼테이션 구조 각 세그먼트는 (이름 대신) 번호가 할당된다: 세그먼트 번호 메모리 관리 전략 각 세그먼트는 (이름 대신) 번호가 할당된다: 세그먼트 번호 따라서, 논리 주소는 <세그먼트 번호, 오프셋>으로 구성된다. 세그먼트 테이블(segment table) 사용자가 정의한 이차원 논리 주소를 일차원 물리 주소로 매핑한다. 즉, <세그먼트 번호, 오프셋>을 물리 주소로 매핑한다. 세그먼트 테이블의 각 항목은 다음 값을 가진다. 기준(base): 세그먼트가 메모리에 위치하는 시작 물리 주소를 포함한다. 한계/상한(limit): 세그먼트 길이를 나타낸다

주소 변환 구조 메모리 관리 전략

세그먼테이션 예제 5개 세그먼트 세그먼트 테이블은 각 세 그먼트를 위한 분리된 항 목을 갖는다. 논리 주소 물리 주소 메모리 관리 전략 5개 세그먼트 0부터 4까지 번호가 붙는다. 세그먼트 테이블은 각 세 그먼트를 위한 분리된 항 목을 갖는다. 기준(base) 한계(limit) 논리 주소 세그먼트 2의 53 물리 주소 4300 + 53 = 4353

세그먼테이션 공유 메모리 관리 전략

세그먼테이션(Segmentation) 요약 강의 목차 메모리 관리 전략 배경 스와핑(Swapping) 연속 메모리 할당 페이징(Paging) 세그먼테이션(Segmentation) 요약

시스템 모델(System Model) 다양한 메모리 관리 알고리즘 하드웨어 지원 단편화(fragmentation) 메모리 관리 전략 다양한 메모리 관리 알고리즘 연속적인 할당, 페이징, 세그먼테이션 하드웨어 지원 간단한 기준-상한 레지스터 쌍은 연속적 할당에 이용된다. 페이징과 세그먼테이션을 위해서는 매핑 테이블이 필요하다. 단편화(fragmentation) 내부 단편화: 연속적 할당, 페이징 외부 단편화: 연속적 할당, 세그멘테이션 재배치, 스와핑, 공유, 보호 등은 메모리 관리에서 고려해야 할 또 다른 사항들이다