常见操作系统典型功能和实现方法的举例.ppt
操作系统原理与实践,主编 柯敏毅 李浩 中国水利水电出版社,第7章 常见操作系统典型功能和实现方法的举例,7.1 Windows NT进程、线程的特点7.2 UNIX进程管理7.3 UNIX进程通信与同步机制7.4 Windows NT文件系统7.5 UNIX文件系统索引结构介绍7.6 Linux文件系统7.7 UNIX NFS文件系统7.8 Windows NT存储管理的二级页表结构7.9 Linux系统的内存管理技术7.10 UNIX内存管理技术7.11 UNIX I/O设备管理7.12 Linux I/O设备管理,本章学习目标,UNIX的进程管理及调度,包括进程同步机制介绍UNIX文件的物理结构Linux操作系统文件名到文件分量的映射Windows NT、Linux及UNIX内存管理技术Linux及UNIX设备管理,返回本章首页,7.1 Windows NT进程、线程的特点,7.1.1 Windows NT进程、线程及对象之间的关系7.1.2 进程管理程序7.1.3 线程调度,返回本章首页,7.1.1 Windows NT进程、线程及对象之间的关系,Windows NT中的对象是用来表示资源的,而Windows NT的对象类是描述资源类型的。下面介绍Windows NT中实现的两种对象:(1)执行体对象。它是由执行体的核心态组件实现的对象。如进程、线程、事件等,这些对象能被Windows NT执行体创建和修改。(2)内核对象。它是由内核实现的一个更基本的对象集合。这些对象对用户进程和线程来说是不可见的,它们在Windows NT执行体内部创建和使用。内核对象提供了一些基本功能,许多执行体对象包含着一个或多个内核对象。,在Windows NT中,进程被定义为一个程序的动态调用。Windows NT中的进程由四部分组成:(1)一个可执行的程序:它定义了初始代码和数据。(2)一个私用地址空间:也就是进程的虚拟地址空间。(3)系统资源:如通信端口、信号量、文件等。(4)至少有一个执行线程。,Windows NT中的进程具有如下特点:(1)进程是作为对象来实现的。(2)Windows NT中的进程要求至少有一个执行线程。(3)Windows NT中的进程没有进程控制块PCB,进程的控制和管理信息存放在进程对象的对象体和局限于对象的对象表中。(4)Windows NT中的进程不是处理机调度的基本单位。(5)每当一个用户的应用程序启动时,相应的环境子系统进程调度执行体的进程管理程序为该用户程序建立一个进程,然后进程管理程序调度对象管理程序为该用户程序建立一个进程对象。(6)当系统初始启动时,系统为每个环境子系统都建立一个服务器进程。(7)Windows NT中进程管理程序不维护进程之间的父子关系及其它其他关系。(8)Windows NT中的进程和线程都含有同步机制。,进程和线程是构造Windows NT的两个活动部分,它们之间的关系归纳如下:(1)线程是进程的一个组成部分。每个Windows NT进程在创建时只有一个线程,需要时这个线程可以创建其它其他线程。(2)进程的多线程都在进程的地址空间活动。(3)资源是分给进程的,而不是分给线程的,并且系统还为分给进程的资源规定了配额。(4)调度的基本单位是线程。线程之间竞争处理机。真正在处理机上执行的是线程,线程在执行中需要资源时,系统从进程的配额中扣除并分配给它。(5)线程在执行过程中需要同步。在不同进程的线程间的同步要用消息传递机制,消息传递中要用到进程的资源端口(端口也是对象,端口中有消息队列)。所以,可以这样说,相互通信的是线程,线程使用的资源却是进程的。,返回本节,7.1.2 进程管理程序,Windows NT的进程管理程序的主要功能是:创建和终止进程和线程,挂起线程的执行,存储和检索进程和线程的信息。Windows NT中的环境子系统通过完成两个主要任务(一是模拟子系统的客户应用程序的运行环境;二是提供客户应用程序所要求的适应原环境的进程结构)来实现Windows NT支持多种操作系统运行环境的功能。,在Windows NT中进程和线程的创建过程如下:(1)客户进程用创建原语创建进程。(2)客户进程通过发送消息给相应的服务器进程(某环境子系统)。(3)服务器进程调用Windows NT执行体的进程管理程序为之创建一个Windows NT本机进程。在此过程中,进程管理程序调用Windows NT执行体的对象管理程序为该进程创建一个进程对象。(注意:Windows NT把进程创建视为对象创建)(4)进程创建后,进程管理程序返回一个句柄给进程对象。(5)环境子系统取得该句柄,生成客户应用程序所期望的适合本环境的返回值。(6)环境子系统调用Windows NT的进程管理程序为已创建的新进程创建一个线程。,返回本节,7.1.3 线程调度,在Windows NT中,一个线程在它的生命期中要经历以下6种状态。(1)就绪状态(2)备用状态(3)运行状态:(4)等待状态:(5)转换状态:(6)终止状态:,返回本节,7.2 UNIX进程管理,7.2.1 UNIX进程状态7.2.2 UNIX进程描述7.2.3 UNIX进程控制7.2.4 UNIX进程调度,返回本章首页,7.2.1 UNIX进程状态,返回本节,7.2.2 UNIX进程描述,在UNIX系统中,进程被赋予了以下特定的含义和特性:(1)一个进程是对一个程序的执行。(2)一个进程的存在意味着系统中存在着一个常驻内存的进程表项(proc结构),它包含着相应进程的控制信息。(3)对每一个进程,有一个被称为U区(user结构)的数据结构,这个结构中存放着该进程的私用控制信息。该结构只有在相应进程执行时才调入内存。(4)一个进程可以生成或撤销其子进程。(5)一个进程是获得和释放各种系统资源的基本单位。,(1)进程表项。记录了进程的状态和有关控制信息。它是常驻内存的控制信息。(2)U区。U区中的各域进一步刻画了进程的特性。它是在进程执行时才使用的控制信息,因此这些信息不必常驻内存。(3)系统区表。UNIX系统把一个进程的虚拟地址空间划分为若干连续的逻辑区,如正文区、数据区、栈区等。这些区是可以被共享和保护的独立体,多个进程可以共享一个区。为了对区进行有效的管理,UNIX系统在核心设置了一个系统区表(简称区表),各表项记录了描述活动区的有关信息。(4)本进程区表。UNIX系统为每个进程都配置了一张进程区表,以便记录进程的每个区在进程中的虚地址。,返回本节,7.2.3 UNIX进程控制,在UNIX系统中,进程既是一个独立拥有资源的基本单位,又是一个独立调度的基本单位。在UNIX系统中,除了0#进程之外,其它其他所有进程都是被另一个进程利用系统调用fork创建的。调用fork的进程称为父进程,fork创建的进程叫做子进程,从而构成进程的家族关系。0#进程是一个特殊的系统进程,它是在系统引导时被创建的。系统初启时,0#进程创建了1#进程,此后0#进程就变成了交换进程,而1#进程变成了系统的始祖进程。,返回本节,7.2.4 UNIX进程调度,返回本节,7.3 UNIX进程通信与同步机制,在早期版本的UNIX中,仅为进程的通信与同步提供了软中断信号和管道机制。(1)软中断信号。它是一种实现进程之间简单通信的设施,用于通知对方发生了异常事件。软中断是对硬件中断的一种模拟。发送软中断就是向接收进程的进程表项结构中的相应项发送一个软中断信号。接收进程在收到软中断信号后,将去执行一个软中断处理程序。但是软中断处理程序不像硬件中断处理程序那样收到中断信号后立即被启动,而是必须等待接收进程执行时才生效。(2)管道机制。管道是指能连接某些读进程和写进程的专门用于进程通信的共享文件(pipe文件),它允许读、写进程按先进先出的方式进行大批量的信息传送。也就是说,写进程从管道的一端向管道写入数据流,而读进程则从管道的另一端读出数据流。UNIX系统中的进程通信可分为4个部分:低级通信、管道通信、进程间通信和网络进程间通信。,返回本章首页,7.4 Windows NT文件系统,7.4.1 FAT文件分配表7.4.2 NTFS文件系统,返回本章首页,7.4.1 FAT文件分配表,FAT文件系统有如下特点:(1)支持长文件名。包括全路径位置,最多不超过255个字符的文件名。(2)不提供本地安全性。没有任何存取权限的限制,任何用户都可以操作整个硬盘中的内容和资料。(3)最大文件/分区大小为4GB。,7.4.2 NTFS文件系统,NTFS文件系统的特点:(1)支持长文件名称的操作。文件及文件夹(包括扩展名)名字最长为255个字符。(2)提供了C2的安全等级。NTFS允许向单个文件及文件夹指定权限,提供对服务器或个人计算机所需的安全性的支持。(3)支持比FAT文件系统更大的文件与分区,理论上两者均可达到16EB,而NTFS在典型硬件上实际最大分区可以达到2TB。(4)支持文件压缩。可以将文本性质的应用或数据文件压缩大约50%,将可执行文件压缩大约40%。(5)支持族的再映射。由硬盘扇区损坏而引起的读写错误,NTFS可将损坏扇区的数据写入其它其他未损坏的扇区,同时记录有坏扇区的族的地址,防止以后再使用它。(6)支持Macintosh文件。(7)支持POSIX需求。NTFS是Windows POSIX.1兼容支持的文件系统。,7.5 UNIX文件系统索引结构介绍,1UNIX系统的文件类型 2文件系统的目录结构 3文件的物理结构4文件逻辑块号到物理块号的转换,返回本章首页,1UNIX系统的文件类型,UNIX系统中的文件分为3种类型:(1)目录文件(2)普通文件(3)特殊文件,2文件系统的目录结构,正如前面所述,UNIX文件系统采用的是多级的树形目录结构。整个目录就像一棵倒挂的树,根目录在最上面。下面有树干树枝(目录、子目录),有树叶(文件)。特殊文件存放在一级子目录/dev中,其它其他所有各级目录中存放的全是普通文件和目录文件。,3文件的物理结构,(1)直接寻址方式。UNIX系统为了提高对文件的检索速度,在索引节点中建立了10个地址项用来直接存放该文件所在的盘块号。(2)一级间接寻址方式。UNIX系统还提供一级间接寻址方式。在这种寻址方式中,一级间接地址项中存放的不是文件所在的物理盘块号,而是先将1256个盘块号存放在一个磁盘块中,再将该文件所在的磁盘的块号存放在这一地址中。(3)多级间接寻址方式。UNIX系统为了进一步扩大寻址范围,还引入了二级间接寻址方式和三级间接寻址方式。,4文件逻辑块号到物理块号的转换,根据逻辑盘块号可以求出对应的文件地址是直接地址还是间接地址,然后针对不同的地址采用不同的方法进行转换。(1)直接地址。当文件逻辑盘块号小于10时,将其逻辑盘块号转换为物理块号的方法是将文件逻辑块号转换为索引节点的地址项下标,从该下标指示的地址项中可直接获得该文件的物理盘块号。(2)间接地址。一级间接地址寻址。当文件逻辑盘块号大于或等于10且小于266(256+10)时,将其逻辑块号转换成物理块号的方法是:从索引节点的一级间接项中得到的是一级间接的盘块号,根据该间接块的内容计算一级间接块中的地址下标,即将文件的逻辑块号减10,从相应下标的地址项中得到物理块号。多级间接地址寻址。当文件的逻辑盘块号大于或等于266且小于65802(256*265+266)时,应采用二级间接地址寻址;当文件的逻辑盘块号大于或等于65802时,应采用三级间接地址寻址。,【例1】假定一个索引节点为128字节,指针为4字节长,而状态信息占用68个字节,每块的大小为8KB。问:(1)在索引节点中有多大的空间给指针?(2)使用直接指针、一级间接指针、二级间接指针和三级间接指针分别可以表示多大的文件?,【例2】假定盘块的大小为1KB,每个盘块号占4个字节,文件索引节点中的磁盘地址如图7.5所示,如何将下列文件的字节偏移地址转换为物理地址。(1)8112;(2)14000;(3)350000。,返回本节,7.6 Linux文件系统,Linux支持多种不同的文件系统,这是Linux的一个重要特征。目前,Linux系统支持大约15个文件系统:EXT、EXT2、XIA、MINIX、UMSDOS、MSDOS、VFAT、PROC、SUM、NCP、ISO9660、SYSV、HPFS、AFFS和UFS。其中EXT、EXT2是Linux自己的文件系统。在Linux系统中,整个系统是一种树形结构,每个单独的文件系统是这个树形结构中的一部分。当需要挂接一个新的文件系统时,不管是什么类型,Linux把它挂接到这个树形的文件系统中的一个目录下,并隐藏目录中原有的内容。这个目录被称为挂接目录或挂接点。当该文件系统被卸载时,这个目录中原有的内容才再次显示出来。,返回本章首页,引进EXT文件系统后,Linux有了一个重大的改进:真正的文件系统从操作系统和系统服务中分离出来,在它们之间使用了一个接口层VFS(Virtual File System,虚拟文件系统)。VFS允许Linux支持多种不同的文件系统,每个文件系统都要提供给VFS一个相同的接口。这样所有的文件系统对系统内核和系统中的程序来说都是相同的。Linux系统中的VFS层使得用户可以同时在系统中透明地挂接很多不同的文件系统。,7.6 Linux文件系统,7.6.1 EXT2文件系统7.6.2 EXT2索引节点7.6.3 EXT2超级块7.6.4 EXT2中的目录,7.6.1 EXT2文件系统,EXT2现在被称为“Linux文件系统”,是Linux用户最常使用的文件系统。各种Linux的系统发布都将EXT2文件系统作为操作系统的基础。EXT2文件系统结构示意图如图7.6所示。,返回本节,7.6.2 EXT2索引节点,索引节点是EXT2文件系统的基础,因为EXT2文件系统中的每一个文件和目录都使用一个唯一的索引节点。其结构如图7.7所示。,返回本节,7.6.3 EXT2超级块,超级块主要包括如下信息:(1)幻数(Magic Number)(2)修订级别(Revision Level)(3)挂接数(Mount Count)和最大挂接数(Maximum Mount Count)(4)块组号(Block Group Number)(5)块大小(Block Size)(6)每组块数(Blocks per Group)(7)空闲块(Free Blocks)(8)空闲索引节点(Free Inodes)(9)第一个索引节点(First Inode),返回本节,7.6.4 EXT2中的目录,在ext2文件系统中,目录是一些特殊的文件,它们用来创建和保存系统中文件的存取路径。一个目录入口在内存中的结构如图7.8所示。,返回本节,7.7 UNIX NFS文件系统,网络文件系统(Network File System,NFS)是UNIX系统之间互相共享磁盘资源的一种方法。在异构型的环境中,NFS才真正可以发挥优势。NFS最主要的特点是它的健壮性。它是一个无状态协议,也就是说在客户和服务器之间产生的每个请求本身是完整的,不必知道以前的执行情况。NFS主要的缺憾是它的设计本身是不安全的。这就要求在任何时候通过NFS将磁盘共享给其它其他的计算机时,需要给该计算机的用户一定的信任度。,返回本章首页,7.8 Windows NT存储管理的二级页表结构,Windows NT的虚拟存储管理程序是Windows NT的基本存储管理系统,是Windows NT执行体的重要组成部分之一。Windows NT的虚拟存储管理系统为每一个进程提供了一个很大的虚拟地址空间。为了做到这一点,Windows NT放弃了早期个人计算机使用的分段模式,而采用了请求分页式的虚拟存储管理技术。Windows NT虚拟存储管理的实现包括两个方面:地址变换机构和页面调度策略。在本书中我们将主要介绍Windows NT的地址变换机构。,返回本章首页,Windows NT的地址变换机构不同于传统的页面地址变换机构,它采用的是一种称为两级页表结构的技术。具体实现如图7.10所示:,返回本节,7.9 Linux系统的内存管理技术,Linux操作系统的内存管理技术采用的是段页式虚拟存储技术。内存管理程序首先通过映射机制把用户程序的逻辑地址映射到物理空间上,即转化为物理地址,在用户程序运行时若发现程序中用到的虚拟地址没有对应的物理内存时,就发出请页要求。如果有足够的内存空间可供分配,则请求分配内存。如果没有足够的内存空间可供分配,则使用交换机制,腾出一部分内存空间。,返回本章首页,Linux系统使用需要时装入技术将可执行代码装入到进程的虚拟内存中。Linux系统采用“最近最少使用”(LRU)技术来决定把哪一个页面从物理内存中移出。操作系统一般使用高速缓存来提高系统性能,以获得最大的系统效用。Linux系统的内存管理程序通过内核中的交换守护进程来释放物理内存页,以解决物理内存变少的问题。,下一页,7.10 UNIX内存管理技术,在UNIX操作系统中,除保留了交换机制外,还支持请求分页存储管理方式,内存空间的分配和回收都以页为单位进行。页面的大小为512B4KB。为实现请求分页存储管理,系统配置了4种数据结构,即页表、磁盘块描述表、页框数据表和交换使用表,并专门设置了一个换页进程。,返回本章首页,系统内核应具备三个功能:交换空间的管理、进程换入和进程换出。UNIX系统的请求分页存储管理技术配置了4种数据结构:页表,磁盘块描述表,页框数据表,交换使用表。换页进程主要用来增加内存中所有有效页的年龄以及将内存中长期不用的页面换出,以支持UNIX操作系统的请求分页存储管理技术。,7.11 UNIX I/O设备管理,UNIX操作系统将设备分为两类:块设备和字符设备。UNIX系统的设备管理主要有两个特点:第一个特点是:UNIX将各类设备当作文件来管理。每个I/O设备都和一个磁盘文件相联系,由文件系统管理,对其的读/写操作和对用户数据文件的操作一样。第二个特点是:UNIX设备管理采用了缓冲技术,主要有块设备缓冲 和字符设备缓冲区。,返回本章首页,7.12 Linux I/O设备管理,设备管理的一个基本目标就是对设备的抽象处理。系统中的所有硬件设备看起来都和一般的文件一样,它们可以使用处理文件的标准系统调用来打开、关闭和读写。系统中的每一个设备都由一个设备文件来代表。Linux系统支持三种类型的硬件设备:字符设备、块设备、网络设备。,返回本章首页,Linux系统支持多种设备,这些设备的驱动程序之间有一些共同的特点:它们都是内核代码,所以一旦驱动程序出现错误,整个系统将被严重破坏;它们都必须为系统内核或其子系统提供一个标准的接口;它们都利用一些标准的内核服务;大多数的Linux设备驱动程序都可以在需要时装入内核,在不需要时卸载;Linux系统设备驱动程序将集成为系统内核的哪一部分是可以设置的,它将在系统编译时设置;Linux的设备驱动程序具有动态性,即当系统启动并且各个设备驱动程序初始化以后,驱动程序将维护其控制的设备。,返回本章首页,THANK YOU VERY MUCH!,本章到此结束,谢谢您 的光临!,返回本章首页,结 束,