《UNIX内核分析》教学课件_第1页
《UNIX内核分析》教学课件_第2页
《UNIX内核分析》教学课件_第3页
《UNIX内核分析》教学课件_第4页
《UNIX内核分析》教学课件_第5页
已阅读5页,还剩39页未读 继续免费阅读

下载本文档

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

文档简介

《UNIX内核分析》幻灯片本课件PPT仅供大家学习使用学习完请自行删除,谢谢!本课件PPT仅供大家学习使用学习完请自行删除,谢谢!《UNIX内核分析》幻灯片本课件PPT仅供大家学习使1软中断(1)软中断是Unix系统提供的进程间通讯的一个机构,进程间可以利用其发送少量信息,并作适当处理;同组之间可以通过37#系统调用kill相互发送软中断信号S5提供了19种软中断信号,13个具有标准名字的约定,终端类型号0解释为“没有中断〞相关构造:p-sig:进程接收的信号类型数u-signal[NSIG]:软中断处理程序入口表,20个元素软中断(1)软中断是Unix系统提供的进程间通讯的一个机构,2软中断(2)发送软中断信号,按信号类型设置p-sig的某一位;如果承受进程睡眠在可被中断的优先级上,那么唤醒当一个进程从核心态返回用户态,或者进入/离开低优先级睡眠时,核心态检查其是否收到软中断信号;而仅当进程从核心态返回用户态时,核心才处理软中断进程在核心态运行时,软中断不会立即起作用软中断(2)发送软中断信号,按信号类型设置p-sig的某一位3psignal(p,sig)将信号sig发给指定进程;PZERO∈param.h,为25Registersig;registerstructproc*p;{sig--if(sig<||sig>=NSIG)return;p→p-sig|1L<<sig/*按照sig类型,设置p-sig某一位if(p→p-stat==SSLEEP&&p→p-pri>PZERO)/*p在可被中断优先级睡眠setrun(p);}/*运行指定进程,或调入/必要时Issig();测试软中断信号,假设收到不可忽略信号,返回真;否那么,返回假。psignal(p,sig)将信号sig发给指定进程;PZE4软中断处理入口表u-signal[NSIG]根据表项中元素不同值,有三种信号处理方式值为0:处理方式为终止本进程;值为奇数:对该信号不作处理;值为非零偶数:表示信号处理程序入口地址。u-signal[NSIG]表中各元素的值可通过48#系统调用signal(sig,func)预制,其处理程序是ssig()NSIG=20:0-19sig:信号类型号,保存在u-arg[0]func:对该信号的处理方式,保存在u-arg[1]对于信号SIGKIL/终止进程,func不能设置软中断处理入口表u-signal[NSIG]根据表项中元素不5信号处理方式预制程序ssig(){registera;a=u.u-arg[0];/*取参数sigif(a<=0||a>=NISG||a==SIGKIL){u.u-error=EINVAL;/*非法参数return}u.u-ar0[R0]=u.u-signal[a]/*保存原先处理方式u.u-signal[a]=u.u-arg[1];if(u.u-procp→p-sig==a)/*如果以前已经收到该信号u.u-procp→p-sig=0;/*处理方式已改变,去除原收到信号}信号处理方式预制程序ssig()6signal(sig,func)用户通过该系统调用实现预制例如:signal(2,1);将u-signal[2]设置为1/奇数实现不理会2号类型软中断的设置

