《linux内核的设计和实现》学习日记1-2简介

1. Unix历史: 1

2. Linux历史: 1

3. 内核组成: 1

4. 处理器在任何时间点上的活动范围: 1

5. 获取内核: 1

6. 使用补丁: 2

7. 内核源码树 2

8. 编译内核: 2

9. 衍生多个编译作业 2

10. 内核安装 2

11. 内核开发的特点 2

1. Unix历史:

1969年贝尔实验室设计了一个文件系统原型,最终演化成了unix

1973unixc语言重写。

具有影响力的unix进一步开发组织:加州大学伯克利分校BSD。发展到了今天的Darwin,Droaonfly BSD,FreeBSD,NetBSDOpenBSD

2. Linux历史:

1991芬兰大学生linus自己编写一个不成熟但五脏俱全的unix,它克隆了unix,但不是unix,它没有直接应用unix的源代码。

3. 内核组成:

3.1 中断服务程序

响应中断

3.2 进程调度程序

管理多个进程分享处理机

3.3 内存管理

管理进程地址空间

3.4 网络和进程间通信等系统服务

4. 处理器在任何时间点上的活动范围:

运行于内核空间:处于进程上下文,代表某个特定进程的执行。

运行于用户空间:处于中断上下文,与任何进程无关,代表处理特定的中断。

运行于用户空间:执行用户进程。

5. 获取内核:

www.kernel.com

解压:tar xvjf linux-x.y.z.tar.bz2

  或者tar xvzf linux-x.y.z.tar.gz

内核一般都在/usr/src/linux下,但是注意不能以root身份对其进行修改,即使在安装新内核时,/usr/src/linux目录下都应该原封不动。

6. 使用补丁:

Patch -pl < ../patch-x.y.z

7. 内核源码树

8. 编译内核:

Make config

遍历所有配置项,要求用户选择。时间很长。

Make menuconfig

利用基于ncurse的图形界面工具

Make xconfig

基于X11的图形工具

Make gconfig

基于gtk+图形界面

Make defconfig

根据自己的体系结构创建默认的配置,生成在config文件中,而且你可以直接更改它。

Make才是真正执行编译的命令。

9. 衍生多个编译作业

Make -jn

衍生n个作业。改善内核编译时间。

10. 内核安装

Make modules_install

11. 内核开发的特点

没有c

只能用GUN C

没有内存保护机制

浮点数很难使用

注重可移植性

只有一个很小的定长堆栈

支持异步终端,抢占和SMP,注意同步和并发

11.1 没有libc库

像没有外部库一样,内核代码中没有外部头文件。所以类似printf()函数都不能用。但是有printk()函数可以用,并且他可以通过一个标志设置优先级,来决定在什么地方显示。如:

PrintkKERN_ERR,”this is an error./n”);

11.2 GUN C

允许有内联函数:static inline void play(int ball);

允许内联汇编

存在分支申明:在大多数分支结果都可以确定的时候,可以用如likely()unlikely()对判断条件进行申明。这样的话可以大大提高性能。

if(likely(foo))

{}

或者

If(unlikely(foo))

{}

11.3 没有内存保护机制

如果是用户程序进行了非法的内存访问,内核会发送SIGSEGV,并结束进程。但是内核自己出现了,就没有办法了。

11.4 小容量的内核栈

通常x8632位机栈大小是8K64位机是16K,而且固定不变。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值