全部博文(1493)
发布时间:2015-04-09 14:12:07
概述系统调用是Linux内核提供的基础服务入口,通过使用这一机制,应用程序可以使用内核的一些专门功能。在分析系统调用之前,以下三点需要了解:1.系统调用将CPU从用户态切换到核心态,以便访问受保护的内核内存。2.系统调用的组成是固定的,每个系统调用在内核中都由一个唯一的数字来标识。3.系统.........【阅读全文】
发布时间:2015-04-09 14:11:42
BIOS引导 在计算机中,BIOS(Basic Input Output System,基本输入输出系统)包括有系统BIOS(即常说的主板BIOS)、显卡BIOS和其它设备(例如IDE控制器、SCSI卡或网卡等)的BIOS等。通常所说的BIOS是指系统BIOS,其内容集成在PC主板上的一个ROM芯片上,主要保存着系统设置程序、基本输入输出程.........【阅读全文】
发布时间:2015-03-16 15:23:24
方法一: 命令: uname -a 作用: 查看系统内核版本号及系统名称 方法二: 命令: cat /proc/version 作用: 查看目录"/proc"下version的信息,也可以得到当前系统的内核版本号及系统名称 补充说明: /proc文件系统,它不是普通的文件系统,而是系统内核的映像,也就是说,该目.........【阅读全文】
发布时间:2015-03-16 15:22:49
kernel 3.10内核源码分析--hung task机制
一、相关知识
长期以来,处于D状态(TASK_UNINTERRUPTIBLE状态)的进程都是让人比较烦恼的问题,处于D状态的进程不能接收信号,kill不掉。在一些场景下,常见到进程长期处于D状态,用户对此无能为力,也不知道原因,只能重启恢复。
其实进程长期处于D状态肯定是不正常的,内核中设计D状态的目的是为了让进程等待IO完成,正常情况下IO应该会顺利完成,然后唤醒相应的D状态进程,即使在异常情况下(比如磁盘离或损坏、磁阵链路断开等),IO处理也是有超时机制的,原理上不会存在永久处于D状态的进程。但是就是因为内核代码流程中可能存在一些bug,或者用户内核模块中的相关机制不合理,可能导致进程长期处于D状态,无法唤醒,类似于死锁状态。
针对这种情况,内核中提供了hung task机制用于检测系统中是否存在处于D状态超过120s(时长可以设置)的进程,如果存在,则打印相关警告和进程堆栈。如果配置了hung_task_panic(proc或内核启动参数),则直接发起panic,结合kdump可以搜集到vmco......【阅读全文】