设备驱动程序的实现ppt

上传人:you****now 文档编号:246625470 上传时间:2024-10-15 格式:PPTX 页数:36 大小:389.54KB
返回 下载 相关 举报
设备驱动程序的实现ppt_第1页
第1页 / 共36页
设备驱动程序的实现ppt_第2页
第2页 / 共36页
设备驱动程序的实现ppt_第3页
第3页 / 共36页
点击查看更多>>
资源描述
,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,*,13.3.2,设,设,备,备驱,动,动程,序,序的,实,实现,1,块,块设,备,备,块设,备,备主,要,要包,括,括硬,盘,盘、,软,软盘,等,等存,储,储设,备,备,,前,前面,已,已经,提,提到,过,过,,块,块设,备,备驱,动,动程,序,序有,一,一部,分,分是,相,相同,的,的,,不,不同,的,的主,要,要是,真,真正,的,的I/O,操,操作,的,的那,部,部分,。,。,设备,驱,驱动,程,程序,一,一共,可,可能,有,有6,种,种操,作,作:,OPEN:,验,验证,设,设备,是,是否,可,可用,;,;,CLOSE:,确,确保,把,把采,用,用延,迟,迟写,方,方式,处,处理,的,的数,据,据真,正,正写,到,到设,备,备上,;,;,READ:,将,将数,据,据从,设,设备,读,读到,调,调用,进,进程,所,所在,的,的内,存,存区,域,域;,WRITE:,与,与READ执,行,行的,操,操作,相,相反,;,;,IOCTL:,负,负责,对,对I/O,设,设备,的,的操,作,作参,数,数进,行,行检,查,查和,修,修改,;,;,SCATTERED_IO:允,许,许执,行,行同,时,时读,写,写多,个,个块,的,的操,作,作。,13.3.2,设,设,备,备驱,动,动程,序,序的,实,实现,块,块设,备,备驱,动,动程,序,序软,件,件。,MINIX在,头,头文,件,件driver.h中,定,定义,了,了块,设,设备,驱,驱动,程,程序,需,需要,用,用到,的,的结,构,构定,义,义,,它,它们,包,包括,:,:,driver,结,结构,:,:保,存,存各,驱,驱动,程,程序,执,执行I/O操,作,作所,需,需调,用,用函,数,数的,地,地址,;,;,device,结,结构,:,:以,字,字节,为,为单,位,位保,存,存基,地,地址,、,、长,度,度等,与,与分,区,区相,关,关的,主,主要,信,信息,。,。,13.3.2,设,设,备,备驱,动,动程,序,序的,实,实现,驱,驱动,程,程序,库,库,可移,植,植性,是,是在MINIX中,得,得到,了,了相,当,当的,重,重视,,,,MINIX,的,的目,标,标是,当,当它,被,被移,植,植到,一,一台,机,机器,上,上时,,,,应,该,该能,够,够使,用,用这,台,台机,器,器上,原,原先,运,运行,的,的操,作,作系,统,统采,用,用的,分,分区,表,表格,式,式。,在IBM,兼,兼容,机,机上,,,,硬,盘,盘分,区,区的,标,标准,由,由MS-DOS的fdisk命,令,令确,定,定。,MINIX包,含,含了,支,支持IBM兼,容,容机,分,分区,的,的源,代,代码,,,,为,了,了方,便,便移,植,植,,这,这些,与,与平,台,台有,关,关但,是,是与,具,具体,硬,硬件,无,无关,的,的代,码,码没,有,有被,放,放在driver.c,文,文件,中,中,,而,而是,单,单独,的,的放,在,在drvlib.h和drvlib.c,文,文件,中,中。,13.3.2,设,设,备,备驱,动,动程,序,序的,实,实现,RAM盘,在MINIX,中,中存,在,在一,个,个RAM,盘,盘的,概,概念,简,而,而言,之,之就,是,是保,留,留一,部,部分,内,内存,作,作为,磁,磁盘,来,来使,用,用,,对,对于,用,用户,来,来说,,,,它,就,就像,一,一个,磁,磁盘,一,一样,。,。,RAM盘,的,的驱,动,动程,序,序实,际,际上,由,由四,个,个紧,密,密联,系,系的,部,部分,组,组成,,,,也,就,就是,具,具有,以,以下,四,四个,次,次设,备,备:,0:/dev/ram:真,正,正的RAM盘,,,,它,的,的大,小,小和,基,基址,在,在MINIX,启,启动,时,时由FS,确,确定,;,;,1:/dev/mem:用,于,于读,写,写物,理,理内,存,存,,通,通常,读,读出,的,的是,起,起始,于,于内,存,存零,地,地址,的,的内,容,容,,写,写操,作,作则,会,会改,写,写中,断,断向,量,量;,2:/dev/kmem:,用,用于,读,读写,内,内核,内,内存,,,,与1的,功,功能,类,类似,;,;,3:/dev/null:,负,负责,接,接收,数,数据,并,并把,数,数据,抛,抛弃,掉,掉。,13.3.2,设,设,备,备驱,动,动程,序,序的,实,实现,2MINIX的,系,系统,任,任务,MINIX中,将,将文,件,件管,理,理和,内,内存,管,管理,摒,摒弃,在,在内,核,核之,外,外,禁,禁止,它,它们,把,把信,息,息写,入,入内,核,核.,所,所以,,,,如,果,果内,存,存管,理,理系,统,统想,把,把消,息,息通,知,知给,内,内核,时,时,,就,就需,要,要借,助,助于,一,一个,第,第三,者,者,对,内,内核,表,表拥,有,有存,取,取权,的,的内,核,核任,务,务,的,帮,帮助,,,,这,个,个任,务,务一,般,般被,称,称之,为,为系,统,统任,务,务。,系统,任,任务,和,和I/O,任,任务,十,十分,类,类似,,,,它,们,们都,实,实现,了,了一,个,个接,口,口,,具,具有,相,相同,的,的权,限,限,,都,都被,链,链入,内,内核,中,中,,所,所不,同,同的,仅,仅仅,是,是系,统,统任,务,务不,控,控制,具,具体I/O设,备,备,,它,它所,服,服务,的,的对,象,象是,系,系统,中,中大,部,部分,的,的内,部,部组,件,件。,13.3.2,设,设,备,备驱,动,动程,序,序的,实,实现,系统,任,任务,的,的18种,消,消息:,13.4,内,内,存,存管,理,理,13.4.1,内,内存,管,管理,概,概述,由于MINIX是,专,专门设计,在,在IBM,兼,兼容机等,微,微型机上,运,运行的操,作,作系统,,因,因此它的,内,内存管理(MM),是,是比较简,单,单的,不,分,分页,也,不,不交换:,MM保存,一,一张按照,地,地址顺序,排,排列的空,闲,闲地址列,表,表,当系,统,统调用FORK和EXEC,请,请求内存,时,时,MM,利,利用首次,适,适配算法,找,找到一块,足,足够大的,空,空闲内存,分,分配给程,序,序使用。,而一旦程,序,序装入内,存,存则一直,在,在原位置,运,运行到结,束,束。,可以说,,内,内存管理,的,的主要工,作,作就是操,作,作进程表,和,和空闲地,址,址列表这,两,两张表格,,,,以及处,理,理系统调,用,用FORK和EXEC。,13.4.1内存,管,管理概述,1内存,的,的消息处,理,理,和I/O,相,相仿,MM在系统,初,初始化以,后,后进入自,己,己的主循,环,环,等待,消,消息,一,旦,旦收到消,息,息就进行,处,处理并发,送,送应答消,息,息。,13.4.1内存,管,管理概述,与MM通,信,信的消息,类,类型、入,口,口参数和,应,应答:,13.4.1内存,管,管理概述,2系统,调,调用,下面我们,来,来看看系,统,统调用FORK、EXEC,和,和BRK,的,的处理过,程,程。,FORK。,执行FORK的过,程,程很简单,,,,收到FORK调,用,用的请求,后,后,MM,就,就检查进,程,程表中是,否,否存在空,闲,闲位置,,如,如果存在,就尝试,为,为新建立,的,的子进程,分,分配内存,,,,随后就,将,将内存地,址,址等信息,填,填入一个,空,空闲的进,程,程表项,,最,最后发出,通,通知公布,建,建立了一,个,个新进程,。,。,进程的终,止,止则更复,杂,杂一些,,当,当进程自,己,己退出(,或,或被信号,杀,杀死)并,且,且被父进,程,程通过WAIT调,用,用观察到,以,以后,该,进,进程才会,真,真正被删,除,除,如果,第,第二个条,件,件没有满,足,足,子进,程,程就会被,挂,挂起,这,种,种状态在MINIX中称为,“,“僵死”,。,。,13.4.1内存,管,管理概述,EXEC。这,个,个调用负,责,责内存映,像,像的更新,,,,包括设,置,置新堆栈,,,,它也是MINIX中最复,杂,杂的系统,调,调用。EXEC的,复,复杂主要,是,是由两个,方,方面的因,素,素决定的,:,:,次数众多,的,的检测:EXEC,执,执行时十,分,分谨慎,,为,为了保证,有,有足够内,存,存容纳新,映,映像,必,须,须进行检,测,测。,设置初始,堆,堆栈:我,们,们通常用,库,库函数execve来调用EXEC,,,,这个函,数,数包含三,个,个参数:,被,被执行文,件,件名的地,址,址指针;,一,一个指针,数,数组的地,址,址指针,,数,数组中的,元,元素分别,指,指向一个,参,参数;第,三,三个参数,同,同样是一,个,个指针数,组,组的地址,指,指针。,13.4.1内存,管,管理概述,BRK。BRK调用可,以,以调整数,据,据段的上,限,限。有两,个,个过程都,可,可以调用BRK:,brk过,程,程以数据,段,段的绝对,长,长度为参,数,数;,sbrk,以,以当前长,度,度的增量,为,为参数,,计,计算出绝,对,对长度后,调,调用BRK。,执行BRK所完成,的,的工作就,是,是检查地,址,址空间是,否,否够用,,并,并根据情,况,况调整表,格,格,然后,通,通知内核,。,。,13.4.1内存,管,管理概述,3.内,存,存数据结,构,构,主要了解,两,两个关键,的,的数据结,构,构:进程,表,表和空闲,表,表。,进程,表,表。MINIX中,,,,内核、FS和MM都拥有,各,各自的进,程,程表,每,部,部分的进,程,程表包含,本,本部分必,需,需的域,,同,同时,三,张,张进程表,是,是对应的,,,,也就是,说,说,三张,表,表的第n,个,个表项指,的,的都是同,一,一个进程,。,。也正是,由,由于这个,原,原因,三,张,张表必须,被,被同步更,新,新。,空闲,表,表。定义,在,在alloc.h,文,文件中的,空,空闲表按,照,照内存地,址,址递增的,顺,顺序列出,空,空闲块。,空闲表的,表,表项主要,包,包含三个,域,域:空闲,块,块组的基,地,地址、空,闲,闲块组的,大,大小及指,向,向下一个,空,空闲块组,的,的指针。,表项以单,向,向链表的,形,形式链接,。,。,13.4.2 实,现,现,1.头,文,文件与主,程,程序,MM中的table.c文,件,件的主要,作,作用是为,全,全局变量,服,服务,在table.c被,编,编译时,,它,它会自动,为,为下面将,介,介绍到的,一,一些全局,变,变量保留,存,存储空间,。,。,内存管理,部,部分有许,多,多自己使,用,用的头文,件,件,这些,头,头文件有,的,的和其它,部,部分的头,文,文件具有,相,相同的名,字,字,但由,于,于它们位,于,于不同的,目,目录下为,不,不同的部,分,分服务,,所,所以编译,使,使用时不,会,会出现错,误,误。,13.4.2 实,现,现,头文,件,件。在内,存,存管理器MM中存,在,在着一个,私,私有的头,文,文件mm.h,可,以,以将它理,解,解为MM,范,范围内的,主,主控头文,件,件,它囊,括,括了位于/usr/include,及,及其子目,录,录中的所,有,有头文件,,,,以及/kernel/kernel.h中,包,包含的大,部,部分头文,件,件。MM,中,中每个文,件,件的编译,都,都需要引,用,用mm.h。,主程,序,序。MM,的,的主程序,也,也位于main.c中,执,行,行的过程,和,和I/O,任,任务的主,程,程序类似,。,。首先调,用,用mm_init,mm_init,通,通过过程sys_getmap来获,得,得内核的,内,内存使用,信,信息,为,所,所有第二,层,层及第三,层,层的进程,初,初始化进,程,程表项,,同,同时也为init,进,进程初始,化,化进程表,项,项
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 商业管理 > 营销创新


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

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


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