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

首页 / 操作系统 / Linux

Linux内核要点及意义

Linux内核要点及意义

Linux内核源代码包括多个目录,其意义如下: (1)arch:包括硬件特定的内核代码,如arm、mips、i386等; (2)drivers:包含硬件驱动代码,如char、cdrom、scsi、mtd等; (3)include:通用头文件及针对不同平台特定的头文件,如asm-i386、asm-arm等; (4)init:内核初始化代码; (5)ipc:进程间通信代码; (6)kernel:内核核心代码; (7)mm:内存管理代码; (8...
在Linux系统下实现定时器的几种常用方法

在Linux系统下实现定时器的几种常用方法

在Linux系统下实现定时器的几种常用方法 在Linux实现一个定时器,不像Win32下那样直观。在Win32调用SetTimer就行了,在Linux下则没有相应函数可以直接调用。定时器作为一个常用的功能,在Linux当然也有相应实现。下面我们看看几种常用的方法。 要实现定时器功能,最土的办法实现莫过于用sleep/usleep来实现了。当然,它会阻塞当前线程,除了处理定时功能外,什么活也干不了。当然要解决这个问题不难,创建一个单独的线程来负责定时器,...
Linux操作系统下的多进程编程(二)

Linux操作系统下的多进程编程(二)

管道是进程间通信中最古老的方式,它包括无名管道和有名管道两种,前者用于父进程和子进程间的通信,后者用于运行于同一台机器上的任意两个进程间的通信。 无名管道由pipe()函数创建: int pipe(int filedis[2]); 参数filedis返回两个文件描述符:filedes[0]为读而打开,filedes[1]为写而打开。filedes[1]的输出是filedes[0]的输入。下面的例子示范了如何在父进程和子进程间实现通信。 #defin...
Linux下把IO空间映射到用户进程空间

Linux下把IO空间映射到用户进程空间

其实是个蛮简单的问题。在LDD3的第15章上有写(见“Remapping Specific I/O Regions”这一节)。不过当时作者选择了一个错误的做法:先把这块IO空间用ioremap映射到了内核空间,然后在用户进程访问被映射的地址所产生的缺页中断里,用vmalloc_to_page得到page,返回给用户进程。 然而,vmalloc_to_page没法用在ioremap所得到的地址上,因为IO空间根本就没有对应的Page结构,返回的page指针...
linux程序最大的参数个数

linux程序最大的参数个数

linux里面的程序,或者很多命令,都可以有很多的参数,比如ll,好像可以有无数个参数,但是,实际上是有限制的,当一个文件夹里面的文件个数太多,像cp dir/* /dir2/ 这样的命令就不能执行了,错误处在cp参数太多。这个限制是在什么地方呢?看linux内核源代码时,终于解决了这个疑惑。原来,linux里面在执行execve系统调用的时候,用到这么一个结构,struct linux_binprm{char buf[BINPRM_BUF_SIZE];s...
Linux中对中断的支持

Linux中对中断的支持

Linux内核中使用的门是在i386平台的门的基础上做了更进一步的细化后形成的,如下所示: 1、中断门:处理器中DPL被设置为0的中断门,不能用户态下对其进行访问。Linux下所有的(硬)中断处理程序都是在核心态下通过中断门来激活的。 2、系统门:处理器中DPL被设置为3的陷阱门,可以在用户态下对其进行访问。Linux的三种异常处理函数(中断号为4、5、128)都是通过系统门来调用的,即指令into、bound和int $0x80可以在用户态下被执行...
让你的Linux内核重编译之路走得更通畅

让你的Linux内核重编译之路走得更通畅

内核重编译对很多Linux爱好者来说是一个不小的挑战。笔者认为,很多Linux用户对内核通常有一种误解,他们认为普通用户是不能调整内核的。其实,就实际情况而言,这种认识是不全面的。应该说,内核重编译是具有一定深度和复杂性的,同时也是易失败的配置工作。下面我把我的经历与大家分享,让你们少走一些弯路。 如果大家留意那些比较权威的Linux参考工具书的话,就会发现很多原版书籍都把内核重编译作为一个很重要的章节进行介绍。本文将要向读者介绍的并不是如何去一步步的...
Linux下C程序开发环境

Linux下C程序开发环境

1. linux 内核开发2. 基于linux嵌入式开发编辑器 vi编译器 GNU gcc调试器 gdb函数库 glibc系统头文件 glibc_header安装时选上“程序开发”中的“开发工具”就可安装gcc/gdb若要开发图形,还应选上“GNOME/KDE软件开发”集成开发环境(IDE):kylix:号称linux下的dephikdevelopRHIDE:类似于Turbo C++源文件后缀及其解释:.c为后缀 C语言源代码文件.h为后缀 头文件.i为后...
Linux操作系统的内核重入的分析

Linux操作系统的内核重入的分析

对于Linux内核重入我做了一下一些分析。 首先要界定一个范围(代码段,函数)然后才可以讨论重入。 比如以函数A,B分别为一个范围。在运行A的时候发生中断,调用B,B运行完了又返回A,这个时候称B进入A. 如果A=B,那么称A重入A,或者可以说有两个A的实例在运行。 重入导致的问题主要就是由于这两个A可以会几乎同时访问一些堆中的变量而出现不一致。解决这个问题的办法有几个: 干脆不允许某个函数(某段代码)重入,也就是如果A运行,当发生中断的时候,调...
Jonathan Corbet谈近来Linux内核的改进

Jonathan Corbet谈近来Linux内核的改进

Jonathan Corbet: 目前居住在美国科罗拉多州的玻尔得市. <>的第一作者, LWN网络杂志创始人兼主编.Corbert在今年linux.conf.au 2007悉尼会议上介绍了近来Linux内核的改进:下一个内核发行版2.6.20将增加许多新的驱动, 其中包括USB视频驱动, 用于支持USB Web摄像头.Linux支持越来越多的硬件, 但是最大的问题是厂商不发布开源驱动程序和硬件规格.内核现用的wireless代码将逐步被802...
Linux socket注意事项

Linux socket注意事项

前言: Socket API 是网络应用程序开发中实际应用的标准 API,在 4.2 BSD UNIX® 操作系统中首次引入。尽管该 API 简单,但是也有一些地方需要注意。本文介绍一些最常见的隐患并显示如何避免它们。 隐患 1.忽略返回状态 第一个隐患很明显,但它是开发新手最容易犯的一个错误。如果您忽略函数的返回状态,当它们失败或部分成功的时候,您也许会迷失。反过来,这可能传播错误,使定位问题的源头变得困难。捕获并检查每一个返回状态,而不...
用PHP在Linux上读取输入并进行文件操作

用PHP在Linux上读取输入并进行文件操作

Perl作为Linux系统命令行脚本的首选解释语言的日子一去不复返了。今天,我们有了更多的选择,包括Python、Ruby和PHP。如果你已经为网站编写PHP代码,并熟谙这种语言,那么你会发现,在命令行使用PHP的速度之快,效果之好令人惊奇。 在脚本中,任何脚本语言的一个最大功用是对文件进行操作并获取用户输入。PHP处理这些丝毫不比其它任何脚本语言逊色。 例如,利用PHP在脚本执行期间处理读取用户提供输入,使用: #!/usr/bin/php<?ph...
Linux系统下设计优秀实用程序的艺术

Linux系统下设计优秀实用程序的艺术

Linux 和其他类 UNIX 系统总是附带了大量的工具,它们执行从显而易见的到不可思议的广泛功能。类 UNIX 编程环境的成功很大程度上归功于工具的高品质和选择,以及这些工具之间相互衔接的简易性。 作为开发人员,您可能会发现现有实用程序并不总是能够解决问题。虽然能够通过结合使用现有实用程序来容易地解决许多问题,然而解决其他问题却至少需要一些实际的编程工作。这些后面的任务通常是创建新实用程序的候选任务,结合现有实用程序来创建新实用程序可以通过做最少的工作来...
Linux下用Mtrace来检查程序内存溢出

Linux下用Mtrace来检查程序内存溢出

对于内存溢出之类的麻烦可能大家在编写指针比较多的复杂的程序的时候就会遇到。Debug起来也是比较累人。其实Linux系统下有一个使用的工具可以帮忙来调试的,这就是Mtrace。Mtrace主要能够检测一些内存分配和泄漏的失败等。下面我们来学习一下它的用法。 使用Mtrace来调试程序有4个基本的步骤,需要用到GNU C 函数库里面的一些辅助的函数功能。 1. 在需要跟踪的程序中需要包含头文件,而且在main()函数的最开始包含一个函数调用:mtra...
shell技术要点讲解

shell技术要点讲解

学习shell主要在于用,光看书没用2. 单引号、双引号、括号、花括号及反引号单引号内所有元字符都失去特殊含义(包括)双引号内除了变量域($)和命令域(`)以外的元字符都失去特殊含义,所以一般使用双引号引用花括号{}被用来区分变量名和周围的文本:echo ${file} and $file1 寻找变量file,file1命令替代的格式:反引号来环绕一个命令象` cmd `,它和$(command) 是等价的:ls -l `find . -type f`3....
Linux系统内核研究之可执行文件格式

Linux系统内核研究之可执行文件格式

我们知道Linux环境下不是所有的二进制文件都有相同的格式,Linux系统使用二进制文件的处理程序来实现对不同二进制格式文件的分别处理。二进制处理程序通过内嵌在文件开头的“特征序列”(一个特殊的字节序列)来识别文件,有时也会通过文件名的一些特征,例如ELF文件以’E’’L’’F’字符开头,Java文件以0xcafebabe开始前四个字节。 Linux用sys_execve装入可执行二进制文件。 1.当前Linux版本(2.2)提供以下几种二进制文件处理程序...
<< 1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 >>