欢迎来到天天文库
浏览记录
ID:16225802
大小:1.11 MB
页数:33页
时间:2018-08-08
《操作系统原理--课程设计报告》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、课程设计报告课程名称:操作系统原理院系:计算机科学与技术专业班级:CS140______学号:U_____姓名:_________指导教师:_________完成时间: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心得体会1431华中科技大学课程设计报告1实验目的·掌握Linux操作系统的使用方法;·了解Linux系统内核代码结构;·掌握实例操作系统的实现方
2、法;2实验环境本次课程设计采用的操作系统环境是windows10、Ubuntu双系统,Ubuntu系统版本号为16.04,内核版本号为linux4.4.4;前两个实验在当前Ubuntu环境下完成,后两个实验在win10下虚拟机VirtualBox的Ubuntu15.10(内核为linux4.2.0-42)中完成。3实验内容3.1实验一要求熟悉和理解Linux下的编程环境。(1)编写一个C程序,用fread、fwrite等库函数实现文件拷贝功能。(2)编写一个C程序,使用基于文本的终端图形编程库(curses)或图形界面(QT/GTK),分窗口显示
3、三个并发进程的运行(一个窗口实时显示当前时间,一个窗口实时监测CPU的利用率,一个窗口做1到100的累加求和,刷新周期分别为1秒,2秒和3秒)。3.2实验二要求掌握添加系统调用的方法,采用编译内核方法,添加一个新的系统调用,实现文件拷贝的功能,另外编写一个应用程序,测试新增加的系统调用。31华中科技大学课程设计报告1.1实验三掌握增加设备驱动程序的方法。采用模块方法,添加一个新的字符设备驱动程序,实现打开/关闭,读/写等基本操作。另外编写一个应用程序,测试新添加的驱动程序。1.2实验四要求理解和分析/proc文件。(1)了解/proc文件的特点和
4、使用方法;(2)监控系统状态,显示系统部件的使用状态;(3)用图形界面实现系统监控状态,包括CPU和内存利用率、所有进程信息等(可自己补充、添加其他功能);1.3实验五(选做)要求理解和掌握文件系统的设计方法(选做)。设计、实现一个模拟的文件系统。包括文件/目录创建/删除,目录显示等基本功能(可自行扩充文件读/写、用户登录、权限控制、读写保护等其他功能)。2设计与实现2.1实验一2.1.1实验要求要求熟悉和理解Linux下的编程环境。2.1.2实验设计及调试(1)编写一个C程序,其内容为实现文件拷贝的功能。这个实验的思路是声明两个文件指针*fp_
5、read和*fp_write,前者用来打开要读的文件,后者打开要写的文件,再创建一个1000个字节大小的缓冲区buff[],然后调用fread将内容从文件1读到buff里,再调用fwrite把内容从buff写到文件231华中科技大学课程设计报告中。这个实验重点要掌握fread和fwrite的使用方法,注意它们的参数和返回值。代码见附件中源码。实验结果如下图4.1:图4.1运行之前图运行./lab1_1text1.txttext2.txt后结果如下图4.2:图4.2运行之后图由上图可见text1.txt成功拷贝至text2.txt(2)编写一个C程
6、序,本次实验使用的是图形界面GTK,分窗口显示三个并发进程的运行(一个窗口实时显示当前时间,一个窗口实时监测CPU的利用率,一个窗口做1到100的累加求和,刷新周期分别为1秒,2秒和3秒)。这个实验要用到gtk,首先要配置gtk,在终端中输入:sudoapt-getinstalllibgtk2.0-dev涉及到3个进程的并发,所以要调用函数fork来创建3个进程。我的思路是在这3个进程中分别创建一个线程,去完成相应的功能:显示当前时间,监测CPU利用率,做累加求和。分别通过函数voidhavetime()、voidcpu_usage()、void
7、add()实现,在main31华中科技大学课程设计报告函数里,初步画出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,
8、NULL,FALSE,NULL);通过在线程havetime()中实时更新标签label的内容,然后在main()中创建的窗口中展示来完
此文档下载收益归作者所有