华中科技大学计算机课程设计,华中科技大学计算机学院操作系统课程设计资料报告材料[1].doc...

本文档详细介绍了华中科技大学计算机学院操作系统课程设计的过程,包括熟悉Linux编程环境,添加系统调用,设备驱动程序的添加,以及分析/proc文件系统。通过文件拷贝和并发进程的编程实例展示了Linux编程的基本技巧。同时,还涵盖了如何在Ubuntu 11.10环境下搭建Linux开发环境,包括安装GTK库,添加系统调用,以及理解/proc文件系统的内容和结构。
摘要由CSDN通过智能技术生成

《华中科技大学计算机学院操作系统课程设计资料报告材料[1].doc》由会员分享,提供在线免费全文阅读可下载,此文档格式为doc,更多相关《华中科技大学计算机学院操作系统课程设计资料报告材料[1].doc》文档请在天天文库搜索。

1、华中科技大学嵌入式操作系统课程设计实验报告院 系: 计算机科学与技术学院专 业: 班 级: 姓 名: 指导老师: 报告时间: 计算机科学与技术学院目 录1.课程设计目的…………………………………………………………32.课程设计环境搭建……………………………………………………33.容一:熟悉和理解Linux编程环境 3.1 容要求……………………………………………………………………5 3.2 设计过程及实现……………………………………………………………54.容二:掌握添加系统调用的方法 4.1 容要求……………………………………………………………………9 4.2 设计过程及实现……………………………………………………………95.容三:掌握添加设备驱动程序的方法 5.1 容要求 …………………………………………………………………17 5.2 设计过程及实现 ……………………………………………。

2、……………176.容四:理解和分析/proc文件 6.1 容要求 …………………………………………………………………22 6.2 设计过程及实现 …………………………………………………………221 课程设计目的(1)掌握Linux操作系统的使用方法;(2)了解Linux系统核代码结构;(3)掌握实例操作系统的实现方法。2 课程设计环境搭建(1)windows 7上,利用虚拟机软件VMware软件搭建的linux平台: ◎Ubuntu 11.10 (安装包:ubuntu-11.10-desktop-i386) ◎核:linux-headers-3.0.0-12-generic (2)更改root登录: 在现阶段Ubuntu的系统中,是不允许直接以root身份登录系统的,但是在做课设的过程中,需要大量的使用root权限来进行命令的操作。如果以普通用户登录ubuntu,会连编辑一个文件都非常周折。

3、。为此,我找到了一种修改系统文件,以达到直接使用root身份登录的方法: ◎开始的时候,只能以普通用户登录,用Ctrl+Alt+T打开终端: 初始化/修改root密码 sudo passwd root 用vi编辑器修改这个文件: sudo vi /etc/lightdm/lightdm.conf 在文件最后加入这么一行代码: greeter-show-manual-login=true 然后保存退出,sudo reboot 重启系统。之后就可以输入root用户登录。(3)在添加系统调用中用到的其他核包: ◎下载和当前实验环境最为接近的系统版本(这点很重要) 使用apt-get install linux-source-3.0.0 命令, ◎下载结果是linux-source-3.0.0.tar.bz2 ◎解压命令:tar –xjvf linux-source-3.0.0.tar.bz2 –。

4、C /usr/src ◎解压后,在/usr/src目录下得到核文件夹linux-source-3.0.0(4)在调用linux图形库时需要安装GTK环境: ◎安装gcc/g++/gdb/make 等基本编程工具 apt-get install build-essential Tip:如果提示由于依赖项不能安装,需要使用apt的强化版aptitude,这个工具可以自动分析软件包依赖,系统一般不自带,需要先安装,具体过程是: apt-get install aptitude aptitude install build-essential aptitude这个工具很强大,对于解决软件包安装时的依赖问题很有帮助。 ◎安装 libgtk2.0-dev libglib2.0-dev 等开发相关的库文件: apt-get install gnome-core-devel ◎安装GTK核心组件: apt。

5、-get install libgtk2.0-dev 这个安装完成后,GTK环境就基本搭建成功,网上有些教程说要安装其他配置文件,经我亲测,发现只要安装libgtk2.0-dev这个包就能搞定。3 容一:熟悉和理解Linux编程环境3.1 容要求(1)编写一个C程序,实现文件拷贝功能(2)编写一个C程序,使用Linux下的图形库,分窗口显示三个并发进程运行;3.2 设计过程及实现(1)文件拷贝: ①文件的拷贝主要的思想就是利用文件指针操作,在两个文件之间进行按字符的fget和fput。从而完成整个文件的拷贝操作。在这个基本功能之外,需要增加程序的健壮性,具体有以下几个方面: ·源文件是否存在且能读取数据; ·是否能创建目的文件,且能向里面写入数据; ·程序需要的argc参数个数是否满足要求; ②基于以上几点和容要求,主要的程序段如下:if(argc!=3) //判断参数个数是否为3 ,否则。

