




已阅读5页,还剩14页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
南昌工程学院操作系统实验指导书09信息管理与信息系统(本)01杨朝晖编2011 年 9 月 目 录实验一 Linux基本命令的使用2实验二 进程实验3实验三 信号量实践程序实验5实验四 生产者-消费者程序实验8实验五 存储管理实验11实验六 进程通信实验12实验七 时间片轮转进程调度算法实验14实验八 文件系统实验16实验一 Linux基本命令的使用一、实验目的1 熟悉linux操作系统环境。2 掌握linux环境下一些常用命令的使用。二、实验设备和仪器1计算机 2linux操作系统三、实验内容及要求 1.cd切换目录2.mkdir建立一个新目录3.cp文件拷贝4.ls显示目录及文件的内容5.mv更改文件名称6.cat浏览文件内容7.chmod更改文件或目录的访问权限8.rm删除文件9.sort文件排序命令四、实验原理及步骤 实验原理 linux许多命令看起来简单而普通,但是当它们组织在一起时就表现出强有力的功能和用途。所以还需掌握linux环境下复合命令的使用。2. 步骤1) 将/bin子目录下文件和子目录存入file1;2) 将/use/bin子目录下文件和子目录追加到file1;3) 从file1中选取可执行文件的行,存入file2;4) 从文件file2中选取文件名垂直列存入file31.五、实验报告要求:在实验报告中,要求详细填写如下内容:实验目的,实验设备和仪器,实验原理简述,实验记录,实验结果分析及数据处理,问题与讨论。实验二 进程实验一、实验目的1学会在linux下创建进程;2观察进程并发执行的情况;3加深对进程的理解。 二、实验设备和仪器1计算机 2linux操作系统三、实验内容及要求 要求读懂程序,并观察程序的输出,并分析实验结果,写出实验报告。程序如下:#include#include#includeint 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 %dn,data); execve(newproc,0,0); data-; printf(childs data is %dn,data); exit(0); else printf(parents data is %dn,data); exit(0); exit(0);/注意,此处的程序单独编译#includemain() int i; printf(this is in newproc!n); for(i=0;i400000;i+) / putchar(i); 四、实验原理及步骤 实验原理 进程用来述程序的并发执行,进程有3种基本状态:运行态、就绪态和阻塞态。进程各状态间可进行相互转换。各进程按时间片的方式进行轮转调度。 2. 步骤 gedit proc.c (编辑程序)gcc o proc proc.c(编译、链接程序) gedit newproc.c (编辑程序) gcc o proc newproc.c(编译、链接程序) ./proc(执行程序)五、实验报告要求:在实验报告中,要求详细填写如下内容:实验目的,实验设备和仪器,实验原理简述,实验记录,实验结果分析及数据处理,问题与讨论。实验三 信号量实践程序实验一、实验目的1学会使用信号量解决资源共享问题;2观察各进程并发执行竟争资源的情况;3加深对信号量的理解。 二、实验设备和仪器1计算机 2linux操作系统三、实验内容及要求 要求读懂程序,并观察程序的输出,并分析实验结果,写出实验报告。程序如下:/*file: semaphore.c*/ 信号量实践程序,在程序中建立了5个进程,每个进程都尝试运行update_file()#include#include#include#include#include#include#include#define NUM_PROCS 5#define SEM_ID 250#define FILE_NAME /tmp/sem_aaa#define DELAY 4000000void 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)/临界区fprintf(file,%dn,number);printf(%dn,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);/子进程写文件void do_child_loop(int sem_set_id,char *file_name)pid_t pid=getpid();int i,j;for(i=0;i3;i+)update_file(sem_set_id,file_name,pid);for(j=0;j4000000;j+);int main(int argc,char *argv)int sem_set_id; /信号量集的IDunion semun sem_val; /信号量的数值,用于semctl()int child_pid;int i;int rc;/ 建立信号量集,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();switch(child_pid)case -1: perror(fork);case 0: /子进程do_child_loop(sem_set_id,FILE_NAME);exit(0);default: /父进程接着运行break;/等待子进程结束for(i=0;iNUM_PROCS;i+)int child_status;wait(&child_status);printf(main:were donen);fflush(stdout);return 0;四、实验原理及步骤 实验原理 为使多个进程能互斥地访问某临界资源,只需为该资源设置一个互斥信号量mutex,并设其初值为1,然后将各进程的临界区CS置于P(mutex)和V(mutex)操作之间即可。 2. 步骤 gedit semaphore.c (编辑程序)gcc o semaphore semaphore.c (编译、链接程序) ./semaphore(执行程序)五、实验报告要求:在实验报告中,要求详细填写如下内容:实验目的,实验设备和仪器,实验原理简述,实验记录,实验结果分析及数据处理,问题与讨论。实验四 生产者-消费者程序实验一、 实验目的1学会使用信号量解决资源共享问题;2观察生产者和消费者进程并发执行竞争资源的情况;3进一步以实例加深对信号量的理解。 二、实验设备和仪器1计算机 2linux操作系统三、实验内容及要求 要求读懂程序,并观察程序的输出,并分析实验结果,写出实验报告。程序如下:/生产者-消费者程序/file producer-consumer.c/在程序中,父进程建立许多子进程,父进程增加信号量的数值,子进程减少信号量的数值#include#include#include#include#include#include#define NUM_LOOPS 20int main(int argc,char *argv)int sem_set_id; /信号量集的IDunion semun sem_val; /信号量的数值int child_pid; /子进程的PIDstruct sembuf sem_op; /信号量操作结构int i;int rc; /返回值struct timespec delay; /延迟时间/建立信号量集,集中只含有一个信号量sem_set_id=semget(IPC_PRIVATE,1,0600);if(sem_set_id=-1)perror(main:semget);exit(1);printf(semaphore set created ,semaphore set id %dn,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);case 0: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:%dn,i);fflush(stdout);break;default: /父进程for(i=0;i3*(RAND_MAX/4)delay.tv_sec=0;delay.tv_nsec=10;nanosleep(&delay,NULL);break;return 0;四、实验原理及步骤 实验原理 进程用来述程序的并发执行,进程有3种基本状态:运行态、就绪态和阻塞态。进程各状态间可进行相互转换。各进程按时间片的方式进行轮转调度。 2. 步骤 gedit producer-consumer.c (编辑程序)gcc o producer-consumer producer-consumer.c(编译、链接程序) ./ producer-consumer(执行程序)五、实验报告要求:在实验报告中,要求详细填写如下内容:实验目的,实验设备和仪器,实验原理简述,实验记录,实验结果分析及数据处理,问题与讨论。实验五 存储管理实验一、实验目的1在Win2000下观察虚拟内存管理程序的性能;2学会设置交换文件的大小并观察交换文件的大小;3进一步加深对虚拟内存管理的理解。 二、实验设备和仪器1计算机 2Win2000操作系统三、实验内容及要求 1. 用系统监视器观察虚拟内存管理程序的性能;2. 设置交换文件的大小并观察交换文件的大小;3. 观察32位模块程序的加载情况;实验后,要求写出一份详细的实验报告。四、实验原理及步骤 实验原理win2000将有限的物理内存映射至虚拟内存空间,每个应用程序都如同拥有4GB的内存地址空间。 应用程序通过调度程序(换页器)使用虚拟内存,当需要更多的内存空间时,换页器会将一部分内存页面换到硬盘上,以此来模拟更多的内存。应用程序不会意识到自己是在真正的物理内存上,还是在硬盘的虚拟内存中。2. 步骤(1) 启动程序/管理工具/性能(2) 控制面板/系统/高级/性能(3) 程序/附件/系统工具/系统信息五、实验报告要求:在实验报告中,要求详细填写如下内容:实验目的,实验设备和仪器,实验原理简述,实验记录,实验结果分析及数据处理,问题与讨论。实验六 进程通信实验一、实验目的1了解linux环境下通过共享内存实现进程间通信的程序编写方法;3以实例加深进程间通讯的另一种机制:共享内存的理解。 二、实验设备和仪器1计算机 2linux操作系统三、实验内容及要求 要求读懂程序,并观察程序的输出,并分析实验结果,写出实验报告。程序如下:#include#include#include#include#define KEY 1234 /键#define SIZE 1024 /欲建立的共享内存的大小int main() int shmid;char *shmaddr;struct shmid_ds buf;shmid=shmget(KEY,SIZE,IPC_CREATE|0600);/建立共享内存if(shmid=-1) printf(create share memory failed: %s,strerror(errno);return 0; if(fork()=0) shmaddr=(char *)shmat(shmid,NULL,0);/系统自动选择一个地址连接 if(shmaddr=(void *)-1) printf(connect to the share memory failed: %s,strerror(errno); return 0; strcpy(shmaddr,hello,this is child process!n); shmdt(shmaddr); /断开与共享内存的连接 return 0; else sleep(3); /等待子进程执行完毕 shmctl(shmid,IPC_STAT,&buf); /取得共享内存的相关信息 printf( size of the share memory:); printf(shm_segsz=%d bytes n,buf.shm_segsz); printf(process id of the creator:); printf(shm_cpid=%dn,buf.shm_cpid); printf(process id of the last operator:); printf(shm_lpid=%dn,buf.shm_lpid); shmaddr=(char *)shmat(shmid,NULL,0);/系统自动选择一个地址连接 if(shmaddr=(void *)-1) printf(connect to the share memory failed: %s,strerror(errno); return 0; printf(print the content of the share memory:); printf(%sn,shmaddr); shmdt(shmaddr); /断开与共享内存的连接 shmctl(shmid,IPC_RMID,NULL); /当不再有任何其他进程使用该共享内存时系统将自动销毁它四、实验原理及步骤 实验原理 共享内存是Linux支持的3种进程间通信机制中的一种。它实际上是一段特殊的内存区域,这一段区域可以被两个或两个以上的进程映射至自身的地址空间中。一个进程写入共享内存中的信息,可以被其他使用这个共享内存的进程,通过一个简单的内存读操作读出,从而实现了进程间的通信。 2. 步骤 gedit proc.c (编辑程序)gcc o proc proc.c(编译、链接程序) ./proc(执行程序)五、实验报告要求:在实验报告中,要求详细填写如下内容:实验目的,实验设备和仪器,实验原理简述,实验记录,实验结果分析及数据处理,问题与讨论。实验七 时间片轮转进程调度算法实验一、实验目的1观察Win2000环境下的时间片轮转进程调度算法;3以实例加深对进程调度算法的理解。 二、实验设备和仪器1计算机 2Win2000操作系统三、实验内容及要求 要求读懂程序,并观察程序的输出,并分析实验结果,写出实验报告。程序如下:#include#includeDWORD ChildMain(); DWORD ChildMain1();int bb=1;main() int i,c=98; INT giThreadNumber = 1; DWORD dwThreadId; / 新线程的标识符 HANDLE hThread; / 新线程的句柄 INT iThread; /在对话框中选择的线程数 DWORD dwCreationFlags=0; / 线程创建标志 hThread = CreateThread( NULL, 0, ( LPTHREAD_START_ROUTINE )ChildMain, ( LPVOID )giThreadNumber, dwCreationFlags, & dwThreadId ); hThread = CreateThread( NULL, 0, ( LPTHREAD_START_ROUTINE )ChildMain1, ( LPVOID )giThreadNumber, dwCreationFlags, & dwThreadId ); printf(线程1的输入:n); /c=scanf(%d,&c); for(i=0;i1000000000;i+); printf(线程1的输出%dn,c); printf(%dn,bb);DWORD ChildMain(giThreadNumber) / 子线程号 long int i,b; char c=99; for(i=0;i1000000000;i+); printf( bbbbbbn ); bb=1000; printf(线程2的输入:n); /scanf(%d,&b); printf(线程2的输出%d,%dn,c,b);DWORD ChildMain1(giThreadNumber) / 子线程号 char c=100; long int i,b; printf( ccccccn ); for(i=0;i100000000;i+); bb=10; printf(线程3的输入:n); /scanf(%d,&b); printf(线程3的输出%d,%dn,c,b);四、实验原理及步骤 实验原理 进程有3种基本状态:运行态、就绪态和阻塞态。进程各状态间可进行相互转换。各进程按时间片的方式进行轮转调度。进程调度算法主要有:FCJS,SJF,RR,HRN等。 2. 步骤 gedit proc.c (编辑程序)gcc o proc proc.c(编译、链接程序) ./proc(执行程序)五、实验报告要求:在实验报告中,要求详细填写如下内容:实验目的,实验设备和仪器,实验原理简述,实验记录,实验结果分析及数据处理,问题与讨论。实验八 文件系统实验一、实验目的1 以实例加深了解Win2000环境下的文件编程方法;2以实例加深了解Linux环境下的文件编程方法;二、实验设备和仪器1计算机 2Win2000操作系统3Linux操作系统三、实验内容及要求 要求读懂程序,并观察程序的输出,并分析实验结果,写出实验报告。程序如下:/文件操作,在linux下的文件编程#include#include#includeint main(int argc,char *argv);#define BUF_SIZE 96#define OUTPUT_MODE 0700int main(int argc,char *argv)int in_fd,out_fd,rd_count,wt_count;char bufferBUF_SIZE;if(argc!=3) exit(1);in_fd=open(argv1,O_RD
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2023一年级数学上册 六 认识图形第2课时 我说你做教学设计 北师大版
- 2023七年级英语下册 Unit 7 It's raining Section A 第1课时(1a-2d)教学设计 (新版)人教新目标版
- 七年级地理上册 第三章 第三节 降水的变化与分布教学设计3 (新版)新人教版
- 2024-2025学年高中物理 第二章 机械波 5 波的干涉、衍射教学设计2 教科版选修3-4
- 10我们爱和平 教学设计
- 4《少让父母为我操心》教学设计-2023-2024学年道德与法治四年级上册统编版
- 2024八年级英语下册 Unit 1 Spring Is ComingLesson 2 It's Getting Warmer教学设计(新版)冀教版
- 三年级信息技术下册 第5课《描绘美丽的大自然》教学设计2 川教版
- 13 精卫填海教学设计-2024-2025学年四年级上册语文统编版
- 2024秋三年级英语上册 Module 4 Unit 2 Its black dog教学设计 外研版(三起)
- GB/T 19822-2024铝及铝合金硬质阳极氧化膜规范
- 2024离婚不离家的协议书
- 【永辉超市公司企业绩效考核方法的案例分析(12000字论文)】
- 海康威视校招在线测评题库
- 锰矿供应链风险评估与控制
- 学校课间安全教育课件
- 正大镀锌钢管检测报告
- 打样中心管理制度
- 门球技、战术教学讲
- 美团外卖平台转让协议
- 2023年1月自考11466现代企业人力资源管理概论试题及答案含解析
评论
0/150
提交评论