ImageVerifierCode 换一换
格式:DOCX , 页数:21 ,大小:954.02KB ,
资源ID:7688760      下载积分:12 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/7688760.html】到电脑端继续下载(重复下载不扣费)。

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

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(东北大学操作系统实验 绝对自创 实验报告 含可执行源代码 linux环境可运行 有截图.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

东北大学操作系统实验 绝对自创 实验报告 含可执行源代码 linux环境可运行 有截图.docx

1、东北大学操作系统实验 绝对自创 实验报告 含可执行源代码 linux环境可运行 有截图计算机科学与工程学院实验报告实验课程名称操作系统实验实验成绩专业班级指导教师签字学号姓名实验报告批改时间实验项目目录1. 实验一 1-7页2. 实验二 8-11页3. 实验三 12-15页4. 实验四 16-23页实验报告正文实验一 进程的状态转换及PCB的变化一、 实验目的这是一个设计型实验。要求自行设计、编制模拟程序,通过形象化的状态显示,加深理解进程的概念、进程之间的状态转换及其所带来的PCB组织的变化,理解进程与其PCB间的一一对应关系。二、 实验内容#include #include #includ

2、e using namespace std;queue ready;queue running;queue block;void print();void f1();void f2();void f3();void f4();int main() ready.push(A); ready.push(B); ready.push(C); running.push(D); block.push(E); block.push(F); print(); int p; while(scanf(%d,&p)!= EOF) switch(p) case 2: f2();break; case 3: f3()

3、;break; case 4: f4();break; default:break; return 0;void f1() char c = ready.front(); ready.pop(); running.push(c); print();void f2() char c = running.front(); running.pop(); ready.push(c); print(); f1();void f3() char c = running.front(); running.pop(); block.push(c); print(); if(!ready.empty() f1(

4、); void f4() char c = block.front(); block.pop(); ready.push(c); print(); if(running.empty() f1(); void print() int n1,n2,n3; char ch; n1 = ready.size(); n2 = running.size(); n3 = block.size(); cout _ endl; cout ready: ; for(int i = 0;i n1;i+) ch = ready.front(); cout ch; ready.push(ch); ready.pop()

5、; cout endl; cout running: ; for(int i = 0;i n2;i+) ch = running.front(); cout ch; running.push(ch); running.pop(); cout endl; cout block: ; for(int i = 0;i n3;i+) ch = block.front(); cout ch; block.push(ch); block.pop(); cout endl;三、 实验结果实验二 进程同步和通信棗生产者和消费者问题模拟一、 实验目的这是一个验证型实验。通过对给出的程序进行验证、修改,进一步加深

6、理解进程的概念,了解同步和通信的过程,掌握进程通信和同步的机制,特别是利用缓冲区进行同步和通信的过程。通过补充新功能,加强对知识的灵活运用,培养创新能力。二、 实验内容#include #include #include #include using namespace std;void producer(); /生产者void print(); /显示缓冲区void consumer(); /消费者queue buffer; /缓冲区queue blockp; /等待进入缓冲区的数据int data = 0; /生产者生产的数据 int num = 0; /缓冲区元素个数int np = 0

7、; /正在等待的生产者int nc = 0; /正在等待的消费者int main() print(); char c; while(scanf(%c,&c)!=e) switch(c) case p: producer();print();break; case c: consumer();print(); break; case e: exit(0); void producer() /生产者 if(num 0) data+; printf(ttttt正在等待的消费者数量为:%dn,-nc); else buffer.push(data+); num+; else blockp.push(d

8、ata+); printf(ttttt正在等待的生产者数量为:%dn,+np); void consumer() /消费者 if(num 0) buffer.pop(); num-; if(np 0) buffer.push(blockp.front(); num+; blockp.pop(); printf(ttttt正在等待的生产者数量为:%dn,-np); else printf(ttttt正在等待的消费者数量为:%dn,+nc); void print() /显示缓冲区 int ch; int n = buffer.size(); printf(ttttt缓冲区状态%d:ttttt,n

9、um); for(int i = 0;i n;i+) ch = buffer.front(); printf(%dt,ch); buffer.push(ch); buffer.pop(); printf(n);三、 实验结果实验三 进程的管道通信一、实验目的加深对进程概念的理解,明确进程和程序的区别。学习进程创建的过程,进一步认识进程并发执行的实质。分析进程争用资源的现象,学习解决进程互斥的方法。学习解决进程同步的方法。掌握Linux系统中进程间通过管道通信的具体实现。二、实验内容#include #include #include #include #include #include #in

10、clude #include #include using namespace std;char child_120 = This is process 1;char child_220 = This is process 2;char child_320 = This is process 3;char father20 ;int main() int fd2; int re = pipe(fd); pid_t p1,p2,p3; int *status = NULL; p1 = fork(); if(p1 = 0) lockf(fd1,1,0); printf(子进程一正在写入,prd =

11、 :%dn,getpid(); write(fd1,child_1,17); lockf(fd1,0,0); exit(0); else if(p1 0) p2 = fork(); if(p2 = 0) lockf(fd1,1,0); printf(子进程二正在写入,pid = :%dn,getpid(); write(fd1,child_2,17); lockf(fd1,0,0); exit(0); else if(p2 0) p3 = fork(); if(p3 = 0) lockf(fd1,1,0); printf(子进程三正在写入,prd = :%dn,getpid(); write(

12、fd1,child_3,27); lockf(fd1,0,0); exit(0); else if(p3 0) wait(status); read(fd0,father,17); cout father endl; wait(status); read(fd0,father,17); cout father endl; wait(status); read(fd0,father,17); cout father endl; return 0;三、实验结果实验四 页面置换算法一、实验目的 进一步加深理解父子进程之间的关系及其并发执行。理解内存页面调度的机理。 掌握页面置换算法及其实现方法。 培

13、养综合运用所学知识的能力。二、实验内容#include #include #include #include using namespace std;int main() int flag_f = 0; int flag_l = 0; float fifo_ok = 0; /fifo命中数 float fifo_miss = 0; /fifo缺页数 float lru_ok = 0; /lru命中数 float lru_miss = 0; /lru缺页数 int frame_num; /内存中分配页面个数 cout frame_num; int M_Frameframe_num = 0; in

14、t total_instruction; /随机数组长度 cout total_instruction; int Acess_Seriestotal_instruction; int Acess_Num; /页程序个数 cout Acess_Num; srand(time(NULL); /初始化随机数组 cout 访问页的顺序为:; for(int i = 0;i total_instruction;i+) Acess_Seriesi = rand() % Acess_Num+1; cout Acess_Seriesi ; cout 0) int p2 = fork(); /创建子进程二 if

15、(p2 = 0) / 子进程二 LRU cout 这里是子进程二:LRU算法 endl; for(int i = 0;i total_instruction;i+) for(int j = 0;j frame_num;j+) if(Acess_Seriesi = M_Framej) /命中 cout 子程序2 命中: ; lru_ok+; int t; t = M_Frameframe_num-1; M_Frameframe_num-1 = M_Framej; M_Framej = t; for(int n = 0;n frame_num;n+) cout M_Framen ; cout en

16、dl; flag_l = 1; /表示命中 break; else flag_l = 0; if(flag_l = 0) cout 子程序2 缺页: ; lru_miss+; /缺页 for(int k = 0;k frame_num-1;k+) M_Framek = M_Framek+1; M_Frameframe_num-1 = Acess_Seriesi; for(int n = 0;n frame_num;n+) cout M_Framen ; cout endl; cout LRU: 命中数: lru_ok 缺页数: lru_miss 命中率: lru_ok/(lru_ok+lru_

17、miss) endl; else if(p1 = 0) / 子进程一 FIFO cout 这里是子进程一:FIFO算法 endl; for(int i = 0;i total_instruction;i+) for(int j = 0;j frame_num;j+) if(Acess_Seriesi = M_Framej) /命中 cout 子程序1 命中: ; fifo_ok+; for(int n = 0;n frame_num;n+) cout M_Framen ; cout endl; flag_f = 1; /表示命中 break; else flag_f = 0; if(flag_f = 0) cout 子程序1 缺页: ; fifo_miss+; /缺页 for(int k = 0;k frame_num-1;k+) M_Framek = M_Framek+1; M_Frameframe_num-1 = Acess_Seriesi; for(int n = 0;n frame_num;n+) cout M_Framen ; cout endl; cout FIFO 命中数: fifo_ok 缺页数: fifo_miss 命中率: fifo_ok/(fifo_ok+fifo_miss) endl; return 0;三、实验结果

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1