操作系统笔记 --第一章 操作系统引论

课程:王道计算机考研 操作系统 —— 课程链接

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

1. 操作系统的概念

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

①操作系统是系统资源的管理者
②向上层提供方便易用的服务
③是最接近硬件的一层软件

直观的例子:打开 Windows 操作系统的“任务管理器”(快捷键:Ctrl+Alt+Del)
操作系统笔记 --第一章 操作系统引论_第1张图片

2. 操作系统的功能

操作系统笔记 --第一章 操作系统引论_第2张图片

① 作为系统资源的管理者

管理整个计算机系统的硬件和软件资源,并合理地组织调度计算机的工作和资源的分配,包括:
处理机管理、存储器管理、文件管理、设备管理
操作系统笔记 --第一章 操作系统引论_第3张图片
进程:进程是一个程序的执行过程,执行一个程序前需要将该程序放到内存中,才能被CPU处理
一次用QQ和朋友视频聊天的过程:
Step 1:在各个文件夹中找到 QQ 程序安装的位置(如 D:/Tencent/QQ/Bin)---- 文件管理功能
Step 2:双击打开 QQ.exe ---- 存储器管理(内存管理):把程序相关数据存入内存
Step 3:QQ 程序正常运行 ---- 处理机(CPU)管理:给进程分配CPU资源
Step 4:开始和朋友视频聊天,使用摄像头、麦克风 ---- 设备管理:将设备使用权分配给进程,使用完之后将设备使用权回收

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

提供给用户和其他软件方便的接口和环境

操作系统提供的接口分为三类:命令接口程序接口、GUI

  • 命令接口:用户可以直接使用的,利用这些操作命令来组织和控制作业的执行
  • 程序接口:用户通过程序间接使用的,编程人员可以使用它们来请求操作系统服务
  • GUI:图形用户接口

操作系统笔记 --第一章 操作系统引论_第4张图片

  1. 命令接口
    命令接口分为两类:联机命令接口和脱机命令接口,用户可以直接调用
  • 联机命令接口:又称交互式命令接口,适用于分时或实时系统的接口,由一组键盘操作命令组成。用户输入一条指令,操作系统就执行一条指令

  • 例:cmd
    操作系统笔记 --第一章 操作系统引论_第5张图片

  • 脱机命令接口:又称批处理接口,使用于批处理系统,由一组作业控制命令组成。用户输入一堆指令,操作系统运行一堆指令。在操作系统运行这些命令时用户不可干预

  • 例:batch
    操作系统笔记 --第一章 操作系统引论_第6张图片

  1. 程序接口
    程序接口:由一组系统调用(也称广义指令)组成
    用户通过在程序中使用这些系统调用来请求操作系统为其提供服务,只能通过用户程序
    间接
    调用
    如使用各种外部设备、申请分配和回收内存及其它各种要求
    在这里插入图片描述

程序接口=系统调用=系统调用命令=广义指令

  1. GUI:图形操作界面
    操作系统笔记 --第一章 操作系统引论_第7张图片

③作为最接近用户的层次

  • 没有任何软件支持的计算机称为裸机
  • 覆盖了软件的机器称为扩充机器或虚拟机
  • 封装思想:操作系统把一些丑陋的硬件功能封装成简单易用的服务,使用户能更方便地使用计算机,用户无需关心底层硬件的原理,只需要对操作系统发出命令即可

1.1.2 操作系统的特征

操作系统笔记 --第一章 操作系统引论_第8张图片

并发

区别两个概念:
并发:指两个或多个事件在同一时间间隔内发生。这些事件宏观上是同时发生的,但微观上是交替发生的
并行:指两个或多个事件在同一时刻同时发生。

  • 操作系统的并发性 指计算机系统中“同时”运行着多个程序,这些程序宏观上看是同时运行着的,而微观上看是交替运行的。
  • 注意(重要考点):
    单核CPU同一时刻只能执行一个程序,各个程序只能并发地执行,因此操作系统会协调多个程序使他们交替进行(这些程序在宏观上是同时发生的,在微观上是交替进行的)
    多核CPU同一时刻可以同时执行多个程序,多个程序可以并行地执行

共享

