ImageVerifierCode 换一换
格式:PPT , 页数:318 ,大小:4.83MB ,
文档编号:3592661      下载积分:32 文币
快捷下载
登录下载
邮箱/手机:
温馨提示:
系统将以此处填写的邮箱或者手机号生成账号和密码,方便再次下载。 如填写123,账号和密码都是123。
支付方式: 支付宝    微信支付   
验证码:   换一换

优惠套餐
 

温馨提示:若手机下载失败,请复制以下地址【https://www.163wenku.com/d-3592661.html】到电脑浏览器->登陆(账号密码均为手机号或邮箱;不要扫码登陆)->重新下载(不再收费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录  
下载须知

1: 试题类文档的标题没说有答案,则无答案;主观题也可能无答案。PPT的音视频可能无法播放。 请谨慎下单,一旦售出,概不退换。
2: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
3: 本文为用户(三亚风情)主动上传,所有收益归该用户。163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

1,本文(Linux操作系统原理与应用课件.ppt)为本站会员(三亚风情)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!

Linux操作系统原理与应用课件.ppt

1、Linux操作系统原理与应用操作系统原理与应用第一章 操作系统概述认识操作系统 操作系统的发展开放源代码的Unix/Linux操作系统 Linux内核 Linux内核源代码 认识操作系统认识操作系统 打开计算机,首先跳入眼帘的是什么?要拷贝一个文件,具体的拷贝操作是谁完成的?你需要知道文件存放在何处吗?柱面、磁道、扇区描述什么?数据的搬动过程怎样进行 繁琐留给自己,简单留给用户 操作系统穿上华丽的外衣图形界面 操作系统穿上朴素的外衣字符界面认识操作系统认识操作系统从使用者的角度看从使用者的角度看 拷贝命令的C语言实现片断infinf=open(“/floppy/TEST”,O_RDONLY,0

2、);=open(“/floppy/TEST”,O_RDONLY,0);out=open(“/mydirout=open(“/mydir/test”,O_WRONLY,0600);/test”,O_WRONLY,0600);do dol=read(inf,bufl=read(inf,buf,4096);,4096);write(outf,bufwrite(outf,buf,l);,l);while(l);while(l);close(outfclose(outf););close(infclose(inf););认识操作系统认识操作系统从程序开发者的角度看从程序开发者的角度看 浏览器 信息管理

3、文件管理系统 游戏 编译程序 编辑程序 命令 解释程序 操作系统 CPU、内存、I/O接口硬件内核 认识操作系统认识操作系统从所处位置看从所处位置看操作系统是其它所有用户程序运行的基础。#includemain()printf(“Hello worldn”)用户告诉操作系统执行用户告诉操作系统执行testtest程序程序 操作系统通过文件名找到该程序操作系统通过文件名找到该程序 检查其类型检查其类型,检查程序首部,找出代检查程序首部,找出代码和数据存放的地址码和数据存放的地址文件系统找到第一个磁盘块文件系统找到第一个磁盘块 操作系统建立程序的执行环境操作系统建立程序的执行环境 操作系统把程序从

4、磁盘装入内存,并操作系统把程序从磁盘装入内存,并跳到程序开始处执行跳到程序开始处执行 该程序的执行过程简述如下该程序的执行过程简述如下:操作系统检查字符串的位置是否正确操作系统检查字符串的位置是否正确 操作系统找到字符串被送往的设备操作系统找到字符串被送往的设备 操作系统将字符串送往输出设备窗口操作系统将字符串送往输出设备窗口系统确定这是一个合法的操作,然后系统确定这是一个合法的操作,然后将字符串转换成像素将字符串转换成像素窗口系统将像素写入存储映像区窗口系统将像素写入存储映像区 视频硬件将像素表示转换成一组模拟视频硬件将像素表示转换成一组模拟信号控制显示器(重画屏幕)信号控制显示器(重画屏幕

5、)显示器发射电子束。你在屏幕上看到显示器发射电子束。你在屏幕上看到Hello worldHello world。从中看从中看到什么到什么认识操作系统认识操作系统从程序执行看从程序执行看 从操作系统设计者的角度看 操作系统的设计目标是什么?尽可能地方便用户使用计算机 让各种软件资源和硬件资源高效而协调地运转起来。计算机的硬件资源和软件资源各指什么?假设在一台计算机上有三道程序同时运行,并试图在一台打印机上输出运算结果,必须考虑哪些问题?从操作系统设计者的角度考虑,一个操作系统必须包含以下几部分 操作系统接口 CPU管理 内存管理 设备管理 文件管理认识操作系统认识操作系统从设计者角度看从设计者角

