嵌入式 Linux开发Kernel移植(一)——kernel内核简介

一、Linux Kernel

1、linux kernel简介

    Linux kernel是芬兰*** Linus Torvalds 1991年在英特尔x86架构上用C语言开发的自由免费的符合POSIX标准的类Unix操作系统。

    Linux kernel是一个一体化内核monolithic kernel)系统提供硬件抽象层、磁盘及文件系统控制、多任务等功能的系统软件不是一套完整的操作系统。

嵌入式 Linux开发Kernel移植(一)——kernel内核简介_第1张图片

        内核空间与用户空间是程序执行的两种不同的状态,通过系统调用和硬件中断能够完成从用户控件到内核空间的转移。

2linux kernel架构

嵌入式 Linux开发Kernel移植(一)——kernel内核简介_第2张图片

系统调用接口SCI:

        SCI层为用户空间空间提供了一套标准的系统调用函数来访问linux内核,搭起了用户空间到内核空间的桥梁。

进程调度管理PM:

    进程管理的重点是创建进程(fork, exec), 停止进程(kill, exit), 并控制它们之间的通信(signal或者POSIX机制). 进程管理还包括控制活动进程如何共享CPU,即进程调度。

内存管理MM:

    内存管理的主要作用是控制多个进程安全地共享内存区域

网络协议栈:

    内核协议栈为linux提供了丰富的网络协议实现。

Virtual File System:

        VFS隐藏各种文件系统的具体细节,为文件操作提供个统一的接口。

设备驱动:

    设备驱动模块是linux kernel的一部分,是内核中的硬件设备管理模块。

 

二、linux发行版本

    Linux的发行版本是一些组织或厂家,将Linux kernel与外围实用程序(Utilities)软件和文档包装起来,并提供一些系统安装界面和系统配置、设定与管理工具就构成了一种发行版本distributionLinux的发行版本实质就是Linux kernel再加上外围的实用程序组成软件包。相对于Linux kernel版本,发行版本的版本号随发布者的不同而不同,与Linux系统内核的版本号是相对独立的。因此把SUSERedHatUbuntuSlackware等直接说成是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 ModuleLKM),简称为内核模块。Linux kernel在编译前可以根据需要灵活裁剪配置模块,也可以将kernel功能模块编译,在kernel运行时动态加载链接到kernel空间中运行。