Welcome 微信登录

首页 / 操作系统 / Linux

Linux DIRECT IO遭遇EINVAL的解法

Linux DIRECT IO遭遇EINVAL的解法

背景:Linux 2.6内核下使用Direct IO,如果调用write函数接口,则需传递一个512字节对齐的缓冲区指针以保证DMA调用的正确性。如果指针未对齐,则抛出错误码EIVAL。错误方法1:申明:struct S { char data[ 4096 ]; } __attribute__ ((aligned ( 512 )));在函数中使用:struct S buf_mem;因为局部变量 buf_mem是装载在栈上的,编译器不会因为aligned就改...
Linux 动态连接加载器 ld-linux用法

Linux 动态连接加载器 ld-linux用法

ld-linux有两种用法,间接调用和直接调用。间接调用时,连接器会把ld-linux的执行路径嵌入到可执行文件中,如elf文件时,ld-linux被放在.interp段中。 直接调用时,在命令行下输入/lib/ld-linux-so.* [选项] [可执行程序] [程序参数]ld-linux按照如下顺序搜索可执行程序需要的共享库: 1. (只针对elf文件) 可执行程序中如果有DT_RPATH或DT_RUNPATH段,则使用这两个段中指定的搜索目录。 2...
Java资源获取分析

Java资源获取分析

在开发java程序的过程中,我们经常要做的一件事就是获取资源。那么什么是资源呢?说白了,在计算机里那就是一堆数据。只是这堆数据对我们的java程序有多种表现形式,一般来说有File,URL,InputStream等等。而单就文件这一项就有很多种:配置文件,java类文件,jps文件,图片、css、js文件等等。面对这林林总总的资源,我们在设计一个读取资源的接口时,就需要针对不同形式的资源提供方法,这样就导致我们的接口还是与实际的资源形式绑定在一起,未能完...
Java线程的超时控制学习

Java线程的超时控制学习

