《操作系统》- 操作系统的运行环境

一、操作系统的运行机制

1.1 基本概念

内核程序和应用程序

  • 应用程序:比如安装好的系统自带的有天气、邮件等功能都存在用户空间。还有就是我们自己安装的一些程序,也都是存在于用户空间,一句话:非必要的应用,可卸载的应用,我们都可以称为应用程序
  • 内核程序:由操作系统内核进行管理的,比如进程管理器、进程调度等这些都属于存在于内核空间,我们称之为内核程序

计算机怎么区分内核程序还是应用程序的?

关于内核程序我们还可以称为核心态或者是管态,关于应用程序的我们可以称为用户态或者是目态,其实他是通过一个标识来区分的,运行应用程序的指令的时候是0,然后运行内核程序的指令是1。

特权指令和非特权指令

运行内核相关的指令都是特权指令,应用程序相关的就是非特权指令。

代码和指令的区别

  • 代码:我们能理解,但是计算机CPU无法理解。但可以通过某些程序进行编译,将他转换为指令。
  • 指令:我们不能理解,但是计算机CPU能理解,并执行指令之中相应的操作。

1.2 时钟管理

系统时钟其实就是操作系统中维护时间和时间服务的一台服务器。系统时钟是操作系统中唯一的本地时间源,它可以使系统在进行一些定期的任务的时候,比如日志记录,系统性能计量,后台任务等等,都能被准确地触发调度或者执行原则。

时钟管理主要有两个功能:

1.3 中断机制

CPU在运行完一个程序后准备要输出结果,直接中断CPU,让他直接切换到另一个程序,等上一个程序的IO设备完事之后,再切换回去,这就是通过中断机制来实现的。

中断机制分为了内外中断:

  • 外中断:被动中断,比如多个应用程序都等着运算,可能每个程序就运行一小会,然后被迫中断,继续下一个运算。
  • 内中断:通过指令来中断的。
1.3.1 内中断有三种情况

(1)陷入:由应用程序主动引发

以下图为例,运行了一个程序,程序不断有指令传给CPU,突然来了一个读取文件的命令,读取文件属于内核指令,这时候CPU会产生一个陷入指令,紧接着再执行特权指令。

(2)故障:由错误条件引发

以下图为例,运行了一个非常大的游戏程序,一般游戏都是好几个g,不可能将全部的磁盘文件来加载到内存,他只会加载一部分到内存,假如执行的过程当中发现内存缺少文件,然后就会出现一个故障中断。等磁盘文件读取到内存过后再继续执行后面的指令。注意这里指的后面的指令不一定是特权指令。

(3)终止:由致命错误引发

地址越界、算数溢出、非法访问特权指令等等这些比较严重cpu根本处理不了直接就中断了。

陷入和故障的差别:

  • 陷入是有意而为之、故障是无意间发生
  • 陷入是指令要求读文件,故障是想读一个文件,结果文件还没加载到内存,停下来先把文件加载进来。
1.3.2 中断的处理过程

这里指的中断不是内中断也不是外中断,而是所有的中断的处理过程。

这里的关中断和开中断其实就是在指程序是否终止状态:

  • 关中断就是程序终止指令的执行。
  • 开中断就是继续程序的指令执行。

其实整个流程主要分为了大致三步:

  1. 保存执行到的指令位置,其实就是保存到计算机的寄存器当中
  2. 然后开启执行中断程序
  3. 最后再通过寄存器恢复到刚刚执行的指令位置
1.3.3 断点调试

程序当中的断点其实就是基于操作系统的中断指令当中的陷入指令来实现的!INT3断点指令是专门用来支持调试的指令。它的目的就是是cpu中断到调试器,以供调试者对执行现场进行各种分析。当我们在调试软件时,可以在某处插入INT3指令,当cpu执行到此断点处时会暂停下来。

在这里插入图片描述
当单击调试运行后,产生如下对话框:

在这里插入图片描述
打开反汇编窗口,如下图:

在这里插入图片描述
发现中断的位置00921AF9处有一条 int 3指令。

打开寄存器窗口,发现EIP的值也为00921AF9,如下图:

在这里插入图片描述

这个案例其实并不完整,只能说通过这个案例可以让我们知道,我们现在所了解的不仅仅是概念知识,其实都是真实存在的,只不过可能偏底层一点。

1.4 原语

计算机进程的控制通常由原语完成。所谓原语,一般是指由若干条指令组成的程序段,用来实现某个特定功能,在执行过程中不可被中断。在操作系统中,某些被进程调用的操作,如队列操作、对信号量的操作、检查启动外设操作等,一旦开始执行,就不能被中断,否则就会出现操作错误,造成系统混乱。所以,这些操作都要用原语来实现 原语是操作系统核心(不是由进程,而是由一组程序模块组成)的一个组成部分,并且常驻内存,通常在管态下执行。原语一旦开始执行,就要连续执行完,不允许中断。

1.5 系统数据结构

1.6 系统调用

由操作系统实现提供的所有系统调用所构成的集合即程序接口或应用编程接口(Application Programming Interface,API)。是应用程序同系统之间的接口。

用户程序只在用户态下运行,有时需要访问系统核心功能,这时通过系统调用接口使用系统调用。

二、操作系统体系结构

  • 从用户角度看,操作系统所体现的是它提供的各种各样的服务;
  • 从程序员角度看,操作系统体现的是提供给用户的界面和接口;
  • 从设计人员的角度看,操作系统是一大堆模块和它们之间的相互联系。

这便是操作系统的体系结构。

2.1 无结构操作系统

通常把组成操作系统的基本单位称为构件,基本的操作系统构件有内核、进程、线程和管程等。传统的操作系统结构(大内核)可以把它理解成就是函数之间的调用,杂乱无章。

2.2 模块化结构系统

模块化结构,主要通过一种称之为系统调用的API机制对外层的用户程序提供服务。整个内核采用模块化设计,模块之间借助于接口进行通信。

2.3 分层式结构系统

内核系统由若干个层次构成,最底层是硬件裸机,最高层是应用服务。

层与层之间的调用关系严格遵守调用规则,自顶向下的规则,每一层只能访问位于其下层所提供的服务。

2.4 微内核OS结构

又称为客户机/服务器结构。它尽可能多的从操作系统内核中去掉东西,只留下一个很小的内核,由用户进程实现大多数操作系统的功能。

操作系统被分为多个部分,每个部分仅处理一个方面的功能,如文件服务、进程服务或存储器服务等,每个部分小,易于管理。所有的服务都以用户进程的形式运行,不在内核态下运行,所以不直接访问硬件。关于这一点我们可以打开任务管理器看一下,我们电脑在刚启动的时候并没有开启任何引用程序,他会启动很多基础进程。

其他的我们可能看不懂,但是这个蓝牙应该知道是什么吧。

缺点:多走了一层应用程序。以前读个文件直接通过应用程序调用内核程序的指令就可以读了,现在还需要调用操作系统提供的文件服务器,由这个文件服务器来调用内核指令。

三、总结

在这里插入图片描述

参考:《马士兵操作系统讲解》https://www.bilibili.com/video/BV1Ha411e7D4/

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

怪 咖@

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值