博客园 - wangLinuxer
uuid:24b78886-0ed1-41c2-8670-e3f31dcf42c4;id=99432
2016-06-03T07:26:26Z
wangLinuxer
https://www.cnblogs.com/wangzahngjun/
feed.cnblogs.com
https://www.cnblogs.com/wangzahngjun/p/5556448.html
linux内核中的链表 - wangLinuxer
1.内核中的链表 linux内核链表与众不同,他不是把将数据结构塞入链表,而是将链表节点塞入数据,在2.1内核中引入了官方链表,从此内核中所有的链表使用都采用此链表,千万不要在重复造车轮子了!链表实现定义在,使用内核链表时,包含此文件。 1.1.传统的双向链表和内核中的双向链表的区别 有个单独的头结
2016-06-03T07:26:00Z
2016-06-03T07:26:00Z
wangLinuxer
https://www.cnblogs.com/wangzahngjun/
【摘要】1.内核中的链表 linux内核链表与众不同,他不是把将数据结构塞入链表,而是将链表节点塞入数据,在2.1内核中引入了官方链表,从此内核中所有的链表使用都采用此链表,千万不要在重复造车轮子了!链表实现定义在,使用内核链表时,包含此文件。 1.1.传统的双向链表和内核中的双向链表的区别 有个单独的头结 <a href="https://www.cnblogs.com/wangzahngjun/p/5556448.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/wangzahngjun/p/5553793.html
文件系统中对页高速缓存的操作 - wangLinuxer
本文从read函数入手,主要讲述从页缓冲,一直到具体的块请求被提交给块设备驱动程序的过程,以下是本文讲述的一张概图,也是对本文的一个概括,可以结合本图,首先由一个从全局上有个清楚的认识,然后再去查看具体的代码,当然本文只是从大体流程上对页缓冲的处理流程进行分析,还有很多小的细节没有搞清楚,后面还需要
2016-06-02T09:24:00Z
2016-06-02T09:24:00Z
wangLinuxer
https://www.cnblogs.com/wangzahngjun/
【摘要】本文从read函数入手,主要讲述从页缓冲,一直到具体的块请求被提交给块设备驱动程序的过程,以下是本文讲述的一张概图,也是对本文的一个概括,可以结合本图,首先由一个从全局上有个清楚的认识,然后再去查看具体的代码,当然本文只是从大体流程上对页缓冲的处理流程进行分析,还有很多小的细节没有搞清楚,后面还需要 <a href="https://www.cnblogs.com/wangzahngjun/p/5553793.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/wangzahngjun/p/5365310.html
基于vfs实现自己的文件系统 - wangLinuxer
1.Linux 文件系统组成结构 linux文件系统有两个重要的特点:一个是文件系统抽象出了一个通用文件表示层——虚拟文件系统或称做VFS。另外一个重要特点就是它的文件系统支持动态安装(或说挂载等),大多数文件系统都可以作为根文件系统的叶子节点被挂在到根文件目录树下的子目录上。 1.1.虚拟文件系统
2016-04-07T12:31:00Z
2016-04-07T12:31:00Z
wangLinuxer
https://www.cnblogs.com/wangzahngjun/
【摘要】1.Linux 文件系统组成结构 linux文件系统有两个重要的特点:一个是文件系统抽象出了一个通用文件表示层——虚拟文件系统或称做VFS。另外一个重要特点就是它的文件系统支持动态安装(或说挂载等),大多数文件系统都可以作为根文件系统的叶子节点被挂在到根文件目录树下的子目录上。 1.1.虚拟文件系统 <a href="https://www.cnblogs.com/wangzahngjun/p/5365310.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/wangzahngjun/p/5131646.html
中断下半部之工作队列 - wangLinuxer
1.工作队列
工作队列是另外一种将工作推后执行的形式,它和前面的软中断以及tasklet都不相同,工作队列可以把工作推后,交由一个内核线程去执行这个下半部,但是由于是内核线程,其不能访问用户空间,最重要特点是工作队列允许重新调度甚至是睡眠。
通常,在工作队列,软中断,tasklet中做出选择非常容...
2016-01-14T13:05:00Z
2016-01-14T13:05:00Z
wangLinuxer
https://www.cnblogs.com/wangzahngjun/
【摘要】1.工作队列
工作队列是另外一种将工作推后执行的形式,它和前面的软中断以及tasklet都不相同,工作队列可以把工作推后,交由一个内核线程去执行这个下半部,但是由于是内核线程,其不能访问用户空间,最重要特点是工作队列允许重新调度甚至是睡眠。
通常,在工作队列,软中断,tasklet中做出选择非常容... <a href="https://www.cnblogs.com/wangzahngjun/p/5131646.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/wangzahngjun/p/5121945.html
Linux上安装Libssh2 - wangLinuxer
由于项目需要使用libssh2,在安装时,遇到一些问题,发现网上的都是互相抄,把自己遇到的问题,记下来,希望可以帮助到别人,自己下次使用时候,也方便查找,节约时间。
安装的流程: 1.下载源码,wget http://www.libssh2.org/download/libssh2 1.4.3.t...
2016-01-11T09:24:00Z
2016-01-11T09:24:00Z
wangLinuxer
https://www.cnblogs.com/wangzahngjun/
【摘要】由于项目需要使用libssh2,在安装时,遇到一些问题,发现网上的都是互相抄,把自己遇到的问题,记下来,希望可以帮助到别人,自己下次使用时候,也方便查找,节约时间。
安装的流程: 1.下载源码,wget http://www.libssh2.org/download/libssh2 1.4.3.t... <a href="https://www.cnblogs.com/wangzahngjun/p/5121945.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/wangzahngjun/p/5120526.html
中断下半部处理之tasklet - wangLinuxer
1.tasklet概述下半部和退后执行的工作,软中断的使用只在那些执行频率很高和连续性要求很高的情况下才需要。在大多数情况下,为了控制一个寻常的硬件设备,tasklet机制都是实现自己下半部的最佳选择。其实tasklet是利用软中断实现的一种下半部机制。tasklet和软中断在本质上很相似,行为表...
2016-01-11T03:09:00Z
2016-01-11T03:09:00Z
wangLinuxer
https://www.cnblogs.com/wangzahngjun/
【摘要】1.tasklet概述下半部和退后执行的工作,软中断的使用只在那些执行频率很高和连续性要求很高的情况下才需要。在大多数情况下,为了控制一个寻常的硬件设备,tasklet机制都是实现自己下半部的最佳选择。其实tasklet是利用软中断实现的一种下半部机制。tasklet和软中断在本质上很相似,行为表... <a href="https://www.cnblogs.com/wangzahngjun/p/5120526.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/wangzahngjun/p/5116317.html
中断下半部处理之软中断 - wangLinuxer
1.内核为什么要把中断分为上半部和下半部在Linux内核中,为了在中断执行时间尽可能短和中断处理需要完成大量工作之间找到一个平衡点,Linux将中断处理程序分为两个部分:上半部和下半部。中断处理程序的上半部接受到一个中断时就立即执行,但是只做比较紧急的工作,这些工作都是在所有中断被禁止的情况下完成...
2016-01-09T06:11:00Z
2016-01-09T06:11:00Z
wangLinuxer
https://www.cnblogs.com/wangzahngjun/
【摘要】1.内核为什么要把中断分为上半部和下半部在Linux内核中,为了在中断执行时间尽可能短和中断处理需要完成大量工作之间找到一个平衡点,Linux将中断处理程序分为两个部分:上半部和下半部。中断处理程序的上半部接受到一个中断时就立即执行,但是只做比较紧急的工作,这些工作都是在所有中断被禁止的情况下完成... <a href="https://www.cnblogs.com/wangzahngjun/p/5116317.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/wangzahngjun/p/5052957.html
中断源码浅析 - wangLinuxer
1.理解中断
中断,从字面意思理解,就是一个正在执行的东西被中断掉了。那么,其实在计算机中中断是一个复杂的处理过程。例如,当你敲击键盘的时候,键盘控制器(控制键盘的设备)会发送一个中断,通知操作系统有键被按下了。中断本质上是一种电信号,由硬件设备发向处理器,处理器接受到中断后,会马上向操作系统反映...
2015-12-17T00:52:00Z
2015-12-17T00:52:00Z
wangLinuxer
https://www.cnblogs.com/wangzahngjun/
【摘要】1.理解中断
中断,从字面意思理解,就是一个正在执行的东西被中断掉了。那么,其实在计算机中中断是一个复杂的处理过程。例如,当你敲击键盘的时候,键盘控制器(控制键盘的设备)会发送一个中断,通知操作系统有键被按下了。中断本质上是一种电信号,由硬件设备发向处理器,处理器接受到中断后,会马上向操作系统反映... <a href="https://www.cnblogs.com/wangzahngjun/p/5052957.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/wangzahngjun/p/5004012.html
网络编程基础API - wangLinuxer
1.预备知识 网络字节序 1.TCP/IP协议规定,网络数据流应采用大端字节序
0x12345678
小端存储:78存储在低地址
大端存储:12存储在低地址 网络字节序和主机字节序的转换 IP地址转换函数 192.168.56.101这就是一个字符串,要把这个字符串转换成32位的i...
2015-11-29T01:04:00Z
2015-11-29T01:04:00Z
wangLinuxer
https://www.cnblogs.com/wangzahngjun/
【摘要】1.预备知识 网络字节序 1.TCP/IP协议规定,网络数据流应采用大端字节序
0x12345678
小端存储:78存储在低地址
大端存储:12存储在低地址 网络字节序和主机字节序的转换 IP地址转换函数 192.168.56.101这就是一个字符串,要把这个字符串转换成32位的i... <a href="https://www.cnblogs.com/wangzahngjun/p/5004012.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/wangzahngjun/p/5003274.html
网络基础-再议TCP - wangLinuxer
以前只是知道3次握手和4次挥手,但是对于其在连接和断开时的各个状态却不是很懂,今天就来看一下握手和挥手时的状态转换图: 1.三次握手和四次挥手时的状态转换图: 实线表示应用程序: 应用层首先发SYN的请求信号,应用层处于SYN_SENT的状态,当服务器端发送ACK应答,并且服务器端发...
2015-11-28T11:04:00Z
2015-11-28T11:04:00Z
wangLinuxer
https://www.cnblogs.com/wangzahngjun/
【摘要】以前只是知道3次握手和4次挥手,但是对于其在连接和断开时的各个状态却不是很懂,今天就来看一下握手和挥手时的状态转换图: 1.三次握手和四次挥手时的状态转换图: 实线表示应用程序: 应用层首先发SYN的请求信号,应用层处于SYN_SENT的状态,当服务器端发送ACK应答,并且服务器端发... <a href="https://www.cnblogs.com/wangzahngjun/p/5003274.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/wangzahngjun/p/4992045.html
Linux添加系统调用的两种方法 - wangLinuxer
前言 系统调用的基本原理系统调用其实就是函数调用,只不过调用的是内核态的函数,但是我们知道,用户态是不能随意调用内核态的函数的,所以采用软中断的方式从用户态陷入到内核态。在内核中通过软中断0X80,系统会跳转到一个预设好的内核空间地址,它指向了系统调用处理程序( 不要和系统调用服务例程混淆 ),这...
2015-11-24T08:35:00Z
2015-11-24T08:35:00Z
wangLinuxer
https://www.cnblogs.com/wangzahngjun/
【摘要】前言 系统调用的基本原理系统调用其实就是函数调用,只不过调用的是内核态的函数,但是我们知道,用户态是不能随意调用内核态的函数的,所以采用软中断的方式从用户态陷入到内核态。在内核中通过软中断0X80,系统会跳转到一个预设好的内核空间地址,它指向了系统调用处理程序( 不要和系统调用服务例程混淆 ),这... <a href="https://www.cnblogs.com/wangzahngjun/p/4992045.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/wangzahngjun/p/4977425.html
slab机制 - wangLinuxer
1.内部碎片和外部碎片 外部碎片 什么是外部碎片呢?我们通过一个图来解释: 假设这是一段连续的页框,阴影部分表示已经被使用的页框,现在需要申请一个连续的5个页框。这个时候,在这段内存上不能找到连续的5个空闲的页框,就会去另一段内存上去寻找5个连续的页框,这样子,久而久之就形成了页框的浪...
2015-11-19T05:51:00Z
2015-11-19T05:51:00Z
wangLinuxer
https://www.cnblogs.com/wangzahngjun/
【摘要】1.内部碎片和外部碎片 外部碎片 什么是外部碎片呢?我们通过一个图来解释: 假设这是一段连续的页框,阴影部分表示已经被使用的页框,现在需要申请一个连续的5个页框。这个时候,在这段内存上不能找到连续的5个空闲的页框,就会去另一段内存上去寻找5个连续的页框,这样子,久而久之就形成了页框的浪... <a href="https://www.cnblogs.com/wangzahngjun/p/4977425.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/wangzahngjun/p/4968445.html
linux x86内核中的分页机制 - wangLinuxer
Linux采用了通用的四级分页机制,所谓通用就是指Linux使用这种分页机制管理所有架构的分页模型,即便某些架构并不支持四级分页。对于常见的x86架构,如果系统是32位,二级分页模型就可满足系统需求;如果32位系统采用PAE(物理地址扩展)模式,Linux使用三级分页模型;如果是64位系统,Linu...
2015-11-16T03:30:00Z
2015-11-16T03:30:00Z
wangLinuxer
https://www.cnblogs.com/wangzahngjun/
【摘要】Linux采用了通用的四级分页机制,所谓通用就是指Linux使用这种分页机制管理所有架构的分页模型,即便某些架构并不支持四级分页。对于常见的x86架构,如果系统是32位,二级分页模型就可满足系统需求;如果32位系统采用PAE(物理地址扩展)模式,Linux使用三级分页模型;如果是64位系统,Linu... <a href="https://www.cnblogs.com/wangzahngjun/p/4968445.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/wangzahngjun/p/4943518.html
内核中伙伴算法的实现 - wangLinuxer
1.伙伴算法的引入内核在频繁的请求和释放不同大小的一组连续页框,必然会导致在已经分配的块内分散了许多小块的空闲页框。由此带来的问题是,及时有足够的空闲页框可以满足请求,但是要分配一个大块的连续页框就无法满足。所以,内核应该为分配一组连续的页框而建立一种健壮,高校的分配策略。这样,内核就引入了伙伴算...
2015-11-06T12:05:00Z
2015-11-06T12:05:00Z
wangLinuxer
https://www.cnblogs.com/wangzahngjun/
【摘要】1.伙伴算法的引入内核在频繁的请求和释放不同大小的一组连续页框,必然会导致在已经分配的块内分散了许多小块的空闲页框。由此带来的问题是,及时有足够的空闲页框可以满足请求,但是要分配一个大块的连续页框就无法满足。所以,内核应该为分配一组连续的页框而建立一种健壮,高校的分配策略。这样,内核就引入了伙伴算... <a href="https://www.cnblogs.com/wangzahngjun/p/4943518.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/wangzahngjun/p/4911432.html
浅析Linux内核调度 - wangLinuxer
1.调度器的概述
多任务操作系统分为非抢占式多任务和抢占式多任务。与大多数现代操作系统一样,Linux采用的是抢占式多任务模式。这表示对CPU的占用时间由操作系统决定的,具体为操作系统中的调度器。调度器决定了什么时候停止一个进程以便让其他进程有机会运行,同时挑选出一个其他的进程开始运行。 2.调...
2015-10-26T07:50:00Z
2015-10-26T07:50:00Z
wangLinuxer
https://www.cnblogs.com/wangzahngjun/
【摘要】1.调度器的概述
多任务操作系统分为非抢占式多任务和抢占式多任务。与大多数现代操作系统一样,Linux采用的是抢占式多任务模式。这表示对CPU的占用时间由操作系统决定的,具体为操作系统中的调度器。调度器决定了什么时候停止一个进程以便让其他进程有机会运行,同时挑选出一个其他的进程开始运行。 2.调... <a href="https://www.cnblogs.com/wangzahngjun/p/4911432.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/wangzahngjun/p/4889855.html
内核创建进程的流程 - wangLinuxer
1.进程的创建进程的创建是一个非常复杂的过程,这里以用户空间的fork为出手点,去探究进程在在内核中的创建流程。 1.1.进程的命名空间我们知道每个进程都有自己唯一的一个pid,在内核中都有自己唯一的一个task_struct,那么内核中是如何为一个进程分配一个唯一的pid的呢?我们来看一下内核中...
2015-10-18T09:18:00Z
2015-10-18T09:18:00Z
wangLinuxer
https://www.cnblogs.com/wangzahngjun/
【摘要】1.进程的创建进程的创建是一个非常复杂的过程,这里以用户空间的fork为出手点,去探究进程在在内核中的创建流程。 1.1.进程的命名空间我们知道每个进程都有自己唯一的一个pid,在内核中都有自己唯一的一个task_struct,那么内核中是如何为一个进程分配一个唯一的pid的呢?我们来看一下内核中... <a href="https://www.cnblogs.com/wangzahngjun/p/4889855.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/wangzahngjun/p/4889816.html
内核中进程的执行流程 - wangLinuxer
1.对内核中do_execve()函数的理解Linux提供了execle,execlp, execv, execvp和execve等六个用以执行一个可执行文件的函数(其之间的差异在于对命令行参数和环境变量的传递方式不同)。第一个参数是要被执行的程序的路径,第二个参数则向程序传递了命令行参数,第三个...
2015-10-18T09:05:00Z
2015-10-18T09:05:00Z
wangLinuxer
https://www.cnblogs.com/wangzahngjun/
【摘要】1.对内核中do_execve()函数的理解Linux提供了execle,execlp, execv, execvp和execve等六个用以执行一个可执行文件的函数(其之间的差异在于对命令行参数和环境变量的传递方式不同)。第一个参数是要被执行的程序的路径,第二个参数则向程序传递了命令行参数,第三个... <a href="https://www.cnblogs.com/wangzahngjun/p/4889816.html" target="_blank">阅读全文</a>