Linux
文章平均质量分 56
iteye_661
这个作者很懒,什么都没留下…
展开
-
Ubuntu 关闭 Unity HUD
Ubuntu12.04 中加入了HUD (Head-Up Display) 功能,此功能意在为用户提供便捷的搜索服务,快速的搜索软件、文件、视频、音乐等。具体意思大家可以上网查一下资料。在Ubuntu 12.04中,调用HUD的快捷键是Alt,但是这个快捷键会很不方便,比如Web Q+ 发送信息是alt+s的快捷键,Wine 魔兽争霸 3的时候alt是查看血量,一点按了它就会最小...原创 2012-07-15 20:12:18 · 210 阅读 · 0 评论 -
LINUX进程, 线程
http://shaohui.me/archives/256 N久之前, 某两人为了linux的调度基本单元是进程还是线程争得面红耳赤, 当然, 且不论为了一个技术问题不顾体面其用心何在, 单纯从技术角度讲, 这是个挺好的问题. 单纯的下一个结论几乎总是错误的, 所谓的对与错也只不过是在特定的时段和特定的场景下符合规律的一种状态, 一旦时过境迁, 对的东西往往变成了错误的, 而...原创 2012-09-08 12:55:25 · 103 阅读 · 0 评论 -
Linux设备号,主设备号,次设备号
Linux的设备管理是和文件系统紧密结合的,把设备和文件关联起来,这样系统调用可以直接用操作文件一样的方法来操作设备。各种设备都以文件的形式存放在/dev目录下,称为设备文件。应用程序可以打开、关闭和读写这些设备文件,完成对设备的操作,就像操作普通的数据文件一样。为了管理这些设备,系统为设备编了号,每个设备号又分为主设备号和次设备号。主设备号用来区分不同种类的设备,而次设备号用来区分同一类型的多个...原创 2012-09-26 22:48:27 · 1316 阅读 · 0 评论 -
编译linux驱动方法
最近在学习linux的驱动,之前做嵌入式实验的时候加载驱动模块都是.o文件,但是现在发现很多驱动模块都是.ko文件,于是上网查了一下两者的区别,现在贴出来,和大家一起分享。 .o文件也就是object文件,.ko文件是kernel object文件,与.o的区别在于其多了一些sections,比如.modinfo。.modinfo section是由kernel source里的mod...原创 2012-09-26 23:10:37 · 114 阅读 · 0 评论 -
Linux 最简单的驱动程序hello world
http://blog.sina.com.cn/s/blog_6035432c0100jraf.html最近开始学Linux驱动,就从最简单的开始练起,就从LDD-3里的第一个驱动程序hello world练起。 The following code is a complete "hello world" module:#include <linux/init.h>...原创 2012-09-26 23:27:19 · 198 阅读 · 0 评论 -
unix Mechanism vs Policy(机制与策略)
http://blog.csdn.net/ostrichmyself/article/details/5333558http://blog.csdn.net/liuhaobupt/article/details/5350950http://linux.chinaunix.net/techdoc/beginner/2006/06/06/933913.shtml Unix文化...原创 2012-09-27 13:12:21 · 1028 阅读 · 1 评论 -
linux-kernel mail list订阅
由于linux-kernel 的mail list中邮件很多,有时一天会有好几百封,所以最好单独申请一个邮箱用来接受 第一步 请求订阅用刚申请的邮箱发送一封邮件到majordomo@vger.kernel.org,主题自己定义(我一般用一个hello),内容为:subscribe linux-kernel下面这个是我的申请邮件:From: "qiang wang"...原创 2012-09-28 12:02:06 · 402 阅读 · 0 评论 -
Debian 6 驱动开发环境搭建
Debian 6 驱动开发环境搭建1.安装相关工具apt-get install -y gcc g++ gdb make build-essential2.查看系统版本,并安装内核头文件root@192.168.20.128:~/ # uname -r2.6.32-5-686apt-cache search linux-headers-2.6.32-5-686apt-get install -y ...原创 2012-09-29 15:33:44 · 206 阅读 · 0 评论 -
linux内核栈与用户栈
http://19880512.blog.51cto.com/936364/274610最近linux内核的中断部分,总是被书里的栈弄晕,一会儿内核栈,一会儿用户栈的……很是崩溃,在网上google了一下 找了一篇不错的文章拿来分享。 5.8 Linux 系统中堆栈的使用方法本节内容概要描述了Linux内核从开机引导到系统正常运行过程中对堆栈的使用方式。这部分内容的说明与...原创 2012-10-01 00:24:43 · 167 阅读 · 0 评论 -
linux线程浅析
http://hi.baidu.com/_kouu/item/282b80a933ccc3a829ce9dd9关于linux线程在许多经典的操作系统教科书中, 总是把进程定义为程序的执行实例, 它并不执行什么, 只是维护应用程序所需的各种资源. 而线程则是真正的执行实体. 为了让进程完成一定的工作, 进程必须至少包含一个线程. 如图1.进程所维护的是程序所包含的资源(静态资源), 如: 地...原创 2012-09-08 12:32:16 · 98 阅读 · 0 评论 -
内存分段机制
转:http://book.51cto.com/art/200812/103305.htm在内存分段系统中,一个程序的逻辑地址通过分段机制自动地映射(变换)到中间层的4GB(232B)线性地址空间中。程序每次对内存的引用都是对内存段中内存的引用。当程序引用一个内存地址时,通过把相应的段基址加到程序员看得见的逻辑地址上就形成了一个对应的线性地址。此时若没有启用分页机制,则该线性地址就被送到...原创 2012-09-03 09:24:13 · 241 阅读 · 0 评论 -
linux eclipse出错-failed to load the jni shared
failed to load the jni shared library"/usr/local/java/jdk1.6.0_21/bin/../jre/lib/i386/client/libjvm.so关闭selinux即可解决。# vi /etc/sysconfig/selinux修改:SELINUX=enforcing 为:SELINUX=disable 禁用SeLinux,...原创 2011-04-17 09:06:10 · 69 阅读 · 0 评论 -
unbuntu11.04安装java6问题 Package 'sun-java6-jdk' has no installation candidate
1. 运行sudo apt-get install sun-java6-jdk2. 输入密码 错误:E: Package 'sun-java6-jdk' has no installation candidate 解决方法:1. sudo gedit2. 打开 /ect/apt/sources.list3. 添加一行deb http://us.arch...原创 2012-03-07 01:51:57 · 83 阅读 · 0 评论 -
Linux下进程通信的八种方法
Linux下进程通信的八种方法:管道(pipe),命名管道(FIFO),内存映射(mapped memeory),消息队列(message queue),共享内存(shared memory),信号量(semaphore),信号(signal),套接字(Socket).(1) 管道(pipe):管道允许一个进程和另一个与它有共同祖先的进程之间进行通信;(2) 命名管道(FIFO):类似于管道,但是...原创 2012-03-25 20:41:39 · 87 阅读 · 0 评论 -
关于linux 僵尸进程
僵尸进程是指的父进程已经退出,而该进程dead之后没有进程接受,就成为僵尸进程.(zombie)进程 怎样产生僵尸进程的: 一个进程在调用exit命令结束自己的生命的时候,其实它并没有真正的被销毁,而是留下一个称为僵尸进程(Zombie)的数据结构(系统调用 exit,它的作用是使进程退出,但也仅仅限于将一个正常的进程变成一个僵尸进程,并不能将其完全销毁)。 在Linux进程的状态...原创 2012-03-26 09:48:35 · 67 阅读 · 0 评论 -
linux中waitpid及wait的用法
wait(等待子进程中断或结束)表头文件 #include<sys/types.h> #include<sys/wait.h>定义函数 pid_t wait (int * status);函数说明: wait()会暂时停止目前进程的执行,直到有信号来到或子进程结束。 如果在调用 wait()时子进程已经结束,则 wait()会立即返回子进程结...原创 2012-03-26 10:10:48 · 124 阅读 · 0 评论 -
Linux下makefile教程
概述——什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和 professional的程序员,makefile还是要懂。这就好像现在有这么多的HTML的编辑器,但如果你想成为一个专业人士,你还是要了解HTML的标识的含义。特别在Unix下的软件编译,你就不能不自己写makefile了,会不会写ma...原创 2012-03-26 14:03:33 · 95 阅读 · 0 评论 -
GDT与LDT的关系
转:http://hi.baidu.com/bluewithcg/item/7a667f09e7c9ccce91571823GDT是个装系统XX描述符的容器(XX可以是代码段、数据段、TSS段、LDT段等),其在内存中是一片连续的内存,以8字节分隔开,逻辑上称为存储系统描述符的数据结构。 LDT也是一个装XX描述符的容器(XX通常为某个任务的数据段、代码段、乱七八糟段),不同于G...原创 2012-09-02 17:13:20 · 379 阅读 · 0 评论 -
Linux内核学习之分段机制
转:http://www.linuxidc.com/linux/2008-10/16740.htmX86分段机制 这里讲的分段指的保护模式(protected mode)下的段机制。与保护模式相对的一个概念是实模式(real mode),实模式的地址由“段基址:偏移量”组成,段基址是个16位的寄存器(CS,DS等),这样显然限制了系统的寻址空间。保护模式的地址由“段选择子+偏移...原创 2012-09-03 09:21:33 · 150 阅读 · 0 评论 -
Linux 内核堆栈
所有进程(包括内核进程和普通进程)都有一个内核栈,在x86的32位机器上内核栈大小可以为4KB或8KB,这个可以在编译内核的时候配置。内核栈的用 途有两个:1)当进程陷入内核态,即内核代表进程执行系统调用时,系统调用的参数就放在内核栈上,内核栈记录着进程的在内核中的调用链;2)在内核栈被配 置成8KB大小的情况下,当中断服务程序中断当前进程时,它将使用当前被中断进程的内核栈。对于用户进程,其...原创 2012-10-01 00:25:34 · 111 阅读 · 0 评论 -
Linux 2.6.32的内核栈和用户空间栈关系
.进程的堆栈内核在创建进程的时候,在创建task_struct的同事,会为进程创建相应的堆栈。每个进程会有两个栈,一个用户栈,存在于用户空间,一个内核栈,存在于内核空间。当进程在用户空间运行时,cpu堆栈指针寄存器里面的内容是用户堆栈地址,使用用户栈;当进程在内核空间时,cpu堆栈指针寄存器里面的内容是内核栈空间地址,使用内核栈。2.进程用户栈和内核栈的切换 当进程因为中断或...原创 2012-10-01 00:26:55 · 328 阅读 · 0 评论 -
学习Unix和C语言
1、学习Unix和C语言,先向大家推荐一本书《Unix高级环境编程》,这本书是学习Unix和C的经典之作,尽量把书中提到的系统调用都写个练习程序,先感性的认识一下Linux系统提供给用户的系统调用都是干什么的,怎么用。系统调用是内核提供给用户的功能用以申请内核服务,对于Linux内核的学习,从系统调用入手是个不错的办法。学习过程可以参看Linux的联机帮助,和网络上的资料。当你觉得差不多...原创 2012-05-16 09:21:13 · 111 阅读 · 0 评论 -
printk与syslog(至少在Redhat中是这样的)+Ubuntu下用最简单的读到/proc/kmsg
在头文件 <linux/kernel.h> 中定义了 【8种可用的日志级别字符串】KERN_EMERG 用于紧急事件消息,它们一般是系统崩溃之前提示的消息。KERN_ALERT 用于需要立即采取动作的情况。KERN_CRIT 临界状态,通常涉及严重的硬件或软件操作失败。KERN_ERR 用于报告错误状态;设备驱动程序会经常使用KERN_ERR来报告来...原创 2012-10-12 01:00:53 · 134 阅读 · 0 评论 -
这场官司让BSD错过了机会,让linux在应用广泛度上超越了它
70年代末,在Unix发展到了版本6之后,AT&T认识到了Unix的价值,成立了Unix系 统实验 室(Unix System Lab,USL)来继续发展Unix。因此AT&T一方面继续发展内部使 用的Unix 版本7,一方面由USL开发对外正式发行的Unix版本,同时AT&T也宣布对Unix产品拥有 所有 权。几乎在同时,加州大学伯克利分校计算机系统研究小组(CSRG)使...原创 2012-11-10 00:50:14 · 611 阅读 · 0 评论 -
Linux模块编程
Linux模块简介 首先这个module不同于microkernel的module,microkernel的module是一个个的daemon进程,工作于用户 空间,Linux的module只是一个内核的目标代码,内核通过执行运行时的连接,来把它整合到kernel中去,所以说Linux的module机制 并没有改变Linux内核为monolithic OS本质,其module也是工作...原创 2012-11-10 12:38:58 · 121 阅读 · 0 评论 -
简单的RPC编程实践——HelloWorld的实现
近期课程的作业需要用到RPC编程,除了课堂上学到的知识,还得亲自动手。打算先写个简单的HelloWorld练习一下,顺便复习一下学到的知识。 RPC意为远程过程调用协议(Remote Procedure Call Protocol)。编制好单机应用程序,然后划分为两个或多个程序片,加入通信协议使得每片可以在单独的计算机上运行。从一个程序片调用另一个程序片的过程称为远程过程调用,即RPC...原创 2012-11-13 01:39:59 · 140 阅读 · 0 评论 -
linux下socket编程实例
一、基本socket函数Linux系统是通过提供套接字(socket)来进行网络编程的。网络的socket数据传输是一种特殊的I/O,socket也是一种文件描述符。socket也有一个类似于打开文件的函数:socket(),调用socket(),该函数返回一个整型的socket的描述符,随后的连接建立、数据传输等操作也都是通过该socket实现。1、socket函数syntax: in...原创 2012-11-13 12:03:48 · 146 阅读 · 0 评论 -
Thread-Specific Data 注:相当于线程内的全局变量,可减少线程内调用其他函数的变量数 ...
Linux多线程编程中引入了Thread-Specific Data(线程相关的数据)的概念 为什么需要"线程相关的数据"呢?怎样使用"线程相关的数据"呢? 1. 为什么需要Thread-Specific Data "线程相关的数据" 例子:实现同时运行两个线程,对于每个线程,在该线程调用的每个函数中打印线程的名字,以及它正在调用的函数的名字. 不使用"线程相关的数据"的两种实现方...原创 2012-11-18 01:20:27 · 133 阅读 · 0 评论 -
MMU结构以及工作原理
MMU的大名,早就听说了,可是一直不知道它是怎么工作的,前几月貌似看的模模糊糊,现在快年关了,来做个了结。在文中我会大量引用英文,并且不做翻译,因为俺觉得我的英文水平会误解别人。O(∩_∩)O哈哈~ One of the key services provided by an MMU is the ability to manage tasks as indepen-dent pro...原创 2012-11-25 00:15:56 · 386 阅读 · 0 评论 -
什么是watchdog + 为何在要系统初始化的时候关闭watchdog
什么是watchdog + 为何在要系统初始化的时候关闭watchdog 关于Uboot初始化阶段,在start.S中,为何要去关闭watchdog,下面解释具体的原因:1.什么是watchdog嵌入式系统之WATCHDOG(看门狗)概述http://wenku.baidu.com/view/e5cd52ff04a1b0717fd5dd27.html简要摘录如下:watchd...原创 2012-12-06 17:09:02 · 653 阅读 · 0 评论 -
关于Linux的syslog
内核中printk发出的消息是这样传递到用户空间的。内核留给用户空间的接口是syslog(2),glibc对它进行了包装,于是就有了klogctl(3)和syslog(3)。先由klogd通过klogctl(3)搜集内核消息(见sysklogd/klogd.c),并通过自己实现的syslog()(注意:和syslog(2),syslog(3)都不一样)传递给 syslogd。sysl...原创 2012-10-12 00:59:57 · 192 阅读 · 0 评论 -
LINUX下三个内核文件详解
在网络中,不少服务器采用的是Linux系统。为了进一步提高服务器的性能,可能需要根据特定的硬件及需求重新编译Linux内核。编译Linux内核,需要根据规定的步骤进行,编译内核过程中涉及到几个重要的文件。比如对于RedHatLinux,在/boot目录下有一些与Linux内核有关的文件,进入/boot执行:ls –l。编译过RedHatLinux内核的人对其中的System.map、v...原创 2012-10-11 23:45:20 · 152 阅读 · 0 评论 -
[原创]Unix下C程序的内存布局
从<Unix高级环境编程>中总结按照高位排序:1.栈,自动变量存储,每次函数调用的信息如函数结束后返回到的地址,调用者的环境信息.新调用的函数会为其自动临时变量分配空间.这就是递归函数的重点,每一次递归函数自我调用,一个新的栈帧会创建,因此他们的数据不会互相干涉到.2.堆,程序运行时动态分配的数据会被存储在此.3.未初始化数据段,通常被称为"bss"段,包含在程序中未被...原创 2012-05-16 11:33:53 · 118 阅读 · 0 评论 -
[转载]strlen与sizeof的区别
1.sizeof操作符的结果类型是size_t,它在头文件中typedef为unsigned int类型。该类型保证能容纳实现所建立的最大对象的字节大小。 2.sizeof是算符,strlen是函数。3.sizeof可以用类型做参数,strlen只能用char*做参数,且必须是以''\0''结尾的。4.数组做sizeof的参数不退化,传递给strlen就退化为指针了。5.大...原创 2012-05-16 14:34:27 · 82 阅读 · 0 评论 -
linux mount命令的基本用法
格式:mount [-参数] [设备名称] [挂载点] 其中常用的参数有: -a 安装在/etc/fstab文件中类出的所有文件系统。 -f 伪装mount,作出检查设备和目录的样子,但并不真正挂载文件系统。 -n 不把安装记录在/etc/mtab 文件中。 -r 讲文件系统安装为只读。 -v 详细显示安装信息。 -w 将文件系统安装为可写,为命令默认情况。 -t <文件系统类型...原创 2012-05-30 17:26:30 · 107 阅读 · 0 评论 -
Linux 如何解决共享库的版本控制(避免Dll Hell)
Linux 系统,也同样面临和Window一样的问题,如何控制动态库的多个版本问题。Window之前没有处理好,为此专门有个名词来形容这个问题 “Dll hell”,其严重影响软件的升级和维护。 Dll hell 是指windows 上动态库新版本覆盖旧版本,但是却不兼容老版本。常常发生在程序升级之后,动态库更新,原有程序运行不起来;或者装新软件,但是已有的软件运行不起来。 同样Linu...原创 2012-06-02 21:52:33 · 225 阅读 · 1 评论 -
KISS-UNIX/LINUX哲学思想
编写只做一件事情,并且要做好的程序;编写可以在一起工作的程序,编写处理文本流的程序,因为这是通用的接口。这就是UNIX哲学.所有的哲学真 正的浓缩为一个铁一样的定律,高明的工程师的神圣的“KISS 原则”无处不在。大部分隐式的UNIX哲学不是这些前辈所说的,而是他们所做的和UNIX自身建立的例子。从整体上看,我们能够抽象出下面这些观点:1、 模块性原则:写简单的,通过干净的接口...原创 2012-06-03 00:59:55 · 126 阅读 · 0 评论 -
Linux平台gcc和动态共享库的基础知识
对大多数不从事Linux平台C语言开发的人来说,GNU gcc的一套工具和Linux平台的共享库的使用还是十分陌生的,其实我也不太熟悉,姑且写点基础知识,权当做备忘吧。 一、GNU gcc的编译工具用法 我们先来写一个简单的C程序:hello.c C代码 #include <stdio.h> void print_hello() { pr...原创 2012-06-05 14:49:40 · 74 阅读 · 0 评论 -
【linux】利用patch和diff命令制作文件补丁
因为在 u-boot 移植过程中,有几处通用文件要修改,如果每次都要手动修改就太麻烦了。制作补丁可以解决这个问题。学习资料的收集比较简单,方法一类似于这种初级问题网上资料非常丰富, google 或者 baidu 搜索一下,然后选择有价值的资料,方法二是阅读 man 在线文档。完成收集工作,当然最终要在自己的 Linux 上作实验,比较总结,消化吸收为自己的东西。要除去这么一种错误思想:...原创 2012-06-06 00:16:22 · 71 阅读 · 0 评论 -
for(;;) 和 while(TRUE)效率比较
个人认为for(;;),效率更高。原因for循环中什么都没有执行,所以耗费的内存空间要小一些。while循环中还要每次都执行true语句,要耗费一定的内存。编译后的代码:编译前 编译后 while (1); mov eax,1 test eax,eax ...原创 2012-06-12 10:12:17 · 638 阅读 · 0 评论