操作系统 中断 系统调用 历史进程概述

操作系统概述

操作系统基本概念

概念

操作系统(Operating System OS)是控制和管理整个计算机系统硬件和软件资源,并合理地组织调度计算机的工作和资源的分配;以提供给用户和其他软件方便的接口和环境;是计算机系统中最基本的系统软件

  1. OS是系统资源的管理者

  2. 向上层提供方便易用的服务

  3. 是最接近硬件的一层软件

操作系统 中断 系统调用 历史进程概述

功能和目标

系统资源的管理者

功能:

  1. 处理机管理
  2. 存储器管理
  3. 文件管理
  4. 设备管理

目标:安全,高效

提供方便易用的服务

OS将简单丑陋的硬件功能封装为简单易用的服务,使用户能更方便地使用计算机,无需关注硬件层面的实现。

GUI 图形化用户接口(Graphical User Interface)

用户使用图形界面进行操作,而无须记忆复杂的命令,参数

联机命令接口实例 (交互式命令接口)

脱机命令接口实例(批处理命令接口)

程序接口:可以使用程序中进行系统调用来使用程序接口。普通用户无法直接使用程序接口,只能通过程序代码**

操作系统 中断 系统调用 历史进程概述

系统调用=广义指令

实现对硬件机器的扩展

没有任何软件支持的计算机称为裸机。裸机上安装操作系统后,可以提供资源管理功能和方便用户的服务功能,将裸机改造成功能更强,使用更方便的机器。

通常将覆盖了软件的机器称位扩充机器,又称之为虚拟机。

操作系统四大特征

并发,共享,虚拟,异步;并发和共享互为存在条件,且为最基本特征

并发

指两个或多个事件在同一个时间间隔内发生。这些事件宏观上同时发生微观上交替发生

*并行:*两个或多个时间在同一时刻同时发生。

**操作系统的并发性:**计算机系统中"同时"运行着多个程序,宏观上同时发生微观上交替发生

操作系统伴随多道程序技术而出现。因此,操作系统和程序并发是一起诞生的。

单核CPU同一时刻只能执行一个程序,各个程序只能并发地执行。

共享

资源共享,指系统中的资源可供内存中多个并发执行的进程共同使用。

互斥共享

一个时间段内只允许一个进程访问该资源

同时共享

允许一个时间段内多个进程*”同时“*对它们进行访问

同时指的是宏观上,微观上可能是交替地对该资源进行访问(分时共享)

并发和共享的关系

  1. 两个进程并发进行
  2. 需要共享地访问磁盘资源

虚拟

虚拟是指将一个物理上的实体变为若干个逻辑上的对应物。物理实体(前者)是实际存在的,而逻辑上对应物(后者)是用户感受到的。

异步

在多道程序环境下,允许多个程序并发执行,但由于资源有限,进程的执行不是一贯到底的,而是走走停停,以不可预知的速度向前推进,此为进程的异步性。

操作系统的发展与分类

手工操作阶段

使用纸带,程序员手工进行I/O操作。

单道批处理系统

引入脱机输入/输出技术(外围机+磁带),由监督程序负责控制作业的输入、输出

*优点:*缓解了一定程度的人机速度矛盾。

缺点: 内存中仅能有一道程序运行,只有该程序运行结束后才能调入下一道程序。CPU有大量的时间是在等待I/O完成,资源利用率低。

多道批处理系统

OS正式出现。多道程序可以并发执行,共享系统资源。

特点:

  1. 多道程序并发执行,共享计算机资源。资源利用率大幅度提升,CPU和其他资源更能保持"忙碌"状态,系统吞吐量大。
  2. 用户响应时间长,没有人机交互功能(用户提交自己的作业之后就只能等待计算机处理完成,中间无法控制自己作业执行。无法调试程序,无法在程序运行过程中输入一些参数)

分时操作系统

计算机以时间片为单位轮流为各个用户/作业服务,各个用户可通过终端与计算机进行交互。

特点:

  1. 用户请求能被即时响应,解决人机交互问题。允许多个用户同时使用一台计算机,并且用户对计算机的操作相对独立,感受不到别人的存在。
  2. 无法优先处理紧急任务

实时操作系统

特点:

  1. 能优先响应一些紧急任务,某些紧急任务不需要时间片排队
  2. 要求在严格的时限内处理完事件。主要特点为及时性和可靠性

分类

硬实时系统:必须在严格的规定时间内完成处理

软实时系统:能接受偶尔违反时间规定

操作系统的运行机制

*应用程序:*仅能使用非特权指令

*内核程序:*可以使用特权指令

内核态与用户态

用户态 = 目态 内核态 = 管态

处于内核态,此时运行是内核程序,此时可以执行特权指令

处于用户态,此时运行是应用程序,此时只能执行非特权指令

CPU中PSW中的某位为1表示内核态,0表示用户态

开机时,CPU处于内核态

