已阅读5页,还剩2页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实 验 报 告( 2012/ 2013 学年 第二学期)课程名称操 作 系 统A实验名称Linux操作、使用、编程实验时间2013年 5 月 6日指导单位计算机学院计算机科学与技术系指导教师 徐小龙学生姓名陈坤班级学号10002924学院(系)通达学院专 业计算机通信实 验 报 告实验名称Linux操作、使用、编程指导教师徐小龙实验类型验证实验学时2+2实验时间2013.5.6一、 实验目的和要求1、理解操作系统存储管理原理2、在Linux 下,用malloc()函数实现cat或copy命令。3、深入理解操作系统中虚拟存储机制,并掌握虚拟存储中页面调度算法实现方法。4、学习虚拟存储机制中页面调度算法,通过编程模拟实现页面调度的相关算法(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是要释放内存空间的起始地址,并且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()获得文件长度,然后通过malloc()系统调用申请响应大小的内存空间,通过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、server端建立一个key为75的共享区,并将第一个字节置为-1,作为数据空的标志。等待其他进程发来的消息。当该字节的值发生变化时,表示收到了信息,进行处理。然后再次把它的值设为-1,如果遇到的值为0,则视为为结束信号,取消该队列,并退出server。server每接收到一次数据后显示“(server)received”。3、client端建立一个key为75的共享区,当共享取得第一个字节为-1时,server端空闲,可发送请求。client随即填入9到0。期间等待 server 端的再次空闲。进行完这些操作后,client退出。client每发送一次数据后显示“(client)sent”。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(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(0);实 验 报 告该程序运行结果:实 验 报 告实 验 报 告4、 实验小结(包括问题和解决方法、心得体会、意见与建议等) 操作系统的发展使得系统完成了大部分的内存管理工作。对于程序员而言,这些内存管理的过程完全透明不可见。因此,程序员开发时从不关心系统如何为自己分配内存,而且永远认为系统可以分配给程序所需要的内存。在程序开发时,程序员真正需要做的就是:申请内存、使用内存、释放内存,其他一概无需过问。在实验过程中遇到很多错误的操作: 1、在vi编辑器里想修改错误时一定要先切换模式,不然会出现很多麻烦的多余行。 2、在vi里编辑C语言时不像脚本语言,符号两边并不需要空格。 3、在终端里创建用户必须是root用户,其他用户是没有权限的。 4、如果CPU的执行速度够慢,上述程序中父进程、子进程P
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 5962-2025NIM标准仪器系统机械尺寸、电源和电气信号要求
- 厂房以建代租合同范本
- 厂区监控维保合同范本
- 厂房喷漆出租合同范本
- 可撤销合同签终止协议
- 光缆运维服务合同范本
- 制作荣耀证书合同范本
- 别墅屋面施工合同范本
- 合伙购买土地合同范本
- 餐饮配送行业工艺流程与标准
- 信息工程学院研究生请假条
- 现代控制理论总复习定稿版课件
- ※糖尿病的胰岛素治疗-福州胰岛素班
- 公园灯饰亮化工程监理实施细则
- 【教学创新大赛】以能力为导向的立体化课堂构建与实践-“古代汉语”课程教学创新成果报告
- 《万历十五年 精装版 》读书笔记思维导图PPT模板下载
- 05G359-3 悬挂运输设备轨道(适用于一般混凝土梁)
- 学术交流英语智慧树知到答案章节测试2023年哈尔滨工程大学
- GB/T 27818-2011化学品皮肤吸收体外试验方法
- FZ/T 80004-2014服装成品出厂检验规则
- 外科护理创伤病人的护理
评论
0/150
提交评论