Linux内核设计基础
文章平均质量分 59
刘秋杉
区块链资深研究者
展开
-
Linux内核设计基础(四)之虚拟文件系统
先来看一下写文件函数write的执行过程:ret = write()原创 2014-06-09 00:09:52 · 2324 阅读 · 0 评论 -
Linux内核设计基础(七)之系统调用
我理解的系统调用就是内核提供的一组用户进程与内核进行交互的接口。除异常和陷入外,系统调用是内核唯一的合法入口。像/proc也是通过系统调用进行访问的。原创 2014-06-12 15:40:47 · 1438 阅读 · 0 评论 -
Linux内核设计基础(九)之进程管理和调度
在Linux中进程用结构体task_struct来管理一个进程所需的所有信息(所以一般较大,在32位机上,大约有1.7KB)。为了提高效率,Linux使用了一些卓越的技术。通过slab分配task_struct结构Linux创建进程迅速,正是因为slab分配器预先分配和重复使用task_struct,这样就避免了动态分配和释放所带来的资源消耗(毕竟一个task_struct较大,而原创 2014-06-14 22:53:09 · 1583 阅读 · 0 评论 -
Linux内核设计基础(十)之内核开发与总结
(1)Linux层次结构:(2)Linux内核组成:主要由进程调度(SCHED)、内存管理(MM)、虚拟文件系统(VFS)、网络接口(NET)和进程间通信(IPC)等5个子系统组成。(3)与Unix的差异:Linux支持动态加载内核模块支持对称多处理(SMP)机制Linux内核可以抢占Linux内核并不区分线程和其他的一般进程Linux提供具有设备类原创 2014-06-15 13:20:48 · 1753 阅读 · 0 评论 -
Linux内核设计基础(八)之内核数据结构
我个人比较喜欢学习数据结构,而Linux内核中实现的数据结构会是我们去学习、理解和应用数据结构的一个很好途径。这里介绍内核中广泛应用的四种数据结构:链表、队列、映射和二叉树。链表:Linux内核讲求高效精简,所以有时需要我们动态去创建和分配内存,这时就要借助链表,我们根据实际情况分配内存后,只需修改链表的指针,仍能索引到刚分配的内存区。链表分单向链表、双向链表和循环链表。原创 2014-06-14 20:53:44 · 1839 阅读 · 0 评论 -
Linux内核设计基础(六)之块I/O层
块设备是指能随机访问固定大小数据片的设备,如硬盘;字符设备(如串口和键盘)是按照字符流的方式有序访问。区别在于是否可以随机访问数据——也就是能否在访问设备时随意地从一个位置跳转到另一个位置。我们可以感觉到块设备的控制要比字符设备复杂多,实际上内核在块设备上下了大工夫——块I/O层原创 2014-06-12 13:42:50 · 1592 阅读 · 0 评论 -
Linux内核设计基础(五)之内存管理
我感觉学习操作系统首先要从内存分配和管理入手。首先我们应该知道现代操作系统是以页为单位进行内存管理的,32位体系结构支持4KB的页,而64位体系结构支持8KB的页。页是用来分配的,如何才能进行高效和充分的利用,这是内存管理单元(MMU)应当仔细考虑的。原创 2014-06-11 18:46:11 · 1649 阅读 · 0 评论 -
Linux内核设计基础(一)之中断处理
如果让内核定期对设备进行轮询,以便处理设备,那会做很多无用功,如果能让设备在需要内核时主动通知内核,会是一个聪明的方式,这便是中断。原创 2014-06-08 01:26:32 · 2278 阅读 · 0 评论 -
Linux内核设计基础(三)之定时器和时间管理
内核知道连续两次时钟中断原创 2014-06-08 02:50:48 · 1992 阅读 · 0 评论 -
Linux内核设计基础(二)之Proc文件系统
Linux上的/proc目录是一种文件系统,称为proc文件系统(虚拟文件系统),它存储内核状态信息,包括cpu、内存以及进程等信息。proc文件系统有很多优点:应用程序获取内核数据不用切换到内核态,增加了系统的安全性(像ps命令就是通过proc获取进程信息);应用程序可以通过proc直接改变内核参数,这样不用重新编译内核就可以改变和优化内核行为。总之,proc为用户应用程序获取系统内部信息提供了原创 2014-04-04 21:57:45 · 2393 阅读 · 0 评论 -
linux shell中的$0,$?,$!和<<'END'
变量说明:$$Shell本身的PID(ProcessID)$!Shell最后运行的后台Process的PID$?最后运行的命令的结束代码(返回值)$-使用Set命令设定的Flag一览$*所有参数列表。如"$*"用「"」括起来的情况、以"$1 $2 … $n"的形式输出所有参数。$@所有参数列表。如"$@"用「"」括起来的情况、以"$1" "$2" …原创 2014-10-31 00:50:40 · 5705 阅读 · 0 评论