欢迎来到装配图网! | 帮助中心 装配图网zhuangpeitu.com!
装配图网
ImageVerifierCode 换一换
首页 装配图网 > 资源分类 > PPT文档下载
 

《UNIX内核分析》课件

  • 资源ID:21560767       资源大小:342.81KB        全文页数:50页
  • 资源格式: PPT        下载积分:9.9积分
快捷下载 游客一键下载
会员登录下载
微信登录下载
三方登录下载: 微信开放平台登录 支付宝登录   QQ登录   微博登录  
二维码
微信扫一扫登录
下载资源需要9.9积分
邮箱/手机:
温馨提示:
用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
支付方式: 支付宝    微信支付   
验证码:   换一换

 
账号:
密码:
验证码:   换一换
  忘记密码?
    
友情提示
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

《UNIX内核分析》课件

参 考 教 材 :UNIX操 作 系 统 教 程 尤 晋 元西 安 电 子 科 技 大 学 出 版 社 前 序 UNIX系统1969年诞生,以其特有的简洁性和开放性获得赞同与青睐,已经被移植到数十种硬件平台上。 UNIX系统已远远超出一个OS软件所起的作用,它在方方面面潜移默化地影响着人们对软件的设计和开发,其蕴含的设计思想至今仍然是十分值得借鉴的。 n已有技术的精选、提炼和发展,简洁实用,短小精悍,功能强大n具有分层、可装卸的文件卷系统n任何一个程序可不加改变地在前台/后台异步运行n将文件、目录和设备均统一看作文件n提供I/O缓冲技术n提供功能完备、使用灵活的命令语言n丰富的核外系统程序 n采用高级语言编写,可移植性好 进程控制子系统进程通信调 度存储管理文 件 子 系 统高速缓存字符设备块设备设备驱动程序系统调用接口硬件控制库函数用户程序核心级用户级 以UNIX V6为例,其内核源程序约一万行,按编译方式大致分3类44个文件:n.c文件:28个文件,190个可单独编译的子程序n.h文件:全局变量,14个文件n.s文件:汇编程序文件,约1000条,2个文件33个子程序 n PDP-11程序状态字组成当前态以前态优先级/8级T N Z V Cn进程分Kernel/User 2种运行状态,区别n进程处于不同地址空间:核心态/用户态空间n可否执行特权指令n使用不同的栈顶指针寄存器r6 n通用寄存器 PDP-11/40有9个通用寄存器,长度16位,编号r0-r7n r0-r1:I/O参数传递n r2-r4:存放过程执行时的局部变量n r5:环境指针n r6:堆栈指针,kernel/user态各1个n r7:PC n进程是映像的执行n映像是计算机的执行环境,一个映像包括n存储映像n通用寄存器的值n打开文件的状态n当前目录n其他信息 n进程映像中最为关键的部分是存储映像。n存储映像由5部分组成:n进程控制块PCBn共享正文段n数据段n共享内存段n工作区 进 程 控 制 块 PCBn Unix为了节省PCB所占主存,PCB分为2部分n常驻内存部分:Proc结构。包含进程调度必须的信息;n非常驻内存部分: User结构。包含进程运行时才要用到的更多其他信息,它随用户程序和数据部分换进/换出主存。 User区的字段只能由正在运行的进程存取。即只有占用CPU的进程才能访问属于当前进程的私有User区。n整个系统有一个进程表,称为Proc数组。Unix系统最多有50个进程; n每个进程有专用的User区,但核心根据进程页表,通过地址映射机构,可访问当前进程的User区。(好像系统中仅有一个User区) 共 享 正 文 段n是指可由多个进程共享的区域,包括n纯代码形式的程序n参数n一个进程的正文段也可以不存在 数 据 段n指进程执行时用到的数据,包括n外部变量n静态局部变量n常数n如果进程执行的程序为非共享的,也可以构成数据段的一部分,可被用户态进程读、写、执行 工 作 区n进程的用户栈和核心栈分别为进程用户态和核心态下运行的工作区n用于函数调用时的常数传递,现场保留,返回地址保存,局部变量存储等 进 程 映 像 在 存 储 器 中 的 分 布n PDP-11/40最多配置248K内存,进程映像分为常驻/非常驻内存部分n常驻部分:Proc,共享正文段的控制信息块n非常驻部分:数据段,共享正文段,工作区。n Unix将除了共享正文段以外的其他部分作为一个整体处理,(结构见下页) n无论在主存还是在盘交换区,该部分占用连续存储区n作为整体入/出主存n Unix设置text数组(共40个元素)管理所有可共享正文段,表目内容主要有:共享正文段外存地址,段长度,共享该段的进程数等 非 常 驻 部 分 的 分 布 结 构 n ppda区只有核心态进程可以访问User结构系统栈区用户程序/数据段用户栈区底 部 /02891024顶 部进程数据区/ppdaPer Process Data Area 进 程 的 数 据 结 构 Struct proc (主要部分) int p-pid; /*唯一标识一个进程的整数:0 215-1 int p-ppid; /*父进程标识数 char p-uid; /*用户标识符UID,由高级用户分配 char p-stat; /*进程当前状态 char p-flag; /*表示进程映像是否在主存/盘交换区 char p-pri; /*-100+127。值越小,优先权越高 char p-time; /*调度驻留时间:进程映像最近一次入/出主存后的时间 char p-cpu /*CPU使用情况 char p-nice; /*偏置值:计算进程优先权时使用,可由用户设置 char p-sig; /*进程接收的信号类型数:0 19,0 13系统定义 int p-addr; /*ppda区的起址(单位是字符块数):内存64B/块,外存512B/块 int p-size; /*除共享正文段外,可交换映像长度 int p-wchan; /*睡眠原因:原因消失,则唤醒 int p-textp; /*指向text结构的指针 procNproc ; /* Nproc是系统可容纳的最大进程数/50 进 程 的 数 据 结 构 n每个进程User结构的虚拟起始地址都是u=14000。操作系统通过编译、链接给u变量赋值,其地址空间对应核心空间第7页,其物理地址可以映射到主存中各进程的user结构。n User结构含有当进程换出内存候不需要访问的所有数据 进 程 的 数 据 结 构 Struct user (主要部分) int u-rsav2; /*调度进程的正常保留区:r5,r6 int u-qsav2; /*中止系统调用的越级返回保留区 int u-ssav2; /*fork时恢复子进程运行的保留区 char u-segflg; /*I/O标志,0/1/2分别为:用户数据/系统/用户指令空间 char u-error; /*出错返回码 char u-uid; /*有效用户标识号 char u-gid; /*有效用户组标识号 char u-ruid /*实际用户标识号 char u-rgid; /*实际用户组标识号 int u-procp; /*指向本进程的proc结构指针 char *u-base; /*I/O基址,文件传输中表示主存地址,R/W-目标/信息源指针 char *u-count; /* I/O字节数 char *u-offset2; /*文件传输中表示文件内相对位移量(字节) char *u-cdir; /*当前目录项i节点指针 char u-dbufDIRSIZE; /*保留当前用到的文件路径名 char *u-dirp; /*当前目录文件名指针 进 程 的 数 据 结 构 Struct int u-ino /* i结点号 /*该结构保存一个文件目录项 char u-nameDIRSIZE; /*该文件路径名分量 u-dent; int *u-pdir; /*父目录项i结点指针 char u-uisa16; /*存放本进程用户空间地址寄存器内容 char u-uisd16; /*存放本进程用户空间说明寄存器内容 char u-ofileNOFILE; /*用户打开文件表,共15个表目 char u-arg5; /*用户传入的自变量 char u-tsize /*本进程正文段块数 char u-dsize; /*本进程数据段块数 int u-ssize; /*本进程堆栈段块数 char u-signalNSIG; /*软中断处理程序入口表,20个表目 char u-utime; /*进程用户态下运行时间 char u-stime; /*进程核心态下运行时间 char u-cutime; /*已中止子进程用户态下运行时间总和 char u-cstime; /*已中止子进程核心态下运行时间总和 char u-intflag; /*系统调用是否执行完成标志u; 进 程 的 数 据 结 构 Struct text int x-daddr; /*共享正文段在盘交换区的起始地址 int x-caddr; /*共享正文段在内存中的起始块号(*64=起始地址) int x-size; /*共享正文段长度 char x-count /*共享该正文段的进程数 char x-ccount; /*共享该正文段,且映像在内存的进程数 int *x-iptr; /*指向正文段所在文件的inode指针 textNTEXT; n一般NTEXT=40n如果有某正文段的共享进程映像在内存中,则该共享正文段一定在内存中 进 程 映 像 的 基 本 结 构 图p-addrp-sizep-textp x-daddrx-caddrx-iptr 共享正文段 user核心栈数据段用户栈ppdau-dsizeu-ssizeProc text file inode盘交换区P-size x-sizeProcn textm 进 程 的 状 态n进程在其生命周期的不同时刻有不同状态;同一时刻不同进程有不同状态n Unix系统中,进城的完整状态有9种。 (转换图见下一页) 创建状态 内存就绪 就绪且换出:新创建/原就绪进程,因内存紧张而换出 核心态执行 用户态执行 内存中睡眠:执行I/O操作进程,等待 睡眠且换出:内存紧张时,睡眠进程首先被换出 被剥夺状态:进程被调度程序剥夺了处理机后的状态 僵死状态:类似于中止状态 进 程 状 态 转 换 图被 剥 夺4 859 26 37 1内 存外 存盘 交 换 区 内 存 足内 存 不 足调 度exit 中 断 /返 回 中 断 返 回 返 回 用 户 态睡 眠 /唤 醒睡 眠 fork调 度调 度 唤 醒 被 剥夺 态 进 程 状 态 转 换 说 明n进程执行系统调用、I/O终端、时钟中断后,进入核心态运行。2种不同状态运行的主要差别:n进程访问的内存空间的对象受到限制。n核心态运行时,不允许被剥夺;而用户态运行可以被剥夺(核心态运行完成,欲返回用户态时可被剥夺);核心态运行时,可被高优先级核心态进程中断。n就绪与被剥夺(preempted)状态是等效的,他们在同一队列等待再次调度 n处于运行状态的进程包括:正在处理机上执行和就绪队列进程 进 程 上 下 文n进程上下文由三部分组成:n用户级上下文:正文,数据,堆栈,共享内存段n寄存器上下文: PC,PS,SP,r0,n系统级上下文:Proc,User,核心栈n上下文切换时,要保证内部数据的完整性和一致性。所以切换有严格的条件: n当进程是自己进入睡眠时n系统调用/中断完成返回用户态而被剥夺n以exit退出时Q:进程从用户态到核心态切换时,是否为上下文切换? 进 程 管 理 n Unix V6中进程的调度状态有6种,由p-stat描述。n 1 SSLEEP:高优先权睡眠状态n 2 SWAIT: 低优先权睡眠状态n 3 SRUN: 运行/可运行状态 n 4 SIDL: 创建子进程的中间状态n 5 SZOMB:进程终止时的中间状态n 6 SSTOP: 暂停/正被跟踪状态 进 程 管 理 n进程标志p-flag定义为:n #define SLOAD 01 映像在内存n #define SSYS 02 系统进程,应常驻内存n #define SLOCK 04 进程不能换出 n #define SSWAP 010 进程正被对换n #define STRC 020 进程正被跟踪n #define STWED 040 另一跟踪标志 进 程 管 理 n当前运行进程,特点:n P-stat 为SRUNn P-flag 包含SLOAD标志n KISA6,KISD6指向该进程ppda区 n可以在核心/用户态运行,所处存储区位置不同n就绪进程,特点:n P-stat 为SRUNn P-flag 可能包含SLOAD标志,也可能不包含n ppda区不是核心态第6页n运行-就绪通过系统进程swtch完成,所以转换首先一定是处于核心态 进 程 管 理n等待时间发生而停止运行的一种状态,特点:n P-stat 为SSLEEP或SWAIT,不参与竞争处理机n P-flag 可能包含SLOAD标志,也可能不包含n KISA6,KISD6不反映进程图像在内存的位置n睡眠原因:进程间同步与互斥引起 n使用互斥资源无法满足n同步等待I/O结束n同步等待出现处理对象,如0#进程/sched暂时没有处理对象n进程间的其他同步操作,sleep(),wait().n临界区互斥 进 程 管 理 n核心态下执行sleep进入睡眠状态n P-pri由系统按照睡眠原因设置,-100-+127n SSLEEP: P-pri0,低优先权睡眠n父子进程同步:40n等低速设备I/O:10-20n唤醒:wakeup程序完成,唤醒后P-pri127) p=127; if (pcurpri) runrun+; /*curpri:现行运行进程被调度占用处理机时的优先数 /*runrun:进程调度标志,为0表示不要求进行切换调度 ppp-pri=p; 进 程 调 度 算 法n P-nice反映进程具有的相对优先程度n 一般用户可设置范围:020;高级用户:-12820n 通过系统调用nice(priority)完成设置,代码: register n; n=u.uar0R0; /* u.uar0R0保存系统调用参数 if (n20) n=20; if (n0低优先权n主要工作:n设置欲睡眠进程的p-whan/原因,p-stat,p-pri,并调用swtch进行调度 n rpp-wchan=chan;n rpp-stat=SSLEEP/SWAIT;n rpp-pri=prin设置过程执行语句为临界区,执行前处理既优先级提高为6级(避免中断) 进 程 睡 眠 sleep()n说明n若进程欲进入低优先权睡眠,首先应检测是否收到不可忽略的信号p-flag。如果收到,先转去执行信号处理程序;n系统设置runrun标志,说明是否有在盘交换区的进程准备就绪而因内存不足无法进入。 n若runrun已经设置,则将低优先级睡眠进程入盘交换区,并调用sched. 睡 眠 唤 醒 wakeup()n wakeup(chan)唤醒因chan原因睡眠的进程,并将其状态置为SRUNn主要工作:搜索proc区,由setrun唤醒所有因chan睡眠的进程:p-wchan=0;p-stat=SRUNn说明:n系统设置runout标志,表示盘交换区无进程图像可入内存。若runout=1,则执行sched的0#进程睡眠,否则唤醒。 进 程 图 像 在 内 存 /盘 交 换 区 间 传 递n图像传递由0#进程调用sched完成n图像入内存算法:sched按照盘交换区中就绪进程p-time,从长到短逐个调入内存,直到全部调入,或者无足够内存n图像出内存算法:若调入进程因内存不足无法调入时,sched试图从内存调出一进程,然后再次执行调入操作。 调 出 算 法 考 虑 因 素n某些进程不应该被调出:n P-flag为SSYS和SLOCK的进程n优先调出:p-stat为SWAIT和SSTOP的进程。n若上述优先进程,则优先考虑:n p-stat为SSLEEP或SRUN中在内存驻留时间最长/p-time的进程。 n同时要求:内存被选中进程p-time2s 盘交换区欲入内存进程p-time3s 否则,不执行调出操作 进 程 的 创 建n Unix进程创建有2种方式n预置方式:系统初启时预置0 # , 0 #进程创建1 #进程,1 #进程又为每个终端生成一个子进程(p20、p21、p2m) n创建方式:由newproc/ fork创建(除0 #进程)n进程的树形结构P0P1P20 P2i P2mP30 P310 #图像传送和调度进程1 #终端管理进程P2i管理用户登记和执行shell 创 建 进 程 的 基 本 任 务 和 方 式n基本任务:n为新进程构造一个图像:proc, user,text,数据段,栈段 n新进程创建后即成为系统的一个调度单位n基本方式: n除了与进程状态、标识以及与时间有关的少数控制项外,子进程复制或共享父进程的图像n进程创建程序newproc的工作原理见下页 newproc的 工 作 原 理 (1)Newproc()为子进程分配空闲proc结构设置子进程proc结构:P-stat=SRUN;P-flag=SLOAD;P-time=0;P-pid=分配到的标识数;P-ppid=父进程标识数;P-size,p-uid,p-ttyp,p- nice,p-textp从父进程复制将打开共享正文段等访问计数+1将r5,r6存入u-rsav(savu(u.u-rsav)父进程u-procp指向新进程的proc结构按照p-size申请内存(malloc(coremap,n) newproc的 工 作 原 理 (2)成功?将父进程可调出部分图像复制到新分配内存,新子进程p-addr指向该区恢复父进程为现运行进程(u-procp恢复志向父进程proc) 返回将父进程p-stat设置为SIDL,防止被调出,并避免被调度子进程p-addr=父进程p-addr将r5,r6存入u-rsav将现运行进程/即新子进程图像的可调出部分入盘交换区,清SLOAD标志子进程p-flag增设SSWAP,父进程恢复为SRUN状态Y N

注意事项

本文(《UNIX内核分析》课件)为本站会员(san****019)主动上传,装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知装配图网(点击联系客服),我们立即给予删除!

温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

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

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


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