linux分析内存寻址保护模式.pptVIP

  1. 1、本文档共82页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
linux分析内存寻址保护模式

Linux操作系统分析 ——内存寻址 保护模式 一、操作系统概述 不同角度看操作系统(地位、作用) 普通用户:图形界面、字符命令界面 开发者:操作系统编程接口 操作系统设计者:设计系统5大功能及结构 计算机系统:硬件与软件的桥梁 发展演变 主旋律:多道、分时 滞后于计算机语言的发展,至今还没有彻底对象化;仍在探索单内核和微内核的最佳组合方式。 linux打破了传统的封闭式开发,开源社区如火如荼 Unix/Linux系统发展 MULTICS UNIX LINUX POSIX、GNU、GPL 开发模式:遵循GPL,开放源代码、利用internet,通过BBS、新闻组及电子邮件,集体协作地开发。 自由程序员提交代码,只有领导者才有权限决定把哪些代码合并到正式核心版本中。 大量用户测试、高经验程序员裁决,linux的正式发布代码质量很高。 单内核 整个系统是一个大模块,模块间交互时直接调用其他模块的函数。注重执行效率。 微内核 服务尽可能的分离出内核,变成相对独立的模块,模块、微内核通过通信机制交互,相对效率较低些,但方便修改维护。 尚处于发展阶段。 二、Linux内核组成 进程调度:基于优先级和时间片,处于中心地位,其他子系统均依赖于它。 内存管理 虚拟文件系统: linux把设备看做特殊文件,对设备的操作和文件的操作都是通过虚拟文件系统。该部分可分两部分:逻辑文件系统和设备驱动程序。 4. 网络功能 现代操作系统都支持网络功能,该部分分为:网络协议和网络驱动程序。 5. 进程间通信:协调程序执行不可或缺的一部分 学习Linux操作系统的实现 理解原理 理解运行机制出发,分析数据结构、相关应用等。 参考内核源代码 实现的具体细节最终落到源代码上。在理论明了、有一定的程序基础后再梳理代码,这是需要反复且花功夫的一件事。 Linux源代码的阅读方法 阅读顺序 纵向:顺着程序的执行顺序逐步进行。 横向:分模块进行 划分不是绝对的,而是经常结合在一起进行 Linux的启动:顺着linux的启动顺序读,大致流程如下(以X86平台为例): ./arch/x86/boot/bootSect.S ./arch/x86/boot/setup.S ./arch/x86/kernel/head.S ./init/main.c中的start_kernel() 对于内存管理等部分,可以单独拿出来按模块进行阅读分析。 阅读工具 帮助追踪复制调用,数据结构定义等 windows环境下利用Source Insight linux环境下利用lxr(linux cross reference)或glimpse等 开始 一般按顺序阅读启动代码; 然后进行专题阅读,如进程部分,内存管理部分等。在每个功能函数内部应该一步步来 OK,为了更好理解,反复读。 从启动开始,处理器就在不断的取指令、执行指令。 内存寻址是关系系统运行很重要的一个问题,先进行讨论: 处理器怎么从内存中找到一条指令? 三、内存寻址 处理器的发展 操作系统是以硬件为基础的,linux支持的处理器平台有ARM 、i386 、Alpha等 Intel公司的i386是使用最广泛的 intel最早推出了微处理器史上第一款微处理器芯片4004,4位处理器。 随后,intel又推出8位的8080处理器,而今已发展至64位处理器 n位处理器,一般指ALU宽度。 8位:8080 16位:8086、8088、80286 32位:80386 i386系列开始 内存寻址亦随着处理器变化而变化: 16位、24位、32位 1、内存寻址的演变 8位时代——8080 系统总线的数据线通常与ALU同宽度 从程序设计的角度,地址最好与一个整数的长度一致。 8位数据线、8位地址线? NO! 8位数据线、16位地址线? 因为8位的cpu寻址能力,仅寻址256B (28)内存太小了。所以地址线采用16位寻址 (216B=64KB) ,于是也造成了cpu内部结构的不均匀性。 8位寄存器如何寻址16位地址? 8080利用1个8位主累加器和若干8位次累加器(寄存器)的计算实现16位内存地址访问。 此时的内存访问是绝对地址访问,程序中的地址就是实际物理地址(程序直接操作寄存器、内存单元等,与硬件相关)。 没有段的概念。 16位时代——8086、8088 8086处理器是intel x86王朝的开始,因为引入了重要概念——段。段是怎么来的? 8086ALU的宽度即数据总线是16位 内存地址线设置16位的话就一致了。 但16位大小的内存空间似乎满足不了未来需要。Intel最终决定内存寻址目标为20位(1MB)。 位数不一致,相差4位!!!16位的寄存器如何进行20位的地址计算? 216 220=24*216=16*

文档评论(0)

sheppha + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:5134022301000003

1亿VIP精品文档

相关文档