精华内容
下载资源
问答
  • 操作系统原理
    万次阅读 多人点赞
    2019-09-07 19:20:17

    原文链接:https://www.cnblogs.com/engine1984/category/155390.html

     

    目录

    目录

    >> 操作系统原理1 —— 概念

    >> 操作系统原理2 —— OS结构

    >> 操作系统原理3 —— 多道程序

    >> 操作系统原理4 —— 存储管理

    >> 操作系统原理5 —— 文件管理

    >> 操作系统原理6 —— 设备管理

    >> 操作系统原理7 —— 作业管理

    >> 操作系统原理8 —— CPU管理,进程

    >> 操作系统原理9 —— 死锁


    >> 操作系统原理1 —— 概念

    学习操作系统,首先我们应该知道操作系统的概念。本章主要讲述了以下几个问题。

    1. 什么是操作系统
    2. 操作系统的形成
    3. 操作系统的类型
    4. 操作系统的功能

    一、什么是操作系统

    在回答这个问题之前,我们先来了解一下什么是计算机系统。计算机系统是按用户的要求接收和存储信息、自动进行数据处理并输出结果信息的系统。

    计算机系统由硬件系统和软件系统组成。软硬件系统的组成部分就是计算机系统的资源,当不同的用户使用计算机时都要占用系统资源并且有不同的控制需求。

    操作系统就是计算机系统的一种系统软件,由它统一管理计算机系统的资源和控制程序的执行。

    操作系统的设计目标一是使计算机系统使用方便。二是使得计算机系统能高效地工作。

    二、操作系统的形成

    早期没有操作系统→原始汇编系统→管理程序→操作系统 可以看到,操作系统是随着计算机硬件的发展和应用需求的推动而形成的。

    三、操作系统的类型

    按照操作系统提供的服务,大致可以把操作系统分为以下几类:

    批处理操作系统、分时操作系统、实时操作系统、网络操作系统和分布式操作系统。其中批处理操作系统分时操作系统实时操作系统是基本的操作系统。

    1. 批处理操作系统按照用户预先规定好的步骤控制作业的执行,实现计算机操作的自动化。又可分为批处理单道系统和批处理多道系统。单道系统每次只有一个作业装入计算机系统的主存储器运行,多个作业可自动、顺序地被装入运行。批处理多道系统则允许多个作业同时装入主存储器,中央处理器轮流地执行各个作业,各个作业可以同时使用各自所需的外围设备,这样可以充分利用计算机系统的资源,缩短作业时间,提高系统的吞吐率。
    2. 分时操作系统,这种系统中,一个计算机系统与许多终端设备连接,分时系统支持多个终端用户,同时以交互方式使用计算机系统,为用户在测试、修改和控制程序执行方面提供了灵活性。分时系统的主要特点是同时性、独立性、及时性和交互性。
    3. 实时操作系统能使计算机系统接收到外部信号后及时进行处理,并在严格的规定时间内完成处理,且给出反馈信号。它是较少有人为干预的监督和控制系统。实时系统对可靠性和安全性要求极高,不强求系统资源的利用率。
    4. 网络操作系统可以把若干计算机联合起来,实现各台计算机之间的通信及网络中各种资源的共享,像我们现在使用的Windows ,UNIX和Linux等操作系统都是网络操作系统。
    5. 分布式操作系统的网络中各台计算机没有主次之分,在任意两台计算机间的可进行信息交换和资源共享。这一点上分布式操作系统和网络操作系统差别不大,他们的本质区别在于:分布式操作系统能使系统中若干计算机相互协作完成一个共同的任务。这使得各台计算机组成一个完整的,功能强大的计算机系统。

    四、操作系统的功能

    从资源管理的观点出发,操作系统功能可分为五大部分:处理器管理、存储管理、文件管理、设备管理和作业管理。


    >> 操作系统原理2 —— OS结构

    计算机系统是由硬件系统软件系统两部分组成,操作系统软件系统的一个组成部分,它是直接在硬件系统的基础上工作的,所以在研究操作系统之前,先必须对计算机系统的结构有一个基本的了解,本章就是讲述计算机系统结构的基本知识。

    本章的知识要点是:

    1. 计算机系统的层次结构
    2. 硬件环境
    3. 操作系统结构

    一、计算机系统的层次结构

    现代的通用计算机系统是由硬件和软件组成的一种层次式结构,最内层是硬件系统,最外层是使用计算机系统的人,人与硬件系统之间是软件系统。

    二、 硬件环境

    (1)CPU和外设的并行工作

    (2)I/O中断的作用

    (3)存储结构

    • 主存储器CPU能直接访问的唯一的存储空间,任何程序和数据都必须被装入主存储器之后,CPU才能对它进行操作。主存储器以“字节(BYTE)”为单位进行编址,若干字节组成一个“字(WORD)”。中央处理器可以按地址读出主存储器中的一个字节或一个字的内容。
    • 辅助存储器解决了主存储器容量不足,以及主存储器无法保存信息的问题。辅助存储器的优点是容量大且能永久保存信息,缺点是无法被中央处理器直接访问,必须通过主存储器才能访问。
    • 中央处理器存储信息的速度依次为:存取寄存器中的信息速度最快;通过系统总线存取主存储器的速度居中;使用辅助存储器的信息速度最慢。

        寄存器用来存放临时的工作信息和系统必须的控制信息。

        主存储器中存放操作系统的核心部分,以及当前需执行的程序和数据。

        辅助存储器是存放操作下的非核心部分和其他程序和数据。

        磁盘的信息可随机存取,磁带上的信息只能顺序存取。

    (4)硬件保护

        在资源共享的计算机系统中,只有有了必要的保护措施,才能使个别的错误不致影响其他程序。

    三、操作系统结构

    层次结构的最大特点是把整体问题局部化。把一个大型复杂的操作系统分解成若干单向依赖的层次,由各层的正确性来保证整个操作系统的正确性。

    采用层次结构,能使结构清晰,便于调试,有利于功能的增、删和修改,正确性容易得到保证,也提高了系统的可维护性和可移植性。

    操作系统的一种层次结构如下图所示:

    作业管理
    文件管理 
    设备管理
    存储管理
    处理器管理
    硬件

    >> 操作系统原理3 —— 多道程序

    通过本章学习应该掌握多道程序设计是如何提高计算机系统效率的;进程与程序有什么区别;进程的基本状态以及状态变化;进程队列及进程调度策略;中断的作用。

    一、 进程

    1. 进程的定义:把一个程序在一个数据集上的一次执行称为一个“进程”。
    2. 进程是由程序、数据集和进程控制块三部分组成。我们举一个例子,比如在有一个用户程序notepad.exe(记事本),当它存放在磁盘上时,就是一个程序,在windows操作系统下运行它时,就会在内存中建立一个记事本程序的进程,而我们在记事本中编辑的当前文字就是这个进程的数据集,操作系统会为当前的进程设置一个进程控制块。如果我们再打开一个记事本程序的窗口,就会建立另一个进程,此时运行的是同一个程序,但存在两个进程,第二个窗口中的编辑内容就是第二个进程的数据集
    3. 进程与程序 的区别及关系。程序是静止的,进程是动态的。进程包括程序和程序处理的对象(数据集),进程能得到程序处理的结果。进程和程序并非一一对应的,一个程序运行在不同的数据集上就构成了不同的进程。通常把进程分为“系统进程”和“用户进程”两大类,把完成操作系统功能的进程称为系统进程,而完成用户功能的进程则称为用户进程。

    二、 进程状态

    通常,根据进程执行过程中不同时刻的状态,可归纳为三种基本状态:

    1.  等待态 :等待某个事件的完成;
    2.  就绪态 :等待系统分配处理器以便运行;
    3.  运行态 :占有处理器正在运行。

    进程的状态变化:

    进程在执行中状态会不断地改变,每个进程在任何时刻总是处于上述三种基本状态的某一种基本状态,进程状态之间转换关系如下图所示:

    运行态→等待态 往往是由于等待外设,等待主存等资源分配或等待人工干预而引起的。

    等待态→就绪态 则是等待的条件已满足,只需分配到处理器后就能运行。

    运行态→就绪态 不是由于自身原因,而是由外界原因使运行状态的进程让出处理器,这时候就变成就绪态。例如时间片用完,或有更高优先级的进程来抢占处理器等。

    就绪态→运行态 系统按某种策略选中就绪队列中的一个进程占用处理器,此时就变成了运行态。

    三、 进程队列

           1、 进程队列的链接。

      在多道程序设计的系统中往往会同时创建多个进程。在单处理器的情况下,每次只能让一个进程运行,其他的进程处于就绪状态或等待状态。为了便于管理,经常把处于相同状态的进程链接在一起,称“进程队列”,由于进程控制块能标志进程的存在和动态刻画进程的特性,因此,进程队列可以用进程控制块的连接来形成。链接的方式有两种:单向链接和双向链接。

           2、 进程基本队列

      就绪队列 :由若干就绪进程按一定次序链接起来的队列。

      等待队列 :把等待资源或等待某些事件的进程排列的队列。

           3、进程的入队和出队。

      出队和入队 :当发生的某个事件使一个进程的状态发生变化时,这个进程就要退出所在的某个队列而排入到另一个队列中去。

      出队 :一个进程从所在的队列退出的操作称为出队

      入队 :一个进程排入到一个指定的队列的操作称为入队。

      系统中负责进程入队和出队的工作称为队列管理

           无论单向链接还是双向链接,解决入,出队问题,都是首先找到该队列的队首指针,沿链找出要入队的进程以及它要插入的位置,或找出要出队的进程,然后修改本进程指针(入队情况)和相邻进程的有关指针值即可。

    四、 中断优先级和中断屏蔽

           1、 中断优先级是硬件设计时确定的。中断装置按预定的顺序来响应同时出现的中断事件,这个预定的顺序称为“中断优先级”。中断优先级是按中断事件的重要性和紧迫程度来确定的 ,是由硬件设计时固定下来的。一般情况下,优先级的高低顺序依次为: 硬件故障中断自愿中断 程序性中断 外部中断 和 输入输出中断 

           2、中断的嵌套处理

           3、中断屏蔽的作用。中断优先级只是规定了中断装置响应同时出现的中断的次序,当中断装置响应了某个中断后中断处理程序在进行处理时,中断装置也可能去响应另一个中断事件。因此会出现优先级低的中断事件的处理打断优先级高的中断事件的处理,使得中断事件的处理顺序与响应顺序不一致,而且会形成多重嵌套处理,使多现场保护、程序返回等工作变的复杂。

    中断屏蔽技术就是为了解决上述问题而提出的在一个中断处理没有结束之前不响应其他中断事件,或者只响应比当前级别高的中断事件。于是,当中断装置检查到有中断事件后,便去查看PSW中中断屏蔽标志,如果没有屏蔽就响应该中断;否则,暂时不响应该中断,待屏蔽标志消除后再响应。自愿中断是不能屏蔽的。


    >> 操作系统原理4 —— 存储管理

    本章考核知识点:1、重定位 2、固定分区存储管理 3、可变分区存储管理 4、页式存储管理 5、段式存储管理 6、虚拟存储器

    操作系统的存储管理如同一个大地主,管着一个大庄园,当有农户需要租用田地时,地主就给分配一块地让他种(用户区分配)。等到地里长出了果实,结果出来后,地主还得来收回这块地(去配)。

    为了管好这片田地,地主还要管好庄园的门,凡是要进去种地的,都得由地主根据他的需要让他到位置确定实际的田地上去干活。(把逻辑地址转换成物理地址)

    庄园里还有一些大家共同可以使用的地方,比如地主的花园,工具房等,大家可以进去,也可以使用,但是不许改变任何现有的东东,还有,每个农户只能在自己的地里刨食吃,如果有人胆敢到别人地里或地主的花园里摘花偷食,可要当心他们养的狼狗跳出来哦。(共享和保护)

    当然,再大的地也是不够多的,地主为了多赚些钱,当所有的地都租出去的时候,他想办法把有些种田人暂时不种的那块地里的东东连地皮一起挖出来放到仓库里先堆着。把地腾出来租给别人种(这一招可够绝的,不过地主说啦,这就是“虚拟存储”。)

    一、 页式存储管理

           1、如何分页和分块

      页式存储管理中有两个名词:“ 页 ”和“ 块 ”,其中的“块”是针对硬件来说的,就是把存储器分成若干相等大小的区,每个区就称为一个块。对应的,在程序中,逻辑地址进行“分页”,其大小和每个块相一致。

      事实上,页面的大小是由块的大小自然决定的。对于程序来说,其逻辑地址还是和原来一样采用连续的地址。只是 按照块的位数取其前面数位做为页号 .

      分配空间时,根据作业长度可以确定它的页面数,根据这个页面数在主存中分配相应的块数,只要是空闲块就可以放入,即使不是相邻的。并把分配情况记在“页表”中,根据页表可以找到相对应的页号与块号,就得出绝对地址了。

      2、采用页式管理,使主存空间充分利用,页不必为了得到连续空间而进行移动。 可以提高系统效率。

      3、页表的构造与作用

      每个被装入主存的作业都有一张 页表 ,指出该作业逻辑地址中的页号与所占用的主存块号之间的对应关系。页表的长度由作页拥有的页面数决定,行号对应为页号,行中记录的是主存中的块号。

      页表是硬件进行地址转换的依据,每执行一条指令时按逻辑地址中的页号查找页表并转换成绝对地址。

      在多道程序设计系统中,进入主存的每个作业都有一张页表,由一个硬件“页表控制寄存器”来记录每个作业的页表所在位置和长度以便作业转换时同时转换页表。

      4、快表的构造与作用

      快表 就是页表的一部分克隆,每行中有页号及其对应的块号,整个快表存放在一个小容量的高速缓存中,访问时快表和内存同时进行查找,因为快表速度很快,而常用的页都登记在快表中,因此可以大大加快执行速度。

      5、采用页式管理的地址转换过程

      (为什么不直接用块分配表来记录而要用位示图呢,因为主存块很多,这样可以节省空间,提高效率。位示图就是用一个位(0或1)来表示一个块的使用状态,一个字32位,可以表示32块。按顺序排列,只需一小段内存就可以记录主存中大量的块状态)

      6、利用位示图实现页式存储空间的分配和回收

      页式存储管理把主存空间分成大小固定的许多块,在装业作业时,如何知道主存中哪些块已使用,哪些还未用,可以用位示图来表示。

      块号=字号×字长+位号

      字号=[i/字长](即块号i除以字长取整)

      位号=i mod 字长(即块号i除以字长取余)。


    >> 操作系统原理5 —— 文件管理

    文件和文件名 :在计算机系统中,把逻辑上具有完整意义的信息集合称为“文件”,每个文件都要用一个名字作标识,称为“文件名”。

    用户请求使用文件的操作步骤

      1)读文件:打开文件→读文件→关闭文件

      2)写文件:建立文件→写文件→关闭文件

      3)删除文件:关闭文件→删除文件


    >> 操作系统原理6 —— 设备管理

    要求了解设备管理与文件管理的合作,文件管理实现文件存取的准备工作,而文件的物理存取由设备管理实现。理解怎样实现独占设备的分配和磁盘的驱动调度;怎样实现虚拟设备。

    一、 独占设备和共享设备

    独占设备好比是你家的抽水马桶,当你坐上去的时候,大家就是想用也得等你完事了站起来才可以用上。

    共享设备呢,就像是我家的水龙头,我在洗手的时候,可以把手移开让我妈来打盆水。然后我又继续洗手。

      1、 独占设备 是指每次只能供一个作业执行期间单独使用的设备。如输入机、磁带机、打印机等。

      2、 共享设备 是指允许几个作业执行期间可同时使用的设备。

      3、共享设备的“同时使用”的含义是指多个作业可以交替启动共享设备,当一个用业正在使用设备时其他作业暂不能使用,即每一时刻仍只有一个作业占用,但当一个作业正在使用设备时其他作业就可使用。


    >> 操作系统原理7 —— 作业管理

    理解计算机系统中把用户要求处理的一项工作称为一个作业,作业可分为批处理作业和交互式作业两大类;掌握操作系统是如何实现作业调度和控制作业执行的;理解作业高度与进程调度之间的关系以及各自的职责。

    一、 作业和作业步

           1、 作业 :我们把用户要求计算机系统处理的一个问题称为一个“作业”

           2、 作业步 :任何一个作业都要经过若干加工步骤才能得到结果,我们把作业的每一个加工步聚称为一个“作业步”。


    >> 操作系统原理8 —— CPU管理,进程

    本章考核知识点 :1、进程的顺序性与并发性 2、与时间有关的错误 3、相关临界区 4、进程的互斥 5、进程的同步 6、进程通信 7、线程的概念

    理解“进程”是操作系统中的基本执行单位,在多道程序设计的系统中往往同时有许多进程存在,它们要轮流占用处理器。这些交叉执行的并发进程相互之间可能是无关,也可能是相关的。当并发进程竞争共享资源时会出现与时间有关的错误,因此,应采用进程同步与互斥手段使其合理使用共享资源,以保证系统安全。当进程间必须通过信息交换进行协作时,可用进程通信的方式达到目的。

    一、 进程的顺序性与并发性

    有人说,在程序中不是有跳转语句和重复语句,怎么就是顺序执行?注意,这里是指进程在处理器中的执行,因为处理器每次只能执行一个操作,因此每条指令必须按顺序进入CPU执行,假使有一条指令是跳转的,那么执行本指令后,会取出跳转目的地址的指令进入CPU运行,这个顺序是程序规定的。所以对CPU而言,进程总是按顺序执行

    进程是一个程序在一个数据集合上的一次执行,同一个程序和同一个数据集的运行结果必然是相同的。这就是可再现性。

    同时执行并不是真的同时,因为任一时刻CPU中只能有一个进程运行。

           1、进程的顺序性 :任何进程在顺序的处理器上的执行是严格按照顺序进行的,这就是进程的顺序性。当一个进程独占处理器顺序执行时,具有两个特性: 一、封闭性 ;二、可再现性 。

      2、进程的同时执行 :在多道程序设计系统中,一个进程的工作没有全部完成之前,另一个进程就可以开始工作,它们的执行在时间上重迭的,我们把它们称为是“可同时执行的”。

      3、进程的并发性 :若系统中存在一组可同时执行的进程,则说该组进程具有并发性,并把可同时执行的进程称为“并发进程” 。

      4、并发进程间的关系:并发进程相互之间可能是无关的,也可能是交往的。如果一个进程的执行不影响其他进程的执行,且与其他进程的进展情况无关,即它们是各自独立的,则这些并发进程相互之间是无关的。如果一个进程的执行依赖其他进程的执行,则这些并发进程之间是有交往的。

    二、 与时间有关的错误

           1、并发进程的执行速度取决于自身和进程调度策略。一个进程运行时会被中断,且断点是不固定的,一个进程被中断后,哪个进程可以运行,被中断的进程什么时候占用处理器,是与进程调度策略有关的。因此进程的执行速度不能由自己决定。

           2、并发进程交替使用共享资源时会出现与时间有关的错误。 由于共享资源的原因,加上进程并发执行的随机性,一个进程对另一个进程的影响是不可预测的。造成不正确的因素与进程占用处理器的时间、执行的速度以及外界的影响有关。因此被称为与时间有关的错误。

    三、 相关临界区

           1、 临界区的定义:并发进程中与共享变量有关的程序段称为“临界区”

      2、什么是相关临界区 : 相关临界区是指并发进程中涉及到相同变量的那些程序段 

      3、对相关临界区的管理要求。

      1) 一次最多让一个 进程在临界区执行,当有进程在临界区时其他想进入临界区执行的进程必须等待。

      2)任何一个进入临界区执行的进程必须在有限的时间内退出临界区,即任何一个进程都不应该无限地逗留在自己的临界区。

      3)不能强迫一个进程无限地等待进入它的临界区,即有进程退出时应让一个等待进入临界区的进程进入它的临界区。

    四、 进程的互斥

    1) 进程互斥的含义:进程的互斥是指当有若干进程都要使用某一共享资源时,任何时刻最多只允许一个进程去使用,其他要使用该资源的进程必须等待,直到占用资源者释放了该资源。

    PV操作是两个过程,由他们两个来控制一个信号S,假设S是红灯的个数。

    每个进程进入临界区前都要先执行P操作退出临界区执行V操作。用下面的比喻很容易理解:

           临界区门前有棵树(S)

      用来挂红灯

      进程想进CPU的门

      先得上树取盏灯(调用一次P操作)

      取下一个去敲门(S=S-1)

      如果树上没灯取(S≤0)

      树说欠你一盏灯(S为负时)

      没辙只好外边排队等( W ait (S))

      得灯进程续运行

      运行完了要出门(调用一次V操作)

      马上还回一盏灯(S=S+1)

      若有进程在催债(S≤0)

      放个进去事完成( Release (S))

    2) 实现进程互斥的工具——PV操作。

    PV操作是由两个操作,即P操作和V操作组成。P操作和V操作是两个在信号量上进行操作的过程。假定用S表示信号量则把这两个过程记作P(S)和V(S),它们的定义如下: 

    Procedue P(Var S: Semaphore);
    begin S:=S-1;
    if S<0 
    then W(S) 
    end;
    {P} 
    
    Procedue V(Var S: Semaphore);
    begin S:=S+1;
    if S<=0 
    then R(S) 
    end;
    {V}

    为了确保PV操作自身的正确执行,因此P(S)和V(S)操作中不可中断,这种 不可被中断的过程称为“原语 ”。

    3) 用PV操作管理相关临界区的一般形式

    一个信号量与一组涉及共享变量的相关临界区联系起来,信号量的初值定为“1”。

    任何一个进程要进入临界区前先调用P操作,执行临界区的操作后,退出临界区时调用V操作。

    由于信号量的初值为“1”,P操作起到了限制一次只有一个进程进入临界区的作用,其余进程欲进入临界区必须符合对临界区管理的第一个要求,即一次最多让一个进程在临界区执行。进程退出后执行V操作,若有进程在等待则释放一个进程,这样就达到了对临界区管理的第二个和第三个要求(即不能无限逗留也不能无限等待)。


    >> 操作系统原理9 —— 死锁

    本章考核知识点 :1、死锁的产生 2、死锁的防止 3、死锁的避免4、死锁的检测

    一、 死锁的产生

    话说狼GG和狼MM面对面走上一根独木桥。

    狼GG说:呵呵,小MM,我已经占领了这座桥的一半,你不如退出去让我先过去吧。

    狼MM说,哼哼,老兄,我也占了这座桥的一半,你咋不让给我?

    狼GG和狼MM互不相让,都在等对方先让步。结果两个都过不了河。等着猎人来处理后事了。

           1、什么叫死锁 : 若系统中存在一组进程(两个或多个进程),它们中的每一个进程都占用了某种资源而又都在等待其中另一个进程所占用的资源,这种等待永远不能结束,则说系统出现了“死锁”。或说这组进程处于“死锁”状态。

      2、引起死锁的因素:死锁的出现除了与资源的分配策略有关外,也与并发进程的执行速度有关,即操作系统对资源管理不得当或没有顾及进程并发执行时可能出现的情况,则就可能形成死锁。

    二、 死锁的防止

    我们把桥的一半看作一个资源的话,那么,当狼MM占用了其中一个资源后,狼GG就只好等待了。

           狼GG狼MM各自占有了一段资源又在等另外的资源,又不肯放弃自己占有的资源。

      他们又不能把对方踢下河去,把另一段资源抢过来自己用。

      只好互相等待了。

    这4个条件是必要条件而不是充分条件,意思是,只要发生死锁,那么这四个条件必然都成立。反之则不然,有时候即使四个条件都满足,那也不一定发生死锁。(从资源分配图中可以分析得到,即使形成循环等待资源,也不一定形成死锁。)

    1、系统出现死锁必然同时保持的四个必要条件:

      1)互斥使用资源

      2)占有并等待资源

      3)不可抢夺资源

      4)循环等待资源

    2、死锁的防止策略 :要防止死锁形成,只要采用的资源分配策略能使上述4个条件中有一个条件不成立就可以了。

           1)破坏互斥使用资源的条件经常是行不通的。因为资源本身特性就是互斥使用的

      2)要破坏“占有并等待条件”则可以采取两种办法: 静态分配 和 释放已占资源 .

      静态分配 也称为 预分配资源 ,要求每一个进程在开始执行前就申请它所需要的全部资源,仅当系统能满足进程的资源申请要求且把资源分配给进程后,该进程才能开始执行。

      释放已占资源 就是指进程申请资源时必须没有占用资源,如果已经占用了资源就要先归还所占的资源再申请。

      3)实现 可抢夺式分配 :如果一个进程已经占有了某些资源又要申请新资源,而新资源不能满足(已被其它进程占用)必须等待时,系统可以抢夺该进程已占有的资源。

      4)实现 按序分配 :把系统中所有资源排一个顺序,对每一个资源给一个确定的编号,规定任何一个进程申请两个以上的资源时,总是先申请编号小的资源,再申请编号大的资源。

    三、 死锁的避免

    死锁的避免不同于死锁的防止,死锁的防止是采用某种分配策略后,系统就不会产生死锁,这好比是你打过了某种预防针,再也不会得那种病。而死锁的避免是没有打预防针,但是通过其他办法,避免得病。因此有“安全状态”的说法,对应的,当然也有不安全状态。就像人都有得病的可能,不必任何病都打预防针。只要注意防病,仍然可以安全健康的生活。

           1、 安全状态 :如果操作系统能保证所有的进程在 有限的时间 内得到需要的 全部资源 ,则称系统处于“安全状态”。

      2、区分死锁的 避免 与死锁的 防止 :当采用了防止死锁的资源分配策略后,系统中就不会形成死锁。但是可以防止死锁的资源分配策略中,有的只适用于对某些资源的分配,有的会影响资源的使用效率。这时可用使用死锁的避免。

    死锁的避免是解决死锁的另一种方法,它不同于死锁的防止。在系统中不采用防止死锁的资源分配策略,而是估计到可能有死锁发生时避免死锁的发生。

      3、银行算法是怎样避免死锁的:

      银行家算法是这样的

      1)当一个用户对资金的最大的需求量不超过银行家现有的资金时就可以接纳该用户。

      2)用户可以分期贷款,但贷款的总数不能超过最大需求量。

      3)当银行家现有的资金不能满足用户的尚需贷款时,对用户的贷款可推迟支付,但总能使用户在有限的时间里得到贷款。

      4)当用户得到所需的全部资金后,一定能在有限的时间里归还所有资金。

      我们把操作系统看作是银行家,操作系统管理的资源相当于是银行家管理的资金,则银行家算法就是:

      1)当一个进程首次申请资源时,测试该进程对资源的最大的需求量,如果不超过系统现存资源时就可以按他的当前申请量为其分配资源。 否则推迟分配。

      2)进程执行中继续申请资源时,测试该进程占用资源和本次申请资源总数有没有超过最大需求量。超过就不分配,没超过则再测试现存资源是否满足进程还需要的最大资源量,满足则按当前申请量分配,否则也推迟分配。

    总之,银行家算法要保证分配资源时系统现存资源一定能满足至少一个进程所需的全部资源。这样就可以保证所有进程都能在有限时间内得到需要的全部资源。这就是安全状态。

    四、 死锁的检测

    就是既不打预防针,也不去避免得病,而是经常去体检,如果发现有病了就治疗。这是一种事后解决的办法,也算是解决死锁问题的一条途径。但这毕竟要付出较大代价。

      1、什么是 死锁的检测 :对资源的申请和分配不加限制,只要有剩余的资源就可把资源分配给申请者。这样可能会出现死锁,系统定时运行一个“死锁检测程序”,如果检测到死锁发生,则必须先解除死锁再继续工作。

      2、怎样实现死锁的检测:1、每个资源当用中只有一个资源 2、资源类中含有若干个资源。

      3、 死锁的解除 :一般采用两种方式来解除死锁,一种是终止一个或几个进程的执行以破坏循环等待;另一种是从涉及死锁的进程中抢夺资源。

      检测死锁和解除死锁都要付出很大代价。所以用死锁检测的方法解决死锁问题只适用于 不经常发生死锁 的系统中。

    更多相关内容
  • 陈海波老师写的很清晰
  • 操作系统原理(一)操作系统的认识

    千次阅读 多人点赞 2020-07-31 22:44:53
    文章目录操作系统的认识1、操作系统是什么1.1、初步认识操作系统及其功能1.2、操作系统的地位2、为什么需要操作系统3、操作系统的发展史3.1、手工操作时代3.2 单批道处理系统3.3 多批道处理系统3.4、分时技术和分时...

    操作系统的认识

    1、操作系统是什么

    操作系统(Operating System,OS)是控制应用程序执行和充当硬件系统和应用程序之间的界面的软件

    计算机系统由硬件和软件两部分组成。操作系统(OS,Operating System)是配置在计算机硬件上的第一层软件,是对硬件系统的首次扩充。它在计算机系统中占据了特别重要的地位;
    而其它的诸如汇编程序、编译程序、数据库管理系统等系统软件,以及大量的应用软件,都将依赖于操作系统的支持,取得它的服务。操作系统已成为现代计算机系统(大、中、小及微型机)、多处理机系统、计算机网络、多媒体系统以及嵌入式系统中都必须配置的、最重要的系统软件。
    在这里插入图片描述

    1.1、初步认识操作系统及其功能

    当前比较流行的操作系统有:
    在这里插入图片描述
    操作系统具体能做什么?毫无疑问,我们都知道的有 运行程序、控制多个程序并发运行、管理系统资源、监控系统状态、 提供图形化交互界面、 存储文件,读取文件

    官方点说,操作系统应该具备的功能:

    • 进程管理
      进程控制:创建、暂停、唤醒、撤销等; 进程调度:调度策略、优先级;进程通信:进程之间怎么通信。
    • 设备管理
      设备的分配和调度;设备的无关性动作;设备的传输控制;设备的驱动管理
    • 内存管理
      内存分配;内存共享;内存保护;虚拟内存——我们运行程序从来因为内存过小而失败,只会变慢、卡。
    • 文件管理
      存储的空间管理;文件的操作;目录的操作;文件和目录的存取权限管理等

    1.2、操作系统的地位

    在这里插入图片描述

    2、为什么需要操作系统

    一般地说,在计算机硬件上配置的 OS,其目标有以下几点。

    • 1.有效性
      在早期(20 世纪 50~60 年代),由于计算机系统非常昂贵,操作系统最重要的目标无疑
      是有效性。事实上,那时有效性是推动操作系统发展最主要的动力。操作系统的有效性可包含如下两方面的含意:
      (1) 提高系统资源利用率。在未配置 OS 的计算机系统中,诸如 CPU、I/O 设备等各种
      资源,都会因它们经常处于空闲状态而得不到充分利用;内存及外存中所存放的数据太少
      或者无序而浪费了大量的存储空间。配置了 OS 之后,可使 CPU 和 I/O 设备由于能保持忙
      碌状态而得到有效的利用,且可使内存和外存中存放的数据因有序而节省了存储空间。
      (2) 提高系统的吞吐量。操作系统还可以通过合理地组织计算机的工作流程,而进一步
      改善资源的利用率,加速程序的运行,缩短程序的运行周期,从而提高系统的吞吐量。
    • 2.方便性
      配置 OS 后可使计算机系统更容易使用。一个未配置 OS 的计算机系统是极难使用的,
      因为计算机硬件只能识别 0 和 1 这样的机器代码。用户要直接在计算机硬件上运行自己所
      编写的程序,就必须用机器语言书写程序;如果我们在计算机硬件上配置了 OS,用户便
      可通过 OS 所提供的各种命令来使用计算机系统。比如,用编译命令可方便地把用户用高级
      语言书写的程序翻译成机器代码,大大地方便了用户,从而使计算机变得易学易用。
      方便性和有效性是设计操作系统时最重要的两个目标。
    • 3.可扩充性
      随着 VLSI 技术和计算机技术的迅速发展,计算机硬件和体系结构也随之得到迅速发
      展,相应地,它们也对 OS 提出了更高的功能和性能要求。此外,多处理机系统、计算机网
      络,特别是 Internet 的发展,又对 OS 提出了一系列更新的要求。因此,OS 必须具有很好的
      可扩充性,方能适应计算机硬件、体系结构以及应用发展的要求。这就是说,现代 OS 应采
      用新的 OS 结构,如微内核结构和客户服务器模式,以便于方便地增加新的功能和模块,并
      能修改老的功能和模块。
    • 4.开放性
      自 20 世纪 80 年代以来,由于计算机网络的迅速发展,特别是 Internet 的应用的日益普
      及,使计算机操作系统的应用环境已由单机封闭环境转向开放的网络环境。为使来自不同
      厂家的计算机和设备能通过网络加以集成化,并能正确、有效地协同工作,实现应用的可
      移植性和互操作性,要求操作系统必须提供统一的开放环境,进而要求 OS 具有开放性。
      开放性是指系统能遵循世界标准规范,特别是遵循开放系统互连(OSI)国际标准。凡遵
      循国际标准所开发的硬件和软件,均能彼此兼容,可方便地实现互连。开放性已成为 20 世
      纪 90 年代以后计算机技术的一个核心问题,也是一个新推出的系统或软件能否被广泛应用
      的至关重要的因素。
      在这里插入图片描述

    硬件发展时代划分
    在这里插入图片描述

    3、操作系统的发展史

    3.1、手工操作时代

    在这里插入图片描述

    3.2 单批道处理系统

    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述

    3.3 多批道处理系统

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    3.4、分时技术和分时操作系统

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    分时系统实例
    在这里插入图片描述
    在这里插入图片描述

    4、典型的操作系统

    在这里插入图片描述

    4.1、 微机操作系统

    在这里插入图片描述
    在这里插入图片描述

    4.2、 实时操作系统

    在这里插入图片描述

    所谓“实时”,是表示“及时”,而实时系统(Real Time System)是指系统能及时(或即时)响应外部事件的请求,在规定的时间内完成对该事件的处理,并控制所有实时任务协调一致地运行。
    1、需求:
    虽然多道批处理系统和分时系统已能获得较为令人满意的资源利用率和响应时间,从而使计算机的应用范围日益扩大,但它们仍然不能满足以下某些应用领域的需要。

    • (1) 实时控制。当把计算机用于生产过程的控制,以形成以计算机为中心的控制系统时,
      系统要求能实时采集现场数据,并对所采集的数据进行及时处理,进而自动地控制相应的
      执行机构,使某些(个)参数(如温度、压力、方位等)能按预定的规律变化,以保证产品的质
      量和提高产量。类似地,也可将计算机用于对武器的控制,如火炮的自动控制系统、飞机
      的自动驾驶系统,以及导弹的制导系统等。此外,随着大规模集成电路的发展,已制作出
      各种类型的芯片,并可将这些芯片嵌入到各种仪器和设备中,用来对设备的工作进行实时
      控制,这就构成了所谓的智能仪器和设备。在这些设备中也需要配置某种类型的、能进行
      实时控制的系统。通常把用于进行实时控制的系统称为实时系统。
    • (2) 实时信息处理。通常,人们把用于对信息进行实时处理的系统称为实时信息处理系
      统。该系统由一台或多台主机通过通信线路连接到成百上千个远程终端上,计算机接收从
      远程终端上发来的服务请求,根据用户提出的请求对信息进行检索和处理,并在很短的时
      间内为用户做出正确的响应。典型的实时信息处理系统有早期的飞机或火车的订票系统、
      情报检索系统等。

    2、实时任务
    在实时系统中必然存在着若干个实时任务,这些任务通常与某个(些)外部设备相关,能反应或控制相应的外部设备,因而带有某种程度的紧迫性。可从不同的角度对实时任务加以分类。

    1. 按任务执行时是否呈现周期性来划分
      (1) 周期性实时任务。外部设备周期性地发出激励信号给计算机,要求它按指定周期循
      环执行,以便周期性地控制某外部设备。
      (2) 非周期性实时任务。外部设备所发出的激励信号并无明显的周期性,但都必须联系
      着一个截止时间(Deadline)。它又可分为开始截止时间(某任务在某时间以前必须开始执行)
      和完成截止时间(某任务在某时间以前必须完成)两部分。
    2. 根据对截止时间的要求来划分
      (1) 硬实时任务(Hard real-time Task)。系统必须满足任务对截止时间的要求,否则可能出现难以预测的结果。
      (2) 软实时任务(Soft real-time Task)。它也联系着一个截止时间,但并不严格,若偶尔错过了任务的截止时间,对系统产生的影响也不会太大。

    3、实时系统与分时系统特征的比较
    实时系统有着与分时系统相似但并不完全相同的特点,下面从五个方面对这两种系统
    加以比较。

    • (1) 多路性。实时信息处理系统也按分时原则为多个终端用户服务。实时控制系统的多
      路性则主要表现在系统周期性地对多路现场信息进行采集,以及对多个对象或多个执行机
      构进行控制。而分时系统中的多路性则与用户情况有关,时多时少。
    • (2) 独立性。实时信息处理系统中的每个终端用户在向实时系统提出服务请求时,是彼
      此独立地操作,互不干扰;而实时控制系统中,对信息的采集和对对象的控制也都是彼此
      互不干扰。
    • (3) 及时性。实时信息处理系统对实时性的要求与分时系统类似,都是以人所能接受的
      等待时间来确定的;而实时控制系统的及时性,则是以控制对象所要求的开始截止时间或
      完成截止时间来确定的,一般为秒级到毫秒级,甚至有的要低于 100 微秒。
    • (4) 交互性。实时信息处理系统虽然也具有交互性,但这里人与系统的交互仅限于访问
      系统中某些特定的专用服务程序。它不像分时系统那样能向终端用户提供数据处理和资源
      共享等服务。
    • (5) 可靠性。分时系统虽然也要求系统可靠,但相比之下,实时系统则要求系统具有高
      度的可靠性。因为任何差错都可能带来巨大的经济损失,甚至是无法预料的灾难性后果,
      所以在实时系统中,往往都采取了多级容错措施来保障系统的安全性及数据的安全性。

    在这里插入图片描述

    4.3、嵌入式系统

    在这里插入图片描述

    4.4、网络系统

    在这里插入图片描述

    5、操作系统的功能

    4.1、OS 作为用户与计算机硬件系统之间的接口

    OS 作为用户与计算机硬件系统之间接口的含义是:OS 处于用户与计算机硬件系统之
    间,用户通过 OS 来使用计算机系统。或者说,用户在 OS 帮助下,能够方便、快捷、安全、
    可靠地操纵计算机硬件和运行自己的程序。应注意,OS 是一个系统软件,因而这种接口是软件接口。图 1-1 是 OS 作为接口的示意图。由图可看出,用户可通过以下三种方式使用计算机。

    • 1、命令方式。这是指由 OS 提供了一组联机
      命令接口,以允许用户通过键盘输入有关命令来取得操作系统的服务,并控制用户程序的运行。
    • 2、系统调用方式。OS提供了一组系统调用,
      用户可在自己的应用程序中通过相应的系统调用,来实现与操作系统的通信,并取得它的服务。
    • 3、 图形、窗口方式。这是当前使用最为方便、最为广泛的接口,它允许用户通过屏幕上的窗口和图标来实现与操作系统的通信,并取得它的服务。
      在这里插入图片描述

    4.2、OS 作为计算机系统资源的管理者

    在一个计算机系统中,通常都含有各种各样的硬件和软件资源。归纳起来可将资源分为四类:处理器、存储器、I/O 设备以及信息(数据和程序)。相应地,OS 的主要功能也正是针对这四类资源进行有效的管理,即:

    • 处理机管理,用于分配和控制处理机;
    • 存储器管理,主要负责内存的分配与回收;
    • I/O 设备管理,负责 I/O 设备的分配与操纵;
    • 文件管理,负责文件的存取、共享和保护。

    可见,OS 的确是计算机系统资源的管理者。事实上,当今世界上广为流行的一个关于 OS 作用的观点,正是把 OS 作为计算机系统的资源管理者。

    值得进一步说明的是,当一个计算机系统同时供多个用户使用时,用户对系统中共享资源的需求(包括数量和时间)可能发生冲突,为了管理好这些共享资源(包括硬件和信息)的使用,操作系统必须记录下各种资源的使用情况,对使用资源的请求进行授权,协调诸用户对共享资源的使用,避免发生冲突,并计算使用资源的费用等

    4.3、OS 实现了对计算机资源的抽象

    对于一个完全无软件的计算机系统(即裸机),它向用户提供的是实际硬件接口(物理接口),用户必须对物理接口的实现细节有充分的了解,并利用机器指令进行编程,因此该物理机器必定是难以使用的。为了方便用户使用 I/O 设备,人们在裸机上覆盖上一层 I/O 设备管理软件,如图 1-2 所示,由它来实现对 I/O 设备操作的细节,并向上提供一组 I/O 操作命令,如 Read 和 Write 命令,用户可利用它来进行数据输入或输出,而无需关心 I/O 是如何实现的。
    在这里插入图片描述

    6、操作系统的基本特性

    6.1、并发性

    并发性是指同一时间间隔内发生两个或多个事件。并行性是指同一时刻内发生两个或多个事件
    1.并行与并发
    并行性和并发性 (Concurrence) 是既相似又有区别的两个概念,并行性是指两个或多个事件在同一时刻发生;而并发性是指两个或多个事件在同一时间间隔内发生。在多道程序环境下,并发性是指在一段时间内宏观上有多个程序在同时运行,但在单处理机系统中每一时刻却仅能有一道程序执行,故微观上这些程序只能是分时地交替执行。倘若在计算机系统中有多个处理机,则这些可以并发执行的程序便可被分配到多个处理机上,实现并行执行,即利用每个处理机来处理一个可并发执行的程序,这样,多个程序便可同时执行。

    2.引入进程
    应当指出,通常的程序是静态实体(Passive Entity),在多道程序系统中,它们是不能独立运行的,更不能和其它程序并发执行。在操作系统中引入进程的目的,就是为了使多个程序能并发执行。例如,在一个未引入进程的系统中,在属于同一个应用程序的计算程序和 I/O 程序之间,两者只能是顺序执行,即只有在计算程序执行告一段落后,才允许 I/O 程序执行;反之,在程序执行 I/O 操作时,计算程序也不能执行,这意味着处理机处于空闲状态 。但在引入进程后,若分别为计算程序和 I/O 程序各建立一个进程,则这两个进程便可并发执行。由于在系统中具备使计算程序和 I/O 程序同时运行的硬件条件,因而可将系统中的 CPU 和 I/O 设备同时开动起来,实现并行工作,从而有效地提高了系统资源的利用率和系统吞吐量,并改善了系统的性能。引入进程的好处远不止于此,事实上可以在内存中存放多个用户程序,分别为它们建立进程后,这些进程可以并发执行,亦即实现前面所说的多道程序运行。这样便能极大地提高系统资源的利用率,增加系统的吞吐量。为使多个程序能并发执行,系统必须分别为每个程序建立进程(Process)。简单说来,进程是指在系统中能独立运行并作为资源分配的基本单位,它是由一组机器指令、数据和堆栈等组成的,是一个能独立运行的活动实体。多个进程之间可以并发执行和交换信息。一个进程在运行时需要一定的资源,如 CPU、存储空间及 I/O 设备等。OS 中程序的并发执行将使系统复杂化,以致在系统中必须增设若干新的功能模块,分别用于对处理机、内存、I/O 设备以及文件系统等资源进行管理,并控制系统中作业的运行。事实上,进程和并发是现代操作系统中最重要的基本概念,也是操作系统运行的基础

    3.引入线程
    长期以来,进程都是操作系统中可以拥有资源并作为独立运行的基本单位。当一个进程因故不能继续运行时,操作系统便调度另一进程运行。由于进程拥有自己的资源,故使调度付出的开销较大。直到 20 世纪 80 年代中期,人们才又提出了比进程更小的单位——线程(Threads)。通常在一个进程中可以包含若干个线程,它们可以利用进程所拥有的资源。在引入线程的 OS 中,通常都是把进程作为分配资源的基本单位,而把线程作为独立运行和独立调度的基本单位。由于线程比进程更小,基本上不拥有系统资源,故对它的调度所付出的开销就会小得多,能更高效地提高系统内多个程序间并发执行的程度。因而近年来推出的通用操作系统都引入了线程,以便进一步提高系统的并发性,并把它视作现代操作系统的一个重要标致。

    6.2、共享性

    在操作系统环境下,所谓共享 (Sharing), 是指系统中的资源可供内存中多个并发执行的进程(线程)共同使用,相应地,把这种资源共同使用称为资源共享,或称为资源复用。由于各种资源的属性不同,进程对资源复用的方式也不同,目前主要实现资源共享的方式有如下两种。

    • 1.互斥共享方式
      系统中的某些资源,如打印机、磁带机,虽然它们可以提供给多个进程(线程)使用,但为使所打印或记录的结果不致造成混淆,应规定在一段时间内只允许一个进程(线程)访问该资源。为此,系统中应建立一种机制,以保证对这类资源的互斥访问。当一个进程 A 要访问某资源时,必须先提出请求。如果此时该资源空闲,系统便可将之分配给请求进程 A 使用。此后若再有其它进程也要访问该资源时(只要 A 未用完),则必须等待。仅当 A 进程访问完并释放该资源后,才允许另一进程对该资源进行访问。我们把这种资源共享方式称为互斥式共享,而把在一段时间内只允许一个进程访问的资源称为临界资源或独占资源。计算机系统中的大多数物理设备,以及某些软件中所用的栈、变量和表格,都属于临界资源,它们要求被互斥地共享。为此,在系统中必需配置某种机制来保证诸进程互斥地使用独占资源。
    • 2.同时访问方式
      系统中还有另一类资源,允许在一段时间内由多个进程“同时”对它们进行访问。这里所谓的“同时”,在单处理机环境下往往是宏观上的,而在微观上,这些进程可能是交替地对该资源进行访问。典型的可供多个进程“同时”访问的资源是磁盘设备,一些用重入码编写的文件也可以被“同时”共享,即若干个用户同时访问该文件。并发和共享是操作系统的两个最基本的特征,它们又是互为存在的条件。一方面,资源共享是以程序(进程)的并发执行为条件的,若系统不允许程序并发执行,自然不存在资源共享问题;另一方面,若系统不能对资源共享实施有效管理,协调好诸进程对共享资源的访问,也必然影响到程序并发执行的程度,甚至根本无法并发执行。

    6.3、虚拟技术

    操作系统中的所谓“虚拟” (Virtual) ,是指通过某种技术把一个物理实体变为若干个逻辑上的对应物。物理实体(前者)是实的,即实际存在的,而后者是虚的,仅是用户感觉上的东西。相应地,用于实现拟的技术称为虚拟技术。在操作系统中利用了两种方式实现虚拟技术,即时分复用技术和空分复用技术。
    1、时分复用技术
    时分复用,亦即分时使用方式,它最早用于电信业中。为了提高信道的利用率,人们利用时分复用方式,将一条物理信道虚拟为多条逻辑信道,将每条信道供一对用户通话。在计算机领域中,广泛利用该技术来实现虚拟处理机、虚拟设备等,以提高资源的利用率。

    1. 虚拟处理机技术
    2. 虚拟设备技术

    2.空分复用技术
    早在上世纪初,电信业中就使用频分复用技术来提高信道的利用率。它是将一个频率范围非常宽的信道,划分成多个频率范围较窄的信道,其中的任何一个频带都只供一对用户通话。早期的频分复用只能将一条物理信道划分为十几条到几十条话路,后来又很快发展成上万条话路,每条话路也只供一对用户通话。之后,在计算机中也使用了空分复用技术来提高存储空间的利用率。

    1. 虚拟磁盘技术
    2. 虚拟存储器技术

    应当着重指出:如果虚拟的实现是通过时分复用的方法来实现的,即对某一物理设备进行分时使用,设 N 是某物理设备所对应的虚拟的逻辑设备数,则每台虚拟设备的平均速度必然等于或低于物理设备速度的 1/N。类似地,如果是利用空分复用方法来实现虚拟,此时一台虚拟设备平均占用的空间必然也等于或低于物理设备所拥有空间的 1/N。

    6.4、异步性

    在多道程序环境下允许多个进程并发执行,但只有进程在获得所需的资源后方能执行。在单处理机环境下,由于系统中只有一台处理机,因而每次只允许一个进程执行,其余进程只能等待。当正在执行的进程提出某种资源要求时,如打印请求,而此时打印机正在为其它某进程打印,由于打印机属于临界资源,因此正在执行的进程必须等待,且放弃处理机,直到打印机空闲,并再次把处理机分配给该进程时,该进程方能继续执行。可见,由于资源等因素的限制,使进程的执行通常都不是“一气呵成”,而是以“停停走走”的方式运行。

    内存中的每个进程在何时能获得处理机运行,何时又因提出某种资源请求而暂停,以及进程以怎样的速度向前推进,每道程序总共需多少时间才能完成,等等,这些都是不可预知的。由于各用户程序性能的不同,比如,有的侧重于计算而较少需要 I/O,而有的程序其计算少而 I/O 多,这样,很可能是先进入内存的作业后完成,而后进入内存的作业先完成。或者说,进程是以人们不可预知的速度向前推进,此即进程的异步性(Asynchronism)。尽管如此,但只要在操作系统中配置有完善的进程同步机制,且运行环境相同,作业经多次运行都会获得完全相同的结果。因此,异步运行方式是允许的,而且是操作系统的一个重要特征。

    展开全文
  • 文章目录目录操作系统的起源操作系统和高级编程语言使硬件抽象化 操作系统的起源 在操作系统尚不存在的年代,人们通过各种按钮来控制计算机,这一过程非常麻烦。于是,有人开发出了仅仅具有加载和运行功能的监控程序...

    目录

    操作系统的起源

    在操作系统尚不存在的年代,人们通过各种按钮来控制计算机,这一过程非常麻烦。于是,有人开发出了仅仅具有加载和运行功能的监控程序(Supervisor),这就是操作系统的原型。

    通过监控程序,程序员可以根据需要将各种应用程序加载到内存中运行。虽然仍旧比较麻烦,但现在开发的工作量得到了很大的缓解。
    在这里插入图片描述

    随着时代的发展,人们在使用监控程序编写程序的过程中发现了很多程序都具有公共的部分。例如:通过键盘进行文字输入,显示器进行数据展示等。如果每编写一个新的应用程序都需要进行相同重复工作的话,那真是太浪费时间了。因此,部分可重用的程序就被追加到了监控程序中。操作系统的原型就是这样诞生的。

    展开全文
  • 操作系统原理1-3章答案 黑新宏 胡元义主编

    万次阅读 多人点赞 2019-09-04 10:12:33
    只有在作业调度程序将作业装入内存后才能参与进程调度,本题的批处理系统为两道作业系统,即内存中最多允许有两道作业。 10:00时,作业A到达并且投入运行; 10:20时,作业B达到且优先级高于作业A,所以进程调度...

    在这里插入图片描述

    第1章引论
    一、单项选择题
    1.A 2. C 3. D 4. A 5.A 6. C 7. C 8. D 9. C 10.C
    11. D 12.A 13.C 14.D 15.D 16.C 17.D 18.C 19.B 20.C
    21.D 22.D 23.C 24.B 25.C 26.B

    二、判断题
    1.错误 2. 错误 3.错误 4. 错误 5.错误 6.错误 7.正确 8.错误 9.错误 10.错误
    11.正确 12.错误 13.正确 14.错误 15.错误 16.正确 17.错误 18.错误 19.正确
    20.正确 21.正确

    第2章处理器管理
    一、单项选择题
    1.D 2. A 3.A 4. C 5.C 6. C 7. A 8. C 9. B 10.C
    11. C 12.D 13.A 14.A 15.D 16.A 17.B 18.B 19.B 20.A
    21.A 22.B 23.D 24.B 25.C 26.C 27.C 28.C 29.D 30.B
    31.D 32.B 33.C 34.C D 35.B 36.A
    二、判断题
    1.错误 2. 错误 3.错误 4. 错误 5.错误 6.错误 7. 错误8.正确 9.错误 10.错误
    11. 错误12.正确13. 错误14.错误 15.错误 16. 错误 17. 正确 18.错误 19.错误 20.错误
    四、应用题
    2. 由于短作业优先调度算法使得系统平均响应时间最短:
    (1)当0<x<=3时应采用的运算次序为x,3,5,6,9
    (2)当3<x<=5时应采用的运算次序为3,x, 5,6,9
    (3)当5<x<=6时应采用的运算次序为3,5,x,6,9
    (4)当6<x<=9时应采用的运算次序为3,5,6,x,9
    (5)当9<x时应采用的运算次序为3,5,6, 9 ,x
    3.
    (1)采用先来先服务调度算法的作业运行情况:
    作业执行次序 提交时间 运行时间 等待时间 开始时间 完成时间 周转时间 带权周转时间
    1 8.0 1.0 0 8.0 9.0 1.0 1.0
    2 8.5 0.5 0.5 9.0 9.5 1.0 2.0
    3 9.0 0.2 0.5 9.5 9.7 0.7 3.5
    4 9.1 0.1 0.6 9.7 9.8 0.7 7.0
    作业平均周转时间 T=(1.0+1.0+0.7+0.7)/4=0.85
    作业平均带权周转时间 W=(1.0+2.0+3.5+7.0)/4=3.375

    (2)采用短作业优先调度算法的作业运行情况:
    作业执行次序 提交时间 运行时间 等待时间 开始时间 完成时间 周转时间 带权周转时间
    1 8.0 1.0 0 8.0 9.0 1.0 1.0
    2 9.0 0.2 0 9.0 9.2 0.2 1.0
    3 9.1 0.1 0.1 9.2 9.3 0.2 2.0
    4 8.5 0.5 0.8 9.3 9.8 1.3 2.6
    作业平均周转时间 T=(1.0+0.2+0.2+1.3)/4=0.675
    作业平均带权周转时间 W=(1.0+1.0+2.0+2.6)/4=1.65

    (3)采用高相应比优先算法的作业运行情况:
    作业执行次序 提交时间 运行时间 等待时间 开始时间 完成时间 周转时间 带权周转时间
    1 8.0 1.0 0 8.0 9.0 1.0 1.0
    2 8.5 0.5 0.5 9.0 9.5 1.0 2.0
    3 9.1 0.1 0.4 9.5 9.6 0.5 5.0
    4 9.0 0.2 0.6 9.6 9.8 0.8 4.6
    作业平均周转时间 T=(1.0+1.0+0.5+0.8)/4=0.825
    作业平均带权周转时间 W=(1.0+2.0+5.0+4.0)/4=3

    采用先来先服务调度算法作业运行情况
    作业次序 提交时间 运行时间 等待时间 开始时间 完成时间 周转时间
    1 0.0 8.0 0.0 0.0 8.0 8.0
    2 0.4 4.0 7.6 8.0 12.0 11.6
    3 1.0 1.0 11.0 12.0 13.0 12.0
    作业平均周转时间 (8.0+11.6+12.0)/3=10.53

    采用短作业优先调度算法作业运行情况
    作业次序 提交时间 运行时间 等待时间 开始时间 完成时间 周转时间
    1 0.0 8.0 0.0 0.0 8.0 8.0
    2 1.0 1.0 7.0 8.0 9.0 8.0
    3 0.4 4.0 8.6 9.0 13.0 12.6
    作业平均周转时间 (8.0+8.0+12.6)/3=9.53

    作业1达到后暂不投入运行,待3个作业到齐后再按短作业优先算法调度执行。
    推迟的短作业优先调度算法作业运行情况
    作业次序 提交时间 运行时间 等待时间 开始时间 完成时间 周转时间
    3 1.0 1.0 0.0 1.0 2.0 1.0
    2 0.4 4.0 1.6 2.0 6.0 5.6
    1 0.0 8.0 6.0 6.0 14.0 14.0
    作业平均周转时间 (1.0+5.6+14.0)/3=6.87

    在这里插入图片描述
    1)J1从开始到运行完成需要80ms,J2从开始到运行完成需要90ms,J3从开始到运行完成需要90ms.
    (2)CPU利用率=CPU有效工作时间/(CPU有效工作时间+CPU空闲时间)
         =70/(70+20)=77.78%
    (3)IO1利用率= IO1有效工作时间/(IO1有效工作时间+IO1空闲时间)
    =70/(70+20)=77.78%

    (1)每道作业的运行经历两级调度:作业调度和进程调度。作业调度采用短作业优先调度算法,进程调度采用基于优先数的抢占式调度算法,即高优先级进程可以抢占低优先级进程所占用的CPU。只有在作业调度程序将作业装入内存后才能参与进程调度,本题的批处理系统为两道作业系统,即内存中最多允许有两道作业。
    10:00时,作业A到达并且投入运行;
    10:20时,作业B达到且优先级高于作业A,所以进程调度程序调度作业B投入运行,作业A进入就绪队列;
    10:30时,作业C到达,内存中已有两道作业,所以作业C进入作业后备队列中等待;
    10:50时,作业B运行结束且作业D到达。按短作业优先调度策略,作业D被调入内存并进入就绪队列,而就绪队列中作业A的优先级高于作业D,所以进程调度程序调度作业A运行;
    11:10时,作业A运行结束,作业C被调入内存进入就绪队列,因作业C的优先级高于作业D,所以进程调度程序调度作业C运行;
    12:00时,作业C运行结束,进程调度程序调度作业D运行;
    12:20时,作业D运行结束,此时就绪队列中无可调度执行的作业,即全部作业都运行结束。
    (2)各作业执行的周转时间:
    作业A:70分钟; 作业B:30分钟; 作业C:90分钟; 作业D:90分钟
    作业的平均周转时间为:(70+30+90+90)/4=70分钟

    第3章进程同步与通信
    一、单项选择题

    1. D 2. D 3. D 4. C 5.D 6. D 7. C 8. C 9. C 10.D
    2. B 12.C 13.D 14.C 15.B 16.C 17.C 18.D 19.A 20.C
      21.C 22.D 23.C 24.C 25.C 26.B 27.A 28.D 29.B 30.D

    二、判断题

    1. 正确 2. 错误 3.错误 4. 错误 5.正确6.错误 7.正确 8. 正确9. 正确10.错误
    2. 错误12.错误 13.正确 14.错误 15.错误 16.正确 17.错误

    Semaphore mutex;
    Mutex.value=100;
    cobegin
    process reader_i() / /i=1,2,3……
    {
    P(mutex);
    进入阅览室;
    阅读;
    退出阅览室;
    V(mutex);
    }
    Coend

    进程P1 进程P2

    P(S1) P(S2)

    捡一白子 捡一黑子

    V(S1) V(S2)

    先让进程P1捡白子,则信号量S1.value 和S2.value的初值分别为1和0:
    Semaphore S1,S2;
    S1.value=1; S2.value=0;
    cobegin
    process P1( )
    {
    while(白子不空)
    {
    P(S1);
    捡白子;
    V(S2);
    }
    }
    process P2( )
    {
    while(黑子不空)
    {
    P(S2);
    捡黑子;
    V(S1);
    }
    }
    coend

    1. R M P的同步关系用并发程序实现如下:
      Semaphore a,b,c;
      a.value=b.value=c.value=1;
      cobegin
      process R()
      {
      while (1)
      { P©;
      从输入设备读一个记录到缓冲区;
      V(a);
      }
      }

    process M()
    {
    while (1)
    { P(a);
    在缓冲区中加工读入的记录;
    V(b);
    }
    }

    process P()
    {
    while (1)
    { P(b);
    打印加工后的记录;
    V©;
    }
    }
    coend

    Semaphore fork1,fork2,knife1,knife2;
    fork1.value=fork2.value=knife1.value=knife2lvalue=1;
    cobegin
    process P_i( ) //i=0,1,2,3
    {
    while(1)
    {
    讨论问题;
    if (i0||i3) P(knife1)
    else P(knife2);
    if (i0||i1) P(fork1)
    else P(fork2);
    进餐;
    if (i0||i3) V(knife1)
    else V(knife2);
    if (i0||i1) V(fork1)
    else V(fork2);
    }
    }
    coend

    Semaphore keyboard,disk,mutex;
    Keyboard.value=0, disk.value=0, mutex.value=1;
    cobegin
    process R1()
    {
    while (1)
    {
    P(mutex);
    从键盘读数到缓冲区B;
    V(keyboard);
    }
    }

    process R2()
    {
    while (1)
    {
    P(mutex);
    从键盘读数到缓冲区B;
    V(disk);
    }
    }

    process W1()
    {
    while (1)
    {
    P(keyboard);
    从缓冲区B取出数据打印;
    V(mutex);
    }
    }
    process W2()
    {
    while (1)
    {
    P(disk);
    从缓冲区B取出数据打印;
    V(mutex);
    }
    }
    Coend

    Semaphore mutex, empty, apple,orange;
    mutex.value=1, empty.value=2, apple.value=orange.value=0;
    cobegin
    process father()
    {
    while(1)
    {
    P(empty);
    P(mutex);
    向盘中放苹果;
    V(mutex);
    V(apple);
    }
    }

    process mother()
    {
    ……
    }

    process daughter_i()
    {
    while(1)
    {
    P(apple);
    P(mutex);
    取盘中苹果;
    V(mutex);
    V(empty);
    吃苹果;
    }
    }

    process son_i()
    {
    ……
    }

    Coend

    展开全文
  • 计算机操作系统原理与设计.pdf 下载
  • 计算机相关专业必修课程操作系统原理(第四版)课后练习题答案,欢迎大家下载~~~
  • 操作系统原理基础知识

    万次阅读 多人点赞 2018-04-19 01:36:38
    操作系统原理我们每天都同操作系统打交道,了解一些操作系统原理上的知识是绝对有必要的,它可以让你了解操作系统内部是怎么工作的,为什么会出现这样那样的问题,为我们解决这些问题提供思路。 本文完全是为普通...
  • Linux 操作系统原理 — 系统结构

    千次阅读 2020-05-02 18:56:45
    目录 ...其中,内核、Shell 和文件系统一起形成了基本的操作系统结构,它们使得用户可以运行应用程序、管理文件并使用系统。 Linux 内核 内核是操作系统的核心,具有很多最基本功能,它负责管理系...
  • 操作系统原理之地址转换

    千次阅读 2020-08-13 17:16:40
  • 李治军老师所著《操作系统原理、实现与实践》课后习题,答案均为个人编写,错误在所难免,希望可以多多指教,共同进步。
  • 5个批处理作业A~E到达系统的时间、需要运行的时间及各自的优先级如下表所示,分别采用先来先服务算法、最短作业优先算法、最短作业优先算法、最短剩余时间优先算法、抢占式优先数算法、时间片轮转算法(每个作业获得...
  • 操作系统原理及应用(Linux)课后习题解析 王红 主编

    万次阅读 多人点赞 2020-12-25 21:24:56
    第一章 :操作系统概论 习题一 1.1 什么是操作系统,有那些基本功能和特点 操作系统是覆盖在裸机上的第一层软件,他直接控制,管理各种资源 基本功能: 提供人机接口 命令级接口 程序级接口 图形界面 ...
  • 操作系统原理实验报告+源代码,哲学家就餐问题有界面,且能在死锁与不死锁情况下运行,生产者与消费者问题也有界面···
  • 操作系统原理总结

    万次阅读 多人点赞 2018-07-10 23:15:47
    转载:https://blog.csdn.net/yanglingwell/article/details/53745758 操作系统原理总结made by @杨领well (yanglingwell@sina.com)一、基础知识点1. 操作系统的资源管理技术资源管理解决物理资源数量不足和合理...
  • 实时操作系统(RTOS)是指当外界事件或数据产生时,能够接受并以足够快的速度予以处理,其处理的结果又能在规定的时间之内来控制生产过程或对处理系统作出快速响应,并控制所有实时任务协调一致运行的操作系统。...
  • 计算机操作系统原理

    千次阅读 2018-09-29 16:42:50
    最近准备i面试,抽时间回顾一下计算机操作系统原理. -2018.10.1 1、硬件基础 计算机的构成: 处理器(CPU):主要包括运算器、控制器 内存(主存储器) 输入输出设备 详细的讲,CPU内部包括: 存储器地址寄存器...
  • Linux操作系统原理与应用(陈莉君)

    千次阅读 2017-07-05 16:32:19
    《Linux操作系统原理与应用》作者陈莉君是翻译《深入理解Linux内核》的作者。 虽然我不觉得《深入理解Linux内核》翻译得很好,但是从作者这种为推广Linux内 核而努力的精神还是挺佩服的,因此,这里无私分享出学习...
  • 操作系统原理》课程中涉及的数据结构总结

    千次阅读 多人点赞 2017-02-16 21:02:50
    操作系统原理课程里面有很多数据结构的实现,部分归纳总结如下:链表 进程管理-PCB的连接 外存分配方式-链接分配 队列 进程通信-消息队列的实现 处理机调度-任务就绪列队的实现 存储器管理-Clock置换算法的实现...
  • 操作系统原理.pdf

    热门讨论 2011-08-11 16:03:42
    本书用通俗的语言、生动的图片、丰富的例题介绍了操作系统经典的设计原理和最新的发展成果,还结合主流操作系统平台,组织了多个丰富而有趣的实验内容,安排了大量各种难度的练习题,并附有参考答案,以便于自学、选...
  • 此时,若进程T2也想进入临界区而调用P 操作,那么,P 操作便会阻塞T2 并使它等待mutex。当T1离开临界区时,它调用V 操作,V 操作将唤醒等待mutex 的进程T2;于是T2 就可进入临界区执行。事实上,当进程T1 和T2 只有...
  • 三大操作系统是什么,各自的主要特点是什么   大题: 基于分页或分段机制,给出逻辑地址计算物理地址 P,V 信号量操作 银行家算法 磁盘调度算法 内存...
  • Windows操作系统原理笔记

    千次阅读 2013-06-30 17:40:22
    2.2 Windows 2000/xp 操作系统模型 这个系统融合了分层操作系统和客户/服务器(微内核)操作系统的特点.通过硬件机制实现了 核心态 Kernel mode 和 用户态 user mode 2个特权级别. 内存管理器,告诉缓存...
  • 操作系统原理及应用(LINUX).pdf

    热门讨论 2007-06-19 07:56:03
    操作系统原理及应用 基于 linux
  • 计算机操作系统是计算机专业必修的专业基础课程,是考研的必考科目。它的特点是概念多、较抽象和涉及面广,所以无论是大学学习还是考研,很多同学都把它当做一块硬骨头,其实只要我们掌握正确的学习方法,操作系统...
  • 操作系统原理学习总结

    千次阅读 2015-08-08 16:21:11
    1.操作系统本质上属于软件的范畴,是一种比较特殊的,系统级的应用软件,所以,我们就可以用应用软件开发的普遍原理来理解操作系统操作系统从字符界面到图形界面的进化和发展过程,就是就是不断满足用户需求的过程...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,302,096
精华内容 520,838
关键字:

操作系统原理