日期:2014-05-16  浏览次数:20542 次

《Linux内核设计与实现》学习笔记之“Linux内核简介”

一.同步和并发(内核很容易产生竞争条件,内核很多特征要求能够并发的访问共享数据,这就要求有同步机制)

竞争尤其是:

            1.Linux是抢占多任务操作系统

            2.Linux内核支持多处理系统

            3.中断是异步到来的,完全不顾当前正在执行的代码

            4.Linux内核可以抢占

解决竞争的方法:自旋锁(后面会了解到),信号量


.Linux内核的一些性质

1.没有内存保护

2.没有Libc库:标准C函数库(其他库)都不能被内核链接,因为大小和速度的要求

                             但是,C库函数在内核中都已经实现了,只是包含的头文件有点变化

                             比如:操作字符串的函数组位于lib/String.c文件中,在linux下只要包含<linux/string.h>头文件就可以使用它

3.内核编程必须使用GNUC( 比如:gcc),缺乏像用户空间那样的内存保护机制(用户态和内核态,这方面如果网友不清楚的可以去百度下)

4.1 用户空间:可以从栈中分配大量空间来存放变量,甚至巨大的结构体,是因为用户空间的栈很大,而且还能动态增长

4.2 内核栈:随体系结构而变的大小,在X86上,栈的大小在编译时配置,可以是4KB也可以是8KB,32位机内核栈是8KB,64位机内核栈是16KB,这是固定不变的

                        每个处理器都有自己的栈