Operating System Concepts--chap9 Memory Management;

这一章节的memory management内容覆盖从bare-machine approach到paging和segmentation;

9.1 background
我们在编程时候所操作的地址--logical address和实际机器中的地址--physical address不是一样的;
他们之间的mapping是通过Memory Management Unit来进行转换,通常是通过[relocation,offset]这样的典型组合来完成;
而且他们之间的binding,也有几种情况:
1,compile time:在程序编译的时候就bind,那么这个地址肯定是绝对地址;
2,load/execution time:load/execute程序的时候bind,这种情况普遍有个模式:Relocable Addr+offset的模式,程序操作offset,然后由系统来确认Relocable addr的值,在不同情况改变relocable addr那么程序就被在memory中移来移去;

定义:
logical address:由cpu产生的address
physical address:memory unit所见的address

dynamic loading:一个模块知道被使用的时候才会被load
dynamic linking:推迟link,但是需要os的支持,因为link会需要考虑process的protection,

9.2 swapping
swapping:针对process而言,执行的时候swap进内存,不执行的时候swap出去;
一些基于优先级的算法来支持swapping

9.3 continuous memory allocation
就是给定一块内存,比如256M,来支持alloc/free;
《the art of computer programming》给出著名的heap算法
1,把内存用链表串起--开始的时候就一个节点,随着分配和释放,连续内存被打散,形成链表;
2,另外用hash表来索引节点,[key,value]--[内存块大小,内存块的地址],hash表有多个,以size大小分类--1k-2k的一类,2k-4k的一类,4k-8k的一类...
我们需要alloc内存出来时迅速定位到hash表,然后选择best fit的模块进行分类;
分配时如果已有内存块大于所需,就裂开,
free时,如果归还内存前后有free的内存,就merge

最大问题是:external fragmentation,可能剩余10M内存,但是都是零碎的小块,无法alloc出一个1m的空间;

由于游戏开发中,内存有一定的规律,比如在ps3中管理显存,就可以根据游戏需要,特殊处理render target,resolve buffer这类问题,
利用游戏的特性来进行优化,而不是单纯的去做支持general的工作;会很大程度上降低这个工作;

9.4 paging
paging--允许process的logical address是连续的,但是physical address是不连续的;非常牛逼的做法;
基本概念
physical memory被分成大小一样的一块块,called frame
logical memory分成大小一样的一块块,叫page
page灵活的map到frame中,逻辑地址中连续的page,在physical memory中就是可以分散的分配的;

requirements
需要page table,frame table
而且在真正访问内存的时候,需要做逻辑地址向物理地址的转换,这会大大降低速度,硬件的支持不可避免;
TLB作为page table的cache出现,加快逻辑物理转换速度;

more:
可以有多级page table,shared page table。。。

9.5 segmentation
segmentation:支持用户角度对内存的划分;
比如我们coding时候常说的:stack,heap,全局区等等;
以segmentation table做管理,以[base,offset]对来索引,可以区域保护和共享,享受external fragmentation;

9.6 segmentation with paging
把segmentation架在paging上,通过segmentation的[base,offset]地址访问到page的[page_number,offset]再到physical memory;
很灵活很牛逼,有硬件支持也很快,intel 80386这么干的;
 

### 回答1: 《操作系统概念》第九版是一本经典的操作系统教材,由Silberschatz、Galvin和Gagne合著。本书系统地介绍了操作系统的基本概念、原理和实现技术,包括进程管理、内存管理、文件系统、输入输出、网络和安全等方面。此外,本书还涵盖了最新的操作系统技术和趋势,如虚拟化、云计算和分布式系统等。对于计算机科学和工程专业的学生和从业人员来说,这是一本不可或缺的参考书。 ### 回答2: 操作系统概念(Operating System Concepts)是一本经典的操作系统教材,目前已经推出了第9版。本书是由Abraham Silberschatz、Peter B. Galvin和Greg Gagne合著的,旨在为学生和专业人士提供深入了解计算机操作系统的基础知识和概念。以下是关于第9版的一些重要内容: 本书分为18章,涵盖了基本的操作系统概念和技术,包括进程管理、处理器调度、内存管理、文件系统和输入/输出管理等。 除了传统的计算机操作系统概念外,本书还涵盖了最新的技术趋势和应用,例如分布式计算系统和虚拟化等。 本书采用清晰、简洁的语言,配合丰富的图表和示例,使得学生能够更好地理解和掌握操作系统的关键概念和技术。 同时本书还提供了丰富的习题和案例研究,以及实用的代码样例,可以帮助学生更好地应用操作系统知识和技术。 总体来说,操作系统概念(Operating System Concepts)是一本非常实用和有价值的操作系统教材,尤其适合计算机科学、信息技术等领域的学生和从业人员学习和参考。该书不仅涵盖了传统的操作系统概念,还覆盖了最新的技术趋势和应用,对于理解和掌握现代计算机操作系统的基本原理和工作机制有很大的帮助。 ### 回答3: 《Operating System Concepts》是一本经典的操作系统教材,第9版于2012年出版。这本教材包含了大量的操作系统知识和概念,是操作系统学习领域中不可或缺的教材之一。 首先,本书涵盖了操作系统的基本概念和原理,包括内存管理、进程管理、文件系统等。此外,该书还介绍了许多实用工具和技术,例如Shell脚本、内存映射、虚拟机等。这些知识点都与操作系统的性能、安全性和可靠性密切相关。 其次,书中还介绍了许多实际的操作系统,例如Windows、Linux、Unix等。这些操作系统在现代计算机应用中扮演着至关重要的角色,了解这些系统的原理和功能对于提高计算机操作系统的使用和管理水平非常有帮助。 总体而言,Operating System Concepts第9版是一本全面而深入的操作系统教材。通过对该书的学习,读者将能够深入了解操作系统的基本概念和原理,并掌握许多实际的操作系统知识和技能。无论是计算机学生还是从事计算机相关工作的专业人士,都可以从这本书中获得很多宝贵的知识和经验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值