| 注册
home doc ppt pdf
请输入搜索内容

热门搜索

年终总结个人简历事迹材料租赁合同演讲稿项目管理职场社交

驱动程序实验报告操作系统课程设计报告

文***享

贡献于2023-03-22

字数:8224




操作系统课程设计报告









班级: 计科
姓名:
学号:
老师:
时间:2012年X月X日


设计目
操作系统课程讲述容道操作系统原理技术计算机原理编译原理汇编语言计算机网络程序设计等专业课程关系十分密切课程设计目综合应学生学知识建立系统完整计算机系统概念理解巩固操作系统基理原理方法掌握操作系统开发基技
1 解文件系统文件系统驱动程序般原理
2 学开发文件系统驱动程序开发环境解DDK(Device Drivers Kit设备驱动程序开发包)关系
3 掌握虚拟磁盘技术够编译生成相应驱动程序系统中安装实现
4 进步掌握Windows 7XP系统中驱动程序般结构

二设计容
设备驱动程序设计 求:
1 设计Windows XP者Linux操作系统设备驱动程序
2 设备类型字符设备块设备者网络设备
3 设备虚拟实际设备
4 编写测试应程序测试该设备读写等操作
三设计步骤
1Windows驱动程序开发基原理
WDMWindows驱动程序模型简称Windows Driver Model实际系列集成操作系统中常规系统服务集简化硬件驱动程序编写保证Windows 98Me2000中二进制兼容WDM(Windows Driver Model)模型WinNT351WinNT4核模式设备驱动程序发展WDM变化增加插电源理Windows Management Interface(WMI)设备接口支持WDM模型目标实现够跨台更安全更灵活编制更简单Windows设备驱动程序WDM采基象技术建立分层驱动程序结构WDM首先Windows98中实现Windows2000中进步完善续开发Windows操作系统中存Windows MeWindows XP微软通WDM模型引入希减轻设备驱动程序开发难度周期逐渐规范设备驱动程序开发应该说WDM成设备驱动程序流
面更深入介绍WIN32API步步设备驱动程序进行读写操作图:
应程序
Win32子系统
设备驱动
硬件抽象层
硬件
IO理器
户模式
核模式
Win32API调
系统服务接口
传递IRP驱动程序派遣函数
HAL调
台相关操作

图1-1 Windows组件模型

里CreateFile API例操作设备API类似首先应程序调CreateFile APIAPIWin32子系统三模块中Kernel32dll实现CreateFile函数会调Ntdlldll中NtCreateFile函数中NtCreateFile未文档化函数
NtCreateFile作穿越户模式边界进入核模式步骤通软中断实现进入核模式会调系统服务函数里会调名系统服务NtCreateFile
NtCreateFile系统函数调通IO理器创建IRP传输设备驱动程序中IRP输入输出请求包驱动程序开发中重数结构驱动程序运行完全IRP驱动驱动程序根IRP进行相应操作操作般设备直接操作
2设计分析
1 设备象通文件文件调户关设备者文件等文件象指针通指针访问文件设备时系统会动访问相应设备虚拟磁盘设备时必须指定相应文件通mount命令否操作法进行文件象户态程序访问文件设备目录卷等实例户程序通文件指针访问设备文件指针操作调系统功创建文件程
2 定义设备驱动程序入口函数函数中需完成两件事通查询注册表信息建立杯象数接着IO理器注册四分发例程完成户设备种请求成IRP包传入核部分IRP(IO请求包)包含虚拟磁盘请求需考虑异步情况步问题设备启动设备工作线
处理IRP相应分发例程结束部分完成三项工作
1)利IoMarkIrpPending函数通知IO理器分发例程返回状态值STATUS_PENDING表示该IRP续处理
2)IRP放入设备维护IRP队列中
3)通事件激发工作线程IRP进行处理
3 硬盘驱动程序理物理硬盘创建device象时必须磁盘逻辑分区创建device象样物理硬盘会device象未更组织种关系NT名字空间里创建目录象然驱动创建磁盘象放目录象
4 NT设备名操作系统执行时设备名称户户态程序中进行访问通DOS设备名建立符号链接样户进行访问时需提供DOS设备名操作系统操作响应NT设备名继完成相应请求
3驱动程序工作程
系统启动时驱动程序入口函数DriverEntry装入存调入口函数进行初始化初始化程中驱动程序完成两件事:调辅助函数FileDiskCreateDevice创建虚拟磁盘象IO理器注册程序分发例程时注册驱动程序卸载例程卸载驱动程序时卸载占资源创建磁盘设备象时创建设备工作线程完成IRP续处理实验中利该线程事件象实现虚拟磁盘读写步系统该线程中利时间象实现虚拟磁盘读写等操作间步实际该工作线程执行函数FileDiskThread
驱动程序部函数调关系


