linux内核深度解析?
理解Linux内核最好预备的知识点:
懂C语言
懂一点操作系统的知识
熟悉少量相关算法
懂计算机体系结构
Linux内核的特点:
结合了unix操作系统的一些基础概念
Linux内核的任务:
1.从技术层面讲,内核是硬件与软件之间的一个中间层。作用是将应用层序的请求传递给硬件,并充当底层驱动程序,对系统中的各种设备和组件进行寻址。
2.从应用程序的层面讲,应用程序与硬件没有联系,只与内核有联系,内核是应用程序知道的层次中的最底层。在实际工作中内核抽象了相关细节。
3.内核是一个资源管理程序。负责将可用的共享资源(CPU时间、磁盘空间、网络连接等)分配得到各个系统进程。
4.内核就像一个库,提供了一组面向系统的命令。系统调用对于应用程序来说,就像调用普通函数一样。
linux嵌入式系统体系结构一般具有哪两种基本形式?
(1)引导加载程序,包括固化在固件中的boot代码和bootloader两大部分。有些cpu在运行bootloader之前会先运行一段固化程序,比如x86的CPU会先运行BIOS中的固件,然后才运行硬盘的第一个分区(MBR)中的bootloader,但是在大多的嵌入式系统中,是没有固件的,bootloader就是上电后执行的第一个程序。
(2)linux内核
特定于嵌入式板子的定制内核以及内核的启动参数,内核的启动参数可以是内核默认的,也可以是由bootloader传递给它的。
(3)文件系统
包括根文件系统和建立于Flash内存设备上的文件系统,里面包含了linux系统能够运行所必须的应用程序、库等等,比如可以给用户提供LInux的控制界面shell程序、动态链接的程序时所需要的glibc或uClibc库等。
(4)用户应用程序
特定于用户的应用程序,它们也存储在文件系统中,有时在用户应用程序和内核层之间可能还会包括一个嵌入式图形用户界面,常用的嵌入式GUI有:Qtopia和MinGUI等。显然,在嵌入式系统的固态存储设备上有相应的分区来存储它们。
Linux操作系统的体系结构一般分为四个层次?
Linux采用分层设计,它包括4个层次。每层只能与它相邻的层通信,层次间具有从上到下的依赖关系,靠上的层依赖于靠下的层,但靠下的层并不依赖于靠上的层。各层系统介绍如下。
用户应用程序层:
位于整个系统的最顶层,是Linux系统上运行的应用程序集合,常见的用户应用程序有字处理应用程序、多媒体处理应用程序、网络应用程序等。
操作系统服务:
位于用户应用程序与系统内核之间,主要是指那些为用户提供服务且执行操作系统部分功能的程序,为应用程序提供系统内核的调用接口。X窗口系统、Shell命令解释系统、内核编程接口等就属于操作系统服务子系统。这一部分也称为系统程序。
Linux内核:
靠近硬件的是内核,即Linux操作系统常驻内存部分。Linux内核是整个操作系统的核心,由它实现对硬件资源的抽象和访问调度。它为上层调用提供了一个统一的虚拟机器接口,在编写上层程序的时候不需要考虑计算机使用何种类型的物理硬件,也不需要考虑临界资源问题。每个上层进程执行时就像它是计算机上的唯一进程,独占了系统的所有内存和其他硬件资源。但实际上,系统可以同时运行多个进程,由Linux内核保证和进程对临界资源的安全使用。所有运行在内核之上的程序可分为系统程序和用户程序两大类,但他们统统运行在用户模式之下。内核之外的所有程序必须通过系统调用才能进入操作系统的内核。
硬件系统:
包含Linux所使用的所有物理设备,如CPU、内存、硬盘和网络设备等。