操作系统实验指导书.doc

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

南昌工程学院 操作系统实验指导书 孙辉 吴润秀 编 信息工程学院 2012 年 9 月 目 录 实验一………………………………………………………………………2.. 实验二………………………………………………………………………3.. 实验三………………………………………………………………………6.. 实验四………………………………………………………………………8.. 实验五………………………………………………………………………10.. 实验六………………………………………………………………………11.. 实验七………………………………………………………………………12.. 实验一 一、实验目的 1.学会在linux下创建进程; 2.观察进程并发执行的情况; 3.加深对进程的理解。 二、实验设备和仪器 1.计算机 2.linux操作系统 三、实验内容及要求 要求读懂程序,并观察程序的输出,并分析实验结果,写出实验报告。 程序如下: #includestdio.h #includesys/types.h #includeunistd.h int main(void){ pid_t pid; int data=5; if((pid=vfork())0) { printf(fork error); exit(0); } else if(pid==0) { data--; printf(childs data is %d\n,data); execve(newproc,0,0); data--; printf(childs data is %d\n,data); exit(0); } else { printf(parents data is %d\n,data); exit(0); } exit(0); } //注意,此处的程序单独编译 #includestdio.h main(){ int i; printf(this is in newproc!\n); for(i=0;i400000;i++){ // putchar(i); } } 四、实验原理及步骤 1.实验原理 进程用来描述程序的并发执行,系统为每个进程创建一个进程控制块(PCB)–o proc proc.c(编译、链接程序) gedit newproc.c (编辑程序) gcc –o proc newproc.c(编译、链接程序) ./proc(执行程序) 五、实验报告要求: 在实验报告中,要求详细填写如下内容:实验目的,实验设备和仪器,实验原理简述,实验记录,实验结果分析及数据处理,问题与讨论。 实验二 一、实验目的 1.学会使用信号量解决资源共享问题; 2.观察各进程并发执行竟争资源的情况; 3.加深对信号量的理解。 二、实验设备和仪器 1.计算机 2.linux操作系统 三、实验内容及要求 要求读懂程序,并观察程序的输出,并分析实验结果,写出实验报告。 程序如下: /*file: semaphore.c*/ // 信号量实践程序,在程序中建立了5个进程,每个进程都尝试运行update_file() #includestdio.h #includestdlib.h #includeunistd.h #includetime.h #includesys/types.h #includesys/wait.h #includelinux/sem.h #define NUM_PROCS 5 #define SEM_ID 250 #define FILE_NAME /tmp/sem_aaa #define DELAY 4000000 void update_file(int sem_set_id, char *file_path, int number){ struct sembuf sem_op; FILE *file; //等待信号量的数值变为非负数,此处设为负值,相当于对信号量进行P操作 sem_op.sem_num=0; sem_op.sem_op=-1; sem_op.sem_flg=0; semop(sem_set_id,sem_op,1); //写文件,写入的数值是当前进程的进程号 file=fopen(file_path,w); if(file){//临界区

文档评论(0)

整理王 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档