ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

【王道考研】操作系统 笔记 第一章

2022-09-11 10:02:58  阅读:224  来源: 互联网

标签:操作系统 程序 用户 王道 并发 内核 CPU 考研


特此鸣谢王道考研

本文参考王道考研的相关课程

若有侵权请联系,立删

 

其余笔记链接:

【王道考研】操作系统笔记 第一章_才疏学浅743的博客-CSDN博客

【王道考研】操作系统 笔记 第二章上 进程调度_才疏学浅743的博客-CSDN博客

操作系统的概念与功能

image-20210805101358216

OS定义

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

 

下面这个图很好的展示了,定义与功能的联系

OS的功能

① 操作系统是系统资源的管理者

具体功能如下

    1. 文件管理——找到文件位置
    2. 存储器管理——把执行程序放入内存,或读写数据
    3. 处理机管理——执行内存中的程序
    4. 设备管理——调用I/O设备等

 

以QQ聊天为例:

 

何为处理机?

    • 就是实现功能的物理硬件综合体。或理解为CPU

处理机包括 中央处理器主存储器 ,输入-输出接口,加接 外围设备 就构成完整的计算机系统。处理机是处理计算机系统中 存储程序 和数据,并按照程序规定的步骤执行指令的部件。程序是描述处理机完成某项任务的指令序列。指令则是处理机能直接解释、执行的信息单位。

随着微电子技术的进步和计算机系统结构的发展,已能用 大规模集成电路 构成不同结构的和适应不同用途的处理机,如阵列处理机、向量处理机、数组处理机、数据库处理机、输入-输出处理机和将整个处理机制作在几个硅片上的微处理器等。

 

② 向上层提供方便易用的服务

  1. 命令接口:允许用户直接使用
    • 联机命令接口=交互式命令接口:用户说一句,系统跟着做一句
    • 脱机命令接口=批处理命令接口:用户说一堆,系统跟着做一堆
  2. 程序接口:允许用户通过程序代码间接使用
    • 系统调用=广义指令 常用库函数调用
  3. GUI 图形用户界面(Graphical User Interface):现代操作系统中最流行的图形用户接口

 

为上述的功能分别举例:

  1. 联机命令接口
    • 比如cmd,命令行窗口方式的操作。输入一行命令,执行一次
  2. 脱机命令接口
    • 比如 .bat文件,执行之后一次执行完整的文件内的命令。类似于matlab脚本和命令行的区别。
  3. 程序接口:
    • 可以在程序中进行系统调用来使用程序接口。普通用户不能直接使用程序接口,只能通过程序代码间接使用。
    • 比如,VBS可以用代码创建一个Windows的警告弹窗。但是不用代码,也就是用图形化操作就无法实现。或者C语言的库函数printf,使用了 内核程序的write()操作
  4. GUI
    • 就是图形化界面。点击,拖拽等等。

 

③ 是最接近硬件的一层软件

只有一个功能

  1. 需要实现对硬件机器的拓展
    • 把最底层的功能进行了封装
    • 比如:硬件: 锤子、锯子、木头、钉子.... ;操作系统:优秀的工匠。现在用户可以直接让工匠造船,而不是用原料造船。

 

④现代操作系统的新功能(课内)

    1. 系统安全
    2. 网络
    3. 支持多媒体

【概念】裸机 VS 虚拟机(扩充机器)

没有任何软件支持的计算机成为裸机。在裸机上安装的操作系统,可以提供资源管理功能和方便用户的服务功能,将裸机改造成功能更强、使用更方便的机器

通常把覆盖了软件的机器成为扩充机器,又称之为虚拟机

 

 

操作系统结构设计

传统OS的结构

    1. 无结构的OS
    2. 模块化
    3. 分层式

 

现代OS的结构

    1. 微内核的

 

 

操作系统的目标

  • 方便性
  • 在硬件上运行程序,用机器语言书写极其困难,OS能将高级语言翻译成机器语言。
  • 有效性
  • 提高操作效率、系统吞吐量。
  • 可扩充性
  • 为了适应硬件体系结构及应用的发展。
  • 开放性
  • 为了更好的推广,方便使用制定行业标准。

 

操作系统的特征 ⭐

基本特征有如下四个

    1. 并发
    2. 共享
    3. 虚拟
    4. 异步

 

并发

并发与并行的区别

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

    • 也就是“虚假”的同时发生,CPU同时运行两个程序,其实是短时间内分别运行
    • 操作系统的并发是通过分时实现的

