加入收藏 | 设为首页 | 会员中心 | 我要投稿 云计算网_宿迁站长网 (https://www.0527zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 搭建环境 > Unix > 正文

【操作系统篇】第二篇——计算机系统概述(下)

发布时间:2022-10-24 13:32:39 所属栏目:Unix 来源:互联网
导读:
系统调用

什么是系统调用
知识点回顾:
操作系统作为用户和计算机硬件之间的接口,需要向上提供一些简单的服务。主要包括命令接口和程序接口。其中,程序接口由一组系统调用组成。

"系统

unix系统_unix 结构文件_unix系统结构

系统调用

unix系统_unix 结构文件_unix系统结构

什么是系统调用

知识点回顾:

操作系统作为用户和计算机硬件之间的接口,需要向上提供一些简单的服务。主要包括命令接口和程序接口。其中,程序接口由一组系统调用组成。

unix系统_unix 结构文件_unix系统结构

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

unix系统_unix 结构文件_unix系统结构

系统调用与库函数的区别

普通应用程序unix系统结构,可直接进行系统调用,也可使用库函数。有的库函数涉及系统调用,有的不涉及。

编程语言,向上提供库函数,有时会将系统调用封装成库函数,以隐藏系统调用的一些细节,使程序员编程更加方便。

操作系统,向上提供系统调用,使得上层程序能请求内核服务。

unix系统结构_unix系统_unix 结构文件

不涉及系统调用的库函数:如的"取绝对值"的函数

涉及系统调用的库函数:如"创建一个新文件"的函数

unix系统_unix 结构文件_unix系统结构

为什么系统调用是必须的

生活场景:去学校打印店打印论文,你按下了 WPS 的“打印”选项,打印机始工作。 你的论文打印到一半时,另一位同学按下了 Word 的“打印”按钮,开始打印他自己的论文。

思考:如果两个进程可以随意地、并发地共享打印机资源,会发生什么情况?

两个进程并发运行,打印机设备交替地收到 WPS 和 Word 两个进程发来的打印请

求,结果两篇论文的内容混杂在一起了 …

解决方法:由操作系统内核对共享资源进行统一的管理,并向上提供“系统调用” ,用户进程想要使用打印机这种共享资源,只能通过系统调用向操作系统内核发出请求。内核会对各个请求进行协调处理。

unix系统_unix 结构文件_unix系统结构

什么功能要用系统调用实现

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

unix 结构文件_unix系统结构_unix系统

unix系统_unix 结构文件_unix系统结构

系统调用的过程

一个程序运行在用户态,这个应用程序的各个指令会被CPU依次执行,当它想要发出系统调用的时候,他会进行传参数的指令给CPU中传入必要的参数。例如:

unix 结构文件_unix系统结构_unix系统

当这些参数都放到CPU之后,应用程序会传入陷入指令,陷入指令会引发一个内中断,因此转入相应的中断处理程序--即系统调用的入口程序。于是这个CPU会暂停运用这个应用程序,转而去执行处理线路指令的程序,这个程序就是系统调用入口程序,即内核态。

unix 结构文件_unix系统结构_unix系统

然后根据寄存器中的参数来判断用户需要哪种系统调用服务,例如上面的寄存器参数1需要调用的使fork,于是入口程序会调用与之对应的处理程序,执行完后,CPU又会转会用户态,接着执行应用程序。

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

注意: 1. 陷入指令 是在 用户态 执行的,执行陷入指令之后立即引发一个 内中断 ,使 CPU 进入核心态 2. 发出系统调用请求 是在 用户态 ,而 对系统调用的相应处理 在 核心态 下进行

unix 结构文件_unix系统结构_unix系统

unix系统_unix 结构文件_unix系统结构

操作系统的体系结构

unix系统_unix 结构文件_unix系统结构

操作系统的内核

内核是操作系统最基本,最核心的部分,实现操作系统内核功能的那些程序就是内核程序。

unix 结构文件_unix系统结构_unix系统

注意:操作系统内核需要运行在内核态,操作系统的非内核功能运行在用户态。

unix系统_unix 结构文件_unix系统结构

大内核VS微内核

unix系统结构_unix系统_unix 结构文件

现在,应用程序想要请求操作系统的服务,这个服务的处理同时设计到进程管理,存储管理,设备管理。注意:变态的过程是有成本的,要消耗不少时间,频繁地变态会降低系统性能。

大内核:将操作系统的主要功能模块都作为系统内核,运行在核心态。优点:1.高性能,内核内部各种功能都可以直接相互调用,缺点:1.内核代码庞大,结构混乱,难以维护.2.大内核中某个功能模块出错,就可能导致整个系统崩溃。

微内核:只把最基本的功能保留在内核;优点:内核功能少,结构清晰,方便维护;某个功能模块出错不会导致整个系统崩溃。缺点:需要频繁地在核心态和用户态直接切换,性能低。用户态下的各功能模块不可以直接相互调用,只能通过内核的"消息传递"来间接通信。

典型的大内核/宏内核/单内核 操作系统:Linux,UNIX

典型的微内核操作系统:Windows NT

unix系统_unix 结构文件_unix系统结构

分层结构

特性:内核分多层,每层可单向调用更低一层提供的接口,

优点:1.便于调试和验证,自底向上逐层调试验证;2.易扩充和易维护,各层之间调用接口清晰固定。

缺点:1.仅可调用相邻低层,难以合理定义各层的边界;2.效率低,不可跨层调用,系统调用执行时间长。

unix系统结构_unix系统_unix 结构文件

unix系统_unix 结构文件_unix系统结构

模块化

特性:将内核划分为多个模块,各模块之间相互协作。

内核=主模块+可加载内核模块。

主模块:只负责核心功能,如进程调度,内存管理。

可加载内核模块:可以动态加载新模块到内核,而无需重新编译整个内核。

优点:1.模块间逻辑清晰易于维护,确定模块间接口后即可多模块同时开发;2.支持动态加载新的内核模块(如:安装设备驱动程序,安装新的文件系统模块到内核),增强OS适应性。3.任何模块都可以直接调用其他模块,无需采用消息传递进行通信,效率高。

缺点:1.模块间的接口定义未必合理,实用;2.模块间相互依赖,更难调试和验证。

unix系统结构_unix系统_unix 结构文件

unix系统_unix 结构文件_unix系统结构

操作系统引导

开机过程

一个刚买来的磁盘如下所示:

给其安装了操作系统后,如下所示:

unix系统结构_unix 结构文件_unix系统

操作系统引导:

1.CPU从一个特定主存地址开始,取指令,执行ROM中的引导程序(先进行硬件自检,再开机)

2.将磁盘的第一块--主引导记录 读入内存,执行磁盘引导程序,扫描分区表

3.从活动分区(又称主分区,即安装了操作系统的分区)读入分区引导记录,执行其中的程序

4.从根目录下找到完整的操作系统初始化程序(即启动管理器)并执行,完成"开机"的一系列动作。

unix系统_unix系统结构_unix 结构文件

注:完整的操作系统初始化程序(即启动管理器)可在根目录下找到

Eg:windows操作系统完整的开机初始化程序在"根目录/Windows/Boot"下

unix系统_unix系统结构_unix 结构文件

unix系统_unix 结构文件_unix系统结构

虚拟机

虚拟机:使用虚拟化技术,将一台物理机器虚拟化为多台虚拟机器,每个虚拟机器都可以独立运行一个操作系统

unix系统_unix 结构文件_unix系统结构

两类虚拟机管理程序(VMM)对比

unix系统结构_unix系统_unix 结构文件

(编辑:云计算网_宿迁站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!