Kernel
文章平均质量分 85
Fred_HBUT
这个作者很懒,什么都没留下…
展开
-
子模块
Linux系统提供了input子系统,按键、触摸屏、键盘、鼠标等输入都可以利用input接口函数来实现设备驱动,下面是Input子系统架构:输入子系统由驱动层(Drivers),输入子系统核心层( Input Core )和事件处理层(Event Handler)三部份组成。一个输入事件,如鼠标移动,键盘按键按下等都是通过 Driver -> InputCore -> Eventhandler转载 2013-09-13 17:04:11 · 740 阅读 · 0 评论 -
如何缓存文件
address_space与基树address_space结构体,是页高速缓存(page cache)的核心数据结构。在很多时候,内核在读写磁盘时都引用页高速缓存,新页被追加到页高速缓存以满足用户态进程的读请求。如果页不在高速缓存中,新页就被追加到高速缓存。这样作的目的就是为了更快的效率,比如有一些页,经常被访问,那么此时,如果内存空间允许的话,可以考虑让它们长期驻留在页高速缓存中,这样要转载 2013-11-21 16:16:46 · 937 阅读 · 0 评论 -
编程语录
程序员编程语录1. 一个好的程序员是那种过单行线马路都要往两边看的人。(Doug Linder)2. 程序有问题时不要担心。如果所有东西都没问题,你就失业了。(软件工程的Mosher定律)3. 程序员的麻烦在于,你无法弄清他在捣腾什么,当你最终弄明白时,也许已经晚了。(超级计算机之父Seymour Cray)4. 我想大部分人都知道通常一个程序员会具有的美德。当然了,有三种:懒惰,转载 2014-01-17 21:58:46 · 560 阅读 · 0 评论 -
内核的原子操作
转自:http://blog.chinaunix.net/space.php?uid=717921内核的一个基本原则就是:在中断或者说原子上下文中,内核不能访问用户空间,而且内核是不能睡眠的。也就是说在这种情况下,内核是不能调用有可能引起睡眠的任何函数。一般来讲原子上下文指的是在中断或软中断中,以及在持有自旋锁的时候。内核提供了四个宏来判断是否处于这几种情况里:#define in_i转载 2014-01-26 21:42:41 · 967 阅读 · 0 评论 -
一些标准信号
NAMEsignal - 有效信号的清单描述 (DESCRIPTION)下面 列出 Linux 支持的 信号. 某些 信号 依赖于 体系结构(architecture).首先, POSIX.1 描述了 下列 信号.信号值动作说明 SIGINT转载 2014-02-27 15:11:11 · 1286 阅读 · 0 评论 -
可执行文件运行的系统调用
系统调用execve的入口sys_execve()/* * sys_execve() executes a new program. */long sys_execve(const char __user *name, //需要执行的文件的绝对路径(存于用户空间) const char __user *const __user *转载 2014-03-12 17:59:04 · 871 阅读 · 0 评论 -
Linux杂项
persistent ram :the content of this area is survive aftrer a restart .转载 2013-09-19 15:43:55 · 685 阅读 · 0 评论 -
多CPU的私有数据存储
linux 绑定中断 smp_affinity/proc/irq/{number}/smp_affinity/proc/irq/{number}/smp_affinity在多 CPU 的环境中,还有一个中断平衡的问题,比如,网卡中断会教给哪个 CPU 处理,这个参数控制哪些 CPU 可以绑定 IRQ 中断。其中的 {number} 是对应设备的中断编号,可以用下面的转载 2013-08-27 14:08:01 · 826 阅读 · 0 评论 -
Linux 命令
linux 查看系统信息命令是linux初学者必备的基础知识, 这些命令也非常有用, 因为进入linux第一件事就可能是首先查看系统信息, 因此必要的系统的学习一下这些linux系统信息命令还是非常有必要的!下面给除了各linux发行版比较常用的系统信息查询的命令, 大家可以参考, 同时也可以测试学习, 必要的时候man, 一定要学学使用man命令, 呵呵# uname -a #转载 2013-09-03 15:38:54 · 8599 阅读 · 2 评论 -
内核_抢占
MMU提供的一个关键服务是,能使各个任务作为独立的程序在其自己的私有存储空间运行.地址转换过程允许运行的多个程序使用相同的虚拟地址,而各自存储在物理存储器的不同位置. 区域可以是活跃的,也可以是睡眠的:活跃区域包含当前系统正在使用的代码或数据;睡眠区域包含当前不使用,但可能在短时间内变为活跃的代码或数据.睡眠区域是被保护的,因此当前正在运行的任务是不能访问的.MPU和MMU转载 2013-10-22 15:49:46 · 769 阅读 · 0 评论 -
程序两种空间的切换
进程内核栈、用户栈1.进程的堆栈 内核在创建进程的时候,在创建task_struct的同事,会为进程创建相应的堆栈。每个进程会有两个栈,一个用户栈,存在于用户空间,一个内核栈,存在于内核空间。当进程在用户空间运行时,cpu堆栈指针寄存器里面的内容是用户堆栈地址,使用用户栈;当进程在内核空间时,cpu堆栈指针寄存器里面的内容是内核栈空间地址,使用内核栈。2.进程用户栈和内转载 2014-01-07 17:07:59 · 546 阅读 · 0 评论 -
ARM_汇编
汇编存储cachec扩展编译器在嵌入式开发中,汇编程序常常用于非常关键的地方,比如系统启动时初始化,进出中断时的环境保护,恢复等对性能有要求的地方。ARM指令集可以分为六大类,分别为数据处理指令 、Load/Store指令 、跳转指令 、程序状态寄存器处理指令 、协处理器指令 和异常产生指令 。 ARM 指令使用的基本格式如下: 〈opcode〉{〈cond〉}{S} 〈Rd〉转载 2013-10-22 15:46:21 · 871 阅读 · 0 评论 -
Git
本文编辑整理自:http://guibin.iteye.com/blog/1014369http://hi.baidu.com/tiger_tnt/blog/item/a0464ffa6a8115d9b58f314d.htmlhttp://web.mit.edu/~mkgray/project/silk/root/afs/sipb/project/git/git-doc/git-reset转载 2013-08-23 17:22:49 · 905 阅读 · 0 评论 -
内核如何来链接
arch/mips/kernel/vmlinux.lds文件的生成通过顶层Makefile中的规则生成,vmlinux是根据arch/mips/kernel/vmlinux.lds这个脚本链接生成的。arch/mips/kernel/vmlinux.lds是由arch/mips/kernel/vmlinux.lds.S生成的1. 什么是链接脚本链接器主要有两个作用,一是将若干输转载 2014-01-15 17:42:38 · 694 阅读 · 0 评论 -
为什么要对齐
一.什么是字节对齐,为什么要对齐? 现代计算机中内存空间都是按照byte划分的,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始,但实际情况是在访问特定类型变量的时候经常在特 定的内存地址访问,这就需要各种类型数据按照一定的规则在空间上排列,而不是顺序的一个接一个的排放,这就是对齐。 对齐的作用和原因:各个硬件平台对存储空间的处理上有很大的不同。一些平台对某些特定类型的数转载 2014-01-15 16:27:08 · 990 阅读 · 0 评论 -
打印函数
一、printk概述 对于做Linux内核开发的人来说,printk实在是再熟悉不过了。内核启动时显示的各种信息大部分都是通过她来实现的,在做内核驱动调试的时候大部分时候使用她就足矣。她之所以用得如此广泛,一个是由于她使用方便,还有一个重要的原因是她的健壮性。它使用范围很广,几乎是内核的任何地方都能调用它。你既可以在中断上下文、进程上下中调用她,也可以在任何持有锁时调用她,更可以转载 2013-09-18 10:33:30 · 1292 阅读 · 0 评论 -
顶层内核编译文件
1、make menuconfigVERSION = 2PATCHLEVEL = 6SUBLEVEL = 26EXTRAVERSION =NAME = Rotary Wombat# *DOCUMENTATION*# To see a list of typical targets execute "make help"# More info can be l转载 2013-10-22 15:55:49 · 999 阅读 · 0 评论 -
函数参数的存放位置差别
内核版本:2.6.14在linux内核中我们都会经常见到FASTCALL和armlinkage,它们各有什么不同呢?下面我们来具体分析一下。在标准C系中函数的形参在实际传入参数的时候会涉及到参数存放的问题,那么这些参数存放在哪里呢?对x86比较了解的话,应该知道这些函数参数和函数内部局部变量一起被分配到了函数的局部堆栈中。linux操作系统支持多种CPU架构,比如x86、ppc和a转载 2013-10-31 11:35:59 · 2879 阅读 · 0 评论 -
内核系统映射文件
system.map内容格式为:线性地址 类型 符号具体内容如下: 00100000 A phys_startup_32c0100000 T startup_32c0100000 A _text 注:表示内核代码第一个字节的地址c01000c6 t checkCPUtypec0100147 t is486c0100转载 2013-11-05 15:00:51 · 746 阅读 · 0 评论 -
协处理器的一些介绍
本章和第5章的内容都与ARM处理器中CP15协处理器的寄存器有密切关系,所以我们这里先介绍一下CP15寄存器以及访问CP15寄存器的汇编指令。4.1.1 访问CP15寄存器的指令访问CP15寄存器指令的编码格式及语法说明如下:31 2827 2423 212019 1615 1211转载 2013-11-20 14:21:56 · 1066 阅读 · 0 评论 -
系统低内存后的处理
Low Memory Killer(低内存管理) 对于PC来说,内存是至关重要。如果某个程序发生了内存泄漏,那么一般情况下系统就会将其进程Kill掉。Linux中使用一种名称为OOM(Out Of Memory,内存不足)的机制来完成这个任务,该机制会在系统内存不足的情况下,选择一个进程并将其Kill掉。Android则使用了一个新的机制——Low Memory Killer来完成同样的转载 2013-11-10 10:59:32 · 1268 阅读 · 0 评论 -
系统请求触发
/proc/sysrq-trigger详解 # 立即重新启动计算机echo "b" > /proc/sysrq-trigger # 立即关闭计算机echo "o" > /proc/sysrq-trigger # 导出内存分配的信息 (可以用/var/log/message 查看)echo "m" > /proc/sysrq-t转载 2013-11-12 20:32:11 · 563 阅读 · 0 评论 -
挂载的参数 状态参数
relatime指relative atimeatime/noatime/nodiratime/relatimeatime(缺省) - 每次读取档案/目录内容时,更新档案/目录 inode 上的最后存取时间 (access time)noatime - 不会更新档案 inode 上的最后存取时间。可以大大减轻档案系统的负荷,但会令如 mutt 之类需要存取时间的应用程序不能正常转载 2013-12-09 16:04:56 · 820 阅读 · 0 评论 -
内核进程间的信号机制
linux内核中的信号机制--一个简单的例子 信号机制是类UNIX系统中的一种重要的进程间通信手段之一。我们经常使用信号来向一个进程发送一个简短的消息。例如:假设我们启动一个进程通过socket读取远程主机发送过来的网络数据包,此时由于网络因素当前主机还没有收到相应的数据,当前进程被设置为可中断等待状态(TASK_INTERRUPTIBLE),此时我们已经失去耐心,想提前结束这个进转载 2013-12-06 14:05:43 · 1505 阅读 · 0 评论 -
一些问题
应用软件UI交互不能复杂,大多数用户喜欢简单。驱动设计考虑模块化设计,可以卸载。功能分层设计,高内聚,低耦合。对LINUX内核思想,架构,接口理解非常重要。转载 2013-10-10 11:32:24 · 530 阅读 · 0 评论 -
内核编译后不同的存在形式
vmlinux, zImage, Image的区别 从下面的内核编译过程,可以看出vmlinux, arch/arm/boot/compressed/vmlinux, arch/arm/boot/Image, arch/arm/boot/zImage 之间的区别 LD vmlinux SYSMAP System.map SYSMAP .tmp_转载 2013-12-24 22:06:47 · 651 阅读 · 0 评论 -
ARM架构内核运行过程
虽然这里的Arm Linux kernel前面加上了Android,但实际上还是和普遍Arm linux kernel启动的过程一样的,这里只是结合一下Android的Makefile,讲一下bootimage生成的一个过程。这篇文档主要描述bootimage的构造,以及kernel真正执行前的解压过程。 在了解这些之前我们首先需要了解几个名词,这些名词定义在/Documentat转载 2013-12-24 22:23:02 · 1380 阅读 · 1 评论 -
RDSTWXZ 状态
Linux是一个多用户,多任务的 系统,可以同时运行多个用户的多个程序,就必然会产生很多的进程,而每个进程会有不同的状态。 在下文将对进程的R、S、D、T、Z、X 六种状态做个说明。 PROCESS STATE CODES Here are thedifferent values that the s, stat and state output specifiers转载 2014-01-15 15:31:53 · 605 阅读 · 0 评论 -
ARM工作模式以及程序的调用过程
APCS,ARM 过程调用标准(ARM Procedure Call Standard),提供了紧凑的编写例程的一种机制,定义的例程可以与其他例程交织在一起。最显著的一点是对这些例程来自哪里没有明确的限制。它们可以编译自 C、 Pascal、也可以是用汇编语言写成的。APCS 定义了:对寄存器使用的限制。使用栈的惯例。在函数调用之间传递/返回参数。可以被‘回溯’的基于栈的结构的转载 2014-12-13 16:21:31 · 974 阅读 · 0 评论