自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(94)
  • 资源 (2)
  • 收藏
  • 关注

转载 [转]U_boot 的 bootcmd 和bootargs参数详解

转自 :http://linux.chinaunix.net/bbs/archiver/tid-1111568.html    U-boot的环境变量值得注意的有两个: bootcmd 和bootargs。u-bootcmd    前面有说过bootcmd是自动启动时

2011-10-03 21:14:50 609

原创 调度算法

<!-- @page { margin: 2cm } P { margin-bottom: 0.21cm } --> 早期Linux版本中的调度算法非常简单易懂;在每次进程切换时,内核扫描可运行进程的链表,计算进程的优先级,然后选择”最佳”进程来运行。这个算法的主要缺

2011-07-16 10:41:26 792

原创 进程调度

<!-- @page { margin: 2cm } P { margin-bottom: 0.21cm } --> Linux与任何分时系统一样,通过一个进程到另一个进程的快速切换,达到表面上看来多个进程同时执行的神奇效果。进程切换本身已在第三章中讨论过,本章讨论进

2011-07-16 10:05:27 1017

原创 软定时器和延迟函数

<!-- @page { margin: 2cm } P { margin-bottom: 0.21cm } --> 定时器是一种软件功能,即允许在将来的某个时刻,函数在给定的时间间隔用完被调用。超时表示与定时器相关的时间间隔已经用完的那个时刻。内核和进程广泛使用定时

2011-07-15 14:51:33 3281

原创 更新系统统计数

<!-- @page { margin: 2cm } P { margin-bottom: 0.21cm } --> 更新时间和日期用户程序从xtime变量中获得当前时间和日期。内核必须周期性地更新该变量,才能使它的值保持相当的精确。全局时钟中断处理程序调用updat

2011-07-15 14:50:45 1305

原创 单处理器系统上的计时体系结构

<!-- @page { margin: 2cm } P { margin-bottom: 0.21cm } --> 在单处理器系统上,所有与定时有关的活动都是由IRQ线0上的可编程间隔定时器产生的中断触发的。同样,在Linux中,某些活动都尽可能在中断产生后立即执行

2011-07-15 14:49:03 1005

原创 Linux 计时体系结构

<!-- @page { margin: 2cm } P { margin-bottom: 0.21cm } --> Linux必定执行与定时相关的操作。例如,内核周期性地:更新自系统启动以来所经过的时间。更新时间和日期。确定当前进程在每CPU上已经运行了多长时间,如

2011-07-15 14:47:35 1278 1

原创 避免竞争条件的实例

<!-- @page { margin: 2cm } P { margin-bottom: 0.21cm } --> 人们总是期望内核开发者确定和解决由内核控制路径的交错执行所引起的同步问题。但是,避免竞争条件是一项艰巨的任务,因为这需要对内核的各个成分如何相互作用有

2011-07-14 16:50:10 1174

原创 对内核数据结构的同步访问

<!-- @page { margin: 2cm } P { margin-bottom: 0.21cm } --> 可以使用前面所述的同步原语保护共享数据结构避免竞争条件。当然,系统性能可能随所选择同步原语种类的不同而有很大变化。通常情况下,内核开发者采用下述由经验

2011-07-14 16:49:34 792

原创 补充原主和禁止中断

<!-- @page { margin: 2cm } P { margin-bottom: 0.21cm } --> 补充原语Linux2.6还使用了另一种类似于信号量的原语:补充。引入这种原语是为了解决多处理器系统上发生的一种微妙的竞争条件,当进程A分配了一个临时信

2011-07-14 16:48:43 844

原创 信号量

<!-- @page { margin: 2cm } P { margin-bottom: 0.21cm } --> 我们在第一章”同步和临界区”一节引入了信号量。从本质上说,它们实现了一个加锁原语,即让等待者睡眠,直到等待的资源变为空闲。实际上,Linux提供两种信

2011-07-14 13:50:20 855

原创 自旋锁

<!-- @page { margin: 2cm } P { margin-bottom: 0.21cm } --> 一种广泛应用的同步技术是加锁。当内核控制路径必须访问共享数据结构或进入临界区时,就需要为自己获取一把”锁”。由锁机制保护的资源非常类似于限制于房间内的

2011-07-14 10:33:25 1145

原创 原子操作和内存屏障

