Linux内核的基本概念

Posted 时光撒谎

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux内核的基本概念相关的知识,希望对你有一定的参考价值。

     Linux内核学习,推荐的书籍:

    《linux设备驱动开发详解第二版》、《Linux内核设计与实现第三版》、《嵌入式Linux应用开发完全手册》

第一篇:讲解Linux内核的基础知识,先有一个整体的框架,后续会逐步讲解,一步步深入。

 

1.物理地址和虚拟地址

地址转换:内核所使用的地址一定是虚拟地址,但是CPU真正最后使用或者访问的是物理地址,所以,必须有一个转换过程。内核的虚拟地址和物理地址之间只是一个差值0xc0000000的区别,所以从物理地址求虚拟地址或从虚拟地址求物理地址很容易,+-这个差就行了。

页表:一般而言,页的大小是4K,所以说,页表的大小就是你所需要访问的所有物理地址除以4K。Linux所能查找的最小单位是页。

举例:如果所要访问的空间是4G,那么页表的大小就是1M。(4G=(4*1024M)/(4*1024)=1M)

页表是存在内存中的。Linux是通过查内存中的一张页表实现虚拟地址到物理地址的转换的。

内存的属性:可读可写可执行。每一个页都有属性。

 

2.Linux内核中的内存管理:页(4K byte)为单位进行分配内存。

 

3.系统调用(Linux特有):用户使用内核函数(API)的媒介。

具体实现:通过一个exception,使得应用程序陷入内核中执行。

 

4.内核线程-程序运行的主体。

内核只有线程,没有进程:内核因为代码空间只有一份,内核空间也只有一个,所有的内核线程共用一份内核代码,共用一个内核空间,所有只有线程,没有进程。

3种调度方式:SCHED_RR时间片轮转 SCHEDPRI 优先级 SCHED_RT实时进程(优先级最高)

调度的时机:时钟中断发生时,Linux发生内核态和用户态互相切换时,Linux执行完信号时。

 

5.内核中的同步和线程间通信方式

原子操作:所谓原子操作,就是该操作绝不会在执行完毕前被任何其他任务或事件打断,也就说,它的最小的执行单位,不可能有比它更小的执行单位,因此这里的原子实际是使用了物理学里的物质微粒的概念。

同步通信方式:自旋锁spin_lock和信号量semaphore

异步通信方式:信号signal

 

6.中断

中断的硬件概念:就是外部的一个电平信号。

中断处理的上半部:需要Linux内核在暂时关闭其他中断信号,来处理的程序段。一定是处理关键的同时能够迅速完成的程序段。这个程序段一定是不能等待其他条件发生的。

中断处理的下半部:是上半部中来不及处理的,比较冗长的程序段,是需要等待其他程序运行结果或者需要等待获取其他资源的程序段。

 

7.时钟和定时器管理

时钟的硬件概念:时钟从硬件上讲是一种产生定时中断的电路。

RTC和system timer:RTC-实时时钟或实时计数器。属于CPU外围的资源。

时钟是专门用来给系统做计时用。而RTC是系统用来获取当前的系统时间,延时。

system timer是RTC的一个延伸,很多情况就是用作延迟和计算相对时间的。

tick和jiffies:

tick就是时钟中断的周期。假设系统时钟是100M。那么大致的tick值是10ms。

jiffies它是一个全局变量,如果系统是64位系统,他就是64位的变量。记录了从上电开始到现在所经历的tick数。

 

8文件系统概述

虚拟文件系统(VFS):是Linux内核为了屏蔽具体的物理文件系统的差异,所产生的一个中间层。

主要的物理文件系统(ext4,yaffs2等):ext4最大特点是有完善的日志系统。yaffs2是比较适合在nand Flash上部署的文件系统。

ubifs(ARM实时,执行速率快)和btfs(防止碎片产生)这两种是目前比较流行的新文件系统。

以上是关于Linux内核的基本概念的主要内容,如果未能解决你的问题,请参考以下文章

Linux基本概念

Linux——Linux驱动之使用内核定时器进行按键消抖的开发实战(内核定时器的基本概念使用要点修改定时周期运行)

《Linux系统编程手册》读书笔记——第2章基本概念

操作系统实验00——基本概念

Git基本概念和下载安装

设备树基本概念-17