Linux内核
kevin_hcy
这个作者很懒,什么都没留下…
展开
-
u-boot启动流程
最近开始学习u-boot ,下载了一个jz4750基于u-boot -1.1.6的包和补丁。感觉启动流程比较混乱,所以把它疏理了一下,便于后期详细分析代码。现在我配置的启动模式是tftpboot;bootm,启动内核后通过NFS挂载根文件系统。下面把代码详细的启动步骤记录下来。u-boot启动时首先会先到CPU目录下面去找对应CPU文件夹下面的start.s,由于我们是分析启动流程,所以不对代码进行详细的讲解,jz4750的start.s都在/CPU/MIPS目录下面,从start.s代码可以看到u-boo原创 2010-09-28 10:45:00 · 3247 阅读 · 1 评论 -
linux中fork()函数详解
一个进程,包括代码、数据和分配给进程的资源。fork()函数通过系统调用创建一个与原来进程几乎完全相同的进程,也就是两个进程可以做完全相同的事,但如果初始参数或者传入的变量不同,两个进程也可以做不同的事。 一个进程调用fork()函数后,系统先给新的进程分配资源,例如存储数据和代码的空间。然后把原来的进程的所有值都复制到新的新进程中,只有少数值与原来的进程的值不同。相当于克隆了一个自己。转载 2013-06-14 10:41:08 · 667 阅读 · 0 评论 -
对Linux内核中进程上下文和中断上下文的理解
内核空间和用户空间是操作系统理论的基础之一,即内核功能模块运行在内核空间,而应用程序运行在用户空间。现代的CPU都具有不同的操作模式,代表不同的级别,不同的级别具有不同的功能,在较低的级别中将禁止某些操作。Linux系统设计时利用了这种硬件特性,使用了两个级别,最高级别和最低级别,内核运行在最高级别(内核态),这个级别可以进行所有操作,而应用程序运行在较低级别(用户态),在这个级别,处理器控制着对转载 2013-06-14 14:50:53 · 734 阅读 · 0 评论 -
Linux内核配置
对内核的操作分为两类:一.配置内核二.编译内核一.配置内核的过程如下:make menuconfig时可以修改配置项,这主要是Kconfig的功能,然后最终的配置结果会保存在.config文件中。下次再执行make menuconfig时回去读取这个文件。这是内核配置的过程。二.编译内核的过程(即make uImage的过程)如下:1.查看内核配置文件 .confi转载 2013-12-07 17:03:10 · 4904 阅读 · 0 评论 -
从linux启动到rootfs的挂载分析
从linux启动到rootfs的挂载分析 2012-05-02 15:50:49| 分类:默认分类 | 标签:|字号大中小 订阅简单的来说,根文件系统包括虚拟根文件系统和真实根文件系统。在Kernel启动的初始阶段,首先去创建虚拟的根文件系统,接下来再去调用do_mount来加载真正的文件系统,并将根文件系统切换到真转载 2013-12-29 23:31:24 · 34151 阅读 · 2 评论 -
从文件 I/O 看 Linux 的虚拟文件系统
Linux 允许众多不同的文件系统共存,并支持跨文件系统的文件操作,这是因为有虚拟文件系统的存在。虚拟文件系统,即VFS(Virtual File System)是 Linux 内核中的一个软件抽象层。它通过一些数据结构及其方法向实际的文件系统如 ext2,vfat 提供接口机制。本文在简要介绍 VFS 的相关数据结构后,以文件 I/O 为切入点深入 Linux 内核源代码,追踪了 sys转载 2013-12-29 23:34:15 · 5192 阅读 · 0 评论 -
解析 Linux 中的 VFS 文件系统机制
本文阐述 Linux 中的文件系统部分,源代码来自基于 IA32 的 2.4.20 内核。总体上说 Linux 下的文件系统主要可分为三大块:一是上层的文件系统的系统调用,二是虚拟文件系统 VFS(Virtual Filesystem Switch),三是挂载到 VFS 中的各实际文件系统,例如 ext2,jffs 等。本文侧重于通过具体的代码分析来解释 Linux 内核中 VFS 的内在转载 2013-12-29 23:35:28 · 4510 阅读 · 0 评论 -
Linux的inode的理解
一、inode是什么?理解inode,要从文件储存说起。文件储存在硬盘上,硬盘的最小存储单位叫做"扇区"(Sector)。每个扇区储存512字节(相当于0.5KB)。 操作系统读取硬盘的时候,不会一个个扇区地读取,这样效率太低,而是一次性连续读取多个扇区,即一次性读取一个"块"(block)。这种由多个扇区组成的"块",是文件存取的最小单位。"块"的大小,最常见的是4KB,即连续八转载 2013-12-28 11:11:54 · 4617 阅读 · 1 评论 -
proc目录详解
1. /proc目录Linux 内核提供了一种通过 /proc 文件系统,在运行时访问内核内部数据结构、改变内核设置的机制。proc文件系统是一个伪文件系统,它只存在内存当中,而不占用外存空间。它以文件系统的方式为访问系统内核数据的操作提供接口。用户和应用程序可以通过proc得到系统的信息,并可以改变内核的某些参数。由于系统的信息,如进程,是动态改变的,所以用户或应用程序读取proc文件时,pro...转载 2018-03-07 15:45:50 · 1123 阅读 · 0 评论 -
对Linux的进程内核栈的认识
什么是进程的“内核栈”? 在每一个进程的生命周期中,必然会通过到系统调用陷入内核。在执行系统调用陷入内核之后,这些内核代码所使用的栈并不是原先用户空间中的栈,而是一个内核空间的栈,这个称作进程的“内核栈”。 比如,有一个简单的字符驱动实现了open方法。在这个驱动挂载后,应用程序对那个驱动所对应的设备节点执行open操作,这个应用程序的open其实就通过glib库调用了Lin转载 2013-06-14 10:56:26 · 870 阅读 · 0 评论 -
根文件系统挂载
------------------------------------ 本文系本站原创,欢迎转载! 转载请注明出处:http://sjj0412.cublog.cn/ ------------------------------------------ 由bootload进入linux后由head.s进入了start_kernel了. asmlinkage void __init start_kernel(void) { char * command_line; extern struct kernel_转载 2011-04-13 14:45:00 · 1189 阅读 · 0 评论 -
从源代码的视角来更深入剖析Linux启动过程
赛迪网报道】以下内容主要是以RedHat9.0和i386平台为例,剖析了从用户打开电源直到屏幕出现命令行提示符的整个Linux启动过程。并且介绍了启动中涉及到的各种文件。 阅读Linux源代码,无疑是深入学习Linux的最好方法。在本文对Linux启动过程的介绍中,我们也尝试从源代码的视角来更深入的剖析Linux的启动过程,所以其中也简单涉及到部分相关的Linux源代码,Linux启动这部分的源码主要使用的是C语言,也涉及到了少量的汇编。而启动过程中也执行了大量的shell(主要是bashshell)所写脚转载 2010-09-29 09:29:00 · 830 阅读 · 0 评论 -
2.6.x kernel下内核模块的Makefile
发现自己以前写的2.4的模块无法在2.6下面编译使用了,需要用新的Makefile才行。简单的说就像这个样子:obj-m := mytest.oKDIR := /lib/modules/$(shell uname -r)/buildPWD := $(shell pwd)default:$(MAKE) -C $(KDIR) SUBDIRS=$(PWD) modules就可以了,模块的名称是mytest,最后编译出来是mytest.ko,剩下的系统搞定。当然这里有一些隐含规则了,就是mytest.o由mytes转载 2010-10-10 11:00:00 · 761 阅读 · 0 评论 -
Linux 时钟处理机制
1 计算机系统中的计时器在计算机系统中存在着许多硬件计时器,例如 Real Timer Clock ( RTC )、Time Stamp Counter ( TSC ) 和 Programmable Interval Timer ( PIT ) 等等。这部分内容不是本文的中点,这里仅仅简单介绍几种,更多内容参见参考文献:Real Timer Clock ( RTC ): 独立于整个计算机系统(例如: CPU 和其他 chip ) 内核利用其获取系统当前时间和日期 Time Stamp Counter (转载 2010-12-08 15:40:00 · 731 阅读 · 0 评论 -
linux2.6.29内核 进程调度分析
分析了一下2.6.29内核的调度程序,花了不少时间,可是自己还是觉得不是很清楚,里面有些地方可能还不正确。进程调度分析——关于2.6.29内核源代码选题理由:Linux 是一个庞大、高效而复杂的操作系统,它的内核包括进程调度、内存管理、进程间通信、虚拟文件系统和网络接口五部分,其中,进程调度是多任务操作系统的核心。1、进程调度的时机进程状态转换当前进程时间片用完设备驱动程序运行时从内核态返回到用户态从中断或系统调用中返回;进程重新允许抢占;主动进入休眠(例如wait_event_interruptible(转载 2010-12-09 08:56:00 · 2411 阅读 · 1 评论 -
Linux进程管理之CFS调度器分析
本文系本站原创,欢迎转载! 转载请注明出处:http://ericxiao.cublog.cn/ ------------------------------------------ 一:前言 CFS调度在2.6.23版本的kernel中被加入.引用Ingo Molnar的一句话:80%的设计可以用一句话来概括:CFS中一个”理想的多任务处理器”.也从该版本开始,linux的调度部份采用模块化设计.我们在接下来的分析中,分为几个重要的状态进行分析.本文的代码分析基于2.6.28的kernel.分析代码基本位转载 2010-12-09 08:58:00 · 5925 阅读 · 0 评论 -
ramfs, rootfs, initrd and initramfs
什么是ramfs?ramfs是空间规模动态变化的RAM文件系统。它非常简单,用来实现Linux缓存机制(缓存page cache and dentry cache)的文件系统。通常情况下,Linux的所有文件在内存中都有缓存。需要读取的数据页从支撑存储设备(block device)中读取后,缓存于内存。在支撑存储设备中的数据页执行marked as clean操作。当虚拟文件系统需要支撑存储设备中的数据页内存时,可以释放。基于同样的机制,支撑存储设备的写入操作(写入文件然后写回支撑存储设备,marked转载 2010-11-02 20:28:00 · 969 阅读 · 1 评论 -
添加一个系统调用,遍历内核进程
环境:Fedora 12内核:linux-2.6.32.2STEP 0: 编译一个linux-2.6.32.2内核,且能够正常启动。上一篇博客已经讲了。STEP 1:在linux-2.6.32.2/arch/x86/kernel 目录中,找到syscall_table_32.S,在这个文件的最后一行,添加:.long sys_mycall.long sys_mycallSTEP 2: 在linux-2.6.32.2/arch/x86/include/asm目录下,找到unistd_32.h,在这个文件转载 2011-03-07 15:16:00 · 2035 阅读 · 1 评论 -
输入子系统--event层分析
输入子系统--event层分析#####################################################################################################早前曾研究了一下输入子系统的原理,给人的感觉是输入子系统很复杂.但其实内核开发者在这方面已经做得很完善了,输入子系统虽然错综复杂,但是只要我们领会了输入子系统的一些设计思想后,我们要使用它并非难事.以下以内核自带的gpio_keys驱动为例,介绍输入子系统的使用.主要的原因是gp转载 2011-04-13 11:36:00 · 631 阅读 · 0 评论 -
Linux /proc/pid记录了什么
由于自己Linux系统知识基础比较薄弱,准备比较全面学习,准备从/proc这个目录开始。实际上这个目录也基本上记录所有系统运行时和内核的一些信息,所以如果想对linux系统有一个比较全面的了解,从/proc入手应该是个不错的选择。准备将自己学习的过程记录下来,分享给同样需要的朋友,也便于以后查阅。今天准备介绍一下/proc/pid这个目录到底是做什么用的,它到底记录了哪些信息。cd /proc/之...转载 2018-03-08 12:00:42 · 1492 阅读 · 1 评论