6、度看 操作系统操作系统是计算机系统中的一个系统软件,是一些程序模块的集合它们能以尽量有效、合理的方式组织和管理计算机的软硬件资源,合理的组织计算机的工作流程,控制程序的执行并向用户提供各种服务功能,使得用户能够灵活、方便、有效的使用计算机,使整个计算机系统能高效、顺畅地运行。认识操作系统认识操作系统定义定义操作系统的演变单道批处理系统单道批处理系统 串行执行预先组织好的一组一组任务 提高了系统效率。多道批处理系统多道批处理系统 可以交错运行多个程序 再次提高系统效率。分时分时系统系统将处理器的运行时间分成数片,均分或依照一定权重派发给系统中的用户使用 快速响应 操作系统的发展操作系统的发展硬件

7、角度下的操作系发展轨迹 年 代 硬 件 特点 操作系统特点 背 景 机械计算机时代17世纪20世纪初 1)纯机械结构,低速2)只能进行简单的数学运算 纯手工操作 从计算尺至差分机到分析机发展了数百年第一代计算机1946年50年代末电子管计算机 1)体积大、能耗高、故障多、价格贵2)难以普及应用 无操作系统(程序按机器码编写,载体从插件板到卡片与纸带)1906年发明电子管1946 ENIAC研制成功(第一台电子管计算机)年 代 硬 件 特点 操作系统特点 背 景 第二代计算机50年代末60年代中期晶体管计算机 1)采用印刷电路2)稳定性与可靠性 大 大 提 高3)批量生产成为可能4)进入实际应用

8、领域但数量有限1)单道批处理系统2)操作系统以监督软件形式出现3)任务按顺序方式处理 1947年发明晶体管 第三代计算机60年代中期70年代初集成电路计算机 1)体积减小,性价 比 迅 速 提 高2)小型计算机发展迅速3)进入商业应用4)尚不适合家庭应用的需求1)涌现大批操作系统多道批处理系统、分时系统和实时系统2)奠定了现代操作系统的基本框架 1958年发明集成电路1971年INTEL发明微处理器 硬件角度下的操作系统发展轨迹硬件角度下的操作系统发展轨迹分析 在硬件的性价比较低的时候,操作系统设计追求什么?在硬件性价比越来越高后,操作系统的设计开始追求的目标是什么?计算机开始普及后,操作系统

9、的设计开始追求?从第三代到第四代计算机,操作系统的发展逐渐摆脱追随硬件发展的状况,形成自己的理论体系 进入第四代系统后,分布式系统和多处理器系统虽然极大的扩充了操作系统理论,但系统结构并没有变化,只是各功能模块得以进一步完善。操作系统的发展操作系统的发展硬件角度下操作系统发展的分析硬件角度下操作系统发展的分析主流操作系统 系统特点 计 算 机 语 言 背 景 无 手工操作 无编程语言直接使用机器代码 1936年图灵提出图灵机 单道批处理系统 作业运行的监督程序 编程语言雏形期 1957年 FORTRAN语言开发成功多道批处理分时系统实时系统多处理系统 操作系统结构确立,分为处理机管理、内存管理

10、、设备管理、文件管理等模块 1)编程语言大量涌现2)结构化程序设计3)C语言逐渐 60年代的软件危机导致软件工程的发展1969年 Unix诞生1972年 C语言推出 主流操作系统 系统特点 计 算 机 语 言 背 景 类Unix系列WINDOWS系列 人机交互成为主题1)可视化界面2)多媒体技 面向对象语言成为主流 80年代中期开始面向对象技术逐步发展网络操作系统分布式操作系统 微内核技术兴起 1)JAVA语言2)脚本语言兴起 1995年JAVA推出 嵌入式系统 单内核与微内核竞争激烈 编程工具向跨平台方向发 1991年免费的操作系统Linux发布 软件角度下的操作系统发展轨迹软件角度下的操作

11、系统发展轨迹 分析 程序设计理论约束着操作系统设计。操作系统的发展滞后于计算机语言的发展,从结构化设计到对象化设计,操作系统总是最后应用新编程理论的软件之一。至今操作系统对于是否需要彻底对象化(即微内核化),还处于徘徊时期,仍在探索单内核与微内核的最佳结合方式。人机交互技术主要是为用户考虑,这是对操作系统设计进行的变革。以Linux为代表的开源软件的出现,打破了带有神秘色彩的传统的封闭式开发模式。软件角度下的操作系统发展轨迹分析软件角度下的操作系统发展轨迹分析 讲究效率的单模块操作系统讲究效率的单模块操作系统进程管理进程管理内存管理内存管理设备管理设备管理文件管理文件管理模块之间可以互相调用的

