操作系统课程设计报告材料

上传人:鲁** 文档编号:485460134 上传时间:2022-10-02 格式:DOCX 页数:36 大小:129.05KB
返回 下载 相关 举报
操作系统课程设计报告材料_第1页
第1页 / 共36页
操作系统课程设计报告材料_第2页
第2页 / 共36页
操作系统课程设计报告材料_第3页
第3页 / 共36页
操作系统课程设计报告材料_第4页
第4页 / 共36页
操作系统课程设计报告材料_第5页
第5页 / 共36页
点击查看更多>>
资源描述

《操作系统课程设计报告材料》由会员分享,可在线阅读,更多相关《操作系统课程设计报告材料(36页珍藏版)》请在金锄头文库上搜索。

1、课程设计报课程名称:操作系统原理院 系:计算机科学与技术专业班级 :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 心得体会 141 实验目的掌握Linux操作系统的使用方法;了解Linux系统核代码结构; 掌握实例操作系统的实现方法;2 实验环境本次课程设计采用的操作系统环境是 windowslO、Ubuntu双系统,

2、Ubuntu系统版 本号为16.04,核版本号为linux 444 ;前两个实验在当前Ubuntu环境下完成,后 两个实验在 win10 下虚拟机 VirtualBox 的 Ubuntu 15.10 (核为 linux4.2.0-42 ) 中 完成。3 实验容3.1实验一要求熟悉和理解Linux下的编程环境。(1)编写一个C程序,用fread、fwrite等库函数实现文件拷贝功能。(2) 编写一个 C程序,使用基于文本的终端图形编程库(curses)或图形界面 (QT/GTK,分窗口显示三个并发进程的运行(一个窗口实时显示当前时间,一个窗口 实时监测CPU的利用率,一个窗口做1到100的累加求

3、和,刷新周期分别为 1秒,2 秒和3秒)o3.2实验二要求掌握添加系统调用的方法,采用编译核方法,添加一个新的系统调用,实现文件拷贝的功能,另外编写一个应用程序,测试新增加的系统调用3.3实验三掌握增加设备驱动程序的方法。采用模块方法,添加一个新的字符设备驱动程序, 实现打开/关闭,读/写等基本操作。另外编写一个应用程序,测试新添加的驱动程序。3.4实验四要求理解和分析/proc文件。(1)了解/proc文件的特点和使用方法;(2)监控系统状态,显示系统部件的使用状态;(3) 用图形界面实现系统监控状态,包括CPU和存利用率、所有进程信息等(可自己 补充、添加其他功能);3.5实验五(选做)要

4、求理解和掌握文件系统的设计方法(选做)。设计、实现一个模拟的文件系统。包括文件 /目录创建/删除,目录显示等基本功 能(可自行扩充文件读/写、用户登录、权限控制、读写保护等其他功能)。4 设计与实现4.1实验一4.1.1实验要求要求熟悉和理解Linux下的编程环境。4.1.2实验设计及调试(1)编写一个C程序,其容为实现文件拷贝的功能。这个实验的思路是声明两个文件指针*fp_read和*fp_write ,前者用来打开要读 的文件,后者打开要写的文件,再创建一个 1000个字节大小的缓冲区buff,然后 调用fread将容从文件1读到buff里,再调用fwrite 把容从buff写到文件2中。

5、这个实验重点要掌握fread和fwrite的使用方法,注意它们的参数和返回值。代码见附件中源码。实验结果如下图4.1 :Lx1 1 it曲序用爭Ml i*li j Jx jfh i -|片dht/Latl | rill打卉悴RflE存篠打刑O +A歆丁一,.芒.语,玫若,电总总口啟劭,尽;E斗召-;机号翻?乞弓土后芒茨現 于咼术半中料Sbk罕出姫(Oil书。.81罕:(訝宇段去HIT)i.J* t臨口即讲梢五區 幢低同讲朗三乐 麗卓禹翊i)-,】-蕩文门坤嗣買 *FS南H 且看忘訝饰军*鬥本人祸笊味世餘方不肝李软饭 i/st-r-iafTWza卯注袒:曲诵,|平n靭 千万不能再m.嵐同字玮白】

6、乩拿細達皿艇 斗钿希惑右尸坤)-s.Htisa?.进讦辭后住化图4.1运行之前图运行./Iab1_1 text1.txt text2.txt后结果如下图 4.2 :JA 上貳 卜/W韜/p柞第翳jfa l) - Q打开R民打taEl.ciit (/Hi/IAfF If feft if-dj-ib 9 tide.fiRoj-仃ra桃衣国?:H 时氏诺,裁泊电爲吨日济庄制理址班召1*机严氐碰号序境豉见尹初it: m 画氐 政亀 电韋咚口測鉀nr毗h惦證底席号勻慕啟韭枣復* (任逛一门)子桎点(ftis-n)養靑舉日主r华中4fit光学岀耘1总谨书: *盖姦Br日为:华中*砸天字出畦査书:團下牛人證

7、心Oltt*u(記至表示肮.?:较宇:(的宇宾示用序1一课* 融冋济第辽亟 牧代同渊BN,2.聲州I儒9%制1.4*践阳祈第三版.華琼酝-Y-陈文灯f考研肝tb 囲曲和事韶甘.議g踽的时詡分平好)歹出乐 闵习皆舸 (只“血滋匪車答分,韋人复耐的蛭代韶另干好)妊如廿,牝卿50蟻肩苒髯三壌.朋注童融亡諾8,不H期 千永坯-一才7一”迅行杲二堆r携苒丸三对+业时注童融工空通.万陽轩彌岂4.v李永磋Itwa胳专恤日天左右幵曲不时.平石不ie冉m若.找同巒朗白、- (考射1天左古)-s,融昶攻,辻和拐后也电右丹宅世)-5.址匕郃及.岂彳-圮E隹出期1:lilt图4.2运行之后图由上图可见text1.tx

8、t 成功拷贝至text2.txt(2)编写一个C程序,本次实验使用的是图形界面 GTK分窗口显示三个并发进程的运行(一个窗口实时显示当前时间,一个窗口实时监测CPU的利用率,一个窗口做1到100的累加求和,刷新周期分别为1秒,2秒和3秒) 这个实验要用到gtk,首先要配置gtk,在终端中输入:sudo apt-get in stall libgtk2.0-dev涉及到3个进程的并发,所以要调用函数fork来创建3个进程。我的思路是在这3个进程中分别创建一个线程,去完成相应的功能:显示当前时间,监测CPU利用率,做累加求和。分别通过函数 void havetime()、void cpu_usag

9、e()、void add()实现, 在main函数里,初步画出3个进程相应的界面。具体的是调用 gtk_window_new () 函数创建一个窗口、gtk_window_set_title () 设置窗口 标题、 gtk_window_set_position 设置窗口在屏幕的位置、gtk_label_new ()创建一个标签 用来显示文本、gtk_co ntai ner_add ()把标签添加到窗口中、 gtk_widget_show_all()来展示需要展示的控件。例如创建第一个线程:g_thread_create(GThreadFu nc)havetime, NULL, FALSE,

10、NULL);通过在线程havetime ()中实时更新标签label的容,然后在main ()中创建的 窗口中展示来完成所要求的功能。进程2和3所要求的功能也是通过这种方法实现。注意用到gtk的编译命令与以往不同,为:gcc -o lab1_2 lab1_2.c pkg-config -cflags -libs gtk+-2.0代码见附件中的源码,实验结果如下图4.3 :图4.3运行结果图小插曲:在调用sprintf(s,CPU 利用率为f%,usage)想把利用率的“ %拷进缓冲区s后打印出来时,一个百分号是不能够打印出来的,要写两个%如想要打印两个,则要写4个%以此类推。4.2实验二4.2

