零‘OS基础
- 分时
- 实时
算法的特性:
- 1 又穷性,算法是执行时候运行的有穷性,程序只是一段实现算法的代码
- 2 确定性,算法对于特定的输入有特定的输出,程序提供了确定算法结果的平台
- 3 可行性,算法需要考虑设计的可能,程序则具体是实现算法上的设计
- 4 输入,算法有输入,算法的输入依靠程序的平台提供
- 5 输出,算法的输出也靠代码的支持
单内核:效率比较高,但是,一损全损。
微内核:其他设备出错,不影响内存等的使用功能
UNIX家族OS的共同特点
- 很简洁,仅几百个系统调用
- 所有的东西都当作文件对待
- C语言编写内核和系统工具软件,强大的移植能力
- 高效的创建进程,独特的fork
- 提供一套简单与稳定的进程间通信元语(IPC)
- 以文本形式存储配置数据
内核编程的特点
-
无libc,无任何第三方库,不能包含第三方头文件
-
GNU C而非ANSIC
-
没有内存保护机制
-
不要轻易在内核中使用浮点数
-
容积小而固定的栈--内核栈的大小为两页
-
同步和并发--
1.Linux是多任务操作系统 2.内核支持对称多处理器系统 3.中断是异步来的 4.Linux内核可以抢占
-
可移植的重要性--
字节序、字节对齐、不假定字长
死循环和无限递归的区别?--无限递归在调用函数的时候,会无限分配空间,导致栈区被占满,爆炸。
进程睡眠
- 被动
- 主动
- 深度睡眠
- 浅度睡眠
内核线程
内核空间
对于提供的保护机制的现代操作系统来说,内核独立普通应用程序,他处于系统态
被系统态保护起来的内存空间,成为内核空间
用户空间
处理器在任何制定时间上的活动概括如下:
- 运行于用户空间,执行用户进程(可睡眠)
- 运行于内核空间,处于进程的上下文,代表某个特定的内核线程执行(可睡眠)
- 执行于内核空间,处于一场上下文,与任何用户进程无关,一般用来处理个特定的异常(如中断,软中断)
Linux编码风格--内核
1.接近K&R C风格
2.缩进
1)制表符(8个字符长度),反对多层缩进
2)每行最多80个字符
3.switch语句
1)case和switch同列
2)Through Case 时加注释于下一行
4.花括号
1)函数体采用同列
2)其他采用:左括号紧跟在语句的最后,与语句同行,有括号要新起一行作为该行第一个字符,且于对应的语句同列
3)有花括号可以不单独占一行,与后续关键字同行
4)不需要一定使用括号的语句可以忽略它(败笔)
5.命名规范
6.函数
1)函数代码长度不应该超过两屏
2)局部变量不超过10个
3)允许使用inline
7.注释
1)应该描述代码要做什么和为什么这样做,而不是通过什么来实现的
2)注释不应该包含谁写了那个函数,修改日期和其他琐碎而无意义的内容
3)注释中,重要信息常常“xxx:”开头,而bug通常是已“FIXME:”开头
8.Typedef
typedef NT T; typedef int INT; x += y; x = x + y; typedef strcut STU { // }STU;
1)内核开发者强烈反对使用Typedef,认为:
2)
3)
4)
9.在源码中减少使用ifdef
1)...
2)do{}while(0)和正常语句的区别
10.结构初始化
- C语言中
struct STU st={“xx”,“ww”,“ee”,“ff”};
- 内核中
struct foo my_foo = {.a = INTIAL_A,.b = INTIAL_B};
11.客文化
- 黑客--寻找漏洞,采取安全措施,防止核客攻击计算机。褒义Hacker
- 核客--寻找系统漏洞,以便破坏(贬义)
- 骇客--专业从事商业软件,恶意入侵别人的网站等(Cracker)
- 极客--随着互联网文化的兴起,这个词包含智力超群和努力的语意
- 红客--一种精神,热爱祖国,坚持正义,开拓进取的精神,抵御反击破坏者
- 百客--网络守护神
- 灰客--不黑不白
- 博客--爱写blog的人
- 播客--爱show爱语音的人
- 闪客--疯狂热爱制作flash的人
- 赚客--凭借自己的网络知识技术获利的人
网友评论