操作系统原理 —— 操作系统运行机制与体系结构(三)

news2025/1/21 7:18:14

什么是操作系统的指令?

指令就是处理器(CPU)能识别、执行的最基本命令。

比如我们平时写的 Java 代码、C 语言代码,CPU 它能直接识别并且运行吗? 当然是不行的。

Java、C 语言这些都属于高级语言,它们还需要经过一系列的编译最后才能成为 CPU 能够识别的指令。
在这里插入图片描述

操作系统指令如何保障系统安全?

既然指令能够被 CPU 识别,执行,那如何保障系统的安全呢?

在操作系统中,把指令进行了区分,特权指令、非特权指令这两个部分,特权指令是不允许被用户程序所使用。
在这里插入图片描述

CPU 如何判断当前是否可以执行特权指令呢?

既然指令区分了特权指令和非特权指令,那么在 CPU 执行的时候,它就要判断这个指令该不该执行,所以操作系统又定义了 CPU 的两种状态:用户态 和 核心态,在 CPU 是用户态的时候,就只能执行非特权指令,如果是核心状态,那么既可以执行特权指令,又可以执行非特权指令。

在这里插入图片描述

在 CPU 是如何来判断当前是用户态、还是核心态呢? 主要是利用了标志位来表示处理器处于什么状态,比如 0 是用户态、1 是核心态。

操作系统程序分类

经过上面内容的讲解,既然指令被区分成特权指令、非特权指令,那么有些程序是需要使用特权指令,有些程序是不需要使用特权指令,所以在程序上又区分成:内核程序、应用程序。

在这里插入图片描述

内核程序:操作系统的内核程序是系统的管理者,它既可以执行特权指令、也可以执行非特权指令,由于它需要执行特权指令,所以它必须要运行在核心态

应用程序:为了保证系统的安全,普通的应用程序它只能执行非特权指令,所以它只需要运行在用户态即可。

操作系统中哪些功能应该由内核程序来实现呢?

这里应用程序就不多说了,应用程序就是我们普通的程序员所研发的日常使用软件,被用户来使用。 那么我们一起来看看内核程序有哪些功能。

在这里插入图片描述

通过上图我们可以得知,在内核程序中包括了这么些功能:

  • 时钟管理:实现计时的功能。

  • 中断处理:负责实现中断机制。

  • 原语:原语是一种特殊的程序,处于操作系统最底层,是最接近硬件的部分,并且这种程序员具有原子性。

除了上面这三种以外,还有一些对资源管理的功能,比如:进程管理、存储器管理、设备管理等等。

操作系统的体系结构

对于操作系统中的内核程序,上文也有提到进程管理、存储器管理、设备管理也是属于内核程序,但是有些操作系统不会把这三个归为内核程序,也就是说,不同的操作系统,对内核功能的划分可能并不一样。

在这里插入图片描述

所以操作系统的体系结构又可以划分为:大内核和微内核

大内核:将操作系统的主要功能模块都作为系统内核,运行在核心态,优点是性能比较高,但是缺点就是内核代码庞大、结构混乱、难以维护。

微内核:只把最基础的功能保留在内核,优点就是内核功能少,方便维护,缺点就是性能比较低,因为功能少所以需要频繁的在核心态与用户态之间进行切换。

本章总结

在这里插入图片描述

这里说几个重点:

1、特权指令只能在核心态下执行

2、内核程序只能在核心态下执行

3、用户态、核心态之间的切换,也比较重要,这个后续再讲解。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/434479.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

再也不怕面试官问:详解Synchronized和Lock的实现原理及使用场景

1、Synchronized与Lock对比 实现方式:Synchronized是Java语言内置的关键字,而Lock是一个Java接口。锁的获取和释放:Synchronized是隐式获取和释放锁,由Java虚拟机自动完成;而Lock需要显式地调用lock()方法获取锁&#…

Moonbeam 操作指南|使用Docker和Systemd在Moonbeam上运行节点

运行全节点允许您存储链的本地副本、验证新的区块、获取对RPC端点的本地访问权限以及配置为创作区块的收集人等。 📄 查看开发者文档 重点操作如下: 虽然运行(和升级)您自己的节点需要付出时间和精力,但同时您也会获…

动力节点Vue笔记——第四章Vue与Ajax

四、Vue与AJAX 4.1 回顾发送AJAX异步请求的方式 发送AJAX异步请求的常见方式包括: 原生方式,使用浏览器内置的JS对象XMLHttpRequest const xhr new XMLHttpRequest()xhr.onreadystatechange function(){}xhr.open()xhr.send() 原生方式&#xff0…

【算法题】2583. 二叉树中的第 K 大层和

题目: 给你一棵二叉树的根节点 root 和一个正整数 k 。 树中的 层和 是指 同一层 上节点值的总和。 返回树中第 k 大的层和(不一定不同)。如果树少于 k 层,则返回 -1 。 注意,如果两个节点与根节点的距离相同&…

Android kotlin 用RecyclerView(androidx+BRVAH3.0.6)实现从底部弹出列表对话框(单选/多选)功能

