- 1、本文档共68页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第4章 操作系统 4.3 存储空间的组织 空闲块栈中登记的空闲块区是最近能被分配的空闲块。 在初始化后,栈顶指针SP=39,如图4(a)所示。 第4章 操作系统 4.3 存储空间的组织 在申请时,只要将当前指针指向的内容(物理块号)取出分配,并记入该文件的活动索引节点的I-addr中,且指针退一(即SP=SP-1)。 如果当前指针为0,则将当前物理块号(150)暂时保存起来,并将150块中的内容取至专用块的空闲块栈中,并置SP=49,如图(b)所示。 第4章 操作系统 4.3 存储空间的组织 然后将块150分配出去,记入该文件的I-addr中。 图(c)表示 第4章 操作系统 4.3 存储空间的组织 在空闲块释放时,要将指针SP进一(即SP=SP+1),并将释放的物理块号记入SP指向的那个单元(即压入中)。 如果此时栈已满(即SP=50),则将专用块中空闲块栈的内容记入要释放的物理块中,且置SP=0,然后将释放的物理块号记入SP指向的那个单元(即进行拉链)。 第4章 操作系统 4.3 存储空间的组织 成组链接法及相应的空闲块分配、释放算法具有以下几 个优点: ①通常只需要在专用块中登记一部分空闲块号,其余的 空闲块利用空闲块本身作为临时登记表,并不需要为 拉链花费额外的空间开销。 ②专用块在文件卷启用时就复制到内存中,申请和释放 盘块都在内存中进行,除了在栈满(释放时)或空 (分配时)时需要进行I/O操作外,平时不需要额外的 I/O操作,因而速度比较快。 ③可以从内存的专用块中直接得到物理块号,填入 I-sddr后,即可交设备处理程序处理。 第4章 操作系统 4.3 存储空间的组织 4.2.3 进程之间的通信 1. 进程的互斥与同步 (1) 进程的互斥 “多个操作不能在同一时刻执行” 当多个进程共享数据块或其他排他性使用的资源时,不能同时进入存取或使用,但进入的次序可以任意。 这种排他性使用的资源,即一次只允许一个进程使用的资源称为临界资源。 第4章 操作系统 4.2 多道程序设计 例:有两个进程A和B,进程A负责为用户作业分配打印机,进程B负责释放打印机,它们共用一张打印机分配表。 第4章 操作系统 4.2 多道程序设计 进程A分配打印机的过程为: ①逐项检查分配标志,找出分配标志为0的台号; ②把该台分配标志置1; ③把用户名和设备号填入分配表中相应的位置。 进程B释放打印机的过程为: ①逐项检查分配表的各项信息,找出分配标志为1,并且用户名和设备号与被释放的用户名和设备号相同的打印机台号; ②该台分配标志置0; ③清除该台打印机的用户名和设备号。 第4章 操作系统 4.2 多道程序设计 第4章 操作系统 4.2 多道程序设计 (2) 进程的同步 进程之间为了合作完成一个任务,而需要互相等待和互相交换信息的相互制约关系称为同步。 第4章 操作系统 4.2 多道程序设计 2. 通信原语(P/V操作) P/V操作属于低级通信语言,它是用一个信号量来实现进程之间的通信。而信号量是一个只能由P操作和V操作改变其值的整型变量。 P操作P(S)的定义如下: (1) S=S-1 (2)若S≥0,则当前进程继续运行;否则置当前进程为等待状态,并将它加入到S的等待队列中。 V操作V(S)的定义如下: (1) S=S+1 (2)若S>0,则当前进程继续运行;否则将S等待队列中的排头进程转为就绪状态,且当前进程继续运行。 第4章 操作系统 4.2 多道程序设计 第4章 操作系统 4.2 多道程序设计 信号量S1=0表示缓冲区空,S1=1表示缓冲区满; 信号量S2=0表示缓冲区满,S2=1表示缓冲区空。 (初始状态为S1=0和S2=1) 第4章 操作系统 4.2 多道程序设计 3. 消息缓冲通信 第4章 操作系统 4.2 多道程序设计 发送消息进程A的操作如下: (1)在本进程空间内开辟一个发送区; (2)把要发送的消息正文以及接收进程的名字B和消息长度填入发送区; (3)用发送原语把消息发送出去。 发送原语的形式为 SEND(发送区起始地址) 发送原语的功能是: 申请一个消息缓冲区; 把消息正文和消息长度复制到缓冲区; 查得发送消息进程名A,并填入缓冲区; 将消息缓冲区挂到接收进程B的消息队列末尾(即链尾); 此时若进程B正因等待消息而处于等待状态,则被唤醒。 第4章 操作系统 4.2 多道程序设计 接收消息进程B的操作如下: (1) 在本进程空间内指定一个接收区; (2) 用接收原语把消息缓冲区中的消息取到接收区。 接收原语的形式是: RECEIVE(接收区起始地址) 接收原语的功能是: 将本进程消息队
文档评论(0)