摘要:linux内核是是什么意思,一文看懂Linux内核Linux内核预备工作理解Linux内核最好预备的知识点:懂C语言懂一点操作系统的知识熟悉少量相关算法懂计算机体系结构Linux内核的特点:结合了unix操作系统的一些基础概念。Linux内...
说,使用的是
x86
目录。每个体系结构子目录都包含了很多其他子目录,每个子目录都关注内核中的一个特定方面,例如引导、内核、内存管理等。这些依赖体系结构的代码可以在
./linux/arch 中找到。 如果
Linux 内核的可移植性和效率还不够好,Linux
还提供了其他一些特性,它们无法划分到上面的分类中。作为一个生产操作系统和开源软件,Linux 是测试新协议及其增强的良好平台。Linux
支持大量网络协议,包括典型的 TCP/IP,以及高速网络的扩展(大于 1 Gigabit Ethernet [GbE] 和 10
GbE)。Linux 也可以支持诸如流控制传输协议(SCTP)之类的协议,它提供了很多比 TCP 更高级的特性(是传输层协议的接替者)。Linux 还是一个动态内核,支持动态添加或删除软件组件。被称为动态可加载内核模块,它们可以在引导时根据需要(当前特定设备需要这个模块)或在任何时候由用户插入。 Linux
最新的一个增强是可以用作其他操作系统的操作系统(称为系统管理程序)。最近,对内核进行了修改,称为基于内核的虚拟机(KVM)。这个修改为用户空间启用了一个新的接口,它可以允许其他操作系统在启用了
KVM 的内核之上运行。除了运行 Linux 的其他实例之外, Microsoft
Windows 也可以进行虚拟化。惟一的限制是底层处理器必须支持新的虚拟化指令。
Linux体系结构和内核结构区别
1.当被问到Linux体系结构(就是Linux系统是怎么构成的)时,我们可以参照下图这么回答:从大的方面讲,Linux体系结构可以分为两块:
(1)用户空间:用户空间中又包含了,用户的应用程序,C库。
(2)内核空间:内核空间包括,系统调用,内核,以及与平台架构相关的代码。
2.Linux体系结构要分成用户空间和内核空间的原因:以ARM为例:ARM实现了 7 种工作模式,不同模式下 CPU 可以执行的指令或者访问的寄存器不同:以(2)X86为例:X86实现了 4 个不同级别的权限,Ring0—Ring3;Ring0下可以执行特权指令,可以访问 IO 设备;Ring3 则有很多的限制。2)所以,Linux从CPU的角度出发,为了保护内核的安全,把系统分成了2部分;
3.用户空间和内核空间是程序执行的两种不同状态,我们可以通过“系统调用”和“硬件中断“来完成用户空间到内核空间的转移。
4.Linux的内核结构(注意区分LInux体系结构和Linux内核结构)

Linux 驱动的 platform 机制
Linux 的这种 platform driver 机制和传统的 device_driver 机制相比,一个十分明显的优势在于 platform 机制将本身的资源注册进内核,由内核统一管理,在驱动程序中使用这些资源时通过 platform_device 提供的标准接口进行申请并使用。这样提高了驱动和资源管理的独立性,并且拥有较好的可移植性和安全性。下面是 SPI 驱动层次示意图,Linux 中的 SPI 总线可理解为 SPI 控制器引出的总线:

和传统的驱动一样,platform机制也分为三个步骤:内核启动初始化时的main.c文件中的kernel_init()→do_basic_setup()→driver_init()→platform_bus_init()→bus_register(&platform_bus_type),注册了一条platform总线(虚拟总线,platform_bus)。2、添加设备阶段:
设备注册的时候Platform_device_register()→platform_device_add()→(pdev→dev.bus = &platform_bus_type)→device_add(),就这样把设备给挂到虚拟的总线上。
3、驱动注册阶段:Platform_driver_register()→driver_register()→bus_add_driver()→driver_attach()→bus_for_each_dev(), 对在每个挂在虚拟的platform bus的设备作__driver_attach()→driver_probe_device(),判断drv→bus→match()是否执行成功,此时通过指针执行platform_match→strncmp(pdev→name , drv→name , BUS_ID_SIZE),如果相符就调用really_probe(实际就是执行相应设备的platform_driver→probe(platform_device)。)开始真正的探测,如果probe成功,则绑定设备到该驱动。
本文地址:百科问答频道 https://www.neebe.cn/wenda/933974_3.html,易企推百科一个免费的知识分享平台,本站部分文章来网络分享,本着互联网分享的精神,如有涉及到您的权益,请联系我们删除,谢谢!