当前位置: 首页 > news >正文

做零售的外贸网站土木毕业设计代做网站

做零售的外贸网站,土木毕业设计代做网站,微商城网站建设流程方案,网站制作费用及后期运营文章目录 前言储存系统地址转换内存扩展覆盖交换 储存器分配——连续分配固定大小分区动态分区分配动态分区分配算法 储存器分配——非连续分配页式管理基本思想地址变换硬件快表#xff08;TLB#xff09;多级页表 段式管理段页式管理 虚拟储存器——基于交换的内存扩充技术… 文章目录 前言储存系统地址转换内存扩展覆盖交换 储存器分配——连续分配固定大小分区动态分区分配动态分区分配算法 储存器分配——非连续分配页式管理基本思想地址变换硬件快表TLB多级页表 段式管理段页式管理 虚拟储存器——基于交换的内存扩充技术基本概念请求分页页面置换算法页面分配策略、抖动、工作集内存映射文件 文件管理 前言 属实是极限冲刺了距离考研还有10天我还有俩本书没学完乐昨天一下午一晚上学完进程今天再接再厉直接学完储存和文件系统 IO部分参见我的计组笔记非常详细 储存系统 我不喜欢重复造轮子这一章我会比较简略尽量写高层次的思想具体内容我的另一篇笔记里面记录的很详细如果基础不是很好可以对照看。 操作系统笔记——储存器管理、文件管理、设备管理 地址转换 关于物理地址 逻辑地址从源程序到汇编语言程序的这些阶段都用逻辑地址 逻辑地址默认0为地址起点不考虑和其他程序之间的相互作用因此后续几步直到把程序装入内存的整个过程肯定是要将逻辑地址变为物理地址的 后续的步骤为编译链接为目标模块装入内存。如何变就形成了3种不同的方法 绝对装入很low没OS才这么做在编译链接阶段形成物理地址静态重定位可重定位装入在装入的过程中将指令内容修改形成物理地址动态重定位动态运行时装入指令内容一直是逻辑地址使用重定位寄存器辅助地址偏移在程序真正运行访存的时候才形成物理地址 才发现我们OS老师上课用的那张图是从王道这里来的我就说风格怎么不一样 我们前面讨论的是如何形成物理地址其实形成如何把多个.o文件的逻辑地址统一起来也是一个需要注意的点这个技术就是链接 静态链接链接阶段一次性组合动态链接 装入时动态链接装入的时候一次性组合运行时动态链接调用的时候才针对性的装入对应的模块.dll动态链接库 联系前面的物理地址生成很显然绝对装入方法只能搭配静态链接使用而动态链接只能和重定位方法结合使用 视角抬高内存管理除了负责部分地址转换以外还有很多功能。 内存保护的两种思路 上下限寄存器直接记录程序物理地址的上下线重定位寄存器界地址寄存器界地址寄存器规定了逻辑地址的上限 内存扩展 覆盖 覆盖就是让互斥的程序段公用一片内存有两种可能 固定区互斥程序段只有一个那么这片区域就是独占 一般来说只有一个固定区main函数 覆盖区有多个程序公用每一个覆盖区都由当前覆盖段里占内存最大的模块决定。 比如B先用内存C要用就把B的部分直接覆盖就行这也是这个名字的来源 这个方法的缺点就是需要人为指定覆盖结构计算机不会分析不方便。 交换 交换就是把暂时不用的程序换出腾出空间给其他程序运行。 结合第二章交换其实就对应着中级调度 因此换出的程序首选被挂起的程序其次就是低优先级的总之尽可能减小换出的副作用。 交换区要频繁读写因此单独划出。 为了加快读写采用连续分配的方式管理磁盘IO更快 储存器分配——连续分配 所谓连续分配就是程序要放就是一整段全放进去不可以拆开。 固定大小分区 说白了单一连续分配就是只有一个应用分区 因此没有外部碎片只有内部碎片 下面的固定分区分配其实就是把这一个区拆分成多个固定的区只分配不改变大小。 既然思想一致只是分区数量的差异那么碎片的逻辑也就一样了。 多个分区还要进行管理需要一个固定分区表这个表能修改的只有分配标记 如果最大的那个分区都满足不了当前程序就上覆盖技术。 动态分区分配 动态分区就是固定分区加强版除了可以修改标记以外还可以修改区域的大小。 数据结构有两种 分区表 沿用固定分区的思路 空闲分区链。这里注意一下其结构 这是一个双向链表有首尾两侧链域中间部分可以存放分区的描述信息 分配和回收的过程中要涉及到分区的拆分和回收合并 拆分动态分配算法回收会涉及到表项/节点的修改或者删除要具体讨论 动态分区的思路可以保证新分的区是满的所以没有内部碎片 代价就是会产生外部碎片内存中有一些地方因为太小是怎么也用不到的 解决方法也很直接就是把分区挪一下挤一挤即紧凑技术。 很明显程序在这个过程中浮动了因此只能搭配 动态运行时装入动态重定位技术使用。 动态分区分配算法 首次适应 遍历空闲分区表/链第一个能用的就直接用同时进行修改优点快 最佳适应最小适应 一种粗暴的思路是遍历全部空闲分区链另一种更好一点的思路是维持空闲分区链的有序性 在修改后重新排序因为分配只会导致减小所以我们只需要对着前半截进行一次插入排序即可 优点保证大空间缺点产生小碎片慢 最坏适应最大适应 与2反其道而行之优点减少小碎片缺点破坏大空间慢 邻近适应 对1的修改从上一次停下的位置开始查找这样可以跳过前面因为分配而产生的小空间快速用到后面的大空间缺点是破坏大空间优点是比首次适应还快 储存器分配——非连续分配 页式管理 基本思想 页式管理其实是分区的进化版将分区粒度变得非常细同时用页表建立索引因此可以分散储存大大提高空间利用率。 页表负责索引功能将逻辑页号转为物理页号这里区分一下名词 逻辑页对应程序叫页页面物理页对应内存叫页框页帧物理块物理页面内存块 因为逻辑页是连续递增的因此直接隐含在偏移地址里了不在页表项里而页表项的长度一定是要对齐的k字节 如何转换呢 逻辑到物理 说白了就是用索引表的页号查找对应页框号然后拼接就可以注意页框号要乘系数才是页起始地址 物理到逻辑 1的逆过程在二进制下其实很简单直接截取地址后半段就是页内偏移前半段就是页框号本质在于页框大小固定因此两部分都是定长 地址变换硬件 学过汇编的话这个过程非常熟悉。 因为页表位置可以浮动我们干脆就用一个页表寄存器储存地址PTR 考虑到安全性检验还要再存页表长度这两个是分成两节存在一个寄存器里的 需要注意既然是寄存器那其实也是程序上下文所以随着进程切换肯定也会有装入和保存的过程 这个转换流程用字母描述 P页号W页内偏移需要注意的是越界验证因为PTR存的是页表长度所以是虚高1位的因此只要P等于M就算越界我们都是手算实际上计算机直接拼接就行 前面说到页表项大小要对齐到k字节实际上不仅仅如此。 3B情况下会产生页框内碎片那么我如果要访问这个碎片地址上的页表项呢那只能1偏移这样做很麻烦而且容易出bug 所以干脆进行二次对齐对齐到能够被页框大小整除所以一般是用4字节做题的时候要考虑这两种对齐。 快表TLB 参考cache原理TLB其实就是页表的cache材料也都是SRAM只不过TLB的等级还要在cache之上是最紧贴CPU的 TLB是一种cache更具体的说应该是全相联方式储存的模式。 因此快表不能像页表那样把页号隐藏在地址里而是多加一个字段且每次要遍历快表。 查找过程有两种 先查TLB再查页表同时查询 进而衍生出不同耗时·的计算结果 TLB和cache的区别 cache会缓存一整个内存块TLB只cache页表项 从这个角度来看其实TLB就是比cache更细TLB是内存块的cache而cache是整个内存的cache 多级页表 当一个页表存不下页表项就需要用二级。 一般来说只有二级页表实际上可以多层 区分一下名称 二级页表 外层页表或顶层页表页目录表每一行页目录项页表描述符 一级页表 每一行页表项页描述符 转换过程无非就是前N次确定最终页号最后1次进行访存即N1次 页表具体分几级要根据地址长度来定先抛去页内偏移之后看看能拆几节页号地址。 段式管理 首先要明确段式管理和页式管理是并列的都是非连续的分配。 段式管理很像动态分区但领域不一样 动态分区是给内存进行分区分区表是针对内存的每个分区对应一个进程段式管理是给进程空间进行分区段表是针对一个进程的每个分区对应程序的一个内存段 段表和页式管理类似每个段表项都是等长的段号都是隐含的但是段不等长 寻址过程也很类似都是两次越界检测 越界也是同理这个段长是具体长度虚高所以只要满足WC就代表越界了 从设计理念上来说段页还是不同的如下 页式管理完全是为了系统服务的 是物理性的纯粹按照地址切分的用户不可见 段式管理更多的是为了用户服务 是逻辑性的分模块的用户可见 由设计理念来引申共享与保护 因为段是逻辑的我们共享的时候也是按照模块共享的逻辑上非常直观 比如我可以专门为可重入代码或者共享数据建立一个段这个段直接整体共享即可不可重入代码不可共享而页并不具备这种逻辑的整体性一页里面可能啥都有 同理段也更有利于保护整个模块一起保护很方便 页的内容很复杂错乱所以共享管理很麻烦 定不定长也是一个区分点 页式管理定长因此给定一个逻辑地址就可以直接通过除法运算锁定页号 页式管理一维给地址直接上线性地址 段式管理不定长给一个逻辑地址只能截取段号而不是除法运算 因此段式管理是二维的给地址的时候要给两部分段命对应段号和段内地址 段页式管理 终于到了段页式管理了这才是版本真神。 段页式管理是页段的综合底层用页高层用段。 另一种理解就是把二级页表爆改成段表了 段页式是两级的所以访存次数是213 要进行两次越界判断由此可得其实二级页表也得进行两次越界判断。 注意这个TLB是把段号和页号一起作为一个tag的而不是弄两个TLB 虚拟储存器——基于交换的内存扩充技术 基本概念 虚拟内存的特征 多次性针对装入过程来说对换性内外交换虚拟性针对空间视图来说看到的很大但是是虚拟的 因为虚拟内存是把进程的内存空间拆分了所以必须使用非连续性内存分配技术。 在此基础上增添两个功能 请求调入置换 后面以页举例更复杂的也是类似逻辑。 请求分页 请求分页逻辑可以参考cache来其实是一个思想 但是具体还是不太一样cache仅仅是缓存管理能力很弱而虚拟内存的管理能力很强除了页框内容的缓存外还专门有页表来管理页框我们研究的其实是页表的管理。 请求页表结构 首先虚拟页表的管控对象是内存外存 管控对象到底在内存还是外存因此要用状态位内存块号外存地址进行区分和寻址 其次考虑置换过程 置换哪一个因此要有访问字段辅助置换算法换出的时候是否要写回因此有修改位需要考虑是否被修改类似cache脏位 如果目标页的有效位0说明在外存发生缺页中断。 注意缺页中断并不是外中断而是广义的中断实际上是异常。 之后研究一下请求分页管理中的细节其实和基本分页的区别无非就是两点 额外的检查 状态位 额外的修改 外存置换前是否写回外存页表置换后页表的标志位要刷新TLB快表的有效位恒等于1因此换出的时候要TLB删除否则出错换入的时候也可以根据局部性原理将这个页表项复制到TLB 不过不得不说这个过程真的挺复杂的后面做题继续细化吧你且知道相关联的三个部分就可以外存页表项以及对应的页框TLB 页面置换算法 这几个方法在我另一篇笔记里已经有详细的描述了这里进行细化。 注意页面置换次数≠缺页次数缺页是要更加广泛的注意题目问的是哪个。 首先是OPT 具体做的时候就是从发生缺页的位置开始查看后面要调用的页在这里面找我们当前物理块里装的页排在最后一个的就是要置换出去的。 然后是FIFO和LRU具体过程很简单 FIFO有两种理解方式效果相同做题的时候自己看着办 新进来的页会把原来的页推下去末位淘汰直观另一种理解方式是用一个指针指向即将要替换的位置每次替换都让指针挪一位 LRU也是两种理解方式 类似于FIFO的下推末位淘汰但是如果命中就把这个块提到最上面刷新存在感另一种理解方式是逆向遍历访问序列类似于OPT最后一个出现的就是要淘汰的只不过方向相反 效果对比 FIFO有Belady异常而LRU就没有LRU效果是最接近OPT的但是开销太大需要硬件计时器参考cache替换要求的数量还不少。 再说时钟置换算法CLOCK(NRU) 思想很简单 排成循环队列命中刷新访问位1 注意命中不需要转时钟指针不变 不命中按照时钟方式扫描进行替换 1置0访问位1相当于免死金牌0置换访问位0则受斩 置换后要将指针后移防止这个新的页面在下一轮扫描的一开始就掉血 极限情况是进行1轮1次扫描也就是两轮扫描这个方法兼顾了效率和效果。 改进NRU还考虑到了写回的IO损耗尽可能避免IO替换修改位0的页面同时还要维持原本NRU的原则于是根据访问位修改位可以分成4个优先级 0,0既没用又没修改过直接换0,1没用但是被修改过换的成本大点但是造成的影响不大1,0用过不得不换只能找个换的成本小点的1,1成本最大不得已的办法 具体如何去扫描呢分4轮 先在没访问过的里面扫两轮 第一轮扫0,0第二轮扫0,1同时置零访问位第二轮才会像NRU一样置零访问位因为这两轮整体并做对访问位的检查所以只置零一次 之后在访问过的里面扫两轮 注意这两轮本来是1,01,1的专长但是因为第一组操作已经把访问位置0所以走到这里的肯定在第一组操作之前全部都是1x的情况第三轮扫0,0第四轮扫0,1走到这一步一定会有一个页被置换出去这一组操作其实是针对修改位而来的 改进NRU非常的完美 两组操作继承自NRU对访问位的置0也和NRU完全一致而在在两组操作内部又加入了对修改位的考察 虽然改进NRU最多进行4轮考察但是这点内存中的消耗和降低IO损耗带来的收益相比微不足道 页面分配策略、抖动、工作集 之后介绍三种分配置换的搭配 固定分配局部置换 其实就是我们前面做题的时候用的思路当前进程和外存进行交换 可变分配全局置换 只要缺页就增加物理块当前进程不直接和外存进行交换而是直接用空闲的或者从其他进程抢一个未锁定的页框过来之所以不直接是因为抢夺其他进程页框也会间接导致其他进程的交换实际上还是要交换这个方法反而还不如局部置换稳定 可变分配局部置换 在1的前提下如果系统察觉到1的缺页率比较高就分配空闲块当然3方法也存在抢夺物理块的情况但是频率比2低多了 请求调页 就是缺页中断精确度很高IO开销大 预调页策略 目标是减少IO开销就是一种预测因为其效果一般所以只是在程序刚启动才这么干这个时候调入不需要置换就算翻车也无所谓。 再论从何处调页 普通系统 对换区大那就全在对换区操作就行因此要先复制到对换区再调入对换区小因此要尽可能精细化只把要修改的可能反复IO的数据写回到对换区 Unix系统 介于普通系统的两个策略之间精细度居中第一次是从文件区调入之后换出的页面不管是否被修改过都放到对换区 内存映射文件 传统文件读写要进行内存文件的多级索引比较麻烦如果你不是一次性读入那么每读一个块都要多级索引一次。 内存映射文件直接把文件索引一次性读到内存里分出一些页表项直接把文件地址记录进去 出于效率考虑这里只是分配了页表项并没有将文件读入但是后续的读入已经很简单了不需要多级索引只需要IO就可以效率高多了。 修改只需要在内存中这进一步减少了IO损耗最后进程关闭文件的时候才将文件一次性写回非常方便。 总之内存映射既可以减少索引损耗又可以减少IO损耗 文件映射还有另一个好处就是便于共享文件。 注意区分页表项和物理页框实际上读入后的文件是放在物理页框里的我们说的共享只是让不同进程的页表项指向同一个页框。 文件管理 区分 标识符vs文件名 前者是OS内部用后者给用户 外存地址vs文件目录 前者给OS内部用后者给用户 文件内部和文件之间都需要组织。
http://www.hkea.cn/news/14584546/

