操作系统的概念、功能和目标

操作系统的概念

  1. 操作系统与我们每个人的生活联系很紧密,只要有计算机的地方就会有操作系统,常见的操作系统有哪些?
  2. 常见的操作系统:android、windows、iOS、macOS、Linux
  3. 那与操作系统联系紧密的计算机的结构层次是那些
  4. 计算的结构层次有四层,从下到上依此为:计算机硬件、操作系统、应用程序、用户(可直接与操作系统交互)
  5. 操作系统作为中间层,在整个结构中起到一个很好的协调作用,那你能通过这个结构来解释操作系统是什么吗?
  6. 操作系统承上启下:管理计算机的软、硬件资源。操作系统对上:给用户和应用程序提供便捷的接口。对下:整合调度硬件资源。综合:操作系统管理计算机的软硬件资源,通过整合调度硬件的资源给用户和应用程序提供有用的接口,操作系统是离硬件最近的系统软件。

操作系统的功能和目标

  1. 从计算机的整体层次结构中理解了操作系统的概念,那操作系统的功能能不能从中知道呢?
  2. 操作系统是资源的管理者、向用户提供服务、扩展硬件
  3. 从一个例子来简单了解一下操作系统资源管理者的角色。生活中我们经常会和朋友用QQ视频聊天,那当我们聊天时计算机是怎么让我们聊天的呢?1、我们需要遭到qq的exe应用程序文件(这一步当中我们需要在众多文件夹中找到qq存放的文件夹,并在文件夹中找到exe文件,这些步骤都是我们与操作系统一起完成的,体现了操作系统的文件管理能力)2、当我们找到exe文件并点击,程序会进入内存。体现了操作系统的存储器管理能力。3、进入内存后,需要CPU进行处理,体现了处理机管理能力。4、聊天需要摄像头,qq需要调用摄像头,体现了设备管理能力
  4. 那操作系统向用户提供了那些服务呢?
  5. 操作系统向用户提供了命令接口-与操作系统直接交互(联机命令接口、脱机命令接口)、程序接口-通过应用程序间接交互(一系列系统调用)、gui用户图形界面-像windows的桌面,当我们想删除一个文件有时直接将文件拖拽进回收站,这就是gui。

操作系统的特征

并发和并行

  1. 在生活中,我们需要同时做很多事情我们会怎么做呢?
  2. 比如我们在一天里要完成很多件事情,我们可以一起做这些事情或者分时段的完成每一件事情的一部分,最后在一天内完成。前者的工作模式就是并行式的,后者就是并发式的。并行是让几个程序同时开始执行,并发是让几个程序在宏观上同时进行在微观上交替进行。

共享

  1. 共享有两种,一个是互斥共享,一个是同时共享。互斥共享字面意思,资源只给一个程序使用,同时共享,在宏观上同时使用资源,微观上交替使用。是不是感觉共享和并发有点像。实际上有并发才有共享,有共享才有并发。没有并发,多个程序不会同时运行,那就不会要共享资源。如果没有共享资源,那并发也就没有实际意义,每个程序就单独运行就好。

虚拟

  1. 生活中在使用计算机时,我们会遇到这样的情况,例如我们在使用电脑时会同时打开多个应用程序,远远超过我们电脑CPU的数量,但仍能很好的运行。再例如我们在玩游戏时,我们打开的游戏需要内存4G、还有其他的一些应用也需要内存,往往需要的内存会超过电脑本身实际的运行内存。这些都是操作系统的功劳,让我们在计算机使用过程中觉得CPU和内存增多,前者使用的是时分复用技术(虚拟处理器),后者使用的是空分复用技术(虚拟存储)。

异步

  1. 在多道技术下,多个程序并发执行,每个程序不是一直执行而是执行一会停一会,断断续续的执行。

