操作系统学习 一致代码段和非一致代码段

Posted ay-a

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了操作系统学习 一致代码段和非一致代码段相关的知识,希望对你有一定的参考价值。

一、概述

操作系统保护模式下把代码段分为一致代码段和非一致代码段的原因是:内核程序和用户程序要分开,内核程序不能被用户程序干扰。但是有时候用户程序也需要读取内核的某些数据,于是操作系统就从内核程序中分配一些可以供用户程序访问的段,但是不允许用户程序写入数据,用户程序访问这些段时遵循以下规则:

  1. 内核程序不知道用户程序的数据,不调用用户程序的数据,也不转移到用户程序中来
  2. 用户程序只能访问到内核的某些共享段,这些段称为一致代码段
  3. 用户程序不能访问内核不共享的段

二、一致代码段

一致代码段:简单理解就是操作系统拿出来被共享的代码段,可以被低特权级的用户程序直接调用访问的代码段,这些代码段,通常是不去访问受保护的资源和某些类型异常处理。

一致代码段访问限制:

  1. 特权级高的程序不允许访问特权级第的数据:即内核态不允许调用用户态的数据。
  2. 特权级低的程序可以访问到特权级高的程序,但是特权级不会改变,即不会从用户态切换到内核态。

三、非一致代码段

非一致代码段:为了避免低特权级的访问而被操作系统保护起来的系统代码

非一致代码段访问限制:

  1. 只允许同特权级访问。

  2. 绝对禁止不同特权级直接访问:内核态不去用户态,用户态也不使用内核态。

  3. 通常低特权级代码必须通过门调用来实现对高特权级代码段的访问和调用。

有关不同特权级代码段之间的转移控制请看 代码段之间转移控制时的特权级检查

参考文章: https://blog.csdn.net/feijj2002_/article/details/4597174

以上是关于操作系统学习 一致代码段和非一致代码段的主要内容,如果未能解决你的问题,请参考以下文章

操作系统博客目录

FreeRTOS 临界段和开关中断

Linux 内核NUMA 非一致内存访问结构 ( NUMA 概念介绍 | NUMA 架构优势分析 | SMPNUMAMPP 架构 )

写出一个汇编语言的框架程序,内容2个段,数据段和代码段

《80X86汇编语言程序设计教程》十一 32位代码段和16位代码段切换实例

为啥具有可接受的非一致启发式的 A* 会找到非最优解?