操作系统01

内容结构

  • 操作系统概述
    操作系统基本概念

  • 进程管理
    进程与线程

    PS :

    这是很久之前写的笔记了(好像是有道上学的),可能是照着打下来的,但是不甘就放到草稿里,还是发出来吧。。。
    

知识点1 操作系统的基础概念

操作系统(Operating System, OS)是指控制和管理整个计算机系统的 硬件和软件资源,并合理地组织调度计算机的 工作和资源的分配,以提供给用户和其他软件方便的 接口和环境 的程序集合。 计算机操作系统 是 随着计算机研究和应用的发展逐步形成起来的,它是计算机系统中最基本的系统软件。

操作系统的基本特征 包括 : 并发、共享、虚拟、异步。(前2个是最基础的)

并发

并发 是指 两个或多个事件在 同一时间间隔 内发生。
  注意同一时间间隔(并发) 和 同一时刻(并行) 的区别。 
  在多道程序环境下,一段时间内,宏观上有多道程序在同时执行,而在每一时刻,单处理机环境下实际仅能有一道程序执行,故 微观上这些程序还是在分时地交替执行。 操作系统的并发性 是通过 分时 得以实现的。并行性是指系统具有可以同时进行运算或操作的特性,在同一时刻完成两种或两种以上的工作。并行性需要有相关硬件的支持,如多流水线或多处理机硬件环境。

共享

资源共享 即 共享,是指 系统中的资源可供内存中多个并发执行的进程共同使用。
共享可分为 两种资源共享方式:

  1. 互斥共享方式:
    系统中的某些资源,如打印机、磁带机,可以提供给多个进程使用,规定在一段时间内只允许一个进程访问该资源。
    当进程A访问某资源时,必须先提出请求,如果此时该资源空闲,系统便可将之分配给进程A使用,此后若再有其他进程也要访问该资源时(只要A未用完)则必须等待。 我们把这种资源方式 称为 互斥式共享。
    把在一段时间内只允许 一个进程访问 的资源 称为 临界资源或独占资源。
  2. 同时访问方式:
    系统中还有另一类资源,允许在一段时间内由多个进程 “同时” 对他们进行访问。这里所谓的“同时”往往上是 宏观上的, 而在微观上,这些进程可能是交替地对该资源进行访问,即 “分时共享”。 典型的可供多个进程 “同时” 访问的资源是磁盘设备,一些用重入码编写的文件也可以被“同时”共享,即若干个用户同时访问该文件。

互斥共享,是因为一种资源在一段时间内只能满足一个请求,否则就会出现严重的问题.
同时访问的共享,通常要求,一个请求分几个时间片段间隔地完成的效果,与
        连续完成的效果相同。

并发 和 共享 是操作系统两个最基本的特征,这两者之间又是互为存在条件的:

  1. 资源共享是以程序的并发为条件的,若系统不允许程序并发执行,则自然不存在资源共享问题。
  2. 若系统不能对资源共享实施有效的管理,也必将影响到程序的并发执行,甚至根本无法并发执行。

虚拟

虚拟 是指 把一个物理上的实体变为若干个逻辑上的对应物。 物理实体是实的,是实际存在的;而后者是虚的,是用户感觉上的实物。 用于实现虚拟的技术,称为虚拟技术。 在操作系统中利用了多种虚拟技术,分别用来实现虚拟处理器、虚拟内存、虚拟外部设备等等。
利用多道程序设计技术,把一个物理上的CPU虚拟为多个逻辑上的CPU,称为虚拟处理器。
虚拟存储器技术,将一台机器的物理存储器 变为 虚拟存储器,以便从逻辑上来扩充存储器的容量。
虚拟设备技术,将一台物理I/O设备虚拟为多台逻辑上的I/O设备,并允许每个用户用一台逻辑上的I/O设备。

异步

在多道程序环境下,允许多个程序并发执行,但由于资源有限,进程的执行不是一贯到底,而是走走停停,以不可预知的速度向前推进,这就是进程的异步性。
但只要在操作系统中配置有完善的进程同步机制,且运行环境相同,作业经多次运行都会获得完全相同的结果。因此,异步运行方式是允许的,而且是操作系统的一个重要特征。

