引论
1 操作系统的定义和作用 #
1.1 操作系统定义 #
操作系统是计算机中的一个系统软件,是一系列程序模块的集合。
- 它们能尽可能以有效 、合理的方式组织和管理计算机的软硬件资源;
- 合理地组织计算机的工作流程,控制程序的执行并向用户提供各种服务功能;
- 使得用户更加灵活、方便的使用计算机,使整个计算机系统高效运行;
有效:指系统效率,资源利用率。如cpu利用率是否充足,I/O设备是否忙碌等。
合理:软硬件资源的管理是否公平合理。
1.2 操作系统的作用 #
- 资源的管理者
- 向用户提供各种服务
- 对硬件机器的拓展
1.2.1 OS是资源的管理者 #
自底向上,操作系统是资源的管理者。
资源:
- 硬件(CPU,内存,设备(I/O设备,磁盘,时钟,网卡等))
- 软件(磁盘上的文件,各类管理信息)
1.2.2 OS如何管理资源 #
- 跟踪资源的使用情况 (数据结构)
- 哪些资源空闲,分配给谁,允许使用多长时间等
- 资源分配策略 (算法)
静态分配策略- 动态分配策略(被采纳)
- 实施资源的分配和回收
- 提高资源的利用率
- 保护资源的使用
- 协调多个进程对资源请求的冲突
1.2.3 OS的5大功能——从资源管理的角度 #
- 进程/线程管理(CPU管理)
- 进程线程状态、控制、同步互斥、通信、调度…
- 存储管理
- 分配/回收、地址转换、存储保护、内存扩充…
- 文件管理
- 文件目录、文件操作、磁盘空间、文件存取控制…
- 设备管理
- 设备驱动、分配回收、缓冲技术…
- 用户接口
- 系统命令、编程接口
1.2.4 OS是系统各种系统服务的提供者 #
- 从用户的角度,操作系统提供了一组功能强大、方便易用的命令或系统调用。
- 操作系统提供的典型服务,如进程的创建、执行,文件和目录的操作,I/O设备的使用,各类统计信息等等。
1.2.5 OS是硬件之上的第一层软件 #
- 操作系统在应用程序和硬件之间建立了一个等价的扩展机器
- 对硬件抽象,提高可移植性,相比对底层硬件更容易编程
2 操作系统的主要特征 #
- 并发(concurrency)
- 共享(sharing)
- 虚拟(virtual)
- 随机(random)
2.1 并发 #
并发(concurrency):处理多个同时性活动的能力。
并发引发的问题: 活动切换、保护、相互依赖的活动间的同步。
计算机系统中同时存在多个程序运行,单CPU上,
- 宏观上,这些程序在同时运行
- 微观上,任何时刻都只有一个程序在执行(时间片)
并行(parallel):与并行相似,但指不同程序同时在多个硬件部件上执行。
2.2 共享 #
操作系统与多个用户的程序共同使用计算机系统的资源(共享有限的系统资源)。
操作系统要对系统资源进行合理分配和使用。
资源在同一时间段内交替被多个进程所用。
根据资源被使用的特性,共享可以分为
- 互斥共享(如打印机)
- 同时共享(如可重入代码、磁盘文件)
问题:资源分配难以达到最优化,以及如何保护资源完整性…
2.3 虚拟 #
- 一个物理实体映射为若干个对应的逻辑实体——分时或者分空间
- 虚拟是操作系统管理系统资源的重要手段,可以提高资源利用率
CPU——每个进程的”虚处理机“;
存储器——每个进程都有独立的虚拟地址空间(代码+数据+堆栈);
显示设备——多窗口或虚拟终端
2.4 随机 #
操作系统必须随时对以不可预测的次序发生的事件作出响应并处理。
进程运行的速度不可预知:多个进程并发运行,无法预知每个进程的运行推进的快慢。
难以重现系统在某个时刻的状态(包括重现运行中的错误)。
3 典型操作系统的架构 #
3.1 Windows #
Reference: Windows操作系统的体系结构
核心概念-自底向上:
- 硬件接口
- 内核态
- HAL 硬件抽象层
- kernel 内核
- 设备/文件驱动
- 图形设备
- I/O管理
- …
- 用户态
- 系统支持服务
- 应用程序
- 环境子系统
- Ntdll.dll
3.2 Unix/Linux #
Reference: Unix/Linux的体系架构-简书
4 操作系统分类 #
4.1 传统操作系统分类 #
- 批处理操作系统
- 实时操作系统
- 网络操作系统
- 嵌入式操作系统
- 分时系统
- 个人计算机操作系统
- 分布式操作系统
4.1.1 批处理操作系统 #
基本概念 #
工作方式:
- 用户将作业交给系统操作员;
- 系统操作员将许多用户的作业组成一个作业,输入到计算机系统中,在系统中形成一个自动转接的连续的作业流;
- 启动操作系统;
- 系统自动、依次执行每个作业;
- 操作员将作业结果交给用户。
追求目标: 提供系统资源利用率,增加作业处理吞吐量。
作业的内含:
- 用户程序
- 数据
- 作业说明书(用作业控制语言编写-类脚本)
成批: 通常由多个作业组成,用户提交作业后,只能等待处理结果,不能干预自己作业的执行。
批处理作业:
对一批作业中的每个作业进行相同的处理:从磁带读取用户作业和编译链接程序,编译链接用户作业以生成可执行程序;启动执行;执行并输出结果。
不足:慢速的输入输出直接由主机完成,此过程中CPU出于等待状态,造成资源浪费。
解决方案:使用卫星机,仅仅完成输入输出的工作,处理结果暂存在磁带或磁盘上。
SPOOLING技术 #
- 批处理系统的实现通常采用的技术
- 1961年,🇬🇧曼切斯特大学,Atalas机(原型)
- Simultaneous Peripheral Operation On-Line (同时的外围设备联机操作,又称假脱机技术)
- 思想:利用磁盘作为缓冲,将输入、计算、输出分别组成独立的任务流,使I/O和计算真正并行
工作原理:
现今打印机的打印队列使用了Spooling技术。
4.1.2 分时操作系统 #
时间片(time slice)
操作系统将CPU的时间划分为若干个片段,称为时间片
- 操作系统以时间片为单位,轮流为每个终端用户服务,每次服务一个时间片;
- 其特点是利用人的错觉(?),使用户感觉不到计算机在服务多人。
分时操作系统追求即时响应。
通用型操作系统:
- 分时系统与批处理系统的结合;
- 原则:分时优先,批处理在后
- ”前台”:需要频繁交互的作业 - 分时处理
- “后台”:时间性要求不严的作业- 批处理
4.1.3 实时操作系统 #
计算机能够及时响应外部事件的请求,在规定的严格时间内完成对该事件的处理,并控制所有实时设备和实时任务协调一致地工作。
分类:
第一类:实时过程控制
工业控制,航空,军事控制…
第二类:实时通信(信息)处理
电讯(自动交换机),银行,飞机订票,股市行情…
要求(目标):
- 对外部请求在严格时间范围内作出响应
- 高可靠性
4.1.4 个人计算机操作系统 #
某一时间内为单一用户服务。界面友好,使用方便,丰富的应用软件支持。
4.1.5 网络操作系统 #
基于计算机网络,在计算机网络系统上,按网络体系结构协议标准开发的软件。
功能:
网络管理,通信,安全,资源共享,以及各种网络应用。
目标:
互相通信,资源共享。
4.1.6 分布式操作系统 #
- 分布式系统:或以计算机网络为基础,或以多处理机为基础,基本特征是处理分布在不同计算机上。
- 分布式操作系统:是一个统一的操作系统,允许若干计算机可相互协作共同完成一项任务。操作系统可以将各种系统任务在分布式系统中的任何处理机上运行,自动实现全系统范围内的任务分配、自动调度、均衡各处理机的工作负载。
- 处理能力更强,速度更快,可靠性增强,
4.1.7 嵌入式操作系统 #
- 嵌入式系统:
- 在各种设备(汽车、手机、电视、mp3…)、装置或系统中,完成特定功能的软硬件系统。
- 它们是一个大设备、装置或者系统中的一部分,这个大设备,可以不是计算机。
- 通常工作在反应式或对处理时间有较严格要求的环境中。
- 嵌入式操作系统: 运行在嵌入式系统环境中,对整个嵌入式系统及其操作、控制的各种部件装置等资源进行统一协调、调度、指挥和控制的系统软件。
4.1.8 智能卡操作系统(补充) #
智能卡: 一种包含一块CPU芯片的卡片
特点:
- 非常严格的运行能耗和存储空间的限制,有些智能卡只有单项功能,如电子支付
- 有专用的操作系统
有些智能卡是面向Java的,即智能卡的ROM中有一个Java虚拟机解释器。
5 本章重点 #
- 掌握操作系统的概念
- 掌握重要的操作系统技术
- 了解操作系统架构
- 了解 操作系统的分类