操作系统
王道考研操作系统课程笔记以及一些个人见解
概念、功能、目标
最基础的:裸机(纯硬件)(需要学习计算机组成原理)
然后:裸机+操作系统 就是我们新买的电脑了
然后:安装应用程序
这些我们都知道:那什么是操作系统?
抄别人的话就是:
1.负责管理协调硬件、软件等计算机资源的工作
2.为上层的应用程序、用户提供简单易用的服务(我们觉得windows亲切)
3.操作系统是系统软件、不是硬件
用大白话,大多数人你只有装了操作系统,你才会用,你才能打游戏,用电脑上网。有点像我们要做Java开发,就要有JKD JRE环境一样
操作系统定义
操作系统(Operating System,OS) 是指控制和管理整个计算机系统的硬件和软件资源,并合理地组织调度计算机的工作和资源的分配,以提供给用户和其他软件方便的接口和环境,它是计算机系统中最基本的系统软件。
功能目标
作为系统资源的管理者:
处理、存储、文件管理、设备管理都是它的工作
你是不是首先会想到有一个功能是调度进程工作,开一个进程操作系统怎么做?
执行前需要将该程序放到内存中,才能被CPU处理。他也得统一分配我们的设备
作为用户和计算机硬件之,间的接口:
需要提供命令接口(有联机命令接口和脱机命令接口)、程序接口、GUI
那么什么叫联机命令接口?===>cmd 这种交互式的
什么叫脱机命令接口?====>bat文件,就是我们的批处理命令接口,有一堆指令
程序接口:如C: \Windows \System32\user32**. dll**程序员在程序中调用user32. dll (该调用过程即为
系统调用)即可实现创建 窗口等功能。只能通过用户程序间接使用。
操作系统的特征
操作系统的四大特征
并发、共享、虚拟、异步,并发、共享是最基本的特征,两者互为存在条件
并发
这个不用多说了吧,直接放一段PPT介绍吧
并发:指两个或多个事件在同一时间间隔内发生。这些事件宏观上是同时发生的,但微观上是交替发生的。
并行:指两个或多个事件在同一时刻同时发生。
操作系统的并发性指计算机系统中同时存在着多个运行着的程序。
一个单核处理机(CPU)同一时刻只能执行一个程序,因此操作系统会负责协调多个程序交替执行(这些
程序微观上是交替执行的,但宏观上看起来就像在同时执行)
共享
共享即资源共享,是指系统中的资源可供内存中多个并发执行的进程共同使用。
分为互斥共享、同时共享,就字面意思
诶,有没有那味儿了?是不是在那见过这个,这句话很熟悉,工作内存和主内存好像就是这个区别的吧,主内存可以共享,但是工作内存只能本进程、实例用。
他俩什么关系呢?
如果同一时间段内,俩程序工作都要用内存、硬盘数据,你品、细品,如果缺少某一个条件,不能并发:那你共享个屁,缺少共享:同一时间段两者怎么发送同一个文件
虚拟
虚拟是指把一个物理上的实体变为若千个逻辑上的对应物。物理实体(前者)是实际存在的,而逻辑上
对应物(后者)是用户感受到的。
这点emmm品吧,不好举例子,抄人家的例子吧
背景知识:一个程序需要放入内存并给它分配CPU才能执行
假如LOL需要4GB的运行内存,QQ需要256MB的内存,迅雷需要256MB的内存,网易云音乐需要256MB的内…我的电脑: 4GB内存
问题:这些程序同时运行需要的内存远大于4GB,那么为什么它们还可以在我的电脑上同时运行呢?
运用虚拟技术中的“空分复用技术”
某单核CPU的计算机中,用户打开了以下软件。…… LOL QQ 斗鱼 网抑云音乐
为啥能同时用呢?
事实上确实只有一个单核CPU工作,怎么伪装成了4个CPU呢?
时分复用技术:微观上处理机在各个微小的时间段内交替着为各个进程服务
这些技术,后面会详细提及
假如,电脑不能并发,那虚拟技术还干啥?需要他么?
异步
异步我们在开发中是不是经常遇到?异步请求、异步交互。那这里的异步跟我们的计算机操作系统的异步特征一样么?
我还是抄一段定义
异步是指,在多道程序环境下,允许多个程序并发执行,但由于资源有限,进程的执行不是一贯到底的,而是走走停停,以不可预知的速度向前推进,这就是进程的异步性。emmm不一样,这有点像阻塞啊
OS的发展与分类
抄图看一下
手工操作阶段
没操作系统,只能写机器代码
主要缺点:用户独占全机、人机速度矛盾导致资源利用率极低
单道批处理系统
引入脱机输入/输出技术(用磁带完成),并监督程序负责控制作业的输入、输出
这个监督程序就是操作系统的雏形
主要优点:缓解了一定程度的人机速度矛盾,资源利用率有所提升。
主要缺点:内存中仅能有一道程序运行,只有该程序运行结束之后才能调入下一道程序。CPU有大量的时间是在空闲等待I/0完成。资源利用率依然很低。
多道批处理系统
也就是每次往内存输入多道程序,操作系统正式诞生,并引入了中断技术,由操作系统负责管理这些程
序的运行。各个程序并发执行
主要优点:多道程序并发执行,共享计算机资源。资源利用率大幅提升,CPU和其他资源保持“忙碌”状
态,系统吞吐量增大。
主要缺点:用户响应时间长,没有人机交互功能(用户提交自己的作业之,后就只能等待计算机处理完成,
中间不能控制自己的作业执行)
为何多到皮处理系统能使资源利用率大幅提升??
拿视频中的例子
分时操作系统
计算机以时间片为单位轮流为各个用户/作业服务,各个用户可通过终端与计算机进行交互。
诶,这一点熟不熟悉,是不是我们的线程工作有一个什么时间片轮转的方式工作?
主要缺点:不能优先处理一些紧 急任务。操作系统对各个用户/作业都是完全公平的,循环地为每个用户/
作业服务一个时间片,不区分任务的紧急性。
实时操作系统
主要优点:能够优先响应一些紧急任务,某些紧急任务不需时间片排队。不就是能插队么?
在实时操作系统的控制下,计算机系统接收到外部信号后及时进行处理,并且要在严格的时限内处理完事件。实时操作系统的主要特点是及时性和可靠性
实时操作系统又分为,硬实时系统(必须在绝对严格的规定时间内完成处理)和软实时系统(能接受偶尔违反时间规定)
其他的操作系统
网络操作系统:是伴随着计算机网络的发展而诞生的,能把网络中各个计算机有机地结合起来,实现数据传送等功能,实现网络中各种资源的共享(如文件共享)和各台计算机之间的通信。( 如: Windows NT就是
一种典型的网络操作系统,网站服务器就可以使用)
分布式操作系统:主要特点是分布性和并行性。系统中的各台计算机地位相同,任何工作都可以分布在这些计算机上,由它们并行、协同完成这个任务。
运行机制、体系结构
两种指令
特权指令:如内存清零指令(不允许用户使用)
非特权指令:如普通的运算指令
CPU怎么判断是否可以执行特权指令呢?
两种处理器的状态
用户态:又称目态
核心态:又称管态
用程序状态字寄存器(PSW)中的某标志位来标识当前处理器处于什么状态。如0为用户态,1为核心态
我们是不是也在那听说过这两个词?
两种程序
内核程序:操作系统的内核程序是系统的管理者,既可以执行特权指令,也可以执行非特权指令,运行在核心态。
应用程序:为了保证系统能安全运行,普通应用程序只能执行非特权指令,运行在用户态
操作系统内核
最接近底层的操作系统的一部分称为内核
我抄张图
内核又可以分为时间管理、中断处理、原语(装备驱动、CPU切换等)
时钟管理:实现计时器功能、我们常见的什么进程切换、进程调度基于时钟管理
原语:原语是一种特殊的程序。是最接近硬件的部分,这种程序的运行具有原子性。运行时间短、频繁调用
有的操作系统不把这部分功能(进程管理、存储器管理、设备管理等功能)归为“内核功能”。也就是说,不同的操作系统,对内核功能的划分可能并不一样
体系结构
我抄一张图
大内核:将操作系统的主要功能模块都作为系统内核,运行在核心态
优点:高性能
缺点:内核代码庞大,结构混乱,难以维护
微内核只把最基本的功能保留在内核
优点:内核功能少,结构清晰,方便维护
缺点:需要频繁地在核心态和用户态之间切换,性能低