【生意多】-免费发布分类信息
当前位置: 首页 » 新闻 » 教程 » 正文

linux内核管理

放大字体  缩小字体 发布日期:2020-10-30 06:42:43    浏览次数:5
导读

  函数功能模块集合,调用接口是二进制程序,要想运行,必须别其他程序调用,即其他程序面向硬件的一个中间层,有两种情形  1)、开机过程开机 --内核运行 -- 内核加载根文件系统 --运行根文件系统上的第一个应用程序init  init:它是负责后面的总的应用程序的启动回收等,启动可能需要向内核申请,这一切都在用户空

  函数功能模块集合,调用接口是二进制程序,要想运行,必须别其他程序调用,即其他程序面向硬件的一个中间层,有两种情形

  1)、开机过程开机 --内核运行 -- 内核加载根文件系统 --运行根文件系统上的第一个应用程序init

  init:它是负责后面的总的应用程序的启动回收等,启动可能需要向内核申请,这一切都在用户空间运行,如果init程序终止了,则用户空间的所有程序终止2)、配置文件让程序按照我们需要的方式一直运行下去

  内核也是应用程序,内核具有许多功能,那么是将这些功能全都整合到内核中,还是各功能独立成子系统,是内核设计流派不同的主要原因。

  linux通过使用模块化内核设计来兼具微内核特性,但这样的模块化设化设计并不是像微内核一样是各个子系统,而是由核心加外围的功能性模块组成内核。而微内核子系统都是各自独立运行的,不需要依赖其他部分就能工作。而linux各模块必须依赖核心,在使用时进行装载,不用时被动态卸载。linux下的模块外在表现为类型程序的库文件,只是程序库文件后缀名为.so,而内核模块后缀名为.ko(kernel object),被内核调用。

  linux内核会将其各部分功能模块化,这使得在安装linux内核时,可以仅保持最基本的内核和功能,不过内核中模块数量会变多。linux内核中的.ko(kernel object)文件就是可以被内核调用的内核模块。

  做以下假设:驱动是内核提供的,编译好一个内核之后,在装在主机上,在未来添加新的硬件设备没有新的驱动的话。是重新编译一次内核?这种设计是一件反人类的设计啊,因此引入了模块设计。

  模块化设计得以避免这种情况,故各大厂商可以通过模块化的形式开发自己的驱动,只需针对某一特定设备开发自己驱动程序即可,在编译驱动模块。由于linux支持动态装载和卸载模块,因此当我需要和不需要某一功能时,可自行拆卸,此操作并不影响核心的正常运行。

  当系统完成内核的加载之后,内核要加载根文件系统以启动用户空间,但是根文件系统是在某个硬件设备之上,内核需要某驱动程序来装载根文件系统,但是驱动程序的文件又存在某目录之下,也就是存在根文件系统之下(鸡和蛋的问题)

  方案二:借助一个外部设备来生成驱动根文件系统的驱动程序,ramdisk就是这样一个文件,它把内存当做一个磁盘来使用,将硬盘设备装载至内核,伪根文件系统仅仅存有驱动根文件系统所在硬件设备的文件,它随着内核被装载至内存也装载进内存,它和内核在同一个目录之下,所以内核完成启动初始化后,就来加载这个文件中的各种驱动程序,这个文件不是提前制作后的,而是内核被加载之后动态生成的,以相对应的生成对应硬件设备的驱动程序文件。它仅仅是辅助装载驱动,装载完成之后进行根切换,把临时的这个为根文件系统切换为真正的根文件系统

 
关键词: linux fans
(文/小编)
打赏
免责声明
• 
本文为小编原创作品,作者: 小编。欢迎转载,转载请注明原文出处:https://www.31duo.com/news/show-698851.html 。本文仅代表作者个人观点,本站未对其内容进行核实,请读者仅做参考,如若文中涉及有违公德、触犯法律的内容,一经发现,立即删除,作者需自行承担相应责任。涉及到版权或其他问题,请及时联系我们。
 

(c)2016-2019 31DUO.COM All Rights Reserved浙ICP备19001410号-4

浙ICP备19001410号-4