1.1 操作系统的概念:
1.1.1 什么是操作系统:
- 控制和管理整个计算机系统的硬件和软件资源
- 合理地组织调度计算机的工作和资源的分配
- 提供给用户和其他软件方便的接口和环境
- 是计算机最基本的系统软件
1.1.2 操作系统的功能和目标:
- 操作系统作为系统资源(资源:软件、硬件、文件等)的管理者,提供什么功能?
- 提供功能:处理机管理(CPU)、存储器管理、文件管理、设备管理
- 目标:安全高效
- 理解案例:打开QQ和朋友聊天,QQ是软件,QQ的安装路径有组织存在操作系统(文件夹中),QQ的程序相关数据放入内存,QQ相关的进程由CPU处理
- 操作系统作为用户与计算机硬件之间的接口,要为其上层的用户、应用程序提供简单易用的服务,需要实现什么功能?
- 提供功能:命令接口、程序接口、GUI(图形用户界面) <-- 这三个统称"用户接口"
- 命令接口:允许用户直接使用
- 联机接口:一句系统一执行(如:cmd,输入一个指令就执行一个指令)
- 脱机接口:一堆系统做一堆(如:如写程序在记事本,然后在程序)
- 程序接口:允许用户提供程序间接使用,程序接口=系统接口(如:通过程序,注意是程序,调用user32.dll,就是程序接口)
- GUI(图形用户界面):图形用户接口(如:windows、安卓的图形页面就是)
- 命令接口:允许用户直接使用
- 目标:方便用户使用
- 提供功能:命令接口、程序接口、GUI(图形用户界面) <-- 这三个统称"用户接口"
- 操作系统作为最近硬件的层次,需要在硬件的基础是实现什么功能?
- 提供功能:实现对硬件机机器的拓展(如:在裸机上安装操作系统,提高机器的使用能力)
1.1.3 总结:
- 操作系统是在硬件和应用程序的中间
- 操作系统对系统如:CPU、进程等(叫做系统资源)进行管理
- 提供接口给用户使用,一部分直接使用(如:cmd窗口),一部分需要通过软件间接使用(如:user32.dll)
- 操作系统主要目的:方便用户的使用
1.2 操作系统的特征:
1.2.1 操作系统的特征有:并发、共享、虚拟、异步:
- 并发:指两个或多个事务在同一时间内间隔发生(宏观上是同时发生,微观上就进行一次任务发生,因为它的交替执行)
- 并行:指两个或多个事务在同一时刻同时发生
- 共享:系统中的资源,提供内存中多个并发执行的进程使用
- 互斥共享方式:系统中的某些资源,可以提供给多个进程使用,但一个时间段只允许一个进程访问该资源(如:微信视频了,就不能在使用相机拍视频)
- 同时共享方式:系统中的某些资源,允许同一个时间段由多个进程“同时”进行访问(如:QQ和微信都发生文件,宏观是是同时发生,微观上是交替访问硬盘进行发生)
- 虚拟:把一个物理上的实体变成若干个逻辑上对应物,物理实体是时间存在,对应物是用户感受
- 理解案例:电脑只有4GB的运行内存,GTA5需要4GB来运行,当我玩GTA5,我又打开qq、微信、网易云这些原超4GB,还能运行用到的就是虚拟技术
- 虚拟技术分为:空分复用技术、时分复用技术
- 异步:在多道程序环境下,允许多个程序并发执行,但由于资源有限,进程的这些不是一贯待到底,而是走走停停,以不可预知的速度推进
- 理解案例:一个电脑(人),只有一个心(CPU),现在要进行两段约会(两个进程),当人把心给到第一个约会的人,第二个约会的人也向人要心,但心在约会一的手里,这就是可限的资源,导致走走停停
1.2.1 并发性和共享性的关系:
- 并发和共享是互为存在条件
- 没有并发,共享就失去意义
- 没有共享,就不行实现并发
- 没有并发和共享,就谈不上性虚拟和异步,所有并发和共享是操作系统最基本的特征
1.2.3 总结:
- 操作系统的特征:并发、共享、虚拟、异步
- 没有并发和共享就没有,虚拟和异步
- 并发和共享是相辅相成,是操作系统最基本的特征
1.3 操作系统的发展和分类:
1.3.1 总结:
- 每一代操作的跟新都是解决上一代操作的缺点
1.4 操作系统的运行机制与体系结构
1.4.1 运行机制和体系结构分为:
- 分为:运行机制、操作系统内核、操作系统的体系结构
- 运行机制:两种指令、两种处理器状态、两种程序
- 两种指令:特权指令、非特权指令
- 特权指令:特殊的指令(不允许用户程序执行的指令)【通过处理器状态来标识只是可以使用】
- 非特权指令:普通的运算指令(允许用户程序使用)
- 两种处理器状态:核心态、用户态
- 用户态:只能执行非特权指令
- 核心态:特权指令、非特权指令都可以执行
- 怎么知道是用户、核心态,用程序状态寄存器中的某个标识来进行标识
- 用户态到->核心态是通过中断实现的。并且中断是唯一的途径
- 核心态->用户态执行一个特权指令,将程序状态的标志设置为:用户态
- 两种 程序:内核程序、应用程序
- 内核程序:操作系统的内核程序是系统的管理者,可以执行特权指令,也可以执行非特权指令,运行在核心态
- 应用程序:保证系统能安全运行,普通的应用程序只能执行非特权指令,运行在用户态
- 两种指令:特权指令、非特权指令
- 操作系统内核分为:时钟管理、中断处理、原语、系统资源进行管理的功能
- 时钟管理:实现计时功能
- 中断处理:负责实现中断机制
- 一种特殊的程序
- 处于操作系统底层,最近硬件的部分
- 具有原子性,要么全执行,要么全步执行
- 运行时间短,调用频繁
- 进程管理
- 存储器管理
- 设备管理
3. 原语:
4. 系统资源进行管理的功能:(不同的操作系统,对这个也不同)
- 操作系统的体系结构:大内核、微内核
- 大内核:
- 操作系统的主要功能都作为系统内核,运行在核心态
- 优点:高性能
- 缺点:内核代码大,结构混乱,难以维护
- 微内核:
- 只把基本的功能保留中内核
- 优点:内核功能少,结构清晰,方便维护
- 缺点:性能低,需要频繁地在用户态和核心态切换
- 大内核:
1.4.2 总结:
- 运行机制:
- 特权指令(不允许用户程序使用)、非特权指令(不允许用户程序使用)
- 用户态(只能非特权指令)、核心态(在核心态可以使用特权指令,和非特权指令)
- 内核程序(运行在核心态,内核管理者)、应用程序(运行在用户态,保证系统安全运行)
- 操作系统内核分为:时钟管理、中断处理、原语、系统资源进行管理的功能
- 这些都是管理操作系统
操作系统的体系结构:大内核、微内核
1.5 中断和异常
1.5.1 中断机制的诞生:
- 实现多道程序并发执行而引入的一种技术
1.5.2 中断的概念和作用:
- 概念:发生中断,意味着需要操作系统介入开展管理工作,CPU立即进入核心态
- CPU立即进入核心态理解:当执行“文件1”的时候处于用户态,“文件1”进行IO操作,CPU进入核心态,就会去判断执行到“文件2”
- 作用:
- 用户态到->核心态是通过中断实现的。并且中断是唯一的途径
1.5.3 中断的分类:
-
内中断:CPU内部进行中断的信号
- 指令中断、硬件故障、软件中断
- 外中断:CPU外部进行中断的信号
- 外设请求、人工干预
1.5.4 外中断的处理过程:
1.5.5 总结:
- 中断是为了解决多道程序并发执行,提高CPU的利用率
- 中断分CPU外部和内部中断,
- 外部中断会对当前的进程进行一个类型存档的操作
1.6 系统调用
1.6.1 什么是系统调用,和作用:
- 系统调用:操作系统提供给应用程序使用的接口
- 应用程序提供系统调用来请求获取操作系统的服务
- 作用:
- 系统调用会使处理器从用户态进入核心态
- 保证系统的稳定性和安全性
- 防止用户进行非法操作
- 理解案例:如一个应用程序需要使用文件,那么该程序需要使用操作系统提供的接口来请求获取对文件的操作
1.6.2 什么资源需要操作系统的介入:
- 分类:设备管理、文件管理、进程控制、进程通信、内存管理
- 总结:与资源有关的操作,直接影响到其他进程的存在,一定需要操作系统介入
1.6.3 系统调用和库函数的区别:
- 系统调用:是向上层提供的接口
- 库函数:是对系统调用的进一步封装
- 现在大多数的编程语言如C、java提供的库函数间接地进行系统调用
1.6.4 系统调用背后的过程:
- 传递系统调用参数
- 执行陷入指令(执行陷入指令产生中断,使处理器从用户态进入核心态)
- 执行系统调用相应服务程序
- 返回用户程序
- 细节:系统调用发生在用户态,系统调用的处理发生在核心态
1.6.5 总结:
- 系统调用是提供给应用程序使用的接口,应用程序需要通过请求来获取操作系统的服务
- 与资源,直接影响其他进程的存在,一定需要操作系统的进入,所有需要系统调用来实现
- 系统调用是向上提供接口,库函数是对系统调用进一步封装
- 系统调用发生在用户态,系统调用的处理发生在核心态