嵌入式 Linux开发Kernel移植(一)——kernel内核简介
2019-07-12 17:17发布
生成海报
嵌入式 Linux开发Kernel移植(一)——kernel内核简介
一、Linux Kernel
1、linux kernel简介
Linux kernel是芬兰黑客 Linus Torvalds 1991年在英特尔x86架构上用C语言开发的自由免费的符合POSIX标准的类Unix操作系统。 Linux kernel是一个一体化内核(monolithic kernel)系统,提供硬件抽象层、磁盘及文件系统控制、多任务等功能的系统软件,不是一套完整的操作系统。 内核空间与用户空间是程序执行的两种不同的状态,通过系统调用和硬件中断能够完成从用户控件到内核空间的转移。2、linux kernel架构
系统调用接口SCI: SCI层为用户空间空间提供了一套标准的系统调用函数来访问linux内核,搭起了用户空间到内核空间的桥梁。进程调度管理PM: 进程管理的重点是创建进程(fork, exec), 停止进程(kill, exit), 并控制它们之间的通信(signal或者POSIX机制). 进程管理还包括控制活动进程如何共享CPU,即进程调度。内存管理MM: 内存管理的主要作用是控制多个进程安全地共享内存区域网络协议栈: 内核协议栈为linux提供了丰富的网络协议实现。Virtual File System: VFS隐藏各种文件系统的具体细节,为文件操作提供个统一的接口。设备驱动: 设备驱动模块是linux kernel的一部分,是内核中的硬件设备管理模块。 二、linux发行版本
Linux的发行版本是一些组织或厂家,将Linux kernel与外围实用程序(Utilities)软件和文档包装起来,并提供一些系统安装界面和系统配置、设定与管理工具,就构成了一种发行版本(distribution)。Linux的发行版本实质就是Linux kernel再加上外围的实用程序组成的软件包。相对于Linux kernel版本,发行版本的版本号随发布者的不同而不同,与Linux系统内核的版本号是相对独立的。因此把SUSE、RedHat、Ubuntu、 Slackware等直接说成是Linux是不确切的,它们是Linux的发行版本。根据 GPL准则,linux发行版本虽然都源自一个内核,并且都有自己各自的贡献,但都没有自己的版权。Linux的各个发行版本(distribution),都是使用Linus主导开发并发布的同一个Linux内核,因此在内核层不存在什么兼容性问题。每个版本都不一样的感觉,只是在发行版本的最外层才有所体现,而绝不是Linux本身特别是内核不统一或是不兼容。 目前最流行的几个正式版本有:SUSE、RedHat、Fedora、 Debian、Ubuntu、CentOS、Gentoo,Mint等等,用户可根据自己的经验和喜好选用合适的Linux发行版。三、Kernel的模块化
Linux kernel是一个代码量巨大、功能极其复杂的工程项目,因此各功能模块需要模块化设计,以实现功能模块内部各部分之间的高内聚、功能模块之间的低耦合。Linux kernel的模块化设计使得对kernel的各功能模块的裁剪变得简单灵活,既可以在kernel编译前进行配置,也可以在kernel运行时将编译好的功能模块动态加载到kernel空间中链接运行。kernel模块是Linux kernel向外部提供的一个接口,全称为动态可加载内核模块(Loadable Kernel Module,LKM),简称为内核模块。Linux kernel在编译前可以根据需要灵活裁剪配置模块,也可以将kernel功能模块编译,在kernel运行时动态加载链接到kernel空间中运行。本文出自 “
生命不息,奋斗不止” 博客,转载请与作者联系!
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