您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > 操作系统实验指导书-确定稿
南昌工程学院《操作系统》实验指导书09信息管理与信息系统(本)01杨朝晖编2011年9月1目录实验一Linux基本命令的使用............................................................................2实验二进程实验.....................................................................................................3实验三信号量实践程序实验.............................................................................5实验四生产者-消费者程序实验...........................................................................8实验五存储管理实验.........................................................................................11实验六进程通信实验...........................................................................................12实验七时间片轮转进程调度算法实验...............................................................14实验八文件系统实验...........................................................................................162实验一Linux基本命令的使用一、实验目的1.熟悉linux操作系统环境。2.掌握linux环境下一些常用命令的使用。二、实验设备和仪器1.计算机2.linux操作系统三、实验内容及要求1.cd—切换目录2.mkdir—建立一个新目录3.cp—文件拷贝4.ls—显示目录及文件的内容5.mv—更改文件名称6.cat—浏览文件内容7.chmod—更改文件或目录的访问权限8.rm—删除文件9.sort—文件排序命令四、实验原理及步骤1.实验原理linux许多命令看起来简单而普通,但是当它们组织在一起时就表现出强有力的功能和用途。所以还需掌握linux环境下复合命令的使用。2.步骤1)将/bin子目录下文件和子目录存入file1;2)将/use/bin子目录下文件和子目录追加到file1;3)从file1中选取可执行文件的行,存入file2;4)从文件file2中选取文件名垂直列存入file31.五、实验报告要求:在实验报告中,要求详细填写如下内容:实验目的,实验设备和仪器,实验原理简述,实验记录,实验结果分析及数据处理,问题与讨论。3实验二进程实验一、实验目的1.学会在linux下创建进程;2.观察进程并发执行的情况;3.加深对进程的理解。二、实验设备和仪器1.计算机2.linux操作系统三、实验内容及要求要求读懂程序,并观察程序的输出,并分析实验结果,写出实验报告。程序如下:#includestdio.h#includesys/types.h#includeunistd.hintmain(void){pid_tpid;intdata=5;if((pid=vfork())0){printf(forkerror);exit(0);}elseif(pid==0){data--;printf(child'sdatais%d\n,data);execve(newproc,0,0);data--;printf(child'sdatais%d\n,data);exit(0);}else{4printf(parent'sdatais%d\n,data);exit(0);}exit(0);}//注意,此处的程序单独编译#includestdio.hmain(){inti;printf(thisisinnewproc!\n);for(i=0;i400000;i++){//putchar(i);}}四、实验原理及步骤1.实验原理进程用来述程序的并发执行,进程有3种基本状态:运行态、就绪态和阻塞态。进程各状态间可进行相互转换。各进程按时间片的方式进行轮转调度。2.步骤geditproc.c(编辑程序)gcc–oprocproc.c(编译、链接程序)geditnewproc.c(编辑程序)gcc–oprocnewproc.c(编译、链接程序)./proc(执行程序)五、实验报告要求:在实验报告中,要求详细填写如下内容:实验目的,实验设备和仪器,实验原理简述,实验记录,实验结果分析及数据处理,问题与讨论。5实验三信号量实践程序实验一、实验目的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#defineNUM_PROCS5#defineSEM_ID250#defineFILE_NAME/tmp/sem_aaa#defineDELAY4000000voidupdate_file(intsem_set_id,char*file_path,intnumber){structsembufsem_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){//临界区fprintf(file,%d\n,number);6printf(%d\n,number);fclose(file);}//发送信号,把信号量的数值加1,此处相当于对信号量进行V操作sem_op.sem_num=0;sem_op.sem_op=1;sem_op.sem_flg=0;semop(sem_set_id,&sem_op,1);}//子进程写文件voiddo_child_loop(intsem_set_id,char*file_name){pid_tpid=getpid();inti,j;for(i=0;i3;i++){update_file(sem_set_id,file_name,pid);for(j=0;j4000000;j++);}}intmain(intargc,char**argv){intsem_set_id;//信号量集的IDunionsemunsem_val;//信号量的数值,用于semctl()intchild_pid;inti;intrc;//建立信号量集,ID是250,其中只有一个信号量sem_set_id=semget(SEM_ID,1,IPC_CREAT|0600);if(sem_set_id==-1){perror(main:semget);exit(1);}//把第一个信号量的数值设置为1sem_val.val=1;rc=semctl(sem_set_id,0,SETVAL,sem_val);if(rc==-1){perror(main:semctl);exit(1);}//建立一些子进程,使它们可以同时以竞争的方式访问信号量for(i=0;iNUM_PROCS;i++){child_pid=fork();7switch(child_pid){case-1:perror(fork);case0://子进程do_child_loop(sem_set_id,FILE_NAME);exit(0);default://父进程接着运行break;}}//等待子进程结束for(i=0;iNUM_PROCS;i++){intchild_status;wait(&child_status);}printf(main:we'redone\n);fflush(stdout);return0;}四、实验原理及步骤1.实验原理为使多个进程能互斥地访问某临界资源,只需为该资源设置一个互斥信号量mutex,并设其初值为1,然后将各进程的临界区CS置于P(mutex)和V(mutex)操作之间即可。2.步骤geditsemaphore.c(编辑程序)gcc–osemaphoresemaphore.c(编译、链接程序)./semaphore(执行程序)五、实验报告要求:在实验报告中,要求详细填写如下内容:实验目的,实验设备和仪器,实验原理简述,实验记录,实验结果分析及数据处理,问题与讨论。8实验四生产者-消费者程序实验一、实验目的1.学会使用信号量解决资源共享问题;2.观察生产者和消费者进程并发执行竞争资源的情况;3.进一步以实例加深对信号量的理解。二、实验设备和仪器1.计算机2.linux操作系统三、实验内容及要求要求读懂程序,并观察程序的输出,并分析实验结果,写出实验报告。程序如下://生产者-消费者程序//fileproducer-consumer.c//在程序中,父进程建立许多子进程,父进程增加信号量的数值,子进程减少信号量的数值#includestdio.h#includestdlib.h#includeunistd.h#includetime.h#includelinux/sem.h#includesys/types.h#defineNUM_LOOPS20intmain(intargc,char*argv[]){intsem_set_id;//信号量集的IDunionsemunsem_val;//信号量的数值intchild_pid;//子进程的PIDstructsembufsem_op;//信号量操作结构inti;intrc;//返回值structtimespecdelay;//延迟时间//建立信号量集,集中只含有一个信号量sem_set_id=semget(IPC_PRIVATE,1,0600);9if(sem_set_id==-1){perror(main:semget);exit(1);}printf(semaphoresetcreated,semaphoresetid%d\n,sem_set_id);//信号量数值设置为零sem_val.val=0;rc=semctl(sem_set_id,0,SETVAL,sem_val);//建立子进程child_pid=fork();switch(child_pid){case-1://失败perror(fork);case0:for(i=0;iNUM_LOOPS;i++){//被阻塞,直到信号量的数值变为非负值sem_op.sem_num=0;sem_op.sem_op=-1;sem_op.sem_flg=0;semop(sem_set_id,&sem_op,1);printf(consumer:%d\n,i);fflush(stdout);}break;default://父进程for(i=0;iNU
本文标题:操作系统实验指导书-确定稿
链接地址:https://www.777doc.com/doc-2454499 .html