操作系统 中断 系统调用 历史进程概述
操作系统概述
操作系统基本概念
概念
操作系统(Operating System OS)是控制和管理整个计算机系统硬件和软件资源,并合理地组织调度计算机的工作和资源的分配;以提供给用户和其他软件方便的接口和环境;是计算机系统中最基本的系统软件。
-
OS是系统资源的管理者
-
向上层提供方便易用的服务
-
是最接近硬件的一层软件
功能和目标
系统资源的管理者
功能:
- 处理机管理
- 存储器管理
- 文件管理
- 设备管理
目标:安全,高效
提供方便易用的服务
OS将简单丑陋的硬件功能封装为简单易用的服务,使用户能更方便地使用计算机,无需关注硬件层面的实现。
GUI 图形化用户接口(Graphical User Interface)
用户使用图形界面进行操作,而无须记忆复杂的命令,参数
联机命令接口实例 (交互式命令接口)
脱机命令接口实例(批处理命令接口)
程序接口:可以使用程序中进行系统调用来使用程序接口。普通用户无法直接使用程序接口,只能通过程序代码**
系统调用=广义指令
实现对硬件机器的扩展
没有任何软件支持的计算机称为裸机。裸机上安装操作系统后,可以提供资源管理功能和方便用户的服务功能,将裸机改造成功能更强,使用更方便的机器。
通常将覆盖了软件的机器称位扩充机器,又称之为虚拟机。
操作系统四大特征
并发,共享,虚拟,异步;并发和共享互为存在条件,且为最基本特征
并发
指两个或多个事件在同一个时间间隔内发生。这些事件宏观上同时发生,微观上交替发生。
*并行:*两个或多个时间在同一时刻同时发生。
**操作系统的并发性:**计算机系统中"同时"运行着多个程序,宏观上同时发生,微观上交替发生。
操作系统伴随多道程序技术而出现。因此,操作系统和程序并发是一起诞生的。
单核CPU同一时刻只能执行一个程序,各个程序只能并发地执行。
共享
资源共享,指系统中的资源可供内存中多个并发执行的进程共同使用。
互斥共享
一个时间段内只允许一个进程访问该资源
同时共享
允许一个时间段内多个进程*”同时“*对它们进行访问
同时指的是宏观上,微观上可能是交替地对该资源进行访问(分时共享)
并发和共享的关系
- 两个进程并发进行
- 需要共享地访问磁盘资源
虚拟
虚拟是指将一个物理上的实体变为若干个逻辑上的对应物。物理实体(前者)是实际存在的,而逻辑上对应物(后者)是用户感受到的。
异步
在多道程序环境下,允许多个程序并发执行,但由于资源有限,进程的执行不是一贯到底的,而是走走停停,以不可预知的速度向前推进,此为进程的异步性。
操作系统的发展与分类
手工操作阶段
使用纸带,程序员手工进行I/O操作。
单道批处理系统
引入脱机输入/输出技术(外围机+磁带),由监督程序负责控制作业的输入、输出、
*优点:*缓解了一定程度的人机速度矛盾。
缺点: 内存中仅能有一道程序运行,只有该程序运行结束后才能调入下一道程序。CPU有大量的时间是在等待I/O完成,资源利用率低。
多道批处理系统
OS正式出现。多道程序可以并发执行,共享系统资源。
特点:
- 多道程序并发执行,共享计算机资源。资源利用率大幅度提升,CPU和其他资源更能保持"忙碌"状态,系统吞吐量大。
- 用户响应时间长,没有人机交互功能(用户提交自己的作业之后就只能等待计算机处理完成,中间无法控制自己作业执行。无法调试程序,无法在程序运行过程中输入一些参数)
分时操作系统
计算机以时间片为单位轮流为各个用户/作业服务,各个用户可通过终端与计算机进行交互。
特点:
- 用户请求能被即时响应,解决人机交互问题。允许多个用户同时使用一台计算机,并且用户对计算机的操作相对独立,感受不到别人的存在。
- 无法优先处理紧急任务
实时操作系统
特点:
- 能优先响应一些紧急任务,某些紧急任务不需要时间片排队
- 要求在严格的时限内处理完事件。主要特点为及时性和可靠性
分类
硬实时系统:必须在严格的规定时间内完成处理
软实时系统:能接受偶尔违反时间规定
操作系统的运行机制
*应用程序:*仅能使用非特权指令
*内核程序:*可以使用特权指令
内核态与用户态
用户态 = 目态 内核态 = 管态
处于内核态,此时运行是内核程序,此时可以执行特权指令
处于用户态,此时运行是应用程序,此时只能执行非特权指令
CPU中PSW中的某位为1表示内核态,0表示用户态
开机时,CPU处于内核态
处于用户态时,想执行特权指令,发生中断,立刻转变为核心态。
中断使得操作系统重新夺回CPU
中断处理完后交回用户态。
内核态->用户态:执行一条特权指令;修改PSW的标志位为用户态,操作系统主动让出CPU使用权。
用户态->内核态:由中断引发,硬件自动完成变态过程,触发中断信号意味操作系统将强行夺回CPU的使用权。
中断和异常
中断作用
让操作系统内核夺回CPU使用权的唯一途径
合适情况下操作系统内核会把CPU的使用权主动让给应用程序,
中断类型
内中断(异常)
与当前执行的指令有关,中断信号来源于CPU内部
只要当前执行的指令本身是非法的,则会引发中断信号,从而使得用户态切换到内核态
应用程序想请求操作系统内核服务,此时会执行一条特殊的指令–陷入指令,该指令会引发一个内部中断信号。系统调用
陷入指令非特权指令
**陷入:**系统故意引发
**故障:**由错误条件引起的,可能被内核程序修复。如缺页故障
**终止:**由致命错误引起的,内核程序无法修复该错误。 如:整数除0,非法使用特权指令
外中断(中断)
与当前执行的指令无关,中断信号来源于CPU外部
时钟中断,I/O中断请求
中断机制的基本原理
不同的中断信号,需要不同的中断处理程序来处理。当CPU检测到中断信号后,会根据中断信号类型去查询中断向量表,以此来找到响应的中断处理程序在内存中存放的位置。
中断处理程序必为内核程序,需要运行在"内核态",通过中断向量表实现
系统调用
操作系统提供给应用程序(程序员/编程人员)使用的接口,可以理解为一种可供应用的程序调用的特殊函数。应用程序可以通过系统调用来请求获得操作系统内核的服务
系统调用和库函数的区别
普通应用程序 | 可以直接进行系统调用,也可使用库函数。有的库函数设计系统调用,有的不涉及 |
---|---|
编程语言 | 向上提供库函数。有时会将系统调用封装成库函数,以隐藏系统调用的一些细节,使程序员编程更加方便。 |
操作系统 | 向上提供系统调用,使得上层程序能请求内核的服务。 |
裸机 |
不涉及系统调用的库函数:如取绝对值的函数设计系统调用的库函数:如创建一个新文件的函数
系统调用的产生
问题:并发程序对共享资源需求。
由操作系统内核对共享资源进行统一的管理,并向上提供系统调用。
例如用户需求打印机,只能通过系统调用向操作系统内核发出请求。内核会对各个请求进行协调处理。
系统调用的分类
凡是与共享资源有关的操作(如存储分配,I/O操作,文件管理等),都必须通过系统调用的方式向操作系统内核提出服务请求,由操作内核代为完成。可以保证系统的稳定性和安全性,防止用户进行非法操作。
设备管理 完成设备的 请求/释放/启动 等功能
文件管理 完成文件的 读/写/创建/删除 等功能
进程管理 完成进程的 创建/撤销/阻塞/唤醒 等功能
进程通信 完成进程之间的 消息传递/信号传递 等功能
内存管理 完成内存的分配/回收 等功能
系统调用的过程
传递系统调用参数->执行陷入指令(用户态)->执行相应的请求内核程序处理系统调用(核心态) ->返回应用程序。
注意:
- 陷入指令是在用户态执行,执行陷入指令后立即引发一个内中断,使CPU进入核心态
- 系统调用指令请求发生于用户态,而对系统调用的相应处理在核心态下进行
- trap 指令 = 陷入指令 = 访管指令
操作系统的体系结构
操作系统的内核
原语是一种特殊的程序,具有原子性,不可中断。
时钟管理利用时钟中断实现计时功能。
Ubantu,CentOS的开发团队,其主要工作时实现非内核功能,而内核都使用了Linux 内核。
内核是操作系统最基本、核心的部分
实现操作系统内核功能的那些程序是内核程序
分类
与硬件关联最紧密的模块
时钟管理
中断处理
原语
对系统资源进行管理的功能 这些管理工作更多是对数据结构的操作,不会直接涉及硬件
进程管理
存储器管理
设备管理
微内核与大内核
操作系统内核需要运行在内核态
操作系统的非内核功能运行在用户态
注意:变态的过程是有成本的,需要耗费不少时间,频繁变态会降低系统性能
特点
大内核:
- 将操作系统的主要功能模块都作为系统内核,运行在核心态
- 高性能
- 内核代码庞大,结构混乱,难以维护
微内核:
- 只将基本的功能保留在内核
- 内核功能少,结构清晰,方便维护
- 需要频繁地在核心态和用户态之间切换,性能低