频道栏目
首页 > 资讯 > Linux > 正文

Linux之分段机制和分页机制

17-08-18        来源:[db:作者]  
收藏   我要投稿

linux是实时操作系统吗?

实时操作系统的设计原则:是指当外界事件或数据产生时,能够接受并以足够快的速度予以处理,其处理的结果又能在规定的时间之内来控制生产过程或对处理系统做出快速响应,调度一切可利用的资源完成实时任务,并控制所有实时任务协调一致运行的操作系统。提供及时响应和高可靠性是其主要特点——摘自“百度百科”。其设计原则——采用各种算法和策略,始终保证系统行为的可预测性(predictability)。可预测性是指在系统运行的任何时刻,在任何情况下,实时操作系统的资源调配策略都能为争夺资源(包括CPU、内存、网络带宽等)的多个实时任务合理地分配资源,使每个实时任务的实时性要求都能得到满足。 通用操作系统的设计原则:尽量缩短系统的平均响应时间并提高系统的吞吐率,在单位时间内为尽可能多的为用户请求提供服务。如对于整个系统来说,注重所有任务的平均响应时间而不关心单个任务的响应时间,对于某个单个任务来说,注重每次执行的平均响应时间而不关心某次特定执行的响应时间。(比如内存管理中的LRU替换策略,可以确保大部分的数据在较短的时间内被访问,减少平均访问时间;cache等也是遵循这个原则),所以linux属于通用操作系统

内存寻址

物理地址,虚拟地址和线性地址的区别是什么?

物理地址:插在主板上的内存条所提供的内存叫做物理内存 虚拟地址:将应用程序员看到的内存空间定义为虚拟地址空间,其中地址就叫做虚拟地址(逻辑地址),一般采用段:偏移量来描述 线性地址:指一段连续的,不分段的,范围从0-4G的地址空间,一个线性地址就是线性地址空间的一个绝对地址

段机制(虚拟地址转换成线性地址),“段”是虚拟地址空间的基本单位,一般情况下虚拟地址的表示方法为段基址:偏移量,但是有些平台不支持段机制,只支持分页机制,为了增加linux的可移植性,linux创造性的提出了段基址为0,此时偏移量 == 线性地址。所以linux中也保存了段机制,增加了可移植性。在linux中虚拟地址==线性地址。

分页机制(线性地址转换成物理地址)

页面 页表
把线性地址分为若干大小相等的片称为“页” 把物理地址空间分成与页大小相等的若干存储块称为“页面” “页表”是把线性地址映射成物理地址的一种数据结构
大小为4K 大小为4K 大小为4Byte<字节>称为页表项

以32位的操作系统为例:二级分页中也目录的大小为4K,4K(1个页面)的页目录能—->找到4M大小的页表(1K个页)—->找到4G(1M个页)的地址

线性地址到物理地址的转换

80x86有四个32位的控制寄存器,它们是CR0,CR1,CR2,CR3

image

下表是CR0的工作方式:

PG PE 方式
0 0 实模式,8080操作
0 1 保护模式,但不允许分页
1 0 出错
1 1 允许分页的保护模式

* CR1是未定义的控制寄存器,供将来的处理器使用

* CR2是缺页线性地址寄存器,保存最后一次出现缺页的全32位线性地址

* CR3是页目录基址寄存器,保存页目录的物理地址,页目录总是放在以4K为单位的存储器边缘上,因此,其地址的低12位一直是0,即使写上内容也不会被理会。

image

第一步,用32位的线性地址的高10位作为页目录项的索引,将它乘以4(因为1个页目录项占4个字节),与CR3中页目录的起始地址相加,获得相应的页目录项所在的内存地址

第二步:从这个页目录项地址开始读取32位页目录项,取出其高20位,再给低12位补0,形成的32位就是页表在内存的起始地址

第三步:用32位线性地址中的第21~12位作为页表中页表项的索引,将它乘以4(一个页表项占4个字节),与页表的起始地址相加,获得相应的页表项所在的内存地址

第四步:从这个地址开始读取32位页表项,取出其高20位,再将线性地址的第0~11位放在低12位,最终形成32位的页面物理地址

相关TAG标签
上一篇:Linux下TCP网络编程流程
下一篇: SSM 登录演示
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站