linux内核
唯有前进值得敬仰
爱好编程
展开
-
linux-0.11内核 硬盘驱动程序
一、概述首先要说明的是内核每次读写的数据量以一个逻辑块为单位,即1024B,而块设备控制器则是以扇区(512B)为单位。对硬盘的读写操作是通过中断处理程序进行的,使用读写请求项等待队列来顺序缓冲一次读写多个逻辑块的操作。进程读硬盘上的一个逻辑块时向缓冲区管理程序提出申请,然后进入睡眠状态。缓冲区管理程序检查缓冲区以前是否已经读取过这块数据,如有直接将对应的缓冲区块头指针返回给进程并唤醒它,否则,调用ll_rw_block()向相应的设备驱动程序发出一个读数据块的操作请求。该函数创建一个请求结构项,插入队列,原创 2010-07-20 13:37:00 · 4572 阅读 · 0 评论 -
linux-0.11内核 信号处理小结
<br />linux-0.11内核中关于信号处理这部分内容主要涉及四个文件system_call.s,signal.h,signal.c,exit.c。其中signal.h,signal.c中定义和实现了内核中所有有关信号处理的函数,当然exit.c中还有两个与信号相关的函数send_sig与tell_father。<br />linux-0.11内核中定义了22种不同的信号,20种是posix.1中规定的,还有两个专用的:SIGUNUSED(未定义)和SIGSTKFLT(堆栈错)。<br />对于一个进原创 2010-07-19 15:44:00 · 723 阅读 · 0 评论 -
linux-0.11内核 keyborad.S程序
<br />这个汇编程序是我看到的内核汇编里较难懂的一个程序,很有幸在网上找到一篇文章便是分析该程序。结合他举的两个例子,能够加深对该程序的理解。<br /> <br />注解:该文件后缀是.S而不是.s,使用这样的后缀可以让as使用GNU编译器的预处理程序CPP(在linux-0.11中的每个makefile中有定义),这样在汇编程序中就可以使用很多C语言的伪指令,例如,#include,#if等。<br /> <br />本程序的主要功能就是根据引起键盘中断的按键扫描码,调用已经编排成跳转表(key_t原创 2010-07-23 16:53:00 · 611 阅读 · 0 评论 -
mmap共享内存
<br /><br /><br />mmap系统调用使得进程之间通过映射同一个普通文件实现共享内存,但并不是完全为了用于共享内存而设计的。它本身提供了不同于一般对普通文件的访问方式,进程可以像读写内存一样对普通文件的操作。而Posix或系统V的共享内存IPC则纯粹用于共享目的,当然mmap()实现共享内存也是其主要应用之一。<br /><br /><br />mmap把磁盘文件的一部分直接映射到内存,这样文件中的位置直接就有对应的内存地址,对文件的读写可以直接用指针来做而不需要read/write函数。<b原创 2011-04-20 21:40:00 · 3526 阅读 · 0 评论 -
GLIBCXX_3.4.9 not found
执行一个程序时发现了这样一个错误:/usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.9' not found于是执行strings /usr/lib/libstdc++.so.6 | grep GLIBC返回结果没有GLIBCXX原创 2011-08-14 20:50:59 · 1231 阅读 · 0 评论