下面这段代码在搜索java线程的超时控制时很容易被找到,并且结果的数量也不少。但是这段代码能够得到想要的结果么? 开始的时候我一看这么多,也没多想,直接下载用了,但是程序里的bug依旧,以为程序里还有其它的问题,折腾了小半天,发现原来超时控制没有起作用,仔细核实了一下以下的代码,发现这段代码根本得到不到想要的结果。 /** * 本线程设置了一个超时时间 * 该线程开始运行后,经过指定超时时间, * 该线程会抛出一个未检查异常通知调用该线程的程序...
Java可变参数使用

Java可变参数使用

Java 1.5增加了新特性:可变参数。适用于参数个数不确定,类型确定的情况,java把可变参数当做数组处理。注意:可变参数必须位于最后一项。当可变参数个数多余一个时,必将有一个不是最后一项,所以只支持有一个可变参数。因为参数个数不定,所以当其后边还有相同类型参数时,java无法区分传入的参数属于前一个可变参数还是后边的参数,所以只能让可变参数位于最后一项。 Java代码 public class uuid { private static int ...
用Linux C对数字进行排序

用Linux C对数字进行排序

转自:hi.baidu.com/zdon这里以Linux相爱对三个数字排序为例,程序运行的最终目的就是要让a>b>c这个条件成立,程序中定义了一个临时变量t,用来交换变量的值,若a<b,则交换ab的值,然后再将a与c进行比较,若a<c,则交换ac的值,最后再对bc进行比较。先打开终端,用vi编辑器新建一个C文件,如:paixu.c,输入:vi paixu.c按“i”键进入插入模式,然后输入如下代码:#include <stdi...
Java与C 和C# 有哪些区别?

Java与C 和C# 有哪些区别?

Java与c#都是由c演变的,那么Java与c 和c# 有哪些区别呢?一、首先,给你个形象的例子让你明白: 如果说Java好比是奔4,C语言就是386电脑了。 两者都是编译语言,但是后者是计算机发展中的一个基础语言,而Java则是新兴的功能更加强大的编写语言。二、其次,再给你详细一些的说明两者的区别:1. Java没有预处理指令。(如C中的#define , #include , #ifdef等)。C中的常量定义在Java中用static final来取代...
UltraEdit中Java编译运行设置方法

UltraEdit中Java编译运行设置方法

确定你的jdk环境变量配置是正确的。对于Java初学者来说,编译和运行Java程序是一件很头疼的东西。显然,在命令方式下编译和运行Java程序用久了,确实是很麻烦,而我们又不想使用大型的开发工具时,UltraEdit是一个不错的选择,很多初学者都是用它来编写Java源文件的,可以高亮度显示关键字。1。关键字高亮度显示。打开UltraEdit->视图->高亮显示类型->Java;此时在UltraEdit输入Java程序时,关键字和Java包...
Linux内核中常用的汇编

Linux内核中常用的汇编

AT&T 汇编语言的相关知识在 Linux 源代码中,以 .S 为扩展名的文件是“纯”汇编语言的文件。这里,我们结合具体的例子再介绍一些 AT&T 汇编语言的相关知识。1 . GNU 汇编程序 GAS ( GNU Assembly 和连接程序当你编写了一个程序后,就需要对其进行汇编( assembly )和连接。在 Linux 下有两种方式,一种是使用汇编程序 GAS 和连接程序 ld ,一种是使用 gcc 。我们先来看一下 GAS 和 l...
Linux下命令行程序设计--getopt_long()函数使用说明

Linux下命令行程序设计--getopt_long()函数使用说明

1. Linux Command-line Conventions ( Linux 命令行约定) 几乎所有的 GNU/Linux 程序都遵循一些命令行参数定义的约定。程序希望出现的参数可以分成两种:选项( options or flags )、其他类型的的参数。 Options 修饰了程序运行的方式,其他类型的参数则提供了输入(例如,输入文件的名称)。 对于 options 类型参数可以有两种方式: 1 )短选项( short options ) : 顾名...
Ubuntu 9.04下CUDA编程起步

Ubuntu 9.04下CUDA编程起步

前一阵子把蚁群算法和改进的K-Means算法都搞定了,然后一直在看CUDA编程,前面看CUDA的介绍,一直认为会C之后CUDA就很容易上手,其实不然,还需要了解一些GPU的体系结构相关的知识才能写出好的程序来。《GPU高性能运算之CUDA》这本书看完一遍之后感觉它更像一个手稿整理,把之前的恒多文档整理了一下出了一本书,因为是集大家的智慧,讲的还不错,就是顺序上安排的不是太好。有总比没有好,看过一遍之后,对CUDA编程还是有一些底气的。推荐新手也先看看。 ...
Linux内核中的likely和unlikely

Linux内核中的likely和unlikely

今天同事问我内核中likely()和unlikely()实现机理。我当时说这是Linux内核使用gcc编译器进行条件分支优化,具体细节没有深究。 晚上回来查看内核源码和google,进一步认识了这两个宏作用。 原来likely和unlikely是用来编译优化的,其实都可以没有。我们知道很多cpu里面有告诉缓存,且有预读机制,likely和unlikely就是增加执行判断语句时的命中率。 如果是if(lilely(a)),说明a条件发生的可能性大,那么a为...
Linux内核参数修改

Linux内核参数修改

由于Linux的内核参数信息都存在内存中,因此可以通过命令直接修改,并且修改后直接生效。但是,当系统重新启动后,原来设置的参数值就会丢失,而系统每次启动时都会自动去/etc/sysctl.conf文件中读取内核参数,因此将内核的参数配置写入这个文件中,是一个比较好的选择。 首先打开/etc/sysctl.conf文件,查看如下两行的设置值,这里是: kernel.shmall = 2097152 kernel.shmmax = 4294967295 如...
对Linux内核进行压力测试

对Linux内核进行压力测试

Linux 标准测试的设计过程 自动软件测试让您可以在一段时间内运行相同的测试,从而确保您所比较的内容具备真正的可比性。在本文中,Linux Test Project 团队的成员们分享了他们对 Linux? 内核进行压力所使用的测试的方法、原理以及脚本和工具。 在对 Linux 内核版本稳定性的测试中,需要明确地声明并证明为什么版本是稳定的或者是不稳定的。然而还没有被证明和证实当前现有的系统范围内的压力测试可以测试 Linux 内核整体上的稳定性。本文...
<< 1181 1182 1183 1184 1185 1186 1187 1188 1189 1190 >>