华科计算机课程设计,华中科大操作系统课程设计报告(附源码).doc

华中科技大学计算机学院

操作系统课程设计报告

班级:

学号:

姓名:彭博

时间:2010年3月

设计内容一:熟悉和理解Linux编程环境

编写一个C程序,实现文件拷贝功能。

2)编写一个C程序,使用下的图形库,分窗口显示三个并发进程的运行

运行./copy a.out b.out后:

实现了文件拷贝的功能。

2、运行./gtk_process结果如下:

终端输出:

点击每个按钮显示进程名:

设计内容二:掌握添加系统调用的方法

1)采用编译内核的方法,添加一个新的系统调用。

编写一个应用程序,测试新添加的系统调用。

系统调用的功能:文件拷贝。

实验结果:

测试运行前文件目录状态

运行./testmycopycall .sort .sort_mycopycall后

返回值是文件的大小,可以看见系统调用已经在当前目录生成了sort_mycopycall文件。

通过ls -l查看文件详细信息。

设计内容三:掌握添加设备驱动程序的方法

1)采用模块方法,添加一个新的设备驱动程序。

)要求添加字符设备的驱动。

)编写一个应用程序,测试添加的驱动程序。

运行结果如下:

可以看到输出成功。

设计内容四:理解和分析文件

1)了解文件的特点和使用方法。

2)监控系统状态,显示系统中若干部件的使用情况。

3)用图形界面显示系统监控状态。

附录(代码):

实验一:文件拷贝

实验一:并行程序的运行

实验二:系统调用

实验二:系统调用测试代码

实验三:添加模块

实验三:模块测试代码

实验四:资源管理器

1

实验分析:

文件拷贝相对来说比较简单,主要问题在程序的健壮性上,要充分考虑在文件拷贝过程中可能出现的问题。比如参数个数的合法性,源文件存在性,目的文件的合法性等等问题。

linux下面的图形库主要有gtk和qt两种,但这两个库没有本质的区别,都是基于面向对象的概念和信号的模型。最后选定使用gtk来完成本次实验。

实验分析:

使用的linux内核为2.6.31.12;因为2.6的内核和之前的2.4结果变化太大,所以老师给的一些参考资料有些已经过时,对于2.6内核添加系统调用在网上查了很久,就是2.6本身因为小版本的变化结果也有较大的变化,对于最新的内核一方面查看内核Documentation文件夹下的帮助文档,一方面参考了Amit Choudhary的Implementing a System Call on Linux 2.6 for i386 才最终将系统调用添加成功,总结步骤如下:

①vim /usr/src/linux26/arch/x86/include/asm/unistd_32.h添加#define __NR_mycopycall 337

②vim /usr/src/linux26/include/linux/syscalls.h添加:asmlinkage long sys_mycopycall(char *src,char *des);

③vim /usr/src/linux26/arch/x86/kernel/syscall_table_32.S添加:.long sys_mycopycall

④vim /usr/src/linux26/Makefile修改Makefile,以下参考了Amit Choudhary

Add mycall/ to core-y(Search for regex:core-y.*+=).You will be creating this directory.This direstory will contain the source file,header file and Makefile for our system call.

⑤root@ubuntu:/usr/src/linux26# mkdir mycopycall创建mycopycall目录,并将写的系统调用的源码放在这里

⑥vim /usr/src/linux26/mycopycall/Makefile创建Makefile文件,只需添加obj-y := mycopycall.o

⑦好了,可以开始编译内核了

实验分析:

模块的添加主要是按格式写代码,没有什么新的东西。由于是实现简单的字符设备,我主要在模块中定义了一个buffer,用来实现数据的存储,以便实现设备的读写。

主要注意几个步骤:

①、编写代码并编译。参考了2.6内核的文档使用make -C /usr/src/linux26 M=`pwd`命令进行。

②、编译成功后使用insmod ./pbdev.ko在当前系统中插入模块。

③、使用mknod /dev/pbdev c 251 0在/dev目录下建立一个链接文件,其中251是设备号,0代表字符设备。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/303636.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

这份深度学习课程笔记获吴恩达点赞

