大学操作系统课程笔记

第一章 操作系统引论


1、什么是操作系统/h2>

操作系统(Operating System,OS)是指控制和管理整个计算机系统的硬件和软件资源,并合理地组织调度计算机的工作和资源的分配,以提供给用户和其他软件方便的接口和环境,它是计算机系统中最基本的系统软件

2、操作系统的目标和作用

没有任何软件支持的计算机称为裸机
在裸机上安装的操作系统,可以提供资源管理功能和方便用户的服务功能,将裸机改造成功能强,使用更方便的机器。通常把覆盖了软件的机器称为扩充机器,又称之为虚拟机

操作系统的目标与应用环境有关。
例如在查询系统中所用的OS,希望能提供良好的人-机交互性
对于工业控制、武器控制以及多媒体环境下的OS,要求其具有实时性
而对于微机上配置的OS,则更看重的是其使用的方便性

操作系统(工匠)对硬件机器(原料)的拓展

通过优秀工匠,这些简单的原料可以组织成房子、桌子……普通用户可直接使用工匠提供的房子、桌子等,而无需关心这些东西在底层是怎么组织起来工作

3、计算机系统层次结构

1. 假如自己组装电脑,如何最终实现和同学聊天/h3>
  1. 组装裸机
  2. 安装Windows系统
  3. 安装微信电脑版
  4. 和同学聊天

转换为专业术语即:

裸机(硬件、CPU等)–>操作系统–>应用程序(软件)–>用户

2. 操作系统职能

  1. 负责管理协调硬件、软件等计算机资源的工作
  2. 为上层的应用程序、用户提供简单易用的服务
  3. 操作系统是系统软件,不是硬件

3. 操作系统作为系统职能管理者

进程是一个程序的执行。执行前需要将该程序放到内存中,才可以被CPU处理。

提供的功能

  1. 文件管理(从”我的电脑找到QQ”)
  2. 存储器管理(双击打开QQ.exe)
  3. 处理机管理(QQ程序正常运行)
  4. 设备管理(获取摄像头进行视频聊天)

4. 操作系统作为用户和计算机之间的接口

  1. 命令接口:允许用户直接使用
  2. 程序接口:允许用户通过程序间接使用
  3. GUI:现代操作系统中最流行的图形用户接口(如在Window拖动图标完成操作)

三者统称为用户接口

命令接口(允许用户直接使用)

联机命令接口:用户说一句,系统做一句(如命令提示符中的操作)
脱机命令接口:用户说一堆,系统做一堆(如一些系统文件)

程序接口(允许用户通过程序间接使用)

由一组系统调用组成(程序接口==系统调用)
编程人员在程序中通过程序接口请求操作系统提供服务

图形用户接口(GUI)

采用图形方式显示的计算机操作用户界面
用户可以形象的是使用图形界面进行操作,不需要记忆复杂的命令、参数
例如:Windows操作系统删除文件,只需拖动到回收站即可

4、操作系统的基本特性

①并发 ②共享 ③虚拟 ④异步
并发和共享是两个最基本的特征,互为存在条件

并发

指两个或多个事件在同一时间间隔内发生。这些事件宏观上是同时发生的,但微观上是交替发生的。

并行(不要混淆):指两个或多个事件在同一时刻同时发生。

一个单核处理机(CPU)同一时刻只能执行一个程序,因此操作系统会负责协调多个程序交替执行(这些程序微观上是交替执行的,但宏观上看起来就像在同时执行)事实上,操作系统就是伴随着“多道程序技术”而出现的。因此,操作系统和程序并发是一起诞生的

共享

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

互斥共享

系统中的某些资源(临界资源),虽然可以提供给多个进程使用,但一个时间段内只允许一个进程访间该资源

例子:使用QQ和微信视频。同一时间段内摄像头只能分配给其中一个进程。

同时共享

系统中的某些资源,允许一个时间段内由多个进程“同时”对它们进行访问

例子:使用QQ发送,同时使用微信发送。
宏观上看,两边都在同时读取并发送文件,说明两个进程都在访问硬盘资源,从中读取数据。微观上看,两个进程是交替着访问硬盘的。

注意:所谓的“同时”往往是宏观上的,而在微观上,这些进程可能是交替地对该资源进行访问的(即分时共享)

虚拟

虚拟是指把一个物理上的实体变为若干个逻辑上的对应物。物理实体(前者)是实际存在的,而逻辑上对应物(后者)是用户感受到的。

问题1:为什么内存4G却能运行比4G大的内容/strong>

答:这是虚拟存储器技术。实际只有的内存,但在用户看来似乎远远大于,这是虚拟技术中的“空分复用技术”(第三章介绍)

问题2:一个程序需要被分配CPU才能正常执行,那么为什么单核CPU的电脑中能同时运行这么多个程序呢/strong>

