排序:
默认
按更新时间
按访问量

分享我的疯狂Linux内核知识

<br />距离2011年的6月不到半个小时了,从2009年的6月,我开始接触Linux以来,从安装第一个Linux到配置Linux网卡,从熟悉各种命令到使用标准glibc库进行编程,从学习PC汇编基础知识到能读懂Linux内核源代码,风风雨雨走过了整整两年。<br /> ...

2011-05-31 23:51:00

阅读数:11292

评论数:27

内核态基本套接字编程

1 建立监听和连接服务  服务端建立tco监听的代码如下: struct sockaddr_in locaddr; struct socket *sock; struct socket *newsock; int rc; int ...

2013-08-04 20:42:00

阅读数:4546

评论数:0

一个简单的内核线程

一个简单的linux内核线程的例子,根据精通linux设备驱动上的代码整合而成。 #include #include #include #include MODULE_LICENSE("GPL"); static DECLARE_WAIT_QUEUE_HEAD(my...

2013-07-25 16:52:29

阅读数:3043

评论数:1

64位x86体系Linux内核进程切换

首先简单提一下这个宏和函数的被调用关系:     schedule() --> context_switch() --> switch_to --> __switch_to()   这里面,schedule是唯一调用switch_to的函数,涉及到一些调度算法,这里不...

2013-01-27 21:30:04

阅读数:4678

评论数:0

调用函数时 寄存器到底发生了那些变化

