内核研究
wangdapao12138
如果知识就是力量,我曾比牛还壮!
展开
-
1.内核的线程、进程与特权
1.内核的任务纯技术层面,内核是硬件和软件之间的一个中间层,作用是将应用程序的请求传递给硬件,并充当底层驱动程序,对系统中的各种设备和组件进行寻址。从应用层来讲,内核可以被认为是一台增强的计算机。应用程序与硬件本身没有关系。 程序并发运行时,内核被视为资源管理器。 将内核视为库。2.内核实现的策略微内核:最基本的功能由中央内核(微内核)实现,所有其他功能都委托给一些独立进程,这些...原创 2018-08-12 20:43:48 · 1007 阅读 · 0 评论 -
2.内核中链表的创建、挂接与遍历
1.普通链表普通链表是将数据结构中嵌入链表指针,比如next或者previous节点,可以制作单向链表、双向链表、环形链表等。 2.内核链表内核链表是将链表节点塞入数据结构。链表代码在<linux/list.h>中声明。19: struct list_head {20: struct list_head *next, *prev;21: };Next指向下一个链...原创 2018-08-15 21:23:45 · 1500 阅读 · 0 评论 -
4.内核中的锁
1.为什么要加锁?假设我们需要处理一个队列上的所有请求。我们假定该队列通过链表得以实现,链表中每个节点就代表一个请求。有两个函数来操作此队列:一个函数将新请求添加到队列尾部,另一个函数从队列头删除请求,然后处理它。内核各个部分都会调用这两个函数,所以内核会不断地在队列中加入请求,从队列中删除和处理请求。对请求队列的操作无疑要用到多条指令。如果一个线程试图读取队列,而这时正好另一个线程正在处理该...原创 2018-08-26 11:26:46 · 1111 阅读 · 0 评论 -
3.内核同步之竞争条件和临界区
1.为什么需要内核同步?1)在使用共享内存的应用程序中,程序员必须特别留意保护共享资源,防止共享资源并发访问。2)Linux作为多任务系统,能够同时运行几个进程。通常各进程必须尽可能保持独立,避免彼此干扰。但有时候应用程序必须彼此通信:一个进程生成的数据传输到另一个进程; 进程必须彼此等待时; 需要协调资源的使用时。多个进程对共享资源的并发访问,并发访问会导致竟态。用户空间应...原创 2018-08-22 23:32:04 · 697 阅读 · 0 评论 -
6.内核日志级别与dmesg
转载!前几天,我在想printk中到底是哪些信息会打印到console上,哪些东西可以通过dmesg来查看。参考了网上一些资料以及自己做的一些实验,总结一下Linux中的console loglevel以及printk, dmesg知识。只有当printk打印信息时的loglevel小于console loglevel的值(即:优先级高于console loglevel),这些信息才会被打...转载 2018-08-29 23:11:18 · 5046 阅读 · 0 评论