12、单模块结构模块之间可以互相调用的单模块结构讲究效率的单模块操作系统讲究效率的单模块操作系统v模块之间直接调用函数,除了函数调用的开销模块之间直接调用函数,除了函数调用的开销外,没有额外开销。外,没有额外开销。v庞大的操作系统有数以千计的函数v复杂的调用关系势必导致操作系统维护的困难追求简洁的微内核操作系统追求简洁的微内核操作系统客户进程客户进程进程服务器进程服务器内存服务器内存服务器文件服务器文件服务器微内核微内核追求简洁的微内核操作系统追求简洁的微内核操作系统v内核与各个服务器之间通过通信机制进行交互内核与各个服务器之间通过通信机制进行交互,这使得微内核结构的效率大大折扣。,这使得微内核结构

13、的效率大大折扣。v内核发出请求,服务器做出应答v为各个服务器模块的相对独立性,使得其维护相对容易历史悠久的历史悠久的Unixv在在MULTICS(1969)的肩上的肩上制研制者制研制者Ken Thompson和和Dennis M.Ritchie 站站Unix的诞生还伴有的诞生还伴有C语言呱呱落地语言呱呱落地UnixUnix是现代操作系统的代表:安全、可靠、强大是现代操作系统的代表:安全、可靠、强大的计算能力的计算能力UnixUnix的商业化是一把双刃剑的商业化是一把双刃剑 自由而奔放的黑马自由而奔放的黑马Linux诞生于学生之手诞生于学生之手成长于成长于Internet Internet 壮大

