操作系统原理课程的设计的报告.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
操作系统原理课程的设计的报告

课程 设 计 报告课程名称:操作系统原理院系:计算机科学与技术专业班级:CS140 ______ 学号: U201414_____姓名:______ ___指导教师:_______ __完成时间: 2017年3月11日_目 录1实验目的22实验环境23实验内容23.1实验一23.2实验二23.3实验三33.4实验四33.5实验五(选做)34设计与实现34.1实验一34.2实验二64.3实验三94.4实验四115心得体会14实验目的·掌握Linux操作系统的使用方法;·了解Linux系统内核代码结构;·掌握实例操作系统的实现方法;实验环境本次课程设计采用的操作系统环境是windows10、Ubuntu双系统,Ubuntu系统版本号为16.04,内核版本号为linux 4.4.4;前两个实验在当前Ubuntu环境下完成,后两个实验在win10下虚拟机VirtualBox的Ubuntu 15.10(内核为linux4.2.0-42) 中完成。实验内容实验一要求熟悉和理解Linux下的编程环境。(1)编写一个C程序,用fread、fwrite等库函数实现文件拷贝功能。(2)编写一个C程序,使用基于文本的终端图形编程库(curses)或图形界面(QT/GTK),分窗口显示三个并发进程的运行(一个窗口实时显示当前时间,一个窗口实时监测CPU的利用率,一个窗口做1到100的累加求和,刷新周期分别为1秒,2秒和3秒)。实验二要求掌握添加系统调用的方法,采用编译内核方法,添加一个新的系统调用,实现文件拷贝的功能,另外编写一个应用程序,测试新增加的系统调用。实验三掌握增加设备驱动程序的方法。采用模块方法,添加一个新的字符设备驱动程序,实现打开/关闭,读/写等基本操作。另外编写一个应用程序,测试新添加的驱动程序。实验四要求理解和分析/proc文件。(1)了解/proc文件的特点和使用方法;(2)监控系统状态,显示系统部件的使用状态;(3)用图形界面实现系统监控状态,包括CPU和内存利用率、所有进程信息等(可自己补充、添加其他功能);实验五(选做)要求理解和掌握文件系统的设计方法(选做)。设计、实现一个模拟的文件系统。包括文件/目录创建/删除,目录显示等基本功能(可自行扩充文件读/写、用户登录、权限控制、读写保护等其他功能)。设计与实现实验一实验要求要求熟悉和理解Linux下的编程环境。实验设计及调试(1)编写一个C程序,其内容为实现文件拷贝的功能。这个实验的思路是声明两个文件指针*fp_read和*fp_write,前者用来打开要读的文件,后者打开要写的文件,再创建一个1000个字节大小的缓冲区buff[],然后调用fread将内容从文件1读到buff里,再调用fwrite把内容从buff写到文件2中。这个实验重点要掌握fread和fwrite的使用方法,注意它们的参数和返回值。代码见附件中源码。实验结果如下图4.1:图4.1运行之前图运行./lab1_1 text1.txt text2.txt后结果如下图4.2:图4.2运行之后图由上图可见text1.txt成功拷贝至text2.txt(2)编写一个C程序,本次实验使用的是图形界面GTK,分窗口显示三个并发进程的运行(一个窗口实时显示当前时间,一个窗口实时监测CPU的利用率,一个窗口做1到100的累加求和,刷新周期分别为1秒,2秒和3秒)。这个实验要用到gtk,首先要配置gtk,在终端中输入:sudo apt-get install libgtk2.0-dev涉及到3个进程的并发,所以要调用函数fork来创建3个进程。我的思路是在这3个进程中分别创建一个线程,去完成相应的功能:显示当前时间,监测CPU利用率,做累加求和。分别通过函数void havetime()、void cpu_usage()、void add()实现,在main函数里,初步画出3个进程相应的界面。具体的是调用gtk_window_new()函数创建一个窗口、gtk_window_set_title()设置窗口标题、gtk_window_set_position设置窗口在屏幕的位置、gtk_label_new()创建一个标签用来显示文本、gtk_container_add()把标签添加到窗口中、gtk_widget_show_all()来展示需要展示的控件。例如创建第一个线程:g_thread_create((GThreadFunc)havetime, NULL, FALSE, NULL);通过在线程havetime()中实时更新标签label的内容,然后在main()中创建的窗口中展示来完成所要求的功能。进程2和3所要求的功能也是通过这种方法实现。注意用到gtk的编译命令与以往不同,为:gcc -o lab1

文档评论(0)

189****7685 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档