并行:指两个或多个事件在同一时刻同时发生

    • 是系统同时执行或操作
    • 硬件支持:多流水线或者多处理机 多核CPU

 

重要考点:

单核CPU同一时刻只能执行一个程序,各个程序只能并发地执行。

    • 微观上轮流执行,宏观上看上去同时在执行。

多核CPU同一时刻可以同时执行多个程序,多个程序可以并行地执行

 

举例:

 

 

共享

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

 

共享的方式有以下两种

    1. 互斥共享方式
    2. 同时共享方式

 

举例来说明:

  1. 互斥共享方式
    • 系统中的某些资源,虽然可以允许多个进程使用但一个时间段内只允许一个进程访问该资源
    • 比如,QQ电话和微信电话不能同时使用摄像头。但是他们共享使用摄像头的权利。
    • 摄像头这种资源称作临界资源或者独占资源
  2. 同时共享方式
    • 系统中的某些资源,允许一个时间段内由多个进程“同时”对它们进行访问
    • 所谓的“同时”往往是宏观上的,而在微观上,这些进程可能是交替地对该资源进行访问的(即分时共享)
    • 比如:QQ和微信可以同时使用内存,在内存里面写数据。
    • 但是微观上也可能是真正的“同时”,比如:游戏和音乐同时播放声音

临界资源定义:

系统中的某些资源,如打印机、磁带机等,虽然可以提供给多个进程(线程)使用,但应规定在一段时间内,只允许一个进程访问该资源(临界资源)。

 

虚拟

虚拟是指把一个物理上的实体变为若干个逻辑上的对应物。

    • 物理实体(前者)是实际存在的,而逻辑上对应物(后者)是用户感受到的。

 

 

虚拟技术有两种

    1. 空分复用——虚拟存储器技术扩大内存
    2. 时分复用——单核CPU同时运行多个进程程序

具体例子:

  1. 虚拟处理器:采用多道程序并发的方式,让每个终端用户感觉到有多个处理器 时分复用技术
  2. 虚拟存储器:将物理存储变为虚拟存储器,逻辑上扩充存储器用 空分复用技术
  3. 也可以将一台IO设备虚拟为多台逻辑上的IO设备,并允许每个用户占用一台逻辑上的IO设备

 

异步

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

理解

走走停停的意思就是,比如Java Socket 通信中,SocketServer监听事件,就是一个异步执行的函数。因为Socket类只会存在一个,所以 0.01s 0.02s客户端A和B都发出了请求,但是0.01s的A先接受到了,所以服务器先响应A的请求。这就是结果的不可预知性

 

或者如下例子中,如果老渣预约的时间变了,给谁心就不一定了(不可预知性)。另一个人就会陷入阻塞状态,直到别人归还老渣的心

 

四大特征之间的关系

    1. 并发在操作系统诞生之初就被设计了,用来解决单核CPU运行多个进程。
    2. 共享与并发互为存在意义
    3. 没有并发,虚拟就没有意义。
    4. 没有并发,就无法产生异步

 

并发和共享的关系

    • 二者互为存在条件

并发性:指计算机系统中同时存在着多个运行着的程序。

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

 

经典的证明方法,

    • 如果不存在并发,则同时只能运行一个程序,就不存在多个程序同时使用一个资源(共享)
    • 如果不存在共享,则多个并发的程序不能同时访问一个资源,即使并发了也无法存取数据,很鸡肋。

 

并发和虚拟的关系

虚拟是指把一个物理上的实体变为若干个逻辑上的对应物。

 

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

 

问题2——虚拟性不存在的话,并发会怎么样,会不会实现不了并发性。

    • 并不会,只是实现起来会很麻烦,就好像用原生JS发Ajax请求一样。

问题1——虚拟处理器 单核CPU可以运行多个程序的例子,体现了操作系统的并发性和虚拟性。具体哪里体现了并发性,哪里体现了虚拟性?CPU被划分为哪些逻辑对应物?

    • 什么是逻辑对应物,按照老师的说法,比如:进程号PID IO操作接口等是逻辑对应物;程序和IO设备是物理实体。
    • 虚拟性主要体现就是“接口”,虚拟性,简单来讲就是OS封装了操作硬件的函数,类似于使得每个硬件都有对应的操作类。
    • 更具体一点就是“进程的引入”就是虚拟性的一个很好体现,其中PID,UID就是对硬件的一种虚拟化,没有进程,就很难实现并发,容易出错。有了进程,就能很好的管理并发。
    • 也就是说,虚拟化是一种服务于并发的技术,没有虚拟化,可以用原始原生的方法实现并发,但是有了虚拟性就如同拥有了“OO面向对象的方法学”可以更轻易的实现并发,实现对硬件的管理

 