一直存在比较模糊的概念,因此用一个例子强化记忆。 Linux x86 gcc3.2.3 AT&T格式的汇编 代码如下: void fun() { int a = 'A'; } void main() { int b; fun(...

2013-01-27 21:14:41

阅读数:2941

评论数:0

树及树的算法(5) —— B树(上)

1970年,鲁道夫·贝尔(R.Bayer)的先于红黑树提出了B树。这种适用于外查找的树,是一种平衡的多叉树,又称B-树。   B树与红黑树最大的不同在于,B树的结点可以有许多子女,从几个到几千个。那为什么又说B树与红黑树很相似呢?因为与红黑树一样,一棵含n个结点的B树的高度也为O(log2n)...

2012-07-30 00:45:55

阅读数:4258

评论数:0

树及树的算法(4) —— 红黑树

红黑树是在1972年由德国科学家鲁道夫·贝尔发明的,他称之为“对称二叉B树”,它现代的名字是在 Leo J. Guibas和 Robert Sedgewick 于1978年写的一篇论文中获得的。红黑树的实现是很复杂的,但它的操作有着良好的最坏情况运行时间,并且在实践中是高效的:它可以在O(lo...

2012-05-31 23:17:41

阅读数:5655

评论数:0

树及树的算法(3) —— 平衡二叉树

在计算机科学中,平衡二叉树(AVL树)是最先发明的自平衡二叉查找树。在AVL树中任何节点的两个子树的高度最大差别为一,所以它也被称为高度平衡树。查找、插入和删除在平均和最坏情况下都是O(log n)。增加和删除可能需要通过一次或多次树旋转来重新平衡这个树。AVL树得名于它的发明者是前苏联数学家...

2012-05-31 23:10:56

阅读数:2554

评论数:0

树及树的算法(2) —— 二叉查找树

二叉查找树(Binary Search Tree,简称BST),或者是一棵空树,或者是具有下列性质的二叉树: 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值; 若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值;   它的左、右子树也分别为二叉排序树。二叉排序树的查...

2012-05-31 23:06:27

阅读数:2427

评论数:2

树及树的算法(1) —— 二叉树

从现在开始,我们研究算法理论中最重要的树的实现问题,其中包括抽象树、N叉树及二叉树,这里重点研究二叉树。树状图是一种数据结构,它是由n(n>=1)个有限结点组成一个具有层次关系的集合。把它叫做“树”是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。它具有以下的特点:每个结点有零个...

2012-05-31 22:55:09

阅读数:2704

评论数:0

基本数据结构(5) —— 有序表

1 有序线性表 有序线性表是最基本的可搜索容器,其提供除了可搜索容器的操作,还有自己的一些基本操作。那么什么是可搜索容器呢,可搜索容器定义如下: class SearchableContainer : public virtual Container { public: virtual...

2012-04-29 23:27:50

阅读数:3184

评论数:0

基本数据结构(4) —— 队列

队列,又称为伫列(英文queue),与栈想反,是先进先出(FIFO, First-In-First-Out)的线性表。在具体应用中通常用链表或者数组来实现。队列只允许在后端(称为rear)进行插入操作,在前端(称为front)进行删除操作。   队列的操作方式和栈类似,唯一的区别在于队列只允许...

2012-04-29 22:57:27

阅读数:2472

评论数:0

基本数据结构(3) —— 栈

1 栈 栈(stack),在计算机科学中,是一种特殊的串行形式的数据结构,它的特殊之处在于只能允许在链结串行或阵列的一端(称为栈顶,top)进行加入(push)和输出(pop)的运算。栈可以用一维动态数组或链表的形式来完成。   由于堆栈数据结构只允许在一端进行操作,因而按照后进先出(LIF...

2012-04-29 21:51:07

阅读数:2425

评论数:0

基本数据结构(2) —— 链表

链表开发于1955-56,由当时所属于兰德公司(英语:RAND Corporation)的艾伦纽维尔(Allen Newell),克里夫肖(Cliff Shaw)和赫伯特西蒙(Herbert Simon)在他们编写的信息处理语言(IPL)中做为原始数据类型所编写。IPL被作者们用来开发几种早期...

2012-04-29 21:37:54

阅读数:2387

评论数:0

基本数据结构(1) —— 动态数组

我们设计动态数组的目的在于,利用C++模板技术,消除C++语言中对数组的种种限制,如数组无法成为函数的参数或返回值(除非是指针),数组无法直接赋值等等。 1 一维动态数组   一维动态数组将一个普通数组封装成data:   来看具体实现:   template class A...

2012-04-29 21:32:11

阅读数:3069

评论数:0

路径名查找

当进程要使用一个文件时,如open()、mkdir()、rename()或stat()等,就要首先进行路径名查找,即是将人类易于识别的字符串形式路径名,转换为一个文件在内核中的内部表示,也就是目录项、vfsmount和inode等。   执行这一任务的标准过程就是分析路径名并把它拆分成一个文件...

2012-04-15 21:28:47

阅读数:2723

评论数:0

linux 32位平台,文件大小受限于2G的解决方法

公司的asterisk系统已经发生了两次crash,检查日志,都是在日志文件写满到2G后自动执行转储时,日志还在写继续写入而导致的。google以后,发现了下面这边文章,赞! 解决了文件大小限于2G的问题,转帖到自己的空间保留。 突破Linux上面ftell函数2GB的文件大小限制 ht...

2012-03-05 20:18:21

阅读数:5169

评论数:0

代理模式

代理类其实就是代理模式的应用。Proxy模式为其他对象提供一种代理以控制这个对象的访问。在面向对象系统中,有些对象由于某些原因(比如对象创建开销很大,或者某些操作需要安全控制,或者需要进程外的访问),直接访问会给使用者或者系统结构带来很多麻烦,我们可以在访问此对象时加上一个对此对象的访问层,这个访...

2012-01-03 23:15:35

阅读数:2137

评论数:1

C++ Virtual详解

Virtual是C++ OO机制中很重要的一个关键字。只要是学过C++的人都知道在类Base中加了Virtual关键字的函数就是虚拟函数(例如函数print),于是在Base的派生类Derived中就可以通过重写虚拟函数来实现对基类虚拟函数的覆盖。当基类Base的指针point指向派生类Deriv...

2012-01-03 23:14:48

阅读数:2488

评论数:0

中级程序员必须懂的20大基础算法(1)——快速排序

算法的入门级研究一般都是从“排序”和“查找”开始的。“排序算法”和她的姊妹“查找算法”是很多复杂算法的基础,也是很多复杂系统的基础。比如Linux中最复杂的虚拟内存管理就是基于“红-黑树”查找算法的;Solaris是基于AVL树查找算法;MySQL是基于B树查找算法;P2P技术是

2011-10-07 18:52:33

阅读数:7555

评论数:7

提示
确定要删除当前文章?
取消 删除
关闭
关闭