14、于自由而开壮大于自由而开放的文化放的文化芬兰、赫尔辛基大学、芬兰、赫尔辛基大学、19901990起始于写两个进程起始于写两个进程 然后写驱动程序、文件然后写驱动程序、文件系统、任务切换程序,系统、任务切换程序,从而形成一个操作系统从而形成一个操作系统邹形邹形vPOSIX POSIX 表示可移植操作系统接口(表示可移植操作系统接口(Portable Operating System InterfacePortable Operating System Interface)vPOSIXPOSIX是在是在UnixUnix标准化过程中出现的产物。标准化过程中出现的产物。vPOSIX 1003.1POS

15、IX 1003.1标准定义了一个最小的标准定义了一个最小的UnixUnix操作系统接口操作系统接口 v任何操作系统只有符合这一标准,才有可任何操作系统只有符合这一标准,才有可能运行能运行UnixUnix程序程序 vGNU GNU 是是 GNU Is Not Unix GNU Is Not Unix 的递归缩写,是自的递归缩写,是自由软件基金会的一个由软件基金会的一个项目项目 。v GNU GNU 项目产品包括项目产品包括 emacs emacs 编辑器、著名的编辑器、著名的 GNU C GNU C 和和 GccGcc编译器等,这些软件叫做编译器等,这些软件叫做GNUGNU软软件。件。vGNU

16、GNU 软件和派生工作均适用软件和派生工作均适用 GNU GNU 通用公共许通用公共许可证,即可证,即 GPLGPL(General Public License)vLinuxLinux的开发使用了众多的的开发使用了众多的GUNGUN工具工具vGPL GPL 允许软件作者拥有软件版权允许软件作者拥有软件版权 v但但GPLGPL规定授予其他任何人以合法复制、规定授予其他任何人以合法复制、发发行和修改软件的权利。行和修改软件的权利。v符合符合 POSIX POSIX 标准的操作系统内核、标准的操作系统内核、Shell Shell 和外围工具。和外围工具。v C C 语言编译器和其他开发工具及函数库

17、语言编译器和其他开发工具及函数库 vX Window X Window 窗口系统窗口系统 v各种应用软件,包括字处理软件、图象处理各种应用软件,包括字处理软件、图象处理软件等。软件等。v世界各地软件爱好者集体智慧的结晶世界各地软件爱好者集体智慧的结晶 v提供源代码,遵守提供源代码,遵守GPLGPL。v经历了各种各样的测试与考验,软件的稳定经历了各种各样的测试与考验,软件的稳定性好。性好。v开发人员凭兴趣去开发,热情高,具有创造开发人员凭兴趣去开发,热情高,具有创造性。性。vLinusLinus领导下的开发小组开发出的系统内核领导下的开发小组开发出的系统内核 v是所有是所有Linux Linux

18、 发布版本的核心发布版本的核心 v内核开发人员一般在百人以上,任何自由程内核开发人员一般在百人以上,任何自由程序员都可以提交自己的修改工作。序员都可以提交自己的修改工作。v采用邮件列表来进行项目管理、交流、错误采用邮件列表来进行项目管理、交流、错误报告报告v有大量的用户进行测试,正式发布的代码质有大量的用户进行测试,正式发布的代码质量高量高 硬件硬件系统调用接口应用应用程序进程程序进程1应用应用程序进程程序进程2应用应用程序进程程序进程3Linux内核内核用户进程用户进程 内核子系统内核子系统系统调用系统调用v用户进程用户进程运行在运行在LinuxLinux内核之上的一个庞大软件内核之上的一个

19、庞大软件集合。集合。v系统调用系统调用内核的出口,用户程序通过它使用内核内核的出口,用户程序通过它使用内核提供的功能。提供的功能。vLinuxLinux内核内核操作系统的灵魂,负责管理磁盘上的操作系统的灵魂,负责管理磁盘上的文件、内存,负责启动并运行程序,负责从网络上文件、内存,负责启动并运行程序,负责从网络上接收和发送数据包等等。接收和发送数据包等等。v硬件硬件包括了包括了LinuxLinux安装时需要的所有可能的物理安装时需要的所有可能的物理设备。例如,设备。例如,CPUCPU、内存、硬盘、网络硬件等等。内存、硬盘、网络硬件等等。v进程调度控制着进程对进程调度控制着进程对CPUCPU的访问

20、。的访问。v内存管理允许多个进程安全地共享主内存区域内存管理允许多个进程安全地共享主内存区域 v虚拟文件系统隐藏各种不同硬件的具体细节,为虚拟文件系统隐藏各种不同硬件的具体细节,为所有设备提供统一的接口。所有设备提供统一的接口。v网络提供了对各种网络标准协议的存取和各种网网络提供了对各种网络标准协议的存取和各种网络硬件的支持。络硬件的支持。v进程间通信进程间通信(IPC)(IPC)支持进程间各种通信机制,包支持进程间各种通信机制,包括共享内存、消息队列及管道等。括共享内存、消息队列及管道等。0.01 Linux(第一版)(第一版)0.13版版|产品化版本产品化版本 实验版本实验版本 1.0.0

21、 1.1.0(1.0.0的拷贝的拷贝)1.0.X(修改修改)1.1.X(增加新功能,进行测试增加新功能,进行测试)1.1.95(1.1.95(成为成为1.2.0)1.2.0)vLinuxLinux超文本交叉代码检索工具超文本交叉代码检索工具 http:/lxr.linuxhttp:/lxr.linux.no/.no/v Windows平台下的源代码阅读工具平台下的源代码阅读工具Source Insightv http:/ v 第一期第一期“走入走入LinuxLinux世界世界”涉猎了操作系统的来龙涉猎了操作系统的来龙去脉后与大家携手步入去脉后与大家携手步入LinuxLinux世界。世界。v下载

22、代码,亲手搭建实验系统。下载代码,亲手搭建实验系统。第二章 内存寻址内存寻址的演变 段机制分页机制 Linux中的汇编语言 Linux系统地址映射示例 操作系统横跨软件和硬件的桥梁 内存寻址操作系统设计的硬件基础之一 操作系统的设计者必须在硬件相关的代码与硬件无关的代码之间划出清楚的界限,以便于一个操作系统很容易地移植到不同的平台。在这众多的平台中,大家最熟悉的就是i386,即Intel80386体系结构。因此,我们所介绍的内存寻址也是以此为背景。石器时期8位 青铜时期16位白银时期24位 黄金时期32位 在微处理器的历史上,第一款微处理器芯片4004是由Intel推出的,4位。在4004之后

23、,intel推出了一款8位处理器叫8080,它有1个主累加器(寄存器A)和6个次累加器(寄存器B,C,D,E,H和L)那时没有段的概念,访问内存都要通过绝对地址,因此程序中的地址必须进行硬编码(给出具体地址),而且也难以重定位 intel开发出的16位的处理器叫8086,标志着Intel X86王朝的开始,同时引入了“段”概念。段描述了一块有限的内存区域,区域的起始位置存在专门的寄存器(段寄存器)中。8086处理器地址线扩展到了20位,寻址空间到了1M 也就是把1M大的空间分成数个64k的段来管理(化整为零了)。把16位的段地址左移动4位后,再与16位的偏移量相加便可获得一个20位的内存地址,

24、intel的80286处理器于1982年问世。地址总线位数增加到了24位。从此开始引进了一个全新理念保护模式保护模式 访问内存时不能直接从段寄存器中获得段的起始地址了,而需要经过额外转换和检查。80286处理器一些致命的缺陷注定不能长久,它很快被天资卓越的兄弟80386代替了 80386是一个32位的CPU,其寻址能力达到4GB Intel选择了在段寄存器的基础上构筑保护模式,并且保留段寄存器16位 在保护模式下,它的段范围不再受限于64K,可以达到4G 这真正解放了软件工程师,他们不必再费尽心思去压缩程序规模,软件功能也因此迅速提升 从80386以后,Intel的CPU经历了80486、Pe

25、ntium、PentiumII、PentiumIII等型号,但基本上属于同一种系统结构的改进与加强,而无本质的变化,所以我们把80386以后的处理器统称为IA32IA32(32 Bit Intel Architecture)。把16位的通用寄存器、标志寄存器以及指令指针寄存器扩充为32位的寄存器 段寄存器仍然为16位。增加4个32位的控制寄存器 增加4个系统地址寄存器 增加8个调式寄存器 增加2个测试寄存器通用寄存器v8 8个通用寄存器是个通用寄存器是80868086寄存器的超集,它们分别寄存器的超集,它们分别为:为:EAX EAX,EBX EBX,ECX ECX,EDX EDX,EBP EB

26、P,EBPEBP,ESIESI及及 EDI EDI 段寄存器v8086中有4个16位的段寄存器:CS、DS、SS、ES,分别用于存放可执行代码的代码段、数据段、堆栈段和其他段的基地址。v这些段寄存器中存放的不再是某个段的基地址,这些段寄存器中存放的不再是某个段的基地址,而是某个段的而是某个段的选择符选择符(SelectorSelector)v段基地址存放在段段基地址存放在段描述符表描述符表(Descriptor Descriptor)中,)中,表的索引就是表的索引就是选择符选择符 指令指针寄存器指令指针寄存器 v指令指针寄存器指令指针寄存器EIPEIP中存放下一条将要执行指令中存放下一条将要执

