基于Linux内核的操作系统实验体系.ppt_第1页
基于Linux内核的操作系统实验体系.ppt_第2页
基于Linux内核的操作系统实验体系.ppt_第3页
基于Linux内核的操作系统实验体系.ppt_第4页
基于Linux内核的操作系统实验体系.ppt_第5页
已阅读5页,还剩43页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于Linux内核的操作系统实验体系 一 进程管理实验二 存储管理实验三 用户接口实验四 模块编程实验五 设备管理实验六 文件系统实验七 操作系统的构成实验 实验一 进程管理实验 一 实验目的二 实验要求三 准备知识四 实验步骤和指导 实验目的 加深对进程概念的理解 明确进程和程序的区别 进一步认识并发执行的实质 分析进程争用资源的现象 学习解决进程互斥的方法 了解Linux系统中进程通信的基本原理 准备知识 进程的概念 进程与程序的区别 并发执行的概念 进程互斥的概念 进程通信的基本原理 实验内容 编制一段程序 实现软中断通信使用系统调用fork 创建两个子进程 再用系统调用signal 让父进程捕捉键盘上来的中断信号 即按Del键 当父进程接受到这两个软中断的其中某一个后 父进程用系统调用kill 向两个子进程分别发送整数值为16和17软中断信号 子进程获得对应软中断信号后 分别输出下列信息后终止 Childprocess1iskilledbyparent Childprocess2iskilledbyparent 父进程调用wait 函数等待两个子进程终止后 输出以下信息后终止 Parentprocessiskilled 多运行几次编写的程序 简略分析出现不同结果的原因 编制一段程序 实现进程的管道通信使用系统调用pipe 建立一条管道线 两个子进程分别向管道各写一句话 Childprocess1issendingamessage Childprocess2issendingamessage 而父进程则从管道中读出来自于两个子进程的信息 显示在屏幕上 要求 父进程先接收子进程P1发来的消息 然后再接收子进程P2发来的消息 实验二 存储管理实验 一 实验目的二 实验要求三 准备知识四 实验步骤和指导 实验目的 理解内存页面调度的机理 掌握几种理论调度算法实现 并通过实验比较各种调度算法的优劣 此外通过实验了解HASH表数据结构的使用 准备知识 C 指针 结构体 类 数据结构HASH表查找方式 操作系统相关内存交换知识 可能用到的几个LINUX函数 intgetpid 获得当前进程的idvoidsrand inta 以a为种子 为后面产生随机数作准备intrand 根据前面的种子 返回一个随机数 实验内容 对比几种算法的命中率 先进先出的算法 FIFO FirstInFirstOut 最近最少使用的算法 LRU LeastRecentlyUsed 最近未使用算法 NUR NeverUsedRecently 最佳置换算法 OPT OptimalReplacement 实验指导 FIFO原理简述算法实现提示 初始化 设置两个数组page ap 和pagecontrol pp 分别表示进程页面数和内存分配的页面数 并产生一个的随机数序列main total instruction 当然这个序列由page 的下标随机构成 表示待处理的进程页面顺序 diseffect置零 看main 中是否有下一个元素 有就由main 中获取该页面下标 并转到 没有 就转到 如果该page业已在内存中 就转到 否则就到 同时未命中的diseffect加1 观察pagecontrol是否占满 如果占满需将使用队列 中建立的 中最先进入的 就是队列第一个单元 pagecontrol单元 清干净 同时将对应的page 单元置为 不在内存中 将该page 与pagecontrol 建立关系 可以改变pagecontrol 的标示位 也可以采用指针连接 总之至少要使对应的pagecontrol单元包含两个信息 一是它被使用了 另外是哪个page 单元使用的 page 单元包含两个信息 对应的pagecontrol单元号 本page 单元已在内存中 将用到的pagecontrol置入使用队列 这里的队列当然是一种先进先出的数据结构了 而不是泛指 返回 显示命中率 最近最少使用的算法 LRU LeastRecentlyUsed 最近未使用算法 NUR NeverUsedRecently 最佳置换算法 OPT OptimalReplacement 请同学们自己设计实现改进的CLOCK算法 实验三 用户接口实验 一 控制台命令接口二 系统调用 控制台命令接口 实验目的理解面向操作命令的接口SHELL 学会简单的SHELL编程 准备知识Bash的原理建立Bash脚本编辑文件测试脚本 sourcescript更改脚本属性 chmoda xscript执行脚本 script 实验内容查看Bash版本 echo BASH VERSION编写Bash脚本 统计 my目录下c语言文件的个数 bin bashfunctionCount echo n Numberofmatchesfor 1 ls 1 wc l Count my c 系统调用 实验目的理解操作系统调用的运行机制 掌握创建系统调用的方法 准备知识实验内容编程调用一个系统调用fork 观察结果 编程调用创建的系统调用foo 观察结果 自己创建一个系统调用mycall 实现功能 打印字串到屏幕上 编程调用自己创建的系统调用 实验指导编程调用一个系统调用fork 编程调用创建的系统调用foo 自己创建一个系统调用mycall 实现功能 打印字串到屏幕上编写系统调用相应函数 添加系统调用号改动系统调用表重新编译内核用新的内核引导重新启动系统编程调用自己创建的系统调用 实验四 模块编程实验 一 实验目的二 实验要求三 准备知识四 实验步骤和指导 实验目的 通过学习内核模块的编写和运行 了解模块是LinuxOS的一种特有的机制 可根据用户的实际需要在不需要对内核进行重新编译的情况下 模块能在内核中被动态地加载和卸载 编写一个模块 将它作为LinuxOS内核空间的扩展来执行 并通过insmod命令来手工加载 通过命令rmmod来手工卸载 准备知识 模块的组织结构模块的编译模块的装载 insmod模块的卸载 rmmod模块程序中管理模块的几个文件操作 实验内容 编写一个简单的内核模块 该模块至少需要有两个函数 一个是init module 函数 在把模块装载到内核时被调用 它为内核的某些东西注册一个处理程序 或是用自身的代码取代某个内核函数 另一个是cleanup module 函数 在卸载模块时被调用 其任务是清除init module 函数所做的一切操作 编写完成后进行该模块的编译 装载和卸载操作 向上面模块中再添加一些新函数 如open release write 和read 函数 并编写一个函数来测试你的模块能否实现自己添加的函数的功能 实验指导 编写一个简单的内核模块向testmodule模块中添加新函数open release write 和read 模块的测试 实验五 设备管理实验 一 实验目的二 实验要求三 准备知识四 实验步骤和指导 实验目的 通过本实验的学习 了解Linux操作系统中的设备驱动程序包括哪些组成部分 并能编写简单的字符设备 scull SimpleCharacterUtilityforLoadingLocalities 和块设备 sbull SimpleBlockUtilityforLoadingLocalities 的驱动程序以及对所编写设备驱动程序的测试 最终了解Linux操作系统是如何管理设备的 准备知识 设备驱动程序的简单介绍设备驱动程序与外界的接口设备驱动程序的组织结构设备驱动程序的代码 驱动程序的注册与注销 设备的打开与释放 设备的读写操作 设备的控制操作 设备的中断和轮询处理 实验内容 编写一个简单的字符设备驱动程序 要求该字符设备包括scull open scull write scull read scull ioctl 和scull release 五个基本操作 编写一个测试程序来测试你所编写的字符设备驱动程序 实验指导 字符设备的驱动程序数据结构定义字符设备的结构字符设备驱动程序入口点函数scull open 函数scull write 函数scull read 函数scull ioctl 函数scull ioctl 字符设备驱动程序的安装测试函数 块设备驱动程序的代码块设备驱动程序描述符块设备驱动程序描述符块设备的注册相关问题睡眠与唤醒缓冲区的使用参考程序 实验六 文件系统实验 一 实验目的二 实验要求三 准备知识四 实验步骤和指导 实验目的 理解重要数据结构的意义 掌握文件系统的工作机理 学习较为复杂的linux下的编程 准备知识 外存管理linux的EXT2文件系统可能用到的编程技术用内存来模拟外存 实验内容 根据前面的提示设计一个一级 单用户 文件系统程序 要求实现功能 提供文件创建 删除接口命令create delete 目录创建 删除接口命令midair rmdir 显示目录内容命令ls创建的文件不要求格式和内容 在1基础上设计一个二级的文件系统 要求实现功能 提供用户登录文件 目录要有权限 实验指导 文件系统的数据结构索引节点超级块文件系统的设计思想参考程序 实验七 操作系统构成实验 一 实验目的二 实验要求三 准备知识四 实验步骤和指导 一 实验目的 了解一个操作系统的基本组成部件掌握Linux操作系统的基本操作构造一个微型Linux操作系统 二 实验要求 通过make工具重新配置新内核 制作一张启动盘 BootDisk 制作一张根文件系统盘 RootFilesystemDisk 使用启动盘和根文件系统盘启动操作系统 三 准备知识 关于Linux操作系统Linux的基本组成Shell程序和实用程序用户程序 Linux内核 LILO LInuxLOader 简介Linux的引导过程 Linux的启动盘 Boot盘 包含内核 kernel 在内核中用参数指明了根文件系统的位置 启动时根据该参数去安装根文件系统 RootFilesystem 最起码的目录和命令文件 最起码的配置文件 最起码的设备文件 基本程序运行所需的共享函数库和函数库装载器 四 实验步骤和指导 重新配置内核bzImage制作启动盘 BootDisk 制作根文件系统盘 RootFilesystemDisk 整合启动盘和根文件系统盘 重新配置内核bzImage执行命令makemenuconfig 配置新内核 在配置filesystems时 一定要保留内核对RAMDISK和ext2的支持 执行命令makebzImage执行命令makemodules和命令makemodules install在 usr src linux n n n arch i386 boot子目录下便可得到新配置的内核bzImage 制作启动盘在 mnt etc下用vi修改lilo conf文件boot dev fd0read writeramdisk 4096 ramdiskd的大小backup dev nullcompactimage bzImagelabel xhLinux 自己可随意命名root dev fd0 将原开发平台Linux操作系统 boot子目录下的boot b和map文件拷贝到 mnt boot 下 拷贝新内核 安装lilo 设置小操作系统的根文件系统位置 制作根文件系统盘 准备DEVICE把一个磁盘文件当作一台设备来使用 为达到最大的压缩比 用0把DEVICE填满 选择所创建的RootFilesystem盘的文件系统 Ext2 选择RootFilesystem盘的文件系统 dev 存放设备文件 必须包括console kmem mem null ram tt

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论