UNIXLinux操作系统内核结构.ppt
《UNIXLinux操作系统内核结构.ppt》由会员分享,可在线阅读,更多相关《UNIXLinux操作系统内核结构.ppt(197页珍藏版)》请在三一办公上搜索。
1、UNIX_Linux操作系统内核结构,电子科技大学信软学院,教 师 介 绍,刘玓 教授大型主机教学团队主任大型主机与网络安全工程系主任主要研究方向:操作系统、大型主机、网络应用,课 程 概 述一课程内容简介 1、讲授范围 具体的技术系统及其算法和实现流程,而不是操作系统基本原理;2、通用操作系统的现状和分类 DOS类-结构简单、使用方便、效率低、安全性低 UNIX类-运行高效、结构通用、安全可靠、适应能力强、系统较复杂 MVS类-功能强大、处理能力巨大、系统复杂、较封闭,大巨型机+z/OS,小中型机+UNIX,微型机+Windows,功能强大,简单易用,3、根本特点 分时多用户、开放性 分时多
2、用户:多个用户多个进程同时在一个系统中运行 系统资源高度共享、有效协调 开放性:标准化 结构上的一致性 可移植性 应用软件的编码及系统应用接口 可互操作性 可保持用户原来的使用习惯 异种机之间的互操作 4、教学难点 多用户多进程同步/互斥、数据一致性、访问安全性 开放性硬件依赖性、结构伸缩性、广泛适应性,二、教学目的 1、了解主流操作系统的发展方向 低端操作系统 VS 高端操作系统 2、掌握UNIX类操作系统的内部结构和主要算法 文件、文件系统、进程、时钟、输入输出 3、学习大型程序设计的方法和理念 系统结构、功能流程、数据安全、思维模式 4、奠定系统开发和应用开发的基础 功能选择、层次划分、
3、应用系统模式的确定,三、教材 UNIX操作系统设计(The Design of the UNIX Operating System)(美)Maurice J.Bach 著 陈葆珏 王旭 柳纯录 冯雪山 译 机械工业出版社 2005年10月出版四、考核说明 本课程为“考查”,请以选“考试”的同学进行更正。成绩构成:平时成绩+期末报告,第一章 系统概貌,1.1 发展状况1、发展历史及版本 v.0 1970年 Ken Thompson 和 Dennis Ritchie PDP-7 汇编语言 UNICS v.1 1971年 PDP-11 汇编语言 UNIX v.2 1972年 增加管道功能,v.5 1
4、973年 Dennis Ritchie B language-C language 重写UNIX 第一个高级语言OS v.6 1975年 对外发表UNIX 大学和科研单位应用 v.7 1978年 第一个商业版本 我国开始深入研究应用的最早版本 System III 1981年 完全转向为社会提供的商品软件,System V 1983年 系统功能稳定完善 公布号:1.0、2.0、2.3、3.5、4.0、4.2、4.3 现在最后版本为 System V Release 4(SVR4),2、主要分支和兼容版本BSD 加州大学伯克利分校 XENIX/OpenServer Microsoft、SCO公司
5、HP-UX HP公司AIX IBMSolaris SUN公司IRIX SGI公司Ultrix DEC公司Linux 开放源代码,3、基本功能特征 交互式分时多用户人机间实时交互数据多个用户可同时使用一台机器每个用户可同时执行多个任务软件复用每个程序模块完成单一的功能程序模块可按需任意组合较高的系统和应用开发效率可移植性强数千行汇编码,数十万行C语言代码,配置灵活,适应性强小内核,参数灵活可调核外应用系统,任意裁减限制规则很少界面方便高效内部:系统调用丰富高效外部:shell命令灵活方便可编程应用:GUI 清晰直观功能强大安全机制完善口令、权限、加密等措施完善抗病毒结构误操作的局限和自动恢复功能
6、,多国语言支持支持全世界现有的几十种主要语言网络和资源共享内部:多进程结构易于资源共享外部:支持多种网络协议说明:1、其它操作系统可能包含部分上述UNIX的特征,但非全部(如NT就有部分多用户系统特征)2、这些特征有些是核心直接实现的,有些是由核心提供实现这种特征的方便性和可能性,而由使用者来实现的。,1.2 系统结构,内核,kernel,sh,who,date,wc,vi,grep,date,a.out,ls,app_1,app_2,app_n,UNIX操作系统的整体结构,系统调用(system call)以函数形式提供给核外的命令和上层应用系统使用的一组程序,涵盖操作系统的所有功能。是应用
7、程序请求操作系统服务的唯一通道。内核(kernel)系统调用的集合及实现系统调用的内部算法就形成操作系统核心,1.3 用户看法 进程和文件是UNIX操作系统中最基本的两个概念(抽象)进程:所有处在运行期间的程序实例都是进程 一个进程就是处在运行期间的一个程序实例 涵盖所有的动态概念文件:所有静态的无形数据和有形硬件设备 源程序、命令、图片、邮件、打印机、内存、磁盘等,1.3.1 文件系统/bin usr etc home tmp dev who ls bin lib rc ttys st teach tty0 hd02 admin hwconf liu wang chen aa dir2 sa
8、ve UNIX文件系统树示例,UNIX文件系统的特征:1、树状层次结构 树根、树枝、树叶、路径2、对文件数据的一致对待 文件为有序无格式的字节流,逻辑意义由使用者解释3、文件管理 建立、删除、修改、备份、移动、替换 存储空间的分配和释放4、文件的访问和保护 索引节点(inode)、文件描述符(fd)用户分组、权限划分5、设备文件管理 统一各外部设备的访问模式,char buffer2048;main(int argc,char*argv)int fdold,fdnew;if(argc!=3)printf(“need 2 arguments for copy programn”);exit(1)
9、;fdold=open(argv1,O_RDONLY);if(fdold=-1)printf(“cannot open file%sn”,argv1);exit(1);fdnew=creat(argv2,0666);if(fdnew=-1)printf(“cannot create file%sn”,argv2);exit(1);copy(fdold,fdnew);exit(0);copy(int old,int new)int count;while(count=read(old,buffer,sizeof(buffer)0)write(new,buffer,count);,1.3.2 处理
10、环境 程序:可执行的文件 文件头包括:文件的幻数(magic number)编译器的版本号 机器类型 数据段、正文段、工作变量的段大小 程序入口点,文件头,正文段,数据段,工作变量段BSS(符号表、重定位信息等),进程:程序的一次执行实例 一个程序可同时有多个实例;系统中可同时有多个进程父进程:调用系统调用fork的进程子进程:由系统调用fork产生的新进程执行程序:调用execl,用被执行程序的内容覆盖本进程地址空间,abc,执行abc,xyz,用xyz覆盖abc,执行xyz,xyz,例子:执行可运行文件copy,其功能是拷贝文件,其运行格式为:copy oldfile newfile另一个
11、名为cpfile的程序具体调用copy,其源程序如下:main(int argc,char*argv)if(fork()=0)execl(“copy”,argv1,argv2,0);wait(int*)0);printf(“copy donen”);,在用户环境下,程序的执行通常由命令解释器shell来完成,标准的命令格式为:cmd-options arguments shell可识别的命令类型有:1、简单命令 cat file1 2、多条命令 who;date;ps 3、复合命令 ps e|grep student2(ls;cat file3;pwd)run_log 4、后台命令 ls lR
12、/home/teacher tlist&,1.3.3 构件原语“软件复用”和“模块组装”理念 程序内部:简单功能划分;纯代码设计 程序外部:使用构件原语进行功能重叠和组装 UNIX包含两种构件原语:输入输出重定向 管道,I/O重定向(I/O redirect):一个进程通常(default)打开三个文件:标准输入文件(fd=0)标准输出文件(fd=1)标准错误输出文件(fd=2)例如:grep abc grep abc file2 grep abc file2 2 file3,管道(pipe):A进程将标准输出重新定向到管道中去;B进程将标准输入重新定向从管道中来。例如:ps-e|grep s
13、tudent3|wc-l 查看当前系统中与用户student3相关的进程有多少,A进程的输出,B进程的输入,1.4 操作系统服务 UNIX操作系统提供五种主要的服务(也是UNIX核心的五个重要组成部分):1进程管理 建立、终止、挂起、通信等 2时钟管理 分时共享cpu,时间片,调度 3存储管理 二级存贮器(内存和对换区),分配主存 4文件系统管理 二级存贮结构。分配和收回存贮区和索引节点 5设备管理 对I/O设备进行有控制的存取(多进程系统的特征),内核提供的服务的特点:服务是透明的 文件类型透明:用户可不关心是普通文件还是外部设备,但O.S自己要关心文件类型!文件系统的透明:文件系统类型、存
14、放的物理位置。存贮方式透明:文件的存放位置、存放方式、存放格式 各用户进程能得到核心相同服务:无论系统程序还是用户程序,平等对待,分时运行,1.5 硬件假设(假设机器硬件只支持的运行状态)UNIX系统上进程的执行分成两种状态:用户态、核心态 用户态:进程正在执行用户代码时的状态 核心态:进程正在执行系统代码(系统调用)时的状态用户态和核心态的区别:用户态:进程只能存取自己的地址空间 核心态:进程可存取核心和用户地址空间 用户态:不能存取特权指令,只能存取自己的指令和数据 核心态:除了能存取自己的指令和数据外,还可存取特权指令,一个进程在运行时必须处在,而且只能处在或者核心态或者用户态下:核心态
15、的进程不是与用户进程平行运行的孤立的进程集合,而是每个用户进程的一部分。“核心分配资源”:一个在核心状态下执行的进程分配资源。一个进程某时在“用户态”下运行,另一时刻又在“核心态”下运行,在其生命周期内可能在这两种状态间切换多次,用户态,核心态,0 1 2 3 4 5 time,A|B|C|D|A|,核心处在核心态下的进程的相应部分的集合硬件是按核心态和用户态来执行操作的,但对这两种状态下正在执行程序的多个用户是相同对待的。,read,write,open,A 进程 B 进程 C 进程,1.5.1 中断与例外中断(要保存上下文):来自进程之外的事件(外设、时钟等)引起的,发生在两条指令执行之间
16、,中断服务完毕后从下一条指令继续执行。(中断服务是由核心中特殊的函数,而不是特殊的进程来执行的)例外(不保存上下文):来自进程内部的非期望事件(地址越界,除数为0等),发生在一条指令执行过程中,例外事件处理完后重新执行该指令。,1.5.2 处理机执行级 用一组特权指令给处理机设置一个执行级,以屏蔽同级和低级的中断,最大限度地减少其它事件的干扰,使当前任务顺利执行并尽快完成;但开放更高级的中断,以响应更紧迫的请求。,1.5.3 存储管理 UNIX系统中的存储管理原则(或特点):1当前正在执行的进程(全部或部分)驻留在主存中;2核心是永远驻留在主存中的(是永远活动的!);3编译程序产生的指令地址是
17、虚地址(逻辑地址);4程序运行时核心与硬件(存储管理部件MMU)一起建立虚地址到物理地址的映射。核心永远是活跃的 普通进程具有特定的生命周期(除非人为设定为无限循环),read,write,open,close,.,核心代码段,A进程,B进程,open,read,read,write,映射,映射,只是用户进程中的核心态下运行的代码段常驻内存,而非整个用户进程常驻内存。这些代码段是“可再入段”(或纯代码段、可共享代码段),被各用户进程段共享,为提高运行速度,避免频烦访问磁盘,故常驻内存,这些代码段的集合就是OS的内核。,第二章 核心导言,2.1 UNIX操作系统的体系结构“文件”和“进程”是UN
18、IX系统的两个最基本实体和中心概念,UNIX系统的所有操作都是以这两者为基础的。整个系统核心由以下五个部分组成:文件系统:文件管理和存储空间管理(节点和空间管理)I/O设备管理:核心缓冲块设备(随机存取设备)核心原始设备(raw设备,字符设备,裸设备)进程控制:进程的调度、同步和通讯 存贮管理:在主存与二级存储之间对程序进行搬迁 时钟管理:把cpu的时间分配给当前最高优先权的进程。,硬 件,硬 件 控 制,字符设备 块设备设备驱动程序,高速缓冲,文件子系统,系 统 调 用 界 面,程 序 库,进程控制子系统,进程间通讯,调度程序,存储管理,用户程序,用户级,核心级,核心级,硬件级,陷入,2.2
19、 系统概念2.2.1 文件系统概貌 1索引节点(index nodeinode)inode特征:文件的内部名称(或代号),方便机器操作;每个文件都有一个且只有一个inode与之对应;inode存放文件的静态参数:存放地点、所有者、文件类型、存取权限、文件大小等;每个文件都可以有多个名字,但都映射到同一个inode上;各inode之间以inode号相区别;,2链结(link)对应命令名 ln,文件i节点,abc,xyz,文件名,一个文件可有多个名字,多个名字都对应同一个文件i节点,每个名字就是该文件节点的一个链结;.一个普通文件的名字个数,就是该文件的链结数;每个链接名可以放在不同的目录下(同一
20、个文件系统下);删除一个链接名时,文件链接数减一。如链接数不为零,则文件(节点)仍然存在。,使用文件链结的目的:方便用户的使用习惯,如“列目录”,可用ls、dir、list、lc等;误删文件时可补救,又不多占空间。abc和xyz具有相同的i结点号;减少移植应用程序时,因使用指定位置的文件,而拷贝该文件到指定位置去的麻烦。,3符号链结(symbol link)对应命令名 ln-s,文件i节点,abc,xyz,文件名,给文件的名字再取一个名字,而不是给文件节点再取一个名字。链接的是“符号”而不是文件,因此“符号”可以是不存在的文件,即无意义的字符串。abc和xyz具有不同的inode号,xyz的内
21、容是它所指向的名字的字符串,大小是字符串长度为3字节。“普通链结”中各名字必须在同一文件系统中,“符号链结”可在不同的文件系统中。,4活动i节点表(索引节点表)inode表 在内存中存放当前要使用的文件inode的表(或称为活动i节点表),表中的每一个表项对应一个当前正被使用的文件的状态信息。这样要使用(打开)同一个文件的进程不必再到盘上去寻找了,(共享!),5用户打开文件表(或称用户文件描述符表)在系统中每一个进程都有一个描述该进程的数据结构user(类似于描述文件的i节点),在user中有一个数组,存放一组指针指向系统打开文件表中该进程打开的文件所对应的表项。struct file*u_o
22、fileNOFILE NOFILE 为每个进程最多可同时打开的文件数,这与系统中的进程数和内存大小以及交换区大小等有关系,一般为20100。这个u_ofile数组就是该进程的用户打开文件表。,6系统打开文件表(file表)系统打开文件表主要存放被打开文件的读写指针。因为一个进程在一个时间片内可能读写不完所需内容,需要在下一个时间片继续从上一个时间片结束时的读写位置开始读写,故在进程生存期间应保持一读写指针。此外file表中还存放被打开文件的动态信息:如文件状态、引用计数(当前使用该文件的进程数)等。,A进程,B进程,file表,活动inode表,用户打开文件表,系统打开文件表,活动i节点表,为
23、什么要单独设立一个file表来存放读写指针呢?由于可能有多个进程要共享一个被打开文件的inode,而每个进程的读写指针都不相同,故不能放在inode表中。另一方面,要使不同进程的打开文件指针(文件描述符)或同一进程的不同打开文件指针能够共享一个打开文件指针(协同操作),就不能把读写指针放进某一个进程的用户打开文件表中。因此只能在用户打开文件表和活动inode表之外再建立一个系统打开文件表(file表)来存放读写指针。,UNIX操作系统中共享活动文件的方法:在内存中某个活动文件的副本只有一个,不同的进程采用不同的指针指向这文件的副本。由于任一时刻只有一个进程在运行(微观上看),故该文件也只要求内
24、存中有一个副本即可,只是各个进程有自己的读写指针而已。这是在UNIX系统中共享文件(包括用户文件和系统文件)的主要方法。对其它资源的共享采用的是与之相似的另外几种方法。,2.2.2 进程相关概念:映像 程序以及与动态执行该程序有关的各种信息的集合(类似于历史档案)。它包括存储器映象、通用寄存器映像,地址映射空间、打开文件状态等。进程 对映像的执行。对映像的执行也就是一个程序在虚拟机上动态执行的过程。,可执行文件的构成:进程是可执行文件的一次执行实例,高级语言程序经过编译或汇编语言程序经过汇编后所产生的、缺省名为a.out的可执行文件的结构包括图示四个部分:,文件头,正文段,数据标识段,其它信息
25、段,文件头 文件的幻数(magic number)编译器的版本号 机器类型 正文段、数据标识段、其它信息段的大小 程序入口点正文段 程序的功能代码数据标识段 标识未初始化的数据要占用的空间大小其它信息段 主要用于存放符号表,程序的执行 一个进程在执行系统调用exec时,把可执行文件装入本进程的三个区域中:正文区:对应可执行文件的正文段 数据区:对应可执行文件的数据标识段 堆栈区:新建立的进程工作区 堆栈主要用于传递参数,保护现场,存放返回地址以及为局部动态变量提供存储区。进程在核心态下运行时的工作区为核心栈,在用户态下运行时的工作区为用户栈。核心栈和用户栈不能交叉使用。,堆栈使用举例。有如下程
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- UNIXLinux 操作系统 内核 结构
链接地址:https://www.31ppt.com/p-5451661.html