![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
linux
文章平均质量分 69
lixuehui848
这个作者很懒,什么都没留下…
展开
-
fork()函数
函数定义: pid_t fork( void ); (pid_t 是一个宏定义,其实质是int 被定义在#includesys/types.h>中) 返回值: 若成功调用一次则返回两个值,子进程返回0,父进程返回子进程ID;否则,出错返回-1 函数说明: 一个现有进程可以调用fork函数创建一个新进程。由fork创建的新进程被称为子进程(child原创 2012-05-14 23:56:17 · 387 阅读 · 0 评论 -
android input子系统之二:核心层
本系列文章——三篇文章介绍linux系统的input子系统,分为驱动层,input核心层和input事件层。以sensor调试为主线介绍,从驱动产生事件,上报事件,到事件处理,流程清晰可读。结合源代码,容易理解。原创 2016-01-22 15:58:25 · 633 阅读 · 0 评论 -
android input子系统之一:驱动部分
本系列文章——三篇文章介绍linux系统的input子系统,分为驱动层,input核心层和input事件层。以sensor调试为主线介绍,从驱动产生事件,上报事件,到事件处理,流程清晰可读。结合源代码,容易理解。原创 2016-01-22 15:52:16 · 1094 阅读 · 0 评论 -
Linux系统启动之——u-boot启动
操作系统是人机交互的接口,其管理着计算机的硬件,例如内存,CUP,外设等。系统上电后,操作系统是怎么启动的呢?在嵌入式中,操作系统是由bootloader引导起来的,linux在嵌入式上应用时,其bootloader是u-boot。这篇文章讲述linux系统的启动,和大家一起学习学习。 U-boot的启动分成两个阶段:stage1和stage2。Stage1使用汇编语言编写,通原创 2013-12-08 10:36:25 · 952 阅读 · 0 评论 -
链表逆转的一个算法
今天想到一个链表逆转的简单算法,向大家介绍一下。链表的定义大家都十分熟悉,我们不再累述。链表分文单链表和双向链表,谈到链表逆转,这里仅仅需要考虑单链表即可。因为双向链表的每个节点都有指向其前驱和后继的指针,用不到对其逆转。如下图表示的单链表:只需要额外定义三个临时节点指针,分别为crrt, pre和tail, crrt表示当前节点指针,pre表示前节点的前驱节点,tail表示当前节点后原创 2012-12-22 13:53:15 · 1737 阅读 · 0 评论 -
编译与链接之三——动态链接
链接分为静态链接和动态链接,前面我们介绍了静态链接,本文将介绍动态链接。动态链接的基本原理与静态链接其实一样,也是把各个目标文件连接到一起生生一个可执行的文件。只是链接时机不同而已。动态链接的思想与优点动态链接是什么呢,简单的说,不把各个模块连接在一起,而分成各自独立的模块,在运行之前不对那些组成程序的目标文件进行链接,等到程序要运行时才进行链接。也就是把链接的过程推迟到了运行时再链接,这原创 2012-11-18 15:34:15 · 527 阅读 · 0 评论 -
编译与连接之二——静态链接连接
连接通过编译过程,一个源文件(.c)就生成了一个对应的目标文件(.o)。一个工程,不可能是一个文件组成,从几十个到几百个,大的项目工程有成千上完个文件,这些文件通过编译,只是从源文件变成了目标文件,但是这些文件不能单独运行,各个文件(模块)之间存在一定的关系,要使工程正常工作,各个目标文件和库必须连接在一起,形成一个最终的可执行的文件。下面就详细介绍链接工作的过程。链接过程简单描述链接过程分为静态原创 2012-10-27 19:00:54 · 508 阅读 · 0 评论 -
编译与连接——编译
一个项目为什么就可以按照其设计思想运行,一个小的程序为什么就可以正确执行,一个printf()函数为什么就能打印出我们想要的东西……这一切究竟是什么样的过程?计算机都是做了什么工作?有写过程序的都会说:编写的程序编译成二进制代码,然后连接成可执行文件,计算机运行的可执行文件啊。流程是这样,但是有没有对这个过程感觉好奇呢?这究竟是一个什么样的过程呢,C程序究竟怎么变成的二进制文件?目标文件究竟怎样变原创 2012-09-09 22:47:11 · 792 阅读 · 0 评论 -
linux系统启动时的内存操作(一)
1。pg0的位置和尺寸当系统刚刚启动时,在分页功能未打开前,线性地址和物理地址是一一对应的。刚开启分页功能时,pg0的内存地址是 在编译内核时定义好的,见arch\i386\kernel\vmlinux.lsd.S,大小为4096字节,启始地址紧跟内核在内存中物理地址。由于 内核保护模式代码启始位置为0x100000,所以pg0地址=0x100000+内核保护模式代码尺寸。对pg0的操作主转载 2012-06-14 23:26:04 · 1858 阅读 · 0 评论 -
linux内存管理之三——slab分配器
slab分配器所谓尺有所长,寸有所短。以页为最小单位分配内存对于内核管理系统物理内存来说的确比较方便,但内核自身最常使用的内存却往往是很小(远远小于一页)的内存块——比如存放文件描述符、进程描述符、虚拟内存区域描述符等行为所需的内存都不足一页。这些用来存放描述符的内存相比页面而言,就好比是面包屑与面包。一个整页中可以聚集多个这种这些小块内存;而且这些小块内存块也和面包屑一样频繁地生成/销毁。转载 2012-07-07 17:38:22 · 674 阅读 · 0 评论 -
linux系统启动时的内存操作之二——伙伴算法
1。算法原理Buddy System是一种经典的内存管理算法。在Unix和Linux操作系统中都有用到。其作用是减少存储空间中的空洞、减少碎片、增加利用率。避免外碎片的方法有两种:a.利用分页单元把一组非连续的空闲页框映射到非连续的线性地址区间。b.开发适当的技术来记录现存的空闲连续页框块的情况,以尽量避免为满足对小块的请求而把大块的空闲块进行分割。基于下面三种原因,内核选择第二种转载 2012-07-07 14:32:04 · 759 阅读 · 0 评论 -
linux实时性分析与改进
1 引言 嵌入式Linux(Embedded Linux)是指对桌面型 Linux经过小型化裁剪后,能够固化在容量只有几百K 字节或几兆字节的存储器芯片或单片机中,应用于特定嵌入式场合、为嵌入式应用程序提供操作系统服务的专用Linux 操作系统。“实时性”是指计算机系统在确定的时间内完成规定的功能,并能够对外部的异步事件做出正确响应的能力。实时性又可分为软实时(Soft Real-time原创 2012-06-06 21:49:35 · 4609 阅读 · 0 评论 -
linux segmentation浅谈
Segmentation fault 是什么Segmentation fault 常常被称为SIGSEGV,是操作计算机软件时在特定条件下发生的错误。当程序试图使用不能使用的内存,或者以不正确的方式访问一块内存时产生的错误。Segmentation是一种内存管理和操作系统的保护机制。现在都是用页管理内存,一些操作系统虽然用页作为内存管理的主要策略,但是在逻辑层面仍然有segmentat原创 2012-05-16 23:20:44 · 459 阅读 · 0 评论 -
静态链接(库)与动态链接(库)
静态链接与动态链接静态链接是指:把库里面的函数在链接时就链接到执行文件中,即在可执行文件中嵌入了该文件所用到的库文件代码。在可执行文件运行时,链接的库文件代码会加载到内存。动态链接是指:库函数不会嵌入到可执行文件中,可执行文件获取库函数指针,在运行时才去链接库函数。简单的说,静态库和应用程序编译在一起,在任何情况下都能运行,而动态库是动态链接,顾名思义就是在应用程序启动的时候才会链接,原创 2012-05-12 22:51:24 · 523 阅读 · 0 评论 -
android input子系统之三:事件层
四 事件层struct input_dev物理输入设备的基本数据结构,包含设备相关的一些信息structinput_handler 事件处理结构体,定义怎么处理事件的逻辑struct input_handle用来创建input_dev 和 input_handler 之间关系的结构体input_handler详细定义如下:struct input_handler {原创 2016-01-22 16:04:25 · 808 阅读 · 0 评论