os 基本概念
操作系统:计算机系统最基本的系统软件,硬件外的第一层软件,是对硬件的首次扩充,其他系统软件均依赖于os。
| 计算机系统 |
应用程序:包括系统软件(如编译器(一段程序指令))和应用软件(如qq)。
操作系统:控制和管理软件和硬件资源;作为用户与硬件之间的接口;计算机开机时会被加载到RAM。
硬件:如CPU,主存等。
os基本特征
1.并发:多个程序宏观上同时进行,微观上交替进行,通过分时实现。
并行:同时发生(硬件支撑,如多处理机有多个cpu)
2.共享:分为互斥共享和同时共享。
互斥:一段时间内只允许一个进程访问。大多数资源是不可抢占的。
同时:允许交替访问资源。
-
互斥和同时的共同点
都不可同时访问资源 -
互斥和同时的区别
同步好比:任务 A 应在任务 B 之前执行
互斥好比:任务 A 和任务 B 不能同时执行
互斥是两个任务不可以同时运行,必须等待一个进程运行完后,另一个才能运行;而同步也是不能同时运行,但是必须要按照某种次序来运行,是一种更复杂的互斥。
互斥并不限制任务的运行顺序,任务是无序的;而同步的任务之间则有顺序关系。
临界资源:一段时间内只允许一个进程访问的资源
- 并发和共享的关系
- 如果不能共享,则多个进程无法同时访问共享资源,也就没法实现并发。
- 如果不能并发,则系统中只有一个程序运行,那么共享没有意义。
- 并发和共享是最基本的特征,两者互为存在条件。
3.虚拟:多道提供,用户感觉上。
虚拟技术:时分复用技术,空分复用技术。
- 虚拟处理器(时分复用技术)
- 虚拟外设(时分复用技术)
- 虚拟内存(空分复用技术:以时间换空间)
4.异步:因为进程并发执行,所以执行时走走停停,可能发生错误
os功能
1.管理计算机系统资源
处理机管理(进程管理)、存储器管理、文件管理(由文件系统管理)、设备管理
2.作为用户与硬件间的接口
- 命令接口(用户):有shell命令解析器、命令解释器等
- 联机(交互式):输入一条命令->解释程序->执行
- 脱机(批处理):输入一堆命令->逐条解释执行
- 程序接口(编程人员):又叫系统调用,广义指令
- 为程序使用内核功能提供的接口,只能通过用户程序间接使用,效率较低
3.扩充机器
无软件->裸机
覆盖软件->虚拟机/扩充机器
os发展历程
1.手工操作阶段(机器等人、cpu利用不充分)
2.批处理阶段(主要缺点是缺少交互性,不是耗费内存)
- 单道批处理系统(内存中只有一道作业)缺点:运行时等待I/O
- 多道批处理系统
- 内存中有多道作业;
- 通过中断技术可实现I/O可与CPU并行工作;
- CPU利用率、I/O利用率、内存吞吐量都上升
- 操作系统开始出现
3.分时操作系统(无法满足紧急任务)
优先级+非抢占;
响应时间=用户数×时间片;
改善响应时间;
要求快速响应用户是分时系统出现的重要原因;
交互性好;
4.实时操作系统
优先级+抢占式;
实时操作系统在规定时间内完成来自外部的事件,资源利用率低,交互性差;
分为硬实时系统和软实时系统(及时、可靠);
5.网络操作系统(通信)
6.分布式操作系统(并行,资源共享,协同完成同一工作)
7.个人计算机操作系统
-多道程序设计技术提高资源利用率,制约、间断、共享是其基本特征;
-批处理,提高利用率,必须提供pcb;
-多道批处理要切换进程,开销大
-IBM-PC是微型计算机操作系统;
-cpu利用率=Tcpu/T总
现代操作系统都是多任务的,有并发(CPU与CPU)、并行(I/O与CPU)的特点
- 多任务os:单处理机,多个任务,有并发与并行特点
- 多处理机os:多重处理(并行);多任务处理(并发)
处理器运行模式
指令:
特权指令:这类指令权限高,不允许用户程序使用。
非特性指令:权限低,对其他用户没有影响。
处理器状态:
用户态:CPU只能执行非特权指令。
核心态:特权指令和非特权指令都可以执行。
两种程序:
内核程序:即可以执行特权指令又可以执行非特权指令,运行在核心态。
应用程序:只能执行非特权指令,运行在用户态。
特权指令:
1.置时钟指令,
2.有关I/O的指令,
3.访问程序状态的指令,
4.存取特殊寄存器的指令等
中断的分类:
- 外部中断(来自cpu外部):
- 输入输出操作发出请求信号
- 用户强行终止一个进程
- 内部中断(或异常,来自cpu内部):
- Fault:缺页;
- Trap:系统调用时使用的访管指令;
- Abort:整除0;非法使用特权指令;
中断的处理过程:
发现–进程切换–>中断处理(os完成):
- 返回,继续执行;
- 终止,不能恢复。
进入中断处理的是os程序,需保存通用寄存器的内容,提供中断服务,保存中断屏蔽字,初始化中断向量表
·系统调用(函数调用不切换处理器状态)
系统调用发生在用户态,对系统调用的处理发生在核心态
·访管指令仅在用户态执行,执行后,转变为核心态
·用户态使用特权指令,属于访管中断
·进程调度是用算法决定cpu使用权,不需硬件的支持
·os不同,系统调用接口不同
·广义指令,即系统调用,在核心态下执行,存在于核心态,在用户态调用、发生
·输入输出必须在核心态下执行,关中断指令不可在用户态进行
·在核心态可执行除访管外的全部指令
·进程切换是系统调用执行中的事,发生在核心态
·子程序调用需保存pc,即下条指令的地址
·中断需保存pc和psw(程序状态字寄存器),并改为核心态。(中断隐指令自动保存,由硬件自动完成)
·从核心态到用户态是由操作系统程序执行后完成;从用户态到核心态由硬件自动完成
·命令解释程序在用户态执行
os结构
1.分层化
单向依赖,只能调用紧邻的低层,结构清晰,易于调试、扩充,不灵活、效率差
2.模块化
按功能划分
缺点:接口需求多
3.宏内核
各模块作为整体运行在核心态,如windows,Linux
4.微内核(结构比单一内核稳定,因为服务越少越稳定)
内核(小,只有基本硬件功能,只能通过微内核的‘消息传递机制’通信)
用户(多个服务器,利于分布式)
- 应用‘机制’与‘策略’分离原理
添加系统服务时,不必修改内核 - 采用面向对象技术
- 性能低(频繁切换开销大)
使系统更高效 - 基于客户服务器模式
5.外核
对机器分区,给虚拟机分配资源
优点:1.减少映射层 2.保持多个虚拟机不冲突
os引导
1.激活cpu,读boot程序(位于ROM),构建向量表,相应服务以实现
2.硬件自检 (通电post)
3.加载硬盘
4.加载MBR,找有os的主分区(活动与非活动)
5.识别含有os的活动分区
6.加载PBR,激活启动管理器
7.加载os(只将os内核存入内存,不是全部)
引导程序:
1.boot位于ROM,用于启动设备
2.启动管理器(os的引导程序)位于硬盘
虚拟机
将一台物理机器虚拟为多台物理机器,由管理程序模拟,真实硬件不执行,可安装多个os,每个虚拟机器都可独立运行一个操作系统,不同的虚拟机可运行不同的os