一、是什么
操作系统是计算机系统中的一个系统软件,是一些程序模块的集合,我们以几个问号来体会下操作系统是干啥的
1、CPU利用率充足与否?I/O设备是否忙碌?
2、各种软硬件资源的管理是否公平合理
3、没有操作系统你要直接和硬件疙瘩打交道。。。也就是用户界面和编程接口
二、有啥用
1、资源管理者
管哪些?(五大基本功能)
进程/线程管理(CPU管理):进程线程状态,控制,同步互斥,通信,调度
存储管理:分配回收,地址转换,存储保护,内存扩充
文件管理:文件目录,文件操作,磁盘空间,文件存取控制
设备管理:设备驱动,分配回收,缓冲技术
用户接口:系统命令和编程接口
怎么管?
· 跟踪记录资源的使用状况(数据结构和算法),如哪些资源空闲,分配给谁,允许使用多长时间
确定资源分配策略--算法(静态策略和动态策略)
资源的分配和回收
提高资源利用率
保护资源的使用
协调多个进程对资源请求的冲突
2、向用户提供各种服务
典型的服务:进程的创建执行;文件和目录的操作;I/O设备的使用;各类统计信息等
3、屏蔽复杂的硬件
操作系统是硬件之上的第一层软件,如下图
硬件是很繁杂的,操作系统屏蔽了硬件细节,给用户提供了一个扩展机器(虚拟机)
三、特征
首先我们给出四个词:并发、共享、虚拟、随机
并发和并行的概念解释太多了,我觉得解释得越细反而越纠结,用知乎里的一张图来表明下意思
并发:两个队列交替使用一台咖啡机
并行:两个队列同时使用两台咖啡机
并发和并行都可能涉及到线程,这里不详细说明,后面会详细讲
共享:分互斥共享(如打印机)和同时共享(如磁盘文件)
虚拟:如CPU的虚拟,存储器的虚拟,窗口和终端的虚拟
随机:进程的运行速度以及系统在某个时刻的状态不可预知
四、典型架构
这里只介绍下Windows和Linux,Unix用的少,不讲。我们直接上图了解,具体的可以查阅相关资料来了解,我们需要
知道大体的架构图有哪些组成部分。
这是我们用的最多的Windows的
抽象一下:
再抽象一层:
下面是Linux的
五、分类
1、批处理操作系统
2、分时操作系统
3、实时操作系统
4、个人计算机操作系统
5、网络操作系统
6、分布式操作系统
7、嵌入式操作系统