操作系统实验报告-Linux操作、使用、编程).doc

上传人:自*** 文档编号:124241568 上传时间:2020-03-11 格式:DOC 页数:7 大小:510KB
返回 下载 相关 举报
操作系统实验报告-Linux操作、使用、编程).doc_第1页
第1页 / 共7页
操作系统实验报告-Linux操作、使用、编程).doc_第2页
第2页 / 共7页
操作系统实验报告-Linux操作、使用、编程).doc_第3页
第3页 / 共7页
操作系统实验报告-Linux操作、使用、编程).doc_第4页
第4页 / 共7页
操作系统实验报告-Linux操作、使用、编程).doc_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《操作系统实验报告-Linux操作、使用、编程).doc》由会员分享,可在线阅读,更多相关《操作系统实验报告-Linux操作、使用、编程).doc(7页珍藏版)》请在金锄头文库上搜索。

1、实 验 报 告( 2012/ 2013 学年 第二学期)课程名称操 作 系 统A实验名称Linux操作、使用、编程实验时间2013年 5 月 6日指导单位计算机学院计算机科学与技术系指导教师 徐小龙学生姓名陈坤班级学号10002924学院(系)通达学院专 业计算机通信实 验 报 告实验名称Linux操作、使用、编程指导教师徐小龙实验类型验证实验学时2+2实验时间2013.5.6一、 实验目的和要求1、理解操作系统存储管理原理2、在Linux 下,用malloc()函数实现cat或copy命令。3、深入理解操作系统中虚拟存储机制,并掌握虚拟存储中页面调度算法实现方法。4、学习虚拟存储机制中页面调

2、度算法,通过编程模拟实现页面调度的相关算法(FIFO、 LRU和OPT算法),比较各种算法的性能。5、OS中的进程间通信二、实验环境(实验设备)Windows 2000 + VMWare + RedHat Linux 8三、实验原理及内容(一)内存的使用1、相关函数 1)内存动态分配函数 #include void*malloc(size_tsize) 该函数分配指定大小size个字节的内存空间,成功时返回分配内存的指针(即所分配内存的地址)。该内存区域没有清空。 2)void free(void * addr); 该函数释放由malloc()分配的内存,addr是要释放内存空间的起始地址,并

3、且addr必须是被以前malloc( )调用返回的。2、参考程序 例程1:申请内存、使用内存以及释放一块内存 #include#include#includeint main(void)char *str;if(str=(char*)malloc(10)=NULL)printf(Not enough memory to allocate buffern);exit(1);strcpy(str,hello);printf(string is %sn,str);free(str);return 0;该程序运行结果:实 验 报 告例程2:在打开文件后,通过fstat()获得文件长度,然后通过mall

4、oc()系统调用申请响应大小的内存空间,通过read()将文件内容完全读入该内存空间,并显示出来。#include#include#include#include#includemain()int fd,len;char *tp;struct stat ps;fd=open(/home/test/testing,0);fstat(fd,&ps);len=ps.st_size;tp=malloc(len);read(fd,tp,len);printf(%sn,tp);close(fd);该程序运行结果:(二)、共享存储区通信 1、fork()两个子进程,server和client,进行通信。2、

5、server端建立一个key为75的共享区,并将第一个字节置为-1,作为数据空的标志。等待其他进程发来的消息。当该字节的值发生变化时,表示收到了信息,进行处理。然后再次把它的值设为-1,如果遇到的值为0,则视为为结束信号,取消该队列,并退出server。server每接收到一次数据后显示“(server)received”。3、client端建立一个key为75的共享区,当共享取得第一个字节为-1时,server端空闲,可发送请求。client随即填入9到0。期间等待 server 端的再次空闲。进行完这些操作后,client退出。client每发送一次数据后显示“(client)sent”。

6、4、父进程在server和client均退出后结束。应用实例:#include #include #include #define SHMKEY 75int shmid,i; int *addr;void client() int i;shmid=shmget(SHMKEY,1024,0777); /*打开共享存储区*/addr=shmat(shmid,0,0); /*获得共享存储区首地址*/for (i=9;i=0;i-) while (*addr!=-1); printf(client) sentn); *addr=i; exit(0);void server()shmid=shmget(

7、SHMKEY,1024,0777|IPC_CREAT); /*创建共享存储区*/addr=shmat(shmid,0,0); /*获取首地址*/do *addr=-1; while (*addr=-1); printf(server) receivedn);while (*addr);shmctl(shmid,IPC_RMID,0); /*撤消共享存储区,归还资源*/exit(0);main() while (i=fork()=-1); if (!i) server(); system(ipcs -m); while (i=fork()=-1); if (!i) client(); wait(

8、0);实 验 报 告该程序运行结果:实 验 报 告实 验 报 告4、 实验小结(包括问题和解决方法、心得体会、意见与建议等) 操作系统的发展使得系统完成了大部分的内存管理工作。对于程序员而言,这些内存管理的过程完全透明不可见。因此,程序员开发时从不关心系统如何为自己分配内存,而且永远认为系统可以分配给程序所需要的内存。在程序开发时,程序员真正需要做的就是:申请内存、使用内存、释放内存,其他一概无需过问。在实验过程中遇到很多错误的操作: 1、在vi编辑器里想修改错误时一定要先切换模式,不然会出现很多麻烦的多余行。 2、在vi里编辑C语言时不像脚本语言,符号两边并不需要空格。 3、在终端里创建用户必须是root用户,其他用户是没有权限的。 4、如果CPU的执行速度够慢,上述程序中父进程、子进程P1和P2应该交替执行, daughter和son 、parent应该交替出现。 5、在新创建的用户里不能实现对文本的编译,我又切换到root用户下才能编译,不知道是怎么回事。 通过这次实验激发了我对linux的学习兴趣!五、指导教师评语成 绩批阅人日 期

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 总结/报告

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号