- 博客(12)
- 资源 (1)
- 问答 (1)
- 收藏
- 关注
原创 linux时间子系统
1、clocksource一台设备的硬件时钟源(事实上不一定是“硬件”时钟源)通常有多个,并且多种多样,各有特点。按照层次结构思想,对功能相同,特性和使用方法不同的东西,进行软件抽象,向上层提供统一的服务和使用方式。这样上层就不用关心硬件之间的差异,也不用关心新硬件的适配问题。1.1 struct clocksoursestruct clocksource { /*
2015-03-10 15:35:26
697
原创 定时测量
1)linux内核给用户很多选择选项,为了兼容不同的硬件提供了多种选项,硬件定时器(HPET、TSC),软件定时器。 2)注意处理竞争条件(在多核情况下,会引入在单核情况下不存在的竞争条件,例如,定时器函数在【被删除函数】终止时可能在其他CPU上运行【和删除函数不在一个CPU上】,del_timer_sync()删除指定的定时器后,需要检查定时函数是否还在其他CPU上运行,如果
2015-02-06 14:33:06
570
原创 linux进程调度
一. 何为进程调度 在linux这样的多用户多任务操作系统上,有大量程序执行的需求。如果每次只运行一个进程,一是其它进程得不到及时的响应,二是CPU时间不能得到充分利用。进程调度就是要解决诸如此类的一些问题,将CPU资源合理地分配给各个进程。同时调度过程又需要对各个进程不可见,在每个进程看来,自己是独占CPU在运行的。这就是虚拟CPU的概念。调度程序是像linux这样的多任务操作系统的基础
2014-11-03 09:12:27
5596
原创 linux内核【进程】
1、概念1.1 什么是进程?进程是程序执行的一个实例。可以看做充分描述程序已经执行到何种程度的数据结构的汇集。从内核观点看,进程的目的就是担当分配系统资源(CPU时间,内存等)的实体。我们熟悉的fork()库函数,它有两种用法:(1)一个父进程希望复制自己,使父子进程执行不同的代码段。常用于网络服务程序。(2)一个进程要执行一个不同的程序。fork
2014-09-22 22:10:09
969
原创 回收页框
【页框回收算法】 为何要有页框回收算法? Linux在为用户态与内核分配动态内存时,检查的并不严谨 例如: 对单个用户创建的进程的RAM使用的总量并不作严格的检查(进程资源的限制只针对单个进程) 对内核使用的许多磁盘高速缓存和内存高速缓存大小也同样不做限制 为何要减少控制?
2014-09-15 17:07:00
789
原创 进程地址空间(三)
本节主要讲述缺页异常处理程序和堆的管理等内容。缺页异常处理程序触发缺页异常程序的两种情况:1. 由编程错误引起的异常(如访问越界,地址不属于进程地址空间)。2. 地址属于线性地址空间,但内核还未分配相应的物理页,导致缺页异常。缺页异常处理程序总体方案:线性区描述符可以让缺页异常处理程序非常有效的完成它的工作。do_page_fault()函数
2014-08-05 10:14:16
591
原创 进程地址空间(二)
//接前一章,本节主要介绍线性区以及相关线性区的操作。线性区Linux通过类型为vm_area_struct的对象实现线性区。vm_area_struct:struct vm_area_struct { struct mm_struct * vm_mm; /* The address space we belong to. */ unsigned long vm_s
2014-08-05 10:13:04
628
原创 进程地址空间(一)
绪论 内核获取内存方式——直接了当: 1. 从分区页框分配器获取内存(__get_free_pages()或alloc_pages()); 2. 使用slab分配器为专用或通用对象分配内存(kmem_cache_alloc()或kmalloc()); 3. 使用vmalloc或vmalloc_32获取一块非连续内存区。 如果申请的内存得
2014-08-05 10:09:04
694
原创 内存管理
1. 内存管理区为什么分成不同的内存管理区?ISA总线的DMA处理器有严格的限制:只能对物理内存前16M寻址内核线性地址空间只有1G,CPU不能直接访问所有的物理内存ZONE_DMA 小于16M内存页框ZONE_NORMAL 16M~896M内存页框ZONE_HIGHMEM
2014-07-14 22:39:16
746
关于Linux内核中通过hash表将pid转化为task_struct地址的计算
2014-08-02
TA创建的收藏夹 TA关注的收藏夹
TA关注的人