11、.1实验要求要求掌握添加系统调用的方法,采用编译核方法,添加一个新的系统调用,实现 文件拷贝的功能,另外编写一个应用程序,测试新增加的系统调用。4.2.2实验设计及调试(1)下载一个核 https:/.kernel.org/pub/linux/kernel/v4.x/ 下载 linux-444.tar.gz在/usr/src/目录下解压(用超级用户权限),(2)编写新的系统调用程序用户空间所使用的open、read、write、close函数此时对应核函数为sys_open、 sys_read、sys_write 、sys_close。首先通过sys_open()打开源文件和目标文件,分别返回

12、文件描述符source和dest, 然后把当前的用户地址围保存在fs,再把当前存访问地址围设置为核的存地址访问围,再通过sys_read()把源文件容写到buf,再用sys_write()把buf容写到dest, 接着用sys_close()来关闭文件,最后再把存访问地址围设置为用户的。保存fs是避 免使用的缓冲区超过了用户空间的地址围而报错。把自己写的这个系统调用程序添加至/usr/src/li nux-444/kernel目录下的sys.c最后。(3)添加系统调用号在 /usr/src/li nux-4.4.4/arch/x86/e ntry/syscalls目录下修改syscall_64

13、.tbl文件,添加一个自己的调用程序的系统调用号,我的之前用到了325好,所以添加326号,如下:326 com mon mysyscallsys_mysyscall(4)添加系统调用程序的声明目录下的syscalls.h最后加上自己添加的在/usr/src/li nu x-4.4.4/i nclude/l inux系统调用程序的声明如下:asmli nkage int sys_mysyscall(char* sourceFile,char* destFile);(5) 编译、安装核目录下对核选项进行配置:在 /usr/src/li nux-4.4.4sudo make menuconfig图

14、4.4核配置图选择save后退出接下来就是漫长的编译核了( 4个线程跑会快一些):sudo make -j 4大概1个小时左右编译完毕,再安装核:sudo make modules_i nstall / 安装核模块sudo make in stall / 安装核安装完毕后重启,在Ubuntu高级选项中进入新的核。(6) 编写系统调用测试程序#in clude #in clude int mai n()syscall(326,text1.txt,text2.txt); return 0;实验结果如下图4.5 :“*密tfljcu.cM: 4-/4H/HfF* K SH-Aiba i - m*niHoi1 r*in再hroj m#C5J螯宵期目为:半申礼行.k7=鞭为隹 * *.卑下十扎tt阳K(tt*D做字;(事宁肩屈斥|Hhi,旳弋可之胡三枫 區丰巧大矽 萍宜灯 耳研長习柘罚施人觉由弄旳斌弋郢廿不肝) fiftSSrr.乍永乐衣4代洋応 1 Tt?進行褊二ii :惦心再斗=n止也 2議tr不怖的”干万不能再翅百 找列学弄京自)- !-辛永予全冑三

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号