计算机操作系统-运行机制、体系结构

2023-11-08

操作系统的运行机制

  • 指令与代码的区别

例如C语言中的代码经过编译器翻译,得到机器语言指令。其中高级语言的代码翻译的结果可能会对应多条指令。简单来说,指令就是处理器CPU能识别、执行的最基本的命令

  • 两种指令

有的指令执行起来不会对操作系统或者其他的内容产生影响,而有的程序有着很高的权限,如果随意的使用,可能会对整个系统带来严重的影响。例如内存清零指令,如果用户程序可以随意使用这个指令,那么就意味着一个用户可以将其它用户的内存数据随意清零,显然这是很危险的

由此,可将指令划分为以下两类

特权指令

不允许用户程序使用。例如内存清零指令

非特权指令

允许用户程序随意使用。例如普通的运算指令

 

  • 两种处理器状态

因为指令是被CPU所识别、执行的命令,所以上述根据指令是否可以被用户程序使用的划分方式就存在一个问题,CPU如何判断当前是否可以执行特权指令,即当前内存中存放的程序并交给CPU来处理的是否是用户程序。因此,操作系统给定了两种处理器状态

用户态(目态)

此时CPU只能执行非特权指令

核心态(管态)

此时CPU无论是特权指令还是非特权指令都可以执行

至于如何控制CPU的这两种状态:用程序状态字寄存器PSW中的某个标志位来标识当前处理器处于什么状态,比如0为用户态,1为核心态

 

  • 两种程序

因为存在两种指令,所以对应的根据是否能使用特权指令,将程序划分为内核程序和应用程序

内核程序

操作系统的内核程序是系统的管理者,既可以执行特权指令,又可以执行非特权指令,处理器运行在核心态

应用程序

为了保证系统能安全运行,普通应用程序只能执行非特权指令,运行在用户态

 

#

上述的两种指令、两种处理器状态、两种程序都是人为进行划分的结果,所以会发现两种处理器状态和两种程序的划分具有一定的联系。两种处理器状态的是以内存中的程序是两种程序中的哪一种作为划分依据的。

 

操作系统的内核

由上诉操作系统的运行机制可知,程序可被划分为内核程序和应用程序。那么内核程序和应用程序应该各自完成什么样的功能呢,或者说如何从程序所完成的功能的角度来将程序划分为内核程序和应用程序。

之前有提到过计算机系统的层次结构,其中操作系统层,是可以继续进一步划分的。更靠近应用程序的部分为非内核功能,更靠近硬件部分的为内核功能。具体的,内核(功能)可以划分为对系统资源管理的功能(包括基础管理、存储器管理、设备管理等功能)、时钟管理、中断处理以及原语(设备驱动、CPU切换等)

总而言之,内核是计算机上配置的底层软件,是操作系统最基本、最核心的部分。实现操作系统内核功能的那些程序就是内核程序。

  • 时钟管理

用于实现计时功能,包括并发等等都离不开它。时钟相当于是整个计算机系统的心跳。

  • 中断处理

负责实现中断机制

  • 原语

一种特殊的程序,是最接近硬件的部分。这种程序的运行是具有原子性的。所谓原子性,就是这个程序要么不执行,要么执行到底中途不能被打断。且其运行时间较短、跳用频繁

这三个模块是与硬件联系较为紧密的

对于系统资源管理的功能部分,有的操作系统不将其划分为内核功能。不同的操作系统,对内核功能的划分可能不一样。

 

所以由此对操作系统的体系结构进行了划分,将把系统资源管理的功能部分划分为内核的操作系统的体系结构,称为大内核,将不把系统资源管理的功能部分划分为内核的操作系统的体系结构,称为微内核

 

操作系统的体系结构

大内核

  • 将操作系统的主要功能模块都作为系统内核,运行在核心态
  • 具有高性能
  • 内核代码庞大,结构混乱,难以维护

微内核

  • 只把最基本的功能保留在内核
  • 需要频繁地在核心态和用户态之间切换,性能低
  • 内核功能少,结构清晰,维护方便

类比

操作系统的体系结构问题和企业的管理问题很相似。