操作系统的功能:

操作系统作为 计算机系统资源的 管理者

  1. 处理机管理
    在多道程序环境下,处理机的分配和运行都以进程(或线程)为基本单位
    进程管理的主要功能:
    进程控制、进程同步、进程通信、死锁处理、处理机调度等。
  2. 存储器管理
    存储器管理 是为了给 多道程序的运行提供良好的环境,方便用户使用以及提高内存的利用率,主要包括 内存分配、地址映射、内存保护与贡献、内存扩充等。
  3. 文件管理
    计算机中的信息都是以文件的形式存在。
    文件管理 包括 文件存储空间的管理、目录管理、文件读写管理和保护等.
  4. 设备管理
    设备管理的主要任务是 完成用户的I/O请求,提高设备的利用率。
    主要包括 缓冲管理、设备分配、设备处理、虚拟设备等功能

操作系统作为 用户与计算机硬件系统之间的接口
操作系统提供的接口主要分为两类: 命令接口 和 程序接口

  1. 命令接口;
    使用命令接口进行作业控制的主要方式有 两种, 即 联机控制方式 和 脱机控制方式。 按作业控制方式的不同,可以将命令接口分为 联机命令接口 和 脱机命令接口。
    联机命令接口 又称 交互式命令接口,适用于 分时或实时系统 的接口。他由一组键盘操作命令组成。
    脱机命令接口 又称 批处理命令接口, 适用于 批处理系统,他由一组作业控制命令(或称作业控制语句)组成。 脱机用户不能直接干预作业的运行,应事先用相应的作业控制命令写成一份作业操作说明书,连同作业一起提交给系统。当系统调度到该作业时,由系统的命令解释程序对作业说明书上的命令或作业控制语句逐条解释执行,从而间接地控制作业的运行。
  2. 程序接口
    程序接口 由 一组系统调用命令(简称系统调用,也称广义指令)组成。 用户通过在程序中使用这些系统调用命令来请求操作系统为其提供服务。用户在程序中可以直接使用这组系统调用命令 向 系统提出各种服务要求,如使用各种外部设备。

图形用户界面(GUI)即图形接口,用户通过鼠标和键盘,在图形界面上单机或使用快捷键就能很方便地使用操作系统。GUI最终是通过调用程序接口实现的。

操作系统用做扩充机器
  没有任何软件支持的计算机称为裸机,他仅构成计算机系统的物质基础,而实际呈现在用户面前的计算机系统是经过若干层软件改造的计算机。 裸机在最里层,他的外面是操作系统,由操作系统提供的资源管理功能 和 方便用户的各种服务功能,将裸机改造成功能更强、使用更方便地机器,通常把覆盖了软件的机器称为 扩充机器,又称之为 虚拟机。

操作系统的发展与分类

手工操作阶段(此阶段无操作系统)
  用户在计算机上的所有工作都要人工干预,如程序的装入、运行、结果的输出等。
  两个突出的缺点:
  1.用户独占全机。不会出现因资源已被其他用户占用而等待的现象,但资源利用率低
  2.CPU等待手工操作,CPU的利用不充分。

批处理阶段(操作系统开始出现)
  为了解决人机矛盾及CPU和I/O设备之间速度不匹配的矛盾,出现了批处理系统。
  分为单道批处理系统、多道批处理系统(多道程序设计技术出现以后)
  
单道批处理系统:
系统对作业的处理是成批进行的,但内存中始终保持一道作业。该系统是在解决人机矛盾 和 CPU与I/O设备速率不匹配的矛盾中形成的。单道批处理系统的主要特征如下:

  1. 自动性。 在磁带上的一批作业能自动地逐个依次运行,而无需人工干预。
  2. 顺序性。 磁带上的各道作业 是 顺序地进入内存,各道作业的完成顺序与他们进入内存的顺序 一样。
  3. 单道性。 内存中仅有一道程序运行,即 监督程序(早期操作系统的雏形) 每次从磁带上只调入一道程序进入内存运行,当该程序完成或发生异常情况时,才换入其后继程序进入内存运行。