signal(sig,func)用户通过该系统调用实现预制7信号产生的5种情况陷入处理子程序trap中,用户态下产生各种故障,除电源失败等外,按照类型转换成信号进程间通过37#系统调用kill(pid,sig)进展信号传送用户在终端输入“DELETE〞等,终端中断处理程序将信号SIGINT/2等发送到与终端有关的所有进程进程使用管道pipe通信,发现读通道已经关闭,那么向本进程发送SIGPIPE/13信号父进程对接收到一个信号的子进程跟踪处理时,可用跟踪命令箱子进程发送一个信号信号产生的5种情况陷入处理子程序trap中,用户态下产生各种8PDP-11内存管理机构UnixS5思想:分页,支持内存、外存之间的进程对换支持请求调页的存储管理PDP-11内存管理机构UnixS5思想:9PDP-11虚地址字字长16位,每个进程的最大程序地址空间216=64KBCPU总线寻址能力18位/256KB。其中:最高8KB固定为I/O页,所以内存最大容量为248KB程序16位地址称为虚地址,64KB分成8页,8KB/页每页划分为128个字符块,64B/块由于程序可以小于64KB,有些页可能局部/完全空白空白局部留作扩展使用系统按照实际使用页长分配内存PDP-11虚地址字字长16位,每个进程的最大程序地址空间210虚地址字划分构造1514131211109876543210APFActivepagefield0-7页BNBlocknumber0-127块DIBDisplacementinblock0-63B虚地址字划分构造151413121110987654321011内存管理存放器(1)PDP-11设置了2组32位活动页存放器APR,8个/组,分别保存进程核心态/用户态下内存使用情况32位APR可分为2个16位的存放器,分别为页地址存放器PAR(pageaddressregister)页说明存放器PDR(pagedescriptionregister)页地址存放器PARPAF:表示虚地址空间中相应页在内存地址,单位是内存字符块寻址范围:0-(212-1)*64,即0-(256K-64)字节PAF0111512内存管理存放器(1)PDP-11设置了2组32位活动页存放器12内存管理存放器(2)页说明存放器PDR/上图存取控制字段ACF(accesscontrolfield):说明对该页的存取控制权限00:不驻在内存01:readonly10:未用11:R/W扩展方向位:ED(extend)如果某页实际使用小于128块(8KB),那么ED说明空白局部在高/低地址一侧,即扩展时的扩展方向。ED=0:高地址一侧;ED=1:低地址一侧例如:Unix系统中,共享代码段/数据段:ED=0;栈段:ED=1PLF/pagelengthfieldWEDACF0123681415内存管理存放器(2)页说明存放器PDR/上图PLF/pag13内存管理存放器(3)存取信息位W-修改位W=1,表示修改正页长字段PLF:说明虚页的实际使用长度,1~128块如果ED=0/向高地址方向扩展:那么PLF=实际使用长度-1;例如:实际使用长度为128,那么PLF=127如果ED=1:那么PLF=128-实际使用长度;例如:实际使用长度为128,那么PLF=0用补码表示实际使用长度PLF值表示在相应扩展方向上该虚页实际使用的最末块块号,便于越界检查内存管理存放器(3)存取信息位W-修改位14虚地址到物理地址转换总线寻址能力为18位,形成256KB的物理地址1514131211109876543210APFBNDIBPAF物理块号DIB05617011+找对应页的PAR虚地址到物理地址转换总线寻址能力为18位,形成256KB的物15Unix存储管理PDP-11进程可访问的地址空间为64KB进程在核心态下的虚拟地址空间(图1左)Unix核心代码长度不超过48KB/6页,占0-5页进程在用户态下的虚拟地址空间(图2右/举例)Unix代码现运行进程ppdaI/O页0-5页6页7页共享正文段2.5页数据段2.25页栈段0.5页Unix存储管理PDP-11进程可访问的地址空间为64KB现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[]虚/实地址映照Unix分别用KISA(0-7)和KISD(017用户态虚/实地址映照以前面幻灯片图2数字为例tata+128ta+256dada+128da+256未用da+224128RO128RO64RO128RW128RW32RW0064RW/EDUISAUISDta是进程共享正文段在内存的起始地址da是进程数据段在内存的起始地址:da=p-addr+16内存空间tappda/16块栈段0.5页daP-addrda+352用户态虚/实地址映照以前面幻灯片图2数字为例tata+12818虚/实地址映照UISA/UISD只有一组,保存当前运行进程页表表目;其他进程页表表目保存在user[](u-uisa/u-uisd[16])u-uisd内容与UISD完全一样;而u-uisa内容那么略有区别,它是假设ta、p-addr皆为0而构造的。见右u-uisa/u-uisd由estabur()创立u-uisa/u-uisd->UISA/UISD由sureg()完成01282561616+12816+256未用16+224u-uisa虚/实地址映照UISA/UISD只有一组,保存当前运行进程页19存储资源管理表可用存储区表Unix对内存、盘交换区存储资源分配和释放使用同一算法设置2个数组表示内存/盘交换区可用存储区情况intcoremap[CMAPSIZ]intswapmap[SWAPSIZ]2个数组一般皆为100个元素,每2个元素构成一个表目项,共各有50个表目项,每个表目项描述:Structmap{char*m-size;/*空闲区长度char*m-addr;/*空闲区起址};各空闲区按起始地址从高到低顺序登记在可用存储区表中,m-size为0的表项为空白表目,集中在表的后部存储资源管理表可用存储区表20存储资源管理存储分配:firstfit/malloc(mp,size)mp:coremap/swapmap存储释放:mfree(mp,size,释放区起址)存储资源管理存储分配:firstfit/malloc(mp21存储保护虚/实映射机构根本上使各进程相互隔离,到达保护各进程占用独立的存储区,且不会重叠进程在核心态、用户态下运行使用不同的管理存放器,且用户进程无权修改存放器值,不可能破坏操作系统核心态进程可使用系统提供的特权指令mtpi、mfpi(向当前运行状态存储空间存、取指令信息)对现行运行进程的用户态空间进展操作通过KISD/UISD中页长字段PLF,以及存取控制权限ACF,可以限定进程的访问长度和访问方式存储保护虚/实映射机构根本上使各进程相互隔离,到达保22《UNIX内核分析》幻灯片本课件PPT仅供大家学习使用学习完请自行删除,谢谢!本课件PPT仅供大家学习使用学习完请自行删除,谢谢!《UNIX内核分析》幻灯片本课件PPT仅供大家学习使23软中断(1)软中断是Unix系统提供的进程间通讯的一个机构,进程间可以利用其发送少量信息,并作适当处理;同组之间可以通过37#系统调用kill相互发送软中断信号S5提供了19种软中断信号,13个具有标准名字的约定,终端类型号0解释为“没有中断〞相关构造:p-sig:进程接收的信号类型数u-signal[NSIG]:软中断处理程序入口表,20个元素软中断(1)软中断是Unix系统提供的进程间通讯的一个机构,24软中断(2)发送软中断信号,按信号类型设置p-sig的某一位;如果承受进程睡眠在可被中断的优先级上,那么唤醒当一个进程从核心态返回用户态,或者进入/离开低优先级睡眠时,核心态检查其是否收到软中断信号;而仅当进程从核心态返回用户态时,核心才处理软中断进程在核心态运行时,软中断不会立即起作用软中断(2)发送软中断信号,按信号类型设置p-sig的某一位25psignal(p,sig)将信号sig发给指定进程;PZERO∈param.h,为25Registersig;registerstructproc*p;{sig--if(sig<||sig>=NSIG)return;p→p-sig|1L<<sig/*按照sig类型,设置p-sig某一位if(p→p-stat==SSLEEP&&p→p-pri>PZERO)/*p在可被中断优先级睡眠setrun(p);}/*运行指定进程,或调入/必要时Issig();测试软中断信号,假设收到不可忽略信号,返回真;否那么,返回假。psignal(p,sig)将信号sig发给指定进程;PZE26软中断处理入口表u-signal[NSIG]根据表项中元素不同值,有三种信号处理方式值为0:处理方式为终止本进程;值为奇数:对该信号不作处理;值为非零偶数:表示信号处理程序入口地址。u-signal[NSIG]表中各元素的值可通过48#系统调用signal(sig,func)预制,其处理程序是ssig()NSIG=20:0-19sig:信号类型号,保存在u-arg[0]func:对该信号的处理方式,保存在u-arg[1]对于信号SIGKIL/终止进程,func不能设置软中断处理入口表u-signal[NSIG]根据表项中元素不27信号处理方式预制程序ssig(){registera;a=u.u-arg[0];/*取参数sigif(a<=0||a>=NISG||a==SIGKIL){u.u-error=EINVAL;/*非法参数return}u.u-ar0[R0]=u.u-signal[a]/*保存原先处理方式u.u-signal[a]=u.u-arg[1];if(u.u-procp→p-sig==a)/*如果以前已经收到该信号u.u-procp→p-sig=0;/*处理方式已改变,去除原收到信号}信号处理方式预制程序ssig()28signal(sig,func)用户通过该系统调用实现预制例如:signal(2,1);将u-signal[2]设置为1/奇数实现不理会2号类型软中断的设置