操作系统的发展和分类

  1. 人工操作阶段,用户独占全机,人机速度方面的差异过大。人工操作阶段用户打纸带、在机器中放入纸带、CPU处理纸带、再输出纸带内容。(很缓慢的过程一个在用户打纸带,机器输入纸由处理部件处理)
  2. 批处理阶段,分为单道批处理和多道批处理。单道批处理,改良了纸带内容输入的过程,用户可直接将纸带内容存入磁带,提高了输入的速度,但是每次只能处理一个指令,CPU资源仍然有大量时间闲置。多道批处理,允许同时处理多个指令。但是用户无法和机器进行交互。
  3. 分时操作系统,在宏观上和多个用户同时交互,微观上交替进行。但是不能优先处理紧急的任务。
  4. 实时操作系统,分为硬实时和软实时,硬实时必须在规定的时间完成任务,软实时可以偶尔不按规定的时间完成任务。
  5. 还有网络操作系统、分布式操作系统和个人计算机操作系统,这几个操作系统,等有时间再来填坑(考研不常考,王道上也只是提了一下)

操作系统的运行机制和体系结构

运行机制

  1. 两个命令,特权指令和非特权指令。比如清理内存数据这种指令,不能让用户直接使用的指令就是特权指令。非特权指令就是可以让用户使用的指令
  2. 两个处理器状态,核心态和用户态。因为要区分处理命令,CPU需要转换两种状态来分别处理。CPU在核心态时处理的是特权指令,在用户态处理非特权指令。
  3. 两个程序,核心程序和应用程序。

操作系统的内核

  1. 时钟管理、中断、原语(具有原子性的程序)、管理计算机资源(设备管理、存储管理、进程管理)

操作系统的体系结构

  1. 大内核和微内核,是否将管理计算机资源的部分分入内核来区分大内核和微内核。大内核性能高,但是代码量大,结构复杂,维护难。微内核代码量少,结构清晰,维护简单,但是性能低。

中断和异常

  1. 产生:为了实现多道程序并行的技术
  2. 中断的概念和作用:发生中断,意味着操作系统介入开展管理工作,CPU转变为核心态。中断是让CPU转变成核心态的唯一途径。
  3. 中断的分类:内中断(异常、例外、陷入)和外中断(中断)。内中断又分自愿中断(中断程序)和强迫中断(硬件故障-缺页、软件中断-除零)。外中断一般两种情况,外设请求、人工干预。内中断的另一种分类:陷阱、陷入(有意为之,如系统调用),故障(由错误条件引发的,故障可以被故障处理程序修复,如缺页),终止(不可恢复致命错误造成的结果,终止处理程序不会将控制返回给引发终止应用程序)。
  4. 外中断处理的过程:1、每条指令执行结束后,CPU会查看是否有外部的中断请求。2、如果有,则需要保护进程的CPU环境。3、按照中断信号转入相应的中断程序。4、恢复进程CPU环境,按原进程继续执行。

系统调用

  1. 系统调用:是操作系统给应用程序提供的接口,应用程序通过系统调用来请求操作系统的服务,系统调用会让处理器从用户态转变成和心态。
  2. 系统调用分类:设备管理、文件管理、进程控制、进程通信、内存管理。凡是与资源相关的操作,会影响到其他进程,一定需要操作系统介入,都需要通过系统调用来实现。
  3. 系统调用和库函数的区别:系统调用是操作系统向上层服务器提供的接口,有些库函数是对系统调用的进一步封装,现在的应用程序大多是高级编程语言提供的库函数间接地进行系统调用。
  4. 系统调用的过程:1、传递系统调用参数。2、执行陷入指令。3、执行系统调用相应的服务程序。4、返回用户程序。

第二章

进程的定义、组成、组织方式、特征

进程的定义

  1. 进程是在多道技术下产生,帮助操作系统管理多个程序使用资源。进程是进程实体的运行过程(动态性),是系统进行资源分配和调度的一个独立单位。

进程的组成

  1. 进程由PCB、程序段、数据段组成。操作系统管理资源所需要的数据都在PCB中。程序段用来存放程序(指令)。数据段用来存放程序执行所需要的数据。
  2. PCB的组成:进程描述信息(进程表示符PID、用户表识符UID)、进程控制和管理信息(进程当前状态、进程优先级)、资源分配清单(程序段指针、数据段指针、键盘、鼠标)、处理机相关信息(各种寄存器)。

进程的组织形式

  1. 链接方式、索引方式。
  2. 链接方式:按进程状态将PCB分成多个队列(执行指针、进程就绪队列、进程阻塞队列)
  3. 索引方式:按照进程状态建立几张索引表,表各项指向一个PCB。

