
Linux
文章平均质量分 76
tiangwan2011
这个作者很懒,什么都没留下…
展开
-
Linux内核学习笔记:SMP、UMA、NUMA
1. 概述 SMP称为共享存储型多处理机(Shared Memory mulptiProcessors), 也称为对称型多处理机(Symmetry MultiProcessors)。 共享存储型多处理机有三种模型:均匀存储器存取(Uniform-Memory-Access,简称UMA)模型、非均匀存储器存取(Nonuniform-Memory-Access,简称NUMA)模型和只用转载 2012-02-27 16:31:01 · 13952 阅读 · 0 评论 -
软中断(softirq)机制
Linux的中断宏观分为两种:软中断和硬中断。声明一下,这里的软和硬的意思是指和软件相关以及和硬件相关,而不是软件实现的中断或硬件实现的中断。软中断就是"信号机制"。软中不是软件中断。Linux通过信号来产生对进程的各种中断操作, 在Linux中最多可以注册32个软中断,目前系统用了6个软中断,他们为:定时器处理、SCSI处理、网络收发处理以及Tasklet机制,一般来说,软中断是由内核机制的转载 2012-02-28 10:13:45 · 8511 阅读 · 0 评论 -
linux进程调度介绍
一、Linux新老版本调度器对比在 2.6 版本的内核之前,当很多任务都处于活动状态时,调度器有很明显的限制。这是由于调度器是使用一个复杂度为 O(n) 的算法实现的。在这种调度器中,调度任务所花费的时间是一个系统中任务个数的函数。换而言之,活动的任务越多,调度任务所花费的时间越长。在任务负载非常重时,处理器会因调度消耗掉大量的时间,用于任务本身的时间就非常少了。因此,这个算法缺乏可伸缩性。原创 2012-02-28 15:50:05 · 5934 阅读 · 0 评论 -
S3C2440 LCD驱动详解
环境: 硬件平台 TQ2440 东华3.5 inch TFT LCD linux-2.6.30.4 1. LCD工作的硬件需求: 要使一块LCD正常的显示文字或图像,不仅需要LCD驱动器,而且还需要相应的LCD控制器。在通常情况下,生产厂商把LCD驱动器会以COF/COG的形式与LCD玻璃基转载 2012-05-09 13:57:26 · 2695 阅读 · 1 评论 -
V4L2视频驱动
V4L(video4linux是一些视频系统,视频软件、音频软件的基础,经常时候在需要采集图像的场合,如视频监控,webcam,可视电话,经常使用在embedded linux中是linux嵌入式开发中经常使用的系统接口。它是linux内核提供给用户空间的编程接口,各种的视频和音频设备开发相应的驱动程序后,就可以通过v4l提供的系统API来控制视频和音频设备,也就是说v4l分为两层,底层为音视频设原创 2012-07-05 09:23:21 · 2548 阅读 · 1 评论 -
S3C2440的定时器设置
Linux中宏定义linux/arch/arm/plat-samsung/include/plat/regs-timer.h 92#define S3C2410_TCNTB(tmr) S3C_TIMERREG2(tmr, 0x00) 93#define S3C2410_TCMPB(tmr) S3C_TIMERREG2(tmr, 0x04) 94#define S3转载 2012-04-26 09:41:16 · 3664 阅读 · 0 评论 -
Linux 中断详解
原文地址 http://www.yesky.com/20010813/192117.shtml方法之三:以数据结构为基点,触类旁通 结构化程序设计思想认为:程序 =数据结构 +算法。数据结构体现了整个系统的构架,所以数据结构通常都是代码分析的很好的着手点,对Linux内核分析尤其如此。比如,把进程控制块结构分析清楚 了,就对进程有了基本的把握;再比如,把页目录结构和页表结构弄懂了转载 2012-08-21 15:59:12 · 22545 阅读 · 1 评论 -
framebuffer显示原理、图像RGB数据处理
Framebuffer是把内存中视频数据输出的设备驱动程序,Linux的framebuffer是独立的硬件抽象层,它可以把显示设备抽象为帧缓冲区,并把自己当作显示内存的一个映像,开发者可以通过这个映像映射到进程地址空间,直接进行读写操作。简单的说它把硬件抽象化后,可使上层不再关心硬件是如何操作,只是完成图像的显示功能,该驱动的设备文件一般是/dev/fb0、/dev/fb1,framebuffer原创 2012-08-21 16:06:19 · 8224 阅读 · 0 评论 -
makefile
转自陈皓 (优快云)概述——什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和 professional的程序员,makefile还是要懂。这就好像现在有这么多的HTML的编辑器,但如果你想成为一个专业人士,你还是要了解HTML的标识的含义。特别在Unix下的软件编译,你转载 2012-02-17 14:24:58 · 1455 阅读 · 0 评论 -
中断上下部分
从 linux1.x版本开始,中断处理程序从概念上被分为上半部分(top half)和下半部分(bottom half)。在中断发生时上半部分的处理 过程立即执行,因为它是完全屏蔽中断的,所以要快,否则其它的中断就得不到及时的处理。但是下半部分(如果有的话)几乎做了中断处理程序所有的事情,可以 推迟执行。内核把上半部分和下半部分作为独立的函数来处理,上半部分的功能就是“登记中断”,决定其相关的下半原创 2012-02-13 13:59:01 · 5806 阅读 · 0 评论 -
Boatloader简介
前几天写过关于Firmware的文章,关于自己的论文Bootloader是BSP中的一个重要部分,大家都知道BIOS的功能是引导OS,Bootloader,称为引导加载程序,在嵌入式系统中Bootloader的作用也是引导OS,嵌入式系统中OS的启动过程是(加电启动Bootloader—硬件初始化—软件初始化—加载启动OS),通过Bootloader这段代码可以进行软硬件初始化、简历内存空间的映射原创 2011-11-20 15:45:25 · 1280 阅读 · 0 评论 -
实模式与保护模式
1.实模式寻址 80x86中除8086/8088只能在实模式下工作外,其他微处理器均可在实模式或保护模式下工作。 实模式下允许的最大寻址空间为1M字节。这是由于8086/8088的地址总线为20位,因此段基址必须4位对齐(末4位为0)。dos工作在实模式下。 内存寻址方式为:段式寻址,即物理地址=段地址*16 + 段内偏移地址 可寻址任意地址,所有指令都相当于工作在特权级。原创 2011-11-06 13:59:06 · 677 阅读 · 0 评论 -
页表结构
分页单元的作用是从线性地址到物理地址转换,为了效率起见,线性地址被分成以固定长度为单位的组,又被称为页,页内连续的线性地址被映射到连续的物理地址中。而把线性地址映射到物理地址的数据结构叫做页表(page table)。页表存放在内存中,并在启用分页单元以前由内核对之进行初始化,Intel处理器中,通过设置CR0寄存器的一个标志位来启用分页单元。这里还要区分一下页和页框的概念,一页指一系列的线性地址原创 2011-11-06 14:33:45 · 1834 阅读 · 0 评论 -
关于firmware的思考
在电子系统和计算,firmware直译是固件,通常是控制各种电子设备相当小的程序或数据结构,从硬盘,键盘,TFT屏幕或记忆卡,到更复杂的消费电子设备,如手机,数码相机,合成器等,都包含firmware来实现设备的基本操作以及更高级别的功能。firmware和软件之间没有严格的界限,因为二者都是相当宽松的描述性词语。然而,软件可以无需更换硬件组件而进行升级,而固件通常是很基本的低级操作,没有firm原创 2011-11-02 23:41:41 · 1539 阅读 · 0 评论 -
U-Boot Stage1
u-boot 的stage1代码通常放在start.S文件中,他用汇编语言写成,其主要代码部分如下:(1)定义入口。由于一个可执行的Image必须有一个入口点,并且只能有一个全局入口,通常这个入口放在ROM(Flash)的0x0地址,因此,必须通知编译器以使其知道这个入口,该工作可通过修改连接器脚本来完成。(2)设置异常向量(ExceptionVector)。(3)设置CPU 的速度、原创 2011-11-27 14:47:43 · 787 阅读 · 0 评论 -
由自旋锁引起的思考
《在深入理解Linux内核》这本书中第五章讲到了内核同步,当内核控制路径必须访问共享数据结构或进入临界区时,就需要为自己获得一把“锁”。由锁机制保护的资源非常类似于限制于房间内的资源,当某人进入房间时,就把门锁上。如果内核控制路径希望访问资源,就试图获得钥匙“打开门”。当且仅当资源空闲时,它才能成功。然后,只要它还想使用这个资源,门依然锁着。当内核控制路径释放了锁时,门就打开,另外一个内核路径就可原创 2011-11-08 22:13:50 · 701 阅读 · 0 评论 -
U-Boot Stage2
start_armboot函数在lib_arm/board.c中定义,是U-Boot第二阶段代码的入口。U-Boot启动第二阶段流程如下: U-Boot第二阶段执行流程1)gd_t结构体U-Boot使用了一个结构体gd_t来存储全局数据区的数据,这个结构体在include/asm-arm/global_data.h中定义如下:typedef struct global_转载 2011-11-29 21:29:15 · 1414 阅读 · 0 评论 -
Linux内存布局
在上一篇博文里,我们已经看到Linux如何有效地利用80x86的分段和分页硬件单元把逻辑地址转换为线性地址,在由线性地址转换到物理地址。那么我们的应用程序如何使用这些逻辑地址,整个内存的地址布局又是怎样的?打一个比方,内存就像一座城市,而居住在这个城市里的市民就像是各个进程,一个市民吃喝拉撒睡,当然就得用于“房子”、“车子”、“票子”等各种各样的资源。有些资源是固定的,如“房子”,我们称之为静态数转载 2012-01-30 10:45:47 · 2570 阅读 · 0 评论 -
Linux页框管理
在前面的博文里,我们讲解了基于80x86体系的Linux内核分段和分页机制,并详细地讨论了Linux的内存布局。有了这些基本概念以后,我们就来详细讨论内核如何动态地管理那些可用的内存空间。 对于80386这种32位的处理器结构,Linux采用4KB页框大小作为标准的内存分配单元。内核必须记录每个页框的当前状态,例如,区分哪些页框包含的是属于进程的页,而哪些页框包含的是内核代码或内核数据。内转载 2012-01-30 10:46:59 · 3819 阅读 · 0 评论 -
linux操作系统CPL、DPL、RPL说明
linux操作系统中特权级有3种:CPL,DPL和RPL,每个都是有4个等级。我对他们的关系理解是这样:一般来说,CPL代表当前代码段的权限,如果它想要去访问一个段或门,首先要看看对方的权限如何,也就是检查对方的DPL,如果满足当前的权限比要访问的权限高,则有可能允许去访问,有些情况我们还要检查选择子的权限,即RPL,因为我们通过选择子:偏移量的方式去访问一个段,这算是一个访问请求动作,因转载 2012-01-30 14:05:59 · 1016 阅读 · 0 评论 -
Linux的分段和分页机制
1 基于80x86的Linux分段机制80386的两种工作模式:80386的工作模式包括实地址模式和虚地址模式(保护模式)。Linux主要工作在保护模式下。在保护模式下,80386虚地址空间可达16K个段,每段大小可变,最大达4GB。逻辑地址到线性地址的转换由80386分段机制管理。段寄存器CS、DS、ES、SS、FS或GS各标识一个段。这些段寄存器作为段选择器,用来选择该段的描述符。转载 2012-01-30 10:43:41 · 10143 阅读 · 0 评论 -
Linux中断定义与初始化
1.中断的分类早期以及一般情况下,我们所说的中断即指由外设所产生的中断。随着计算机的迅速发展,中断不再仅仅局限于外部设备,CPU本身也会产生中断,不过我们将这种中断称为异常。对于x86体系结构而言,中断可以分为两大类:同步中断和异步中断。同步中断即我们上面所说的异常,它是由 CPU 在执行非法命令时所产生的。之所以称为同步,是因为这种中断请求信号与代码指令同步执行,也就是说只有在一原创 2012-02-03 13:57:40 · 2548 阅读 · 0 评论 -
Linux 地址映射全过程(分段机制过程在Linux中不起作用)
地址映射的全过程 Linux 内核采用页式存储管理。虚拟地址空间划分成固定大小的“页面”,由 MMU 在运行时将虚拟地址“映射”成某个物理内存中的地址。与段式存储管理相比,页式存储管理有很多好处。首先,页面都是固定大小的,便于管理。更重要的是,当要将一部分物理空间的内容换出到磁盘上的时候,在段式存储管理中要将整个段 ( 通常很大 ) 都换出,面在页式存储管理中则是按页进行,效率显然要高得多原创 2012-08-31 12:51:52 · 4936 阅读 · 0 评论