UNIXLinux操作系统内核结构课件.ppt

上传人(卖家):三亚风情 文档编号:3370626 上传时间:2022-08-24 格式:PPT 页数:197 大小:546.01KB
下载 相关 举报
UNIXLinux操作系统内核结构课件.ppt_第1页
第1页 / 共197页
UNIXLinux操作系统内核结构课件.ppt_第2页
第2页 / 共197页
UNIXLinux操作系统内核结构课件.ppt_第3页
第3页 / 共197页
UNIXLinux操作系统内核结构课件.ppt_第4页
第4页 / 共197页
UNIXLinux操作系统内核结构课件.ppt_第5页
第5页 / 共197页
点击查看更多>>
资源描述

1、2022年8月9日UNIX_LinuxUNIX_Linux操作系统内核结构操作系统内核结构电子科技大学信软学院电子科技大学信软学院教教 师师 介介 绍绍刘玓刘玓 教授教授大型主机教学团队主任大型主机教学团队主任大型主机与网络安全工程系主任大型主机与网络安全工程系主任Email:主要研究方向:操作系统、大型主机、网络应用主要研究方向:操作系统、大型主机、网络应用课课 程程 概概 述述一课程内容简介一课程内容简介 1、讲授范围、讲授范围 具体的技术系统及其算法和实现流程,而不是操作系统基本具体的技术系统及其算法和实现流程,而不是操作系统基本原理;原理;2、通用操作系统的现状和分类、通用操作系统的现

2、状和分类 DOS类类-结构简单、使用方便、效率低、安全性低结构简单、使用方便、效率低、安全性低 UNIX类类-运行高效、结构通用、安全可靠、适应能力强、运行高效、结构通用、安全可靠、适应能力强、系统较复杂系统较复杂 MVS类类-功能强大、处理能力巨大、系统复杂、较封闭功能强大、处理能力巨大、系统复杂、较封闭大巨型机大巨型机+z/OS小中型机小中型机+UNIX微型机微型机+Windows功能强大功能强大简单易用简单易用 3、根本特点、根本特点 分时多用户、开放性分时多用户、开放性 分时多用户:分时多用户:多个用户多个进程同时在一个系统中运行多个用户多个进程同时在一个系统中运行 系统资源高度共享、

3、有效协调系统资源高度共享、有效协调 开放性:开放性:标准化标准化 结构上的一致性结构上的一致性 可移植性可移植性 应用软件的编码及系统应用接口应用软件的编码及系统应用接口 可互操作性可互操作性 可保持用户原来的使用习惯可保持用户原来的使用习惯 异种机之间的互操作异种机之间的互操作 4、教学难点、教学难点 多用户多进程多用户多进程同步同步/互斥、数据一致性、访问安全性互斥、数据一致性、访问安全性 开放性开放性硬件依赖性、结构伸缩性、广泛适应性硬件依赖性、结构伸缩性、广泛适应性 二、教学目的二、教学目的1、了解主流操作系统的发展方向、了解主流操作系统的发展方向 低端操作系统低端操作系统 VS 高端

4、操作系统高端操作系统 2、掌握、掌握UNIX类操作系统的内部结构和主要算法类操作系统的内部结构和主要算法 文件、文件系统、进程、时钟、输入输出文件、文件系统、进程、时钟、输入输出 3、学习大型程序设计的方法和理念、学习大型程序设计的方法和理念 系统结构、功能流程、数据安全、思维模式系统结构、功能流程、数据安全、思维模式 4、奠定系统开发和应用开发的基础、奠定系统开发和应用开发的基础 功能选择、层次划分、应用系统模式的确定功能选择、层次划分、应用系统模式的确定三、教材三、教材 UNIX操作系统设计操作系统设计 (The Design of the UNIX Operating System)(美

5、)(美)Maurice J.Bach 著著 陈葆珏陈葆珏 王旭王旭 柳纯录柳纯录 冯雪山冯雪山 译译 机械工业出版社机械工业出版社 2005年年10月出版月出版四、考核说明四、考核说明 本课程为本课程为“考查考查”,请以选,请以选“考试考试”的同学进行更正。的同学进行更正。成绩构成:平时成绩成绩构成:平时成绩+期末报告期末报告第一章第一章 系统概貌系统概貌 1.1 发展状况发展状况1、发展历史及版本、发展历史及版本 v.0 1970年年 Ken Thompson 和和 Dennis Ritchie PDP-7 汇编语言汇编语言 UNICS v.1 1971年年 PDP-11 汇编语言汇编语言

