版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
OperatingSystemPrinciple,OS实验一:第3章用户界面一、实验目的(1)理解并应用操作系统生成的概念和过程;(2)理解并应用操作系统操作界面,系统调用概念二、实验内容1)在Ubuntu下裁剪和编译Linux内核,并启用新内核。(其他发行版本也可以)2)在Ubuntu下为Linux内核增加3个新的系统调用,并启用新的内核,并编写应用程序测试。(其他发行版本也可以)3)在Windows下,编写“算命大师.bat”批处理程序,输入出生年月日,输出属相和星座。4)在Linux下,编写“算命大师”脚本程序,输入出生年月日,输出属相和星座。三、实验要求1,2必做,3,4任选其一。实验一:第3章用户界面四、实验指南1)在Ubuntu下裁剪和编译Linux内核,并启用新内核。(其他发行版本也可以)提示1:若使用VMWARE,内存分配不能低于3G,建议4G。提示2:网上下载新版的内核(版本不要超出当前内核太多!)提示3:在root权限下安装下载一系列包和工具:apt-getinstallgccgdbbisonflexlibncurses5-devlibssl-devlibidn11build-essential提示4:编译和安装内核和模块后,最后要更新grub引导程序sudoupdate-grub2提示5:重启新内核后启动菜单中要选择“ubuntu高级选项”,内含新内核。实验一:第3章用户界面四、实验指南2)在Ubuntu下为Linux内核增加2个新的系统调用,并启用新的内核,并编写应用程序测试。(其他发行版本也可以)提示1:系统调用的功能:intAdd(int,int);intMax(int,int,int);提示2:内核编译和重启参考任务1.提示3:如果使用makefile方式修改源代码,则参考提示4,5,6。如果直接修改源文件,在源文件中添加新内核函数,则忽略提示4,5,6。提示4:主目录下建NewCall目录并在其中新建MyNewcall.c文件和相应的makefile文件。c文件含有系统调用的实现函数。makefile文件内容:obj-y:=MyNewcall.o提示5:将NewCall目录添加到主makefile中的特定位置:core-y+=kernel/mm/fs/ipc/security/crypto/block/NewCall/提示6:在syscall_64.tbl和syscalls.h中分别定义编号和声明函数。提示7:在应用程序中使用下面方式调用:intnRet
=
syscall(548,20,18);//nRet=38intnRet
=
syscall(549,20,18,4);//nRet=20实验一:第3章用户界面四、实验指南3)在Windows下,编写“算命大师.bat”批处理程序,输入出生年月日,输出属相和星座。提示1:注意年月日的格式提示2:用户输入错误的年月日格式时要能处理异常提示3:能够自动连续处理多个用户的年月日,中途不用退出程序提示4:良好的交互性,友好的人机界面4)在Linux下,编写“算命大师”脚本程序,输入出生年月日,输出属相和星座。提示1:注意年月日的格式提示2:用户输入错误的年月日格式时要能处理异常提示3:能够自动连续处理多个用户的年月日,中途不用退出程序提示4:良好的交互性,友好的人机界面提示5:注意脚本程序文件:是否有执行属性?执行路径对不对?OperatingSystemPrinciple,OS实验二:第4章进程管理,第5章死锁一、实验目的(1)理解进程/线程的概念和应用编程过程;(2)理解进程/线程的同步机制和应用编程;二、实验内容1)在Linux下创建一对父子进程。2)在Linux下创建2个线程A和B,循环输出数据或字符串。3)在Windows下创建线程A和B,循环输出数据或字符串。4)在Linux下创建一对父子进程,实验wait同步函数。5)在Windows下利用线程实现并发画圆/画方。6)在Windows或Linux下利用线程实现“生产者-消费者”同步控制7)在Linux下利用信号机制实现进程通信。8)在Windows或Linux下模拟哲学家就餐,提供死锁和非死锁解法。三、实验要求1,6,8必做,其余任选2。实验二:第4章进程管理,第5章死锁四、实验指南1)在Linux下创建一对父子进程。提示1:分别输出各自的进程号,父进程号和特别的提示字符串信息提示2:让父进程提前结束或后结束,观察子进程的父进程ID。提示3:使用PS命令查看进程列表信息,核对进程号,父进程号2)在Linux下创建2个线程A和B,循环输出数据或字符串。提示1:使用pthread线程库提示2:线程A递增输出1-1000;线程B递减输出1000-1。为避免输出太快,每隔0.2秒(可自行调节)输出一个数。提示3:输出数据时,同时输出A或B以标示是哪个线程输出的,并注意格式化输出信息。例如:A:1000A:0999B:0001A:0998B:0002……实验二:第4章进程管理,第5章死锁四、实验指南3)在Windows下创建线程A和B,循环输出数据或字符串。提示1:使用CreateThread创建线程提示2:线程A递增输出1-1000;线程B递减输出1000-1。为避免输出太快,每隔0.2秒输出一个数。提示3:输出数据时,同时输出A或B标示是哪个线程输出的,并注意格式化输出信息。例如:A:1000A:0999B:0001A:0998B:0002……4)在Liunx下创建父子进程,实验wait同步函数,理解父子进程同步提示1:子进程休眠5秒,父进程不休眠。子进程用exit返回参数。提示2:父进程调用wait等待子进程先结束,并分析子进程返回参数。提示3:父进程输出子进程的返回信息。实验二:第4章进程管理,第5章死锁四、实验指南5)在Windows下,利用线程实现并发画圆画方。提示1:圆心,半径,颜色,正方形中心,边长,颜色自己确定。提示2:圆和正方形边界建议都取720个点。为直观展示绘制过程,每个点绘制后睡眠0.2秒~0.5秒。提示3:建议使用VS和MFC或QT对话框类型程序来绘制窗口和图形。实验二:第4章进程管理,第5章死锁四、实验指南6)在Windows或Linux下利用线程实现“生产者-消费者”同步控制提示1:使用数组(10个元素)代替缓冲区。2个输入线程产生产品(随机数)存到数组中;3个输出线程从数组中取数输出。提示2:Windows使用临界区对象和信号量对象,主要函数EnterCriticalSection|LeaveCriticalSection|WaitForSingleObject|ReleaseSemaphore提示3:Linux使用互斥锁对象和轻量级信号量对象,主要函数:sem_wait(),sem_post(),pthread_mutex_lock(),pthread_mutex_unlock()提示4:生产者1的数据:1000-1999(每个数据随机间隔100ms-1s),生产者2的数据:2000-2999(每个数据随机间隔100ms-1s)提示5:消费者每休眠100ms-1s的随机时间消费一个数据。提示6:屏幕打印(或日志文件记录)每个数据的生产和消费记录。实验二:第4章进程管理,第5章死锁四、实验指南7)在Linux下利用信号机制实现进程通信提示1:父进程创建子进程,并让子进程进入死循环。提示2:子进程每隔2秒输出”IamChildProcess,alive!\n”提示3:父进程询问用户”ToterminateChildProcess.YesorNo?\n”要求用户从键盘回答Y或N.若用户回答N,延迟2秒后再提问.提示4:若用户回答Y,向子进程发送用户信号,让子进程结束。提示5:子进程结束之前打印字符串:”Bye,Wolrd!\n”提示6:函数:kill(),signal(),利用用户信号,编写信号处理函数实验二:第4章进程管理,第5章死锁四、实验指南8)在Windows或Linux下模拟哲学家就餐,提供死锁和非死锁解法。提示1:同时提供提供可能会带来死锁的解法和不可能死锁的解法。提示2:可能会带来死锁的解法参见课件。Windows尝试使用临界区对象(EnterCriticalSection,LeaveCriticalSection);Linux尝试使用互斥锁(pthread_mutex_lock,pthread_mutex_unlock)提示3:完全不可能产生死锁的解法,例如:尝试拿取两只筷子,两只都能拿则拿,否则都不拿。Windows尝试使用WaitForMultipleObjects,WaitForSingleObject和互斥量对象ReleaseMutex等相关函数)
Linux尝试使用互斥锁pthread_mutex_lock,pthread_mutex_trylock等函数。提示4:[可选]图形界面显示哲学家取筷,吃饭,放筷,思考等状态。提示5:为增强随机性,各状态间维持100ms-500ms内的随机时长。OperatingSystemPrinciple,OS第3次实验:第7章内存管理一、实验目的(1)理解页面淘汰算法原理,编写程序演示页面淘汰算法。(2)验证Linux虚拟地址转化为物理地址的机制二、实验内容(1)Windows/Linux模拟实现OPT,FIFO,LRU等淘汰算法。(2)Linux下利用/proc/pid/pagemap计算变量或函数虚拟地址对应的物理地址等信息。三、实验要求1,2必做。实验三:第7章内存管理四、实验指南(1)Windows/Linux模拟实现OPT,FIFO,LRU等淘汰算法。[以下模拟过程仅供参考,不是唯一方案!百度参考其他方案!]提示1:程序指令执行过程采用遍历数组的操作来模拟;提示2:用1个较大数组A(例如2400个元素)模拟进程,数组里面放的是随机数,每个元素被访问时就使用printf将其打印出来,模仿指令的执行。数组A的大小必须是设定的页大小(例如10个元素或16个元素等等)的整数倍。提示3:用3-8个小数组(例如数组B,数组C,数组D等)模拟分得的页框。小数组的大小等于页大小(例如10条指令的大小,即10的元素)。小数组里面复制的是大数组里面的相应页面的内容(自己另外构建页表,描述大数组的页与小数组序号的关系)。提示4:利用不同的次序访问数组A,次序可以是:顺序,跳转,分支,循环,或随机,自己构建访问次序。不同的次序也一定程度反映程序局部性。提示5:大数组的访问次序可以用rand()函数定义,模拟产生指令访问序列,对应到大数组A的访问次序。然后将指令序列变换成相应的页地址流,并针对不同的页面淘汰算法统计“缺页”情况。缺页即对应的“页面”没有装到小数组中(例如数组B,数组C,数组D等)。提示6:实验中页面大小,页框数,访问次序,淘汰算法都应可调。提示7:至少实现2个淘汰算法。实验三:第7章内存管理四、实验指南(2)Linux下利用/proc/pid/pagemap技术计算某个变量或函数虚拟地址对应的物理地址等信息。提示1:Linux的/proc/pid/pagemap文件允许用户查看当前进程虚拟页的物理地址等相关信息。每个虚拟页包含一个64位的值注意分析64位的信息提示2:获取当前进程的pagemap文件的全名提示3:可以输出进程中某个或多个全局变量或自定义函数的虚拟地址,所在页号,所在物理页框号,物理地址等信息。思考:(1)如何通过扩充实验展示不同进程的同一虚拟地址对应不同的物理地址。(2)如何通过扩充实验验证不同进程的共享库具有同一的物理地址。OperatingSystemPrinciple,OS第4次实验:第8章设备管理,第9章文件管理一、实验目的(1)理解设备是文件的概念。(2)掌握Linux模块、驱动的概念和编程流程(3)Windows/Linux下掌握文件读写基本操作(4)Windows/Linux体会缓冲作用-提前读/延迟写二、实验内容(1)编写一个Linux内核模块,并完成安装/卸载等操作。(2)编写Linux驱动程序并编程应用程序测试。功能:write几个整数进去,read出其和或差或最大值。(3)编写Linux驱动程序并编程应用程序测试。功能:有序读写内核缓冲区,返回实际读写字节数。(4)在Win/Linux下采用缓冲或非缓冲方式读写大文件,体会效率差异。三、实验要求1,2必做,3,4任选其一。实验四:第8章设备管理,第9章文件管理四、实验指南1)编写一个Linux内核模块,并完成安装/卸载等操作。提示1:安装时和退出时在内核缓冲区显示不同的字符串。提示2:相关函数:module_init()、module_exit()提示3:MODULE_LICENSE()、MODULE_AUTHOR()等可选提示4:安装命令:insmodXXXX.ko提示5:扩展:编写带参数的模块程序intmytest=100;module_param(mytest,int,0644);实验四:第
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年杭州学军中学德清学校(筹建)招聘教师备考题库及答案详解(夺冠系列)
- 护理伦理与医疗安全管理
- 2025年北京市朝阳区三环肿瘤医院招聘21人备考题库有完整答案详解
- 毛巾布检验岗位责任制度
- 施工现场防控责任制度
- 殡仪馆岗位责任制度范本
- 售票处安全生产责任制度
- 部门经理连带责任制度
- 装修油漆工岗位责任制度
- 离子色谱仪安全责任制度
- 中医药科研课题申报技巧
- 2025年校园节能改造项目可行性研究报告及总结分析
- 2025ACG临床指南:成人溃疡性结肠炎(更新版)课件
- 2025高中历史时间轴与大事年表
- 2026年江苏农林职业技术学院单招职业适应性测试必刷测试卷新版
- 2025年重庆选调生申论真题参考答案
- 滴灌带生产流程
- 矿山交易中介合同范本
- 2026年湖南汽车工程职业学院单招职业技能考试必刷测试卷及答案1套
- 电信业务推广协议书6篇
- 小学五年级音乐期末考核方案
评论
0/150
提交评论