内核就是企业的管理层,负责一些重要的工作。只有管理层才能执行特权指令,普通员工只能执行非特权指令。用户态、核心态的切换相当于普通员工和管理层之间的工作交接

大内核

企业初创时体量不大,管理层的人会负责大部分的事情。优点是效率高,因为很多事情可以免去报备之类的流程;缺点是组织结构混乱,例如分工模糊不明确,难以维护

微内核

企业的体量越来越大,管理层只负责一些核心的工作。优点就是组织结构清晰,方便维护;缺点则是效率低下

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

计算机操作系统-运行机制、体系结构 的相关文章

  • fork之后子进程到底复制了父进程什么

    fork之后子进程到底复制了父进程什么 发表于2015 4 3 9 54 08 2161人阅读 分类 操作系统 include
  • 6.OS运行机制(补充)

    中断
  • texlive支持中文的简单方法

    1 确保tex文件的编码方式是UTF 8 2 在文档开始处添加一行命令即可 即 usepackage UTF8 ctex 如下所示 documentclass article usepackage UTF8 ctex begin artic
  • 线程和进程的区别(面试必备)

    参考文章 https www jianshu com p 2dc01727be45 线程与进程的区别通俗的解释 https www jianshu com p 8ad441510860 附加可参考文章 https baijiahao bai
  • 文件管理系统(操作系统)——9张思维导图

    文件管理系统 1 文件管理 1 1 一个文件的逻辑结构 比如一个文本txt文件 又或者Excel文件 在我们用户看来 它是长什么样的 这个就是逻辑结构 几个概念 逻辑结构 就是指在用户看来 单个文件内部的数据应该是如何组织起来的 物理结构
  • CentOS 7 关闭网络限制

    1 安装CentOS 7 3操作系统mini版本即可 2 设置关闭Selinux 编辑 etc selinux config vi etc selinux config SELINUX disabled 重启机器 查看selinux状态 s
  • pycharm内存不足时如何修改设置?

    Help gt Find Action gt type VM Options gt Click Edit Custom VM Options Pycharm 2016 2 will open the appropriate vmoption
  • 虚拟机管理程序、虚拟化和云: 深入剖析 PowerVM 虚拟机管理程序

    预备知识 Power 是没有限制的虚拟化 一些企业打算依靠 PowerVM 虚拟化将多个工作负载整合到较少系统上 从而提高服务器利用率 降低成本 Power VM 为基于 Power Systems 平台的高级 RAS 功能和领先性能为 A
  • JSON.stringify()

    JSON stringify 将一个JavaScript值 对象或者数组 转换为一个 JSON字符串 如果指定了replacer是一个函数 则可以选择性的替换值 或者如果指定了replacer是一个数组 可选择性的仅包含数组指定的属性 语法
  • office2013 excel 打开时提示excel词典xllex.dll文件丢失或损坏

    今天打开Excel时 发现报错 xllex dll文件丢失或损坏 我用的是office2013 网上找了好多都是2007的dll文件 导入不了 于是乎重装office 问题解决 但还是把xllex dll烤出来做个备份吧 参考下面步骤即可
  • Linux系统编程:多线程交替打印ABC

    引言 分享关于线程的一道测试题 因为网上基本都是Java的解决方法 决定自己写一篇来记录一下线程的学习 问题描述 编写一个至少具有三个线程的程序 称之为线程 A B 和 C 其中线程 A 输出字符 A 线程 B 输出字符 B 线程 C 输出
  • 红帽7.9部署telnet服务

    升级ssh 为预防万一提前配置telnet服务 安装软件包 yum install telnet server yum install xinetd xinetd加入开机自启 systemctl enable xinetd service
  • 深入ftrace kprobe原理解析

    Linux krpobe调试技术是内核开发者专门为了编译跟踪内核函数执行状态所涉及的一种轻量级内核调试技术 利用kprobe技术 内核开发人员可以在内核的绝大多数指定函数中动态插入探测点来收集所需的调试状态信息而基本不影响内核原有的执行流程
  • 03LinuxC线程学习之线程共享和非共享

    1 线程共享和非共享 1 1 线程共享资源 1 文件描述符表 由于线程间共享进程间的内容 而文件描述符表在主线程的PCB当中 各个线程可以直接去请求访问 所以线程间通信就不需要像进程那样通过管道这些方式通信 2 每种信号的处理方式 即当某个
  • 通过源码包*.src.rpm定制开发rpm

    为什么80 的码农都做不了架构师 gt gt gt 1 基本流程 1 下载 安装相应的src rpm包 wget xxx src rpm rpm ivh xxx src rpm 这里的 安装 是指把xxx src rpm中的tar gz p
  • 由于回车符引起的shell错误

    今天弟弟写shell时出现一个错误 源代码如下 zip r 1 2 执行时出现错误 我也写了相同的语句 发现是可以执行的 把两个文件对比一看 差别在于 出错shell 正确shell 在linux下的回车是 n 在win下面的回车是 r n
  • C#实现FTP文件夹下载功能【转载】

    网上有很多FTP单个文件下载的方法 前段时间需要用到一个FTP文件夹下载的功能 于是找了下网上的相关资料结合MSDN实现了一段FTP文件夹下载的代码 实现的思路主要是通过遍历获得文件夹下的所有文件 当然 文件夹下可能仍然存在文件夹 这样就需
  • gdb attach 进程调试

    gdb调试正在运行的进程 GDB可以对正在执行的程序进行调度 它允许开发人员中断程序 并查看其状态 之后还能让这个程序正常地继续执行 gdb attach xxxxx xxxxx为利用ps命令获得的子进程process
  • 地址映射与共享

    跟踪地址映射过程 1 通过命令 dbg asm启动调试器 在linux 0 11运行test c文件 使其进入死循环 我们的任务就是找到i的地址并将其修改为0使test c程序退出循环 2 在命令行输入crit c使Boch暂停 一般会显示
  • 《OSPF和IS-IS详解》一1.7 独立且平等

    本节书摘来自异步社区 OSPF和IS IS详解 一书中的第1章 第1 7节 作者 美 Jeff Doyle 更多章节内容可以访问云栖社区 异步社区 公众号查看 1 7 独立且平等 OSPF和IS IS详解与TCP IP相比 OSI协议对各国