若干汇编语言指令具有”读—修改—写”类型----也就是说,它们访问存储器单元两次,第一次读原值,第二次写新值。假定运行在两个CPU上的两个内核控制路径试图通过执行非原子操作来同时” 读—修改—写”同一存储器单元。首先,两个CPU都试图读同一单元,但是存储器仲裁器插入,只允许其中的

2011-07-14 07:27:51 2427

原创 同步原语

现在我们考察一下在避免共享数据之间的竞争条件时,内核控制路径是如何交错执行的。表5-2列出了Linux内核使用的同步技术。”适用范围”一栏表示同步技术适用于系统中的所有CPU还是单个CPU。例如,本地中断的禁止只适用于一个CPU;相反原子操作影响系统中的所有CPU。现在,让我们简

2011-07-13 22:30:56 1581

原创 从中断和异常返回

<!-- @page { margin: 2cm } P { margin-bottom: 0.21cm } --> 我们通过考察中断和异常处理程序的终止阶段来结束本章。尽管终止阶段的主要目的很清楚,即恢复某个程序的执行;但是,在这样做之间,还需要考虑几个问题:内核控

2011-07-13 13:20:22 1893

原创 软中断及tasklet

<!-- @page { margin: 2cm } P { margin-bottom: 0.21cm } --> 我们前面在”中断处理”一节提到,在由内核执行的几个任务之间有些不是紧急的的;在必要情况下它们可以廷迟一段时间。回忆一下,一个中断处理程序的几个中断服务

2011-07-13 13:19:27 2771

原创 中断处理

<!-- @page { margin: 2cm } P { margin-bottom: 0.21cm } --> 正如前面解释的那样,内核只要给引起异常的进程发送一个Unix信号就能处理大多数异常。因此,要采取的行动被廷迟,直到进程接收到这个信号。所以,内核能很快

2011-07-12 17:15:57 1723

原创 异常处理

<!-- @page { margin: 2cm } P { margin-bottom: 0.21cm } --> CPU产生的大部分异常都是由Linux解释为出错条件。当其中一个异常发生时,内核就向引起异常的进程发送一个信号向它通知一个反常条件。例如,如果进程执行

2011-07-12 10:48:20 1019

原创 初始化中断描述表

<!-- @page { margin: 2cm } P { margin-bottom: 0.21cm } --> 现在,我们知道了80x86微处理器在硬件级对中断和异常做了些什么,接下来,我们可以继续描述如何初始化中断描述表。内核启用中断以前,必须把IDT表的初始

2011-07-12 10:47:43 866

原创 中断和异常处理程序的嵌套执行

<!-- @page { margin: 2cm } P { margin-bottom: 0.21cm } --> 每个中断或异常都会引起一个内核控制路径,或者说代表当前进程在内核态执行单独的指令序列。例如:当I/O设备发出一个中断时,相应的内核控制路径的第一部分指

2011-07-12 10:46:03 3355

原创 中断描述符表

中断描述表是一个系统表,它与每一个中断或异常向量相联系,每一个向量在表中有相应的中断或异常处理程序的入口地址。内核在允许中断发生前,必须适当地初始化IDT。在第二章中,我们介绍了GDT和LDT,IDT的格式与这两种表的格式非常相似,表中的每一项对应一个中断或异常微量,每个向量由8

2011-07-12 07:24:07 3637

原创 中断和异常

中断通常被定义为一个事件,该事件改变处理器执行的指令顺序。这样的事件与CPU芯片内外部硬件电路产生的电信号相对应。中断通常分为同步中断和异步中断:(1)    同步中断是当指令执行时由CPU控制单元产生的,之所以称为同步,是因为只有在一条指令终止执行后CPU才会发出中断。(2)

2011-07-11 22:16:24 1724

原创 中断和异常

中断通常被定义为一个事件,该事件改变处理器执行的指令顺序。这样的事件与CPU芯片内外部硬件电路产生的电信号相对应。中断通常分为同步中断和异步中断:(1)    同步中断是当指令执行时由CPU控制单元产生的,之所以称为同步,是因为只有在一条指令终止执行后CPU才会发出中断。(2)

2011-07-11 22:14:25 558

原创 中断和异常

