【Linux 内核总线注册】教程文章相关的互联网学习教程文章

《Linux内核设计与实现》读书笔记(十二)- 内存管理【代码】【图】

转自:http://www.cnblogs.com/wang_yb/archive/2013/05/23/3095907.html 内核的内存使用不像用户空间那样随意,内核的内存出现错误时也只有靠自己来解决(用户空间的内存错误可以抛给内核来解决)。所有内核的内存管理必须要简洁而且高效。主要内容:内存的管理单元获取内存的方法获取高端内存内核内存的分配方式总结 1. 内存的管理单元内存最基本的管理单元是页,同时按照内存地址的大小,大致分为3个区。 1.1 页页的大小与体系结...

2018-2019-1 学号《Linux内核原理与分析》第二周作业【代码】【图】

问题一 动态库链接找不到库问题这个问题当时确实对我造成了很大的困扰,虽然最终仍然成功用动态库链接但是问题并没有解决。现在回过头来看却觉得有点蠢,但出错的过程仍然值得总结。首先看我的目录结构: 可以看到生成的.so文件在libs和lib下各有一个,至于为什么会有这么两个目录,是因为ppt中-L. 指定库目录让我误以为-L.指定的是一个默认的目录,至于叫lib还是libs有些分不清所以都试试。链接时我的命令中使用的都是-L.,所以提...

linux内核(三)文件系统【图】

1、为什么需要根文件系统(1)init进程的应用程序在根文件系统上(2)根文件系统提供了根目录/(3)内核启动后的应用层配置(etc目录)在根文件系统上。几乎可以认为:发行版=内核+rootfs(4)shell命令程序在根文件系统上。譬如ls、cd等命令总结:一套linux体系,只有内核本身是不能工作的,必须要rootfs(上的etc目录下的配置文件、/bin /sbin等目录下的shell命令,还有/lib目录下的库文件等···)相配合才能工作。下面是根文件系统顶层目录...

[转]Linux内核最新的连续内存分配器(CMA)——避免预留大块内存

http://blog.csdn.net/21cnbao/article/details/7309757在我们使用ARM等嵌入式Linux系统的时候,一个头疼的问题是GPU,Camera,HDMI等都需要预留大量连续内存,这部分内存平时不用, 但是一般的做法又必须先预留着。目前,Marek Szyprowski和Michal Nazarewicz实现了一套全新的Contiguous Memory Allocator。通过这套机制,我们可以做到不预留内存,这些内存平时是可用的,只有当需要的时候才被分配给Camera,HDMI等设备。下面分...

LINUX内核分析第七周——可执行程序的装载【代码】【图】

一、得到一个可执行程序1. 预处理、编译、链接gcc hello.c -o hello.exegcc编译源代码生成最终可执行的二进制程序,GCC后台隐含执行了四个阶段步骤。预处理 => 编译 => 汇编 => 链接预处理:编译器将C源代码中包含的头文件编译进来和执行宏替换等工作。gcc -E hello.c -o hello.i编译:gcc首先要检查代码的规范性、是否有语法错误等,以确定代码的实际要做的工作,在检查无误后,gcc把代码翻译成汇编语言。gcc –S hello.i &n...

Linux内核的netpoll框架与netconsole【图】

虽然和网络相关,但是它却不是网络协议栈的一部分,这就是netpoll。它只是一个出入口的处理框架。所谓的网络,它的终端节点就是主机,数据从主机的网卡发出,经过一个出口处理过程,网卡接收到一个数据包,经过一个入口处理过程,这一出一入的过程处理分为两种方式:1.中断的方式出口处理过程-数据排入发送队列,读取特定寄存器值,待网卡状态适合发送式,发送,等待发送后的中断通知,继续。入口处理过程-数据被网卡收到,网卡中断...

Linux 内核防火墙的工作原理一【图】

Linux的内核提供的防火墙功能通过netfiter框架实现,并提供iptables工具配置和修改防火墙的规则   netfilter的通用框架不依赖于具体的协议,而是为每种网络协议定义一套钩子函数。这些钩子函数在数据包经过协议栈的几个关键点时被调用,在这几个点中,协议栈将数据包及钩子函数作为参数,传递netfilter框架  对于每种网络协议定义的钩子函数,任何内核模块可以对每种协议的一个或多个钩子函数进行注册,实现挂接。这样当某个数...

linux内核调度算法(1)--快速找到最高优先级进程【代码】