答:这是虚拟处理器技术。虚拟技术中的“时分复用技术” 微观上处理机在各个微小的时间段内交替着为各个进程服务

显然,如果失去了并发性,则一个时间段内系统中只需运行一道程序,那么就失去了实现虚拟性的意义了。因此,没有并发性,就谈不上虚拟性

异步

异步是指在多道程序环境下,允许多个程序并发执行,但由于资源有限,进程的执行不是一贯到底时,而是走走停停,以不可预知的速度向前推进,这就是进程的异步性。

如果失去了并发性,则系统只能串行地处理各个进程,每个进程的执行会一贯到底,也就谈不上异步性了。

没有并发和共享,就谈不上虚拟和异步,因此并发和共享是操作系统的两个最基本的特征

5、操作系统的发展与分类

1. 人工操作方式

早期的操作方式是由程序员将事先已穿孔的纸带(或卡片),装入纸带输入机(或卡片输入机),再启动它们将纸带(或卡片)上的程序和数据输入计算机,然后启动计算机运行。仅当程序运行完毕并取走计算结果后,才允许下一个用户上机。

缺点

用户独占全机,即一台计算机的全部资源由上机用户所独占
CPU等待人工操作(慢)。当用户进行装带(卡)、卸带(卡)等人工操作时,CPU及内存等资源是空闲的。

2. 单道批处理系统

优点

缓解了一定程度的人机速度矛盾,资源利用率有所提升。

缺点

内存中仅能有一道程序运行,只有该程序运行结束之后才能调入下一道程序。CPU有大量的时间是在空闲等待I/O完成(比手动快一点,不过还是慢)。资源利用率依然很低。

3. 多道批处理系统

优点

多道程序并发执行,共享计算机资源。资源利用率大幅提升,CPU和其他资源保持“忙碌”状态,系统吞吐量增加。

缺点

用户响应时间长,没有人机交互功能(用户提交自己的作业之后就只能等待计算机处理完成,中间不能控制自己的作业执行)

4. 分时操作系统

计算机以时间片(如一个时间片)为单位轮流为各个用户/作业服务,各个用户可通过终端与计算机进行交互

优点

用户请求可以被即时响应,解决了人机交互问题。允许多个用户同时使用一台计算机,并且用户对计算机操作相互独立,感受不到别人的存在。

缺点

不能优先处理一些紧急任务。操作系统对各个用户/作业都是完全公平的,循环地为每个用户/作业服务一个时间片,不区分任务的紧急性

5. 实时操作系统

优点

能够优先响应一些紧急任务,某些紧急任务不需要时间片排队。
在实时操作系统的控制下,计算机系统接收到外部信 后及时进行处理,并且要在严格的时限内处理完事

实时操作系统:必须在绝对严格的规定时间内完成处理(如导弹控制系统)
实时操作系统:能接受偶尔违反时间规定(如校园浇花系统)

6. 络操作系统

络操作系统是伴随着计算机 络的发展而诞生的,能把 络中各个计算机有机地结合起来,实现数据传送等功能,实现 络中各种资源的共享(如文件共享)和各台计算机之间的通信。 (如:Windows NT 就是一种典型的 络操作系统, 站服务器就可以使用)

7. 分布式操作系统

主要特点是分布性和并行性。系统中的各台计算机地位相同,任何工作都可以分布在这些计算机上,由它们并行、协同完成这个任务。

8. 个人操作系统

如Windows10,MacOs

6、OS运行机制和体系结构

1. 运行机制

指令是CPU能识别、执行的最基本命令

1.1 两种指令

①特权指令:不允许普通用户使用的指令(如内存清零指令)
②非特权指令:普通用户可以任意使用的指令(如加减法)

1.2 两种处理器状态

①用户态(目态):此时CPU只能执行非特权指令
②核心态(管态):此时特权指令、非特权指令都可以执行

程序状态字寄存器(PSW)中的某标志位来标识当前处理器处于什么状态。如为用户态,为核心态

CPU如何判断当前是否可以执行特权指令/strong>
答:通过PSW进行判断。当处理器处于用户态时不能执行特权指令;当处于核心态时可以执行特权指令

1.3 两种程序

①内核程序:操作系统的内核程序是系统的管理者,既可以执行特权指令,也可以挠行非特权指令,运行在核心态
②应用程序:为了保证系统能安全运行,普通应用程序只能执行非特权指令,运行在用户态

2. 操作系统内核

内核是计算机上配置的底层软件,是操作系统最基本、最核心的部分。
实现操作系统内核功能的程序就是内核程序
不同操作系统对内核的划分可能不一样

1. 功能

①实现计时功能
②负责实现中断机制