共享,即资源共享,是指系统中的资源可供内存中多个并发执行的进程共同使用。
操作系统笔记 --第一章 操作系统引论_第9张图片
注意:所谓的“同时”往往是宏观上的,而在微观上,这些进程可能是交替地对该资源进行访问的(即分时共享
举个例子:
互斥共享方式:使用QQ和微信视频。同一时间段内摄像头只能分配给其中一个进程。
同时共享方式:使用QQ发送文件A,同时使用微信发送文件B。宏观上看,两边都在同时读取并发送文件,
说明两个进程都在访问硬盘资源,从中读取数据。微观上看,两个进程是交替着访问硬盘的。

  • 并发和共享的关系:
  • 并发是同时存在多个运行着的程序,共享是指系统中的资源被多个并发执行的程序共同使用
    —— 并发是进程的并发,共享是资源的共享
  • 并发性和共享性互为存在条件
    操作系统笔记 --第一章 操作系统引论_第10张图片

虚拟

虚拟是指把一个物理上的实体变为若干个逻辑上的对应物。物理实体(前者)是实际存在的,而逻辑上对应物(后者)是用户感受到的。
虚拟技术可以分为 时分复用技术空分复用技术
操作系统笔记 --第一章 操作系统引论_第11张图片
操作系统笔记 --第一章 操作系统引论_第12张图片
操作系统笔记 --第一章 操作系统引论_第13张图片

异步

在多道程序环境下,允许多个程序并发执行,但由于资源有限,进程的执行不是一贯到底的,而是走走停停,以不可预知的速度向前推进,这就是进程的异步性
如果失去了并发性,即系统只能串行地运行各个程序,那么每个程序的执行会一贯到底。只有系统拥有并发性,才有可能导致异步性。
操作系统笔记 --第一章 操作系统引论_第14张图片

1.1.3 操作系统的发展与分类

操作系统笔记 --第一章 操作系统引论_第15张图片
第一阶段:无操作系统(手工操作)阶段
手工操作方式:用户独占全机,CPU等待人工操作,人机速度矛盾 。
操作系统笔记 --第一章 操作系统引论_第16张图片
第二阶段:批处理阶段

单道批处理系统

  • 脱机输入输出方式:事先将装有用户程序和数据的纸带装入纸带输入机,在外围机的控制下,把纸带上的数据输入到磁带上(类似于磁盘)。当CPU需要时,从磁带将其高速地调入内存。反之类同。优点:减少了CPU的空闲时间,提高了I/O速度。
  • 单道批处理系统:首先监督程序将磁带第一个作业装入内存,运行控制权在该作业,该作业处理完成时,控制权交回到监督程序,再由监督程序把磁带上的第二个作业调入内存。系统自动对作业成批处理。(内存始终只保持一道作业—单道批处理)。
    缺点:内存浪费,不能充分利用系统资源。
  • 注意:“单道”指的是在内存中只有一个程序运行
    操作系统笔记 --第一章 操作系统引论_第17张图片
    多道批处理系统
  • 多道批处理系统:用户所提交的作业先存放在外存,排成一个“后备队列”,再由作业调度程序按一定的算法从队列选择若干作业调入内存,使他们共享CPU和系统中的各种资源
  • 优点:多道程序并发执行,共享计算机资源。资源利用率大幅提升,CPU和其他资源更能保持“忙碌”状态,系统吞吐量增大。
  • 缺点:用户响应时间长,没有人机交互功能(用户提交自己的作业之后就只能等待计算机处理完成,中间不能控制自己的作业执行。eg:无法调试程序/无法在程序运行过程中输入一些参数)
  • 批处理系统的产生标志着操作系统的正式诞生
  • 并发性和共享性是操作系统诞生之初就拥有的特性,所以说它们是操作系统最基本的两个特性
    操作系统笔记 --第一章 操作系统引论_第18张图片
    第三阶段:分时操作系统

分时系统:在一台主机上连接了多个带有显示器和键盘的终端,同时允许多个用户通过自己的终端,以交互方式使用计算机,共享主机中的资源。因此,作业直接进入内存,采用轮转运行方式,系统配置一个多路卡(实现分时多路复用),及时接收用户终端命令(数据)。
操作系统笔记 --第一章 操作系统引论_第19张图片
第四阶段:实时操作系统
实时系统:系统能及时响应外部事件的请求,在规定的时间内完成对该事件的处理,并控制所有实时任务的协调一致的运行。
操作系统笔记 --第一章 操作系统引论_第20张图片
操作系统笔记 --第一章 操作系统引论_第21张图片

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

操作系统笔记 --第一章 操作系统引论_第22张图片

运行机制:两种指令、两种处理器状态、两种程序

1. 两种指令:特权指令、非特权指令

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

操作系统笔记 --第一章 操作系统引论_第23张图片

CPU通过处理器状态判断是否可以执行特权指令

2. 两种处理机状态
用户态(目态):此时CPU只能执行非特权指令
核心态(管态):此时CPU可以执行特权指令和非特权指令
操作系统笔记 --第一章 操作系统引论_第24张图片
3. 两种程序
内核程序:可以执行特权指令和非特权指令,运行在核心态
应用程序:只能执行非特权指令,运行在用户态
操作系统笔记 --第一章 操作系统引论_第25张图片
操作系统笔记 --第一章 操作系统引论_第26张图片

操作系统内核

操作系统笔记 --第一章 操作系统引论_第27张图片
内核是计算机上配置的底层软件,是操作系统最基本、最核心的部分。实现操作系统内核功能的那些程序就是内核程序。
操作系统笔记 --第一章 操作系统引论_第28张图片

操作系统的体系结构:大内核和微内核

操作系统笔记 --第一章 操作系统引论_第29张图片
操作系统笔记 --第一章 操作系统引论_第30张图片

1.1.5 中断和异常

操作系统笔记 --第一章 操作系统引论_第31张图片

中断机制的诞生

早期的计算机,各程序只能串行执行,系统资源利用率低。为解决上述问题,人们发明了操作系统,引入中断机制,实现了多道程序并发运行(多道批处理阶段)
本质:只要发生中断,就意味着操作系统介入了程序运行,开展管理工作

中断的概念和作用

  1. 当中断发生时,CPU立即进入核心态
  2. 当中断发生后,当前运行的进程暂停运行,并由操作系统内核对中断进行处理
  3. 对于不同的中断信号,会进行不同的处理

发生了中断,就意味着需要操作系统介入,开展管理工作。由于操作系统的管理工作(比如进程切换、分配I/O设备等)需要使用特权指令,因此CPU要从用户态转为核心态中断可以使CPU从用户态切换为核心态使操作系统获得计算机的控制权。有了中断,才能实现多道程序并发执行。

  • “中断”是让操作系统内核夺回CPU使用权的唯一途径
    如果没有“中断”机制,那么一旦应用程序上CPU运行,CPU就会一直运行这个应用程序
  • 核心态和用户态之间切换的实现
    内核态—>用户态:执行一条特权指令——修改 PSW(程序状态字)的标志位 为“用户态”,这个动作意味着操作系统将主动让出CPU使用权
    用户态—>内核态:由“中断”引发,硬件自动完成变态过程,触发中断信号意味着操作系统将强行夺
    回CPU的使用权

中断的分类:内中断和外中断

狭义的中断指外中断
操作系统笔记 --第一章 操作系统引论_第32张图片
区分:信号来源是CPU外部还是CPU内部
操作系统笔记 --第一章 操作系统引论_第33张图片

外中断的处理过程

操作系统笔记 --第一章 操作系统引论_第34张图片
操作系统笔记 --第一章 操作系统引论_第35张图片

1.1.6 系统调用

操作系统笔记 --第一章 操作系统引论_第36张图片

系统调用的概念及作用

操作系统笔记 --第一章 操作系统引论_第37张图片

系统调用 是操作系统提供给应用程序(程序员/编程人员)使用的接口,可以理解为一种可供应用
程序调用的 特殊函数,应用程序可以通过系统调用来请求获得 操作系统内核 的服务

为了避免各个进程随意的使用系统资源因而造成混乱,操作系统规定所有用户进程想要使用系统资源时都只能通过 系统调用 来向操作系统发出请求,最后操作系统会对各个请求进行协调管理

应用程序通过 系统调用 请求操作系统的服务。系统中的各种共享资源都由操作系统统一掌管,因此在用户程序中,凡是与资源有关的操作(如存储分配、I/O操作、文件管理等),都必须通过系统调用的方式向操作系统提出服务请求,由操作系统代为完成。这样可以保证系统的稳定性和安全性,防止用户进行非法操作

操作系统笔记 --第一章 操作系统引论_第38张图片

系统调用和库函数的区别

系统调用相关处理在核心态进行
系统调用是比库函数更底层的接口
操作系统笔记 --第一章 操作系统引论_第39张图片

系统调用的过程

操作系统笔记 --第一章 操作系统引论_第40张图片

○特权指令
从指令系统(指令集)角度定义,在指令系统中拥有用于管理硬件和整个系统安全的指令,让程序随意使用具有极高危险性。不得在用户态(目态)执行,只能在核心态(管态)执行,用户态程序如果运行特权指令将发生异常,并切换到管态由操作系统接管cpu。所以用户程序不得使用特权指令,需要执行特权指令需要使用防管指令,进入核心态。
○访管指令
同样从指令集的角度定义,或者说从硬件角度(cpu状态)。访管指令,是用户程序自愿进管的指令(进管同时也意味着程序放弃cpu的控制权),该指令本身属于非特权指令,可在用户态执行,执行后进入核心态。核心态是通过cpu置相应标志表明当前处于核心态。cpu进入核心态后可以执行指令集中的所有指令(包括特权指令和非特权指令,但不执行访管指令)。
○陷入指令
原则上可看作访管指令,但是从操作系统的角度定义的。访管强调的是cpu从用户态切换到了核心态,可以执行指令集中的所有指令。而陷入(自陷、陷阱)指令强调程序从用户程序切换到了操作系统,陷入指令即汇编中的中断指令,执行陷入指令程序中断,跳转到中断服务程序(操作系统的代码)。所有访管强调的是可以执行特权指令,陷入强调的是进程放弃cpu,交还给操作系统。其实核心态和操作系统是不可分割的:道理很显然,进入核心态(管态),必然需要“跳转”到操作系统,不然区分用户态和核心态就没有了意义,如果程序执行完访管指令后,只是进入了管态,之后仍然执行自身的代码,那用户程序将可以为所欲为,显然不能允许。另一方面,如果cpu跳转到了操作系统,没有进入管态,那操作系统也无法执行特权指令,管理整个机器,显然也不行(当然也存在操作系统一部分运行在用户态,一部分(即内核)运行在管态,此时操作系统获取cpu控制权后不一定是处于核心态)。所有管态就是运行操作系统,访管指令本质上就是一条陷入(中断)指令。
○广义指令(系统调用)
系统调用,从操作系统的角度定义的。指用户程序需要借助操作系统来完成的特定操作,通过陷入指令可以进行系统调用。系统调用是一段代码而不是一条代码,在高级语言层面可能是一条,比如c语言的系统调用write(),在汇编层面这条语句包括,初始化相关参数和寄存器,执行陷入(中断)指令,跳转到中断服务程序,中断返回。之所以需要系统调用是因为用户程序不能执行特权指令,所以当需要完成特权指令才能做的特定操作,必须通过系统调用由操作系统完成。但系统调用一词并非强调程序不能使用特权指令,即不强调“需要”操作系统服务,仅仅强调“希望”让操作系统服务,表达的含义不是"不能"而是"不需要",即目标操作用户程序不需要自己做,直接调用操作系统即可完成,进行系统调用时也并非一定为了执行特权指令,也可能相关操作过于复杂,或者用户程序自身难以实现(有权做但做起来麻烦),而操作系统刚好给出了相应的接口供直接使用。
○库函数
操作系统提供的函数,供用户程序直接调用,简化程序的编写。编程时调用库函数直接使用操作系统已经实现的功能即可。与系统调用有些相似,不过库函数调用可以在用户态执行(不需要执行特权指令时),和普通的函数调用应该并没有什么区别。无需用户态切换到核心态,执行中断服务程序等一些操作。是对系统调用“不需要做”这一概念的推广,另外现在一般用户不直接使用系统调用,而是使用封装好的库函数,由库函数进行系统调用。库函数的意义在于,需要就拿去用,别再浪费时间了,直接用大佬已经实现的来搞。
作者:无法获取该昵称
https://www.bilibili.com/read/cv4393022/

陷入指令=访管指令=trap指令: 程序从应用程序(用户态/目态)切换到内核程序(核心态/管态)
陷入指令属于内中断的一种(详见1.1.5中断和异常)

操作系统笔记 --第一章 操作系统引论_第41张图片
系统调用的大致过程:
传递系统调用参数 →执行陷入指令(用户态)→执行相应的内请求核程序处理系统调用(核心态)→返回应用程序

  • 系统调用的操作有很多,不同的操作对应的处理函数也不同,操作系统是通过int指令的参数来分辨要运行哪个处理函数的,int指令的参数指明了系统调用号,此处int实际上是interrupt(内中断)的缩写

注意:

  1. 陷入指令是在用户态执行的,执行陷入指令之后立即引发一个内中断,使CPU进入核心态
  2. 发出系统调用请求是在用户态,而对系统调用的相应处理在核心态下进行
  3. 陷入指令是唯一一个只能在用户态下执行,而不能在核心态下执行的指令
    操作系统笔记 --第一章 操作系统引论_第42张图片

你可能感兴趣的:(操作系统,windows)