进程特征

  1. 动态性(进程的最基本特征)、并发性、独立性(进程是系统分配、调度的独立单位)、异步性(各进程以不可预知的速度向前推进,可能导致运行结果的不确定性)、结构性(进程由PCB、程序段、数据段组成)。

进程的状态与转换

  1. 进程的状态:创建状态(初始化PCB)、就绪状态(缺少CPU)、运行状态(有CPU、有资源)、阻塞态(因等待某一事件暂时不能运行,如等待操作系统分配打印机、等待读磁盘的结果。等待资源)、终止状态(进程运行结束或者程序出错)。
  2. 进程转换

进程控制

  1. 进程控制就是通过原语对进程进行管理。
  2. 原语做的事情:1、更新PCB中的信息(如修改进程状态标志、将运行环境保存到PCB、从PCB恢复运行环境)。2、将PCB插入合适的队列。3、分配/回收资源。
  3. 原语的几种功能:创建进程(用户登入、作业调度、提供服务、应用请求)、进程终止(正常结束、异常结束、外界干预)、进程的阻塞(需要等待系统分配资源、等待相互合作的进程完成)和唤醒(等待的事件发生)

进程的通信

  1. 各进程拥有的内存地址空间相对独立,操作系统提供进程通信来保证进程间的信息交换。
  2. 进程通信:共享存储(设置一个共享,互斥的访问空间,两种方式-基于数据结构(低级)、基于存储区共享(高级))、管道通信、消息传递(传递结构化的信息,方式-直接方法、间接方法(信息先发到中间体,信箱))。

多线程概念和线程模型

  1. 线程可以看作是轻量级的进程,它是一个基本的CPU执行单元。
  2. 线程引入后的变化:
  3. 线程实现方式:用户级线程、内核级线程、两种方式混合。

处理机调度,调度的时机,切换与过程,进程调度方式,调度算法的评价指标,典型的几种调度算法

调度的概念

  1. 调度:分配处理机-在就绪队列里按一定的算法选择一个进程分配处理机
  2. 调度的层次:作业调度(内存与辅存之间的调度)、内存调度(将暂时不能运行的进程转至外存)、进程调度(从就绪队列选择一个分配处理机)。

调度的时机、切换与过程

  1. 按照一般情况请求事件发生后会进行进程调度,进程调度完成后会进行进程切换。
  2. 在现代操作系统中,不能进行进程调度和切换的情况:
  3. 1.在处理中断过程中。2、进程在操作系统内核程序临界区中。3、其他需要安全屏蔽中断的原子操作过程中。

进程调度方式

  1. 当有进程在处理机上执行时,此时一个优先级更高的进程就绪队列,处理机分配的方式。
  2. 非剥夺调度方式-非抢占方式(当有优先级更高的进程进入就绪队列时,需要等待处理机上的进程执行完或自行中断,才能给优先级更高的进程分配处理机)和剥夺调度方式-抢占方式(当有优先级更高的进程进入就绪队列时,直接中断处理机上的进程,将处理机分配给优先级更高的进程)

调度算法的评价

  1. CPU利用率、系统吞吐量(单位时间CPU完成作业的数量)、周转时间、等待时间(进程处于等待处理机状态时间总和)、响应时间(用户提交请求到首次产生相应的时间)

典型的调度算法

  1. FCFS-先来先服务调度算法(非抢占)
  2. SJF-短作业优先调度算法(非抢占)
  3. 优先级调度算法:根据优先级分:静态优先级、动态优先级(根据进程变化动态调整优先级)。根据调度方式分:抢占优先级调度算法、非抢占优先级调度算法。
  4. 高响应比优先调度算法(主要用于作业调度)
  5. 响应比=(等待时间+要求服务时间)/要求响应时间
  6. 时间片轮转调度算法,时间片长短:系统响应时间、就绪队列中进程数目、和系统处理时间。
  7. 多级反馈队列调度算法(融合了前几种算法的优点),设置多个就绪队列并为各个队列赋予不同优先级和时间片。优先级由高到低,时间片有小到大。