4驱动程序程分析
总结步:
1 驱动程序初始化驱动程序初始化程中已系统中创建相应数虚拟设备象(通调入口函数实现)具体数量安装驱动程序时导入注册表数决定需更改设备数时必须注册表中更改需重新启动计算机注册表系统启动时会写入创建设备象时仅磁盘创建设备象逻辑分区创建设备象便理创建目录设备象放目录
2 虚拟磁盘设备通文件进行模拟设备象通文件象调户应程序关设备者文件等文件象指针通文件指针访问设备者文件时系统会动访问相应设备象必须建立设备象指定文件创建虚拟磁盘象mount文件户应程序开始部分进行参数分析需考虑户请求什建立删输入命令否正确程序解析程中指定虚拟磁盘文件信息存入定义OPEN_FILE_INFORMATION文件信息结构中时参数中获取目标虚拟磁盘指定win32设备名(卷标)等信息NT设备名核执行体户调时时DOS设备名两命名应设备命名空间需间建立符号链接
3 应程序实现mount命令调首先确认卷标尚未否直接异常返回出相应信息检查前Win32设备名(盘符者卷标)否正常开获取相应设备NT设备名称驱动中创建该磁盘象时名字然利Win32函数检验述户指定Win32设备名相应NT设备名间建立符号链接检查否正常开次盘果步执行成功应利开否说明述建立符号链接操作异常户程序异常退出果程序利执行里系统中相应盘符mount命令步虚拟磁盘象发出定义控制命令IOCAL_FILE_DISK_OPEN_FILE命令行中指定虚拟磁盘文件作参数
4 述请求传入核前IO理器会生成IRP户命令参数包含IRP中请求传入时调分发例程FileDiskDeviceControl响应述户控制命令
需进行步处理事件读写分发例程调设备工作线程建立设备象时候创建功代码IRP_MJ_DEVICE_CONTROL处理程中定义IOCAL_FILE_DISK_OPEN_FILE控制码进行处理完成虚拟磁盘终启动调函数时传入相应IRP设备象指针该函数程:通IRP获取户指定虚拟磁盘文件名称判断虚拟磁盘类型设备时CD(光盘)进行相应设备属性设置然利文件名该文件开(果开成功指定位置创建样文件作虚拟磁盘)果开成功时设备象扩展结构中存入该文件句柄利述文件象指针进行查询根文件象提供信息相应设置设备象中标相关参数设备象扩展域中存入需信息包括代表磁盘目标文件句柄相关种虚拟磁盘属性完成该设备开工作完成安装该虚拟磁盘进行读写操作时传入磁盘句柄
5基数结构
(1)模拟磁盘文件信息结构 OPEN_FILE_INFORMATION
typedef struct _OPEN_FILE_INFORMATION{
DEVICE_TYPE DeviceType模拟磁盘类型
BOOLEAN ReadOnly 否设置虚拟磁盘读
LARGE_INTEGER FileSize 文件
USHORT FileNameLength文件名长度
UCHAR FileName[1] 文件名字符串
}OPEN_FILE_INFORMATION
该结构保存虚拟磁盘文件详细信息应程序中利mount命令指定文件时编程员需处理户命令组成样结构作参数传入核驱动程序会抽取信息作虚拟磁盘磁盘信息例磁盘读属性
创建虚拟磁盘象时文件信息放入磁盘扩展信息中
(2)设备扩展结构 DEVICE_EXTENSION
定义磁盘信息结构保存设备细节设备编程方式
typedef struct _DEVICE_EXTENSION
{
BOOLEAN media_in_device
HANDLE file_handle文件句柄
ANSI_STRING file_name文件名
LARGE_INTEGER file_size文件
BOOLEAN read_only读属性
PSECURITY_CLIENT_CONTEXT security_client_context
LIST_ENTRY list_head
KSPIN_LOCK list_lock
KEVENT request_event
PVOID thread_pointer
BOOLEAN terminate_thread
} DEVICE_EXTENSION *PDEVICE_EXTENSION
驱动程序创建虚拟磁盘象均维护样数结构实际核驱动程序中设备象维护着样数结构作保存应设备参数关设备处理通设备象访问信息
参数解释:
media_in_device:标志否已制订相应文件模拟磁盘文件系统设备初始化时设置false表示时没指定虚拟磁盘文件户通应程序进行mount操作时驱动程序相应操作
file_handle:指定作虚拟磁盘文件指针磁盘进行读写操作时利指针开文件获
file_name:作虚拟磁盘文件名
file_size:作虚拟磁盘文件
read_only:否读作虚拟磁盘文件开方式正虚拟磁盘具读写属性
security_client_context:底线程安全相关数结构
list_head:维护设备需步处理IRP队列
list_lock:设备IRP队列进行删时旋锁锁步象
request_event:事件执事前否新需设备处理请求达设备线程限循环方式运行次循环中会检测事件果事件出现表示相应请求送线程
thread_pointer:保存指设备工作线程指针通指针确认该线程否处合适访问状态果异常会终止该线程相关设备工作
terminate_thread:标记前设备工作线程否终止种求发生卸载设备时候
6设备象创建函数
NTSTATUS FileDiskCreateDevice (
IN PDRIVER_OBJECT DriverObject
IN ULONG Number
IN DEVICE_TYPE DeviceType
)