6、UNIX v.2 1972年年 增加管道功能增加管道功能 v.5 1973年年 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

7、.3、3.5、4.0、4.2、4.3 现在最后版本为现在最后版本为 System V Release 4 (SVR4)2、主要分支和兼容版本、主要分支和兼容版本BSD 加州大学伯克利分校加州大学伯克利分校 XENIX/OpenServer Microsoft、SCO公司公司HP-UX HP公司公司AIX IBMSolaris SUN公司公司IRIX SGI公司公司Ultrix DEC公司公司Linux 开放源代码开放源代码3、基本功能特征、基本功能特征 交互式分时多用户交互式分时多用户人机间实时交互数据人机间实时交互数据多个用户可同时使用一台机器多个用户可同时使用一台机器每个用户可同时执行多个

8、任务每个用户可同时执行多个任务软件复用软件复用每个程序模块完成单一的功能每个程序模块完成单一的功能程序模块可按需任意组合程序模块可按需任意组合较高的系统和应用开发效率较高的系统和应用开发效率可移植性强可移植性强数千行汇编码数千行汇编码,数十万行数十万行C语言代码语言代码配置灵活配置灵活,适应性强适应性强小内核小内核,参数灵活可调参数灵活可调核外应用系统核外应用系统,任意裁减任意裁减限制规则很少限制规则很少界面方便高效界面方便高效内部内部:系统调用丰富高效系统调用丰富高效外部外部:shell命令灵活方便可编程命令灵活方便可编程应用应用:GUI 清晰直观功能强大清晰直观功能强大安全机制完善安全机制

9、完善口令、权限、加密等措施完善口令、权限、加密等措施完善抗病毒结构抗病毒结构误操作的局限和自动恢复功能误操作的局限和自动恢复功能 多国语言支持多国语言支持支持全世界现有的几十种主要语言支持全世界现有的几十种主要语言网络和资源共享网络和资源共享内部内部:多进程结构易于资源共享多进程结构易于资源共享外部外部:支持多种网络协议支持多种网络协议说明:说明:1、其它操作系统可能包含部分上述、其它操作系统可能包含部分上述UNIX的特征,但非全部的特征,但非全部(如(如NT就有部分多用户系统特征)就有部分多用户系统特征)2、这些特征有些是核心直接实现的,有些是由核心提供实现、这些特征有些是核心直接实现的,有

