2011年12月30日

通过伙伴系统申请内核内存的函数有哪些?

摘要: 本文转自:http://blog.chinaunix.net/space.php?uid=22566367&do=blog&id=2747207在物理页面管理上实现了基于区的伙伴系统(zone based buddy system)。对不同区的内存使用单独的伙伴系统(buddy system)管理,而且独立地监控空闲页。相应接口alloc_pages(gfp_mask, order),_ _get_free_pages(gfp_mask, order)等。补充知识:1.原理说明 Linux内核中采用了一种同时适用于32位和64位系统的内存分页模型,对于32位系统来说,两级页表足 阅读全文

posted @ 2011-12-30 15:28 _huanonly范特西 阅读(617) 评论(0) 推荐(0) 编辑

用户进程间有哪几种通信方式

摘要: 本文转自:http://blog.chinaunix.net/space.php?uid=22566367&do=blog&id=2747207(1)管道(Pipe):管道可用于具有亲缘关系进程间的通信,允许一个进程和另一个与它有共同祖先的进程之间进行通信。(2)命名管道(named pipe):命名管道克服了管道没有名字的限制,因此,除具有管道所具有的功能外,它还允许无亲缘关系进程间的通信。命名管道在文件系统中有对应的文件名。命名管道通过命令mkfifo或系统调用mkfifo来创建。(3)信号(Signal):信号是比较复杂的通信方式,用于通知接受进程有某种事件发生,除了用于 阅读全文

posted @ 2011-12-30 15:15 _huanonly范特西 阅读(539) 评论(0) 推荐(0) 编辑

怎样申请大块内核内存

摘要: 在Linux内核环境下,申请大块内存的成功率随着系统运行时间的增加而减少,虽然可以通过vmalloc系列调用申请物理不连续但虚拟地址连续的内存,但毕竟其使用效率不高且在32位系统上vmalloc的内存地址空间有限。所以,一般的建议是在系统启动阶段申请大块内存,但是其成功的概率也只是比较高而已,而不是100%。如果程序真的比较在意这个申请的成功与否,只能退用“启动内存”(Boot Memory)。下面就是申请并导出启动内存的一段示例代码: 1 void* x_bootmem = NULL; 2 EXPORT_SYMBOL(x_bootmem); 3 4 unsigned long x_boot. 阅读全文

posted @ 2011-12-30 15:13 _huanonly范特西 阅读(795) 评论(0) 推荐(0) 编辑

linux的内核模式和用户模式各是什么含义

摘要: linux中内核本身处于内核模式,应用程序处于用户模式。 内核模式的代码可以无限制地访问所有处理器指令集以及全部内存和I/O空间。如果用户模式的进程要享有此特权,它必须通过系统调用向设备驱动程序或其他内核模式的代码发出请求。另外,用户模式的代码允许发生缺页,而内核模式的代码则不允许。 在2.4和更早的内核中,仅仅用户模式的进程可以被上下文切换出局,由其他进程抢占。除非发生以下两种情况,否则内核模式代码可以一直独占CPU:(1)它自愿放弃CPU;(2)发生中断或异常。2.6内核引入了内核抢占,大多数内核模式的代码也可以被抢占。 阅读全文

posted @ 2011-12-30 15:06 _huanonly范特西 阅读(2364) 评论(0) 推荐(0) 编辑

linux内核中主要有哪几种锁

摘要: Linux的同步机制从2.0到2.6以来不断发展完善。从最初的原子操作,到后来的信号量,从大内核锁到今天的自旋锁。这些同步机制的发展伴随Linux从单处理器到对称多处理器的过渡;伴随着从非抢占内核到抢占内核的过度。Linux的锁机制越来越有效,也越来越复杂。 Linux的内核锁主要是自旋锁和信号量。 自旋锁最多只能被一个可执行线程持有,如果一个执行线程试图请求一个已被争用(已经被持有)的自旋锁,那么这个线程就会一直进行忙循环——旋转——等待锁重新可用。要是锁未被争用,请求它的执行线程便能立刻得到它并且继续进行。自旋锁可以在任何时刻防止多于一个的执行线程同时进入临界区。 Linu... 阅读全文

posted @ 2011-12-30 14:59 _huanonly范特西 阅读(2829) 评论(0) 推荐(0) 编辑

linux内核工程师必须知道的三十道题

摘要: 1) Linux中主要有哪几种内核锁?2) Linux中的用户模式和内核模式是什么含意?3) 怎样申请大块内核内存?4) 用户进程间通信主要哪几种方式?5) 通过伙伴系统申请内核内存的函数有哪些?6) 通过slab分配器申请内核内存的函数有?7) Linux的内核空间和用户空间是如何划分的(以32位系统为例)?8) vmalloc()申请的内存有什么特点?9) 用户程序使用malloc()申请到的内存空间在什么范围?10) 在支持并使能MMU的系统中,Linux内核和用户程序分别运行在物理地址模式还是虚拟地址模式?11) ARM处理器是通过几级也表进行存储空间映射的?12) Linux是通过什 阅读全文

posted @ 2011-12-30 14:38 _huanonly范特西 阅读(424) 评论(0) 推荐(1) 编辑

导航