27、行指令的偏移量(的偏移量(offset offset),这个偏移量是相对于目),这个偏移量是相对于目前正在运行的代码段寄存器前正在运行的代码段寄存器CSCS而言的。偏移量加而言的。偏移量加上当前代码段的基地址,就形成了下一条指令的上当前代码段的基地址,就形成了下一条指令的地址。地址。vEIPEIP中的低中的低1616位可以被单独访问,给它起名叫指位可以被单独访问,给它起名叫指令指针令指针IPIP寄存器,用于寄存器,用于1616位寻址。位寻址。标志寄存器 v标志寄存器EFLAGS存放有关处理器的控制标志,很多标志与16位FLAGS中的标志含义一样。将主板上的物理内存条所提供的内存空间定将主板上的

28、物理内存条所提供的内存空间定义为义为物理内存空间物理内存空间,其中每个内存单元的实,其中每个内存单元的实际地址就是际地址就是物理地址物理地址将应用程序员看到的内存空间定义为虚拟地将应用程序员看到的内存空间定义为虚拟地址空间址空间(或地址空间或地址空间),其中的地址就叫,其中的地址就叫虚拟虚拟地址地址(或虚地址或虚地址),一般用一般用“段:偏移量段:偏移量”的形式来描述的形式来描述 线性地址空间线性地址空间是指一段连续的,不分段的,是指一段连续的,不分段的,范围为范围为0 0到到4 4GBGB的地址空间,一个的地址空间,一个线性地址线性地址就就是线性地址空间的一个绝对地址。是线性地址空间的一个绝

29、对地址。CPUMMU内存内存磁盘磁盘控制器控制器总线总线CPU把虚地址送给把虚地址送给MMU MMU把物理地址送给存储器把物理地址送给存储器虚拟地址虚拟地址段段是虚拟地址空间的基本单位,段机制必须是虚拟地址空间的基本单位,段机制必须把虚拟地址空间的一个地址转换为线性地址把虚拟地址空间的一个地址转换为线性地址空间的一个线性地址。空间的一个线性地址。用三个方面来描述段用三个方面来描述段 v段的段的基地址基地址(Base Address)(Base Address):在线性地址空间:在线性地址空间中段的起始地址。中段的起始地址。v段的段的界限界限(Limit)(Limit):在虚拟地址空间中,段内可

