计算机操作系统-课设

上传人:m**** 文档编号:503270653 上传时间:2022-08-27 格式:DOCX 页数:47 大小:680.88KB
返回 下载 相关 举报
计算机操作系统-课设_第1页
第1页 / 共47页
计算机操作系统-课设_第2页
第2页 / 共47页
计算机操作系统-课设_第3页
第3页 / 共47页
计算机操作系统-课设_第4页
第4页 / 共47页
计算机操作系统-课设_第5页
第5页 / 共47页
点击查看更多>>
资源描述

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

1、课 程 设 计 报 告题目: 操作系统课设报告 专业班级: 信息平安1302班 学 号: 姓 名: 指导教师: 报告日期: 2021年3月18日 计算机科学与技术学院目录1.课程设计目的12.课程设计内容13.实验内容1 3.1.1.文件拷贝1 3.1.2.分窗口多进程并发4 3.2.增加系统调用7 3.3.实现字符设备驱动10 3.4.系统监视器154.课设体会451. 课程设计目的掌握Linux操作系统的使用方法;了解Linux系统内核代码结构;掌握实例操作系统的实现方法。2. 课程设计内容题目一:掌握Linux操作系统的使用方法,包括键盘命令、系统调用;掌握在Linux下的编程环境。1.

2、编一个C程序,其内容为实现文件拷贝的功能(使用系统调用open/read/write.;2.编一个C程序,其内容为分窗口同时显示三个并发进程的运行结果。要求用到Linux下的图形库。 (gtk/Qt)题目二:掌握系统调用的实现过程,通过编译内核方法,增加一个新的系统调用。另编写一个应用程序,使用新增加的系统调用。(1) 内核编译、生成,用新内核启动;(2) 新增系统调用实现:文件拷贝或P、V操作。题目三:掌握增加设备驱动程序的方法。通过模块方法,增加一个新的设备驱动程序,其功能可以简单。实现字符设备的驱动题目四:使用GTK/QT实现系统监控器了解/proc文件的特点和使用方法;监控系统状态,显

3、示系统中假设干部件使用情况;用图形界面实现系统监控状态。3. 实验内容文件拷贝功能说明:将测试用文件所在目录下的名为“aaa.txt文件的内容拷贝至该文件夹下“bbb.txt文件中,假设该文件不存在,那么创立该文件。设计思路:实现文件拷贝功能,主要用到的函数是open、write、read。由命令行参数获取2个文件名,根据其文件名和路径分别翻开两个文件,设置一个循环,将源文件复制到目的文件,直到源文件指针到文件尾,最后关闭两个文件。主要用到的头文件:Unistd.h包含了许多linux系统效劳的函数原型,如read、writeFcntl.h定义了很多宏和open、fcntl函数原型Stdio.

4、h标准输入输出头文件Sys/types.h包含适当时应使用的多个根本派生类型Sys/stat.h包含了获取文件属性的一些函数Error.h用于调试错误代码时所需要的一些error变量String.h包含了处理字符串的一些函数源程序:#include #include #include #include #include #include int main(int argc, char* argv)char fblock1024;/设置一个缓冲区int fin, fout, nread;if(argc 3)printf(argc number wrong!n);exit(0);printf(%s

5、n, argv0);printf(%sn, argv1);printf(%sn, argv2);fin = open(argv1, O_RDONLY);/以只读方式翻开文件if(fin 0)write(fout, fblock, nread);所用函数:open()函数函数定义:int open( const char * pathname,int flags); 参数说明:参数pathname 指向欲翻开的文件路径字符串。以下是参数flags 所能使用的标志位: O_RDONLY 以只读方式翻开文件 O_WRONLY 以只写方式翻开文件 O_RDWR 以可读写方式翻开文件。 上述三种标志位是

6、互斥的,也就是不可同时使用,但可与以下的标志位利用OR(|)运算符组合。 O_CREAT 假设欲翻开的文件不存在那么自动建立该文件。 O_EXCL 如果O_CREAT 也被设置,此指令会去检查文件是否存在。文件假设不存在那么建立该文件,否那么将导致翻开文件错误。此外,假设O_CREAT与O_EXCL同时设置,并且欲翻开的文件为符号连接,那么会翻开文件失败。 O_NOCTTY 如果欲翻开的文件为终端机设备时,那么不会将该终端机当成进程控制终端机。 O_TRUNC 假设文件存在并且以可写的方式翻开时,此标志位会令文件长度清为0,而原来存于该文件的 资料也会消失。 O_APPEND 当读写文件时会从

