操作系统实习th.doc

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
操作系统实习th

实验1 进程管理 实验目的: 加深对进程概念的理解,明确进程和程序的区别。 进一步认识并发执行的实质。 分析进程征用资源的现象,学习解决进程互斥的方法。 了解linux系统中进程通信的基本原理。 2.实验预备内容 (1)阅读linux的sched.h的源码文件,加深对进程管理概念的理解。 (2)阅读linux的fork.c原码文件,分析进程的创建过程。 3.实验内容 (1)进程的创建: 编写一段程序,使用系统调用fork()创建两个子进程。当此程序运行时,在系统中有一个父进程和两个子进程活动。让每一个进程在屏幕上显示一个字符:父进程显示字符‘a’;子进程分别显示字符‘b’和字符‘c’。试观察记录屏幕上的显示结果,并分析原因。 #include(stdio.h) int main() {int t1,t2; while((p1=fork())==-1) ; if(p1==0) putchar(b); else {while((p2=fork())==-1) ; if(p2==0) putchar(c); else putchar(a); } return 0; } 结果分析:从进程并发执行来看,输出bac,abc等的情况都有可能。 原因:fork()创建进程所需时间要多于输出一个字符的时间,因此在主进程创建进程2的 同时,进程1也在创建过程中,此时主进程执行输出一个“0”,而后进程1创建完成,输出“b”最后进程2创建完成,输出“c”。 实验2 进程间通信 实验目的: Linux系统的进程通信机构(ipc)允许在任意进程间大批量地交换数据。本实验的目的是了解和熟悉linux支持的消息通信机制,共享存储区机制及信息机制。 实验预备内容:阅读linux系统的msg.c\sem.c等原码文件,熟悉linux的三种通信机制。 3. 实验内容: 消息的创建,发送和接收。 使用系统调用msgget(),msgsnd(),msgrev()j及msgctl()编制一长度为1k的消息发送和接收程序。 观察上面程序,说明控制消息队列系统msgctl()在此起什么作用? Int main() #include(stdio.h); #include(sys/types.h); #include(sys/msg.h); #include(sys/ipc.h); #include(stdlib.h); #derfine MSGKEY 75; struct msgform {long mtype; char mtext[1030]; }msg; Int main() int msgqid i; void CLIENT() {int i; msgqid=msgget(MSGkEY,0777); for(i=10;i=1;i--) {msg.mtype=i; printf((client)sent\n); msgsnd(msgqid,msg,1024,0); } exit(0); } void SERVER() { msgqid=msgget(MSGKEY,0777|IPC_CREAT); do { msgrcv(msgqid,msg,1030,0,0); printf((server)received\n); }while(msg.mtype!=1); msgct1(msgqid,IPC_RMID,0); exit(0); } int main() {while((i=fork())==-1); if(!i) SERVER(); while((i=fork())==-1); if(!i) CLIENT(); wait(0); wait(0); return 0; } 结果分析:从理想结果来说,应当是每当client发送一个消息后,server接受该消息,server接受该消息,client在发送下一条,也就是说(client)sent和(sever)received的字样应该交替出现在屏幕上。实际的结果大多是,先由client发送了两条消息,然后 server接收一条消息。此后client-server交替发送和接收消息。最后server一次接收两条消息。client和server分别接收了10条。 分析:message的传送和控制并不保证完全同步,当一个程序不在激活状态的时候他完全可能继续睡眠,造成在多次send message 后才receive message的现象。这一点有助于理解消息传送的实现机理。 实验3 存储管理 实验目的:存储管理的只要功能之一是合理地分

文档评论(0)

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

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

1亿VIP精品文档

相关文档