操作系统课程设计课件

上传人:风*** 文档编号:242785937 上传时间:2024-09-03 格式:PPTX 页数:50 大小:438.73KB
返回 下载 相关 举报
操作系统课程设计课件_第1页
第1页 / 共50页
操作系统课程设计课件_第2页
第2页 / 共50页
操作系统课程设计课件_第3页
第3页 / 共50页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,#,操作系统,课程,设计,1,操作系统课程设计1,内容简介,设计目的,设计内容,实施方法及要求,时间安排,辅导,2,内容简介设计目的2,设 计 目 的,掌握,Linux,操作系统的使用方法,了解,Linux,系统内核代码结构,掌握实例操作系统的实现方法,3,设 计 目 的掌握Linux操作系统的使用方法3,内容简介,设计目的,设计内容,实施方法及要求,时间安排,辅导,4,内容简介设计目的4,设 计 内 容,(1),要求,:,熟悉和理解,Linux,编程环境,内容,1),编写一个,C,程序,用,fread,、,fwrite,等,库函数,实现文件拷贝功能。,2,),编写,一个,C,程序,,使用基于文本的终端图形编程库,(curses),或图形界面,(QT/GTK,),,分窗口显示三个并发进程的,运行,(,一,个窗口实时显示当前时间,一个窗口实时监测,CPU,的利用率,一个窗口做,1,到,100,的累加求和,刷新周期分别为,1,秒,,2,秒和,3,秒,),。,5,设 计 内 容 (1)要求: 熟悉和理解Linux编程环境5,设 计 内 容,(2),要求:,掌握添加系统调用的方法,内容,采用编译内核的方法,添加一个新的系统调用实现文件拷贝功能,编写一个应用程序,测试新加的系统调用,6,设 计 内 容 (2)要求:掌握添加系统调用的方法6,设 计 内 容,(3),要求:,掌握,添加设备驱动程序的方法,内容,采用模块方法,,添加一个新的字符,设备的,驱动程序,实现打开,/,关闭、读,/,写等基本操作,编写一个应用程序,测试添加的驱动程序,7,设 计 内 容 (3)要求:掌握添加设备驱动程序的方法7,设 计 内 容,(4),要求:,理解,和分析,/proc,文件,内容,了解,/proc,文件的特点和使用方法,监控系统状态,显示系统部件的使用情况,用图形,界面监控系统状态,包括,CPU,和内存利用率、所有进程信息等,(,可自己补充、添加其他功能,),8,设 计 内 容 (4)要求:理解和分析/proc文件8,设 计 内 容,(5),要求:,理解和掌握文件系统的设计方法,(选做),内容,设计、实现一个模拟的文件系统,包含文件,/,目录创建,/,删除,目录显示等基本功能,(,可自行扩充文件读,/,写、用户登录、权限控制、读写保护等其他功能,),9,设 计 内 容(5)要求:理解和掌握文件系统的设计方法,10,内容简介,设计目的,设计内容,实施方法及要求,时间安排,辅导,10内容简介设计目的,实施方法及要求,每位同学必须,独立,完成课程设计内容,支持借鉴和学习已有的优秀知识!,反对全盘拷贝,不求甚解!,吸收和消化他人经验,做自己的课程设计!,11,实施方法及要求每位同学必须独立完成课程设计内容11,实施方法及要求,上机检查:根据要求演示完成的系统,并回答老师的问题或按要求修改程序,报告提交:,纸质课程设计报告,(,双面打印,),:内容包括实验目的、实验内容、实验设计、实验环境及步骤、调试记录和课程设计心得等,光盘:课程设计报告电子版和程序清单(附注释),每个班一张光盘,12,实施方法及要求上机检查:根据要求演示完成的系统,并回答老师的,实施方法及,要求,班级安排:,成绩依据:检查情况,+,报告撰写情况,完成前两题:,60-65,完成前三题:,65-75,完成四题或选做题:,75-90,完成四题和选做题:,90,以上,13,实施方法及要求班级安排:13,14,内容简介,设计目的,设计内容,实施方法及要求,时间安排,辅导,14内容简介设计目的,15,课程设计时间:第一周、,第二周,课程,设计地点:,中期检查:,最后,检查:,实验报告提交:,时间安排,15课程设计时间:第一周、第二周时间安排,16,内容简介,设计目的,设计内容,实施方法及要求,时间安排,辅导,16内容简介设计目的,17,课程设计辅导,Linux,系统的相关知识,进程并发,添加系统调用,添加设备驱动程序,/proc,文件分析,17课程设计辅导Linux系统的相关知识,Linux,系统的相关知识,内核版本:,major.minor.patch-build,major,:主版本号,有结构性变化时变更,minor,:次版本号,新增功能时发生变化,奇数表示开发版,偶数表示稳定版,patch-build,:修订版本号,18,发行版:,内核最新版,4.4,Linux系统的相关知识内核版本:major.minor.p,Linux,系统的常用目录,19,系统管理员和普通用户使用的命令,Linux,内核和系统启动文件,Linux,的所有设备文件,如,/dev/hda,代表第一个物理,IDE,硬盘,系统管理所需的配置文件和子目录,用户的主户目录,命令、程序库、文档和其他文件,Linux系统的常用目录19系统管理员和普通用户使用的命令L,Linux,系统的核心源码,20,Linux系统的核心源码20,21,课程设计辅导,Linux,系统的相关知识,进程并发,添加系统调用,添加设备驱动程序,/proc,文件分析,21课程设计辅导Linux系统的相关知识,进程并发,pid=fork(),:创建子进程。,返回值,:0,从子进程返回,0,从父进程返回,exit,进程自我终止,进入僵死状态,wait( ),等待进程终止,(,由父进程调用,),exec( ),执行一个可执行程序,(,文件,),22,进程并发pid=fork():创建子进程。22,fork(),系统调用,23,fork()系统调用23,课程设计辅导,Linux,系统的相关知识,进程并发,添加系统调用,添加设备驱动程序,/proc,文件分析,24,课程设计辅导Linux系统的相关知识24,添加系统调用,Linux,系统调用机制,Linux,内核中设置了一组用于实现各种系统功能的子程序,称为,系统调用,用户可以通过系统调用命令在自己的应用程序中调用它们,系统调用与普通函数调用的区别,系统调用 核心态 操作系统核心提供,普通的函数调用 用户态 函数库或用户自己提供,25,添加系统调用Linux系统调用机制25,添加系统调用(续),Linux,系统调用机制,int 0x80,使用寄存器中适当的值跳转到内核中事先定义好的代码中执行:跳转到系统调用的总入口,system_call,,检查系统调用号,再查找系统调用表,sys_call_table,,调用内核函数,最后返回,系统调用是靠一些宏,一张系统调用表,一个系统调用入口来完成的,26,添加系统调用(续)Linux系统调用机制 26,添加系统调用(续),与系统调用相关的内核代码文件:,系统调用服务例程,如,arch/x86/kernel/sys.c,系统调用清单(为每个系统调用分配唯一号码),如,arch/x86/include/asm/unistd.h,系统调用表,如,arch/x86/kernel/syscall_table.s,不同版本,Linux,,文件名和存放位置会有所不同!,27,添加系统调用(续)与系统调用相关的内核代码文件:27,添加系统调用(续),步骤,_1,添加源代码,编写添加到内核中的源程序,函数名以,sys_,开头。,如:,mycall(int num),,在,arch/x86/kernel/sys.c,文件中添加如下代码:,asmlinkage int sys_,mysyscall,(int number),return number; /,该系统调用仅返回一个整型值,28,添加系统调用(续)步骤_1 添加源代码28,添加系统调用(续),步骤,_2,连接新的系统调用,使内核的其余部分知道该系统调用的存在。为此,需编辑两个文件:,arch/x86/include/asm/unistd.h,系统调用清单,(,为每个系统调用分配唯一号码,),define _,NR_,mysyscall,nnn,其中,,mysyscall,:系统调用名,nnn,:系统调用号,不能与其他系统调用号,相同,并修改系统调用总数:,#define NR_syscalls,XXX,arch/x86/kernel/syscall_table.s,增加新的内核函数指针,.long,sys_,mysyscall,29,添加系统调用(续)步骤_2 连接新的系统调用 29,添加系统调用(续),步骤,_3,重建,Linux,内核,以,root,身份进入,/usr/src/linux,目录,重建,内核,#make mrproper,/,清除之前,编译信息,避免生成的文件不一致,#make oldconfig /,配置内核与当前配置相同,make config,基于文本的传统配置界面,make menuconfig,基于文本的菜单形式,字符终端下使用,make xconfig,基于图形窗口模式,,Xwindow,下,使用,#make /,编译,内核,#make modules_install /,生成并安装,模块,#,make install /,安装新的系统,30,添加系统调用(续)步骤_3 重建Linux内核30,添加系统调用(续),步骤,_4,重启选用新内核,步骤,_5,使用新的系统调用,应用程序,app.c,中调用新添加的系统调用,mysyscall,:,int syscall(int number, );,31,添加系统调用(续)步骤_4 重启选用新内核31,课程设计辅导,Linux,系统的相关知识,进程并发,添加系统调用,添加设备驱动程序,/proc,文件分析,32,课程设计辅导Linux系统的相关知识32,添加设备驱动程序,设备驱动程序,一组常驻内存的具有特权的共享库,是低级硬件处理例程,每个设备文件有两个设备号,主设备号标识驱动程序,从设备号表示使用同一个设备驱动程序的不同硬件设备,设备驱动程序的功能,对设备初始化和释放,把数据从内核传送到硬件和从硬件读取数据,读取应用程序传给设备文件的数据和回送应用程序请求的数据,检测和处理设备出现的错误,33,添加设备驱动程序设备驱动程序33,添加设备驱动程序(续),Linux,支持的设备类型,字符设备, c,存取时没有缓存;对字符设备发出读写请求时,实际的,I/O,就发生了。如:鼠标、键盘等。,块设备, b,利用一块系统内存区域作缓冲区,当用户进程对设备请求能满足用户要求时,返回请求数据,否则,调用请求函数进行实际的,I/O,操作。如:硬盘、软盘、,CD-ROM,等。,网络设备,34,添加设备驱动程序(续)Linux支持的设备类型34,添加设备驱动程序(续),注册设备:向系统登记设备及驱动程序的入口点,int register_chrdev (unsigned int major, const char *name, struct file_operations *fops);,/,向系统的字符设备表登记一个字符设备,/major,:希望获得的设备号,为,0,时系统选择一个没有被占用的设备号返回。,/name,:设备名,/fops,:登记驱动程序实际执行操作的函数的指针,/,登记成功,返回设备的主设备号,否则,返回一个负值,int register_blkdev (unsigned int major, const char *name, struct file_operations *fops);,/,向系统的块设备表登记一个块设备,35,添加设备驱动程序(续)注册设备:向系统登记设备及驱动程序的入,添加设备驱动程序(续),设备卸载,int unregister_chrdev (unsigned int major, const char *name);,/,卸载字符设备,/,major,:要卸载设备的主设备号,/name,:设备名,int unregister_blkdev (unsigned int major, const char *name);,/,卸载块设备,36,添加设备驱动程序(续)设备卸载36,添加设备驱动程序(续),Linux,系统采用一组固定的入口点来实现驱动设备的功能。,open,入口点,:,打开设备。对将要进行的,I/O,操作做好必要的准备工作,如清除缓冲区等,close,入口点,:,关闭一个设备,read,入口点,:,从设备上读数据,write,入口点,:,往设备上写数据,ioctl,入口点,:,执行读、写之外的操作,select,入口点,:,检查设备,看数据是否可读或设备是否可用于写数据,37,添加设备驱动程序(续)Linux系统采用一组固定的入口点来实,添加设备驱动程序,内核模块,(LKM, Loadable Kernel Modules),Linux,核心是一种,monolithic,类型的内核,即单一的大核心,linux,内核是一个整体结构,因此向内核添加或者删除某些功能,都十分困难。为了解决这个问题,引入了模块机制,从而可以动态的在内核中添加或删除模块,38,添加设备驱动程序内核模块(LKM, Loadable Ker,添加设备驱动程序,(,续),模块的实现机制,模块初始化,(,注册,),int init_module( ), ,;,模块卸载,(,注销,),int cleanup_module( ) ,;,操作,unsigned long sys_create_module (char *name, unsigned long size); /,重新分配内存,int sys_delete_module (char *name); /,卸载,int sys_query_module (const char *name, int which, void *buf, size_t bufsize, size_t *ret); /,查询,39,添加设备驱动程序(续)模块的实现机制39,添加设备驱动程序(续),模块编程实例,hello.c,源码,40,printk(hello world !n);,printk(I have runing in a kernel mod! n);,return 0;,void cleanup_module() /*,模块卸载 *,/,printk( I will shut down myself in kernel mode!n);,#include linux/kernerl.h,#include linux/module.h,/*,处理版本问题,CONFIG_MODVERSIONS */,#if CONFIG_MODVERSIONS=1,#define MODVERSIONS,#include linux/version.h,#end if,int init_module() /*,模块初始化*,/,添加设备驱动程序(续)模块编程实例40 printk(h,添加设备驱动程序(续),模块的实现机制,模块加入:,insmod modulename.ko,查看模块:,lsmod,删除模块:,rmmod modulename,41,添加设备驱动程序(续)模块的实现机制41,添加设备驱动程序(续),添加设备驱动程序的方法,编写设备驱动程序,mydev.c,设备驱动模块的编译,Makefile,文件的使用,加载设备驱动模块,:,insmod mydev.ko,若加载成功,在文件,/proc/devices,中能看到新增加的设备,包括设备名,mydev,和主设备号。,生成设备文件:,mknod /dev/test c 254 0,其中,,test,为设备文件名,,254,为主设备号,,0,为从设备号,,c,表示字符设备,42,添加设备驱动程序(续)添加设备驱动程序的方法42,添加设备驱动程序(续),编写应用程序,测试驱动程序,43,if ( testdev = -1 ),printf(Cannt open file n);,exit(0);,read(testdev,buf,10);,for (i = 0; i 10;i+),printf(%dn,bufi);,close(testdev);,#include ,#include ,#include ,#include ,int main(),int testdev;,int i;,char buf10;,testdev = open(/dev/test,O_RDWR);,添加设备驱动程序(续)编写应用程序,测试驱动程序43,课程设计辅导,Linux,系统的相关知识,进程并发,添加系统调用,添加设备驱动程序,/proc,文件分析,44,课程设计辅导Linux系统的相关知识44,/proc,文件分析,proc,文件系统,进程文件系统和内核文件系统组成的复合体,将内核数据对象化为文件形式进行存取的一种内存文件系统,监控内核的一种用户接口,拥有一些特殊的纯文本文件,从中可以获取系统状态信息,系统信息:与进程无关,随系统配置的不同而不同,进程信息:系统中正在运行的每一个用户级进程的信息,45,/proc文件分析proc文件系统45,/proc,文件分析,系统信息,/proc/cmd/line:,内核启动的命令行,/proc/cpuinfo: CPU,信息,/proc/stat: CPU,的使用情况、磁盘、页面、交换、所有的中断、最后一次的启动时间等,/proc/meminfo:,内存状态的有关信息,进程信息,/proc/$pid/stat,/proc/$pid/status,/proc/$pid/statm,46,/proc文件分析系统信息46,/proc,文件分析,监控系统功能,通过读取,proc,文件系统,获取系统各种信息,并以比较容易理解的方式显示出来,C,语言开发,图形界面直观展示,具体包括:,主机名、系统启动时间、系统运行时间、版本号、所有进程信息、,CPU,类型、,CPU,的使用率、内存使用率,-,参照,WINDOWS,的任务管理器,实现其中的部分功能,47,/proc文件分析监控系统功能47,模拟文件系统设计(选择),设计和实现一个简单的文件系统。内容包括:,建立文件存储介质的管理机制,建立目录(采用一级目录结构),文件系统功能(显示目录、创建、删除、打开、关闭、读、写),文件操作接口(显示目录、创建、删除、打开、关闭、读、写),48,模拟文件系统设计(选择)设计和实现一个简单的文件系统。内容包,模拟文件系统设计(选择),方法,1,:申请一个,100MB,的文件,模拟文件系统的存储空间就是该文件的存储空间,利用该文件的,I,结点的信息建立模拟文件系统的存储介质管理机制(表、链均可),方法,2,:在磁盘上建立一个独立的分区,要求:写清楚设计思路、设计框架、设计方案等,49,模拟文件系统设计(选择)方法1:申请一个100MB的文件,模,课程设计辅导,参考资料,计算机操作系统实验指导(,Linux,版),郑然,庞丽萍编著,人民邮电出版社,其他各种网络、,书籍资源,50,课程设计辅导参考资料计算机操作系统实验指导(Linux版,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > PPT模板库


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!