摘要:
* 程序是存放在磁盘上的一系列代码和数据的可执行映像,是一个静止的实体。* 进程是一个执行中的程序。它是动态的实体。* 进程是资源分配的最小单位* 线程是调度的最小单位** 进程四要素1 有一段程序供其执行。这段程序不一定是某个进程所专有,可以与其他进程共用。2 有进程专用的内核空间堆栈。3 在内核中有一个task_struct数据结构,即通常所说的“进程控制块”。有了这个数据结构,进程才能成为内核调度的一个基本单位接受内核的调度。4 有独立的用户空间。*** 进程描述:在Linux中,线程、进程都使用struct task_struct来表示,它包含了大量描述进程/线程的信息,其中比较重要的
阅读全文
posted @ 2012-10-16 20:19
Daniel.G
阅读(423)
推荐(0)
编辑
摘要:
时钟中断由系统的定时硬件以周期性的间间隔产生,这个间隔(即频率)由内核根 据HZ来确定,HZ是一个与体系结构无关的常数,可配置(50-1200),在X86平台,默认值为1000。每当时钟中断发生时,全局变量jiffies(unsigned long)就加1,因此jiffies记录了自linux启动后时钟中断发生的次数。驱动程序常利用jiffies来计算不同事件间的时间间隔。 定时器用于控制某个函数(定时器处理函数)在未来的某个特定时间执行。内核定时器注册的处理函只执行一次--不是循环执行的。内核定时器被组织成双向链表,并使用struct timer_list结构描述。struct timer_
阅读全文
posted @ 2012-10-16 18:39
Daniel.G
阅读(255)
推荐(0)
编辑
摘要:
Linux内核中,获取节点地址的函数list_entry()非常常用,由于其定义有点晦涩,先解析如下:list_entry的宏定义:#define list_entry(ptr, type, member) /((type *)((char *)(ptr)-(unsigned long)(&((type *)0)->member)))这个倒是不难理解:从一个结构的成员指针找到其容器的指针。但是正因为如此,我的第一感觉是,这个宏的名字应该更加抽象,名字似乎应该改称叫“寻找容器”一类的,查看list.h源代码,发现现在的定义是这样的:#define list_entry(ptr, t
阅读全文
posted @ 2012-10-16 17:55
Daniel.G
阅读(736)
推荐(0)
编辑
摘要:
简介:随着 Linux 操作系统的广泛应用,特别是 Linux 在嵌入式领域的发展,越来越多的人开始投身到 Linux 内核级的开发中。面对日益庞大的 Linux 内核源代码,开发者在完成自己的内核代码后,都将面临着同样的问题,即如何将源代码融入到 Linux 内核中,增加相应的 Linux 配置选项,并最终被编译进 Linux 内核。这就需要了解 Linux 的内核配置系统。随着 Linux 操作系统的广泛应用,特别是 Linux 在嵌入式领域的发展,越来越多的人开始投身到 Linux 内核级的开发中。面对日益庞大的 Linux 内核源代码,开发者在完成自己的内核代码后,都将面临着同样的问题
阅读全文
posted @ 2012-10-16 13:21
Daniel.G
阅读(469)
推荐(0)
编辑
摘要:
简介:良好的操作系统性能部分依赖于操作系统有效管理资源的能力。在过去,堆内存管理器是实际的规范,但是其性能会受到内存碎片和内存回收需求的影响。现在,Linux® 内核使用了源自于 Solaris 的一种方法,但是这种方法在嵌入式系统中已经使用了很长时间了,它是将内存作为对象按照大小进行分配。本文将探索 slab 分配器背后所采用的思想,并介绍这种方法提供的接口和用法。动态内存管理内存管理的目标是提供一种方法,为实现各种目的而在各个用户之间实现内存共享。内存管理方法应该实现以下两个功能:最小化管理内存所需的时间最大化用于一般应用的可用内存(最小化管理开销)内存管理实际上是一种关于权衡的
阅读全文
posted @ 2012-10-16 13:18
Daniel.G
阅读(308)
推荐(0)
编辑