Chinaunix首页 | 论坛 | 博客
  • 博客访问: 15441
  • 博文数量: 5
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 42
  • 用 户 组: 普通用户
  • 注册时间: 2014-02-23 09:16
文章分类
文章存档

2014年(5)

我的朋友

发布时间:2014-08-10 22:43:08

Oops中的error code解释
1、如果第1位被清0,则异常是由一个不存在的页所引起的;否则是由无效的访问权限引起的。
2、如果第1位被清0,则异常由读访问或者执行访问所引起;否则异常由写访问引起。
3、如果第2位被清0,则异常发生在内核态;否则异常发生在用户态。......【阅读全文】

阅读(788) | 评论(0) | 转发(0)

发布时间:2014-08-10 22:40:06

1、内核hung task检测机制由来
?我们知道进程等待IO时,经常处于D状态,即TASK_UNINTERRUPTIBLE状态,处于这种状态的进程不处理信号,所以kill不掉,如果进程长期处于D状态,那么肯定不正常,原因可能有二:
?1)IO路径上的硬件出问题了,比如硬盘坏了(只有少数情况会导致长期D,通常会返回错误);
?2)内核自己出问题了。
?这种问题不好定位,而且一旦出现就通常不可恢复,kill不掉,通常只能重启恢复了。
?内核针对这种开发了一种hung task的检测机制,基本原理是:定时检测系统中处于D状态的进程,如果其处于D状态的时间超过了指定时间(默认120s,可以配置),则打印相关堆栈信息,也可以通过proc参数配置使其直接panic。......【阅读全文】

阅读(909) | 评论(0) | 转发(0)

发布时间:2014-08-10 17:06:38

    ioctl可以通过对内核设备的控制达到核内外通信的目的,即在用户态控制内核动作。从ioctl这个名称上看,本意是针对I/O设备进行的控制操作,但实际并不限制是真正的I/O设备,可以是任何一个内核设备即可。    使用ioctl通信一般是通过字符设备实现的。所以首先要向内核注册一个字符设备,设置字符设.........【阅读全文】

阅读(772) | 评论(0) | 转发(0)

发布时间:2014-06-20 21:02:55

首先,创建一个VLAN端口后,就向内核注册了一个网口,就相当于有一个这个网口存在。在8021q模块注册的时候,会向内核协议栈注册一个8021q协议:static struct packet_type vlan_packet_type = { .type = cpu_to_be16(ETH_P_8021Q),.func = vlan_skb_recv, /* VLAN receive method */};接收流程:在netif_receiv.........【阅读全文】

阅读(1972) | 评论(0) | 转发(0)

发布时间:2014-02-23 09:22:13

刚看了下Linux内核情景分析中的内核缓冲区管理,现在做个小总结,有不当之处,请大家不吝赐教。在Linux内核中,对于大块的内存的管理是用伙伴系统算法(buddy )管理。对于小块的内存则用slab管理。在slab方法中,每种重要的数据结构都有自己专用的缓冲区队列。每个队列中的“对象”的个数是动态变化的,不够时可.........【阅读全文】

阅读(742) | 评论(1) | 转发(0)
给主人留下些什么吧!~~
留言热议
请登录后留言。

登录 注册