6、返回{ printf("Error in argc!\n"); return 0;}if( (fsource=fopen(argv[1],"rb"))==NULL ){ printf("Error in open source file!\n"); //判断源文件是否能打开和读出 return 0;}if( (ftarget=fopen(argv[2],"wb"))==NULL ){ printf("Error in open target file!\n"); //判断目的文件时候能创建和写入 return 0;}while((c=fgetc(fsource))!=EOF){ fputc(c,ftarget); //按字符读取和写入数据} ③执行结果如下: 将source/source.txt文件拷贝到到target.txt,开始时如下图3-1所示:图3-1 复制开始前source/so。

7、urce.txt文件容 利用mycopy程序复制,查看target.txt文件复制结果如下图3-2所示:图3-2 复制后target.txt文件的具体容(2)实现三个进程之间的并发程序: 这里需要用到课程实验时的fork( )程序以及GTK的图形显示。 ①基本fork()程序,调用显示一个父进程和两个子进程的结构如下: if((pid_1=fork())==0) { printf("Child 1# is running......\n"); //第一个子进程 Child 1# show(argc,argv,"This is Child 1#"); //调用函数显示窗口 } else { 。省略部分。LSE, FALSE, 10); gtk_widget_show_all(hbox);gtk_notebook_append_page (GTK_NOTEBOOK (notebook), hb。

8、ox, label);④ 模块信息页: →运行效果如下图6-4所示:图6-4 模块信息页效果 →核心代码结构如下: sprintf(bufferl, "模块信息"); vbox = gtk_vbox_new(FALSE,0); scrolled_window = gtk_scrolled_window_new (NULL, NULL); gtk_widget_set_size_request (scrolled_window, 500, 250); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window),GTK_POLICY_AUTOMATIC,GTK_POLICY_AUTOMATIC); clist2=gtk_clist_new(3); //滚屏和列 get_module_info(clist2); gt。

9、k_signal_connect(GTK_OBJECT(clist2),"select_row",GTK_SIGNAL_FUNC(select_row_callback2),NULL);gtk_scrolled_window_add_with_viewport (GTK_SCROLLED_WINDOW (scrolled_window),clist2); gtk_box_pack_start(GTK_BOX(vbox), scrolled_window, TRUE, TRUE, 5);hbox=gtk_hbox_new(FALSE, 0);button3 = gtk_button_new_with_label("刷新"); //刷新按钮g_signal_connect_swapped (G_OBJECT (button3), "clicked",G_CALLBACK (refresh2),。

10、 clist2);gtk_widget_show_all(vbox); label = gtk_label_new (bufferl);gtk_notebook_append_page (GTK_NOTEBOOK (notebook), vbox, label); ⑤ 存信息页: →运行效果如下图6-5所示:图6-5 存信息页效果 →核心代码结构如下: capability = gtk_vbox_new(FALSE,0); //存资源 gtk_container_set_border_width(GTK_CONTAINER(capability),5); gtk_widget_set_size_request(capability,200,320); gtk_widget_show(capability); label = gtk_label_new(" 存资源 "); gtk_noteb。

11、ook_append_page(GTK_NOTEBOOK(notebook),capability,label);gtk_notebook_set_current_page(GTK_NOTEBOOK(notebook),3); /*把此页设为缺省显示页*/ cpu_hbox = gtk_hbox_new(FALSE,0); //cpu横向box gtk_box_pack_start(GTK_BOX(capability),cpu_hbox,TRUE,TRUE,2); gtk_widget_show(cpu_hbox); mem_hbox = gtk_hbox_new(FALSE,0); //mem横向box gtk_box_pack_start(GTK_BOX(capability),mem_hbox,TRUE,TRUE,2); gtk_widget_show(mem_hbox); cpu。

12、_record = gtk_frame_new("cpu使用记录"); //cpu使用记录窗口 gtk_container_set_border_width(GTK_CONTAINER(cpu_record),5); gtk_widget_set_size_request(cpu_record,1000,130); gtk_widget_show(cpu_record); gtk_box_pack_start(GTK_BOX(cpu_hbox),cpu_record,TRUE,TRUE,2); cpu_record_drawing_area = gtk_drawing_area_new (); gtk_widget_set_size_request (cpu_record_drawing_area, 50,50);g_signal_connect (G_OBJECT(cpu_record_。

13、drawing_area), "expose_event",G_CALLBACK(cpu_record_callback),NULL);gtk_container_add (GTK_CONTAINER(cpu_record), cpu_record_drawing_area);gtk_widget_show (cpu_record_drawing_area); //存使用记录窗口 mem_record = gtk_frame_new("存使用记录"); gtk_container_set_border_width(GTK_CONTAINER(mem_record),5); gtk_widget_set_size_request(mem_record,1000,130); gtk_widget_show(mem_record); gtk_widget_set_size_request (mem_record_drawing_area, 50,50); g_signal_connect (G_OBJECT(mem_record_drawing_area), "expose_event",G_CALLBACK(mem_record_callback),NULL); //回调 gtk_widget_show (mem_record_drawing_area);【源代码下载地址】 download.csdn.net/detail/zhangliu1982/5658503。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值