函数中基数结构:
WCHAR device_name_buffer[MAXIMUM_FILENAME_LENGTH]wchar16位unicode字符MAXIMUM_FILENAME_LENGTHntddkh中定义256
UNICODE_STRING device_name设备名
NTSTATUS status状态返回状态判断
PDEVICE_OBJECT device_object设备象
PDEVICE_EXTENSION device_extension设备扩展域指针
HANDLE thread_handle辅助变量
7驱动层例程
DriverEntry例程
NTSTATUS DriverEntry ( 驱动入口函数
IN PDRIVER_OBJECT DriverObject 驱动器象
IN PUNICODE_STRING RegistryPath 驱动注册表路径
)
FileDiskDeviceControl例程:
NTSTATUS FileDiskDeviceControl ( 设备控制例程
IN PDEVICE_OBJECT DeviceObject 操作设备象
IN PIRP Irp IRP包指针
)
FileDiskReadWrite例程:
NTSTATUS FileDiskReadWrite ( 读写例程
IN PDEVICE_OBJECT DeviceObject 操作设备象
IN PIRP Irp IRP包指针
)
FileDiskCreateClose分发例程
NTSTATUS FileDiskCreateClose ( 分发例程 创建关闭
IN PDEVICE_OBJECT DeviceObject 设备象
IN PIRP Irp IRP包指针
)
UnLoad分发例程:
VOID FileDiskUnload ( 卸载例程
IN PDRIVER_OBJECT DriverObject 卸载设备象
)
FileDiskCreateDevice 例程(
IN PDRIVER_OBJECT DriverObject
IN ULONG Number
IN DEVICE_TYPE DeviceType
)
FileDiskThread例程(
IN PVOID Context
)
四运行结果
1创建虚拟磁盘
(1) 虚拟磁盘创建步骤
1开命令提示符
2进入filedisk目录
3输入filedisk mount 0 c\temp\filediskimg 8M M
中filedisk工程名mount命令文件虚拟磁盘连接0表示第设备象c\temp\filediskimg虚拟文件8M(设定意)虚拟磁盘文件M虚拟盘符(意设定)
(2) 创建磁盘图示图:

