摘要: 算法第四版学习笔记 图片来自http://algs4.cs.princeton.edu/home/ 1.选择排序 从数组中找到最小的元素,将它和第一个元素交换,然后从剩下的元素中找到最小的元素并与第二个元素交换..如此重复 选择排序的运行时间和输入无关,且数据移动是最少的。 2.插入排序 将当前元素 阅读全文
posted @ 2016-06-14 23:16 hzxscyq 阅读(187) 评论(0) 推荐(0) 编辑
摘要: 覆盖技术:在较小的可用内存中运行较大的程序 方法:依据程序逻辑结构,将程序划分为若干功能相互独立的模块,将不会同时执行的模块共享同一内存区域,分配空间时按照模块中最大的结构内存来分配 不足:需要程序员划分模块,增加编程困难,增加时间复杂度 交换技术:增加正在运行或需要运行的程序内存(与覆盖不同,覆盖 阅读全文
posted @ 2016-04-26 22:50 hzxscyq 阅读(656) 评论(0) 推荐(0) 编辑
摘要: 页表起始地址存放在页表基址寄存器(PTBR:Page Table Base Register)中 页表项的组成: 1.帧号 2.页表项标志: 存在位(resident bit):对于一个页面是否有物理页与其对应,如果有就为1 修改位(dirty bit):判断页面 是否被修改过 引用位(clock/ 阅读全文
posted @ 2016-04-10 12:10 hzxscyq 阅读(3297) 评论(0) 推荐(1) 编辑
摘要: 非连续内存分配允许程序使用非连续的物理地址,允许共享代码数据,支持动态加载和动态链接 实现非连续内存分配需要解决虚拟地址到物理地址的转换 1.软件实现 开销大 2.硬件实现 开销小 段式存储管理: 进程的段地址空间由多个段组成: 1.主代码段 2.子模块代码段 3.公用库代码段 4.堆栈段 5.堆数 阅读全文
posted @ 2016-04-10 11:03 hzxscyq 阅读(642) 评论(0) 推荐(0) 编辑
摘要: 物理地址空间:加载到寄存器中的地址,内存单元真正的地址,其位数由地址总线数决定,32位则表示32条地址总线,编号从0一直到可用内存的最大值。 逻辑地址空间:CPU运行时程序可看到的地址,由内部和编程时使用,比如C语言中读取一个指针变量本身的值,读到的就是逻辑地址,它是相对于当前数据段的地址也就是偏移 阅读全文
posted @ 2016-04-09 12:15 hzxscyq 阅读(594) 评论(0) 推荐(0) 编辑
摘要: X86保护模式下使用分段管理机制,将内存划分成以起始地址和长度限制这两个二维参数表示的内存块,这些内存块就称之为段(Segment)。 关键字:段描述符:描述段的属性。 段描述表:包含多个段描述符的数组。 段选择子:用于定位段描述表中表项的索引。 段描述符有三个参数:段基地址(Base Addres 阅读全文
posted @ 2016-04-04 21:44 hzxscyq 阅读(394) 评论(0) 推荐(0) 编辑
摘要: 函数调用 看这样一段代码: 其中用到了printf函数,函数从标准C库中调用,实际上是进入到内核态调用write()函数。 系统调用 应用程序通过系统调用接口进入内核,首先通过中断向量表转移到系统调用表,每一个系统调用都有对应的编号,根据编号实现相应的操作并返回。 系统调用与函数调用的区别 系统调用 阅读全文
posted @ 2016-03-26 22:06 hzxscyq 阅读(382) 评论(0) 推荐(0) 编辑