signal(sig,func)用户通过该系统调用实现预制29信号产生的5种情况陷入处理子程序trap中,用户态下产生各种故障,除电源失败等外,按照类型转换成信号进程间通过37#系统调用kill(pid,sig)进展信号传送用户在终端输入“DELETE〞等,终端中断处理程序将信号SIGINT/2等发送到与终端有关的所有进程进程使用管道pipe通信,发现读通道已经关闭,那么向本进程发送SIGPIPE/13信号父进程对接收到一个信号的子进程跟踪处理时,可用跟踪命令箱子进程发送一个信号信号产生的5种情况陷入处理子程序trap中,用户态下产生各种30PDP-11内存管理机构UnixS5思想:分页,支持内存、外存之间的进程对换支持请求调页的存储管理PDP-11内存管理机构UnixS5思想:31PDP-11虚地址字字长16位,每个进程的最大程序地址空间216=64KBCPU总线寻址能力18位/256KB。其中:最高8KB固定为I/O页,所以内存最大容量为248KB程序16位地址称为虚地址,64KB分成8页,8KB/页每页划分为128个字符块,64B/块由于程序可以小于64KB,有些页可能局部/完全空白空白局部留作扩展使用系统按照实际使用页长分配内存PDP-11虚地址字字长16位,每个进程的最大程序地址空间232虚地址字划分构造1514131211109876543210APFActivepagefield0-7页BNBlocknumber0-127块DIBDisplacementinblock0-63B虚地址字划分构造151413121110987654321033内存管理存放器(1)PDP-11设置了2组32位活动页存放器APR,8个/组,分别保存进程核心态/用户态下内存使用情况32位APR可分为2个16位的存放器,分别为页地址存放器PAR(pageaddressregister)页说明存放器PDR(pagedescriptionregister)页地址存放器PARPAF:表示虚地址空间中相应页在内存地址,单位是内存字符块寻址范围:0-(212-1)*64,即0-(256K-64)字节PAF0111512内存管理存放器(1)PDP-11设置了2组32位活动页存放器34内存管理存放器(2)页说明存放器PDR/上图存取控制字段ACF(accesscontrolfield):说明对该页的存取控制权限00:不驻在内存01:readonly10:未用11:R/W扩展方向位:ED(extend)如果某页实际使用小于128块(8KB),那么ED说明空白局部在高/低地址一侧,即扩展时的扩展方向。ED=0:高地址一侧;ED=1:低地址一侧例如:Unix系统中,共享代码段/数据段:ED=0;栈段:ED=1PLF/pagelengthfieldWEDACF0123681415内存管理存放器(2)页说明存放器PDR/上图PLF/pag35内存管理存放器(3)存取信息位W-修改位W=1,表示修改正页长字段PLF:说明虚页的实际使用长度,1~128块如果ED=0/向高地址方向扩展:那么PLF=实际使用长度-1;例如:实际使用长度为128,那么PLF=127如果ED=1:那么PLF=128-实际使用长度;例如:实际使用长度为128,那么PLF=0用补码表示实际使用长度PLF值表示在相应扩展方向上该虚页实际使用的最末块块号,便于越界检查内存管理存放器(3)存取信息位W-修改位36虚地址到物理地址转换总线寻址能力为18位,形成256KB的物理地址1514131211109876543210APFBNDIBPAF物理块号DIB05617011+找对应页的PAR虚地址到物理地址转换总线寻址能力为18位,形成256KB的物37Unix存储管理PDP-11进程可访问的地址空间为64KB进程在核心态下的虚拟地址空间(图1左)Unix核心代码长度不超过48KB/6页,占0-5页进程在用户态下的虚拟地址空间(图2右/举例)Unix代码现运行进程ppdaI/O页0-5页6页7页共享正文段2.5页数据段2.25页栈段0.5页Unix存储管理PDP-11进程可访问的地址空间为64KB现38虚/实地址映照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[]虚/实地址映照Unix分别用KISA(0-7)和KISD(039用户态虚/实地址映照以前面幻灯片图2数字为例tata+128ta+256dada+128da+256未用da+224128RO128RO64RO128RW128RW32RW0064RW/EDUISAUISDta是进程共享正文段在内存的起始地址da是进程数据段在内存的起始地址:da=p-addr+16内存空间tappda/16块栈段0.5页da

温馨提示

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

评论

0/150

提交评论