30、:在虚拟地址空间中,段内可以使用的最大偏移量。以使用的最大偏移量。v段的段的保护属性保护属性(Attribute)(Attribute):表示段的特性。表示段的特性。例如,该段是否可被读出或写入,或者该段是否例如,该段是否可被读出或写入,或者该段是否作为一个程序来执行,以及段的特权级等等。作为一个程序来执行,以及段的特权级等等。虚拟地址空间虚拟地址空间如图所示的段描述符表(或叫段表)来描述转换关系。段号描述的是虚拟地址空间段的编号,基地址是线性地址空间段的起始地址。段描述符表中的每一个表项叫做段描述符012 索引(段号)基地址 界限 属性 Baseb Limitb Attributeb Bas

31、ea Limita Attributea Basec LimitcAttributec全局描述符表全局描述符表GDTGDT(GloabalGloabal Descriptor Descriptor TableTable)中断描述符表中断描述符表IDTIDT(Interrupt Descriptor Interrupt Descriptor TableTable)局部描述符表局部描述符表LDTLDT(Local Descriptor Local Descriptor TableTable)为了加快对这些表的访问,为了加快对这些表的访问,IntelIntel设计了专设计了专门的寄存器,以存放这些表

32、的基地址及表的门的寄存器,以存放这些表的基地址及表的长度界限长度界限 。这些寄存器只供操作系统使用。这些寄存器只供操作系统使用。有关这些表的详细内容请参看有关保护模式有关这些表的详细内容请参看有关保护模式的参考书。的参考书。存放存放索引索引或叫或叫段号,段号,因此,这里的段寄存器因此,这里的段寄存器也叫选择符,即从描述符表中选择某个段。也叫选择符,即从描述符表中选择某个段。选择符(段寄存器)的结构:选择符(段寄存器)的结构:RPL表示请求者的特权级(Requestor Privilege Level)保护模式提供了四个保护模式提供了四个特权级特权级,用,用0303四个数四个数字表示字表示 很多

33、操作系统(包括很多操作系统(包括Linux,WindwosLinux,Windwos)只使)只使用了其中的最低和最高两个,即用了其中的最低和最高两个,即0 0表示最高表示最高特权级,对应特权级,对应内核态内核态;3 3表示最低特权级,表示最低特权级,对应对应用户态用户态。保护模式规定,高特权级可以访问低特权级,保护模式规定,高特权级可以访问低特权级,而低特权级不能随便访问高特权级。而低特权级不能随便访问高特权级。LinuxLinux是怎样处理段机制?是怎样处理段机制?将线性地址空间划分成若干大小相等的片,称为页(页(PagePage)物理地址空间分成与页页大小相等大小相等的若干存储块,称为(物

34、理)块或页面物理)块或页面(Page FramePage Frame)页的大小应该为多少?由谁确定?页表页表是把线性地址映射到物理地址的一种数据结构。页表中应当包含如下内容:v物理页面基地址:线性地址空间中的一个页装入内存后所对应的物理页面的起始地址。v页的属性:表示页的特性。例如该页是否在内页的属性:表示页的特性。例如该页是否在内存,是否可被读出或写入等。存,是否可被读出或写入等。页面的大小为4KB,物理页面基地址需要多少位就可以?物理页面基地址:指的是页所对应的物理页面在内存的起始物理地址。相当于物理块号(为什么?)其最低12位全部为0,因此用高20位来描述32位的地址。属性见书 物理页面

35、基地址物理页面基地址 属性属性31 11 0 为什么要采用两级页表?页目录页目录页表页表物理页面物理页面这个结构的伪代码描述如下 typedef struct unsigned int dir:10;/*用作页目录中的下标,对应的 目录项指向一个页表*/unsigned int page:10 /*用作页表的下标,对应的页表 项指向一个物理页面*/unsigned int offset:12 /*在4K字物理页面内的偏移量*/LinearAddr 页目录页目录 页页 页内偏移量页内偏移量31 22 12 0 对于页表,页的保护是由属性部分的U/S标志和R/W标志来控制的。当U/S标志为0时,只

36、有处于内核态的操作系统才能对此页或页表进行寻址。当这个标志为1时,则不管在内核态还是用户态,总能对此页进行寻址。此外,与段的三种存取权限(读、写、执行)不同,页的存取权限只有两种(读、写)。如果页目录项或页表项的读写标志为0,说明相应的页表或页是只读的,否则是可读写的。假如操作系统给一个正在运行的进程分配的线性地址空间范围是0 x20000000 到 0 x2003ffff。这个空间由64页组成。我们从分配给进程的线性地址的最高10位(分页硬件机制把它自动解释成页目录域)开始。这两个地址都以2开头,后面跟着0,因此高10位有相同的值,即十六进制的0 x080或十进制的128。因此,这两个地址的

