Operating System
什么是操作系统
控制和管理整个计算机系统的硬件和软件资源,并合理组织调度计算机的工作和资源的分配,以提供给用户和其他软件方便的接口和环境,它是计算机系统中最基本的系统软件。
- 负责管理协调硬件、软件等计算机资源的工作
- 为上层的应用程序、用户提供简单易用的服务
- 操作系统是系统软件,而不是硬件
Basic Concepts of OS
Processes:进程管理,进程树
Address spaces:地址空间,物理内存、虚拟内存
Files:文件系统,文件和目录
Input/Output:输入输出,I/O
Protection:硬件和软件
The shell:命令提示符
System Call:系统调用
- 用户程序和系统程序之间的接口
- 在内核模式执行
- POSIX API/ Windows Win32 API
- 系统调用类型
- 进程控制:创建、终结进程,获取/设置 进程参数
- 文件操作:Create;delete;read;write;get/set file attributes
- 设备管理:Request;Release;Read;Write
- Socket:Connection:Open/Accept/Read/Write/Close
- 信息维护:获取当前的日期,OS Version等

Characters of OS 操作系统的特征
Concurrency:并发
并发 Concurrency:逻辑并发(宏观上看是同时执行的,微观上,是划分为小的时间片,一段时间A用,一段时间B用)
并行 Parallel:物理并发(A、B两个程序真的在同时执行
Share:共享
CPU,Main Memory,Storage,I/O devices
Space,Time
互斥共享方式:一个时间段只允许一个进程访问该资源
同时共享方式:允许一个时间段由多个进程“同时”对它们进行访问
Virtualization:虚拟
虚拟式把物理上的实体变为若干个逻辑上的对应物。物理上实体是物理存在的,而逻辑上对应物是用户感受到的。
空分复用技术:虚拟内存,虚拟存储器技术
时分复用技术:单核CPU多线程,虚拟处理器
没有并发性,就谈不上虚拟性
Asynchronism:异步
多道程序环境下,资源有限,程序以不可预知的速度向前推进,就是进程的异步性。
只有系统拥有并发性,才有可能导致异步性。

知识点:
并发与并行的区别
并发与共享互为存在条件
没有并发和共享,就谈不上虚拟和异步,因此并发和共享是操作系统的两个最基本的特征
OS Runtime Structure 运行机制体系结构
运行机制
两种指令:
- 特权指令:如I/O指令、内存清零指令
- 非特权指令:如运算指令
两种处理器状态:程序状态字寄存器(PSW)
- 用户态:CPU只能执行非特权指令
- 核心态:特权指令、非特权指令都可以执行
两种程序:
- 内核程序:系统的管理者,既可以执行特权指令,也可以执行非特权指令,运行在核心态。
- 应用程序:普通应用程序只能执行非特权指令,运行在用户态。

单体系统:全部操作系统在内核态中以单一程序的方式运行
主程序:处理服务过程请求
服务过程:执行系统调用
使用过程:辅助服务过程
层次式系统:上层软件都是在下一层软件的基础上构建的。
微内核:
仅有一个模块(微内核)运行在内核态,剩下全都在用户态。MINIX 3 微内核
只有时钟管理、中断处理、原语等,不包括进程管理、存储器管理、设备管理等功能。

Client-Server模式(Web运行模式)
服务器:提供服务
客户端:使用服务
服务器与客户端之间通过消息传递方式
虚拟机:
- VM370
- 多道程序
- 一个比裸机更方便、有扩展界面的计算机。裸机硬件的精确复刻品
- hypervisor Ⅰ
外核(exokernel):
通过拆分硬件资源来分配给虚拟机,比如一块硬盘,某个虚拟机获得磁盘的0-1023盘块,而另一台虚拟机获得1024-2047盘块。
这样做减少了映射层,这样就少了一张表格来维护重映像磁盘地址。
中断和异常
中断机制的诞生
发生中断意味着需要操作系统介入,开展管理工作
中断的概念和作用
- 中断发生时,CPU会立即进入核心态
- 中断发生后,当前运行进程暂停运行,并由操作系统内核对中断进行处理
- 中断信号不同,处理方式不同
有了中断,才能实现多道程序并发执行。
中断可以使CPU从用户态切换为核心态,被操作系统获得计算机的控制权。
| 用户态→核心态 | 中断 |
|---|---|
| 核心态→用户态 | 改变程序状态字 |
中断的分类
内中断(也称异常、例外、陷入(陷阱)):信号来源:CPU内部,与当前执行的指令相关。
自愿中断——指令中断
强迫中断
硬件故障:如缺页
软件中断:如软件出现异常Exception
外中断(中断——狭义的中断):信号来源:CPU外部,与当前执行的指令无关
外设请求:如IO完成操作
人工干预:用户强制停止进程
外中断处理过程:
- 每条指令执行完后检查是否有中断请求
- 如果检测到中断请求,保护被中断程序的CPU环境(保护现场)(如程序状态字、程序计数器、寄存器)
- 根据中断信号处理中断程序
- 恢复原程序的CPU环境(恢复现场)并退出中断,返回原程序继续执行
系统调用
什么是系统调用

程序接口就是由一组系统调用来组成的
应用程序通过系统调用请求操作系统的服务。需要访问系统资源,都需要系统代为完成,所以需要系统调用,这样可以保证系统的稳定性和安全性,防止用户的非法操作。
系统调用会让CPU从用户态进入核心态
系统调用 & 库函数
系统调用是操作系统向上层提供的接口
有些库函数是对系统调用的进一步封装
当今应用程序大多通过高级语言直接or间接进行系统调用
系统调用背后过程
- 传递系统调用参数
- 执行陷入(trap、int)指令
- 执行系统调用相应服务程序
- 返回用户程序
操作系统的管理功能
- 进程管理
- 存储管理
- 设备管理
- 文件管理
- 作业管理
本博客所有文章除特别声明外,均采用 CC BY-SA 3.0协议 。转载请注明出处!