随机推荐

  • nginx_http_proxy,upstream,stream模块简析

    一 ngx http proxy module模块 模块功能 为后端httpd服务做反向代理 并且与Httpd 之间使用http进行通信 1 proxy pass URL Context location if in location li
  • 如何求C语言字符串长度(strlen函数和sizeof关键字)

    如何求C语言字符串长度 strlen函数和sizeof关键字 在程序里 一般会用 strlen 函数或 sizeof 来获取一个字符串的长度 但这2种方法获取的字符串的长度其实是不一样 我们用如下函数进行测试 void test6 char
  • Java8新特性-Lambda表达式

    Lambda表达式 也可称为闭包 它是推动Java8发布的最重要的特性 Lambda允许把函数作为一个方法的参数 函数作为参数传递进入方法中去 使用lambda表达式可以把代码变得更加简洁紧凑 语法 lambda表达式的语法格式如下 par
  • Ciclop开源3D扫描仪软件---Horus源码分析之point_cloud_roi.py

    联系方式 QQ 2468851091 call 18163325140 Email 2468851091 qq com coding utf 8
  • C语言小游戏——井字棋(数组实现)

    学c也学了有一些时间了 今天用c语言做了一个小游戏 井字棋 相信大家也玩过 我们这个游戏的思路呢 是玩家和电脑对弈 谁先把三颗棋子连成一条线 谁就赢了 如下图所示 要想实现我们这个井字棋需要用到数组的知识 所以 老规矩我们先简单的把数组讲一
  • SCI审稿流程(转)

    1 收到邮件 编辑约审稿 同意就接受 会约定审稿期限 一般三个月 Dear Mr Cat Please be informed you have been registered by our editorial team as a user
  • scheduler学习率设置

    在炼丹的过程中 学习率的调整是必不可少的 下面给出scheduler模块的调学习率的方法 后面会慢慢补充 调整学习率 PyTorch官方文档 一 CyclicLR torch optim lr scheduler CyclicLR opti
  • php把二维数组变为一维,如何将PHP二维数组转换为一维数组

    如何将PHP二维数组转换为一维数组 发布时间 2020 07 22 11 12 05 来源 亿速云 阅读 137 作者 Leah 如何将PHP二维数组转换为一维数组 相信很多没有经验的人对此束手无策 为此本文总结了问题出现的原因和解决方法
  • 网络协议详解:TCP Part1

    目录 TCP的可靠性 TCP的机制 ack 编号机制 1 发送的数据编号 SN 2 确认的数据编号 ASN 3 编号规则 4 SN在发送TCP Segment 的 Header 中如何体现 5 ASN的填写规则 6 ISN TCP segm
  • 2.4.3 分区状态

    最后更新2021 07 17 No Active 分区处于非活动状态 在此状态 分区仅存在Profile的定义 可以有多个Profile定义 但都没有激活 而不占据任何系统资源 SMS服务模式状态 分区启动经过自检后将会根据Profile的
  • 香港爱情电影二十四经

    香港爱情电影二十四经之第一经 寻找 飞一般爱情小说 叶锦鸿1997 我们不是在寻找 我们只是在给邂逅一个机会 叶锦鸿的这部电影清新温暖 恬淡动人 一幅如流水般的爱情图画 三个青年相约一块寻找一个女孩 然后确定爱情的归属 谁都知道 这不是爱情
  • Vue路由基础部分,Vue路由基础知识

    Vue路由基础部分 Vue路由基础知识 1 介绍 2 基础 1 起步 2 动态路由匹配 3 嵌套路由 4 编程式的导航 5 命名路由 6 命名视图 7 重定向和别名 1 介绍 Vue Router 是 Vue js 官方的路由管理器 它由V
  • Chrome浏览器不能同步书签的解决方法

    问题现象 在Chrome浏览器登陆同步书签的时候 提示报错 解决方法 需要 使用Chrome访问助手 操作步骤 下载Chrome访问助手 https www ggfwzs com 下载后进行解压 然后依次点击如下操作 把刚才解压的 crx直
  • Microsoft Office 2007的安装

    哈喽 大家好 今天一起学习的是office2007的安装 有兴趣的小伙伴也可以来一起试试手 一 测试演示参数 演示操作系统 Windows 7 不建议win10及以上操作系统使用 系统类型 64位 演示版本 cn office ultima
  • opencv进阶学习笔记12:轮廓发现和对象测量

    基础版笔记目录 python3 opencv学习笔记汇总目录 适合基础入门学习 进阶版笔记目录链接 python opencv进阶版学习笔记目录 适合有一定基础 轮廓发现 1轮廓发现介绍 基础版讲解 opencv学习笔记20 图像轮廓 2轮
  • 控制符号的可见性

    在普通的C语言中 如果您希望将函数或者变量限制在当前文件中 需要对其使用static关键字 然而 在一个包含很多文件的共享库中 如果您希望某个符号可以被共享库内部的几个文件访问 而又不提供给外部 则对符号进行隐藏处理就会比较困难 大多数的连
  • 网络重连封装

    网络重连 部分情况会遇到业务接口失败 但我们又不希望让用户去退出应用重启 这时候我们可以在网络层设置一个重连机制 写这个的时候我想到了当时实现token无痛刷新时没有去解决的一个痛点 但我去刷新token的时候如果是获取令牌的接口报错那程序
  • python读取20万数据Excel文件+拆分数据

    python读取20万数据Excel文件 使用普通的pandas读取Excel 再结合xlrd读取 可能会读取的Excel数据会不全 最多只能读取到65535 行的数 如果读取超大excel数据时就读取不了 解决读取数据不全python代码
  • Unity——电脑游戏键盘与鼠标的输入

    代码如下 对键盘的输入需要逐帧读取 因此放入Update void Update 鼠标的点击 按下鼠标 0左键 1右键 2滚轮 if input GetMouseButtonDown 0 Debug log 按下了鼠标左键 持续按下鼠标 i
  • 计算机操作系统-运行机制、体系结构

    操作系统的运行机制 指令与代码的区别 例如C语言中的代码经过编译器翻译 得到机器语言指令 其中高级语言的代码翻译的结果可能会对应多条指令 简单来说 指令就是处理器CPU能识别 执行的最基本的命令 两种指令 有的指令执行起来不会对操作系统或者