写在前面

  本系列的文章是博主边学边记录的,可能不是特别的正确,因为会加上博主自己的理解,仅供参考。

正文

 

应用程序是软件,操作系统也是软件。这样说的话,cpu会将他们一视同仁。其实,cpu不知道自己在执行的程序是操作系统,还是一般的应用软件,cpu是根据起存其中指向的内存取出执行并执行。想起来大二的时候,老师说cpu的工作就是 取指令、分析指令、运行指令

说到应用程序,那也会涉及到cpu的内核态和用户态。这又是什么?

内核态和用户态的区别就是权限不同,内核态处于权限0,权限较高,用户态处于权限3,权限较低。而应用程序运行在用户态。当发生系统调用的时候,会切换到内核态,然后内核态经过一些处理,处理完毕后,切换回用户态。

 

关于内核态到用户态的转换还有一段比较官方的解释,如下:

  由于内部或者外部中断发生,当前进程被暂时终止执行,其上下文被内核的中断程序保存起来后,开始执行一段内核的代码。是内核代码。不是用户程序在内核的代码。

  当程序陷入内核后,该程序已经不具备cpu的使用权,以后发生的事情,应用程序完全不知道,它的上下文环境已经被保存到自己的0特权栈中,那时cpu上运行的程序已经是内核程序。

 

这里补充下内部中断和外部中断:

内部中断:

  cpu内部事件所引起的中断,比如发生了移除或者非法指令等。把这类中断称为内中断或者陷入。

  若系统发生了陷入事件,cpu将暂停正在执行的程序,转入执行改陷入事件的处理程序。一般内核切换也称为陷入内核

外部中断:

  外中断主要指的是cpu对IO设备发来中断信号的一种响应。发生外部中断时,cpu暂停正在执行的程序,保留cpu环境后,自动转去执行IO设备的中断处理程序,处理完后,再回到断点,继续执行原来的程序。

 

不骄不躁,持续学习

 

内容来源于网络如有侵权请私信删除

文章来源: 博客园

原文链接: https://www.cnblogs.com/freeyw/p/16517412.html

你还没有登录,请先登录注册
  • 还没有人评论,欢迎说说您的想法!