37、页目录域都指向进程页目录的第129项。相应的目录项中必须包含分配给进程的页表的物理地址,如图2.13。如果给这个进程没有分配其它的线性地址,则页目录的其余1023项都为0,也就是这个进程在页目录中只占一项。1023(01023(0 x3ff)x3ff)128(0 x80)128(0 x80)10231023(0 0 x3ffx3ff)64(0 x040)64(0 x040)63(0 x03f)63(0 x03f)页目录页目录页表页表假设进程需要读线性地址0 x20021406中的内容。这个地址由分页机制如何进行处理?Linux主要采用分页机制来实现虚拟存储器管理,因为:vLinuxLinux的

38、分段机制使得所有的进程都使用相同的的分段机制使得所有的进程都使用相同的段寄存器值,这就使得内存管理变得简单,也就段寄存器值,这就使得内存管理变得简单,也就是说,所有的进程都使用同样的线性地址空间是说,所有的进程都使用同样的线性地址空间(0404G G)。)。vLinux设计目标之一就是能够把自己移植到绝大多数流行的处理器平台。但是,许多RISC处理器支持的段功能非常有限。为了保持可移植性,Linux采用三级分页模式而不是两级 GNU GNU 的的C C语言语言 http:/www.faqs.org/docs/learnc/http:/www.faqs.org/docs/learnc/AT&TA

39、T&T的汇编的汇编:参见书参见书 LinuxLinux采用分页存储管理。虚拟地址空间划采用分页存储管理。虚拟地址空间划分成固定大小的分成固定大小的“页页”,由,由MMUMMU在运行时将在运行时将虚拟地址映射(变换)成某个物理页面中的虚拟地址映射(变换)成某个物理页面中的地址地址 IA32的MMU对程序中的虚拟地址先进行段式映射(虚拟地址转换为线性地址),然后才能进行页式映射(线性地址转换为物理地址)Linux巧妙地使段式映射实际上不起什么作用 假定我们有一个简单的假定我们有一个简单的C C程序程序Hello.cHello.c#include stdio#include.h greeting()

40、greeting()printfprintf(“Hello,world!n”);(“Hello,world!n”);main()main()greeting();greeting();用用LinuxLinux的实用程序的实用程序objdumpobjdump对其可执行代码进行反汇对其可执行代码进行反汇编:编:%objdumpobjdump d hello d hello08048568:08048568:8048568:pushl%ebp 8048568:pushl%ebp 8048569:movl%esp,%ebp 8048569:movl%esp,%ebp 804856b:pushl 804

41、856b:pushl$0 x809404$0 x809404 8048570:call 8048474 8048570:call 8048474 8048575:addl$0 x4,%esp 8048575:addl$0 x4,%esp 8048578:leave8048578:leave 8048579:ret 8048579:ret 804857a:movl%esi,%esi 804857a:movl%esi,%esi 0804857c:0804857c:804857c:pushl%ebp 804857c:pushl%ebp 804857d:movl%esp,%ebp 804857d:mo

