前言
操作系统是计算机系统中的一个系统软件,是一些程序模块的集合-----
1) 它们能以尽量有效、合理的方式组合和管理计算机的软硬资源;
2) 合理地组织计算机的工作流程,控制程序的执行并向用户提供各种服务功能;
3) 使得用户能够灵活、方便地使用 计算机,使得整个计算机系统高效运行;
一、操作系统概念
(1)什么是操作系统
在回答这个问题之前,我们先来了解一下什么是计算机系统。计算机系统是按用户的要求接收和存储信息、自动进行数据处理并输出结果信息的系统。
计算机系统由硬件系统和软件系统组成。软硬件系统的组成部分就是计算机系统的资源,当不同的用户使用计算机时都要占用系统资源并且有不同的控制需求。
操作系统就是计算机系统的一种系统软件,由它统一管理计算机系统的资源和控制程序的执行。
操作系统的设计目标一是使计算机系统使用方便。二是使得计算机系统能高效地工作。
(2)操作系统的形成
早期没有操作系统→原始汇编系统→管理程序→操作系统 可以看到,操作系统是随着计算机硬件的发展和应用需求的推动而形成的。
(3)操作系统的类型
按照操作系统提供的服务,大致可以把操作系统分为以下几类:
批处理操作系统、分时操作系统、实时操作系统、网络操作系统和分布式操作系统。其中批处理操作系统、分时操作系统、实时操作系统是基本的操作系统。
1、批处理操作系统按照用户预先规定好的步骤控制作业的执行,实现计算机操作的自动化。又可分为批处理单道系统和批处理多道系统。单道系统每次只有一个作业装入计算机系统的主存储器运行,多个作业可自动、顺序地被装入运行。批处理多道系统则允许多个作业同时装入主存储器,中央处理器轮流地执行各个作业,各个作业可以同时使用各自所需的外围设备,这样可以充分利用计算机系统的资源,缩短作业时间,提高系统的吞吐率。
2、分时操作系统,这种系统中,一个计算机系统与许多终端设备连接,分时系统支持多个终端用户,同时以交互方式使用计算机系统,为用户在测试、修改和控制程序执行方面提供了灵活性。分时系统的主要特点是同时性、独立性、及时性和交互性。
3、实时操作系统能使计算机系统接收到外部信号后及时进行处理,并在严格的规定时间内完成处理,且给出反馈信号。它是较少有人为干预的监督和控制系统。实时系统对可靠性和安全性要求极高,不强求系统资源的利用率。
4、网络操作系统可以把若干计算机联合起来,实现各台计算机之间的通信及网络中各种资源的共享,像我们现在使用的Windows ,UNIX和Linux等操作系统都是网络操作系统。
5、分布式操作系统的网络中各台计算机没有主次之分,在任意两台计算机间的可进行信息交换和资源共享。这一点上分布式操作系统和网络操作系统差别不大,他们的本质区别在于:分布式操作系统能使系统中若干计算机相互协作完成一个共同的任务。这使得各台计算机组成一个完整的,功能强大的计算机系统。
(4)操作系统的功能
从资源管理的观点出发,操作系统功能可分为五大部分:处理器管理、存储管理、文件管理、设备管理和作业管理。
二、操作系统结构
计算机系统是由硬件系统和软件系统两部分组成,操作系统是软件系统的一个组成部分,它是直接在硬件系统的基础上工作的,所以在研究操作系统之前,先必须对计算机系统的结构有一个基本的了解,本章就是讲述计算机系统结构的基本知识。
(1)计算机系统的层次结构
现代的通用计算机系统是由硬件和软件组成的一种层次式结构,最内层是硬件系统,最外层是使用计算机系统的人,人与硬件系统之间是软件系统。
操作系统的运行方式:中断机制
中央处理器 CPU 在任何时刻 只能被一个程序占用 ,在它执行程序的时候,如果有另外的事件发生,比如用户又打开了一个程序,那么这时候怎么办呢? 这就需要由计算机系统的中断机制来处理了。中断机制包括 硬件的中断装置 和 操作系统的中断处理服务程序 。当出现新的事件时, 中断装置 就判别到有新事件发生,于是送出一个 中断信号 ,告诉 操作系统 ,操作系统根据这个中断的优先级来确定先执行新事件还是继续执行原来的任务。
中断现场的保护和恢复
(2)硬件环境
1、CPU和外设的并行工作
在一台通用的计算机系统中,通过 输入输出控制系统 完成外围设备与主存储器之间的信息传送。各种外设连接在相应的 设备控制器 上,通过 通道 把设备控制器连接到 公共的系统总线 上。这种结构允许CPU和各种外围设备同时并行工作。
2、I/O中断的作用
当中央处理器执行到一条“启动外设”指令时,便把设备的控制权交给输入输出控制系统,然后,中央处理器和外围设备便可以并行工作,直到外设工作完成。之后,会形成一个“I/O中断”事件(输入输出结束),通知操作系统的服务处理程序完成后继工作。
利用硬件的中央处理器与外围设备的并行工作能力,以及各外围设备之间的并行工作能力,操作系统能让多个程序同时执行。
3、存储结构
主存储器 是CPU能直接访问的 惟一 的存储空间,任何程序和数据都必须被装入主存储器之后,CPU才能对它进行操作。主存储器以“字节(BYTE)”为单位进行编址,若干字节组成一个“字(WORD)”。中央处理器可以按地址读出主存储器中的一个字节或一个字的内容。
辅助存储器解决了主存储器容量不足,以及主存储器无法保存信息的问题。辅助存储器的优点是容量大且能永久保存信息,缺点是无法被中央处理器直接访问,必须通过主存储器才能访问。
中央处理器存储信息的速度依次为:存取寄存器中的信息速度最快;通过系统总线存取主存储器的速度居中;使用辅助存储器的信息速度最慢。
寄存器用来存放临时的工作信息和系统必须的控制信息。
主存储器中存放操作系统的核心部分,以及当前需执行的程序和数据。
辅助存储器是存放操作下的非核心部分和其他程序和数据。
磁盘的信息可随机存取,磁带上的信息只能顺序存取。
4、硬件保护
在资源共享的计算机系统中,只有有了必要的保护措施,才能使个别的错误不致影响其他程序。
<1> I/O保护
为保护输入输出的完整性,把“启动I/O”等的一类 可能影响系统安全的指令 定义为 特权指令 。特权指令只允许操作系统使用,用户程序不能使用特权指令。用户程序 若要启动I/O,必须 请求 操作系统代为启动,这种方式不但可以保证安全地使用外围设备,正确地传送信息,而且可减少用户为启动设备而必须了解外围设备特性以及启动等工作,大大方便了用户。
<2> 管态和目态
中央处理器有两种工作方式:管态和目态。
在 管态 下,中央处理器可执行包含特权指令在内的一切指令;在 目态 下,中央处理器不准执行特权指令。
操作系统在管态下工作,用户程序在目态下工作。
<3> 存储保护
硬件中设置了两个寄存器来限定用户程序执行时可以访问的空间范围。这两个寄存器是 基址寄存器 和 限长寄存器 。
中央处理器在目态下执行程序时,只有在判定访问地址符合以下关系式时候才允许访问:
基址寄存器值 ≤ 访问地址 ≤ 基址寄存器值 + 限长寄存器值
中央处理器在 管态下执行 程序时候,对访问主存的地址 不进行核对 。
(3)操作系统结构( 识记 )
1、操作系统的层次结构
层次结构的最大特点是把整体问题局部化。把一个大型复杂的操作系统分解成若干单向依赖的层次,由各层的正确性来保证整个操作系统的正确性。
采用层次结构,能使结构清晰,便于调试,有利于功能的增、删和修改,正确性容易得到保证,也提高了系统的可维护性和可移植性。
操作系统的一种层次结构如下图所示:
作业管理
文件管理
设备管理
存储管理
处理器管理
硬件这种结构具有单向依赖关系,即外层依赖内层的关系。
层次结构 的主要优点是有利于系统设计和调试;主要困难在于层次的划分和安排。
<1>作业控制语言和控制命令
操作系统提供给用户表示作业执行步骤的手段有两种: 作业控制语言 和 操作控制命令 。
用户用作业控制语言编写“作业控制说明书”,从而形成批处理作业。用户使用键盘输入操作控制命令或者选择菜单命令,进行交互处理。
<2> 系统调用
操作系统编制了许多 不同功能的子程序 ,供用户程序在执行中调用,这些子程序称为“系统功能调用”程序或“系统调用”。
·系统调用过程
系统调用 往往在 管态 下执行。用户程序在调用系统调用时,编译系统会生成一条“访管指令”。程序执行时,CPU取到访管指令就产生中断事件,操作系统即调用相应的系统调用子程序为其服务,并在管态下工作,处理完后,返回目态及用户程序。
·系统调用分类
操作系统提供的系统调用主要有: 文件操作类 ,如打开文件,读、写文件等; 资源申请类 ,如请求主存分配和归还,外设的分配和归还等; 控制类 ,如程序正常结束,异常结束和返回断点等; 信息维护类 ,如日期时间的设置和查询,文件属性的设置和查询
三、多道程序
重点是:多道程序设计;进程的定义和属性;进程调度策略。
(1) 多道程序设计( 领会 )
1、什么是多道程序设计。
让多个计算问题同时装入一个计算机系统的主存储器并行执行,这种设计技术称“ 多道程序设计 ”,这种计算机系统称“多道程序设计系统” 或简称“多道系统”。
存储保护 :在多道程序设计的系统中,主存储器中同时存放了多个作业的程序。为避免相互干扰,必须提供必要的手段使得在主存储器中的各道程序只能访问自己的区域。这样,每道程序执行时,都不会破坏其他各道的程序和数据。特别是当某道程序发生错误的时,也不至于影响其它的程序。
程序浮动 :在多道程序设计系统中,对程序有一些特殊要求,也就是说,程序可以随机地从主存的一个区域移动到另一个区域,程序被移动后仍丝毫不影响它的执行,这种技术称为“程序浮动”。
在多道程序设计的系统中,有三点基本要求:
用“存储保护”的方法保证各道程序互不侵犯;
用“程序浮动”技术让程序能灵活地改变存放区域且能正确执行;
必须对资源按一定的策略分配和调度。
2、 多道程序设计 利用了系统与外围设备的并行工作能力,从而提高工作效率。具体表现为:
提高了处理器的利用率;
充分利用外围设备资源:计算机系统配置多种外围设备,采用多道程序设计并行工作时,可以将使用不同设备的程序搭配在一起同时装入主存储器,使得系统中各外围设备经常处于忙碌状态,系统资源被充分利用;
发挥了处理器与外围设备以及外围设备之间的并行工作能力;
从总体上说,采用多道程序设计技术后,可以有效地提高系统中资源的利用率,增加单位时间内的算题量,从而提高了吞吐率。
3、 多道程序设计 对算题量和算题时间的影响。 采用多道程序设计能改变系统资源的使用情况,提高系统效率。但是应注意以下两个问题:
可能延长程序的执行时间;
并行工作道数与系统效率不成正比。从表面上看,增加并行工作道数就可提高系统效率,但实际上并行工作道数与系统效率是不成正比,因为并行的道数要根据系统配置的资源和用户对资源的要求而定:
<1>主存储器的大小限制了可同时装入的程序数量;
<2>外围设备的数量也是一个制约条件;
<3>多个程序同时要求使用同一资源的情况也会经常发生。
总之,多道程序设计能提高系统资源的使用效率,增加单位时间的算题量;但是对每个计算问题来说,从算题开始到全部完成所需要的时间可能延长,另外在确定并行工作道数时应综合系统的资源配置和用户对资源的要求。
(2)进程( 领会 )
1、 进程 的定义:把一个程序在一个数据集上的一次执行称为一个“进程”。
2、 进程是由 程序 、 数据集 和 进程控制块 三部分组成。
我们举一个例子,比如在有一个用户程序notepad.exe(记事本),当它存放在磁盘上时,就是一个程序,在windows操作系统下运行它时,就会在内存中建立一个记事本程序的进程,而我们在记事本中编辑的当前文字就是这个进程的数据集,操作系统会为当前的进程设置一个进程控制块。如果我们再打开一个记事本程序的窗口,就会建立另一个进程,此时运行的是同一个程序,但存在两个进程,第二个窗口中的编辑内容就是第二个进程的数据集。
3、 进程 与 程序 的区别及关系。程序是静止的,进程是动态的。进程包括程序和程序处理的对象(数据集),进程能得到程序处理的结果。进程和程序并非一一对应的,一个程序运行在不同的数据集上就构成了不同的进程。通常把进程分为“系统进程”和“用户进程”两大类,把完成操作系统功能的进程称为系统进程,而完成用户功能的进程则称为用户进程。
三、 进程状态( 领会 )
1、进程的 三种基本状态 .通常,根据进程执行过程中不同时刻的状态,可归纳为三种基本状态:
等待态:等待某个事件的完成;
就绪态:等待系统分配处理器以便运行;
运行态:占有处理器正在运行。
2、进程的状态变化
进程在执行中状态会不断地改变,每个进程在任何时刻总是处于上述三种基本状态的某一种基本状态,进程状态之间转换关系如下图所示:
运行态→等待态 往往是由于等待外设,等待主存等资源分配或等待人工干预而引起的。
等待态→就绪态 则是等待的条件已满足,只需分配到处理器后就能运行。
运行态→就绪态 不是由于自身原因,而是由外界原因使运行状态的进程让出处理器,这时候就变成就绪态。例如时间片用完,或有更高优先级的进程来抢占处理器等。
就绪态→运行态 系统按某种策略选中就绪队列中的一个进程占用处理器,此时就变成了运行态。
进程有四个基本属性 :
多态性 从诞生、运行,直至消灭;
多个不同的进程可以包括相同的程序;
三种基本状态 它们之间可进行转换;
并发性 并发执行的进程轮流占用处理器。
四、进程控制块( 领会 )
1、 进程控制块 的基本内容。 通常进程控制块包含四类信息:
标志信息 含唯一的进程名
说明信息 有进程状态、等待原因、进程程序存放位置和进程数据存放位置
现场信息 包括通用、控制和程序状态字寄存器的内容
管理信息 存放程序优先数和队列指针
2、 进程控制块 的作用
进程控制块(Process Control Block,简称PCB),是操作系统为进程分配的用于标志进程,记录各进程执行情况的。进程控制块是进程存在的标志,它记录了进程从创建到消亡动态变化的状况,进程队列实际也是进程控制块的链接。操作系统利用进程控制块对进程进行控制和管理。
进程控制块的作用有:
<1>记录进程的有关信息,以便操作系统的进程调度程序对进程进行调度。这些信息包括标志信息、说明信息、现场信息和管理信息等;
<2>标志进程的存在,进程控制块是进程存在的唯一标志。
五、进程队列( 领会 )
1、进程队列的链接。
在多道程序设计的系统中往往会同时创建多个 进程 .在单处理器的情况下,每次只能让一个进程运行,其他的进程处于就绪状态或等待状态。为了便于管理,经常把处于相同状态的进程链接在一起,称“进程队列”,由于 进程控制块 能标志进程的存在和动态刻画进程的特性,因此, 进程队列 可以用 进程控制块 的连接来形成。链接的方式有两种:单向链接和双向链接。
2、进程基本队列
就绪队列 :由若干就绪进程按一定次序链接起来的队列。
等待队列 :把等待资源或等待某些事件的进程排列的队列
3、进程的入队和出队。
出队和入队 :当发生的某个事件使一个进程的状态发生变化时,这个进程就要退出所在的某个队列而排入到另一个队列中去。
出队:一个进程从所在的队列退出的操作称为出队
入队:一个进程排入到一个指定的队列的操作称为入队。
系统中负责进程入队和出队的工作称为队列管理。
无论单向链接还是双向链接,解决入,出队问题,都是首先找到该队列的队首指针,沿链找出要入队的进程以及它要插入的位置,或找出要出队的进程,然后修改本进程指针(入队情况)和相邻进程的有关指针值即可。
六、可再入程序( 识记 )
1、什么是 可再入程序 : 一个能被 多个用户同时调用 的程序称做“ 可再入 ”的程序。
2、可再入程序的性质。
可再入程序必须是纯代码,在执行时自身不改变;
一个可再入程序要求调用者提供工作区,以保证程序以同样方式为各用户服务。
编译程序 和 操作系统程序 通常都是“可再入”程序,能同时被不同用户调用而构成不同的进程。
七、中断及中断响应( 领会 )
1、中断 的定义。
一个进程占有处理器运行时,由于自身或者外界的原因(出现了事件)使运行被打断,让操作系统处理所出现的事件,到适当的时候再让被打断的进程继续运行,这个过程称为“中断”。
2、中断 的类型。
从中断事件的性质出发,中断可以分为两大类:
强迫性中断事件 包括硬件故障中断,程序性中断,外部中断和输入输出中断等
自愿性中断事件 是由正在运行的进程执行一条访管指令用以请求系统调用而引起的中断,这种中断也称为“访管中断”。
自愿中断 的断点是确定的,而 强迫性中断 的断点可能发生在任何位置。
3、中断的响应和处理。
中断响应 (硬件即中断装置操作)
处理器每执行一条指令后,硬件的中断位置立即检查有无中断事件发生,若有中断事件发生,则暂停现行进程的执行,而让操作系统的中断处理程序占用处理器,这一过程称为“中断响应”。
中断响应过程中,中断装置要做以下三项工作:
是否有中断事件发生
判别自愿性中断,只要检查操作码是否为访管指令。
判别强迫性中断,则要检查中断寄存器内容。若为0,则无中断;若非0,则表示有中断事件发生。
若有中断发生,保护断点信息。
每个程序都有一个程序状态字(PSW)来反映本状态的执行状态,如基本状态、中断码和中断屏蔽位等内容。处理器设有一个“程序状态字寄存器”用来存放当前运行程序的PSW.程序状态字可分为当前PSW、旧PSW和新PSW.
当出现中断事件后,把被中断进程的PSW保存为旧PSW,即完成断点信息保护。
启动操作系统的中断处理程序工作
中断装置通过“交换PSW”过程完成此项任务,即把出现的中断事件存放到当前PSW中断码位置,然后把该当前PSW保存为旧PSW,再把操作系统中断处理程序的新PSW送到程序状态字寄存器中,成为当前的PSW。
中断处理 ( 软件即操作系统操作 )
操作系统的中断处理程序对中断事件进行处理时,大致要做三方面的工作:
保护被中断进程的现场信息
把中断时的通用寄存器,控制寄存器内容及旧PSW保存到被中断进程的进程控制块中。
分析中断原因
根据旧PSW的中断码可知发生该中断的具体原因。
处理发生的中断事件
一般只做一些简单处理,在多数情况下把具体的处理交给其他程序模块去做。
八、 中断优先级和中断屏蔽( 识记 )
1、 中断优先级 是硬件设计时确定的。中断装置按预定的顺序来响应同时出现的中断事件,这个预定的顺序称为“中断优先级”。中断优先级是按中断事件的重要性和紧迫程度来确定的 ,是由硬件设计时固定下来的。一般情况下,优先级的高低顺序依次为: 硬件故障中断 、 自愿中断 、 程序性中断 , 外部中断和输入输出中断 .
2、中断的嵌套处理
3、中断屏蔽的作用。中断优先级只是规定了中断装置响应同时出现的中断的次序,当中断装置响应了某个中断后中断处理程序在进行处理时,中断装置也可能去响应另一个中断事件。因此会出现优先级低的中断事件的处理打断优先级高的中断事件的处理,使得中断事件的处理顺序与响应顺序不一致,而且会形成多重嵌套处理,使多现场保护、程序返回等工作变的复杂。
中断屏蔽技术就是为了解决上述问题而提出的在一个中断处理没有结束之前不响应其他中断事件,或者只响应比当前级别高的中断事件。于是,当中断装置检查到有中断事件后,便去查看PSW中中断屏蔽标志,如果没有屏蔽就响应该中断;否则,暂时不响应该中断,待屏蔽标志消除后再响应。自愿中断是不能屏蔽的。
九、 进程调度( 领会 )
1、进程调度的职责。按选定的进程调度算法从就绪队列中选择一个进程,让它占用处理器。
2、选择进程调度算法的几个准则:
提高处理器利用率
增大吞吐量
减少等待时间
缩短响应时间
3、进程调度的常用算法: 先来先服务 、 优先数法 、 轮转法 、 分级调度 .
先来先服务调度算法 该算法按进程进入就绪队列的先后次序选择可以占用处理器的进程。
优先数调度算法 对每个进程确定一个优先数,该算法总是让优先数最高的进程先使用处理器。对具有相同优先数的进程,再采用先来先服务的次序分配处理器。系统常以任务的紧迫性和系统效率等因素确定进程的优先数。进程的优先数可以固定的,也可随进程执行过程动态变化。 一个高优先数的进程占用处理器后,系统处理该进程时有两种方法,一是“非抢占式”,另一种是“可抢占式”。前者是此进程占用处理器后一直运行到结束,除非本身主动让出处理器,后者则是严格保证任何时刻总是让优先数最高的进程在处理器上运行。
时间片轮转调度法 把规定进程一次使用处理器的最长时间称为“时间片”。时间片轮转调度算法让就绪进程按就绪的先后次序排成队列,每次总选择该队列中第一个进程占用处理器,但规定只能使用一个时间片,如该进程尚未完成,则排入队尾,等待下一个供它使用的时间片。各个进程就这样轮转运行。时间片轮转算法经常用于分时操作系统中。
分级调度算法 由系统设置多个就绪队列,每个就绪队列中的进程按时间片轮转法占用处理器,这就是分级调度算法。
4、进程的切换 进程调度将从就绪队列中另选一个进程占用处理器,使一个进程让出处理器,由另一个进程占用处理器的过程称“进程切换”。
若有一个进程从运行态变成等待态,或完成工作后就撤消,则必定会发生进程切换。若一个进程从运行态或等待态变成就绪态,则不一定发生进程切换。
四、存储管理
待更新......
参考原创:https://www.cnblogs.com/engine1984/category/155390.html