Welcome 微信登录
编程资源 图片资源库 蚂蚁家优选 PDF转换器

首页 / 操作系统 / Linux

Linux内核线程死锁或死循环之后如何让系统宕机重启

Linux内核线程死锁或死循环之后如何让系统宕机重启

在开发内核模块或驱动时,如果处理失误,导致内核线程中出现死锁或者死循环,你会发现,除了重启之外,你没有任何可以做的。这时你的输入不起任何作用,终端(不是指远程的ssh工具)只会在那重复的输出类似“BUG: soft lockup - CPU#0 stuck for 67s! [fclustertool:2043]”,更无奈的是你重启之后导致系统挂起的堆栈信息也看不到,你所能做的就是一遍遍的加调试信息,一遍遍的重启机器(这是我的经历,...
TIME_WAIT状态下对接收到的数据包如何处理

TIME_WAIT状态下对接收到的数据包如何处理

正常情况下主动关闭连接的一端在连接正常终止后,会进入TIME_WAIT状态,存在这个状态有以下两个原因(参考《Unix网络编程》):《UNIX网络编程.卷2:进程间通信(第2版)》[PDF]下载 http://www.linuxidc.com/Linux/2013-01/77936.htm1、保证TCP连接关闭的可靠性。如果最终发送的ACK丢失,被动关闭的一端会重传最终的FIN包,如果执行主动关闭的一端没有维护这个连接的状态信息,会发送RST包响应,导致连...
探讨Linux kernel中对序列号超前的ACK包的处理

探讨Linux kernel中对序列号超前的ACK包的处理

在开发的内核模块中遇到这样一个问题:一个数据包有多个请求,每次只让服务器处理一个请求,所以在将请求交到上层的时候需要拆包,只将部分数据交到上层。为了防止客户端重传数据包,要预先给客户端发送一个对完整数据包的确认。这样就会造成一个问题,客户端发送的ACK包的序列号,会比协议栈中期望的序列号大。假设完整数据包的起始序列号分别为1883458390、1883458821,上层协议栈拿到的数据包的起始序列号为1883458390、1883458476,这时服务器端...
Java中的输入与输出流详解

Java中的输入与输出流详解

输入与输出流在Java中,信息的输入和输出(I/O)是程序设计语言中的一个很重要的部分。在任何程序中都离不开信息的输入和输出。在面向对象语言中,输入和输出都是通过数据流来实现的。处理数据流的类主要被放在包java.io中。因为前面已经讲过I/O流的基本知识,所以下面只是对之前只是的巩固和补充。1、数据流的划分按照处理数据的单位划分,Java定义了两种类型的数据流:字节流和字符流。字节流是用来处理字节的输入和输出的,各种数据都可以用字节来表示,包括数字数据、...
C++ sort()函数简单用法

C++ sort()函数简单用法

使用sort()函数在做简单排序算法时候是非常简单轻松的技术。sort(buffer,buffer+n,cmp); buffer为待排序数组的首地址,buffer+n为待排序数组的最后一个数据的地址。cmp为自定义的排序规则函数,可省略。sort()函数默认是为升序排列,允许排序类型包括数值/字符/字符串。sort()也可以对结构体进行排序。cmp函数的返回值为true和false或1和0,若为true/1,则sort()函数为升序排列,若为false/0...
Android开发之自定义属性(Define Custom Attributes)

Android开发之自定义属性(Define Custom Attributes)

为了在你用户界面上添加Android自带的View,你可以在一个XML元素中指定这个View,并通过它相应的元素属性控制该View的外观和行为。写得好的自定义View一样可以通过XML添加和设置样式,为了能够为您的自定义View添加这些行为,你必须:1. <declare-styleable>资源元素中为你的View自定义属性;2.在你的XML布局中为这个属性指定相应的值;3.在程序运行时取回属性值;4.在你的View中使用你所取回的属性值;本...
Linux kernel探究IO Scheduling

Linux kernel探究IO Scheduling

为什么我们需要调整磁盘I/O scheduling算法?在什么情况下我们需要考虑调整调度算法?该如何调整?本文将针对上述问题做些回答。I/O scheduling是操作系统存取数据块顺序的算法规则总称,某些情况下我们可能更熟悉称它为 disk scheduling。出于以下几个目我们可能会需要考虑调整磁盘的调度算法:最小化磁盘寻道时间;优化关键进程的I/O请求,保证关键进程的I/O请求;让服务器上的进程更好的共享I/O带宽;在RHEL3版本之前我们只有一个...
Hadoop I/O系统介绍

Hadoop I/O系统介绍

看过很多Hadoop介绍或者是学习的帖子和文章,发现介绍Hadoop I/O系统的很少。很多文章都会介绍HDFS的架构和使用,还有MapReduce编程等等。尤其是在介绍Hadoop的MapReduce编程之前,首先必须了解下Hadoop的I/O知识,要不一看到IntWritable、LongWritable、Text、NullWritable等概念就有点犯晕,看到和普通的Java程序类似的MapReduce程序就觉得很难。如果这时候你知道其实IntWri...
采用Eclipse + GDB来搭建调试Qemu源码的环境

采用Eclipse + GDB来搭建调试Qemu源码的环境

由于很多同学来信询问如何学习qemu,要看哪些资料,应该怎么入手之类的问题,我每次都回答:看代码。但是qemu的代码也是挺庞大的,如果没有一个好的方法和环境,将是一件非常痛苦的事情。因为qemu的相关资料太少了,并不像linux,有很多源码分析的资料可以对照的看。对一个陌生的东西,最好的方法是跟踪它,所以,我们可以通过单步调试的方法来分析qemu的代码,下面就介绍一下如何通过eclipse+gdb来搭建qemu源码的调试环境。在真正开始之前,先给个分析qe...
Java操作HDFS文件系统

Java操作HDFS文件系统

看了好长时间的hdfs,感觉真不是一个简单明了的,多了一些配置性的东西,缺少一些合理的固定约束,或许是赶着云计算的风潮,去把它当作一个分布式文件系统使用。Hdfs的连接感觉不算很简单,在mapreduce上跑了多次程序后,发现其conf在本机上走的那么像是一个没有配置的本机环境,简单的上传文件到了本地文件系统中。hdfs中文件的上传和获取通过FileSystem操作,算是一个很不错的接口,文件上传的配置都在走一个conf,还不知道怎么在项目中新建xml文件...
Linux内核的ftrace调试接口

Linux内核的ftrace调试接口

为了抓住一个自定义的内核函数是如何被执行的,需要一定的调试手段,其实就需要一种跟踪手段就可以了,理论上不太复杂,可是Linux内核的调试接口太多了,始终找不到一个方便的,直到遇到了ftrace,它简单的使用文件系统作为接口,不需要安装任何用户态程序,和杂乱的发行版毫无关系,这正合我意,相比SystemTap等复杂的前置设置等调试手段,简直棒极了。因为我很讨厌为了做一件理论上很简单的事而去花去大量的时间去做前置工作。使用文件系统作为接口的优势自然不必多说,它...
Linux2.6的LOGO制作与显示

Linux2.6的LOGO制作与显示

前不久,因为工作需要更换了液晶屏,分辨率由原来的640*480换成了800*600。当然首先更改了液晶屏驱动,修改了相应的参数。把开机Logo也进行了更换,分辨率修改为800*600。但是开机时,Logo无法显示,提示以下错误。fbcon_init: disable boot-logo (boot-logo bigger than screen).真是扯淡啊,查看源代码,该提示在drvers/video/console/Fbcon.c下,在此截取这段代码。...
<< 3521 3522 3523 3524 3525 3526 3527 3528 3529 3530 >>