linux扫盲之CPU模式
相信研究linux的大大都知道linux有实模式、保护模式、虚拟模式三种。
80386开始,cpu有三种工作方式:实模式,保护模式和虚拟8086模式。只有在刚刚启动的时候是real-mode,等到linux操作系统运行起来以后就运行在保护模式。实模式只能访问地址在1M以下的内存称为常规内存,我们把地址在1M 以上的内存称为扩展内存。在保护模式下,全部32条地址线有效,可寻址高达4G字节的物理地址空间; 扩充的存储器分段管理机制和可选的存储器分页管理机制,不仅为存储器共享和保护提供了硬件支持,而且为实现虚拟存储器提供了硬件支持; 支持多任务,能够快速地进行任务切换和保护任务环境; 4个特权级和完善的特权检查机制,既能实现资源共享又能保证代码和数据的安全和保密及任务的隔离; 支持虚拟8086方式,便于执行8086程序。
虚拟8086模式是运行在保护模式中的实模式,为了在32位保护模式下执行纯16位程序。它不是一个真正的CPU模式,还属于保护模式。
保护模式同实模式的根本区别是进程内存受保护与否。可寻址空间的区别只是这一原因的果。实模式将整个物理内存看成分段的区域,程序代码和数据位于不同区域,系统程序和用户程序没有区别对待,而且每一个指针都是指向"实在"的物理地址。这样一来,用户程序的一个指针如果指向了系统程序区域或其他用户程序区域,并改变了值,那么对于这个被修改的系统程序或用户程序,其后果就很可能是灾难性的。为了克服这种低劣的内存管理方式,处理器厂商开发出保护模式。这样,物理内存地址不能直接被程序访问,程序内部的地址(虚拟地址)要由操作系统转化为物理地址去访问,程序对此一无所知。
至此,进程(这时我们可以称程序为进程了)有了严格的边界,任何其他进程根本没有办法访问不属于自己的物理内存区域,甚至在自己的虚拟地址范围内也不是可以任意访问的,因为有一些虚拟区域已经被放进一些公共系统运行库。这些区域也不能随便修改,若修改就会有: SIGSEGV(linux 段错误);非法内存访问对话框(windows 对话框)。
CPU启动环境为16位实模式,之后可以切换到保护模式。但从保护模式无法切换回实模式
事实上,现在的64位奔腾4处理器,拥有三种基本模式和一种扩展模式,
基本模式:
保护模式:纯32位保护执行环境。
实模式:纯16位无保护执行环境。
系统管理模式:当SMI引脚为有效进入系统管理模式,首先保存当前的CPU上下文。它有独立的地址空间,用来执行电源管理或系统安全方面的指令。
扩展模式:
IA-32e模式: 64位操作系统运行在该模式。该模式有两种子模式:
1)兼容模式:该模式下,64位操作系统运行在32位兼容环境,能正常运行16,32位应用程序就像基本的保护模式一样,
访问32位地址空间,但不能运行纯16位实模式程序(就是不能运行虚拟86模式程序了)。
2)64位模式:在该模式下,处理器完全执行64位指令,使用64位地址空间和64操作数,运行16,32位程序必须切换到兼容模式。
IA-32e子模式的切换完全基于代码段寄存器。这样一来,运行在IA-32e模式中(64位)的OS完全可以无缝的运行所有16,32,64为应用程序,
通过设置32位后的CS。
转载于:https://www.cnblogs.com/zsw-1993/p/4880021.html
linux扫盲之CPU模式相关推荐
- linux查看cpupower模式,Linux - cpupower调整CPU主频
前言 linux内核支持调节CPU主频,降低功耗,已到达节能的效果.对于移动设备和笔记本来说,在没有接通电源的时候,续航是很重要的. 通过选择系统空闲状态不同的电源管理策略,可以实现不同程度降低服务器 ...
- linux怎么配置命令模式,Linux几种命令模式
原标题:Linux几种命令模式 必须掌握的几个Linux命令 我们为什么要学习Linux的命令? 初学者上手Linux系统会很懵.不管你是否安装了图形化界面,或者去网上找一些教程.或者一些Linux的 ...
- linux命令查看cpu负载,怎么使用Linux命令查看CPU使用率
在Linux系统操作中,有时需要查看cpu的使用率,这就需要用到Linux命令了,Linux查看cpu使用率的命令主要有4个,即top.vmstat.mpstat和prstat命令,一起来了解下吧. ...
- linux系统查看CPU使用含义、IO、内存、硬盘使用、负载
一.Linux系统查看CPU使用率命令 在linux的系统维护中,可能需要经常查看cpu使用率,分析系统整体的运行情况.而监控CPU的性能一般包括以下3点:运行队列.CPU使用率和上下文切换. 对于每 ...
- linux性能优化--cpu篇
linux性能优化--cpu篇 前言 负载 CPU使用率 proc perf 一些链接 `perf list` 比较有用的event `perf stat` `perf record` Profili ...
- linux查看cpu缓存大小,如何在Linux中获取CPU Cache的大小
对于运行Linux的ARM CPU(在具有Raspbian(32位)的Raspberry Pi 3B +上测试): "Arm®Cortex®-A53MPCore处理器技术参考手册" ...
- linux查看设备在哪个cpu上,如何在linux中查看cpu信息、机器硬件型号
原标题:如何在linux中查看cpu信息.机器硬件型号 # cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c 8 Intel(R) Xeon( ...
- 【Linux 性能优化系列】Linux 性能优化 -- CPU 性能篇(三) Linux 软中断
[Linux 性能优化系列]Linux 性能优化 -- CPU 性能篇(三) Linux 软中断 [1]相关概念 [1.1]中断 中断其实是一种异步的事件处理机制,可以提高系统的并发处理能力:为了减少 ...
- i386 Linux内核进入保护模式引导流程
在系统引导过程中,Bootloader将内核镜像加载到内存后,并将控制权转交给内核 ,通过长转移指令跳转到入口startup_32. 实际上进入startup_32入口前,CPU已经处于了 ...
最新文章
- 尚育鹏:Leetcode刷题总结(数组)
- ubuntu 下安装nginx
- vue中v-model原理
- python网页保存为图片_使用Python保存网页上的图片或者保存页面为截图
- java高性能序列化_Java最佳实践–高性能序列化
- [保存]C# 使用HttpWebRequest提交ASP.NET表单并保持Session和Cookie
- Android 广播接收器注册与注销源码分析
- 不确定性原理的前世今生 · 数学篇(二)
- 最新隐马尔可夫模型HMM详解
- sql服务器的响应时间,如何解决:[Sql Server]超时时间已到。在操作完成之前超时时间已过或服务器未响应。...
- java gps解析_GPS经纬度可以用来Java解析
- Advertising on Instagram 如何在Instagram上发布广告 Lynda课程中文字幕
- 远程控制软件TeamViewer
- RTE 2020 实时互联网大会参会指南——明天我们线上见!
- linux中gimp命令截图,Linux利用GIMP截图
- 求一个n阶矩阵的转置矩阵
- 从0到1,搭建经营分析体系
- Web全栈工程师修养
- 2023 最新 抖音AI换脸表情包小程序变现玩法项目
- Marvin ,Java开发图像处理框架
热门文章
- 面试题 08.09. 括号
- leetcode - 139. 单词拆分
- 以企业面试讲解sql语句
- 由旋转矩阵计算欧拉角的方法
- 基于深度学习的文本分类3
- jni c 回调 java,JNI - 如何从C ++或C回调到Java?
- linux电脑管理员身份运行,在Ubuntu 20.04 LTS中添加“以管理员身份打开”
- labelme实例分割_GitHub:图像分割最全资料集锦
- python常见编程面试题_python面试题基础部分 80题
- 用深度强化学习玩atari游戏_(一)深度强化学习·入门从游戏开始