现代计算机系统

软件分层
应用软件、支撑软件、系统软件
操作系统的定义
管理系统资源、控制程序执行、改善人机界面、提供各种服务,并合理组织计算机工作流程和为用户方便有效地使用计算机提供良好运行环境的一种系统软件。
操作系统是最靠近硬件的一层软件,它把硬件裸机改造成为完善的虚拟机,使得机器功能得到扩展,运行环境得到改善,系统效率得到提高,安全性能得到保证。
操作系统隔离其他上层软件,并为它们提供接口和服务,使得上层软件可以获得远较硬件所能提供的更多更强的功能上的支持。操作系统是软件系统的核心,它与硬件一起构成了各种软件的基础运行平台。
操作系统的主要目标
- 方便用户使用
- 扩大机器功能
- 管理系统资源
- 提高系统效率
- 构筑开放环境
观察和研究操作系统4种观点
- 服务用户观点:操作系统作为用户接口和公共服务程序
- 进程交互观点:操作系统作为进程执行的控制者和协调者
- 系统实现观点:操作系统作为扩展机或虚拟机
- 资源管理观点:操作系统作为资源的管理者和控制者
操作系统的主要功能
- 处理机管理
- 存储管理
- 设备管理
- 文件管理
- 网络与通信管理

对于linux,其内核就可分为进程管理子系统、内存管理子系统、文件子系统、网络子系统、设备子系统。

这些功能后面我们会分几个章节去介绍。
操作系统的主要特性
- 并发性:两个或两个以上的事件或活动在同一时间间隔内发生。
- 共享性:操作系统中的资源可被多个并发执行的进程所使用
- 异步性
资源管理技术

资源复用
资源复用解决物理资源数量不足,分为:
- 空分复用共享:该资源可进一步分割成更多和更小的单位供进程使用,例如:进程空分复用内存资源,其映象装入不同内存区域,各有自己的地址空间且通过硬件存储保护机制隔离。
- 时分复用共享:并不把资源进一步分割成更小的单位,进程可在一个时间段内独占使用整个物理资源。 又分为:
- 时分独占式:进程获得时分独占式资源后,对资源执行多个操作,通常使用一个完整的周期后才会释放(如磁带)。
- 时分共享式:时分共享式资源指进程占用该类资源使用后,很可能随时被剥夺,被另一个进程抡占使用(如处理器、磁盘机)。
资源虚拟
资源虚拟解决物理资源数量不足,提高服务的能力和水平。是对资源进行转化、模拟或整合,把物理上的一个资源变成逻辑上的多个对应资源(或物理上多个资源变成逻辑上一个对应资源)的一类技术。
和空分复用的区别:空分复用分割实际存在的物理资源,虚拟实现虚构假想的虚拟同类资源。
资源虚拟的例子:虚拟设备、虚拟内存、虚拟文件、虚拟屏幕(终端)、虚拟信道。
虚拟技术可用于外部设备——虚拟设备。 SPOOLing,将物理上的一台独占设备转化成逻辑上的多台虚拟独占设备。
资源抽象
资源抽象处理系统的复杂性,解决资源的易用性,通过创建软件来屏蔽硬件资源物理特性和接口细节,简化对硬件资源的操作、控制和使用的一类技术。
例如将设备操作机器指令抽象为调用系统IO接口(隐蔽I/O操作实现细节)
操作系统中三个基础抽象:
- 进程:进程是对于进入内存的执行程序在处理器上操作的状态集的一个抽象。进程抽象的效果是让用户感觉到有自己独享的处理器,从而,可为用户提供多任务操作系统和分时操作系统。
- 虚存:虚存是内存的一种抽象,虚存抽象的效果是给用户造成假象,感觉独占了一个连续地址空间,编写应用程序的长度不受物理内存大小限制。虚存是通过结合对内存和外存的管理来实现的,把一个进程的虚存中的内容存储在磁盘上,用内存作为磁盘的高速缓存,以此为用户提供比物理内存空间大得多的虚拟内存空间。
- 文件:文件是对IO设备的一个抽象,文件是通过将文件中的字节映射到存储设备的物理块中来实现文件抽象。文件抽象的效果是让用户感觉到总能满足自己对设备上信息的存取需求,而且使用十分方便。
这三个抽象为包含的关系。
形成与发展

基本服务和用户接口

两态与两种指令
- 用户态(目态):此时CPU只能执行非特权指令
- 核心态(管态):特权指令、非特权指令都可执行
应用程序运行在用户态,不允许使用特权指令。
基本服务
- 创建程序
- 执行程序
- 数据I/O
- 信息存取
- 通信服务
- 错误检测和处理
还具有其他功能:资源分配,统计,保护。
用户接口和系统调用
OS的功能通过一组称为系统调用(system call)的接口呈现给用户,内核提供一系列实现预定功能的内核函数,系统调用把应用程序的请求传达给内核,内核调用对应的内核函数完成请求所需处理后,再将处理结果返回给应用程序。应用程序通过系统调用才能请求系统服务和使用系统资源。
系统调用的作用:
1. 使内核可基于权限和规则对资源访问进行裁决,保证系统的安全性;
2. 是系统调用封装资源抽象,提供一致性接口,避免用户使用资源时可能发生的错误,且使编程方便效率高。
POSIX(Portable Operating System Interface)标准,规定了约100个API(即OS应提供的服务功能)
C语言可以通过Linux系统标准C库(glibc)进行系统调用。这个库函数又是对系统调用的一层封装。
中断与陷阱指令
内核的功能包含中断处理,发生中断就意味着需要操作系统介入,开展管理工作。
用户态切换为核心态是通过中断实现的。并且中断是唯一途径,用户手动触发中断的指令称为陷阱指令,也称为访管指令。
核心态切换为用户态是通过执行一个特权指令,将程序状态字(PSW)的标志位设置为用户态。
结构和运行模型

内核
内核是计算机上配置的底层软件,是操作系统最基本、最核心的部分。
实现操作系统内核功能的那些程序就是内核程序。
内核的功能:(最基本的功能,微内核)
- 时钟管理
- 中断处理
- 短程调度
- 原语管理,原语:
- 是一种特殊的程序
- 处于操作系统最底层,是最接近硬件的部分
- 这种程序的运行具有原子性
- 其运行只能一气呵成,不可中断
- 运行时间较短、调用频繁
原语通过开中断指令和关中断指令实现,执行原语期间不可被中断。
如果包含操作系统的功能如进程管理。
原创文章,作者:彭晨涛,如若转载,请注明出处:https://www.codetool.top/article/%e6%93%8d%e4%bd%9c%e7%b3%bb%e7%bb%9f%e5%a4%8d%e4%b9%a001%e6%93%8d%e4%bd%9c%e7%b3%bb%e7%bb%9f/