为什么要了解内核的调度策略呢?呵呵,因为它值得我们学习,不算是废话吧。内核调度程序很先进很强大,管理你的LINUX上跑的大量的乱七八糟的进程,同时还保持着对用户操作的高灵敏响应,如果可能,为什么不把这种思想放到自己的应用程序里呢?或者,有没有可能更好的实现自己的应用,使得操作系统能够以自己的意志来分配资源给自己的进程?带着这两个问题来看看KERNEL。首先回顾上我们开发应用程序,基本上就两种类型,1、IO消耗型...

Linux内核中进程上下文和中断上下文的理解【图】

参考:http://www.embedu.org/Column/Column240.htmhttp://www.cnblogs.com/Anker/p/3269106.html用户空间与内核空间 有了用户空间和内核空间,整个linux内部结构可以分为三部分,从最底层到最上层依次是:硬件-->内核空间-->用户空间。如下图所示:需要注意的细节问题: (1) 内核空间中存放的是内核代码和数据,而进程的用户空间中存放的是用户程序的代码和数据。不管是内核空间还是用户空间,它们都处于虚拟空间中。 (2) L...

解析 Linux 内核可装载模块的版本检查机制【代码】

转自:http://www.ibm.com/developerworks/cn/linux/l-cn-kernelmodules/ 为保持 Linux 内核的稳定与可持续发展,内核在发展过程中引进了可装载模块这一特性。内核可装载模块就是可在内核运行时加载到内核的一组代码。通常 , 我们会在两个版本不同的内核上装载同一模块失败,即使是在两个相邻的补丁级(Patch Level)版本上。这是因为内核在引入可装载模块的同时,对模块采取了版本信息校验。这是一个与模块代码无关,却与内核相连...

初探内核之《Linux内核设计与实现》笔记上【代码】【图】

内核简介 本篇简单介绍内核相关的基本概念。主要内容:单内核和微内核内核版本号 1. 单内核和微内核 原理优势劣势单内核整个内核都在一个大内核地址空间上运行。1. 简单。2. 高效:所有内核都在一个大的地址空间上,所以内核各个功能之间的调用和调用函数类似,几乎没有性能开销。一个功能的崩溃会导致整个内核无法使用。微内核内核按功能被划分成各个独立的过程。每个过程独立的运行在自己的地址空间上。1. 安全:内核的各种服务独...

Linux内核打印时间戳

较为简单可行的方式是通过PrintkTime功能为启动过程的所有内核信息增加时间戳,便于汇总分析。PrintkTime最早为CELF所提供的一个内核补丁,在后来的Kernel 2.6.11版本中正式纳入标准内核。所以大家可能在新版本的内核中直接启用该功能。如果你的Linux内核因为某些原因不能更新为2.6.11之后的版本,那么可以参考CELF提供的方法修改或直接下载它们提供的补丁:http://tree.celinuxforum.org/CelfPubWiki/PrintkTimes;  开启Printk...

Linux内核信号量

Linux内核信号量Linux中的信号量是一种睡眠锁。如果有一个任务试图获得一个不可用(已经被占用)的信号量时,信号量会将其推进一个等待队列,然后让其睡眠。这时处理器能重获自由,从而去执行其他代码。当持有的信号量可用(被释放后),处于等待队列中的那个任务将被唤醒,并将获得该信号量。举个现实生活中的例子。当某个人到了门前,他抓取钥匙,然后进入房间。最大的差异在于当另一人到了门前,但无法得到钥匙时会发生什么情况...

linux 内核时间和date时间相差12小时

参考:https://blog.csdn.net/laiyijian/article/details/77981195问题描述:今天发现/var/log/message里面日志记录时间和当前的date时间不一致,相差了12小时。导致计划任务日志切割没有执行。 查找原因为:我的date时间是ntp自动同步的,log时间是有rsyslog进程控制的。解决:service rsyslog restart 或者 /etc/init.d/rsyslog restart,执行之后时间正常更改之后如果crontab的计划任务还是没有执行需要重启crond服务,/etc/in...

Linux内核中网络数据包的接收-第二部分 select/poll/epoll【代码】【图】

和前面文章的第一部分一样,这些文字是为了帮别人或者自己理清思路的,而不是所谓的源码分析,想分析源码的,还是直接debug源码最好,看任何文档以及书都是下策。因此这类帮人理清思路的文章尽可能的记成流水的方式,尽可能的简单明了。Linux 2.6+内核的wakeup callback机制Linux 内核通过睡眠队列来组织所有等待某个事件的task,而wakeup机制则可以异步唤醒整个睡眠队列上的task,每一个睡眠队列上的节点都拥有一个 callback,wak...