第一次使用markdown做笔记

零‘OS基础

  1. 分时
  2. 实时

算法的特性:

  • 1 又穷性,算法是执行时候运行的有穷性,程序只是一段实现算法的代码
  • 2 确定性,算法对于特定的输入有特定的输出,程序提供了确定算法结果的平台
  • 3 可行性,算法需要考虑设计的可能,程序则具体是实现算法上的设计
  • 4 输入,算法有输入,算法的输入依靠程序的平台提供
  • 5 输出,算法的输出也靠代码的支持

单内核:效率比较高,但是,一损全损。

微内核:其他设备出错,不影响内存等的使用功能

UNIX家族OS的共同特点

  1. 很简洁,仅几百个系统调用
  2. 所有的东西都当作文件对待
  3. C语言编写内核和系统工具软件,强大的移植能力
  4. 高效的创建进程,独特的fork
  5. 提供一套简单与稳定的进程间通信元语(IPC)
  6. 以文本形式存储配置数据

内核编程的特点

  • 无libc,无任何第三方库,不能包含第三方头文件

  • GNU C而非ANSIC

  • 没有内存保护机制

  • 不要轻易在内核中使用浮点数

  • 容积小而固定的栈--内核栈的大小为两页

  • 同步和并发--1.Linux是多任务操作系统 2.内核支持对称多处理器系统 3.中断是异步来的 4.Linux内核可以抢占

  • 可移植的重要性--
    字节序、字节对齐、不假定字长

死循环和无限递归的区别?--无限递归在调用函数的时候,会无限分配空间,导致栈区被占满,爆炸。

进程睡眠

  1. 被动
  2. 主动
  3. 深度睡眠
  4. 浅度睡眠

内核线程

内核空间

对于提供的保护机制的现代操作系统来说,内核独立普通应用程序,他处于系统态

被系统态保护起来的内存空间,成为内核空间

用户空间

处理器在任何制定时间上的活动概括如下:

  1. 运行于用户空间,执行用户进程(可睡眠)
  2. 运行于内核空间,处于进程的上下文,代表某个特定的内核线程执行(可睡眠)
  3. 执行于内核空间,处于一场上下文,与任何用户进程无关,一般用来处理个特定的异常(如中断,软中断)

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.客文化

  1. 黑客--寻找漏洞,采取安全措施,防止核客攻击计算机。褒义Hacker
  2. 核客--寻找系统漏洞,以便破坏(贬义)
  3. 骇客--专业从事商业软件,恶意入侵别人的网站等(Cracker)
  4. 极客--随着互联网文化的兴起,这个词包含智力超群和努力的语意
  5. 红客--一种精神,热爱祖国,坚持正义,开拓进取的精神,抵御反击破坏者
  6. 百客--网络守护神
  7. 灰客--不黑不白
  8. 博客--爱写blog的人
  9. 播客--爱show爱语音的人
  10. 闪客--疯狂热爱制作flash的人
  11. 赚客--凭借自己的网络知识技术获利的人

你可能感兴趣的:(第一次使用markdown做笔记)