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

2023-11-12

一、操作系统的运行机制

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/

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

《操作系统》- 操作系统的运行环境 的相关文章

  • 数据结构 每日一练 :选择 + 编程

    目录 选择 编程 选择 A a 0 2 1 B a 1 3 C a 4 2 0 D a 0 2 2 答案 D 解析 题目给的是一个3行4列的数组 而D选项是 a 0 2 2 a 0 4 相当于取得是第1行第5列的元素 越界了 需要注意的是数
  • 剑指Offer(牛客网)-替换空格

    题目来源 https www nowcoder com practice 4060ac7e3e404ad1a894ef3e17650423 tpId 13 tqId 11155 tPage 1 rp 1 ru 2Fta 2Fcoding i
  • 网络代理技术:保障隐私与增强安全

    在当今数字化的世界中 网络代理技术的重要性日益凸显 无论您是普通用户还是网络工程师 了解如何使用代理技术来保护隐私和增强网络安全都是至关重要的 本文将深入探讨Socks5代理 IP代理以及它们在网络安全和隐私保护中的关键作用 1 Socks
  • 精益求精:如何在 React 项目中巧妙运用 Redux 并优化项目结构

    在前端开发中 React 和 Redux 已经成为构建可扩展 高效的应用程序的首选工具 本文将向您介绍如何在 React 项目中使用 Redux 并精心划分项目结构 以确保代码的可维护性和可扩展性 第一步 安装 Redux 首先 确保您的项

