内存
1.什么是内存:可以理解为在计算机里一个一个的小欧房子 里面存储一个一个数据 字编址和字节编址 就是多人间跟单人间的区别
2.指令的工作原理其实就是操作码加若干参数 你在idea写的软件经过编译成为机器指令 就是把参数放在那里 进行什么操作得出结果
在这里就有三个步骤要看 1.放入地址 任何一个进程分为三个快 pcb 程序块 和数据块 程序块和数据块排序总得有个规律这就涉及到了相对地址 我说我的指令在100处命令x放在80 其实是想放在180 怎么处理呢 三个办法
1.进来的时候自己判断在180,2装入时算法判断直接加100 3.cpu里有一个重定位寄存器 他来判断
还有就是 我来装入时代码块一定分成很多细碎的块 怎么判断他们链接呢 三种办法
内存管理的概念:
1.内存你要咋分配 分配完了要回收 2.你要进行一个虚拟内存 运行一个比你的时间大得多的东西 3.你要内存保护 就是一个指令只能访问它本身 不能越界
.内存空间的扩充 覆盖技术不常用主要是交换技术
交换技术 在内存紧张时 把一些阻塞或者优先级低的进程挂到外存的交换去中 外存由交换区和文件区组成 文件区慢 但是一定要注意 pcb留在内存里 等待进程唤醒 一般放在挂起队列里
块表:空间局部性时间局部性 就是有些程序总会频繁访问一个进程
这样我们可以设计一个速度高的块表 把频繁访问的数据放在里面
节省时间
两级页表:单机页表存在的问题:我的一个页面大小是4k 页表项长度书4b 我的逻辑地址有32位 也就是说 我的页内偏移量要记录2的12次方 12位 那么还剩下20位是记录进程的 长度为22位 而也变长素是12位 也就是说我要有2的10次方个连续地址 这显然是不合理的
所以提出了多级页表 就是把单机页表在拆分成页表大小的样子 分散放 由二级页表统一管理
分段:
分段跟分页类似 只不过分段把分页的分成整个区间变成了 按照每个函数区分 在段表出设立了段长 和之前一样
段页式:分段的缺点是会有碎片 分页的缺点是 会把完整的程序分开 那么我们可以先分段 后分页
先利用段表查找页表的位置 然后查找页表找到位置
虚拟内存:
虚拟内存中的页面操作:
1.和之前不同的是 因为虚拟内存需要换入换出 所以应该在页表项里加入几个新的标志位 1.外存的地址调入时好找 2.是否被修改 3.