此时面临的问题是:每次主机内存中仅 存放一道作业,每当它运行期间发出输入/输出请求后,高速地CPU便处于等待低速的I/O完成状态。
此时省略插图解释…

多道批处理系统:
多道程序设计技术 允许 多个程序同时进入内存并运行。 即 同时把多个程序放入内存,并允许他们交替在CPU中运行,他们共享系统中的各种硬、软件资源。 当一道程序因I/O请求而暂停运行时,CPU便立即转去运行另一道程序。
多道程序设计的特点有: 多道、宏观上并行、微观上串行。

  1. 多道:计算机内存中同时存放多道相互独立的程序。
  2. 宏观上并行:同时进入系统的多道程序都处于运行过程中,即他们先后开始了各自的运行,但都未运行完毕。
  3. 微观上串行:内存中的多道程序轮流占有CPU,交替执行。
    此时省略插图解释…

多道程序设计技术的实现 需要 解决下列问题:

  1. 如何分配处理器。
  2. 多道程序的内存分配问题。
  3. I/O设备如何分配。
  4. 如何组织和存放大量的程序和数据,以便用户使用和保证其安全性和一致性。

在批处理系统中采用多道程序设计技术,就形成了多道批处理操作系统。该系统把用户提交的作业成批地送入计算机内存,然后由作业调度程序自动地选择作业运行。
优点是  资源利用率高,多道程序共享计算机资源,从而使各种资源得到充分
    利用; 系统吞吐量大,CPU和其他资源保持“忙碌”状态。
缺点是  用户响应的时间较长。 不提供人机交互能力。

分时操作系统
分时技术 就是 把处理器的运行时间分成 很短的时间片,按时间片轮流把处理器分配给各联机作业使用。某个作业在分配给它的时间片内不能完成其计算,该作业暂时停止运行,把处理器让给其他作业使用,等待下一轮再继续运行。
由于计算机速度很快,作业运行轮转得很快,给每个用户的感觉好像是自己独占一台计算机。
实现分时操作系统 最关键的问题 是如何使用户与自己的作业进行交互。

主要特征

  1. 同时性。同时性也称多路性,指允许多个终端用户同时使用一台计算机,即一台计算机与若干台终端相连接,终端上的这些用户可以 同时或基本同时 使用计算机。
  2. 交互性。 用户能够方便地与系统进行 人-机对话,即用户通过终端采用 人-机对话 的方式直接控制程序运行,与同程序进行交互。
  3. 独立性。 系统中多个用户可以彼此独立地进行操作,互不干扰,单个用户感觉不到别人也在使用这台计算机,好像只有自己单独使用这台计算机一样。
  4. 及时性。 用户请求能在很短时间内获得响应。分时系统采用时间片轮流转方式使一台计算机同时为多个终端服务,使用户能够对系统的及时响应感到满意。

实时操作系统
所谓“实时”, 是表示“及时”,而实时系统 是指 系统能及时(或即时)响应外部事件的请求,在规定的时间内完成对该事件的处理,并控制所有实时任务协调一致地运行。

实时系统 分为两种:
如果某个动作必须绝对地在规定的时刻(或规定的时间范围)发生,则称为 <mark>硬实时系统。</mark> (军事和航天上用的比较多)
让某个特定的动作在规定的时间内完成。如果能接受偶尔违反时间规定,并且不会引起任何永久性的损害,则称为 <mark>软实时系统。</mark>

实时操作系统的主要特点是 及时性 和 可靠性。

网络操作系统
网络操作系统把计算机网络中的各台计算机有机地结合起来,提供一种统一、经济而有效的使用各台计算机的方法,实现各个计算机之间的互相传送数据。
网络操作系统 最主要的特点是 网络中各种资源的共享以及各台计算机之间的通信。

