michile

导航

上一页 1 2 3 4 5 6 7 8 9 ··· 12 下一页

2013年2月7日

Linux内核符号表【转】

摘要: 我们知道insmod使用公共内核符号表来解析模块中未定义的符号。公共内核符号表中包含了所有的全局内核项(即函数和变量)的地址,这是实现模块化驱动程序所必需的。当模块被装入内核后,它所导出的任何内核符号都会变成内核符号表的一部分。在通常情况下,模块只需实现自己的功能,而无需导出任何符号。但是,如果其他模块需要从某个模块中获得好处时,我们也可以导出符号。新模块可以使用由我们自己的模块导出的符号,这样,我们可以在其他模块上层叠新的模块。模块层叠技术也使用在很多主流的内核源代码中。例如msdos文件系统依赖于由fat模块导出的符号;而每个USB输入设备模块层叠在usbcore和input模块之上。Li 阅读全文

posted @ 2013-02-07 14:50 michile 阅读(1830) 评论(0) 推荐(0) 编辑

LDD3--模块编译

摘要: 模块的建立过程与用户空间的应用程序的建立过程有显著不同; 内核是一个大的, 独立的程序, 对于它的各个部分如何组合在一起有详细的明确的要求.建立过程也与以前版本的内核的过程不同; 新的建立系统用起来更简单并且产生更正确的结果, 但是它看起来与以前非常不同. 内核建立系统是一头负责的野兽, 我们就看它一小部分. 在内核源码的 Document/kbuild 目录下发现的文件, 任何想理解表面之下的真实情况的人都要阅读一下.有几个前提, 你必须在能建立内核模块前解决. 第一个是保证你有版本足够新的编译器, 模块工具, 以及其他必要工具. 在内核文档目录下的文件Documentation/Chang 阅读全文

posted @ 2013-02-07 14:41 michile 阅读(718) 评论(0) 推荐(0) 编辑

套接字编程

摘要: 套接字是一个双向通信设备,可用于同一台主机上不同进程之间的通信,也可用于沟通位于不同主机的进程。套接字是本章中介绍的所有进程间通信方法中唯一允许跨主机通信的方式。Internet 程序,如Te l n e t 、rlogin 、FTP 、talk 和万维网都是基于套接字的。 例如,你可以用一个Te l n e t 程序从一台网页服务器获取一个万维网网页,因为它们都使用套接字作为网络通信方式。可以通过执行telnet www.codesourcery.com 80 连接到位于www.codesourcery.com 主机的网页服务器。魔数80 指明了连接的目标进程是运行于www.codeso.. 阅读全文

posted @ 2013-02-07 11:33 michile 阅读(10562) 评论(0) 推荐(0) 编辑

管道编程

摘要: 管道是一个允许单向信息传递的通信设备。从管道“写入端”写入的数据可以从“读取端”读回。管道是一个串行设备;从管道中读取的数据总保持它们被写入时的顺序。一般来说,管道通常用于一个进程中两个线程之间的通信,或用于父子进程之间的通信。 在shell 中,| 符号用于创建一个管道。例如,下面的程序会使 shell 创建两个子进程,一个运行ls而一个运行less: % ls | less Shell同时还会创建一个管道,将运行 ls的子进程的标准输出连接到运行less 的子进程的标准输入。由ls输出的文件名将被按照与发送到终端时完全相同的顺序发送到less的标准输入。 管道的数据容量是有限的。如果写入. 阅读全文

posted @ 2013-02-07 11:03 michile 阅读(5400) 评论(1) 推荐(0) 编辑

映射内存

摘要: 映射内存提供了一种使多个进程通过一个共享文件进行通信的机制。尽管可以将映射内存想象为一个有名字的共享内存,你始终应当记住两者之间有技术层面的区别。映射内存既可以用于进程间通信,也可以作为一种访问文件内容的简单方法。 映射内存在一个文件和一块进程地址空间之间建立了联系。Linux 将文件分割成内存分页大小的块并复制到虚拟内存中,因此进程可以在自己的地址空间中直接访问文件内容。这样,进程就可以以读取普通内存空间的方法来访问文件的内容,也可以通过写入内存地址来修改文件的内容。这是一种方便的访问文件的方法。 你可以将映射内存想象成这样的操作:分配一个足够容纳整个文件内容的缓存,将全部文件内容读入缓存, 阅读全文

posted @ 2013-02-07 10:09 michile 阅读(1257) 评论(0) 推荐(0) 编辑

上一页 1 2 3 4 5 6 7 8 9 ··· 12 下一页