计算机操作系统第九章.pptVIP

  1. 1、本文档共43页,可阅读全部内容。
  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虚存的保护 (1)多任务及保护 Linux允许每个用户最多可运行256个任务。Linux使用了四级保护机制:0级供操作系统内核使用;1级供系统调用使用;2级供共享库用;3级供应用程序使用。Linux内核由系统内的所有任务共享。每个任务有各自私有代码及数据区,存储在用户空间,因而对系统中的其他任务不可见。 (2) 同一任务内的保护 在一个任务之内,定义有四种执行特权级别,用来限制对任务中的段进行访问。这些任务按照包含在段中的数据的敏感性及任务中不同部分的程序,按可信任的程度进行分区。最敏感的数据分配最高的特权级别;特权级别用数字0~3表示,数字0表示最高特权级别。 9.6 设备管理 (1)Linux沿用了UNIX处理设备的做法,把设备作为文件来处理,用户使用设备如同使用文件一样。 (2)Linux系统将设备分为字符设备、块设备和网络设备。 (3)字符设备有终端、打印机、鼠标、声卡和内存等;块设备有软盘、硬盘、光盘和其他可移动存储设备等。 (4)字符设备一般只允许顺序访问。而块设备可以随机访问,任何对块设备的读写都是通过系统内存的缓冲区进行。 在Linux中,设备驱动程序是一组相关函数的集合,含设备服务子程序和中断处理程序。设备服务子程序包含了所有与设备相关的代码。设备驱动程序利用结构file_operations与文件系统联系,因为对设备的各种操作的入口参数都放在file_operations中。对于一些特定的设备,其入口为NULL。 Linux的设备驱动程序的主要功能有: 对设备进行初始化; 使设备投入运行和退出; 从设备接收数据并将其送入内核; 从内核将数据送到外设; 检测和处理设备完成任务和出错情况。 Linux的设备驱动程序与外设的接口与DDI/DKI规范相似,可分为如下三部分: (1)驱动程序与系统引导的接口。这是通过数据结构file_operations完成。 (2)驱动程序与设备引导的接口。这部分利用驱动程序对设备进行初始化。 (3)驱动程序与设备的接口。这部分描述了驱动程序如何与设备进行交互,这与具体设备相关。 块设备驱动程序与缓冲区 内核中设置了一个结构数组blk_dev,该数组中的元素是blk_dev_struct数据结构。blk_dev_struct结构中含有一个设备驱动程序请求函数的地址和一个指向request数据结构的指针。每一个request数据结构代表一个数据块缓冲区的读写请求,都含有一个指向一个或多个buffer_head的数据结构的指针。每一个buffer_head表示一个读写请求及相应的数据块缓冲区,其中包含了驱动程序读写所需要的所有信息,如图9-13所示。在等待数据时, buffer_head结构是被锁住的,直到设备驱动程序请求完成才解锁。因此,可能有进程等待这个数据块缓冲区操作的完成。如果有一个请求(request)被加在一个空的请求队列上,设备驱动程序的请求函数将立即被调用来处理这个请求队列。否则,驱动程序将顺序地处理请求队列中的所有请求。 9.7 文件管理 Linux为了支持多种不同的文件系统,引人了纯软件中间层VFS,即虚拟文件系统(VFS,Virtual File System),使文件子系统的可扩展性、可维护性变得更好。 Linux支持多种文件系统,如EXT2、VFAT、ISO9660等。VFS是内核软件层。它为用户空间的程序提供了诸如open( )、read( )之类的统一编程接口,同时屏蔽了不同文件系统之间的差别,如图所示。 VFS中的主要数据结构 (1)超级块(super_block):存储已安装文件系统的信息,通常对应磁盘文件系统的文件系统控制块。 struct super_block { struct list_head s_list; /*将所有的超级块链接起来*/ kdev_t s_dev; /*所在设备的标识*/ unsigned long s_blocksize; /*该文件系统磁盘块的大小(字节数) */ unsigned char s_blocksize_bits;/*块大小的值log2(s_blocksize) */ struct file_system type *s_type; /*指向所属的文件系统数据结构的指针*/ struct super_operations *s_op; /*指向超级块的操作函数集*/ struct dent

文档评论(0)

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

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

1亿VIP精品文档

相关文档