Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1036347
  • 博文数量: 277
  • 博客积分: 8313
  • 博客等级: 中将
  • 技术积分: 2976
  • 用 户 组: 普通用户
  • 注册时间: 2010-04-22 11:25
文章分类

全部博文(277)

文章存档

2013年(17)

2012年(66)

2011年(104)

2010年(90)

我的朋友

发布时间:2012-12-16 22:57:19

经过对Linux系统有了一定了解和熟悉后,想对其更深层次的东西做进一步探究。这当中就包括系统的启动流程、文件系统的组成结构、基于动态库和静态库的程序在执行时的异同、协议栈的架构和原理、驱动程序的机制等等。       本人在综合了现有网上大家智慧的基础上,结合对2.6.32的内核代码的研读,基于CentOS 6.0系统对Linux的启动流程做了些分析。由于才疏学浅,知识所限,有些地方分析不妥之处还请各位高手不吝赐教。        OK,我们言归正传。对于一台安装了Linux系统的主机来说,当用户按下开机按钮时,一......【阅读全文】

阅读(810) | 评论(0) | 转发(0)

发布时间:2012-12-16 22:41:25

    我们都知道,动态共享库里面的函数的共享的,这也是动态库的优势所在,就是节省内存。C 编译出来的可执行文件几乎都会用到libc的库,假如没有这个共享的技术,每个可执行文件都要占一份libc库的内存,这将是极大的内存浪费。 可是一直没搞明白,怎么样才能证明共享库里面函数的地址在物理内存层面是同一份。其实,这个问题的本质是程序里面的逻辑地址和物理内存地址之间是怎样映射的,说的再赤裸裸一点,就是我给你个逻辑地址,请你在物理内存中找到对应的地址,或者我给你个物理地址,请你把这个物理内存里面存的东西告诉我。    最近两天,发现了一篇很牛......【阅读全文】

阅读(690) | 评论(0) | 转发(0)

发布时间:2012-12-15 10:59:37

现在,越来越多的应用程序需要编写内核和用户级代码的程序来一起协作完成具体的任务,而用户与空间和内核空间的通讯也就是一个不可回避的话题了。针对于需要和内核空间通信的具体应用而言,其开发模式和套路相对来说比较固定,主要概括起来有两大步骤: 第一步,编写内核服务程序利用内核空间提供的权限和服务来接收、缓存和处理数据;第二步,编写用户程序来和先前的内核服务程序进行交互。 具体来说,可以利用用户程序来配置内核服务程序的参数,获取内核服务程序提供的数据,也可以向内核服务程序输入数据。 我们可以看到,用户程序和内核的信息交换可以是双向的,也就是说既可以由用户主动向内核空间发送消息,也可以由内核空间......【阅读全文】

阅读(643) | 评论(0) | 转发(0)

发布时间:2012-12-15 10:59:02

今天我们介绍另一种用户内核空间通信的方法:proc文件系统。 proc文件系统作为linux提供的一种虚拟文件系统并不占用实际外围存储空间,它仅存在于内存中,系统断电即消失。proc文件系统最开始的设计主要是为满足内核向用户态进程报告其状态而设计,并没有为输入做规定和说明。随着发展,现在的proc文件系统已经演变成一个“用户-内核”空间半双工的通信方式了(虽然目前已经开始有点混乱了,但某些早期开发的软件代码中还在继续使用这个文件系统)。用户不但可以从proc文件系统中读取内核的相关状态信息,还可以向其中写入数据以改变内核的某些行为状态。 /proc目录里主要存放由内核控制的状态信息,一......【阅读全文】

阅读(536) | 评论(0) | 转发(0)

发布时间:2012-12-15 10:57:24

关于Netlink多播机制的用法         在上一篇博文中我们所遇到的情况都是用户空间作为消息进程的发起者,Netlink还支持内核作为消息的发送方的情况。这一般用于内核主动向用户空间报告一些内核状态,例如我们在用户空间看到的USB的热插拔事件的通告就是这样的应用。        先说一下我们的目标,内核线程每个一秒钟往一个多播组里发送一条消息,然后用户空间所以加入了该组的进程都会收到这样的消息,并将消息内容打印出来。         Net......【阅读全文】

阅读(549) | 评论(0) | 转发(0)
给主人留下些什么吧!~~
留言热议
请登录后留言。

登录 注册