初窥Linux内核结构

转载请注明出处,谢谢~


        最近工作上偶尔有涉及到内核的一些初步知识,根据网上的资料加上自己的理解,整理了一下基本的内核知识,技术有限,希望大家多多指正。
         内核,听名字就可以以判断出它是Linux操作系统的核心,初步可以理解它的作用是用于管理软硬件的资源,并为其提供运行环境,具体是负责管理系统的进程、内存、设备驱动程序、文件和网络系统,决定着系统的性能和稳定性。通俗的可以理解为内核是一种控制计算机硬件资源与提供上层应用程序运行环境的软件。

1、Linux系统的整个框架
     了解内核首先要了解Linux系统的整体框架组成,大致如下图:


        用户态即上层应用程序的活动空间,应用程序的执行必须依托于内核提供的资源,包括CPU资源、存储资源、I/O资源等。为了使上层应用能够访问到这些资源,内核必须为上层应用提供访问的接口:即系统调用

2、用户态、内核态切换
      运行于用户态的进程可以执行的操作和访问的资源都会受到极大的限制,而运行在内核态的进程则可以执行任何操作并且在资源的使用上没有限制。很多程序开始时运行于用户态,但在执行的过程中,一些操作需要在内核权限下才能执行,这就涉及到一个从用户态切换到内核态的过程。
2.1切换条件:
1)当然就是系统调用:原因如上的分析。
2)异常事件: 当CPU正在执行运行在用户态的程序时,突然发生某些预先不可知的异常事件,这个时候就会触发从当前用户态执行的进程转向内核态执行相关的异常事件,典型的如缺页异常。
3)外围设备的中断:当外围设备完成用户的请求操作后,会像CPU发出中断信号,此时,CPU就会暂停执行下一条即将要执行的指令,转而去执行中断信号对应的处理程序,如果先前执行的指令是在用户态下,则自然就发生从用户态到内核态的转换。
  注意:系统调用的本质其实也是中断,相对于外围设备的硬中断,这种中断称为软中断,这是操作系统为用户特别开放的一种中断,如Linux int 80h中断。所以,从触发方式和效果上来看,这三种切换方式是完全一样的,都相当于是执行了一个中断响应的过程。但是从触发的对象来看,系统调用是进程主动请求切换的,而异常和硬中断则是被动的。


内核里面有什么:

这是网络流行的以图像呈现的Linux内核里面的内容






Linux内核运行原理:

猜你喜欢

转载自blog.csdn.net/go_str/article/details/80089990