随机推荐

  • Linux下boost库的编译、安装详解

    下载boost源码 boost下载地址 解压到一个目录 tar zxvf boost 1 66 0 tar gz 执行bootstrap sh脚本 进入boost 1 66 0目录中 cd boost 1 66 0 bootstrap sh
  • Multi-Task Learning as Multi-Objective Optimization 阅读笔记

    Multi Task Learning as Multi Objective Optimization 阅读笔记 Multi Task Learning MTL Multi Objective Optimization MOO Multip
  • Android-Studio中AndroidManifest-xml文件中application标签

    AndroidManifest xml 是每个android程序中必须的文件 它位于整个项目的根目录 描述了package中暴露的组件 activities services 等等 他们各自的实现类 各种能被处理的数据和启动位置 Andro
  • 小米盒子刷鸿蒙系统,继续提升配置:小米 发布小米盒子3 增强版

    距小米盒子3发布时隔小半年之后 小米再度更新产品线 近日于官网发布小米盒子3增强版 除去外观的变化之外 新品在配置方面相较于前作也有显著的提升 首次采用了Cortex A72处理器 小米盒子3增强版售价399元 定于3月18日小米官网发售
  • ECCV2018论文,以及相关比赛地址

    原 ECCV 2018论文解读及资源集锦 10月17日更新 含全部论文下载链接 2018年08月20日 17 41 38 extremevision 阅读数 8983 div class operating div
  • 三维模型轻量化示例

    声明 本文是学习GB T 42869 2023 机械产品三维模型简化与轻量化要求 而整理的学习笔记 分享出来希望更多人受益 如果存在侵权请及时联系我们 1 范围 本文件规定了机械产品三维模型的简化要求和轻量化要求 本文件适用于机械产品三维模
  • 2019多益网络秋招视频面试算法题:将一个长度为n的数组A的元素循环右移k位

    题目 将一个长度为n的数组A的元素循环右移k位 比如数组 1 2 3 4 5 循环右移3位之后变成 3 4 5 1 2 方法一 首先考虑k 如果k能被数组长度len整除 那么数组顺序不变 可以直接输出数组 如果不能整除 得到k k len
  • PostgreSQL 时间函数 extract函数和epoch 新纪元时间的使用

    Extract 属于 SQL 的 DML 即数据库管理语言 函数 同样 InterBase 也支持 Extract 它主要用于从一个日期或时间型的字段内抽取年 月 日 时 分 秒数据 因此 它支持其关健字 YEAR MONTH DAY HO
  • 组合游戏系列3: 井字棋、五子棋的OpenAI Gym GUI环境

    继上一篇完成了井字棋 N子棋 的minimax 最佳策略后 我们基于Pygame来创造一个图形游戏环境 可供人机和机器对弈 为后续模拟AlphaGo的自我强化学习算法做环境准备 OpenAI Gym 在强化学习领域是事实标准 我们最终封装成
  • python面试题一个字符串是否由重复的子字符串组成

    一 给定一个非空的字符串 判断它是否可以由它的一个子串重复多次构成 给定的字符串只含有小写英文字母 并且长度不超过10000 输入 abab 输出 True 解释 可由子字符串 ab 重复两次构成 输入 aba 输出 False 输入 ab
  • 直播网站服务器带宽多少合适,开直播网速要求(开直播要多少兆宽带)

    您好 开直播也是需要分情况的吧 如果是游戏直播 打电脑游戏至少需要100M的电信宽带 体验会好一些 当然网速越高越好 如果是一般直播 上行带宽满足10M就 开直播主要是对上行速度要求比较高 有条件的话建议直接办个百兆的宽带 现在一般运营商上
  • 数据爬取与SOCKS5的完美结合

    大家好 在进行数据爬取的过程中 我们经常需要应对反爬机制和IP限制等问题 今天 我将与大家分享一种强大的工具 数据爬取与SOCKS5代理的完美结合 帮助我们更高效地获取所需数据 1 什么是SOCKS5代理 SOCKS5是一种网络代理协议 能
  • AppsFlyer 研究(十一)配置 Google Ads MCC 获取 LINK ID

    配置 Google Ads MCC 获得 LINK ID 步骤如下 1 打开Google Ads Manager accounts链接 2 点击 Create a manager account 按钮 进入创建管理账号页面 3 填写账号相关
  • 排序算法(Sort)

    预计阅读时间 10分钟 目录 第一部分 冒泡排序 介绍 过程 代码 第二部分 选择排序 介绍 过程 代码 第三部分 插入排序 简介 过程 代码 第四部分 堆排序 简介 过程 代码 第五部分 归并排序 简介 过程 代码 第六部分 快速排序 简
  • 以太坊私有链重启后账户余额清零

    以太坊私有链重启后账户余额清零 问题描述 问题原因 问题解决 这个问题一直折磨了我两天 最后终于在luo同学和lin同学的帮助下解决了该问题 问题描述 使用 geth 搭建私有链 搭建完后新建账户并通过 miner start 挖矿获得以太
  • 【STM32知识点】关于不同外设中断标志位清除的使用笔记

    在使用中断函数的时候 我们往往忘记在中断服务函数内清除中断标志位而导致一些未知错误 以下我总结了几个外设关于中断标志位的清除问题 定时器 1 在程序有使用到中断的情况下 定时器在使能之前需要先清除更新中断标志位 否则会出现定时器一使能就进入
  • RocketMQ学习笔记

    基本概念 MessageQueue 消息存储的队列 topic 由一个或多个队列组成 逻辑概念 tag msg标签 目录 基本概念 架构 分布式事务 RocketMQ事务 RocketMQ安装 下载 开启NameServer 启动Broke
  • Java获取图片传到前端,生成二维码给前端

    可以将本地图片导入然后传到前端 也可以生成一个随意长度的二维码保存到本地 也可以传到前端 可以直接通过地址栏访问 要记得导入相关pom依赖包 获取本地图片传到前端 param paramm param 功能描述 传图片 GetMapping
  • MATLAB画灰阶窗口图

    一 效果图 先上效果图 二 程序 程序段如下 注释里面都写的很清楚 Author ZXX Date 2021 10 25 Introduction 按需求生成多张图片并保存到指定文件夹下 生成多张3840 2160 w h 的含有窗口 窗口
  • 《操作系统》- 操作系统的运行环境

    目录 一 操作系统的运行机制 1 1 基本概念 1 2 时钟管理 1 3 中断机制 1 3 1 内中断有三种情况 1 3 2 中断的处理过程 1 3 3 断点调试 1 4 原语 1 5 系统数据结构 1 6 系统调用 二 操作系统体系结构