10、些是由核心提供实现这种特征的方便性和可能性,而由使用者来实现的。这种特征的方便性和可能性,而由使用者来实现的。1.2 系统结构系统结构 内核内核kernelshwhodatewcvigrepdatea.outlsapp_1app_2app_nUNIX操作系统的整体结构操作系统的整体结构系统调用(系统调用(system call)以函数形式提供给核外的命令和上层应用系统使用的一以函数形式提供给核外的命令和上层应用系统使用的一组程序,涵盖操作系统的所有功能。是应用程序请求操作组程序,涵盖操作系统的所有功能。是应用程序请求操作系统服务的唯一通道。系统服务的唯一通道。内核(内核(kernel)系统调用

11、的集合及实现系统调用的内部算法就形成操作系统调用的集合及实现系统调用的内部算法就形成操作系统核心系统核心 1.3 用户看法用户看法 进程和文件是进程和文件是UNIX操作系统中最基本的两个概念(抽象)操作系统中最基本的两个概念(抽象)进程:进程:所有处在运行期间的程序实例都是进程所有处在运行期间的程序实例都是进程 一个进程就是处在运行期间的一个程序实例一个进程就是处在运行期间的一个程序实例 涵盖所有的动态概念涵盖所有的动态概念文件:文件:所有静态的无形数据和有形硬件设备所有静态的无形数据和有形硬件设备 源程序、命令、图片、邮件、源程序、命令、图片、邮件、打印机、内存、磁盘等打印机、内存、磁盘等1

12、.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 save UNIX文件系统树示例文件系统树示例UNIX文件系统的特征文件系统的特征:1、树状层次结构、树状层次结构 树根、树枝、树叶、路径树根、树枝、树叶、路径2、对文件数据的一致对待、对文件数据的一致对待 文件为有序无格式的字节流,逻辑意义由使用者解释文件为有序无格式的字节流,逻辑意义由使用者解释3、文件管理、文件管理 建立、删除、修改、备份、移动、替换建立、删

13、除、修改、备份、移动、替换 存储空间的分配和释放存储空间的分配和释放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);fdold=open(argv1,O_RDONLY);if(fdold

14、=-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 处理环境处理环境 程序:可执行的文件程序:可执行的文件 文件头包括:文件头包括

15、:文件的文件的幻数幻数(magic number)编译器的版本号编译器的版本号 机器类型机器类型 数据段、正文段、工作变量的段大小数据段、正文段、工作变量的段大小 程序入口点程序入口点文件头文件头正文段正文段数据段数据段工作变量段工作变量段BSS(符号表、重定位信息等)(符号表、重定位信息等)进程:进程:程序的一次执行实例程序的一次执行实例 一个程序可同时有多个实例;系统中可同时有多个进程一个程序可同时有多个实例;系统中可同时有多个进程父进程:父进程:调用系统调用调用系统调用fork的进程的进程子进程:子进程:由系统调用由系统调用fork产生的新进程产生的新进程执行程序:执行程序:调用调用ex

16、ecl,用被执行程序的内容覆盖本进程地址空间用被执行程序的内容覆盖本进程地址空间 abc执行执行abcabcxyz用用xyzxyz覆盖覆盖abcabc执行执行xyzxyzxyz例子:例子:执行可运行文件执行可运行文件copy,其功能是拷贝文件,其运行格式为:,其功能是拷贝文件,其运行格式为:copy oldfile newfile另一个名为另一个名为cpfile的程序具体调用的程序具体调用copy,其源程序如下:,其源程序如下:main(int argc,char*argv)if(fork()=0)execl(“copy”,argv1,argv2,0);wait(int*)0);printf(

17、“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 /home/teacher tlist&1.3.3 构件原语构件原语 “软件复用软件复用”和

18、和“模块组装模块组装”理念理念 程序内部:程序内部:简单功能划分;纯代码设计简单功能划分;纯代码设计 程序外部:程序外部:使用构件原语进行功能重叠和组装使用构件原语进行功能重叠和组装 UNIX包含两种构件原语:包含两种构件原语:输入输出重定向输入输出重定向 管道管道I/O重定向(重定向(I/O redirect):):一个进程通常一个进程通常(default)打开三个文件:打开三个文件:标准输入文件(标准输入文件(fd=0)标准输出文件(标准输出文件(fd=1)标准错误输出文件(标准错误输出文件(fd=2)例如:例如:grep abc grep abc file1 grep abc file2

19、 grep abc file2 2 file3管道(管道(pipe):):A进程将标准输出重新定向到管道中去;进程将标准输出重新定向到管道中去;B进程将标准输入重新定向从管道中来。进程将标准输入重新定向从管道中来。例如:例如:ps -e|grep student3|wc -l 查看当前系统中与用户查看当前系统中与用户student3相关的进程有多少相关的进程有多少 A进程的输出进程的输出B进程的输入进程的输入 1.4 操作系统服务操作系统服务 UNIX操作系统提供五种主要的服务(也是操作系统提供五种主要的服务(也是UNIX核心的五个核心的五个重要组成部分):重要组成部分):1进程管理进程管理

20、建立、终止、挂起、通信等建立、终止、挂起、通信等 2时钟管理时钟管理 分时共享分时共享cpu,时间片,调度,时间片,调度 3存储管理存储管理 二级存贮器(内存和对换区),分配主存二级存贮器(内存和对换区),分配主存 4文件系统管理文件系统管理 二级存贮结构。分配和收回存贮区和索引节点二级存贮结构。分配和收回存贮区和索引节点 5设备管理设备管理 对对I/O设备进行有控制的存取(多进程系统的特征)设备进行有控制的存取(多进程系统的特征)内核提供的服务的特点:内核提供的服务的特点:服务是透明的服务是透明的 文件类型透明文件类型透明:用户可不关心是普通文件还是外部设备,但用户可不关心是普通文件还是外部

21、设备,但O.S自己自己要关心文件类型!要关心文件类型!文件系统的透明文件系统的透明:文件系统类型、存放的物理位置。文件系统类型、存放的物理位置。存贮方式透明存贮方式透明:文件的存放位置、存放方式、存放格式文件的存放位置、存放方式、存放格式 各用户进程能得到核心相同服务各用户进程能得到核心相同服务:无论系统程序还是用户程序,平等对待,分时运行无论系统程序还是用户程序,平等对待,分时运行 1.5 硬件假设硬件假设 (假设机器硬件只支持的运行状态)(假设机器硬件只支持的运行状态)UNIX系统上进程的执行分成两种状态:系统上进程的执行分成两种状态:用户态、用户态、核心态核心态 用户态:用户态:进程正在

22、执行用户代码时的状态进程正在执行用户代码时的状态 核心态:核心态:进程正在执行系统代码(系统调用)时的状态进程正在执行系统代码(系统调用)时的状态用户态和核心态的区别:用户态和核心态的区别:用户态用户态:进程只能存取自己的地址空间:进程只能存取自己的地址空间 核心态核心态:进程可存取核心和用户地址空间:进程可存取核心和用户地址空间 用户态用户态:不能存取特权指令,只能存取自己的指令和数据不能存取特权指令,只能存取自己的指令和数据 核心态核心态:除了能存取自己的指令和数据外,还可存取特权指令除了能存取自己的指令和数据外,还可存取特权指令 一个进程在运行时必须处在,而且只能处在或者核心态或一个进程

23、在运行时必须处在,而且只能处在或者核心态或者用户态下:者用户态下:核心态的进程不是与用户进程平行运行的孤立的进程集合,而核心态的进程不是与用户进程平行运行的孤立的进程集合,而是每个用户进程的一部分。是每个用户进程的一部分。“核心分配资源核心分配资源”:一个在核心状态下执行的进程分配资源。一个在核心状态下执行的进程分配资源。一个进程某时在一个进程某时在“用户态用户态”下运行,另一时刻又在下运行,另一时刻又在“核心态核心态”下运行,在其生命周期内可能在这两种状态间切换多次下运行,在其生命周期内可能在这两种状态间切换多次 用户态用户态核心态核心态0 1 2 3 4 5 timeA|B|C|D|A|核

24、心核心处在核心态下的进程的相应部分的集合处在核心态下的进程的相应部分的集合硬件是按核心态和用户态来执行操作的,但对这两种状态下正硬件是按核心态和用户态来执行操作的,但对这两种状态下正在执行程序的多个用户是相同对待的。在执行程序的多个用户是相同对待的。readwriteopenA 进程进程 B 进程进程 C 进程进程1.5.1 中断与例外中断与例外 中断(要保存上下文)中断(要保存上下文):来自来自进程之外进程之外的事件(外设、时钟等)引起的,发生在两条的事件(外设、时钟等)引起的,发生在两条指令执行之间,中断服务完毕后从下一条指令继续执行。指令执行之间,中断服务完毕后从下一条指令继续执行。(中

25、断服务是由核心中特殊的函数,而不是特殊的进程来执中断服务是由核心中特殊的函数,而不是特殊的进程来执行的行的)例外(不保存上下文)例外(不保存上下文):来自来自进程内部进程内部的的非期望非期望事件(地址越界,除数为事件(地址越界,除数为0等),发等),发生在一条指令执行过程中,例外事件处理完后重新执行该指生在一条指令执行过程中,例外事件处理完后重新执行该指令。令。1.5.2 处理机执行级处理机执行级 用一组特权指令给处理机设置一个执行级用一组特权指令给处理机设置一个执行级,以屏蔽同级和低,以屏蔽同级和低级的中断,最大限度地减少其它事件的干扰,使当前任务顺级的中断,最大限度地减少其它事件的干扰,使

26、当前任务顺利执行并尽快完成;但开放更高级的中断,以响应更紧迫的利执行并尽快完成;但开放更高级的中断,以响应更紧迫的请求。请求。中断事件中断事件中断级别中断级别硬件故障硬件故障高高低低时钟时钟硬盘硬盘网络网络终端终端软件中断软件中断1.5.3 存储管理存储管理 UNIX系统中的存储管理原则系统中的存储管理原则(或特点或特点):1当前正在执行的进程(全部或部分)驻留在主存中;当前正在执行的进程(全部或部分)驻留在主存中;2核心是永远驻留在主存中的(是永远活动的!);核心是永远驻留在主存中的(是永远活动的!);3编译程序产生的指令地址是虚地址(逻辑地址);编译程序产生的指令地址是虚地址(逻辑地址);

27、4程序运行时核心与硬件(存储管理部件程序运行时核心与硬件(存储管理部件MMU)一起建立)一起建立虚地址到物理地址的映射。虚地址到物理地址的映射。核心永远是活跃的核心永远是活跃的 普通进程具有特定的生命周期(除非人为设定为无限循环)普通进程具有特定的生命周期(除非人为设定为无限循环)readwriteopenclose核心代码段核心代码段A进程进程B进程进程openreadreadwrite映射映射只是用户进程中的核心态下运行的代码段常驻内存,而非整只是用户进程中的核心态下运行的代码段常驻内存,而非整个用户进程常驻内存。这些代码段是个用户进程常驻内存。这些代码段是“可再入段可再入段”(或(或纯代

28、纯代码段码段、可共享代码段可共享代码段),被各用户进程段共享,为提高运行),被各用户进程段共享,为提高运行速度,避免频烦访问磁盘,故常驻内存,这些代码段的集合速度,避免频烦访问磁盘,故常驻内存,这些代码段的集合就是就是OS的的内核内核。第二章第二章 核心导言核心导言 2.1 UNIX操作系统的体系结构操作系统的体系结构 “文件文件”和和“进程进程”是是UNIX系统的两个最基本实体和中系统的两个最基本实体和中心概念,心概念,UNIX系统的所有操作都是以这两者为基础的。整系统的所有操作都是以这两者为基础的。整个系统核心由以下五个部分组成:个系统核心由以下五个部分组成:文件系统:文件系统:文件管理和

29、存储空间管理(节点和空间管理)文件管理和存储空间管理(节点和空间管理)I/O设备管理:设备管理:核心核心缓冲缓冲块设备(随机存取设备)块设备(随机存取设备)核心核心原始设备(原始设备(raw设备,字符设备,裸设备)设备,字符设备,裸设备)进程控制:进程控制:进程的调度、同步和通讯进程的调度、同步和通讯 存贮管理:存贮管理:在主存与二级存储之间对程序进行搬迁在主存与二级存储之间对程序进行搬迁 时钟管理:时钟管理:把把cpu的时间分配给当前最高优先权的进程。的时间分配给当前最高优先权的进程。硬硬 件件硬硬 件件 控控 制制字符设备字符设备块设备块设备设备驱动程序设备驱动程序高速缓冲高速缓冲文件子系

30、统文件子系统系系 统统 调调 用用 界界 面面程程 序序 库库进程控制进程控制子系统子系统进程间通讯进程间通讯调度程序调度程序存储管理存储管理用户程序用户程序用户级核心级核心级硬件级陷入 2.2 系统概念系统概念2.2.1 文件系统概貌文件系统概貌 1索引节点(索引节点(index nodeinode)inode特征特征:文件的内部名称(或代号),方便机器操作;文件的内部名称(或代号),方便机器操作;每个文件都有一个且只有一个每个文件都有一个且只有一个inode与之对应;与之对应;inode存放文件的静态参数:存放地点、所有者、存放文件的静态参数:存放地点、所有者、文件类型、存取权限、文件大小

31、等;文件类型、存取权限、文件大小等;每个文件都可以有多个名字,但都映射到同一个每个文件都可以有多个名字,但都映射到同一个inode上;上;各各inode之间以之间以inode号相区别;号相区别;2链结(链结(link)对应命令名对应命令名 ln文件文件i节点节点abcxyz文件名文件名 一个文件可有多个名字,多个名字都对应同一个文件一个文件可有多个名字,多个名字都对应同一个文件i节节点,每个名字就是该文件节点的一个链结;点,每个名字就是该文件节点的一个链结;.一个普通文件的名字个数,就是该文件的链结数;一个普通文件的名字个数,就是该文件的链结数;每个链接名可以放在不同的目录下(同一个文件系统每

32、个链接名可以放在不同的目录下(同一个文件系统下);下);删除一个链接名时,文件链接数减一。如链接数不为零,删除一个链接名时,文件链接数减一。如链接数不为零,则文件(节点)仍然存在。则文件(节点)仍然存在。使用文件链结的目的:使用文件链结的目的:方便用户的使用习惯,如方便用户的使用习惯,如“列目录列目录”,可用,可用ls、dir、list、lc等;等;误删文件时可补救,又不多占空间。误删文件时可补救,又不多占空间。abc和和xyz具有具有相同的相同的i结点号;结点号;减少移植应用程序时,因使用指定位置的文件,而减少移植应用程序时,因使用指定位置的文件,而拷贝该文件到指定位置去的麻烦。拷贝该文件到

33、指定位置去的麻烦。3符号链结(符号链结(symbol link)对应命令名对应命令名 ln-s 文件文件i节点节点abcxyz文件名文件名 给文件的名字再取一个名字,而不是给文件节点再取一给文件的名字再取一个名字,而不是给文件节点再取一个名字。个名字。链接的是链接的是“符号符号”而不是文件,因此而不是文件,因此“符号符号”可以是不可以是不存在的文件,即无意义的字符串。存在的文件,即无意义的字符串。abc和和xyz具有不同的具有不同的inode号号,xyz的内容是它所指向的内容是它所指向的名字的字符串,大小是字符串长度为的名字的字符串,大小是字符串长度为3字节。字节。“普通链结普通链结”中各名字

34、必须在同一文件系统中,中各名字必须在同一文件系统中,“符号符号链结链结”可在不同的文件系统中。可在不同的文件系统中。4活动活动i节点表(索引节点表)节点表(索引节点表)inode表表 在内存中存放当前要使用的文件在内存中存放当前要使用的文件inode的表(或称的表(或称为活动为活动i节点表),表中的每一个表项对应节点表),表中的每一个表项对应一个当前一个当前正被使用的文件的状态信息正被使用的文件的状态信息。这样要使用(打开)。这样要使用(打开)同一个文件的进程不必再到盘上去寻找了,(共同一个文件的进程不必再到盘上去寻找了,(共享!)享!)5用户打开文件表(或称用户文件描述符表)用户打开文件表(

35、或称用户文件描述符表)在系统中每一个进程都有一个描述该进程的数据结在系统中每一个进程都有一个描述该进程的数据结构构user(类似于描述文件的(类似于描述文件的i节点),在节点),在user中有一中有一个数组,个数组,存放一组指针指向系统打开文件表中该进存放一组指针指向系统打开文件表中该进程打开的文件所对应的表项。程打开的文件所对应的表项。struct file *u_ofileNOFILE NOFILE 为每个进程最多可同时打开的文件数,这为每个进程最多可同时打开的文件数,这与系统中的进程数和内存大小以及交换区大小等有与系统中的进程数和内存大小以及交换区大小等有关系,一般为关系,一般为2010

36、0。这个这个u_ofile数组就是该进程的用户打开文件表。数组就是该进程的用户打开文件表。6系统打开文件表(系统打开文件表(file表)表)系统打开文件表主要存放被打开文件的读写指系统打开文件表主要存放被打开文件的读写指针针。因为一个进程在一个时间片内可能读写不完所因为一个进程在一个时间片内可能读写不完所需内容,需要在下一个时间片继续从上一个时间片需内容,需要在下一个时间片继续从上一个时间片结束时的读写位置开始读写,故在进程生存期间应结束时的读写位置开始读写,故在进程生存期间应保持一读写指针。保持一读写指针。此外此外file表中还存放被打开文件的表中还存放被打开文件的动态信息动态信息:如:如文

37、件状态、引用计数(文件状态、引用计数(当前使用该文件的进程数当前使用该文件的进程数)等。等。A进程进程B进程进程file表表活动活动inode表表用户打开文件表用户打开文件表系统打开文件表系统打开文件表活动活动i节点表节点表为什么要单独设立一个为什么要单独设立一个file表来存放读写指针呢?表来存放读写指针呢?由于可能有多个进程要共享一个被打开文件的由于可能有多个进程要共享一个被打开文件的inode,而每个进程的,而每个进程的读写指针都不相同读写指针都不相同,故不能,故不能放在放在inode表中。表中。另一方面,要使不同进程的打开文件指针(文另一方面,要使不同进程的打开文件指针(文件描述符)或

38、同一进程的不同打开文件指针能够件描述符)或同一进程的不同打开文件指针能够共共享一个打开文件指针享一个打开文件指针(协同操作),就不能把读写(协同操作),就不能把读写指针放进某一个进程的用户打开文件表中。指针放进某一个进程的用户打开文件表中。因此只能在用户打开文件表和活动因此只能在用户打开文件表和活动inode表之表之外再建立一个系统打开文件表(外再建立一个系统打开文件表(file表)来存放读写表)来存放读写指针。指针。UNIX操作系统中共享活动文件的方法操作系统中共享活动文件的方法:在内存中在内存中某个活动文件的副本只有一个某个活动文件的副本只有一个,不同,不同的进程采用不同的指针指向这文件的

39、副本。的进程采用不同的指针指向这文件的副本。由于任由于任一时刻只有一个进程在运行(微观上看),故该文一时刻只有一个进程在运行(微观上看),故该文件也只要求内存中有一个副本即可件也只要求内存中有一个副本即可,只是各个进程,只是各个进程有自己的读写指针而已。这是在有自己的读写指针而已。这是在UNIX系统中共享文系统中共享文件(包括用户文件和系统文件)的主要方法。对其件(包括用户文件和系统文件)的主要方法。对其它资源的共享采用的是与之相似的另外几种方法。它资源的共享采用的是与之相似的另外几种方法。2.2.2 进程进程相关概念:相关概念:映像映像 程序以及与程序以及与动态执行动态执行该程序有关的该程序

40、有关的各种信息的集合各种信息的集合(类似于历史档案类似于历史档案)。它包括存储器映象、通用寄存。它包括存储器映象、通用寄存器映像,地址映射空间、打开文件状态等。器映像,地址映射空间、打开文件状态等。进程进程 对映像的执行对映像的执行。对映像的执行也就是一个程序在虚。对映像的执行也就是一个程序在虚拟机上动态执行的过程。拟机上动态执行的过程。1.可执行文件的构成:可执行文件的构成:进程是可执行文件的一次执行实例,高级语言程进程是可执行文件的一次执行实例,高级语言程序经过编译或汇编语言程序经过汇编后所产生的、序经过编译或汇编语言程序经过汇编后所产生的、缺省名为缺省名为a.out的可执行文件的结构包括

41、图示四个的可执行文件的结构包括图示四个部分部分:文件头文件头正文段正文段数据标识段数据标识段其它信息段其它信息段文件头文件头 文件的幻数(文件的幻数(magic number)编译器的版本号编译器的版本号 机器类型机器类型 正文段、数据标识段、其它信息段的大小正文段、数据标识段、其它信息段的大小 程序入口点程序入口点正文段正文段 程序的功能代码程序的功能代码数据标识段数据标识段 标识未初始化的数据要占用的空间大小标识未初始化的数据要占用的空间大小其它信息段其它信息段 主要用于存放符号表主要用于存放符号表2.程序的执行程序的执行 一个进程在执行系统调用一个进程在执行系统调用exec时,把可执行文

42、件时,把可执行文件装入本进程的三个区域中:装入本进程的三个区域中:正文区正文区:对应可执行文件的正文段:对应可执行文件的正文段 数据区数据区:对应可执行文件的数据标识段:对应可执行文件的数据标识段 堆栈区堆栈区:新建立的进程工作区:新建立的进程工作区 堆栈主要用于堆栈主要用于传递参数,保护现场,存放返回地传递参数,保护现场,存放返回地址以及为局部动态变量址以及为局部动态变量提供存储区。提供存储区。进程在核心态下运行时的工作区为核心栈,在用进程在核心态下运行时的工作区为核心栈,在用户态下运行时的工作区为用户栈。核心栈和用户户态下运行时的工作区为用户栈。核心栈和用户栈不能交叉使用。栈不能交叉使用。

43、堆栈使用举例。有如下程序,在主程序中调用函数,并进行参堆栈使用举例。有如下程序,在主程序中调用函数,并进行参数传递:数传递:main(int argc,char*argv)char buf1024;int number;readfile(buf,number);readfile(char buffer,int line)char*pointer;int temp;空空栈栈栈顶指针栈顶指针栈底指针栈底指针低地址低地址高地址高地址用户栈用户栈进入主程序时的堆栈状况进入主程序时的堆栈状况栈顶指针栈顶指针栈底指针栈底指针低地址低地址高地址高地址调用调用main()时时argc,argv本程序返回地址本

44、程序返回地址栈底指针暂存处栈底指针暂存处buf,number栈顶指针栈顶指针栈底指针栈底指针低地址低地址高地址高地址调用调用readfile时时argc,argv本程序返回地址本程序返回地址栈底指针暂存处栈底指针暂存处buf,numberbuffer,linereadfile的返回地址的返回地址栈底指针暂存处栈底指针暂存处pointer,temp3.进程的标识进程的标识 进程由其进程标识号进程由其进程标识号PID来识别。来识别。0#进程进程 是由机器上电时是由机器上电时“手工手工”创建的,调用创建的,调用fork创建了创建了1#进程后,成为进程后,成为对换进程(对换进程(swap)。)。1#进

45、程进程 init进程进程,由它来创建系统初始化过程中所需的其,由它来创建系统初始化过程中所需的其它所有的进程。它所有的进程。父进程父进程 调用调用fork系统调用的进程系统调用的进程子进程子进程 由系统调用由系统调用fork产生的进程产生的进程除除0#进程外,其它所有进程都是另一个进程调用进程外,其它所有进程都是另一个进程调用fork后产生的。后产生的。4.进程状态及状态转换进程状态及状态转换运行状态运行状态 此时进程正在占用处理机,进程的此时进程正在占用处理机,进程的全部映像全部映像驻在内驻在内存中。存中。就绪状态就绪状态 此时进程基本具备了运行条件,正在等待使用处理此时进程基本具备了运行条

46、件,正在等待使用处理机。机。睡眠状态睡眠状态 进程不具备运行条件,需等待某种事件的发生,无进程不具备运行条件,需等待某种事件的发生,无法继续执行下去。法继续执行下去。运行运行睡眠睡眠就绪就绪调度调度调度调度睡眠睡眠唤醒唤醒中断中断5.在在UNIX环境下,进程有如下特征:环境下,进程有如下特征:每个进程在每个进程在核心进程表核心进程表(proc数组)都占有一数组)都占有一项,在其中保留相应的状态信息。项,在其中保留相应的状态信息。每个进程都有一个每个进程都有一个“每进程数据区(每进程数据区(per process data area-ppda)”保留相应进程更多保留相应进程更多的信息和核心栈;的

47、信息和核心栈;处理机的全部工作就是在某个时候执行某个进处理机的全部工作就是在某个时候执行某个进程程 一个进程可生成或消灭另一进程一个进程可生成或消灭另一进程 一个进程中可申请并占有资源一个进程中可申请并占有资源 一个进程只沿着一个特定的指令序列运行,不一个进程只沿着一个特定的指令序列运行,不会跳转到另一个进程的指令序列中去,也不能访问会跳转到另一个进程的指令序列中去,也不能访问别的进程的数据和堆栈。(抗病毒传播的重要原因别的进程的数据和堆栈。(抗病毒传播的重要原因之一)之一)第三章第三章 数据缓冲区高速缓冲数据缓冲区高速缓冲硬件缓存(硬件缓存(cache)由一种高速寄存器(由一种高速寄存器(r

48、egister)组成,主要解)组成,主要解决决CPU与与RAM之间的之间的速度差速度差问题。问题。数据缓冲区高速缓冲(数据缓冲区高速缓冲(buffer)由软件实现的解决由软件实现的解决文件系统和物理硬盘文件系统和物理硬盘之间的之间的数据同步数据同步的一种方法。的一种方法。数据缓冲区高速缓冲是数据缓冲区高速缓冲是UNIX特有的对数据特有的对数据并发访并发访问问的一种控制机制。的一种控制机制。问题的提出问题的提出:1、磁盘机械运行速度大大低于处理机的运行、磁盘机械运行速度大大低于处理机的运行速度;速度;2、多进程并发运行,少量的磁盘(通道)、多进程并发运行,少量的磁盘(通道)I/O成为瓶颈;成为瓶

49、颈;3、数据访问的随机性,磁盘忙闲不均、数据访问的随机性,磁盘忙闲不均解决办法解决办法:1、建立一个被称为数据缓冲区高速缓冲(简称高速缓冲)的内、建立一个被称为数据缓冲区高速缓冲(简称高速缓冲)的内部数据缓冲区池(部数据缓冲区池(buffer pool)来存放要用的数据;)来存放要用的数据;2、写数据时、写数据时 把数据尽量多地尽量长时间地保存在缓冲池中把数据尽量多地尽量长时间地保存在缓冲池中 延迟写延迟写出到磁盘上出到磁盘上 以备后续进程使用以备后续进程使用3、读数据时、读数据时 先在缓冲池中查找已有的数据先在缓冲池中查找已有的数据 如没有,再从磁盘读取,并保存在缓冲池中如没有,再从磁盘读取

50、,并保存在缓冲池中 事先预读数据到缓冲池中事先预读数据到缓冲池中3.1 缓冲区及缓冲区首部缓冲区及缓冲区首部 缓冲区池由若干个缓冲区组成,每一个缓冲区又由两部分缓冲区池由若干个缓冲区组成,每一个缓冲区又由两部分组成:一个实际存放数据的存储区和一个标识该缓冲区的组成:一个实际存放数据的存储区和一个标识该缓冲区的缓冲区首部。缓冲区首部。存存 储储 区区 因为缓冲区首部与数据因为缓冲区首部与数据存储区之间有一一对应的存储区之间有一一对应的关系,所以通常把两者统关系,所以通常把两者统称为缓冲区。称为缓冲区。缓冲区是缓冲区池中数缓冲区是缓冲区池中数据存储的基本单位。据存储的基本单位。缓冲区首部缓冲区首部

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

当前位置:首页 > 办公、行业 > 各类PPT课件(模板)
版权提示 | 免责声明

1,本文(UNIXLinux操作系统内核结构课件.ppt)为本站会员(三亚风情)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|