内中断(内部异常)

  • 陷阱(trap):有意而为之的异常,如系统调用
  • 故障(fault):由错误条件引起的,可能被故障处理程序修复,如缺页中断
  • 终止(abort):不可恢复的致命错误造成的结果,终止处理程序不再将控制返回给引发终止的应用程序,如整数除0

外中断

  • I/O中断请求
  • 人工干预

2. 原语

原语的特点是执行期间不允许中断,只能一气呵成,具有原子性,这种不可被中断的操作即原子操作
比如阻塞态–>就绪态,若PCB修改时被中断了,就会发生错误,因此原语是很必要的
原语采用“关中断指令”和“开中断指令”实现。

原语是一种特殊的程序,处于操作系统最底层,是最接近硬件的部分
运行时间较短,调用频繁

中断命令开启时,中断指令无法发挥作用;同理可得开中断指令


第二章 进程的描述与控制

1. 前趋图

? 前趋图(Precedence Graph)是指一个有向无循环图,可记为DAG(Directed Acyclic Graph),用于描述进程之间执行的先后顺序,图中的每个结点可用来表示一个进程或程序段,乃至一条语句,结点间的有向边则表示两个结点之间存在的偏序(Partial Order)或前趋关系(Precedence Relation)。

  • 进程(或程序)之间的前趋关系可用“→”来表示

  • 如果进程Pi和Pj存在着前趋关系,可表示为(Pi,Pj)∈→,也可写成Pi→Pj,表示在Pj开始执行之前Pi 必须完成。此时称Pi是Pj的直接前趋,而称Pj是Pi的直接后继

  • 在前趋图中,把没有前趋的结点称为初始结点(Initial Node),把没有后继的结点称为终止结点(Final Node)。此外,每个结点还具有一个重量(Weight),用于表示该结点所含有的程序量或程序的执行时间

    2. 程序并发执行特征

    ? 在引入了程序间的并发执行功能后,虽然提高了系统的吞吐量和资源利用率,但由于它们共享系统资源,以及它们为完成同一项任务而相互合作,致使在这些并发执行的程序之间必将形成相互制约的关系,由此会给程序并发执行带来新的特征。

    间断性:程序只有在自己的时间片内才执行,过程断断续续
    失去封闭性:资源已共享,自然失去封闭性
    不可再现性:比如两个程序和共享变量,做操作,做并清零操作,若和以不同速度运行,则的值会发生变化

    由此,决定了通常的程序是不能参与并发执行的

    3. 进程

    1. 进程的描述

    程序段、相关数据段、PCB,简称进程(进程实体)
    创建进程,实质上是创建进程实体中的PCB;而撤销进程,实质上是撤销进程实体中的PCB。

    PCB是程序存在的唯一标志!

    • 进程是程序的一次执行过程
    • 进程是一个程序及其数据在处理机上顺序执行时所发生的活动
    • 进程是具有独立功能的程序在数据集合上运行的过程,它是系统进行资源分配和调度的一个独立单位

    1.1. 进程组成

    1.3 进程特征

    动态性(最基本):进程是程序的一次执行过程,是动态地产生、变化和消亡
    并发性:内存中有多个进程实体,各进程可并发执行
    独立性:进程是能独立运行,独立获得资源、独立接受调度的基本单位
    异步性
    :各进程按各自独立的、不可预知的速度向前推进,操作系统要提供”进程同步机制”来解决异步问题
    结构性
    :每个进程都会配置一个PCB,从结构上看,进程由程序段、数据段、PCB构成

    1.4 进程基本状态

    进程是程序的一次执行。在这个执行过程中,有时进程正在被CPU处理,有时又需要等待CPU服务。可见,进程的状态是会有各种变化。为了方便对各个进程的管理,操作系统需要将进程合理地划分为几种状态。

    2. 进程控制

    进程控制是进程管理中最基本的功能,主要包括创建新进程、终止已完成的进程、将因发生异常情况而无法继续运行的进程置于阻塞状态、负责进程运行中的状态转换等功能(总的来说就是实现进程状态转换
    进程控制一般是由OS的内核中的原语来实现的。

    过程

    在系统中每当出现了创建新进程的请求后,OS便调用进程创建原语Create按下述步骤创建一个新进程:

    1. 申请空白PCB:为新进程申请获得唯一的数字标识符,并从中索取一个。
    2. 为新进程分配其运行所需的资源:包括各种物理和逻辑资源,如内存、文件、I/O设备和CPU时间等。从操作系统或者从父进程中获取。
    3. 初始化进程控制块(PCB)。
      ①初始化标志信息
      :将系统分配的标识符和父进程的标识符填入新PCB中。
      初始化处理机状态信息:使程序计数器指向程序端口地址,使栈指针指向栈顶。
      初始化处理机控制信息:将进程设置为就绪状态或静止就绪状态。
      设置进程的默认优先级。
    4. 如果进程就绪队列能够接纳新进程,便将新进程插入就绪队列

    4. 进程的终止

    1. 正常结束:进程任务已经完成,正常退出。用一个中断通知系统进程结束。
    2. 异常结束:指进程在运行时发生了某种异常事件而退出
      ①越界错:程序访问了越界数据。
      ②保护错:试图访问一个不允许的资源或文件。
      ③非法指令:试图执行一条不存在的指令(数据当成指令)
      ④特权指令错:试图执行一条OS指令。
      ⑤运行超时
      ⑥等待超时
      ⑦算术运算错
      ⑧I/O故障
    3. 外界干预 :应外界请求而终止
      ①操作员或操作系统干预
      ②父进程请求结束
      ③因父进程终止,所有子孙进程也要终止。

    过程

    如果系统中发生了要求终止进程的某事件,OS便调用进程终止原语,按下述过程去终止指定的进程:

    1. 根据被终止进程的标识符,从PCB集合中检索出该进程的PCB,从中读出该进程的状态;
    2. 若被终止进程正处于执行状态,应立即终止该进程的执行,并置调度标志为真,用于指示该进程被终止后应重新进行调度;
    3. 若该进程还有子孙进程,还应将其所有子孙进程也都予以终止,以防它们成为不可控的进程;
    4. 将被终止进程所拥有的全部资源或者归还给其父进程,或者归还给系统;
    5. 将被终止进程(PCB)从所在队列(或链表)中移出,等待其它程序来搜集信息。

    5. 进程的阻塞与唤醒

    7.3 消息传递

    进程间的数据交换以格式化的消息(Message)为单位。
    进程通过操作系统提供的“发送消息/接收消息”两个原语进行数据交换

    为了实现对临界资源的互斥访问,同时保证系统整体性能,需要遵循以下原则:

    空闲让进:临界区空闲时,可以允许一个请求进入临界区的进程立即进入临界区;
    忙则等待:当已有进程进入临界区时,其他试图进入临界区的进程必须等待;
    有限等待:对请求访问的进程,应保证能在有限时间内进入临界区(保证不会饥饿);
    让权等待:当进程不能进入临界区时,应立即释放处理机,防止进程忙等待。

    9. 进程互斥的实现方法

    9.1 硬件实现方法

    ①中断屏蔽方法

    利用“开/关中断指令”实现(与原语的实现思想相同,即在某进程开始访问临界区到结束访问为止都不允许被中断,也就不能发生进程切换,因此也不可能发生两个同时访问临界区的情况)

    优点:简单、高效

    缺点:①不适用于多处理机(A处理机调用中断并不会影响到B处理机,因此多核达不到完全中断效果);
    ②只适用于操作系统内核进程,不适用于用户进程(因为开/关中断指令只能运行在内核态,这组指 令如果能让用户随意使用会很危险)

    ②TestAndSetLock指令

    TSL指令是用硬件实现的,执行的过程不允许被中断,只能一气呵成

    C语言实现逻辑如下:

    ③Swap指令

    指令是用硬件实现的,执行的过程不允许被中断,只能一气呵成

    逻辑上来看和并无太大区别,都是先记录下此时临界区是否已经被上锁(记录在变量上),检查决定是否放行,放行后锁上,执行结束后解锁;

    优点:实现简单,无需像软件实现方法那样严格检查是否会有逻辑漏洞;适用于多处理机环境

    缺点:不满足“让权等待”原则(没有让处理机空出来),暂时无法进入临界区的进程会占用CPU并循环执行TSL指令(while指令),从而导致“忙等”。

    2.10.2 信 量机制

    信 量其实就是一个变量(可以是一个整数,也可以是更复杂的记录型变量),可以用一个信 量来表示系统中某种资源的数量,比如:系统中只有一台打印机,就可以设置一个初值为1的信 量

    • 一对原语:原语和原语,可以把原语理解为我们自己写的函数,函数名分别为和,括 里的信 量S其实就是函数调用时传入的一个参数
    • 原语常简称为P、V操作(来自荷兰语proberen和 verhogen〉。因此,做题的时候常把wait(S)、signal(S)两个操作分别写为P(S)、V(S)
    • 用户进程可以通过使用操作系统提供的一对原语来对信 量进行操作,从而很方便的实现了进程互斥、进程同步。

    ①整型信 量

    C语言逻辑:

    存在的问题:不满足“让权等待”原则,会发生“忙等”(一直占用CPU)
    和是原子操作(最基本、最小的、中间不允许插入任何中断的操作。要执行就要执行完),只要信 量就不断测试,不满足让权等待。

    ②记录型信 量

    C语言逻辑:

    声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年8月8日
下一篇 2022年8月8日

相关推荐