7、文件尾开始移动,也就是所写入的数据会以附加的方式参加到文件后面。 O_NONBLOCK 以不可阻断的方式翻开文件,也就是无论有无数据读取或等待,都会立即返回进程之中。 O_NDELAY 同O_NONBLOCK。 O_SYNC 以同步的方式翻开文件。 O_NOFOLLOW 如果参数pathname 所指的文件为一符号连接,那么会令翻开文件失败。 O_DIRECTORY 如果参数pathname 所指的文件并非为一目录,那么会令翻开文件失败。 参数mode 组合此为Linux2.2以后特有的标志位,以防止一些系统平安问题。参数mode 那么有以下数种组合,只有在建立新文件时才会生效,此外真正建文件

8、时的权限会受到umask值所影响,因此该文件权限应该为mode-umaks。 S_IRWXU 00700 权限,代表该文件所有者具有可读、可写及可执行的权限。 S_IRUSR 或S_IREAD, 00400权限,代表该文件所有者具有可读取的权限。 S_IWUSR 或S_IWRITE,00200 权限,代表该文件所有者具有可写入的权限。 S_IXUSR 或S_IEXEC, 00100 权限,代表该文件所有者具有可执行的权限。 S_IRWXG 00070权限,代表该文件用户组具有可读、可写及可执行的权限。 S_IRGRP 00040 权限,代表该文件用户组具有可读的权限。 S_IWGRP 0002

9、0权限,代表该文件用户组具有可写入的权限。 S_IXGRP 00010 权限,代表该文件用户组具有可执行的权限。 S_IRWXO 00007权限,代表其他用户具有可读、可写及可执行的权限。 S_IROTH 00004 权限,代表其他用户具有可读的权限 S_IWOTH 00002权限,代表其他用户具有可写入的权限。 S_IXOTH 00001 权限,代表其他用户具有可执行的权限。 返回值假设所有欲核查的权限都通过了检查那么返回文件描述符,表示成功,只要有一个权限被禁止那么返回-1read()函数函数定义:ssize_t read(int fd, void *buf, size_t count);

10、 参数说明:count是请求读取的字节数,读上来的数据保存在缓冲区buf中,同时文件的当前读写位置向后移。返回值:成功返回读取的字节数,出错返回-1并设置errno,如果在调read之前已到达文件末尾,那么这次read返回0。write()函数函数定义:ssize_t write(int fd, void *buf, size_t count); 参数说明:write()会把参数buf所指内存写入count个字节到参数fd所指的文件内。文件读写位置也会随之移动。返回值:如果顺利write()会返回实际写入的字节数。当有错误发生时那么返回-1,错误代码存入error中。分窗口多进程并发功能说明:

11、用gtk实现分窗口同时显示三个并发进程的运行结果设计思路:安装linux下的GTK+:在终端输入sudo apt-get install gnome-core-devel,然后根据提示操作,就会安装libgtk2.0-dev libglib2.0-dev等开发所需的相关库文件。$sudo apt-get install build-essential$sudo apt-get install gnome-core-devel$sudo apt-get install pkg-config$sudo apt-get install libgtk2.0*编译GTK+代码时需要包含的头文件是gtk/

12、gtk.h,此外还需在编译测试文件时使用gcc test.c -o test pkg-config -cflags -libs gtk+-2.0编写一个GTK+程序的根本步骤如下:1.初始化gtkgtk_init(&argc,&argv);/启动GTKgtk_window_new(GTK_WINDOW_TOPLEVEL);/创立窗口gtk_window_set_title(GTK_WINDOW(window),“标题名);/设置窗口标题名gtk_widget_set_usize(window,200,200);/设置窗口大小gtk_widget_show(window);/显示窗口2.建立控件

13、gtk_table_new(gint rows,gint columns,gint homogeneous);/创立表格准备封装gtk_container_add(GTK_CONTAINER(window),table);/将表格结合到窗口里gtk_widget_show(table);/显示该表格void gtk_table_attach_defaults(GtkTable*table,GtkWidget*widget,gintleft_attch,gintright_attch,ginttop_attach,gintbottom_attch);/要把物件放在box中3. 登记消息与消息处理函数4. 执行消息循环函数gtk_main源程序:#include #include #include #include#includeGtkWidget *bar,*label,*table,*window;char buf20;GtkWidget *window;

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

当前位置:首页 > 商业/管理/HR > 商业计划书

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