用户态和核心态的转换

用户态和内核态的转换

 1)用户态切换到内核态的3种方式

a. 系统调用 这是用户态进程主动要求切换到内核态的一种方式,用户态进程通过系统调用申请使用操作系统提供的服务程序完成工作,比如前例中fork()实际上就是执行了一个创建新进程的系统调用。而系统调用的机制其核心还是使用了操作系统为用户特别开放的一个中断来实现,例如Linux的int 80h中断。系统调用实质上是一个中断,而汇编指令int 就可以实现用户态向内核态切换,iret实现内核态向用户态切换 b. 异常 当CPU在执行运行在用户态下的程序时,发生了某些事先不可知的异常,这时会触发由当前运行进程切换到处理此异常的内核相关程序中,也就转到了内核态,比如缺页异常。

c. 外围设备的中断 当外围设备完成用户请求的操作后,会向CPU发出相应的中断信号,这时CPU会暂停执行下一条即将要执行的指令转而去执行与中断信号对应的处理程序,如果先前执行的指令是用户态下的程序,那么这个转换的过程自然也就发生了由用户态到内核态的切换。比如硬盘读写操作完成,系统会切换到硬盘读写的中断处理程序中执行后续操作等。 这3种方式是系统在运行时由用户态转到内核态的最主要方式,其中系统调用可以认为是用户进程主动发起的,异常和外围设备中断则是被动的。

 2)具体的切换操作 从触发方式上看,可以认为存在前述3种不同的类型,但是从最终实际完成由用户态到内核态的切换操作上来说,涉及的关键步骤是完全一致的,没有任何区别,都相当于执行了一个中断响应的过程,因为系统调用实际上最终是中断机制实现的,而异常和中断的处理机制基本上也是一致的,关于它们的具体区别这里不再赘述。关于中断处理机制的细节和步骤这里也不做过多分析,涉及到由用户态切换到内核态的步骤主要包括:

  1. 从当前进程的描述符中提取其内核栈的ss0及esp0信息。
  2.  使用ss0和esp0指向的内核栈将当前进程的cs,eip,eflags,ss,esp信息保存起来,这个 过程也完成了由用户栈到内核栈的切换过程,同时保存了被暂停执行的程序的下一条指令。
  3. 将先前由中断向量检索得到的中断处理程序的cs,eip信息装入相应的寄存器,开始 执行中断处理程序,这时就转到了内核态的程序执行了。

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

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

相关文章

华为防火墙Edumon1000E配置

华为防火墙Edumon1000E,配置有四个光电互斥接口,为千兆状态防火墙。默认情况下所有区域之间不允许有流量经过。本文为Edumon1000E的基本配置,该基本配置适用一般企业级单机接入情况。配置一台防火墙主要包含以下几个步骤:1、配置端…

操作系统进程调度算法图解(FCFS、轮转、SPN、SRT、HRRN、反馈)

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/woshiwanghao_hi/article/details/13004507 FCFS: 先来先服务,也可以称为先进先出 轮转…

安装Ubuntu之后一定要安装Docky

2019独角兽企业重金招聘Python工程师标准>>> 安装Ubuntu之后一定要安装Docky,然后把面板隐藏,真是太漂亮了! 图片太大,传不上来,传到百度上,又不让引用,还是百度看吧: 我…

操作系统中调度算法(FCFS、RR、SPN、SRT、HRRN)

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/xieminyao123/article/details/79116985 决策模式 决策模式说明选择函数在执行的瞬间的处理方式&a…

操作系统学习总结(超赞!!!)

我是技术搬运工,好东西当然要和大家分享啦.原文地址 操作系统基本特征 1. 并发 并发性是指宏观上在一段时间内能同时运行多个程序,而并行性则指同一时刻能运行多个指令。 并行需要硬件支持,如多流水线或者多处理器。 操作系统通过引入进程和线程&#xf…

Eclipse安装

1.下载Eclipse及其语言包 打开http://www.eclipse.org/downloads/,下载相应的文件。如下载Eclipse Classic版 打开http://www.eclipse.org/babel/下载相应语言包 2.安装Eclipse Eclipse直接解压,语言包直接解压后覆盖Eclipse解压出来的文件夹中的同名文件…

操作系统的SPOOLING技术