分布式计算机系统是由多台计算机组成并满足下列条件的系统:
系统中任意两台计算机通过通信方式交换信息;
系统中的每台计算机都具有同等的地位,即 没有主机也没有从机;
每台计算机上的资源为所有用户共享;
系统中的任意若干台计算机都可以构成一个子系统,并且还能重构;
任何工作都可以分布在几台计算机上,由他们并行工作协同完成;
用于管理分布式计算机系统的操作系统称为 分布式操作系统。
具有分布性 和 并行性。

<mark>此处省略操作系统的发展历程 图…</mark>

CPU执行两种不同性质的程序:
一种是 操作系统内核程序;
另一种是 用户自编程序 或 系统外层的应用程序。
所谓特权指令,是指计算机不允许用户直接使用的指令,如I/O指令、置中断指令。
操作系统在具体实现上划分了 用户态(目态)和 核心态(管态),以严格区分两类程序.

内核 是计算机上配置的底层软件,是计算机功能的延伸。包括四个方面的内容:

  1. 时钟管理
    时钟的第一功能是计时,操作系统需要通过 时钟管理,想用户提供标准的系统时间。
    通过时钟中断的管理,可以实现进程的切换。
  2. 中断机制
    引入中断技术的初衷 是提高多道程序运行环境中CPU的利用率,而且主要是针对外部设备中断机制中,只有一小部分功能属于内核,负责保护和恢复中断现场的信息,转移控制权到相关的处理程序。这样可以减少中断的处理时间,提高系统的并行处理能力。
  3. 原语(Atomic Operation)
    按层次结构设计的操作系统,底层必然是一些可被调用的公用小程序,他们各自完成一个规定的操作。 其特点是:
    他们处于操作系统的最底层,是最接近硬件的部分。
    这些程序的运行具有原子性-----其操作只能一气呵成。
    这些程序的运行时间都较短,而且调用频繁。
    通常把具有这些特点的程序称为原语
  4. 系统控制的数据结构及处理
    系统中用来登记状态信息的数据结构很多,比如 作业控制块、进程控制块(PCB)、设备控制块。 常见的操作有以下三种。
    进程管理: 进程状态管理、进程调度和分配、创建与撤销进程控制块等。
    存储器管理: 存储器的空间分配和回收、内存信息保护程序、代码对换程
          序等。
    设备管理: 缓冲区管理、设备分配和回收等。

核心态指令实际上包括系统调用类指令和一些针对时钟、中断和原语的操作指令。

中断(Interruption),也称外中断,指来自CPU执行指令以外的事件的发生,如设备发出的I/O结束中断,表示设备输入/输出处理已经完成,希望处理机能够向设备发出下一个输入/输出请求,同时让完成输入/输出后的程序继续运行。

时钟中断,表示一个固定的时间片已到,让处理机处理 1.计时 、 2.启动定时运行的任务 等。
这一类中断通常是与当前程序运行无关的事件。

异常(Exception),也称内中断。例外或陷入(Trap), 指 源自CPU执行指令内部的事件, 如程序的非法操作码、地址越界、算术溢出、虚存系统的缺页以及专门的陷入指令等引起的事件, 对异常的处理一般要依赖于当前程序的运行现场,而且异常不能被屏蔽。

中断
内中断

自愿中断 -----指令中断
强迫中断

硬件故障
软件中断

外中断(强迫中断)

外设请求
人的干预

系统调用 : 就是用户在程序中调用操作系统所提供的一些子功能,
与资源有关的操作(如存储分配、进行I/O传输、文件管理等),都必须通过系统调用方式向操作系统提出服务请求,并由操作系统代为完成。
系统调用运行在系统的 核心态。
系统调用按功能可大致分为 如下几类:
设备管理。 完成设备的请求或释放,以及设备启动等功能。
文件管理。 完成文件的读、写、创建、删除等操作。
进程管理。 完成进程之间的消息传递或信号传递等功能。
内存管理。 完成内存的分配、回收 以及 获取作业占用内存区大小及始址等功能。

有用户进入核心态,不仅仅是状态需要切换。 而且,所使用的堆栈也可能需要由用户堆栈切换为 系统堆栈,但这个系统堆栈也是属于 该进程的。