2创建虚拟光盘
(1) 虚拟光盘创建前 图示:
1开命令提示符
2进入filedisk目录
3.输入filedisk mount 1 c\temp\cdimageiso cd I
中filedisk工程名mount命令文件虚拟磁盘连接1表示第设备象c\temp\cdimageiso虚拟文件cd表示虚拟光驱I虚拟盘符(意设定)
(2) 创建虚拟光驱 图示:





五心体会
通次课程设计核编程定理解知道整虚拟驱动生成工作具体流程弥补前方面盲区时解文件系统文件系统驱动程序般原理理解文件系统驱动程序(FSD)系统中作工作机制windows操作系统更深层理解文件系统指负责存储理外部存储器文件信息机制外部存储介质存储文件信息格式种组织文件格式种文件系统格式常见文件系统格式FATNTFS
解创建虚拟磁盘通建立文件达虚拟程虚拟磁盘操作实际文件操作创建虚拟磁盘时必须文件盒磁盘进行符号链接理删时种符号链接磁盘操作终划文件操作进行操作前必须相应文件指针获方式通开文件获时候开文件定创建文件进行判断已指定盘符连接文件进行链接否必定会出错前需加判断
整程中觉函数特者说特重首先DirverEntry编程中常main()winmain()函数样核函数入口函数程序加载时调接着FileDiskDeviceControl()作贯穿整程序户提出求成IRP包终传导函数进行列检查根功码采取相应措施FileDiskThread创建设备象时候创建IRP需进行续处理通常指读写步程序时允许设备象进行时访问设备需设备工作线程根IRP队列采取相应处理终返回处理状态信息
filedisk函数带参main()函数户需通输入DOS命令达操作程序目函数中做次命令行参数分析充分考虑户输入命令根输入者调相应函数者输出错误信息提示户进行重新输入
然说次课设代码量涉方面前没遇花费量时间觉切值做程中体会思考快乐思考价值学间进行交流互动带丰厚效益仅长知识学会讨效果远远高边死学总言次课设学时明白冰山角学东西需专业知识更深解增加学信心会更加努力相信付出定会获回报困难怕坚持定够克服

文档香网(httpswwwxiangdangnet)户传

《香当网》用户分享的内容,不代表《香当网》观点或立场,请自行判断内容的真实性和可靠性!
该内容是文档的文本内容,更好的格式请下载文档

下载文档,方便阅读与编辑

文档的实际排版效果,会与网站的显示效果略有不同!!

需要 2 香币 [ 分享文档获得香币 ]

该文档为用户出售和定价!

购买文档

相关文档

操作系统进程管理实验报告

操作系统进程管理实验报告实验一 进程管理1.实验目的:(1)加深对进程概念的理解,明确进程和程序的区别;(2)进一步认识并发执行的实质;(3)分析进程争用资源的现象,学习解决进程互斥的方法;(4)了解Linux系统中进程通信的基本原理。2.实验预备内容(1)阅读Linux的sched.h源码文件,加深对进程管理概念的理解;(2)阅读Linux的fork()源码文件,分析进程的

文***享 1年前 上传360   0

大学物理实验课程设计实验报告

大学物理实验课程设计实验报告  北方民族大学    大学物理实验(设计性实验)    实验报告   指导老师:王建明    姓    名:张国生    学    号:XX0233    学    院:信息与计算科学学院    班    级:05信计2班    重力加速度的测定    一、实验任务    精确测定银川地区的重力加速度    二、实验要

h***0 9年前 上传726   0

ping程序课程设计实验报告

Windows网络程序设计课程设计 课 程 名 称 ping程序设计 姓   名 系 别 、专 业 计算机科学系网络工程班 导师姓名、职 称

文***品 2年前 上传478   0

Visual FoxPro 课程设计实验报告

 中国最大的商务办公文档下载基地: http://www.word98.com/ ╔------------------------------------------------------------------------╗ ┆项目方案 调查报告 可研分析 广告策划 案例分析┆ ┆商业计划 项目管理 电子商务 财税管理 法律文书┆ ┆战略管理 企业

m***e 10年前 上传11776   0

java课程设计实验报告样例