文章目录 一、实现效果二、引入依赖三、实现源码1、实体类2、适配器单选/多选3、框架弹窗AnyLayer单选/多选3、实现视图一、实现效果 二、引入依赖 在app的build.gradle在添加以下代码 1、框架弹窗AnyLayer(github官网):implementation "com.github.goweii:AnyLayer:4.1…

linux(CentOS 6.5) 安装 Oracle 11g步骤

第一步:准备 1、服务器环境: 系统:CentOS 6.5 (Final) x86_64(Py3.7.8) 2、Navcat: 版本16.0.14 - Premium(这里数据库管理工具,不限,可以用其他的) 3、FinalShell: 版本3.9.2.2&a…

FE_CSS 页面布局之圆角边框 盒子阴影 文字阴影

1 圆角边框 在 CSS3 中,新增了圆角边框样式,这样我们的盒子就可以变圆角了。border-radius 属性用于设置元素的外边框圆角。 border-radius:length;参数值可以为数值或百分比的形式如果是正方形,想要设置为一个圆,把数值修改为高…

2023-04-15 算法面试中常见的链表问题

2023-04-15 算法面试中常见的链表问题 本章的两个基础类如下 链表的节点类。toString()在debug时实时查看链表很有用 /************************************************************ Description : 链表的节点* author : 梁山广(Liang Shan Guang)* date : 2020…

使用Oracle数据库的java程序员注意:不要再使用generated always as identity了!

Identity Columns是在Oracle版本≥12c中的新特性:自增字段 在自增字段后使用以下2种语句的1种即可完成自增: generated by default as identitygenerated always as identity 在userinfo表的基础上,我们来看下区别: 1、使用ge…

VMware vSphere 8.0 Update 1 正式版发布 - 企业级工作负载平台

ESXi 8.0 U1 & vCenter Server 8.0 U1 请访问原文链接:https://sysin.org/blog/vmware-vsphere-8-u1/,查看最新版。原创作品,转载请保留出处。 作者主页:sysin.org 2023-04-18,VMware vSphere 8.0 Update 1 正式…

V2G模式下含分布式能源网优化运行研究(Matlab代码实现)

💥 💥 💞 💞 欢迎来到本博客 ❤️ ❤️ 💥 💥 🏆 博主优势: 🌞 🌞 🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 …

LAMP架构的配置

一.LAMP概述 1、LAMP的概念 LAMP架构是目前成熟的企业网站应用模式之一,指的是协同工作的一整套系统和相关软件,能够提供动态web站点服务及其应用开发环境 LAMP是一个缩写词,具体包括Linux操作系统、Apache网站服务器、MySQL数据库服务器、…

加速文件传输协议如何工作?

流行的文件传输协议(例如FTP / S,SFTP和HTTP / S)取决于名为TCP的基础协议。TCP的问题在于,随着网络条件(例如延迟和数据包丢失)的增加,网络吞吐量会大大降低。这在很大程度上归因于用于确保TCP…

当对象的引用计数为零时

上一篇文章,我提到要避免对象的析构函数被调用两次,有一位读者声称:当对象第一次被构建的时候,它的引用计数应该为 0,在某些时候,例如调用 QueryInterface 的时候,它的 AddRef 方法应该被调用以…

【算法题解】24. 模拟机器人行走

这是一道 中等难度 的题 https://leetcode.cn/problems/walking-robot-simulation/description/ 题目 机器人在一个无限大小的 XY 网格平面上行走,从点 (0, 0) 处开始出发,面向北方。该机器人可以接收以下三种类型的命令 commands : -2 &am…

C++ 引用

什么是引用 引用不是新定义一个变量,而是给已存在变量取了一个别名,编译器不会为引用变量开辟内存空间,它和它引用的变量共用同一块内存空间。(语法层面来讲) 但在底层实际上引用是开辟空间的,类似于指针 …

大数据能力提升项目|学生成果展系列之八

导读 为了发挥清华大学多学科优势,搭建跨学科交叉融合平台,创新跨学科交叉培养模式,培养具有大数据思维和应用创新的“π”型人才,由清华大学研究生院、清华大学大数据研究中心及相关院系共同设计组织的“清华大学大数据能力提升项…

操作系统前置知识

进程 程序存储在磁盘之中,需要加载内存才能执行,包含堆空间、栈空间、全局和静态变量数据、代码,具体执行效果如下所示: 所谓的进程概念就是操作系统为了执行某个程序为其分配的内存资源,该内存资源并不是连续的&…

【数据结构】二叉树的链式结构(笔记总结)内附递归展开图(炒鸡详细)

👦个人主页:Weraphael ✍🏻作者简介:目前学习C和算法 ✈️专栏:数据结构 🐋 希望大家多多支持,咱一起进步!😁 如果文章对你有帮助的话 欢迎 评论💬 点赞&…

Web前端基础——盒子模型

(1)盒子模型的作用: 布局网页,摆放盒子和内容 (2)盒子模型重要组成部分: 内容区域 - width & height内边框 - padding(出现在内容与盒子边缘之间)边框线 - border外…