- 博客(20)
- 资源 (6)
- 收藏
- 关注
原创 关于jffs2文件系统如何掉电保护
因为jffs2文件系统可以掉电保护,看了下大概原理,原因:它提供的垃圾回收机制,使得我们不需要马上对擦写越界的块进行擦写,而只需要将其设置一个标志,标明为脏块。当可用的块数不足时,垃圾回收机制才开始回收这些节点。同时,由于JFFS2基于日志结构,在意外掉电后仍然可以保持数据的完整性,而不会丢失数据。JFFS2是将节点信息保存在内存中Flash上日志型文件系统的资料,了解到传统的基于闪存转换层(FLT)的文件系统存在的主要问题:1. 效率低。因为每次都要把要修改的数据所在擦写块放入内存,产生了
2010-06-30 23:15:00 4503
原创 关于时钟(2)以及定时器精度问题
<br />在应用层,使用timeout是做不到延迟微秒级别,甚至在很多架构上,连ms都做不多,为什么这样说,线索如下:<br /><br /><br /> timeout = ROUND_UP(usec, 1000000/HZ);<br /> timeout += sec * (unsigned long) HZ;<br /><br /><br />#define ROUND_UP(x,y) (((x)+(y)-1)/(y)),这里假设sec为0。<br /
2010-06-26 11:21:00 1753
原创 关于时钟(1)
最近工作中,同事问我,linux如何实现us的delay,认为:x86的hz定义为100,所以具体时间间隔应该是(1000ms/HZ)=10ms,然后调度的时候是以这个10ms为单位,实现不了微秒的delay。关于这个问题,我们要首先了解linux的时钟:时钟的硬件如下:RTC(real time clock):一种时钟芯片,pc掉电后,继续工作,保持时间I/0端口: 0x70 寄存器地址索引端口 0x71 数据端口Linux内核对RTC的唯一用途就是把RTC用作“离线”或“后台”的时间与日期维
2010-06-25 21:44:00 927
转载 linux的调度分析(转)
<br />调度<br /><br />公平调度(fair-share scheduling)的进程调度算法:<br /><br />一、公平分享的调度策略<br /> Linux 的调度算法是相对独立的一个模块,而且较容易理解。因此很多系统高手都爱对调度算法做改进。但是可以说调度器是一个非常神秘,难以捉摸的精灵。可能通过改变一个关键参数你就可以大大提高系统的效率。<br /> 对于一般进程,CPU的使用时间都是系统平均分配给每一个进程的,因此这种公平分享都是从进程的角度出发的。Bach在1986
2010-06-22 14:30:00 3349
原创 数据包的分类收--通过socket
<br />关于如何收数据包:<br />1. socket(AF_INET, SOCK_RAW, IPPROTO_UDP);<br />能:该套接字可以接收协议类型为(tcp udp icmp等)发往本机的ip数据包,从上面看的就是20+8+100.<br />不能:不能收到非发往本地ip的数据包(ip软过滤会丢弃这些不是发往本机ip的数据包).<br />不能:不能收到从本机发送出去的数据包.<br />发送的话需要自己组织tcp udp icmp等头部.可以setsockopt来自
2010-06-15 11:41:00 1802
转载 linux内核ip分片函数ip_fragment解析(转贴)
int ip_fragment(struct sk_buff *skb, int (*output)(struct sk_buff *)) { struct iphdr *iph; int raw = 0; int ptr; struct net_device *dev; struct sk_buff *skb2; unsigned int mtu, hlen, left, len, ll_rs, pad; int offset;
2010-06-14 17:34:00 1986
原创 life小语10
人非得走过夜晚,否则无法抵达黎明。 --纪伯伦:《沙与泡沫》ps:这句话太容易明白和认同,但也很容易在关键的时候被忘记。 真的,很多时候,我们只需要,再坚持一下,就可以看见曙光。
2010-06-12 11:59:00 1064
原创 life小语9
我们忙于思考人生意义的时候,往往淡漠了每一件小事的意义。<br /><br /> --《士兵》<br /><br />ps:《士兵突击》的原著小说
2010-06-12 11:56:00 1124
原创 life小语8
“许多人都不能根据现实生活随时调整自己,而生活往往比我们设想的更丰富<br />和复杂。不能及时去调整,也就无法学习。要想真正地学习和成长,我们就必须去<br />遵守现实的规则。”
2010-06-12 11:37:00 979
原创 重读页面的回收处理笔记2
在跟踪代码的过程中,我们可以看到alloc-page就是分配一个page。我们在接着看代码:函数:__alloc_pages_internal,我们可以看到注释:/* * This is the 'heart' of the zoned buddy allocator. */从上面知道这个函数的地位了。首先会去唤醒kswapd的内核线成。wakeup_kswapd。接着:unsigned long try_to_free_pages(struct zonelist *zonelist, int or
2010-06-11 16:56:00 1449
原创 重读页面的回收处理笔记1
<br />除了slab分配器,系统中所有正在使用的页面都存放在页面高速缓存中,并且通过page结构体的lru链表在一起,<br />所以很容易去扫描并替换他们。slab页面没有放在page cache中。<br />对于每一个zone:都有下面几个参数<br /> struct list_head active_list;<br /> struct list_head inactive_list;<br /> unsigned long nr_scan_
2010-06-11 16:25:00 839
原创 oabi/eabi
ABI(Application Binary Interface)或EABI(Extend ABI)通常是处理器体系结构的一部分,它与平台是紧密相连的。 我们可以把ABI理解为一套规则,这套规则一般包括定义了以下内容: 1。应用程序如何发出系统调用来trap到内核态。 2。如何使用机器的寄存器。比如,RISC处理器的ABI就要规定用那个通用寄存器来作stack pointer和frame pointer。 3。规定如何进行procedure call。 那么eabi和oabi
2010-06-10 18:24:00 3818
原创 kdump如何转储原理分析
<br />关于kdump如何设置,可以看其他的文章。<br />他的实现原理其实很简单,详细代码可以看linux-2.6.16/fs/proc/vmcore.c<br /><br />通过kexec启动新的内核,因为在第一个内核(也就是crash掉的kernel)在设置kdump的时候,<br />通过配置文件,分了一部分内存给新的内核做启动用,这部分内存在crash的kernel是不会用到。<br />在重起的过程中,因为没有断电,所以在内存中保存了crash时候的数据信息,在新kernel启动的时候,
2010-06-10 17:38:00 3821
转载 Kdump如何配置
<br />kexec是一个快速启动机制,允许通过已经运行的内核的上下文启动一个Linux内核,不需要经过BIOS。BIOS可能会消耗很多时间,特别是带有众多数量的外设的大型服务器。这种办法可以为经常启动机器的开发者节省很多时间。<br />kdump是一个新的,而且非常可信赖的内核崩溃转储机制。崩溃转储数据可以从一个新启动的内核的上下文中获取,而不是从已经崩溃的内核的上下文。当系统崩溃时,kdump使用kexec启动到第二个内核。第二个内核通常叫做捕获内核(capturekernel),以很小内存
2010-06-10 16:20:00 23431
转载 kdump的出现(基于嵌入式Linux的内核错误跟踪技术)
<br /> 随着嵌入式Linux系统的广泛应用,对系统的可靠性提出了更高的要求,尤其是涉及到生命财产等重要领域,要求系统达到安全完整性等级3级以上[1],故障率(每小时出现危险故障的可能性)为10-7以下,相当于系统的平均故障间隔时间(MTBF)至少要达到1141年以上,因此提高系统可靠性已成为一项艰巨的任务。对某公司在工业领域14 878个控制器系统的应用调查表明,从2004年初到2007年9月底,随着硬软件的不断改进,根据错误报告统计的故障率已降低到2004年的五分之一以下,但查找错误的时
2010-06-10 16:19:00 4374
转载 kdump转储的内核实现(转)
<br />先转几篇文章,然后仔细去分析分析。<br /> <br />前面一篇文章介绍了kexec和kdump的思想,本文着重讲它们的另一个方面,就是kdump到底是如何转储垮掉内核的内存映像的。首先定义一个链表,它很重要。<br />static LIST_HEAD(vmcore_list);<br />unsigned long long elfcorehdr_addr = ELFCORE_ADDR_MAX; //一个重要变量记录内核装载的位置,用以判断是正常启动还是kdump启动。<br />str
2010-06-10 16:10:00 1692
转载 使用 kexec 快速重启 Linux(转)
<br />Hariprasad Nellitheertha (nharipra@in.ibm.com), 软件工程师, IBM India Software Labs<br />2004 年 5 月 01 日即使您的工作不要求您每天多次重新启动您的 Linux 机器,等待系统启动也实在是一件枯燥的事情。因而有了 kexec。本质上讲,kexec是一个让您可以重新启动到一个新 Linux 内核的快速重新引导功能部件 --不必通过引导装载程序。更快速的重新启动即使对于正常运行时间并不是
2010-06-10 15:55:00 1948
转载 ABI/EABI/OABI
ABI/EABI/OABI <br />(..............................)<br />Terminology<br /><br />Strictlyspeaking,both the old and new ARM ABIs are subsets of the ARM EABIspecification, but in everyday usage the term "EABI" is used to meanthe new one descr
2010-06-10 11:12:00 975 2
转载 EABI (Extended Application Binary Interface)
<br />下面的代码大家可以在entry-common.S中找到。<br /><br />在2.6.21中,认真研究大家会发现,你回避不了这样一个概念,EABI是什么东西?<br /><br />内核里面谈EABI,OABI,其实相对于系统调用的方式,当然我们所说的系统限于arm系统。<br />EABI (Extended ABI),说的是这样的一种新的系统调用方式<br /><br />mov r7, #num<br />swi 0x0<br /><br />原来的系统调用方式
2010-06-10 11:11:00 619
原创 最近空闲时间安排
<br />最近有空的时候需要去研究的东西<br /><br /><br />1:研究kernel的方式 kdump <br />2:ABI/EABI/OABI <br /><br /><br />最近被别人问到swappiness<br />实在很让人抱歉,自己平时研究过内存管理,但是从来,也没有去注意到这个变量。<br /><br /><br />wappiness的值的大小对如何使用swap分区是有着很大的联系的。swappiness=0的时候表示最大限度使用物理内存,然后才是swap空间,swa
2010-06-10 11:08:00 1170 3
ARM MMU详细图解.pdf
2009-07-03
elf文件格式分段详细分析
2009-03-18
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人