吴恩达在推特上展示了一份由 TessFerrandez 完成的深度学习专项课程信息图,这套信息图优美地记录了深度学习课程的知识与亮点。因此它不仅仅适合初学者了解深度学习,还适合机器学习从业者和研究者复习基本概念。机器之心认为这不仅仅是一份课程笔记&…

Android添加单元测试的方法与步骤

一、修改配置文件AndroidManifest.xml <?xml version"1.0" encoding"utf-8"?><manifest xmlns:android"http://schemas.android.com/apk/res/android"package"cn.ycmoon.test.activity"android:versionCode"1"an…

带栩字的优美古诗句_带栩字有寓意的男孩名字

栩字的五行属木&#xff0c;用作人名时意指生动、传神之义&#xff1b;有栩栩如生、巧夺天工等好寓意&#xff0c;用于男孩取名时也是非常的好听有内涵&#xff0c;一起往下看看吧&#xff01;【一】栩字取名男孩名字古风的栩翰翰字是指长而坚硬的羽毛&#xff0c;亦指毛笔、文…

这套前端可视化框架,让数据栩栩如生!

AntV&#xff0c;蚂蚁出品&#xff0c;前端数据可视化&#xff0c;有这一套就够了&#xff01;随着大数据的发展&#xff0c;人们越来越多地使用数据分析来解决问题。为了提高数据分析的效率&#xff0c;各种先进的数据可视化工具应需而生&#xff0c;可以直接根据指定的数据源…

AlphaGo背后的力量:蒙特卡洛树搜索入门指南

我们都知道 DeepMind 的围棋程序 AlphaGo&#xff0c;以及它超越人类的强大能力&#xff0c;也经常会听到「蒙特卡洛树搜索」这个概念。事实上&#xff0c;蒙特卡洛树搜索是在完美信息博弈场景中进行决策的一种通用技术&#xff0c;除游戏之外&#xff0c;它还在很多现实世界的…

js vue中得延时器_Vue.js实现时分秒倒计时

我们平常浏览网页的时候&#xff0c;经常见到“距游戏公测1天2小时3分钟4秒”这样的倒计时器。时间如沙漏般一点点的减少&#xff0c;不仅能挑起用户的兴趣&#xff0c;而且让页面提升了一点逼格&#xff0c;还填补掉一些尴尬的空白位置。最近写得越来越多&#xff0c;有用没用…

文件的搜索

which 显示一个可执行文件的完整路径&#xff1b; [rootberyl ~]# which ls alias lsls --colortty /bin/ls whereis 搜索一个可执行工具及其相关配置、帮助 [rootberyl ~]# whereis ls ls: /bin/ls /usr/share/man/man1/ls.1.gz /usr/share/man/man1p/ls.1p.gz find […

计算机学报和c类会议,c类及以上学术期刊_c刊就是cssci吗_ccf推荐期刊和会议目录...

吃B族维生素片有什么好处大家族经常的成员有B1、B2、B3(烟酸)、B5(泛酸)、B6、B9(叶酸)、B12(钴胺素)。它们的作用如下。1&#xff0e;是糖代谢过程中关键性的物质。身体的肌肉和神经所需能量主要由糖类提供&#xff0c;所以最易受累。VB充足&#xff0c;则神经细胞能量充沛&am…

WPF ListBox样式去掉默认选中效果

次用到ListBox的时候&#xff0c;鼠标悬浮时&#xff0c;ListBoxItem的默认样式太丑了&#xff0c;设置了ItemTemplate也不管用&#xff0c;像这样的&#xff1a;经过几次尝试后&#xff0c;终于解决了这个问题&#xff0c;记录一下&#xff0c;以后就不用到处百度找了。。。其…

如何简单形象又有趣地讲解神经网络是什么?

神经网络很萌的&#xff01;0. 分类神经网络最重要的用途是分类&#xff0c;为了让大家对分类有个直观的认识&#xff0c;咱们先看几个例子&#xff1a;垃圾邮件识别&#xff1a;现在有一封电子邮件&#xff0c;把出现在里面的所有词汇提取出来&#xff0c;送进一个机器里&…

C#创建自定义特性