中断通常被定义为一个事件,该事件改变处理器执行的指令顺序。这样的事件与CPU芯片内外部硬件电路产生的电信号相对应。中断通常分为同步中断和异步中断:(1)    同步中断是当指令执行时由CPU控制单元产生的,之所以称为同步,是因为只有在一条指令终止执行后CPU才会发出中断。(2)

2011-07-11 21:59:21 693

原创 撤消进程

<!-- @page { margin: 2cm } P { margin-bottom: 0.21cm } --> 很多进程终止了它们本该执行的代码,从这种意义上说,这些进程“死”了。当这种情况发生是,必须通知内核以便内核释放进程所拥有的资源,包括内存,打开文件及其

2011-07-11 17:32:58 828

原创 创建进程

<!-- @page { margin: 2cm } P { margin-bottom: 0.21cm } --> Unix操作系统紧紧依赖进程创建来满足用户的需求。例如,只要用户输入一条命令,shell进程就创建一个新进程,新进程执行shell的另一个拷贝。传统的

2011-07-11 14:10:52 2050

原创 进程切换

<!-- @page { margin: 2cm } P { margin-bottom: 0.21cm } --> 为了控制进程的执行,内核必须有能力挂起正在CPU上运行的进程,并恢复以前挂起的某个进程的执行。这种行为被称为进程切换,任务切换或上下文切换。下面几节描

2011-07-11 09:09:08 6400

原创 进程

<!-- @page { margin: 2cm } P { margin-bottom: 0.21cm } --> 第三章进程进程是任何多道程序设计的操作系统中的基本概念。通常把进程定义为程序执行的一个实例,因此,如果16个用户同时运行vi,那么就有16个独立的进程

2011-07-09 15:06:19 1027

原创 内存寻址

<!-- @page { margin: 2cm } P { margin-bottom: 0.21cm } --> 内存寻址内存地址使用用80x86微处理器时,必須区分以下三种不同的地址逻辑地址包含在机器语言指令中用来指定一个操作数或一条指令的地址。这种寻址有80x

2011-07-07 14:39:55 4360

原创 绪论

<!-- @page { margin: 2cm } P { margin-bottom: 0.21cm } --> Unix内核概述Unix内核提供了应用程序可以运行的执行环境。因此,内核必须实现一组及相应的接口。应用程序使用这些接口,而且通常不

2011-07-06 14:56:58 760

转载 一些创业的心得,希望对其他创业者有帮助

<br />http://blog.sina.com.cn/s/blog_659299720100oyd6.html?tj=1<br />总结一下以前的经验教训,有几个地方希望其他创业者也能够重视起来。<br />1、降低期望、提高满意、绝不过度承诺。 创业者容易对股东、对员工、对用户过高承诺,不如反过来,谨慎承诺,给大家一个惊喜。<br /> <br />2、相信自己,别人不见得比自己更聪明。创业者容易迷信外来的高手,往往以为自己在某些方面总是不如别人的,这些方面就放手让别人去做。其实还是需要创业者关注非

2011-03-27 20:44:00 696

转载 NAND Flash--嵌入式NAND Flash读写技术

<br />原文地址  http://blogold.chinaunix.net/u2/72003/showart_1931513.html<br />NAND Flash控制器<br /> S3C2410板的Nand Flash支持由两部分组成:Nand Flash控制器(集成在S3C2410 CPU)和Nand Flash存储芯片(K9F1208U0B)两部分组成。当要访问Nand Flash中的数据时,必须通过Nand Flash控制器发送命令才能完成。所以Nand Flash相当于S3C2410的一

2011-03-17 19:17:00 849

转载 arm 嵌入式LINUX启动过程(2)[转]

<br />一位大师级的人物写的,不看要后悔的哟!!<br /><br />接上贴<br /><br /><br />如果以为到了c代码可以松一口气的话,就大错特措了,linux的c也不比汇编好懂多少,相反到掩盖了汇编的一些和机器相关的部分,有时候更难懂。其实作为编写操作系统的c代码,只不过是汇编的另一种写法,和机器代码的联系是很紧密的。 <br /><br /><br /><br />start_kernel在 /linux/init/main.c中定义: <br /><br /><br />asmlin

2010-12-31 11:04:00 464

转载 arm 嵌入式LINUX启动过程(1)[转]

