linux内核探索(1)--理解内核,内核与用户态通信机制

目录

1、linux内核概念

2、内核和用户态通信的方法及其原理

2.1、proc

2.2、共享内存


1、linux内核概念

操作系统负责整个计算机资源的调度和管理,其本身的构造是极其复杂的,包括内核、设备驱动程序、启动引导程序和各种用户的界面、文件管理等其他工具。内核,顾名思义,就是操作系统的核心部分。其包含以下模块:

  • 负责响应中断的中断服务程序
  • 负责管理多个进程分时使用处理器时间的调度程序
  • 负责管理进程地址空间的内存管理程序
  • 负责网络、进程间通信等的系统服务程序

宏内核也称为单内核,就是将内核功能整体作为一个单独的过程来实现,运行在一个单独的地址空间上。所有的内核服务都运行在一个大的内核地址空间。优点在于内核内部通信代价很小,因为运行在同一个地址空间,可以像调用函数一样调用各种功能。缺点在于其稳定性会受到单个模块影响,比如一个模块崩溃会导致整个内核崩溃。

尽管Linux是一种宏内核,Linux内核的设计慢慢也吸取了一些微内核设计的优点,比如模块化设计,抢占式内核、支持内核线程以及内核模块动态装载,同时也避免了微内核设计的性能短板,将所有模块运行在内核态,直接使用函数调用来通信。Linux内核继承了Unix的很多优秀特性,但也有了很多显著的差异,比如:

  • 支持动态加载内核模块
  • 支持对称多处理器(SMP)
  • 支持内核抢占,大多数Unix不支持
  • 不区分线程和一般的进程
  • 提供具有设备类的面向对象设备模型,支持热拔插以及用户空间的设备文件系统

拓展:https://www.ibm.com/developerworks/cn/linux/l-linux-kernel/

讲的很透彻

2、内核和用户态通信的方法及其原理

参考:https://blog.csdn.net/my_zou/article/details/53836780

https://www.ibm.com/developerworks/cn/linux/l-kerns-usrs/index.html

https://blog.csdn.net/wuruixn/article/details/24960935

https://blog.csdn.net/vertor11/article/details/79622694

2.1、proc

https://www.ibm.com/developerworks/cn/linux/l-proc.html

2.2、共享内存

https://blog.csdn.net/wuheshi/article/details/52911465

https://blog.csdn.net/sty23122555/article/details/51581979

猜你喜欢

转载自blog.csdn.net/qq_41603102/article/details/82890318