概述
计算机组成
硬件
- 体系结构
- 原始计算机体系结构==控制器 + 运算器 + 存储器 + 输入设备 + 输出设备==
- 原始计算机体系结构又称为 冯 · 诺依曼 结构
- 冯 · 诺依曼三大贡献
- 提出软硬件分离的思想
- 设计完成计算机体系结构
- 提出二进制编码
- 现代计算机体系结构:==处理器 + 存储器 + 输入设备 + 输出设备==
- 原始计算机体系结构==控制器 + 运算器 + 存储器 + 输入设备 + 输出设备==
- 组成:处理器 + [I/O 设备](#I/O 设备) + 存储器
- 体系结构
BIOS:基础输入输出系统
==操作系统==:
- 向下管理计算机硬件资源
- 向上提供用户所需的服务
- 运行在==内核态==下的程序的集合
软件(应用程序):定义利用计算机资源解决用户的实际问题的方式
用户

操作系统定义
引入
操作系统是什么?解释:操作系统扮演了底层硬件和应用程序(用户)的中间角色
为什么要引入操作系统?解释:提供给用户一种==高效便捷==执行程序的方式
-> 不使用操作系统的话,所有的应用软件就会直接在硬件上运行,无论是在编写,运行,移植等方面都有非常多的不方便
完整定义:
- 向下管理计算机硬件资源 -> 自底向上
- 向上提供用户所需要的服务 -> 自顶向下
- 管理分配计算机资源
- 控制相互竞争的程序正确执行
- 运行在==内核态==下的==程序集合==
目的:提供给用户一种 高效便捷 利用硬件资源执行程序的方式
细节
内核和操作系统:
- 内核是操作系统的核心部分:提供硬件抽象层;管理系统的进程、内存、文件,决定着系统的性能和稳定性
- 操作系统是在内核上的延伸:提供为用户服务的软件(数据库,编辑器等等)
- 操作系统 = 内核 + 系统程序(可以认为操作系统就是内核)
运行机制:
- 内核态(特权模式,系统模式,监视模式):操作系统运行在内核态
- 用户态:系统程序和应用程序都运行在用户态
- 注:(1) 操作系统采用一个比特位来表示 内核态(0) 和 用户态(1) (2) 应用程序或者系统程序执行 系统调用 或者 陷入指令
程序分类:(1) 操作系统 (2) 系统程序 (3) 应用程序
- 系统程序不属于操作系统的一部分:围绕着操作系统设计的配套程序
操作系统组成部分
进程管理
进程定义:==正在执行的程序==
进程管理任务
- 进程的 创建 和 删除
- 进程的 停止 和 恢复
- 进程的 同步 和 通信
- 进程的 调度
- 进程的 死锁 处理
细节:
进程是主动的实体;程序是被动的实体
进程的执行需要某种资源(CPU 时间,I/O 设备,内存…)
存储管理
主存管理
主存定义:具有巨大容量的字节数组,每个字节都具有 ==绝对地址==
主存管理任务
- 记录某块内存地址正在被谁使用
- 决定哪些进程会调入或者调出内存
- 分配和释放内存空间
细节:
主存是被处理器和磁盘共享的交互媒介
主存是处理器唯一可以直接访问的大容量存储器
二级存储管理
- 二级存储管理任务
- 空闲内存管理
- 存储分配:如何为文件分配合适的存储空间
- 硬盘调度(长期调度)
文件管理
引入:
- 每种二级存储介质(硬盘,光盘,磁带)都具有自己独特的组织结构和特点
- 每种存储介质的底层异构性导致操作系统并不方便直接管理这些硬件
- 操作系统需要提供一种统一的抽象接口屏蔽底层的异构性,对存储介质进行统一的管理
文件定义:创建者定义的一系列相关数据的集合
文件管理任务:
- 文件的创建和删除(.jpg,.png…)
- 目录的创建和删除(java.lang)
- 支持使用 ==源语== 操作文件和目录
- 支持文件 ==映射== 到二级存储设备中
- 提供文件备份机制
细节:
- 映射:文件管理的目的是为了统一管理不同的存储介质 -> 每个文件需要对应的存储介质中的存储内容
- 备份机制:存储介质本身是 ==不可靠== 的 -> 文件管理需要保证文件的安全性
I/O 管理
I/O 管理任务
提供 ==缓冲缓存系统== :==协调== 不同的 I/O 设备之间的读写速率
解释:不同的 I/O 设备的读写速率相差较大
提供 I/O 设备 ==驱动程序接口==
安全机制
安全机制定义:用于控制用户和进程对于系统资源的访问
安全机制任务:
防止进程与进程之间产生干扰
防止进程直接干扰操作系统
防止进程无限进行下去
分辨已授权的用户和未授权的用户
模式位:
定义:用于表示当前处理器处于何种运行模式
分类:
用户模式:采用比特位 ==1== 表示 (用户进程和系统进程运行在用户模式下)
内核模式:采用比特位 ==0== 表示 (操作系统相关的进程必须运行在内核模式下)
命令行解释程序
定义:获取用户输入的相关命令并且使用 系统程序 或者 系统调用 提供相关的服务
命令行程序的实现方式:
- 选择在操作系统 ==内核== 中实现 (系统调用实现)
- 选择作为 ==系统程序== 实现
命令的实现方式:
命令行解释程序中完成每个命令的具体实现
命令行解释程序只规定命令;命令的具体实现交由系统程序实现
细节:
- 命令行解释程序在操作系统启动的时候 ==伴随启动==
- 命令行解释程序也称为 Shell
- Windows:Powershell
- Linux & UNIX:C shell Kornshell
- 每个操作系统可以拥有多个命令行解释程序;也可以使用第三方设计的命令行解释程序(Windows Terminal)
操作系统服务
用户界面:
- 命令行界面:每条指令依次执行
- 批处理界面:多条命令汇编成文件执行
- 图形用户界面
程序执行:程序可以被加载到内存中被调度执行以及正常结束
I/O 操作:程序运行需要使用 I/O 设备获取相应的资源
文件操作:程序运行需要对文件进行读写操作
通信:多个进程之间需要交换信息
==共享内存==:多个进程对共享区域进行读写
注:这里的共享内存指的是对公共内存的共享;不是代表进程之间可以共享内存
==消息传递==:规定格式的消息在进程之间传递
错误检测:硬件故障,程序出错等错误都需要被检测并纠正
资源分配:每个用户和进程都需要根据需求分配相应的资源
统计信息:统计每个用户和进程使用的资源类型和数量
保护机制:保证每个用户和进程的访问是可控的
