- 博客(35)
- 资源 (6)
- 收藏
- 关注
原创 Linux内核初始化高端内存的过程(代码分析)
Linux内核初始化高端内存的过程 内核在start_kernel()函数中调用了mem_init()来做所有与内存初始化相关的工作。与初始化高端内存相关的工作在函数set_highmem_pages_init()中完成。下面我们来详细分析一下这个过程。109 void __init set_highmem_pages_init(void)110 {111
2011-11-28 17:56:13
1990
1
原创 Boot Memory分配器
在内核启动到mem_init()函数执行的这段时间里,Buddy系统没有初始化。在这个阶段,内核可以直接访问的数据空间包括内核的data段、bss段、sdata段中的数据。但是在内核初始化时,难免会使用到动态内存,那么此时,在不存在Buddy系统的情况下,内核便使用Boot Memory分配器管理物理内存。Boot Memory分配器使用FFB(First Fit Allocator)算法管理
2011-11-17 20:47:30
1226
翻译 [内核文档]ioctl 命令号
[内核文档]ioctl 命令号 如果你要向内核增加新的ioctl函数,需要用到中定义的宏_IO。 1_IOioctl中无参数2_IOWioctl有写参数.(copy_from_user)3_IORioctl有读参数.(copy_to_user
2011-11-08 14:05:05
5357
原创 利用mmap实现用户空间与内核空间的共享内存通信
利用mmap实现用户空间与内核空间的共享内存通信秦白衣Arethe Qinarethe.kernel@gmail.com 用户空间与内核空间的通信方法有很多,如ioctl,procfs,sysfs等。但是,这些方法仅能在用户空间与内核空间之间交互简单的数据。如果要实现大批量数据的传递,最好的方法就是共享内存。利用设备驱动模型中的mmap函数,可以很容易实现一个
2011-11-06 18:15:13
10906
原创 System.map文件简介
System.map文件简介秦白衣Arethe Qinarethe.kernel@gmail.com System.map是内核使用的符号表,关联了符号的名称以及它们在内存中的地址。符号名称是指内核中变量或函数的名字。当我们需要根据符号名称查找其地址,或者查找某个地址上的符号名称时,就需要用到System.map了。特别是在调试kernel panics与ke
2011-11-05 20:19:56
1607
翻译 [内核文档]RCU相关概念
RCU Concepts The basic idea behind RCU (read-copyupdate) is to split destructive operations into two parts, one that preventsanyone from seeing the data item being destroyed, and one that actua
2011-11-04 17:36:30
2647
原创 SMI对实时性的影响
SMI对实时性的影响系统管理中断(SMI)用来提供扩展功能,如仿真老式的硬件设备。也可以利用它们实现某些系统管理。类似于NMI,SMI也使用硬连线直接向CPU发信号,而且也不能被屏蔽。CPU收到SMI信号后,将进入系统管理模式(SMM:System Management Mode
2011-07-06 20:49:16
1673
原创 [内核文档]使用Linux内核的追踪点[Tracepoint]
<br /><br />本文档介绍了Linux内核中的追踪点及其使用方法。文档中提供的例子详细说明了如何在内核中插入追踪点,如何将探测函数与追踪点联系起来。同时也提供了一些探测函数的例子。<br /> <br />Ø 追踪点的目的<br />代码中的追踪点提供了在运行时调用探测函数的钩子。追踪点可以打开(已连接探测函数)或关闭(没有连接探测函数)。处于关闭状态的追踪点不会引发任何效果,除了增加了一点时间开销(检查一条分支语句的条件)和空间开销(在instrumented function[不知道如何翻译合
2011-04-01 10:11:00
11651
原创 [内核文档]IO-Mapping
<br /><br />IO-Mapping<br /> <br /> Linux/io-mapping文件中提供的io映射抽象接口,可以将设备上的小空间有效地映射到处理器。io映射最初用来在32位处理器上支持大的显存,在这种情况下,由于显存太大,不能直接使用ioremap_wc将整个显存静态映射到处理器,因为这样会消耗过大的内核地址空间。<br /> 在驱动程序初始化时,可以使用下面的函数创建一个映射对象(mapping object):<br />struct io_ma
2011-03-22 15:55:00
4139
原创 [内核文档]MTRR (Memory Type Range Register) 控制
<br /><br />MTRR (Memory Type Range Register) control<br /> <br /> 在Intel P6系列的处理器上(Pentium Pro, Pentium II and later),内存类型范围寄存器(MTRRs)可以控制处理器对内存区域的访问。如果系统中存在基于PCI或AGP总线的视频卡(VGA),MTRR将具有非常显著的作用。通过使能写捆绑(Write-combining),可以在总线传输开始前,将若干个总线写传输捆绑成一次较大的写
2011-03-14 15:30:00
8197
原创 [内核文档] PAT(页面属性表Page Attribute Table)
<br /><br />PAT(页面属性表Page Attribute Table)<br /> <br /> X86的页面属性表(PAT)能够在页面级的粒度上设置内存属性。PAT是对MTRR的补充,通过MTRR可以为物理地址区域设置内存类型。但是PAT比MTRR更灵活,因为它可以在页面级别设置属性,而且硬件上也不限制属性设置的数量。PAT相当灵活,即使多个虚拟内存地址映射到同一个物理内存地址,也不会引起内存类型的冲突。<br /> 通过PAT能够设置多种类型的内存属性,其中
2011-03-10 20:30:00
9584
翻译 Pentium4 性能监测单元
<br /><br /> <br /> <br />翻译:秦白衣 <br />Qinchenggang@sict.ac.cn<br />欢迎读到此文而有疑问的朋友来信探讨。<br /> <br /> IntelPentium4的性能监测功能克服了之前处理器中发现的很多限制和问题。Pentium 4 Xeon处理器的性能监测单元支持多线程。<br /> 大多数现代高性能处理器都具有能够监测性能的片上硬件单元。这种硬件单元通常包括事件探测器(Event Detector)
2011-01-18 20:46:00
2411
1
原创 up()&down()
<br /><br />Linux中针对信号量的两个基本操作是down()和up()。down()用来申请一个信号量,如果没有更多的任务可以获取此信号量,申请任务便会睡眠,直到此信号量被释放。<br />up()用来释放一个信号量,与mutex不同,up()可以在任何上下文中调用,也可以被从来没有调用过down()的任务调用。
2010-12-16 17:31:00
1407
原创 might_sleep()
<br /><br />might_sleep():指示当前函数可以睡眠。如果它所在的函数处于原子上下文(atomic context)中(如,spinlock, irq-handler…),将打印出堆栈的回溯信息。这个函数主要用来做调试工作,在你不确定不期望睡眠的地方是否真的不会睡眠时,就把这个宏加进去。
2010-12-16 10:22:00
8869
原创 Linux是如何获知处理器数量的
<br /><br />Linux是如何获知处理器数量的<br /> <br /> Linux对SMP的支持已经相当成熟了。在配置SMP时,需要MP Spec的支持,本文简略的描述下,Linux是如何通过MP Spec获知CPU数量的。<br />setup_arch()->get_smp_config()->__get_smp_config(0)->check_physptr()->smp_read_mpc()->MP_processor_info()->generic_processor
2010-12-14 17:03:00
1210
原创 Linux内核对CPU热插拔的支持
<br /><br />CPU hotplug Supportin Linux(tm) Kernel<br /> <br /> Maintainers:<br /> CPUHotplug Core:<br /> RustyRussell <rusty@rustcorp.com.au><br /> SrivatsaV
2010-12-13 21:03:00
15630
2
原创 Freezing of tasks [Kernel Documents]
<br /><br />Freezingof tasks<br />(C)2007 Rafael J. Wysocki <rjw@sisk.pl>, GPL<br />翻译: Arethe Qin<br /> <br />I. 什么是任务冷冻?<br />任务冷冻是一种在系统休眠或者系统挂起期间控制用户空间进程和一些内核线程的机制。<br />II. 它是如何工作的?<br />每个任务都有4个标志用于任务冷
2010-12-11 11:45:00
8952
原创 Linux NMI Watchdog Timer简介
<br />Linux NMI Watchdog Timer简介:内核中的看门狗,每隔一段时间便产生一个NMI中断,用以监测在这段时间内是否有中断发生。如果没有,则说明系统进入了异常状态,在死锁中屏蔽了中断。此时,则终止当前的任务。否则什么也不做。<br /> <br />用惯了QQ的微博,强烈建议CSDN也开发一款方便的微博。
2010-10-28 20:46:00
5942
原创 Integrity Real-time Operating System
<br />Integrity Real-time Operating System<br /> http://www.ghs.com/products/rtos/integrity.html<br />INTEGRITY RTOS是Green Hills Software公司推出的一款实时操作系统,该系统具有如下特点:<br />1 最优的性能、安全性和可靠性<br />2 整合了丰富的中间件与平台 (Platform)<br />3 保
2010-10-26 18:35:00
4364
原创 指针雕镂(Pointer-chasing)程序
指针雕镂(Pointer-chasing)程序:该程序中会遍历一个由指针链在一起的数据结构,即一个链表。但是在遍历的过程中会不断的引起内存操作。因为下一个元素总不在Cache中。参考文献:Multi-Chain Prefetching: Effective Exploitation of Inter-Chain Memory Parallelism for Pointer-Chasing Codes
2010-10-24 16:28:00
4983
2
原创 list_head双向链表的删除问题
<br />下面的程序,目的是遍历一条链表,逐条的删除没一个节点。<br />[code]<br /> struct list_head *listp;<br /> struct arethe* arethep;<br /><br /> list_for_each(listp, arethe_list)<br /> { <br /> arethep = list_entry(listp, struct
2010-10-20 09:28:00
2434
转载 内核转储(core dump)kdump[转载]
kdump实验环境:client OS: Red Hat Enterprise Linux 5 update 2client IP: 10.66.0.157server OS: Red Hat Enterprise Linux 4 update 7server IP: 10.66.0.84kdump属于kexec-tools-1.102pre-21.el
2009-10-27 20:40:00
6397
1
原创 [转]linux发展史
"Hello everybody out there using minix——Im doing a (free) operating system"在1991年的八月,网络上出现了一篇以此为开篇话语的帖子——这是一个芬兰的名为Linus Torvalds的大学生为自己开始写作一个类似minix,可运行在386上的操作系统寻找志同道合的合作伙伴。1991年10月5日,Linus Torv
2009-08-23 21:59:00
677
原创 [转]龙芯上内核开发、调试和优化小结
作者: falcon 发表日期: 2009-03-31 16:14 复制链接 by falcon 2009-03-31 [差点就要长篇大论(用E文写了大概要两个section了),想了想,还是直接从weekreport里头copy过来,整理一下得了!] 最近移植了Linux的实时扩展补丁RT_P
2009-05-19 13:55:00
4071
1
转载 BIOS 中断
INTAH功能调用参数返回参数100设置显示方式 AL=00 40×25黑白方式AL=01 40×25彩色方式AL=02 80×25黑白方式AL=03 80×25彩色方式AL=04 320×200彩色图形方式AL=05 320×200黑白图形方式AL=06 320×200黑白图形方式AL=07 80
2009-05-12 14:44:00
640
原创 Linux内核中task_struct的中文介绍(2.4内核的)[转]
来源: ChinaUnix博客 日期:2008.01.23 20:30 (共有0条评论) 我要评论 1. 调度数据成员(1) volatile long states;表示进程的当前状态:? TASK_RUNNING:正在运行或在就绪队列run-queue中准备
2009-04-20 15:04:00
1753
原创 printk 工作原理
========================================================v0.1 3.4.2009 by arethe Email: qinchenggang@sict.ac.cn======================================================== printk()的参数个数是可变的,linu
2009-03-09 19:59:00
9208
1
转载 Linux启动时间的极限优化
作者: Maco 该文章转载自网络大本营:http://xrss.cn/Info/13420.Html在上次完成嵌入式应用的Linux裁减后,Linux的启动时间仍需要 7s 左右,虽然勉强可以接受,但仍然没有达到我个人所追求的目标——2s以内。况且,在实际的商用环境中,设备可靠性的要求可是“5个9”(99.999%,即OOS时间低于5分钟/年),这就意味着每减少一秒钟Linux启
2009-03-04 09:56:00
1510
原创 内核参数: vga[转载]
内核参数: vga 最后编辑:Chenxing 于2007年8月2日 (星期四) 14:50 出自Linux Wiki Template:内核参数简介vga参数将启用framebuffer,其值控制着控制台终端的分辨率。vga=ask表示启动时询问vga的值,其它数值的含义如下(第一列为颜色数,第一行为分辨率,绿色为常取的值,两
2008-06-25 15:49:00
1228
原创 C语言:内存字节对齐详解[转载]
一、什么是对齐,以及为什么要对齐:1. 现代计算机中内存空间都是按照byte划分的,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始,但实际情况是在访问特定变量的时候经常在特定的内存地址访问,这就需要各类型数据按照一定的规则在空间上排列,而不是顺序的一个接一个的排放,这就是对齐。2. 对齐的作用和原因:各个硬件平台对存储空间的处理上有很大的不同。一些平台对某些特定类型的数据只能从某些特定地址
2008-06-15 09:09:00
26269
24
原创 Linux对I/O端口资源的管理(转载)
摘要 本文主要从内核实现的角度分析Linux 2.4.0内核IO子系统中对IO端口资源的管理的实现原理。本文是为那些想要深入分析Linux的IO子系统的读者和设备驱动程序开发人员而写的。(2002-10-08 14:14:05) By 阿开 Copyright © 2002 by 詹荣开 E-mail:zhanrk@sohu.com Linux-2.4.0 Ve
2008-06-08 20:23:00
1544
原创 内核配置中和U盘相关的若干选项
1. Bus optionsSupport for hot-pluggable devices (CONFIG_HOTPLUG) 2. Device driversSCSI device support SCSI device support (CONFIG_SCSI scsi_mod) legacy /proc/scsi support (CONFIG_SCSI_PROC_FS) SCSI d
2008-05-13 15:23:00
1907
1
原创 对/proc编程的一点总结(转载)
类似于驱动程序的开发,注册/proc文件也需要初始化一个数据结构:struct proc_dir_entry然后调用static inline struct proc_dir_entry *create_proc_entry(const char *name, mode_t mode, struct proc_dir_entry *parent) 函数注册proc文件,在卸载模块时,调用
2008-01-22 21:26:00
1118
原创 读研一个月
开始我的研究生生活已经一个月了,总体的感受就是“累”。由于是跨专业的,又想有点作为,所以功夫还是要下地。自从踏入这所大学的门,我就感受到了紧张的气氛,校园里几乎没有什么人,这和普通大学里出双入对,游山玩水的场面出入颇大 。当时猜测这里的学生可能都躲到实验室和教室去了,后来证明果不其然,我自己就过上了“教室——图书馆——宿舍”这种三点一线的日子。每天疲于奔命,却也过的充实。
2006-10-05 16:18:00
1242
2
Pentium4处理器的性能监测单元
2011-01-18
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人