操作系统结构分析及应用编程.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
②、就绪状态 处于就绪状态下的进程基本具备了运行条件,正在等待使用处理机。这时进程的映像可能全部在内存,也可能只有需要运行的部分在内存。MMU装配的不是本进程映像的地址映射参数,系统变量U也不与本进程的user结构对应。 系统中通常有若干的不同优先级的就绪队列,每个就绪队列中有若干的就绪进程在排队等待运行。 ③、睡眠状态 进程不具备运行条件,需等待某种事件的发生,无法继续执行下去。此时进程的映像根据内存的空闲程度,可能全部在内存中、可能部分在内存中、也可能全部都在交换区上。 在程序实现上,造成进程睡眠的唯一直接原因是调用了sleep()函数,调用sleep()的原因有多种: a、进程在运行过程中要使用某种资源,如缓冲区,但由于该资源已被占用,不能立即得到满足,不得不进入睡眠状态,等待其它进程释放该资源。 b、进程实施同步或互斥,如父进程对子进程进行跟踪时,子进程等待父进程发控制命令,或父进程等待子进程完成某一次操作等。 c、等待输入/输出操作的完成 d、进程完成某一项任务后,暂时停止自身的运行,等待新任务的来临,如0号进程或shell进程等。 8、睡眠与唤醒 一般而言,一个进程除非自己调用了sleep函数,否则是在执行一个系统调用期间进入睡眠的(why?): 该进程执行一个操作系统陷入(trap),进入核心,然后可能进入睡眠等待某个资源(或软资源或硬资源)。 进程在一个事件上睡眠是它们处于睡眠状态,直到该事件发生。 当进程等待的事件发生时,等待该资源的进程就被唤醒并进入“就绪”状态,而不是直接进入“运行”状态。 sleep函数运行时完成下面三项主要工作: ①、将进程的状态标志设置为睡眠 ②、记录下睡眠原因 ③、修改进程优先级。这个优先级是进程下次被唤醒时所具有的竞争处理机的能力,它因不同的睡眠原因而异,因为不同的事件要求响应的紧急程度是不同的。 睡眠原因 睡眠优先数 进程对换 PSWP inode操作 PINOD 块设备操作 PRIBIO PRIUBA PIERO 管道操作 PPIPE 虚拟文件操作 PVFS 等待操作 PWAIT 上锁操作 PLOCK 资源等待 PSLEP 用户状态 PUSER 初始值 NZERO 系统中各种睡眠原因相应的优先权 优先数小,优先级高 优先数大,优先级低 9、系统调用接口 在为UNIX系统编写的C语言编译程序中,定义了一个与系统调用名字一一对应的函数库,使应用程序能够执行系统调用。 库函数中包含一条操作系统陷入(trap)指令,把程序的运行模式由用户态转变为核心态。 每一个库函数在执行trap指令时,使用与机器有关的方式向核心传送一个操作系统陷入号,即系统调用号。 C编译程序中的库函数是在用户态下运行的,当库函数执行trap指令时,产生一个中断信号,调用中断处理程序处理中断请求(进入核心态,执行系统调用),中断向量就是系统调用号。 系统调用接口是中断处理程序的特例! 说明: ①、这种分配也适合分配磁盘块,实际上ialloc和alloc合用同一个程序; ②、本算法在一级存贮结构的文件系统中也适用,只是将上述的柱面组换成存放硬盘i节点表的各项盘块即可; ③、具体在某一个柱面组中寻找空闲i节点时,是通过查看位示图来进行的; ④、这种算法使得各柱面组中的空闲i节点数分布比较均匀,因为起始点(即预分配的i节点所在的柱面组)是随机任意的(或相邻磁道)。 6、释放磁盘i节点 ifree 当删除一个文件时,需要把该文件对应的icommon释放掉。 核心首先释放该icommon中数据块索引表中标明的数据块,修改超级块中的空闲数据块数,以及数据块位示图; 再修改超级块中的空闲i节点数和i节点位示图。 第五章 文件系统的系统调用 本章主要介绍针对上层用户使用的系统调用。用户通过使用本章介绍的系统调用来申请操作系统中有关文件和文件系统操作的各项功能。 本章介绍的算法是基于第四章所介绍的底层文件系统算法之上的,主要包括七大类操作: 返回文件描述符类操作 路径名转换类操作 分配索引节点类操作 文件属性类操作 文件输入输出类操作 文件系统装卸类操作 文件系统目录树操作 1、打开文件 open 2、读文件

文档评论(0)

xiaozu + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档