预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共64页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

课程设计报告课程名称:操作系统原理院系:计算机科学和技术专业班级:CS140______学号:U14_____姓名:_________指导老师:_________完成时间: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,内核版本号为linux4.4.4;前两个试验在目前Ubuntu环境下完成,后两个试验在win10下虚拟机VirtualBoxUbuntu15.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_1text1.txttext2.txt后结果以下图4.2:图4.2运行以后图由上图可见text1.txt成功拷贝至text2.txt(2)编写一个C程序,此次试验使用是图形界面GTK,分窗口显示三个并发进程运行(一个窗口实时显示目前时间,一个窗口实时监测CPU利用率,一个窗口做1到100累加求和,刷新周期分别为1秒,2秒和3秒)。这个试验要用到gtk,首先要配置gtk,在终端中输入:sudoapt-getinstalllibgtk2.0-dev包含到3个进程并发,所以要调用函数fork来创建3个进程。我思绪是在这3个进程中分别创建一个线程,去完成对应功效:显示目前时间,监测CPU利用率,做累加求和。分别经过函数voidhavetime()、voidcpu_usage()、voidadd()实现,在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-olab1_2lab1_2.c`pkg-config--cflags--libsgtk+-2.0`代码见附件中源码,试验结果以下图4.3:图4.3运行结果图小插曲:在调用sprintf