42、vl%esp,%ebp 804857f:call 8048568 804857f:call 8048568 8048584:leave 8048584:leave 8048585:ret 8048585:ret 8048586:nop 8048586:nop 8048587:nop 8048587:nopLinuxLinux最常见的可执行文件格式为最常见的可执行文件格式为elf(Executable aelf(Executable and Linkable Formatnd Linkable Format)。在elf格式的可执行代码中,ld总是从0 x8000000开始安排程序的“代码段”,这

43、个地址就是虚地址程序执行时在物理内存中的实际地址,则由内核为其建立内存映射时临时分配,具体地址取决于当时所分配的物理内存页面。0 x08048568 如何转如何转化为物理地址?化为物理地址?内存寻址的演变 段机制分页机制 Linux中的汇编语言 Linux系统地址映射示例 http:/ 第二期第二期“i386i386体系结构体系结构分两部分,上半部分让分两部分,上半部分让大家认识一下大家认识一下IntelIntel系统中的内存寻址和虚拟内存的系统中的内存寻址和虚拟内存的来龙去脉。下半部分将实现一个最短小的可启动内来龙去脉。下半部分将实现一个最短小的可启动内核,一是加深对核,一是加深对i386i

44、386体系的了解,再就是演示系统体系的了解,再就是演示系统开发的原始过程。开发的原始过程。下载代码进行调试下载代码进行调试第三章 进程进程介绍 进程控制块 进程的组织方式 进程调度 进程的创建 与进程相关的系统调用及其应用 与调度相关的系统调用及应用 initABCDE运行态运行态阻塞态阻塞态就绪态就绪态include /*提供类型提供类型pidpid_t_t的定义的定义,在在PCPC机上与机上与intint型型 相同相同 */#include /*提供系统调用的定义提供系统调用的定义 */main()pid_t pid;/*此时仅有一个进程此时仅有一个进程*/printf(“PID befo

45、re fork():%dn”,(int)getpid();pid=fork();/*此时已经有两个进程在同时运行此时已经有两个进程在同时运行*/if(pidpidcurrent-pid返回正在执行的进程的标识符返回正在执行的进程的标识符 v在在task_struct中定义如下:中定义如下:task_struct *prev_task,*next_taskv宏宏for_each_task()遍历整个进程链表遍历整个进程链表#define for_each_task(p)for(p=&init_task;(p=p-next_task)!=&init_task;)v哈希函数哈希函数#define p

46、id_hashfn(x)(x)8)(x)&(PIDHASH_SZ-1)图为地址法处理冲突时的哈希表图为地址法处理冲突时的哈希表v假定哈希表义为假定哈希表义为:struct struct task_structtask_struct *pidhashpidhash PIDHASH_SZPIDHASH_SZ 对给定的对给定的PID,如何快速找到对应进程如何快速找到对应进程?v把可运行状态的进程组成一个双向循环链表,也叫可把可运行状态的进程组成一个双向循环链表,也叫可运行队列(运行队列(runqueuerunqueue)v在在task_structtask_struct结构中定义了两个指针。结构中定

47、义了两个指针。struct task_struct struct task_struct*next_run,next_run,*prevprev_run;_run;vinit_taskinit_task起链表头的作用起链表头的作用v在调度程序运行过程中,允许队列中加入新出现的可在调度程序运行过程中,允许队列中加入新出现的可运行态进程,新出现的可运行态进程插入到队尾运行态进程,新出现的可运行态进程插入到队尾 v等待队列表示一组睡眠的进程等待队列表示一组睡眠的进程 v可以把等待队列定义为如下结构:可以把等待队列定义为如下结构:struct wait_queue struct wait_queue

48、struct task_struct struct task_struct*task;task;struct struct wait_queue wait_queue*next;next;v如何让正在运行的进程等待某一特定事件?如何让正在运行的进程等待某一特定事件?LinuxLinux内内核中实现了核中实现了sleep_on()sleep_on()函数函数,请给出该函数的实现。请给出该函数的实现。v如果要让等待的进程唤醒,就调用唤醒函数如果要让等待的进程唤醒,就调用唤醒函数wake_upwake_up(),它让待唤醒的进程进入(),它让待唤醒的进程进入TASK_RUNNINGTASK_RUNN

49、ING状态状态。公平:保证每个进程得到合理的公平:保证每个进程得到合理的CPUCPU时间。时间。高效:使高效:使CPUCPU保持忙碌状态,即总是有进程保持忙碌状态,即总是有进程在在CPUCPU上运行。上运行。响应时间:使交互用户的响应时间尽可能短。响应时间:使交互用户的响应时间尽可能短。周转时间:使批处理用户等待输出的时间尽周转时间:使批处理用户等待输出的时间尽可能短。可能短。吞吐量:使单位时间内处理的进程数量尽可吞吐量:使单位时间内处理的进程数量尽可能多。能多。时间片轮转调度算法时间片轮转调度算法 v系统使每个进程依次地按时间片轮流地执行系统使每个进程依次地按时间片轮流地执行 优先权调度算法

50、优先权调度算法 v非抢占式优先权算法 v抢占式优先权调度算法 多级反馈队列调度多级反馈队列调度 v优先权高的进程先运行给定的时间片,相同优先权的进程轮流运行给定的时间片 实时调度实时调度 v一般采用抢占式调度方式 时间片表明进程在被抢占前所能持续运行的时间片表明进程在被抢占前所能持续运行的时间。时间。v时间片过长会导致系统对交互的响应表现欠佳时间片过长会导致系统对交互的响应表现欠佳 v时间片太短会明显增大进程切换带来的处理器时间片太短会明显增大进程切换带来的处理器时间。时间。LinuxLinux调度程序提高交互式程序的优先级,让它们调度程序提高交互式程序的优先级,让它们运行得更频繁,于是,调度

侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|