分数_______嘉应学院计算机学院实验报告课程名称:面向对象程序设计课程设计(Java) 实验名称:”动物换位”程序设计 指导教师:肖振球 实验地点:_居家学习_实验时间:2020.03.17 提交时间:2020.03.17班 级:_计算机1807_姓 名:_方强_学 号:181110325_一、 实验目的和要求 掌握动物换位游戏的基本操作。

影***6 4年前 上传869   0

实验报告-电力电子课程设计

掌握晶闸管仿真模型模块各参数的含义。理解晶闸管的特性。

山***8 4年前 上传1343   0

车辆管理系统实验报告课程设计

 成绩: 《C++程序设计实践》报告专 业: 软件工程 班 级: 学 号: 姓 名: 日期:2016年 X月 X日目录一、设计目的 1二、总体设计 2三、 详细设计(以c

z***u 10个月前 上传274   0

操作系统实验报告C语言实现银行家算法

实 验 报 告题 目名 称C语言实现银行家算法院 系信息科学与工程学院班 级完成时间指导老师本次实验成绩组长联系电话邮件地址组员(姓名,学号)主要任务程序算法的编写、实现、运行调试组员(姓名,学号)主要任务实验报告的完成组员(姓名,学号)主要任务实验报告的完成

文***品 3年前 上传469   0

计算机操作系统内存分配实验报告

计算机操作系统内存分配实验报告一、实验目的熟悉主存的分配与回收。理解在不同的存储管理方式下,如何实现主存空间的分配与回收。掌握动态分区分配方式中的数据结构和分配算法及动态分区存储管理方式及其实现过程。二、实验内容和要求主存的分配和回收的实现是与主存储器的管理方式有关的。所谓分配,就是解决多道作业或多进程如何共享主存空间的问题。所谓回收,就是当作业运行完成时将作业或进程所占的主存空间归还

文***品 3年前 上传605   0

操作系统课程设计银行家算法报告

《操作系统--银行家算法》课程设计报告姓 名: 学 号: 班 级:计科班 专 业:计算机科学与技术 指导教师: 时 间: 2009 XX大学 计

文***品 3年前 上传618   0

《操作系统 银行家算法》课程设计报告

《操作系统--银行家算法》课程设计报告姓 名: 学 号: 班 级: 计科班 专 业:计算机科学与技术 XX大学 计算机科学与信息学院目 录1 课程设计目的 ………………………………………

文***品 3年前 上传810   0

合工大页面置换算法操作系统课程设计报告

计算机与信息学院《操作系统综合设计》报告设计题目:页面置换算法学生姓名:学 号:专业班级:计算机科学与技术班2015 年 X月一、设计题目 3二、开发环境与工具 3三、设计原理 31.最佳(Optimal)置换算法 32.先进先出(FIFO)页面置换算法 43.最近最久未使

文***品 3年前 上传557   0

银行家算法《操作系统》课程设计报告

《操作系统》课程设计报告课题: 银行家算法 专业计算机科学与技术学生姓名班级计算机学号指导教师信息工程学院一、实验要求和实验目的实验目的:本课程设计是学生学习完《操作系统原理》课程后,进行的一次全面的综合训练,通过课程设计,让学生更好地掌握操作系统

文***享 3年前 上传697   0

哲学家进餐问题操作系统课程设计报告

XX学院 《操作系统》课程设计报告题 目: 哲学家进餐问题 班 级: 学 号: 作者姓名: 指导教师: 2011年X月X日目 录1.

z***u 2年前 上传777   0

操作系统课程设计报告树型目录文件系统

操作系统课程设计报告题目:树型目录文件系统 学 院 计算机学院 专 业 网络工程 年级班别 班 学 号 学生姓名 指导教师

文***享 3年前 上传543   0

虚拟仪器课程设计实验报告

《微机化仪器综合设计与实践》实验指导书大学机电工程学院目录实验六 基于PID算法的可控硅水温自动调节系统设计一、实验目的和要求1.掌握虚拟仪器高级语言Lab VIEW 或Lab Windows/CVI 的流程图和软仪器面板的编程设计方法,熟悉数据处理模块、信号分析模块、仪器控制模块等各种软件模块的应用。2.掌握数据采集硬件的低层驱动程序

文***品 4年前 上传847   0

山东大学大二下学期操作系统实验报告

操作系统实验报告计算机科学与技术学院 计算机科学与技术专业2012级X班 目录一、 进程控制实验 31.1 实验目的 31.2示例实验 31.2.1实验内容 31.3独立实验 41.3.1实验内容 41.3.2实验步骤 41.3.3实验演示结果 71.3.4实验代码 7二、进程调度算法实验 92.1 实验目的 92.2示例实验 10

文***享 3年前 上传688   0

进程调度算法的实现计算机操作系统课程设计

题目2 进程调度算法的实现2.1 题目的主要研究内容及预期达到的目标(1)设计进程控制块; (2)设计多个进程队列; (3)设计多个进程(≥20); (4)动态生成时间片、执行时间和优先级,将这些信息输出至文件中; (5)设计基于时间片的多优先级调度算法; (6)动态调度,并把所有调度信息输出至文件中。(7)理解进程调度相关理论;(8)掌握时间片调度原理;(9)掌握高优先级

文***品 3年前 上传584   0

操作系统课程设计磁盘调度算法

操作系统课程设计磁盘调度算法目 录1 课程设计目的及要求……………………………………………………12 相关知识…………………………………………………………………13 题目分析…………………………………………………………………24 概要设计…………………………………………………………………2 4.1 先来先服务(FCFS)的设计思想………

文***享 3年前 上传547   0

操作系统课程设计银行家算法的模拟实现

操作系统课程设计报告专业计算机科学与技术学生姓名班级学号指导教师完成日期信息工程学院题目: 银行家算法的模拟实现 一、设计目的本课程设计是学习完“操作系统原理”课程后进行的一次全面的综合训练,通过课程设计,更好地掌握操作系统的原理及实现方法,加深对操作系统基础理论和重要算法的理解,加强学生的动手能力。

文***品 3年前 上传685   0

操作系统课程设计磁盘调度算法

《计算操作系统》课程设计报告 姓名: 班级:软件 学号: 指导老师:

文***品 3年前 上传462   0

操作系统课程设计动态分区分配存储管理

操作系统课程设计设计题目 动态分区分配存储管理学生姓名号学 号指导教师专业班级计算机班 第一章 课程设计概述1.1 设计任务:动态分区分配存储管理1.2 设计要求建立描述内存分配状况的数据结构;l建立描述进程的数据结构;l使用两种方式产生进程:(a)自动产生, (b)手工输入;l 在屏幕上显示内存的分配状况、每个进程的执行情况

文***品 2年前 上传422   0

操作系统实习报告样本

操作系统实习报告样本  1 操作系统实习报告内容(1)    基本信息:完成人姓名、学号、报告日期(2)    实习内容(3)    实习目的(4)    实习题目(5)    设计思路和流程图(6)    主要数据结构及其说明(7)    源程序并附上注释(8)    程序运行时的初值和运行结果(9)    实习体会:实习中遇到的问题及解决过程、实习中产生的错误及原因分析、实习的体会及收获

q***9 9年前 上传572   0

操作系统实践报告

学 号: 实践课设计报告课程名称计算机操作系统题 目模拟设计存储管理的分配与回收学 院计算机科学与技术学院专 业计算机科学与技术班 级姓 名指导教师年月日模拟设计存储管理的分配与回收一、 需求分析 本次实验主要是要求实现动态的页式存储管理。根据本次实验的要求,可以分析出本次实验需要实现

文***享 1年前 上传461   0

化学实验报告

化学实验报告  化学是一门以实验为基础的学科。化学上的许多理论和定律都是从实验中发现归纳出来的。同时,化学理论的应用、评价也有赖于实验的探索和检验。虽然到了近代乃至现代,化学的飞速进步已经产生了各种新的研究方法,但是,实验方法仍然是化学不可缺少的研究手段。新课程改革将科学探究作为突破口,科学探究不但是一种重要的学习方式,同时也是中学化学课程的重要内容,它对发展学生的科学素养具有不可替代的作用

静***开 11年前 上传1042   0