我感觉学习操作系统首先要从内存分配和管理入手。首先我们应该知道现代操作系统是以页为单位进行内存管理的,32位体系结构支持4KB的页,而64位体系结构支持8KB的页。页是用来分配的,如何才能进行高效和充分的利用,这是内存管理单元(MMU)应当仔细考虑的。...
分类:
系统相关 时间:
2014-06-16 12:31:45
阅读次数:
259
单片机的编程中经常用到while(1)死循环来进行轮寻操作,但分析Linux内核源代码时却经常见到for(;;)作为死循环的条件。
两者区别:
区别一
for(;;)死循环里的两个;;代表两个空语句,编译器一般会优化掉它们,直接进入循环体。
while(1)死循环里的1被看成表达式,每循环一次都要判断常量1是不是等于零。
区别二
for.c源码:
#include
int mai...
分类:
编程语言 时间:
2014-06-15 19:11:23
阅读次数:
305
我理解的系统调用就是内核提供的一组用户进程与内核进行交互的接口。除异常和陷入外,系统调用是内核唯一的合法入口。像/proc也是通过系统调用进行访问的。...
分类:
系统相关 时间:
2014-06-15 18:06:45
阅读次数:
291
2012-10-25 22:31 217人阅读 评论(0) 收藏 举报
Sailor_forever sailing_9806@163.com 转载请注明
http://blog.csdn.net/sailor_8318/archive/2008/09/03/2870184.aspx
【摘要】本文详解了Linux内核抢占实现机制。首先介绍了内核抢占和用户抢占的概念和区别,接着...
分类:
系统相关 时间:
2014-06-15 17:38:01
阅读次数:
537
五、自旋锁(spinlock)
自旋锁与互斥锁有点类似,只是自旋锁不会引起调用者睡眠,如果自旋锁已经被别的执行单元保持,调用者就一直循环在那里看是否该自旋锁的保持者已经释放了锁,"自旋"一词就是因此而得名。
由于自旋锁使用者一般保持锁时间非常短,因此选择自旋而不是睡眠是非常必要的,自旋锁的效率远高于互斥锁。
信号量和读写信号量适合于保持时间较长的情况,它们会导致调用者睡眠,因...
分类:
系统相关 时间:
2014-06-15 16:34:46
阅读次数:
285
Linux 的编译使用 GNU make 工具来检查整个系统的文件和调用 gcc 工具以及脚本完成编译源代码生成 image 等操作。要了解整个编译系统,我们首先要了解 Linux 内核的 Makefile 文件。
Linux 的 编译系统包括 5 个部分
Makefile
顶层的 Makefile 文件
.config
内核配置文件
arch/$(ARCH...
分类:
系统相关 时间:
2014-06-15 16:05:05
阅读次数:
351
应用层(APP)应用框架层(API框架)系统运行库层(包括Android
Runtime、Libraries)Linux内核层进程管理(process management)定时器(timer)中断管理(interrupt
management)内存管理(memory management)模块管理...
分类:
移动开发 时间:
2014-06-12 16:47:03
阅读次数:
1139
系统调用的实现过程:触发软终端,调用系统调用处理函数;在处理函数中,从寄存器中读取系统调用号以及参数,根据系统调用号,读取系统调用表;系统调用号就是系统调用函数的位置,取该位置值,就找到真正的系统调用函数,最后执行。arm系统调用:r0-r5传递参数r0保存返回值系统调用的绑定过程:1.系统调用函数...
分类:
系统相关 时间:
2014-06-12 09:29:07
阅读次数:
291