欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

    操作系统课程设计25课件.ppt

    • 资源ID:1971665       资源大小:176.79KB        全文页数:52页
    • 资源格式: PPT        下载积分:20金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要20金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    操作系统课程设计25课件.ppt

    操作系统课程设计,9/24/2022,1,Real-Time Systems Lab.,操作系统课程设计9/24/20221Real-Time S,内容简介,设计目的设计内容实施方法及要求时间安排辅导,9/24/2022,2,Real-Time Systems Lab.,内容简介设计目的9/24/20222Real-Time Sy,设 计 目 的,掌握Linux操作系统的使用方法;了解Linux系统内核代码结构;掌握实例操作系统的实现方法。,9/24/2022,3,Real-Time Systems Lab.,设 计 目 的掌握Linux操作系统的使用方法;9/24/2,内容简介,设计目的设计内容实施方法及要求时间安排辅导,9/24/2022,4,Real-Time Systems Lab.,内容简介设计目的9/24/20224Real-Time Sy,设 计 内 容(1),要求:熟悉和理解Linux编程环境内容1)编写一个C程序,实现文件拷贝功能。2)编写一个C程序,使用Linux下的图形库,分窗口显示三个并发进程的运行。#include chinalinuxpub/doc/pro/curses1.html,9/24/2022,5,Real-Time Systems Lab.,设 计 内 容(1)要求:熟悉和理解Linux编程环境9/2,设 计 内 容(2),要求:掌握添加系统调用的方法内容采用编译内核的方法,添加一个新的系统调用。 编写一个应用程序,测试新添加的系统调用。系统调用的功能:文件拷贝。,9/24/2022,6,Real-Time Systems Lab.,设 计 内 容(2)要求:掌握添加系统调用的方法9/24/2,设 计 内 容(3),要求:掌握添加设备驱动程序的方法内容:采用模块方法,添加一个新的设备驱动程序。 要求添加字符设备的驱动。编写一个应用程序,测试添加的驱动程序。,9/24/2022,7,Real-Time Systems Lab.,设 计 内 容(3)要求:掌握添加设备驱动程序的方法9/24,设 计 内 容(4),要求:理解和分析/proc文件内容了解/proc文件的特点和使用方法。监控系统状态,显示系统中若干部件的使用情况。用图形界面显示系统监控状态。,9/24/2022,8,Real-Time Systems Lab.,设 计 内 容(4)要求:理解和分析/proc文件9/24/,设 计 内 容(5),要求:理解和掌握文件系统的设计方法 (选做)内容设计、实现一个模拟的文件系统。,9/24/2022,9,Real-Time Systems Lab.,设 计 内 容(5)要求:理解和掌握文件系统的设计方法9/2,内容简介,设计目的设计内容实施方法及要求时间安排辅导,9/24/2022,10,Real-Time Systems Lab.,内容简介设计目的9/24/202210Real-Time S,实施方法及要求,每位同学都必须独立完成课程设计内容。 上机考核 演示完成的系统,并回答老师的问题。 提交文本的课程设计报告,内容包括课程设计内容分析、程序清单(附注释)、调试记录(碰到的问题和解决方案)以及课程设计心得。程序(电子版)。,9/24/2022,11,Real-Time Systems Lab.,实施方法及要求每位同学都必须独立完成课程设计内容。9/24/,实施方法及要求(续),支持借鉴和学习已有的优秀知识!反对全盘拷贝,不求甚解!吸收和消化他人经验,做自己的课程设计!自学能力的培养:学会上网查资料、解决问题!,9/24/2022,12,Real-Time Systems Lab.,实施方法及要求(续)支持借鉴和学习已有的优秀知识!9/24/,内容简介,设计目的设计内容实施方法及要求时间安排辅导,9/24/2022,13,Real-Time Systems Lab.,内容简介设计目的9/24/202213Real-Time S,课程设计时间:第一、二周答疑南一楼804EMAIL:郑伟德 zhwadegmail 郑 然 zhranerhust.edu 考核系统、问答、报告,时间安排,9/24/2022,14,Real-Time Systems Lab.,课程设计时间:第一、二周时间安排9/24/202214Rea,内容简介,设计目的设计内容实施方法及要求时间安排辅导,9/24/2022,15,Real-Time Systems Lab.,内容简介设计目的9/24/202215Real-Time S,课程设计辅导,Linux系统的相关知识以Redhat Linux 9.0为例 添加系统调用添加设备驱动程序/proc文件分析,9/24/2022,16,Real-Time Systems Lab.,课程设计辅导Linux系统的相关知识9/24/202216R,Linux系统的相关知识,Linux版本 Linux通过简单的编号来区别内核的稳定版和开发版。每个版本用三个数字描述,由圆点分隔。前两个数表示版本号,第三个数表示发布号,如2.4.20。(2.6版本和2.4版本在具体的操作细节上有很大差异) 如果第二个数为偶数,则表示稳定的内核;否则,表示开发中的内核。 稳定版的发布主要用来纠正用户所报告的错误,但实现内核的主要算法和数据结构基本不变。然而,开发版本间可能存在很大的差异。,9/24/2022,17,Real-Time Systems Lab.,Linux系统的相关知识Linux版本9/24/202217,Linux系统的常用目录,文件目录结构树型结构常用目录有:/dev: dev是device的缩写。这个目录包含Linux的所有设备文件,如/dev/hda代表第一个物理IDE硬盘。/etc: 这个目录用来存放系统管理所需要的配置文件和子目录。/lib: 这个目录里存放着系统最基本的动态链接共享库,几乎所有的应用程序都需要用到这些共享库。,9/24/2022,18,Real-Time Systems Lab.,Linux系统的常用目录文件目录结构树型结构9/24/2,Linux系统的常用目录(续),/usr: 这是最庞大的目录,我们要用到的应用程序和文件几乎都存放在这个目录下。其中包含以下子目录:/usr/include: Linux下开发和编译应用程序所需的头文件; /usr/lib: 常用的动态链接共享库和静态档案库; /usr/local: 这是提供给一般用户的目录,在这里安装软件最适合; /usr/man: 帮助文档的存放目录; /usr/src: Linux的源代码目录。,9/24/2022,19,Real-Time Systems Lab.,Linux系统的常用目录(续)/usr: 这是最庞大的目录,,Linux系统的核心源码,Linux核心源代码位于/usr/src/linux下,包括:arch: 包括所有和CPU类型相关的核心代码。它的每一个子目录都代表一种支持的CPU类型,例如i386就是关于Intel CPU及与之相兼容的体系结构的子目录,PC机一般都基于此目录;drivers: 放置系统所有的设备驱动程序;每种驱动程序又各占用一个子目录,如/block下为块设备驱动程序;include: 包括编译核心所需要的大部分头文件。与平台无关的头文件在include/linux子目录下,与Intel CPU相关的头文件在include/asm-i386子目录下;,9/24/2022,20,Real-Time Systems Lab.,Linux系统的核心源码Linux核心源代码位于/usr/s,Linux系统的核心源码(续),Linux核心源代码中的内容还包括:init: 包含核心的初始化代码(注:不是系统的引导代码),包含两个文件 main.c和version.c,这是研究核心如何工作的一个非常好的起点;mm: 包括所有独立于CPU体系结构的内存管理代码,如页式存储管理中内存的分配和释放等,而和体系结构相关的内存管理代码则位于arch/*/mm/下;kernel: 主要的核心代码,此目录下的文件实现了大多数Linux系统的内核函数,其中最重要的文件当属进程调度sched.c,同样,和体系结构相关的代码在arch/*/kernel中。,9/24/2022,21,Real-Time Systems Lab.,Linux系统的核心源码(续)Linux核心源代码中的内容还,课程设计辅导,Linux系统的相关知识以Redhat Linux 9.0为例 添加系统调用添加设备驱动程序/proc文件分析,9/24/2022,22,Real-Time Systems Lab.,课程设计辅导Linux系统的相关知识9/24/202222R,添加系统调用,Linux系统调用机制Linux内核中设置了一组用于实现各种系统功能的子程序,称为系统调用。用户可以通过系统调用命令在自己的应用程序中调用它们。系统调用与普通函数调用的区别系统调用 核心态 操作系统核心提供普通的函数调用 用户态 函数库或用户自己提供,9/24/2022,23,Real-Time Systems Lab.,添加系统调用Linux系统调用机制9/24/202223Re,添加系统调用(续),Linux系统调用机制 int 0 x80 使用寄存器中适当的值跳转到内核中事先定义好的代码中执行:跳转到系统调用的总入口system_call,检查系统调用号,再查找系统调用表sys_call_table,调用内核函数,最后返回。系统调用是靠一些宏、一张系统调用表、一个系统调用入口来完成的。,9/24/2022,24,Real-Time Systems Lab.,添加系统调用(续)Linux系统调用机制 9/24/2022,添加系统调用(续),与系统调用相关的内核代码文件: /usr/src/linux/include/asm-i386/unistd.h系统调用清单(为每个系统调用分配唯一号码) /usr/src/linux/arch/i386/kernel/entry.S包含系统调用和异常的底层处理程序、信号量的识别程序ret_from_sys_call:调用和中断的返回点对sys_call_table (系统功能调用表)进行初始化 /usr/src/linux/kernel/sys.c系统调用实现代码/usr/src/linux/arch/i386/kernel/traps.c定义许多出错处理程序,9/24/2022,25,Real-Time Systems Lab.,添加系统调用(续)与系统调用相关的内核代码文件:9/24/2,添加系统调用(续),步骤_1 添加源代码编写添加到内核中的源程序,函数名以sys_开头。如:mycall(int num),在/usr/src/linux/kernel/sys.c文件中添加如下代码: asmlinkage int sys_mycall(int number) return number; /该系统调用仅返回一个整型值 ,9/24/2022,26,Real-Time Systems Lab.,添加系统调用(续)步骤_1 添加源代码9/24/2022,添加系统调用(续),步骤_2 连接新的系统调用 使内核的其余部分知道该系统调用的存在。为此,需编辑两个文件:/usr/src/linux/include/asm-i386/unistd.h系统调用清单(为每个系统调用分配唯一号码) define _NR_name nnn 这里,name:系统调用名;nnn:系统调用对应的号码,不能与内核自身的系统调用号相同。/usr/src/linux/arch/i386/kernel/entry.S对sys_call_table 进行初始化(增加新的内核函数的指针) .long SYMBOL_NAME(sys_mycall),9/24/2022,27,Real-Time Systems Lab.,添加系统调用(续)步骤_2 连接新的系统调用 9/24/,添加系统调用(续),步骤_3 重建Linux内核以root身份进入/usr/src/linux目录,重建内核 #make config /基于文本的传统配置界面 #make dep /检验内核源代码文件的依赖性和完整性 #make clean /清除以前编译的目标文件 #make bzImage /编译内核,也可采用make zImage编译生成的内核文件为 /usr/src/linux/arch/i386/boot/bzImage,配置内核的方式make config 基于文本的传统配置界面make menuconfig 基于文本的菜单形式配置界面,字符终端下使用make xconfig 基于图形窗口模式的配置界面,Xwindow下使用对每个配置选项,有三种选择:“Y”将该功能编译进内核“N”不将该功能编译进内核“M”将该功能编译成可动态载入的内核模块,9/24/2022,28,Real-Time Systems Lab.,添加系统调用(续)步骤_3 重建Linux内核配置内核的,补充说明,配置内核的方式make config 基于文本的传统配置界面make menuconfig 基于文本的菜单形式配置界面,字符终端下使用make xconfig 基于图形窗口模式的配置界面,Xwindow下使用make oldconfig 在原来的配置上作小的修改 对每个配置选项,有三种选择:“Y”将该功能编译进内核“N”不将该功能编译进内核“M”将该功能编译成可动态载入的内核模块,9/24/2022,29,Real-Time Systems Lab.,补充说明配置内核的方式9/24/202229Real-Tim,添加系统调用(续),步骤_4 重启内核将/usr/src/linux/arch/i386/boot/bzImage拷贝到/boot/bzImage 配置启动文件 若采用lilo,修改/etc/lilo.conf,添加新的引导内核image=/boot/bzImage / 上面编译生成的内核映象label=Linuxtest / 给该系统取个名字root=/dev/hda5 / 根目录所在的分区,可用命令df查看read-only 若采用grub,修改/etc/grub.conf,添加新的引导内核title Linuxtestroot(hd0,4)kernel /boot/bzImage ro root=/dev/hda5initrd /boot/initrd-2.4.18-3.img重启后,出现Linuxtest选项,选择它进入新的内核,9/24/2022,30,Real-Time Systems Lab.,添加系统调用(续)步骤_4 重启内核9/24/20223,添加系统调用(续),步骤_5 使用新的系统调用应用程序app.c中调用新添加的系统调用mycall: 宏指令说明:_syscalln(parameters):n表示系统调用所需参数,parameters为参数。如上面的宏中,第一个参数int表示返回值类型,第二个参数mycall为函数名。第三个和第四个分别用来指定参数的类型和名称。编译gcc o app app.c,9/24/2022,31,Real-Time Systems Lab.,添加系统调用(续)步骤_5 使用新的系统调用int ma,添加系统调用(续),注意(与内容一文件拷贝的异同): 相同点:功能相同、代码基本完全一样 不同点:作为内核代码,不能直接调用系统调用命令,应直接使用系统调用的实际函数printf printkopen() sys_open()close() sys_close()read() sys_read()write() sys_write(),9/24/2022,32,Real-Time Systems Lab.,添加系统调用(续)注意(与内容一文件拷贝的异同):9/24/,课程设计辅导,Linux系统的相关知识以Redhat Linux 9.0为例 添加系统调用添加设备驱动程序/proc文件分析,9/24/2022,33,Real-Time Systems Lab.,课程设计辅导Linux系统的相关知识9/24/202233R,添加设备驱动程序,内核模块 LKM Loadable Kernel ModulesLinux核心是一种monolithic类型的内核,即单一的大核心。linux内核是一个整体结构,因此向内核添加任何东西.或者删除某些功能,都十分困难。为了解决这个问题,引入了模块机制,从而可以动态的在内核中添加或者删除模块。一旦被插入内核,他就和内核其他部分一样。,9/24/2022,34,Real-Time Systems Lab.,添加设备驱动程序内核模块9/24/202234Real-Ti,添加设备驱动程序(续),模块的实现机制模块初始化 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); /查询头文件:/usr/scr/linux/include/linux/module.h,9/24/2022,35,Real-Time Systems Lab.,添加设备驱动程序(续)模块的实现机制9/24/202235R,添加设备驱动程序(续),模块的实现机制模块加入:insmod modulename.o 完成:加载目标文件 调用create_module重新分配内存 内核符号用get_kernel_syms解析未解析的引用 调用init_module初始化LKM-执行init_module(void)函数 查看模块:lsmod 结果:Module Page Used by modulename 1(内存信息) 0(使用次数)删除模块:rmmod modulename,9/24/2022,36,Real-Time Systems Lab.,添加设备驱动程序(续)模块的实现机制9/24/202236R,添加设备驱动程序(续),模块编程实例hello.c源码 编译gcc DMODULE D_KERNEL_ -I /usr/src/linux_2.4.20-8/include -c hello.c,9/24/2022,37,Real-Time Systems Lab.,添加设备驱动程序(续)模块编程实例 printk(he,添加设备驱动程序(续),Linux支持的设备类型字符设备 c 存取时没有缓存;对字符设备发出读写请求时,实际的I/O就发生了。如:鼠标、键盘等。 块设备 b 利用一块系统内存区域作缓冲区,当用户进程对设备请求能满足用户要求时,返回请求数据,否则,调用请求函数进行实际的I/O操作。如:硬盘、软盘、CD-ROM等。网络设备,9/24/2022,38,Real-Time Systems Lab.,添加设备驱动程序(续)Linux支持的设备类型9/24/20,添加设备驱动程序(续),设备驱动程序一组常驻内存的具有特权的共享库,是低级硬件处理例程。设备等同文件处理,每个设备文件有两个设备号 主设备号:标识驱动程序 从设备号:表示使用同一个设备驱动程序的不同硬件设备。设备驱动程序工作的基本原理 用户进程利用系统调用对设备进行诸如read/write操作,系统调用通过设备文件的主设备号找到相应的设备驱动程序,然后读取这个数据结构相应的函数指针,接着把控制权交给该函数。,9/24/2022,39,Real-Time Systems Lab.,添加设备驱动程序(续)设备驱动程序9/24/202239Re,添加设备驱动程序(续),设备驱动程序的功能对设备初始化和释放; 把数据从内核传送到硬件和从硬件读取数据; 读取应用程序传输给设备文件的数据和回送应用程序请求的数据; 检测和处理设备出现的错误。,9/24/2022,40,Real-Time Systems Lab.,添加设备驱动程序(续)设备驱动程序的功能9/24/20224,添加设备驱动程序(续),Linux系统采用一组固定的入口点来实现驱动设备的功能。open入口点: 打开设备准备I/O操作。open子程序必须对将要进行的I/O操作做好必要的准备工作,如清除缓冲区等。close入口点: 关闭一个设备。当最后一次使用设备终结后,调用close子程序。read入口点: 从设备上读数据。 write入口点: 往设备上写数据。 ioctl入口点: 执行读、写之外的操作。select入口点: 检查设备,看数据是否可读或设备是否可用于写数据。 如果设备驱动程序没有提供上述入口点中的某一个,系统会用缺省的子程序来代替。对于不同的系统,也还有一些其它的入口点。,9/24/2022,41,Real-Time Systems Lab.,添加设备驱动程序(续)Linux系统采用一组固定的入口点来实,添加设备驱动程序(续),入口点采用如下数据结构实现:,9/24/2022,42,Real-Time Systems Lab.,添加设备驱动程序(续)入口点采用如下数据结构实现: in,添加设备驱动程序(续),注册设备:向系统登记设备及驱动程序的入口点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); /向系统的块设备表登记一个块设备,9/24/2022,43,Real-Time Systems Lab.,添加设备驱动程序(续)注册设备:向系统登记设备及驱动程序的入,添加设备驱动程序(续),设备卸载int unregister_chrdev (unsigned int major, const char *name); /卸载字符设备/major:要卸载设备的主设备号/name:设备名 int unregister_blkdev (unsigned int major, const char *name); /卸载块设备,9/24/2022,44,Real-Time Systems Lab.,添加设备驱动程序(续)设备卸载9/24/202244Real,典型驱动程序的结构,字符设备提供的主要入口有:open ()、release ()、read ()、write ()、ioctl ()、llseek()、poll()等。,9/24/2022,45,Real-Time Systems Lab.,典型驱动程序的结构 / 在注销模块中卸载设备 /将系统调,添加设备驱动程序(续),添加设备驱动程序的方法编写设备驱动程序mydev.c 在模块的初始化init_module()中调用设备注册函数; 在模块的卸载cleanup_module()中调用设备的卸载函数。 设备驱动模块的编译 gcc -O2 -DMODULE -D_KERNEL_ -I/usr/src/linux-2.4.20-8/include -c mydev.c加载设备驱动模块: insmod f mydev.o 若加载成功,在文件/proc/devices中能看到新增加的设备,包括设备名mydev和主设备号。生成设备文件 mknod /dev/test c 254 0 /其中,test为设备文件名,254为主设备号,0为从设备号,c表示字符设备,9/24/2022,46,Real-Time Systems Lab.,添加设备驱动程序(续)添加设备驱动程序的方法9/24/202,编写应用程序,测试驱动程序编译gcc hello.c o hello,添加设备驱动程序(续),9/24/2022,47,Real-Time Systems Lab.,编写应用程序,测试驱动程序添加设备驱动程序(续) if,课程设计辅导,Linux系统的相关知识以Redhat Linux 9.0为例 进程并发 添加系统调用添加设备驱动程序/proc文件分析,9/24/2022,48,Real-Time Systems Lab.,课程设计辅导Linux系统的相关知识9/24/202248R,/proc文件分析,/proc PROC文件系统是进程文件系统和内核文件系统的组成的复合体,是将内核数据对象化为文件形式进行存取的一种内存文件系统, 是监控内核的一种用户接口. 它拥有一些特殊的文件(纯文本),从中可以获取系统状态信息。系统信息 与进程无关,随系统配置的不同而不同。 命令procinfo可以显示这些文件的大量信息。进程信息 系统中正在运行的每一个用户级进程的信息。,9/24/2022,49,Real-Time Systems Lab.,/proc文件分析/proc9/24/202249Real-,/proc文件分析,系统信息/proc/cmd/line: 内核启动的命令行/proc/cpuinfo: CPU信息/proc/stat: CPU的使用情况、磁盘、页面、交换、所有的中断、最后一次的启动时间等。/proc/meminfo: 内存状态的有关信息。进程信息 /proc/$pid/stat/proc/$pid/status/proc/$pid/statmetc,9/24/2022,50,Real-Time Systems Lab.,/proc文件分析系统信息9/24/202250Real-T,/proc文件分析,监控系统功能通过读取proc文件系统,获取系统各种信息,并以比较容易理解的方式显示出来。使用 GTK+ Linux下的c语言开发。具体包括: 主机名、系统启动时间、系统运行时间、版本号、所有进程信息、CPU类型、CPU的使用率、内存使用率 -参照WINDOWS的任务管理器,实现其中的部分功能。/proc文件系统的详细信息通过以下命令获取: man proc,9/24/2022,51,Real-Time Systems Lab.,/proc文件分析监控系统功能9/24/202251Real,课程设计辅导参考资料,Linux的“man”帮助书籍边干边学Linux内核指导李善平,陈文智等编著.浙江大学出版社.Linux Device Driver 2Linux内核编程网站,9/24/2022,52,Real-Time Systems Lab.,课程设计辅导参考资料Linux的“man”帮助9/24/,

    注意事项

    本文(操作系统课程设计25课件.ppt)为本站会员(小飞机)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开