并发和异步的关系

只有系统拥有并发性,才有可能导致异步性

 

 

 

操作系统的发展与分类

  1. 手工操作阶段——通过打孔纸片输入代码
  2. 单道批处理系统——打孔纸片先输入给磁带,磁带再更快速的输入到计算机
    • 有操作系统的雏形
  3. 多道批处理系统 ——没有人机交互的PC
    • 操作系统正式诞生
  4. 分时操作系统——所有人平等时间使用电脑
  5. 实时操作系统——优先处理紧急事务
    • 分为①硬实时操作系统——不允许规定时间内没完成任务
    • ②软实时操作系统——允许偶尔没在规定时间内完成任务

    • 绿框常考

 

手工操作阶段

主要缺点:用户独占全机、人机速度矛盾导致资源利用率极低

 

批处理阶段——单道批处理系统

引入脱机输入/输出技术(用外围机+磁带完成),并由监督程序负责控制作业的输入、输出。

 

外围机:功能1.可以完成把程序提前存入纸带里面,2.并控制纸带输入。

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

主要缺点:只有脱机命令接口=批处理命令接口,没有联机命令接口=交互式命令接口。

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

 

批处理阶段——多道批处理系统

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

主要缺点:没有GUI,

用户响应时间长,没有人机交互功能(用户提交自己的作业之后就只能等待计算机处理完成,中间不能控制自己的作业执行。eg:无法调试程序/无法在程序运行过程中输入一些参数

 

分时操作系统

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

 

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

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

 

实时操作系统

在实时操作系统的控制下,计算机系统接收到外部信号后及时进行处理,并且要在严格的时限内处理完事件。

 

分为两种实施系统

  1. 硬实时系统——必须在绝对严格的规定时间内完成处理
    • 如:导弹控制系统、自动驾驶系统
  2. 软实时系统——能接受偶尔违反时间规定
    • 如:12306火车订票系统

 

主要优点:能够优先响应一些紧急任务,某些紧急任务不需时间片排队。

主要特点:是及时性和可靠性

 

其他几种操作系统

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

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

个人计算机操作系统:如Windows XP、MacOS,方便个人使用。

 

操作系统的运行机制⭐

在这里插入图片描述

 

 

两种指令

  1. 特权指令:操作系统允许使用的中断、删除等危险操作
    • 如:内存清零指令。这些指令影响重大,只允许“管理者”——即操作系统内核来使用
  2. 非特权指令:用户、应用程序被允许使用的简单的加减乘除等操作

两种程序

  1. 内核程序:需要调用特权指令的程序
    • 也就是实现操作系统的程序
    • 很多内核程序组成了“操作系统内核简称"内核"(Kernel)
  2. 应用程序:不需要特权指令的程序

两种处理器状态

  1. 核心态(内核态、管态):CPU只有在核心态才能使用特权指令,才能运行内核程序。
  2. 用户态(目态):CPU不能使用特权指令,不能运行内核程序

 

内核态、用户态的切换

状态的切换称为变态

内核态to用户态:

执行一条特权指令——修改PSW(程序状态字)的标志位为“用户态”,这个动作意味着操作系统将主动让出CPU使用权

用户态to内核态:

  • 1.由“中断”引发硬件自动完成变态过程,触发中断信号意味着操作系统将强行夺回CPU的使用权
  • 2.可以使用陷入指令Trap,触发“内中断”

 

内核分类⭐、操作系统体系结构、计算机系统的层次结构

总计一下:

    1. 操作系统体系结构包括 内核 和 非内核 部分
    2. 内核有两大部分功能,其中黄色部分是最基本的功能。橙色的是有些OS没有划分进去的内容。
    3. 内核的分类
      • 只包含必不可少的时钟管理、中断处理、原语的内核是微内核
      • 还包含任务管理器、进程管理、设备管理的内核是大内核

典型的大内核/宏内核/单内核 操作系统: Linux、UNIX

典型的 微内核 操作系统: Windows NT

 

从下图可以直观看出来,只用微内核转换状态(变态)的次数变多了

在这里插入图片描述

内核的结构

  • 时钟管理:时钟的第一功能是计时,操作系统需要通过时钟管理,向用户提供标准的系统时间。另外,通过时钟中断的管理,可以实现进程的切换。
  • 中断机制:中断机制是操作系统各项操作的基础。如键盘或鼠标信息的输入、进程的管理和调度、系统功能的调用、设备驱动、文件访问等。中断机制负责保护和恢复中断现场的信息,转移控制权到相关的处理程序。
  • 原语
    • 原语是最接近硬件的部分
    • 这些程序的运行具有原子性,其操作只能一气呵成(主要从系统安全性和便于管理考虑)
  • 如何实现原语的“原子性”
    • 原语的执行具有原子性,即执行过程只能一气呵成,期间不允许被中断。可以用“关中断指令”和“开中断指令”这两个特权指令实现原子性
    • (关中断),让其所有动作不可分割地完成后再打开中断
    • (开中断)。在核心态下执行,常驻内存。

 

中断与异常

中断的功能

CPU 上会运行两种程序,一种是操作系统内核程序,一种是应用程序

 

“中断”是让操作系统内核夺回CPU使用权的唯一途径

如果没有“中断”机制,那么一旦应用程序上CPU运行,CPU就会一直运行这个应用程序

状态转换方式:

内核态→用户态:执行一条特权指令——修改PSW(程序状态字)的标志位为“用户态”,这个动作意味着操作系统将主动让出CPU使用权

用户态→内核态:由“中断”引发,硬件自动完成变态过程,触发中断信号意味着操作系统将强行夺回CPU的使用权

 

中断的分类

    • 分类依据是CPU中断信号的来源

外中断 (正常运行)

举例:

    1. 外部设备请求:
      • 比如:I/O设备请求读入,scanf()读入键盘缓冲区的时候,程序会中断停止。
    2. 人工干预:
      • 比如:任务管理器强行关闭一个进程

内中断(也就是异常)

  1. 陷阱、陷入(trap) 也叫自愿中断
    • 用户态下,应用程序调用系统程序
  2. 故障(fault)
    • 比如,外部设备打印机没有纸了
  3. 终止(abort)
    • 比如,整数除以0

何为陷入指令 trap?

陷入指令是指用户程序所依靠的指令用于发起系统调用,请求操作系统提供服务。

陷入指令有其中一点特殊在于,其只能在用户态下执行,而不可以在核心态下执行。

用户程序执行陷入指令,相当于把CPU的使用权主动交给了操作系统内核程序(CPU状态会从用户态切换到核心态),之后操作系统内核程序再对系统调用请求做出相应的处理。处理完成后,操作系统内核程序又会把CPU的使用权还给用户程序(即CPU状态从核心态切换到用户态)。

 

 

系统调用

定义

系统调用:是操作系统提供给应用程序(程序员/编程人员)使用的接口

可以理解为一种可供应用程序调用的特殊函数,应用程序可以通过"系统调用"来请求获得操作系统内核的服务

系统调用存在的意义

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

在这里插入图片描述

系统调用的功能

凡是与资源有关的操作、会直接影响到其他进程的操作,一定需要操作系统介入,即需要通过系统调用来实现

系统调用与库函数的区别

库函数是高级语言中提供的与系统调用对应的函数(也有些库函数与系统调用无关),目的是隐藏“访管”指令的细节,使系统调用更为方便、抽象。库函数属于用户程序而非系统调用,是语言或应用程序的一部分,可以运行在用户态

系统调用是操作系统的一部分,是内核为用户提供的程序接口,运行在核心态,而许多库函数都会使用系统调用来实现功能。未使用系统调用的库函数,其执行效率通常要比系统调用的高。因为使用系统调用时,需要上下文的切换及状态的转换(用户态->核心态)

 

系统调用的过程

传递系统调用参数→执行陷入指令(用户态)→执行系统调用相应服务程序(核心态)→返回用户程序

注意:

1.陷入指令是在用户态执行的,执行陷入指令之后立即引发一个内中断,从而CPU进入核心态

2.发出系统调用请求是在用户态,而对系统调用的相应处理在核心态下进行

3.陷入指令是唯一一个只能在用户态执行,而不可在核心态执行的指令

 

 

 

标签:操作系统,程序,用户,王道,并发,内核,CPU,考研
来源: https://www.cnblogs.com/nuistzpz/p/16683552.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有