《UNIX内核分析》PPT课件.ppt

上传人:小飞机 文档编号:5454201 上传时间:2023-07-08 格式:PPT 页数:22 大小:215.99KB
返回 下载 相关 举报
《UNIX内核分析》PPT课件.ppt_第1页
第1页 / 共22页
《UNIX内核分析》PPT课件.ppt_第2页
第2页 / 共22页
《UNIX内核分析》PPT课件.ppt_第3页
第3页 / 共22页
《UNIX内核分析》PPT课件.ppt_第4页
第4页 / 共22页
《UNIX内核分析》PPT课件.ppt_第5页
第5页 / 共22页
点击查看更多>>
资源描述

《《UNIX内核分析》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《UNIX内核分析》PPT课件.ppt(22页珍藏版)》请在三一办公上搜索。

1、UNIX 内核分析(2),参考教材:UNIX操作系统教程 尤晋元西安电子科技大学出版社,软中断(1),软中断是Unix系统提供的进程间通讯的一个机构,进程间可以利用其发送少量信息,并作适当处理;同组之间可以通过37#系统调用kill相互发送软中断信号S5提供了19种软中断信号,13个具有标准名字的约定,终端类型号0解释为“没有中断”相关结构:p-sig:进程接收的信号类型数u-signalNSIG:软中断处理程序入口表,20个元素,软中断(2),发送软中断信号,按信号类型设置p-sig的某一位;如果接受进程睡眠在可被中断的优先级上,则唤醒当一个进程从核心态返回用户态,或者进入/离开低优先级睡眠

2、时,核心态检查其是否收到软中断信号;而仅当进程从核心态返回用户态时,核心才处理软中断进程在核心态运行时,软中断不会立即起作用,psignal(p,sig),将信号sig发给指定进程;PZEROparam.h,为25Register sig;register struct proc*p;sig-if(sig=NSIG)return;pp-sig|1LPZERO)/*p在可被中断优先级睡眠 setrun(p);/*运行指定进程,或调入/必要时Issig();测试软中断信号,若收到不可忽略信号,返回真;否则,返回假。,软中断处理入口表u-signalNSIG,根据表项中元素不同值,有三种信号处理方式

3、值为0:处理方式为终止本进程;值为奇数:对该信号不作处理;值为非零偶数:表示信号处理程序入口地址。u-signalNSIG表中各元素的值可通过48#系统调用signal(sig,func)预制,其处理程序是ssig()NSIG=20:0-19 sig:信号类型号,保存在u-arg0 func:对该信号的处理方式,保存在u-arg1 对于信号SIGKIL/终止进程,func不能设置,信号处理方式预制程序,ssig()register a;a=u.u-arg0;/*取参数sig if(a=NISG|a=SIGKIL)u.u-error=EINVAL;/*非法参数 return u.u-ar0R0=

4、u.u-signala/*保存原先处理方式 u.u-signala=u.u-arg1;if(u.u-procpp-sig=a)/*如果以前已经收到该信号 u.u-procpp-sig=0;/*处理方式已改变,清除原收到信号,signal(sig,func),用户通过该系统调用实现预制例如:signal(2,1);将u-signal2设置为1/奇数实现不理会2号类型软中断的设置,信号产生的5种情况,陷入处理子程序trap中,用户态下产生各种故障,除电源失败等外,按照类型转换成信号进程间通过37#系统调用kill(pid,sig)进行信号传送用户在终端输入“DELETE”等,终端中断处理程序将信号

5、SIGINT/2等发送到与终端有关的所有进程进程使用管道pipe通信,发现读通道已经关闭,则向本进程发送SIGPIPE/13信号父进程对接收到一个信号的子进程跟踪处理时,可用跟踪命令箱子进程发送一个信号,PDP-11内存管理机构,Unix S5思想:分页,支持内存、外存之间的进程对换支持请求调页的存储管理,PDP-11虚地址字,字长16位,每个进程的最大程序地址空间216=64KBCPU总线寻址能力18位/256KB。其中:最高8KB固定为I/O页,所以内存最大容量为248KB程序16位地址称为虚地址,64KB分成8页,8KB/页每页划分为128个字符块,64B/块由于程序可以小于64KB,有

6、些页可能局部/完全空白空白部分留作扩展使用系统按照实际使用页长分配内存,虚地址字划分结构,内存管理寄存器(1),PDP-11设置了2组32位活动页寄存器APR,8个/组,分别保存进程核心态/用户态下内存使用情况32位APR可分为2个16位的寄存器,分别为页地址寄存器PAR(page address register)页说明寄存器PDR(page description register)页地址寄存器PARPAF:表示虚地址空间中相应页在内存地址,单位是内存字符块寻址范围:0-(212-1)*64,即0-(256K-64)字节,0,11,15,12,内存管理寄存器(2),页说明寄存器PDR/上图

7、 存取控制字段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,0,1,2,3,6,8,14,15,内存管理寄存器(3),存取信息位W-修改位W=1,表示修改过页长字段PLF:说明虚页的实际使用长度,1128块如果ED=0/向高地址方向扩展:则PLF=实际使用长

8、度-1;例如:实际使用长度为128,则PLF=127如果ED=1:则PLF=128-实际使用长度;例如:实际使用长度为128,则PLF=0用补码表示实际使用长度PLF值表示在相应扩展方向上该虚页实际使用的最末块块号,便于越界检查,虚地址到物理地址转换,总线寻址能力为18位,形成256KB的物理地址,0,5,6,17,0,11,+,找对应页的PAR,Unix存储管理,PDP-11进程可访问的地址空间为64KB进程在核心态下的虚拟地址空间(图1左)Unix核心代码长度不超过48KB/6页,占0-5页进程在用户态下的虚拟地址空间(图2右/举例),0-5页,6页,7页,共享正文段2.5页,数据段2.2

9、5页,栈段0.5页,虚/实地址映照,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,用户态虚/实地址映照,以前面幻灯片图2数字为例,UISA,UISD,ta 是进程共享正文段在内存的起始地址da 是进程数据段在内

10、存的起始地址:da=p-addr+16,内存空间,ta,da+352,虚/实地址映照,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()完成,u-uisa,存储资源管理表,可用存储区表Unix对内存、盘交换区存储资源分配和释放使用同一算法设置2个数组表示内存/盘交换区可用存储区情况 int coremapC

11、MAPSIZ int swapmapSWAPSIZ2个数组一般皆为100个元素,每2个元素构成一个表目项,共各有50个表目项,每个表目项描述:Struct map char*m-size;/*空闲区长度 char*m-addr;/*空闲区起址;各空闲区按起始地址从高到低顺序登记在可用存储区表中,m-size为0的表项为空白表目,集中在表的后部,存储资源管理,存储分配:first fit/malloc(mp,size)mp:coremap/swapmap存储释放:mfree(mp,size,释放区起址),存储保护,虚/实映射机构基本上使各进程相互隔离,达到保护各进程占用独立的存储区,且不会重叠进程在核心态、用户态下运行使用不同的管理寄存器,且用户进程无权修改寄存器值,不可能破坏操作系统核心态进程可使用系统提供的特权指令mtpi、mfpi(向当前运行状态存储空间存、取指令信息)对现行运行进程的用户态空间进行操作通过KISD/UISD中页长字段PLF,以及存取控制权限ACF,可以限定进程的访问长度和访问方式,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号