收藏 分销(赏)

UNIX内核分析.ppt

上传人:精*** 文档编号:10300540 上传时间:2025-05-20 格式:PPT 页数:22 大小:905KB
下载 相关 举报
UNIX内核分析.ppt_第1页
第1页 / 共22页
UNIX内核分析.ppt_第2页
第2页 / 共22页
点击查看更多>>
资源描述
,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,UNIX,内核分析,(2),参考教材:,UNIX,操作系统教程,1,软中断,(1),软中断是,Unix,系统提供的进程间通讯的一个机构,进程间可以利用其发送少量信息,并作适当处理;,同组之间可以通过,37,#,系统调用,kill,相互发送软中断信号,S5,提供了,19,种软中断信号,,13,个具有标准名字的约定,终端类型号,0,解释为,“,没有中断,”,相关结构:,p-sig,:进程接收的信号类型数,u-signalNSIG,:软中断处理程序入口表,,20,个元素,2,软中断,(2),发送软中断信号,按信号类型设置,p-sig,的某一位;如果接受进程睡眠在可被中断的优先级上,则唤醒,当一个进程从核心态返回用户态,或者进入,/,离开低优先级睡眠时,核心态检查其是否收到软中断信号;而仅当进程从核心态返回用户态时,核心才处理软中断,进程在核心态运行时,软中断不会立即起作用,3,psignal(p,sig),将信号,sig,发给指定进程;,PZEROparam.h,,为,25,Register sig;,register struct proc*p;,sig-,if(sig=NSIG)return;,pp-sig|1LPZERO),/*p,在可被中断优先级睡眠,setrun(p);/*,运行指定进程,或调入,/,必要时,Issig();,测试软中断信号,若收到不可忽略信号,返回真;,否则,返回假。,4,软中断处理入口表,U-SIGNALNSIG,根据表项中元素不同值,有三种信号处理方式,值为,0,:处理方式为终止本进程;,值为奇数:对该信号不作处理;,值为非零偶数:表示信号处理程序入口地址。,u-signalNSIG,表中各元素的值可通过,48,#,系统调用,signal(sig,func),预制,其处理程序是,ssig(),NSIG=20,:,0-19,sig,:信号类型号,保存在,u-arg0,func,:对该信号的处理方式,保存在,u-arg1,对于信号,SIGKIL/,终止进程,,func,不能设置,5,信号处理方式预制程序,ssig(),register a;,a=u.u-arg0;/*,取参数,sig,if(a=NISG|a=SIGKIL),u.u-error=EINVAL;/*,非法参数,return ,u.u-ar0R0=u.u-signala /*,保存原先处理方式,u.u-signala=u.u-arg1;,if(u.u-procpp-sig=a)/*,如果以前已经收到该信号,u.u-procpp-sig=0;/*,处理方式已改变,清除原收到信号,6,signal(sig,func),用户通过该系统调用实现预制,例如:,signal(2,1);,将,u-signal2,设置为,1/,奇数,实现不理会,2,号类型软中断的设置,7,信号产生的,5,种情况,陷入处理子程序,trap,中,用户态下产生各种故障,除电源失败等外,按照类型转换成信号,进程间通过,37,#,系统调用,kill(pid,sig),进行信号传送,用户在终端输入,“,DELETE,”,等,终端中断处理程序将信号,SIGINT/2,等发送到与终端有关的所有进程,进程使用管道,pipe,通信,发现读通道已经关闭,则向本进程发送,SIGPIPE/13,信号,父进程对接收到一个信号的子进程跟踪处理时,可用跟踪命令箱子进程发送一个信号,8,PDP-11,内存管理机构,Unix S5,思想:,分页,,支持内存、外存之间的进程对换,支持请求调页的存储管理,9,PDP-11,虚地址字,字长,16,位,每个进程的最大程序地址空间,2,16,=64KB,CPU,总线寻址能力,18,位,/256KB,。其中:最高,8KB,固定为,I/O,页,所以内存最大容量为,248KB,程序,16,位地址称为虚地址,,64KB,分成,8,页,,8KB/,页,每页划分为,128,个字符块,,64B/,块,由于程序可以小于,64KB,,有些页可能局部,/,完全空白,空白部分留作扩展使用,系统按照实际使用页长分配内存,10,虚地址字划分结构,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0,APF,Active page field,0-7,页,BN,Block number,0-127,块,DIB,Displacement in block,0-63B,11,内存管理寄存器,(1),PDP-11,设置了,2,组,32,位活动页寄存器,APR,,,8,个,/,组,分别保存进程核心态,/,用户态下内存使用情况,32,位,APR,可分为,2,个,16,位的寄存器,分别为,页地址寄存器,PAR(page address register),页说明寄存器,PDR(page description register),页地址寄存器,PAR,PAF:,表示虚地址空间中相应页在内存地址,单位是内存字符块,寻址范围:,0-(2,12,-1)*64,,即,0-(256K-64),字节,PAF,0,11,15,12,12,内存管理寄存器,(2),页说明寄存器,PDR/,上图,存取控制字段,ACF(access control field):,说明对该页的存取控制权限,00,:不驻在内存,01,:,read only,10,:未用,11,:,R/W,扩展方向位:,ED(extend),如果某页实际使用小于,128,块,(8KB),,则,ED,说明空白部分在高,/,低地址一侧,即扩展时的扩展方向。,ED=0:,高地址一侧,;ED=1:,低地址一侧,例如:,Unix,系统中,共享代码段,/,数据段:,ED=0,;栈段:,ED=1,PLF,/page length field,W,ED,ACF,0,1,2,3,6,8,14,15,13,内存管理寄存器,(3),存取信息位,W-,修改位,W=1,,表示修改过,页长字段,PLF,:说明虚页的实际使用长度,,1,128,块,如果,ED=0/,向高地址方向扩展:则,PLF=,实际使用长度,-1,;例如:实际使用长度为,128,,则,PLF=127,如果,ED=1,:则,PLF=128-,实际使用长度;例如:实际使用长度为,128,,则,PLF=0,用补码表示实际使用长度,PLF,值表示在相应扩展方向上该虚页实际使用的最末块块号,便于越界检查,14,虚地址到物理地址转换,总线寻址能力为,18,位,形成,256KB,的物理地址,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0,APF,BN,DIB,PAF,物理块号,DIB,0,5,6,17,0,11,+,找对应页的,PAR,15,UNIX,存储管理,PDP-11,进程可访问的地址空间为,64KB,进程在核心态下的虚拟地址空间,(,图,1,左,),Unix,核心代码长度不超过,48KB/6,页,占,0-5,页,进程在用户态下的虚拟地址空间,(,图,2,右,/,举例,),Unix,代码,现运行进程,ppda,I/O,页,0-5,页,6,页,7,页,共享正文段,2.5,页,数据段,2.25,页,栈段,0.5,页,16,虚,/,实地址映照,Unix,分别用,KISA(0-7),和,KISD(0-7),存放核心态下进程内存使用情况,KISA,类似,PAR/,页地址寄存器,KISD,类似,PDR/,页说明寄存器,用户态下现行进程内存使用情况分别用,UISA/UISD,存放,KISA/KISD(0-5),和,KISA/KISD(7),在系统初启后就固定,不再变化;,KISA/KISD(6),总是指向当前运行进程的,ppda,区,从,KISA6,指向的,ppda,区,user,结构中可以得到,u-procp,,它指向当前运行进程的,proc,17,用户态虚,/,实地址映照,以前面幻灯片图,2,数字为例,ta,ta+128,ta+256,da,da+128,da+256,未用,da+224,128,RO,128,RO,64,RO,128,RW,128,RW,32,RW,0,0,64,RW/ED,UISA,UISD,ta,是进程共享正文段在内存的起始地址,da,是进程数据段在内存的起始地址:,da=p-addr+16,内存空间,ta,ppda/16,块,栈段,0.5,页,da,P-addr,da+352,18,虚,/,实地址映照,UISA/UISD,只有一组,保存当前运行进程页表表目;,其他进程页表表目保存在,user(u-uisa/u-uisd16),u-uisd,内容与,UISD,完全相同;而,u-uisa,内容则略有区别,它是假设,ta,、,p-addr,皆为,0,而构造的。见右,u-uisa/u-uisd,由,estabur(),创建,u-uisa/u-uisd,-,UISA/UISD,由,sureg(),完成,0,128,256,16,16+128,16+256,未用,16+224,u-uisa,19,存储资源管理表,可用存储区表,Unix,对内存、盘交换区存储资源分配和释放使用同一算法,设置,2,个数组表示内存,/,盘交换区可用存储区情况,int coremapCMAPSIZ,int swapmapSWAPSIZ,2,个数组一般皆为,100,个元素,每,2,个元素构成一个表目项,共各有,50,个表目项,每个表目项描述:,Struct map char*m-size;/*,空闲区长度,char*m-addr;/*,空闲区起址,;,各空闲区按起始地址从高到低顺序登记在可用存储区表中,,m-size,为,0,的表项为空白表目,集中在表的后部,20,存储资源管理,存储分配:,first fit/malloc(mp,size),mp:coremap/swapmap,存储释放:,mfree(mp,size,释放区起址,),21,存储保护,虚,/,实映射机构基本上使各进程相互隔离,达到保护,各进程占用独立的存储区,且不会重叠,进程在核心态、用户态下运行使用不同的管理寄存器,且用户进程无权修改寄存器值,不可能破坏操作系统,核心态进程可使用系统提供的特权指令,mtpi,、,mfpi(,向当前运行状态存储空间存、取指令信息,),对现行运行进程的用户态空间进行操作,通过,KISD/UISD,中页长字段,PLF,,以及存取控制权限,ACF,,可以限定进程的访问长度和访问方式,22,
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服