zoukankan      html  css  js  c++  java
  • 系统架构设计师教程(第四版)笔记整理(三)第二章 操作系统

     

    第二章  操作系统

        操作系统的基本概念及其形成、发展历史和主要类型,并指出操作系统的5大管理功能。

              掌握操作系统原理的关键:深入理解“一个观点、两条线索”。

       一个观点:以资源管理的观点来定义操作系统;

       两条线索是指:操作系统如何管理计算机各类资源和控制程序的执行。

              操作系统如何实现对这些资源的管理

               本章主要内容:操作系统的内涵、设计、实现。

    2.1操作系统的类型与结构

      计算机系统由硬件和软件两部分组成。操作系统是计算机系统中最基本的系统软件,它的任务既管理计算机系统的软、硬件资源,又控制程序的执行。

    操作系统的基本类型有:批处理操作系统、分时操作系统和实时操作系统。

    从资源管理的角度,操作系统主要对:进程(处理器)、存储器、设备、文件、作业进行管理。

      2.1.1 操作系统的定义

        操作系统(Operating  System ,OS)是计算机系统中的核心系统软件。

    在计算机与用户之间起接口的作用。

    操作系统为用户提供的接口表现形式一般为:命令、菜单、窗口等。

    操作系统为应用程序提供的接口为API。

     2.1.2 操作系统分类

      按照操作系统的功能划分,

    操作系统的基本类型有:批处理操作系统、分时操作系统、实时操作系统、

    网络操作系统、分布式操作系统、嵌入式操作系统、微内核操作系统等。

    2.2操作系统基本原理

      操作系统的主要功能时进行处理机与进程管理、存储管理、设备管理、文件管理和作业管理的工作。下面讨论操作系统如何完成这些功能:

      2.2.1 进程管理

      处理机是计算机系统的核心。操作系统的功能之一就是处理机管理。

    处理机管理是整个操作系统的重心。

    进程是处理机管理中最基本的、最重要的概念。进程是系统并发执行的体现。

    为动态地看待操作系统,以进程作为独立运行的基本单位,以进程作为分配资源的基本单位,从进程的角度来研究操作系统。因此处理机管理也被称为进程管理。

    处理机管理的功能就是组织和协调用户对处理机的争夺使用,把处理机分配给进程,对进程进行管理和控制,最大限度发挥处理机的作用。

    1.进程的概念:静态观点看,操作系统是一组程序和表格的集合。

           动态观点看,操作系统是进程的动态和并发执行的。

      进程的概念实际上是程序概念发展的产物。

    多道程序系统中,程序的运行环境发生了很大的变化。主要体现在:

      (1)资源共享。提高资源利用率。

      (2)程序的并发执行或并行执行。

    2.进程的状态转换

    由进程运行的间断性,决定了进程至少具有以下三种状态:

      (1)就绪状态,进程已分配了除CPU以外的所有必要的资源后,只要能再获得处理机,就能立即执行,这时进程状态称为就绪状态。

      一个系统中,可以有多个进程同时处于就绪状态,通常排成一个队列,称为就绪队列。

      (2)执行状态,指进程已获得处理机,其程序正在执行。在单处理机系统中,只能有一个进程处于执行状态。

      (3)阻塞状态,有时也称为“等待”、“睡眠”状态。通常将处于阻塞状态的进程排成一个队列,称为阻塞队列。

     3.关于挂起状态

      (1)对换的需要。

      为了缓和内存紧张的情况,将内存中处于阻塞状态的进程换至外存,使进程又处于一种有别于阻塞状态的新状态。因为即使该进程所期待的事件发生,该进程仍不具备执行条件而不能进入就绪队列。称这种状态为挂起状态。

      (2)终端用户的请求。

     当终端用户自己的程序运行期间,发现有可疑问题时,往往希望使自己的进程暂停下来。

      就是,使正在执行的进程暂停执行,若是就绪进程,则不接受调度以便研究其执行情况或对程序进行修改。把这种静止状态也成为挂起状态。

      (3)父进程请求。

      父进程常希望挂起自己的子进程,以便考查和修改子进程,或者协调各子进程间的活动。

      (4)负荷调节的需要。

      当实时系统中的工作负荷较重,有可能影响到对实时任务的控制时,可由系统把一些不重要的进程挂起,以保证系统正常运行。

      (5)操作系统的需要。

      操作系统希望挂起某些进程,以便检查运行中资源的使用情况及进行记账。

    挂起状态具有以下三个属性:

      (1)被挂起的进程,原来可能处于就绪状态,此时进程(被挂起)的状态称为挂起就绪;若被挂起的进程原来处于阻塞状态,此时的状态称为挂起阻塞。

      不论哪种状态,该进程都是不可能被调度而执行的。

      (2)处于挂起阻塞状态的进程,阻塞条件与挂起条件无关;

        当进程所期待的时间出现后,进程虽不再被阻塞,但仍不能运行。

        这时,应将该进程从静止阻塞状态转换为挂起就绪状态。

      (3)进程可以由自身挂起,也可由用户或操作系统等挂起。其目的都在于阻止进程继续运行,被挂起的进程只能用显式方式来激活,以便从挂起状态中解脱出来。

        具有挂起操作的进程状态的演变情况。

      

    4.进程互斥与同步进程互斥定义为:一组并发进程中一个或多个程序段,因共享某一共有资源而导致必须以一个不允许交叉执行的单位执行。

      也就是说互斥要保证临界资源在某一时刻只被一个进程访问。

      

    进程同步定义为:把异步环境下的一组并发进程因直接制约而相互发送消息而进行互相合作、互相等待,使得各进程按一定的速度执行的过程称为进程同步。

      进程之间是异步执行的,同步是使各进程按一定的制约顺序和速度执行。

    希赛专家提示:简单来说:互斥是资源的竞争关系,而同步是进程间的协作关系。

      

      临界资源:系统中有些资源可供多个进程同时使用,有些资源则一次仅允许一个进程使用。一次仅允许一个进程使用的资源称为临界资源。

      (包括很多物理设备:打印机、磁带机;某些软件的变量、数据、表格等)。

    进程对临界资源进行的操作必须是互斥的。

    把一个进程访问临界资源的那段程序称为临界区

    进程间的互斥,可以描述为:禁止两个或两个以上的进程同时进入访问同一临界资源的临界区。

    须有专门的同步机构来协调他们,协调准则:

      (1)空闲让进。无进程处于临界区时,若有进程要求进入临界区则立即允许其进入;

      (2)忙则等待。当已有进程进入其临界区时,其他试图进入各自临界区的进程必须等待,以保证各进程互斥地进入临界区;

      (3)有限等待。有若干进程要求进入临界区时,应在有限时间内使一进程进入临界区,即它们不应相互等待而谁也不进入临界区;

      (4)让权等待。对于等待进入临界区的进程必须释放其占有的CPU。

      

    信号量可以有效地实现进程的同步和互斥。

        在操作系统中,信号量是一个整数。

        1>.当信号量大于等于0时,代表可供并发进程使用的资源实体数;

        2>.当信号量小于0时,表示正在等待使用临界区的进程数。

        建立一个信号量必须说明所建信号量代表的意义和设置初值,以及建立相应的数据结构,以便指向那些等待使用该临界区的进程。

      对信号量只能施加特殊的操作:P操作和V操作。P操作和V操作都是不可分割的院子操作,也称为原语。P原语和V原语执行期间不允许中断发生。

      

      P(sem)  过程是将信号量sem值减1,若sem的值成负数,则调用P操作的进程暂停执行,直到另一个进程对同一信号量做V操作。V(sem)操作的过程是将信号量sem值加1,若sem的值小于等于0,从相应队列(与sem有关的队列)中选一个进程,唤醒它。

      

      为了保护共享资源(如公共变量),使不被多个进程同时访问,就要阻止这些进程同时执行访问这些资源(临界资源)的代码段(临界区);

      进程互斥不允许两个以上共享临界资源的并发进程同时进入临界区。

      利用P、V原语和信号量可以方便地解决并发进程对临界区的进程互斥问题。

      

    设信号量mutex是用于互斥的信号量,初值为1,表示没有并发进程使用该临界区。

      各并发进程的临界区可改写成下列形式的代码段:

      P(mutex);

        临界区

      V(mutex);

      用P,V操作实现进程同步,需要引进私用信号量。

      私用信号量只与制约进程和被制约进程有关,而不是与整组并发进程相关。

       相对,进程互斥使用的信号量为公用信号量。

    操作步骤;

      首先,为各并发进程设置私用信号量,然后为私用信号量赋初值,最后利用P,V原语和私用信号量规定各进程的执行顺序。

      

      

     5.前趋图

      前趋图由结点和有向边  构成的又向无循环图。

      该图通常用于表现事务之间先后顺序的制约关系。

      每个结点可以表示一个语句、一个程序段、或是一个进程,

      结点间的有向边表示两个结点之间存在的前趋关系。

     

     

    在前趋图中,执行先后顺序的制约关系可分为两种:直接制约和间接制约。

    直接制约通常是指:一个操作中,多个步骤之间的制约关系,也可以说是“同步的进程之间的制约关系”。如图2-4,A1、B1、C1是一条指令的取值、分析、执行的三个步骤,它们之间是直接制约的。

    间接制约:多个操作之间相同步骤的制约关系,也可以说成“互斥的进程之间的制约关系”。如图2-4,A1、A2、A3之间就存在间接制约的关系。

    前趋图的应用广泛,在项目开发中,可用前趋图来分析哪些活动可以并行完成。

    项目管理工具:Pert图,单(双)代号网络图等都融入了前趋图的思想。

    6.进程调度与死锁

      进程调度即处理器调度(又称上下文转换),它的主要功能是确定在什么时候分配处理器,并确定分给哪一个进程, (书中这里用“即”连接这两句话,我老感觉有些问题,自己感觉前面和后面的情况,应该是并列的关系,分别都是对调度情况的描述)   让正在执行的进程改变状态并转入就绪队列的队尾,再由调度原语将就绪队列的队首进程取出,投入执行。

      引起进程调度的原因有以下几类:

      (1)正在执行的进程执行完毕。

      (2)执行中的进程自己调用阻塞原语将自己阻塞起来,进入睡眠状态。

      (3)执行中的进程调用了P原语操作,从而因资源不足而阻塞;

        或调用V原语操作激活了等待资源的进程队列。

      (4)分时系统中,当一进程用完一个时间片。

      (5)就绪队列中某进程的优先级变得高于当前执行进程的优先级,也将引起进程调度。

      进程调度的方式有两类:剥夺方式与非剥夺方式。

      非剥夺方式:一旦某个作业或进程占用了处理器,别的进程就不能把处理器从这个进程手中夺走,直到该进程自己因调用原语操作而进入阻塞状态,或时间片用完而让出处理机。

      剥夺方式:当就绪队列中有进程的优先级高于当前执行进程的优先级时,便立即发送进程调度,转让处理机。

      

      进程调度的算法是服务于系统目标的策略,对于不同的系统与系统目标,常采用不同的调度算法:

      (1)先来先服务(First Come and First Serverd ,FCFS)调度算法,

        又称为先进先出(First In and First Out,FIFO)。

      (2)优先数调度。优先数反映了进程优先级,就绪队列按优先数排队。

      确定优先级的方法,静态优先级和动态优先级。

      静态优先级指进程的优先级在进程开始执行前确定,执行过程中不变。

      动态优先级可以在进程执行过程中改变。

      

      (3)轮转法(Round Robin)。就绪队列按FCFS方式排队。

      每个进程执行一次占有处理器时间都不超过规定的时间单位(时间片)若超过,则自行释放自己所占有的CPU而排到就绪队列的末尾,等待下一次调度。同时,进程调度又去调度当前就绪队列中的第一个进程。

      

        进程管理是操作系统的核心,在进程管理的实现中,如果设计不当,会出现一种尴尬的局面----死锁。

       当若干个进程互相竞争对方已占有的资源,无限期地等待,不能向前推进时就会造成“死锁”。例如:P1进程占有资源R1,P2进程占有资源R2,这时,P1有需要资源R2,P2需要资源R1,它们在等待对方占有的资源时,又不会释放自己占有的资源,因而使双方都进入了无限等待状态。

      死锁是系统的一种出错状态,它不仅会浪费大量的系统资源,甚至还会导致整个系统的崩溃,死锁应该尽量预防和避免。

      (1)死锁条件。

      产生死锁的主要原因是供共享的系统资源不足,资源分配策略和进程的推进顺序不当。

    系统资源可能是可重复使用的永久性资源,也可能是消耗性的临时资源。

    产生死锁的必要条件:互斥条件、保持和等待条件、不剥夺条件和环路等待条件。

      (2)解决死锁的策略:一种是在死锁发生前采用预防和避免策略;另一种是在死锁发生后采用检测与恢复策略。

      死锁预防:主要是通过打破死锁产生的4个必要条件之一来保证不会产生死锁。

      通常采用的死锁预防策略:资源的静态分配法或有序分配法。它们分别打破了资源动态分配条件和循环等待条件,因此不会发生死锁。

      但这样做会大大降低系统资源的利用率和进程之间的并行程度。

      死锁避免策略,则是在系统进行资源分配时,先执行一个死锁避免算法(如:银行家算法),以保证本次分配不会导致死锁发生。

      由于资源分配很频繁,所以死锁避免策略要耗费大量的CPU和时间。  

      希赛专家:实际系统出现死锁的概率很小,所以从系统所花的代价上看,采用死锁发生后的检测与恢复策略要比采用死锁发生前的预防与避免策略代价小一些。

    2.2.2 存储管理

      存储器是计算机系统中最重要的资源之一。任何程序和数据以及各种控制用的数据结构都必须占有一定的存储空间,因此,存储管理直接影响系统性能

      存储器由内存和外存组成。

      内存是由系统实际提供的存储单元(常指字节)组成的一个连续地址空间,处理器可直接存取。

      外存(辅存)指:软盘、硬盘、光盘和磁带等一些外部存储部件,常用来存放暂不执行的程序和数据。处理器不能直接访问外存,需通过启动I/O(Input/Output,输入/输出)设备才能进行内存、外存交换,其访问速度慢,但价格便宜,常用作内存的后援设备。

      内存大小由系统硬件决定,存储容量受到实际存储单元的限制。

      虚拟存储器(虚存)不考虑实际内存的大小和数据存取的实际地址,只考虑相互有关的数据之间的相对位置,其容量由计算机地址的位数决定。

      

     系统中内存的使用一般分成两部分,一部分为系统空间,存放操作系统本身及相关的系统程序;另一部分为用户空间,存放用户的程序和数据。

      存储管理主要是指对内存储器的管理,负责对内存的分配和回收、内存的保护和内存的扩充。

      存储管理的目的是尽量提高内存的使用效率。

      存储管理机制变迁:由以前的单一连续区管理到分区存储管理再发展为段页式管理。目前前两种技术已逐步被淘汰。

      详细介绍:段页式存储管理。

       1.页式存储管理

        分页基本思想:把程序的逻辑空间和内存的物理空间按照同样的大小划分成若干页面,并以页面为单位进行分配。

      在页式存储管理中,系统虚地址是一个有序对(页号,位移)。

      系统为每一个进程建立一个页表,其内容包括进程的逻辑页号与物理页号的对应关系、状态等。

      页式系统的动态地址转换:

      

      

      

      

      

      

  • 相关阅读:
    网站调整为黑白的方法
    滚动条样式优化
    js点击页面其他地方如何隐藏div元素菜单
    微信分享网页时自定义标题、描述和图片
    纯CSS3美化单选按钮radio
    纯CSS3实现圆形进度条动画
    解决checkbox的attr(checked)一直为undefined问题
    jQuery – 鼠标经过(hover)事件的延时处理
    PC版模块滚动不显示滚动条效果
    上传文件样式美化
  • 原文地址:https://www.cnblogs.com/liyanli-mu640065/p/9555789.html
Copyright © 2011-2022 走看看