SPOOLING技术(Simultaneous Peripheral Operating On Line) 同时联机外围操作技术,它是关于慢速字符设备如何与计算机主机进行数据交换的一种技术,通常又称假脱机技术。 在多道程序环境下,利用多道程序中的一道或者两道程序来模拟…

每日学习记录5.5

今天把帝国cms的sitmap问题解决了,通过实际操作,感觉对网页前台布局还是有了一定的了解。今天的学习是继续进行DIVCSS的初步学习。以适合公司网站改版。同时从今天起的学习期间,保证一天一篇至少50字的流水账。近日准备发表博客:“…

独立磁盘冗余阵列:RAID

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/fsx2550553488/article/details/79819164 RAID RAID:独立磁盘冗余阵列(Redun…

使用south实现Django的数据库升级迁移

Technorati 标签: django,south,数据库迁移Ruby有牛哄哄的Rails Migration实现数据的升级和迁移,django呢? 有south。 已有的应用要支持south(开发版) 编辑settings.py , 把 ‘south’ 放到INSTALLED_APPS 中 manage.py syncdb 把…

task2 EDA数据分析

目标 了解,验证数据集 了解变量关系,与预测值之间关系 数据处理、特征工程 数据探索性分析 EDA探索性数据分析 通过EDA可实现: 1. 得到数据的直观表现 2. 发现潜在的结构 3. 提取重要的变量 4. 处理异常值 5. 检验统计假设 6. 建立初步…

lua中文教程(第一章 起点)

一 全局变量 全局变量不需要声明,给一个变量赋值后即创建了这个全局变量,访问一个没有初始化的全局变量也不会出错,只不过得到的结果是:nil 如果想删除一个全局变量,只需要将变量赋值为nil 二 词法约定 1 标识符:字母或…

task2 EDA探索性数据分析

1、赛题数据赛题以预测二手车的交易价格为任务,数据集报名后可见并可下载,该数据来自某交易平台的二手车交易记录,总数据量超过40w,包含31列变量信息,其中15列为匿名变量。为了保证比赛的公平性,将会从中抽…

Liaoning Province--保三成功

现在做什么事情怎么都有遗憾,从小到大,每件事情都有遗憾...... 周六,在东电宾馆报道的,刚进宾馆,接待人员对我说有个人认识你,我诧异,看到后我挨个想,我想出来他是天之痕了&#xff…

2021-06-10

局部搜索算法是一种简单的贪心搜索算法,是解决最优化问题的一种启发式算法,该算法每次从当前解的临近解空间中根据启发函数选择一个最优解(也不一定是最优解)作为当前解,直到达到一个局部最优解。本文以求解八皇后问题…

用JavaScript嵌入你的SWF

用JavaScript嵌入你的SWFswfobject.embedSWF(swfUrl, id, width, height, version, expressInstallSwfurl, flashvars, params, attributes)有5个必须的参数和4个可选的参数:swfUrl(String,必须的)指定SWF的URL。 id(S…

.NET(C#) Internals: 以一个数组填充的例子初步了解.NET 4.0中的并行(二)

引言 随着CPU多核的普及,编程时充分利用这个特性越显重要。上篇首先用传统的嵌套循环进行数组填充,然后用.NET 4.0中的System.Threading.Tasks提供的Parallel Class来并行地进行填充,最后对比他们的性能。本文将深入分析Parallel Class并借机…

Ghost安装之后,键盘出现字符出现乱码

今天我安装了G版本的WinServer2003,安装完成之后键盘打字出现乱字符,后来终于发现原来我的输入法模式为数字模式,按FN+insert可以切换回来,问题就解决了.转载于:https://blog.51cto.com/yaojian/314847

.net框架读书笔记---CLR内存管理\垃圾收集(二)

前几天学习了CLR垃圾收集原理和基本算法,但是那些是仅仅相对于托管堆而言的,任何非托管资源的类型,例如文件、网络资源等,都必须支持一种称为终止化(finalization)的操作。 终止化 终止化操作允许一种资源在…

关于三极管偏置电路的思考

最近在做十年前应该做的事情,从最基本的模拟电路实验开始,了解电子的基本概念。还好,对事物的理解,随着阅历增加,理解的程度也不一样。从三极管偏置电路,我想到了人的自我修养和调整。当电路调整到一个合适…