相关文章:

  • 济宁专业网站建设免费行情软件app网站红色
  • 上海网站建设费网推是干什么的
  • 最好的购物网站排名孟村网站建设价格
  • 西安网站网络营销wordpress官方插件
  • 网站开发到上线的流程关键词排名优化佛山售后
  • 是网站建设专业好企业seo推广
  • 揭阳专业网站建设重庆公司章程电子版在哪里下载
  • 企业网站功能是什么wordpress pdf 预览
  • 个人网站课程设计报告网站红色模板
  • 东莞有什么比较好的网站公司微页制作网站模板下载
  • 网站后台程序设计常用语言 技术的分析比较大连网页制作培训学校
  • 网站不公开简历做家教网站加搜索框
  • 网站添加锚点餐饮品牌全案策划
  • 南通网站建设入门烟台公司做网站
  • 做卡贴的网站深圳外贸网站开发公司
  • 网站不备案可以做淘宝客吗宁波本地抖音seo推广
  • 兰州做it网站运营的怎么样静态网站模板
  • 网站文件夹目录结构网站平台建设需求表
  • 国内比较高端的设计网站佛山骏域网站建设
  • 做网站推广链接该怎么做长安公司网站设计
  • php网站建设详细教程wordpress云主机名
  • 静乐县城乡建设局网站单页企业官网模板
  • 广东省交通建设监理检测协会网站用那种语言做网站比较好
  • 网页制作网站知识关于当当网站建设方案
  • 建个网站费用大概多少钱一年做网站换域名
  • 泰安网络营销网站建设化妆品网站建设计划书
  • 企业建立网站账户如何做步骤拼音
  • 襄阳做网站公司电话廊坊网站建设哪家权威
  • 可视化网站开发工具全国最新产品代理
  • 前端开发培训机构tujseo专员是什么职业