一、内核功用、内核发行版
1、究竟什么是操作体系
(1)linux、windows、android、ucos便是操作体系;
(2)操作体系本质上是一个程序,由许多个源文件构成,需求编译连接成操作体系程序(vmlinz、zImage);
(3)操作体系的首要效果便是办理计算机硬件,给运用程序供给一个运转环境。
2、操作体系中心功用(办理资源)
(1)内存办理
假如没有操作体系,内存需求程序自己来办理。比如在uboot中要运用哪块内存,由程序自己决议的,没有注册也没有约束。此刻假如程序不小心把同一块内存重复运用,就会呈现程序逻辑过错。
有了操作体系之后,操作体系担任管控一切的内存。运用程序需求运用内存时,都要向操作体系去申请和注册,由操作体系的内存办理模块来分配内存。这样优点是能够确保内存运用不会抵触。
(2)进程调度
操作体系下支撑多个运用程序一起运转,这是微观上的并行。实际上在单中心CPU上微观上是不能并行的,微观上的并行便是操作体系供给的分时复用机制。操作体系的进程调度模块担任在各个进程之间进行切换。
(3)硬件设备办理
没有操作体系时,操控任何硬件都要自己写代码,有了操作体系后操作体系自身会去操控各个硬件,运用程序就不必考虑硬件的详细细节了。
操作体系的硬件设备办理模块便是驱动模块。
(4)文件体系
文件体系是办理存储设备的一种方法。存储设备由许多扇区组成,每个扇区有512/1024/2048/4096字节,存储设备以扇区为单位进行读写。假如没有文件体系,程序要自己去读写扇区,就得记住哪个文件在哪个扇区。有了文件体系之后,咱们不必再重视某个文件在物理磁盘的哪个扇区,只用重视文件体系中的目录和文件名。
3、操作体系扩展功用
(1)协议栈
(2)有用的运用程序包
运用程序自身不归于操作体系内核的一部分。
运用程序是给人用的,面向某种功用的,比如ping程序用来测验网络是否联通,ifconfig程序用来装备网卡。
4、内核和发行版的差异
(1)内核是操作体系内核的简称。
内核担任完结操作体系的中心功用,内核不包括运用程序。
因而只要内核是无法运用的,由于做任何事情都是经过相应的运用程序来完结的。
卖操作体系的人把内核和一些常用的运用程序打包在一起供给给一般用户,这便是操作体系的发行版(也便是一般意义上的操作体系)。
(2)内核只要一个(www.kernel.org),发行版有许多(集成不同的运用程序,比如ubuntu、redhat、suse、centos……)。
二、内核和驱动的相关
1、学习linux的思路
(1)对巨大的全体要有个知道。学习道路便是先树立结构和全体,然后逐步去学习各个细节部分,逐步细化。
(2)对各分层的效果要清楚。
(3)对层次间的相关和相互调用要了解。
2、驱动归于内核的一部分
(1)驱动便是内核中的硬件设备办理模块,归于开展十分活泼的部分。
(2)驱动作业在内核态(cpu在跑操作体系)(与用户态(cpu在跑运用程序)的差异:权限不同)
(3)驱动程序毛病或许导致整个内核溃散。
(4)驱动程序缝隙会使内核不安全。
三、内核和运用程序、根文件体系的相关
1、运用和内核的联系
(1)运用程序不归于内核,而是在内核之上的;
(2)运用程序作业在用户态,是受约束的;
(3)运用程序毛病不会导致内核溃散;
(4)运用程序经过内核界说的API接口来调用内核作业
(5)总结:运用程序是最终目标,内核便是为运用程序供给底层资源办理的服务员
2、内核和根文件体系
(1)根文件体系供给根目录;归于内核?NO!
(2)进程1存放在根文件体系中,进程1会使得内核态变为用户态。
(3)内核发动最终会去装载根文件体系;
(4)总结:根文件体系为操作体系发动供给了许多必备的资源,如根目录、进程1。
四、linux内核的模块化规划
1、什么是模块化规划
(1)由于linux内核很巨大,代码量很大、东西许多,假如规划时彻底规划成一体(各个文件、各个函数之间紧耦合),复杂度超出了人所能了解的规模。所以模块化规划是一种必要。
(2)模块化规划便是内核中各个功用模块在代码上是相互独立的,比如说调度体系和内存办理体系之间并没有全局变量的相互引证,乃至函数相互调用也很少,就算有也是遵从一个接口标准的。模块化规划的意图便是完结功用模块的松耦合。
2、模块化规划的表现
(1)装备时可裁剪。linux内核在编译之前能够进行装备,装备时能够挑选将组成内核的不计其数个模块每一个要或许不要。要了之后还有更多的一些细节的装备。
(2)模块化编译和装置。为了操作便利,从静态的晋级逐步变成了动态的晋级(不需求重启体系,更不需求从头烧录体系)。这种动态的晋级也是由模块化来支撑的。
(3)源码中运用条件编译。这种在uboot中现已见过了。
3、模块化规划的优点
(1)功用可裁剪、灵活性;
(2)可扩展性(动态装置卸载、新硬件支撑);
(3)利于协作;
4、模块化规划是一种普遍性的体系规划准则
五、挑选适宜版别的内核
1、linux内核版别变迁简史
(1)linux0.01。初版
(2)linux0.11。许多讲linux内核源代码解析的书都是以这个版别为本来来讲。《图解linux内核规划的艺术》
(3)linux2.4。比较挨近现代的版别,许多经典的书都是以2.4版别内核为参照的,比如《LDD3》。
linux2.4的晚期内核在前几年还会常常碰到有用的。
(4)linux2.6前期。2.6的前期和2.4晚期内核挺像的。
(5)linux2.6晚期。2.6的晚期内核较前期内核有一些改动,尤其是驱动相关的部分和一些头文件的方位。2.6的晚期内核现在还算是比较干流。
(6)linux3.x 4.x
2、怎么挑选适宜的内核版别
(1)并不是越新版别的内核越好;
(2)挑选SoC厂家移植版别会削减作业量。
3、S5PV210适用的内核版别
(1)2.6.35.7 + android2.3/QT4.8.3
(2)3.0.8 + android4.0
4、本课程运用2.6.35.7版别内核解说