处于用户态时,想执行特权指令,发生中断,立刻转变为核心态。

中断使得操作系统重新夺回CPU

中断处理完后交回用户态。

内核态->用户态:执行一条特权指令;修改PSW的标志位为用户态,操作系统主动让出CPU使用权。

用户态->内核态:由中断引发,硬件自动完成变态过程,触发中断信号意味操作系统将强行夺回CPU的使用权。

中断和异常

中断作用

让操作系统内核夺回CPU使用权的唯一途径

合适情况下操作系统内核会把CPU的使用权主动让给应用程序,

中断类型

内中断(异常)

与当前执行的指令有关,中断信号来源于CPU内部

只要当前执行的指令本身是非法的,则会引发中断信号,从而使得用户态切换到内核态

应用程序想请求操作系统内核服务,此时会执行一条特殊的指令–陷入指令,该指令会引发一个内部中断信号。系统调用

陷入指令非特权指令

**陷入:**系统故意引发

**故障:**由错误条件引起的,可能被内核程序修复。如缺页故障

**终止:**由致命错误引起的,内核程序无法修复该错误。 如:整数除0,非法使用特权指令

外中断(中断)

与当前执行的指令无关,中断信号来源于CPU外部

时钟中断,I/O中断请求

中断机制的基本原理

不同的中断信号,需要不同的中断处理程序来处理。当CPU检测到中断信号后,会根据中断信号类型去查询中断向量表,以此来找到响应的中断处理程序在内存中存放的位置。

中断处理程序必为内核程序,需要运行在"内核态",通过中断向量表实现

系统调用

操作系统提供给应用程序(程序员/编程人员)使用的接口,可以理解为一种可供应用的程序调用的特殊函数。应用程序可以通过系统调用来请求获得操作系统内核的服务

操作系统 中断 系统调用 历史进程概述

系统调用和库函数的区别

普通应用程序 可以直接进行系统调用,也可使用库函数。有的库函数设计系统调用,有的不涉及
编程语言 向上提供库函数。有时会将系统调用封装成库函数,以隐藏系统调用的一些细节,使程序员编程更加方便。
操作系统 向上提供系统调用,使得上层程序能请求内核的服务。
裸机

操作系统 中断 系统调用 历史进程概述

不涉及系统调用的库函数:如取绝对值的函数设计系统调用的库函数:如创建一个新文件的函数

系统调用的产生

问题:并发程序对共享资源需求。

由操作系统内核对共享资源进行统一的管理,并向上提供系统调用

例如用户需求打印机,只能通过系统调用向操作系统内核发出请求。内核会对各个请求进行协调处理。

系统调用的分类

凡是与共享资源有关的操作(如存储分配,I/O操作,文件管理等),都必须通过系统调用的方式向操作系统内核提出服务请求,由操作内核代为完成。可以保证系统的稳定性和安全性,防止用户进行非法操作。

设备管理 完成设备的 请求/释放/启动 等功能

文件管理 完成文件的 读/写/创建/删除 等功能

进程管理 完成进程的 创建/撤销/阻塞/唤醒 等功能

进程通信 完成进程之间的 消息传递/信号传递 等功能

内存管理 完成内存的分配/回收 等功能

系统调用的过程

传递系统调用参数->执行陷入指令(用户态)->执行相应的请求内核程序处理系统调用(核心态) ->返回应用程序。

操作系统 中断 系统调用 历史进程概述

注意:

  1. 陷入指令是在用户态执行,执行陷入指令后立即引发一个内中断,使CPU进入核心态
  2. 系统调用指令请求发生于用户态,而对系统调用的相应处理在核心态下进行
  3. trap 指令 = 陷入指令 = 访管指令

操作系统的体系结构

操作系统的内核

操作系统 中断 系统调用 历史进程概述

原语是一种特殊的程序,具有原子性,不可中断。

时钟管理利用时钟中断实现计时功能。

Ubantu,CentOS的开发团队,其主要工作时实现非内核功能,而内核都使用了Linux 内核。

内核是操作系统最基本、核心的部分

实现操作系统内核功能的那些程序是内核程序

分类

与硬件关联最紧密的模块

时钟管理

中断处理

原语

对系统资源进行管理的功能 这些管理工作更多是对数据结构的操作,不会直接涉及硬件

进程管理

存储器管理

设备管理

微内核与大内核

操作系统 中断 系统调用 历史进程概述

操作系统内核需要运行在内核态

操作系统的非内核功能运行在用户态

操作系统 中断 系统调用 历史进程概述

注意变态的过程是有成本的,需要耗费不少时间,频繁变态会降低系统性能

特点

大内核:

  1. 将操作系统的主要功能模块都作为系统内核,运行在核心态
  2. 高性能
  3. 内核代码庞大,结构混乱,难以维护

微内核:

  1. 只将基本的功能保留在内核
  2. 内核功能少,结构清晰,方便维护
  3. 需要频繁地在核心态和用户态之间切换,性能低