wait(rdcntmutex); if(0 == readcount)wait(fmutex); readcount = readcount + 1; signal(rdcntmutex); signal(queue); //Do read operation ... wait(rdcntmutex); readcount = readcount - 1; if(0 == readcount)signal(fmutex); signal(rdcntmutex); } } void writer(){ while(1){ wait(queue); wait(fmutex); signal(queue); //Do write operation ... signal(fmutex); } } } 读进程没变,写进程变成在每次写操作前都要等待 queue 信号量。 成绩评定: 该生对待本次实验的态度 □认真 □良好 □一般 □比较差。 本次实验的过程情况 □很好 □较好 □一般 □比较差 对实验结果的分析 □很好 □良好 □一般 □比较差 文档书写符合规范程度 □很好 □良好 □一般 □比较差 综合意见 成绩 指导教师签名 日期 21
《 操作系统 》课程实验第 二 次实验报告 实验内容及基本要求: 一、实验目的与基本要求 1、理解各类置换算法的原理 2、理解虚拟存储器管理的方法 二、实验仪器与设备 硬件:微型计算机。中央处理器PentiumIV以上;显示器256色VGA以上;内存使用128兆;硬盘300M以上。 软件:学生可以采用任何一种自己熟悉的编程语言完成算法的程序设计,如C/C++、Delphi、VB、VC、C#等。 三、实验内容: 编程实现LRU算法或CLOCK/改进算法等置换算法(二选一),模拟实现虚拟存储器的地址变换过程。 实验结果: #include
{ // 标记出count值最大的位置 22
if( maxCount < memBlock[j].count ) { maxCount = memBlock[j].count; maxPos = j; } // 将所有的count值都+1 memBlock[j].count++; // 如果命中,将其count值置为0 if( w[i] == memBlock[j].num ) { memBlock[j].count = 0; bFind = true; } } // 未命中,将count最大的拿来替换 if( !bFind ) { memBlock[maxPos].num = w[i]; memBlock[maxPos].count = 0; } for(j = 0; j < 3; j++) //输出 cout << memBlock[j].num << \ cout <<\ } } int main() //主函数 { cout<<\请输入需访问的页面数量:\ cin>>size; w = new int[size]; cout<<\请输入需要访问的页面\ for(int a=0;a 成绩评定: 该生对待本次实验的态度 □认真 □良好 □一般 □比较差。 本次实验的过程情况 □很好 □较好 □一般 □比较差 对实验结果的分析 □很好 □良好 □一般 □比较差 文档书写符合规范程度 □很好 □良好 □一般 □比较差 综合意见: 成绩 指导教师签名 日期 24 《 操作系统 》课程实验第 三次实验报告 实验内容及基本要求: 一、实验目的与基本要求 1、理解磁盘调度算法的设计 2、理解提高磁盘访问速度的原理 二、实验仪器与设备 硬件:微型计算机。中央处理器PentiumIV以上;显示器256色VGA以上;内存使用128兆;硬盘300M以上。 软件:学生可以采用任何一种自己熟悉的编程语言完成算法的程序设计,如C/C++、Delphi、VB、VC、C#等。 三、实验内容: 模拟实现磁盘调度算法:最短寻道时间优先(SSTF)和扫描(SCAN)算法。 实验结果: #include 25