欢迎来到天天文库
浏览记录
ID:14739855
大小:518.00 KB
页数:7页
时间:2018-07-30
《操作系统实验报告-linux操作、使用、编程)》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
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中的进程间通信二、实验环境(实验设备)Windows2000+VMWare+RedHatLinux85三、实验原理及内容(一)内存的使用1、相关函数1)内存动态分配函数#includevoid *malloc(size_t size)该函数分配指定大小size个字节的内存空间,成功时返回分配内存的指针(即所分配内存的地址)。该内存区域没有清空。2) voidfree(void*addr);该函数释放由malloc()分配的内存,addr是要释放内存空间的起始地址,并且addr必须是被
3、以前malloc()调用返回的。2、参考程序例程1:申请内存、使用内存以及释放一块内存#include#include#includeintmain(void){char*str;if((str=(char*)malloc(10))==NULL){printf("Notenoughmemorytoallocatebuffer");exit(1);}strcpy(str,"hello");printf("stringis%s",str);free(str);return0;}该程序运行结果:实验报告5例程2:在打开文件
4、后,通过fstat()获得文件长度,然后通过malloc()系统调用申请响应大小的内存空间,通过read()将文件内容完全读入该内存空间,并显示出来。#include#include#include#include#includemain(){intfd,len;char*tp;structstatps;fd=open("/home/test/testing",0);fstat(fd,&ps);len=ps.st_size;tp=malloc(len);read(fd,tp,len
5、);printf("%s",tp);close(fd);}该程序运行结果:(二)、共享存储区通信1、fork()两个子进程,server和client,进行通信。2、server端建立一个key为75的共享区,并将第一个字节置为-1,作为数据空的标志。等待其他进程发来的消息。当该字节的值发生变化时,表示收到了信息,进行处理。然后再次把它的值设为-1,如果遇到的值为0,则视为为结束信号,取消该队列,并退出server。server每接收到一次数据后显示“(server)received”。3、client端建立一个key为75的共享区,当共享取得第一个字节为-1时,server端
6、空闲,可发送请求。client随即填入9到0。期间等待server端的再次空闲。进行完这些操作后,client退出。client每发送一次数据后显示“(client)sent”。4、父进程在server和client均退出后结束。5应用实例:#include#include#include#defineSHMKEY75intshmid,i;int*addr;voidclient(){inti;shmid=shmget(SHMKEY,1024,0777);/*打开共享存储区*/addr=shmat(shmid,0,
7、0);/*获得共享存储区首地址*/for(i=9;i>=0;i--){while(*addr!=-1);printf("(client)sent");*addr=i;}exit(0);}voidserver(){shmid=shmget(SHMKEY,1024,0777
8、IPC_CREAT);/*创建共享存储区*/addr=shmat(shmid,0,0);/*获取首地址*/do{*addr=-1;while(*addr==-1);printf("(server)
此文档下载收益归作者所有