您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 管理学资料 > 操作系统简明教程第6章1
1第6章UNIX系统内核26.1概述UNIX系统是一个通用的、多用户、多任务分时操作系统.UNIX系统包括UNIX操作系统内核和运行在内核之上的用户程序集、库,以及其它实用工具,UNIX操作系统内核为这些应用提供运行环境和各种系统服务。早期的系统核心是无序结构,模块(函数)直接相互调用;而现在的UNIX版本都采用层次结构。为了便于系统移植,实现了功能的可裁剪性和规模的可伸缩性,Mach系统采用了微内核结构和线程概念,支持Client/Server模型。3UNIX版本简介1)BSD伯克利小组做出了许多贡献,包括虚拟存储、TCP/IP的集成、快速文件系统(FFS)、可靠的信号机制以及Socket等先进技术,尤其是将TCP/IP网络协议族集成到了UNIX中.用伯克利开发的新源代码替代了原来的UNIX源代码。42)SystemV在技术上,SystemV引入了许多新特征和新设施,“区”结构的虚存实现与BSD截然不同。SVR3增加了进程间通信设施(共享内存、信号量和消息队列)、远程文件共享、共享库以及用于设备驱动程序和网络协议的STREAMS框架;SVR4则集成了SVR3、4BSD、SUNOS以及XENIX的一些特征,增加了新的功能,如实时调度、KonShell,并对STREAMS系统进行了改进。51991年,Novell公司收购了AT&T的UNIX实验室,联合投资开发SVR4的桌面版,并集成了Novell的NetwarePC机网络操作系统,称作UNIXWare,于1992年末发行。之后新的SVR4发行,较新的是SVR4.2/ES/MP,支持多处理机并增强了系统安全性。1994年SunMicrosystem公司向Novell公司购买了SVR4代码使用权,其基于SVR4的发行称作Solaris,较新版本是Solaris2.5。Solaris提供了许多先进功能,包括全抢占多线程内核和对多处理机的全面支持等。63)MachMach是由卡内基·梅隆大学的研究人员开发的一个全新的操作系统,支持4BSDUNIX编程接口,可以在单处理机或多处理机上运行,适用于分布式环境。Mach的设计目标是微内核,内核仅提供必要功能的最小集,同时提供一个在用户级实现其它操作系统功能的框架,基本的方案是让微内核对外开放几个简单的抽象概念,然后用一组称为服务器的用户级任务提供大部分操作系统的功能。Mach3.0是第一个实现微内核的系统。74)UNIX系统的商业版本UNIX的不断发展吸引了许多计算机公司,他们迫切希望将UNIX商业化,出售自己的UNIX版本。这些版本都是以AT&T公司的SystemV或伯克利的BSD为蓝本,将它们移植到自己的硬件上,并加上一些自己的“增值”功能,主要版本有基于4BSD的SUNOS和基于SVR4的Solaris、微软与SCO合作发行的XENIX、SCOUNIX(SVR3在386上的移植版本)以及IBM公司的AIX、HP公司的HP–UX和Digital公司的UITRIX(DigitalUNIX)等。此外,还有目前广泛流行的可运行于多种硬件平台、源码公开且可免费使用的Linux操作系统。86.1.2UNIX系统的特点UNIX的小巧、稳定、简单内核、网络功能强等特点和性能决定了它的成败。与Microsoft的WindowsNT相比,UNIX系统具有以下特点:1.开放性开放性是指遵循国际标准规范,特别是遵循了开放系统互连OSI国际标准的系统能彼此兼容,可方便地实现互连。人们普遍认为,UNIX是目前开放性最好的操作系统,它能广泛地配置在从微机到大、中型机等各种机器上,而且还能方便地将已配置了UNIX操作系统的机器互连成计算机网络,这也是它被广泛应用的有力证明。9补充了解:POSIX标准是电子电气工程协会(IEEE)开发的一个独立的Unix标准,这个新的ANSIUnix标准被称为计算机环境的可移植性操作系统界面(PSOIX)。这个标准限定了Unix系统如何进行操作,对系统调用也做了专门的论述。PSOIX限制所有Unix版本必须依赖大众标准,现有大部分Unix和流行版本都是遵循POSIX标准的,而Linux从一开始就遵循POSIX标准。102.多用户、多任务环境UNIX系统是一个多用户、多任务操作系统,它既可以同时支持数十个乃至数百个用户,通过各自的联机终端同时使用一台计算机,而且还允许每个用户同时执行多个任务。例如,在进行字符、图形处理时,用户可建立多个任务,分别用于处理字符的输入、图形的制作和编辑等任务。113.简洁的内核与丰富的核外程序有机结合UNIX的设计思想着眼于向用户提供包含有多种工具,而且便于综合应用它们的程序设计环境,也就是构成一个能够提供各种服务的基础。在这样的设计思想提导下,UNIX系统在结构上分成两大层:内核和核外程序。12内核部分就是一般所说的UNIX操作系统,它包括进程管理、存储管理,设备管理、文件系统管理等几个部分。UNIX设计者对内核功能作了仔细考虑,对其中包含的数据结构和程序进行了精心设计,使其非常精干简洁。因此内核只需占用很小的存储空间,并且能够常驻内存,这就从根本上保证了系统能够以较高效率运行。13UNIX系统的核外部分包含有非常丰富的语言处理程序、系统实用程序和开发软件的工具性软件。在语言处理程序UNIX提供有十几种常见程序设计语言的编译和解释程序,如C、FORTRAN、C++、JAVA等;语言开发工具有YACC、LEX等。所有这些程序都作为文件存放在文件系统中,用户通过Shell命令使用这些程序。正是这些系统软件给用户提供了相当完备的程序设计环境。144.树形结构的文件系统且将文件和设备统一处理UNIX具有一个树形结构的文件系统,它由基本文件系统和可装卸的若干子文件系统组成。它既能扩大文件存储空间,又有利于安全和保密。在UNIX中,文件是无结构的字符序列,用户可以按需任意组织其文件格式,对文件既可进行顺序读、写,也可随机存取。另一方面,普通数据文件、文件目录表和外部设备都统一做文件处理,它们在用户面前有相同的语法语义,使用相同的保护机制,这样既简化了系统设计,又便于用户使用。155.系统用高级语言编写,可移植性好UNIX操作系统和核外程序基本上用C语言编写,使得系统易于理解、修改和扩充,而且使系统具有非常良好的可移植性。UNIX的可移植性有两方面的含义:首先指的是UNIX系统易于移植到别的硬件系统上去;其次,在UNIX系统下开发的应用软件比较易于移植到其它配置有UNIX的计算机系统上去。166.强大的网络功能早期的UNIX系统是在单机上运行的,彼此不能通信。伯克利受DARPA资助,将TCP/IP协议族集成到4BSD中。目前UNIX系统支持许多网络接口、协议和远程过程调用(RPC)机制,集成了网络文件系统(NFS)和分布式计算环境(DCE)等网络信息共享服务,为连网、网络应用和基于网络的应用软件开发提供了强有力的支持。176.1.3UNIX系统的核心结构UNIX系统可分为三层:硬件层、核心层和应用层。靠近硬件的是核心,即UNIX操作系统常驻内存部分;用户在应用层通过核心对外提供的系统调用和库函数接口来使用核心的功能。程序库系统调用接口文件系统进程通信调度内存管理进程控制系统缓冲区管理块设备字符设备设备驱动硬件控制硬件用户程序trap核心层应用层核心层硬件层186.2进程管理6.2.1UNIX进程映象和进程状态1.UNIX进程映象进程被描述为映象(image)的执行,而映象则是计算机的执行环境,进程映象包括一个存储映象、通用寄存器的值、打开文件的状态以及当前目录等。SystemV中进程的存储器映象包括正文段、数据段、共享内存段、系统栈、用户栈和进程控制块(PCB)。进程控制块分两个部分:常驻内存部分和非常驻内存(proc和user)。192.UNIX进程状态4795632110(wakeup)唤醒激活激活(wakeup)(setrun)(setrun)在外存睡眠在外存就绪在外存暂停唤醒在内存就绪8在内存睡眠睡眠终止(exit)终止态中断中断中断返回系统调用返回核心运行态重新调度进程停止(stop)在内存暂停创建态创建(fork)(sleep)有内存空间无内存空间(仅限于对换系统)换入换出换出换出用户运行态206.2.2进程控制1.进程的创建(fork)…………………0#1#P2iP20P2nP3iP3jP4mP4kP_sshell进程执行shell命令……21fork算法要做下列操作:●取一个空闲的proc表项,指定惟一的PID号码;●标记子进程状态为“正被创建”;●从父进程的proc结构中复制数据到新建子进程的proc结构中;●增加当前目录i节点和“更改过的文件根”(如可用的话)上的计数值;●增加系统打开文件表中的计数值;●在内存建一个父进程映象的副本(包括user结构、正文段、数据段和栈);●把各寄存器内容构成的系统环境记入子进程的运行环境中,以后子进程被调度,就从此开始执行;●将子进程状态改为“就绪”,子进程的PID号返回给父进程。222.进程的等待(wait)wait算法是:●如果父进程没有子进程,则出错返回;●如果发现有一个终止的子进程,则取出子进程的进程号,把子进程的CPU使用时间等加到父进程上,释放子进程占用的proc表项,以供新进程使用;●如果发现有子进程,但都不处于终止态,则父进程睡眠,等待由相应信号唤醒。233.进程的终止(exit)其实现算法如下:●忽略所有的信号;●如果本进程是与控制终端相关的进程组中的“首领”,则向该进程组的所有成员发送“挂起”信号,把所有成员的进程组号置为0;●关闭全部打开文件;●释放当前目录;●释放与该进程有关的各分区及其内存;●做统计记录(全局帐目文件);●置进程状态为“终止态”;●指定它所有子进程的父进程ID为初启进程(1#);●如果有任何子进程终止了,则向1#进程发出子进程终止的信号;●向它的父进程发送子进程终止的信号;●执行进程调度。244.进程映象的更换(exec)原因:如子进程不改变其映象,就必然重复父进程的过程。为此,要改变子进程的映象,使其执行另外的特定程序(如命令所对应的程序)。改换进程映象的工作很复杂,是由系统调用exec实现的,它用一个可执行文件的副本来覆盖该进程的内存空间。其基本算法如下:●取文件i节点;●验证文件的可执行性,即用户有权执行它;●读文件头,检查该文件是否可执行;●根据文件头中的信息,对隶属该进程的全部分区(正文段、数据段等)分配新的分区;25●将这些分区链接到进程;如果适宜,则把分区装入内存。●把exec参数复制到新的用户栈区;●设置用户寄存器(如用户栈指针、程序计数器等),以便返回到用户态;●释放文件的i节点。266.2.3进程调度1.调度的策略、时机和算法动态优先级的多级反馈队列轮转法即从可运行的优先数最小(优先权最大)的队列中选取一个进程映象投入运行。核心为该运行进程分配一个时间片,当时间片用完后,CPU被另外的进程抢占,而原进程被送回次高优先级队列的末尾,核心动态调整用户态进程的优先级。27核心进行进程调度的时机:(1)进程调用sleep程序;(2)进程终止;(3)进程在内存中暂停;(4)进程从系统调用返回到用户态时,但它并不是最适宜运行的进程;(5)核心处理完中断后,进程回到用户态,但存在比它更适宜运行的进程。28调度进程的算法如下:调度进程算法输入:无输出:无{while(没有进程被选中执行){for(所有在就绪队列中的进程)选出优先级最高且在内存的一个进程;if(没有合适进程可以执行)机器作空转;/*当中断发生后,使机器摆脱空转*/}从就绪队列中移走该选中进程;切换选中进程的上、下文,令其运行;}292.进程优先级的确定和优先数的计算对换等待Inode等待盘I/O等待盘缓冲区等待TTY输入等待TTY输出等待子进程终止用户级0用户级1用户级n…不可中断可以中断核心态优先级优先级阈值用户态优先级优先级队列进程30SystemV进程优先数计算公式为:PPri=Pcpu/2+PUSER+Pnice+NZERO以上进
本文标题:操作系统简明教程第6章1
链接地址:https://www.777doc.com/doc-2454631 .html