<br />一位大师级的人物写的,不看要后悔的哟!!<br />                             LINUX启动过程<br /><br /><br /><br />首先,porting linux的时候要规划内存影像,如小弟的系统有64m SDRAM, <br />地址从0x 0800 0000 -0x0bff ffff,32m flash,地址从0x0c00 0000-0x0dff ffff. <br />规划如下:bootloader, linux kernel, rootdis

2010-12-31 11:03:00 521

转载 Linux系统引导过程详解

<br />计算机在启动时都是先加电,然后进行硬件检测并引导操作系统的初始化程序,然后操作系统的初始化程序程负责读入系统内核并建产系统的运行环境.一这过程相对来说比较复而且与CPU体系结构相关,这里我们通过linux并以i386的体系结构对这一过程进行较为详细的说明. <br />一、硬件检测 <br />当机器加电后它首先执行BIOS(基本输入输出系统)中的代码,BIOS首先执行加电自检程序(POST),当自检通过程便完成了硬件的启动。POST程序通过对内存及其他硬件的设备的诊断检测确定硬件的存在并可正确

2010-12-31 10:50:00 765

原创 我的人生经历(献给有强迫症和计算机嵌入式迷茫的人)

<br />      一直很想记录一下自己的人生经历,一直不想写,今天有个时间,也快要进入2011年了,自己也快进入而立之年,感觉现在还是一事无成,闲话不说了,现在开始记录.<br />                                                                           小学篇<br />      6岁开始上学,学前班,天天搬个小板凳,坐在最后的角落的,最好的一次数学成绩考了个100分,学前班成绩比较好,小学一年级成绩中等,天天是混着过日子

2010-12-30 19:43:00 911

转载 linux启动时挂载根文件系统的过程[转]

转载地址:http://blog.21ic.com/user1/2216/archives/2006/25028.html<br />一直对linux启动时挂载根文件系统的过程存在着很多疑问,今天在水木精华区找到了有用的资料,摘录如下:<br />1。linux启动时,经过一系列初始化之后,需要mount 根文件系统,为最后运行init进程等做准备,mount 根文件系统有这么几种方式:<br />1)文件系统已经存在于硬盘(或者类似的设备)的某个分区上了,kernel根据启动的命令行参数(root=/de

2010-12-28 10:11:00 1014 1

转载 nand flash结构以及读写分析——写的比较经典

<br />NAND Flash 的数据是以bit 的方式保存在memory cell,一般来说,一个cell 中只能存储一个bit。这些cell 以8 个或者16 个为单位,连成bit line,形成所谓的byte(x8)/word(x16),这就是NAND Device 的位宽。这些Line 会再组成Page.<br />(Nand Flash 有多种结构,我使用的Nand Flash 是K9F1208,下面内容针对三星的K9F1208U0M),每页528Byte,每32 个page 形成一个Block

2010-12-27 17:55:00 778

转载 copy_to_user与mmap的工作原理

<br />copy_to_user在每次拷贝时需要检测指针的合法性,也就是用户空间的指针所指向的地址的确是一段该进程本身的地址,而不是指向了不属于它的地方,而且每次都会拷贝一次数据,频繁访问内存,由于虚拟地址连续,物理地址不一定会连续,从而造成CPU的CACHE频繁失效,从而使速度降低   <br />  mmap仅在第一次使用时为进程建立页表,也就是将一段物理地址映射到一段虚拟地址上,以后操作时不再检测其地址的合法性(合法性交由CPU页保护异常来做),另一方面是内核下直接操作mmap地址,可以不用频繁拷

2010-12-14 20:21:00 685

原创 一个http请求的详细过程

<br />我们来看当我们在浏览器输入http://www.mycompany.com:8080/mydir/index.html,幕后所发生的一切。<br />首先http是一个应用层的协议,在这个层的协议,只是一种通讯规范,也就是因为双方要进行通讯,大家要事先约定一个规范。<br />1.连接 当我们输入这样一个请求时,首先要建立一个socket连接,因为socket是通过ip和端口建立的,所以之前还有一个DNS解析过程,把www.mycompany.com变成ip,如果url里不包含端口号,则会使用该

2010-12-14 20:05:00 1144

ucos ii - 嵌入式系统 邵贝贝

这本书很不错,值得研究,有空的时候希望大家多看看啊

2010-03-13

C++实践之路和练习

这本书适合有一定C++基础和正在学习C++的员。仔细看啊,一定会有收获的。

2009-02-22

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除