概述特性&#xff08;Attribute&#xff09;是用于在运行时传递程序中各种元素&#xff08;比如类、方法、结构、枚举、组件等&#xff09;的行为信息的声明性标签。您可以通过使用特性向程序添加声明性信息。一个声明性标签是通过放置在它所应用的元素前面的方括号&#xff08…

win8计算机安全模式,WIN8如何设置按F8进入安全模式

Win8/win10系统想进入安全模式就不是太容易的事了。之前的Win7和XP等系统可以通过在开机时按F8进入安全模式选择菜单。有什么方法可以设置让Win8/win10系统按F8直接进入安全模式菜单。下面学习啦小编向大家介绍让Win8/win10系统通过这种老办法按F8进入安全模式的方法&#xff0…

当你不喜欢一个人(一段话、一篇文章)的时候

为什么80%的码农都做不了架构师&#xff1f;>>> 我知道技术人员都喜欢争论&#xff0c;因为我也算半个。不过我总觉得&#xff0c;有些争论是没有必要存在的。因为沟通是以交流为目的的&#xff0c;若本身对方就不是来交流而是做宣传的&#xff0c;推销一种观点。那…

floatmap 二维数组_用J中的多维数组进行Arrays.fill

用J中的多维数组进行Arrays.fill如何在不使用循环的情况下用Java填充多维数组&#xff1f; 我试过了&#xff1a;double[][] arr new double[20][4];Arrays.fill(arr, 0);结果为java.lang.ArrayStoreException: java.lang.Double提前致谢&#xff01;11个解决方案87 votes这是…

在程序员面前千万不要说这9句话,我一个同事就死的很惨!

最近&#xff0c;有几位程序员朋友&#xff0c;向我吐槽&#xff0c;经常有人和他说一些让他恼怒的话&#xff0c;他听完都想打人啦。我听完之后也是哭笑不得&#xff0c;将这些程序员朋友的话给整理出来了&#xff0c;大家以后在程序员面前说话可得小心点。。01“我先下班了啦…

C# WPF框架Caliburn.Micro快速搭建

1. Caliburn是什么&#xff1f;Caliburn是Rob Eisenberg在2009年1月26日(Robs MIX10 talk "Build Your Own MVVM Framework")提出的一个MVVM类的开源框架。它是一套用于协助开发WPF&#xff0c;Silverlight&#xff0c;WP7和Win RT等的应用程序的库。Caliburn.Micro由…

怎么可以让计算机不能联网,我想让电脑:只能收发电子邮件,不能上网,怎样设置?...

2006-01-04 14:47:58用美萍卫士就可以。全部2006-01-04 14:47:582006-01-04 13:22:37第一种全部删除 最好的方式打开系统所在目录找到 IE 的所在地全部删除然后安装放火墙&#xff0c;以瑞星为例子~~~找到启动~~关闭HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVers…

MYSQL技术连环斩-MYSQL简述

前言&#xff1a;严格的来说&#xff0c;MYSQL是一款产品而不是一项技术。关于技术和产品的论述&#xff0c;请参考我的博文。现在进行小结一下。可以说数据库技术是为了解决数据之间如何聚合&#xff0c;聚合的数据如何管理的问题。为了实际上的真正应用&#xff0c;就必须选择…

火柴人_火柴人 x THANKSGIVING

滴水之恩当涌泉相报&#xff0c;THANKSGIVING是我们给予对方的温暖。很多时候我们却发现&#xff0c;帮助我们的人其实并不求回报。也许&#xff0c;当我们想要感恩得到的帮助时&#xff0c;更应该做的&#xff0c;是铭记他人的善意&#xff0c;并努力把这份温暖传递下去。2020…

AI催生新的工作机遇:5个未来会很吃香的岗位

导读&#xff1a;人工智能与人类工作是当下许多人津津乐道的一个话题&#xff0c;而讨论的重点大多是围绕在“未来人工智能会不会抢走我们的工作”这个方面。“人工智能”一词经常会让人感觉心生恐惧和忧虑&#xff0c;人们畏惧人工智能所带来的未知可能性&#xff0c;害怕发生…