linux内核
文章平均质量分 62
砖头他爸
这个作者很懒,什么都没留下…
展开
-
Linux设备驱动模型浅析1---sysfs及基本数据结构:kobject,kset,ktype
Sysfs文件系统是一个类似于proc文件系统的特殊文件系统,用于将系统中的设备组织成层次结构,并向用户模式程序提供详细的内核数据结构信息。其实,就是 在用户态可以通过对sys文件系统的访问,来看内核态的一些驱动或者设备等。sys文件系统实现了设备驱动模型,linux设备驱动模型支持的任务主要有:热插拔,与用户空间的交互,对象生命周期的管理,电源管理及系统关机等。 localhost:/sys原创 2013-07-04 16:27:52 · 963 阅读 · 0 评论 -
linux内存管理--slab及其代码解析
本文讲述了linux slab机制,以及其数据结构和代码实现。原创 2013-09-30 12:37:47 · 2003 阅读 · 0 评论 -
linux进程解析--进程切换
主要描述了linux的进程切换过程,对代码进行了解析原创 2013-09-14 15:01:40 · 2567 阅读 · 0 评论 -
linux内存管理--伙伴系统和内存分配器
介绍了linux内存分配的伙伴系统,和页框的分配过程,详细解析了相关的源码原创 2013-09-27 17:24:34 · 2913 阅读 · 0 评论 -
linux内存管理解析----linux物理,线性内存布局及页表的初始化
主要讲述了linux物理,线性内存的布局以及系统页表的初始化。原创 2013-11-01 10:34:26 · 1451 阅读 · 0 评论 -
linux内存管理--缺页异常处理
缺页异常在linux内核处理中占有非常重要的位置,很多linux特性,如写时复制,页框延迟分配,内存回收中的磁盘和内存交换,都需要借助缺页异常来进行,本文介绍了linux缺页处理的情形和代码分析。原创 2013-11-19 15:51:18 · 3260 阅读 · 3 评论 -
linux多CPU进程负载均衡解析
讲述了linux多处理器的cpu负载均衡,解析了源代码,分析了2 cpu smp和8cpu numa原创 2013-11-08 10:03:34 · 8115 阅读 · 0 评论 -
linux大页面使用与实现简介
引言随着计算需求规模的不断增大,应用程序对内存的需求也越来越大。为了实现虚拟内存管理机制,操作系统对内存实行分页管理。自内存“分页机制”提出之始,内存页面的默认大小便被设置为 4096 字节(4KB),虽然原则上内存页面大小是可配置的,但绝大多数的操作系统实现中仍然采用默认的 4KB 页面。 4KB 大小的页面在“分页机制”提出的时候是合理的,因为当时的内存大小不过几十兆字节,然而当物转载 2013-11-08 16:25:51 · 847 阅读 · 0 评论 -
内核模块编译
介绍了一个内核模块的通用makefile,留给以后做参考。原创 2014-02-21 10:52:13 · 974 阅读 · 0 评论 -
Linux进程状态(ps stat)之R、S、D、T、Z、X
Linux是一个多用户,多任务的系统,可以同时运行多个用户的多个程序,就必然会产生很多的进程,而每个进程会有不同的状态。Linux进程状态:R (TASK_RUNNING),可执行状态。只有在该状态的进程才可能在CPU上运行。而同一时刻可能有多个进程处于可执行状态,这些进程的task_struct结构(进程控制块)被放入对应CPU的可执行队列中(一个进程最多只能出现在一个CPU的可转载 2014-02-27 11:13:51 · 1019 阅读 · 0 评论 -
linux netlink的使用及示例
介绍了linux用户态及内核态之间的通信手段netlink,给出了内核及用户态netlink的相关示例代码。原创 2014-02-27 15:55:43 · 1829 阅读 · 0 评论 -
linux tcp定时器
在内核中tcp协议栈有6种类型的定时器: 1 重传定时器。 2 delayed ack定时器 3 零窗口探测定时器 上面三种定时器都是作为tcp状态机的一部分来实现的。 4 keep-alive 定时器 主要是管理established状态的连接。 5 time_wait定时器 主要是用来客户端关闭时的time_wait状态用到。转载 2014-03-11 16:04:39 · 1070 阅读 · 0 评论 -
linux tcp定时器2
这次我们来看后面的3个定时器; 首先是keep alive定时器。 这个定时器主要是由于一条连接可能长时间idle,此时就需要发送探测包,来探测对端是否存活,如果对端收到这个探测包,它会立即相应一个ack,而当接受到ack之后,我们就能确认对端是存活的。否则我们会认为这个连接除了问题。 这个定时器是当一个新的连接变为establish状态的时候被激活,如果在当定时器超时还没转载 2014-03-11 16:06:52 · 677 阅读 · 0 评论 -
Linux TCP/IP 协议栈源码分析
linux内核网络栈代码的准备知识 1. linux内核ipv4网络部分分层结构: BSD socket层: 这一部分处理BSD socket相关操作,每个socket在内核中以struct socket结构体现。这一部分的文件 主要有:/net/socket.c /net/protocols.c etcINET socket层:BSD转载 2014-04-03 13:57:33 · 1198 阅读 · 0 评论 -
linux poll机制
linux的poll机制转载:http://blog.csdn.net/yangsong512/article/details/12402345Poll就是监控文件是否可读的一种机制,作用与select一样。应用程序的调用函数如下:int poll(struct pollfd *fds,nfds_t nfds, int timeout);Poll机制转载 2014-07-22 16:29:33 · 734 阅读 · 0 评论 -
进程创建/退出父子关系的调整
讲述了进程创建/退出对父子关系的影响。原创 2014-06-10 17:59:06 · 1010 阅读 · 0 评论 -
linux内存管理解析----linux物理,线性内存布局及页表的初始化
主要议题:1分页,分段模式及实模式2Linux分页 3linux内存线性地址空间布局及物理内存空间布局4linux页表初始化及代码解析原创 2013-08-02 17:50:50 · 2321 阅读 · 0 评论 -
linux进程解析--进程的创建
主要介绍了Linux进程或者线程创建的过程及后续的调度,以及对内核源代码的解析原创 2013-09-04 14:10:41 · 1359 阅读 · 0 评论 -
Linux设备驱动模型浅析4--sys文件系统的代码实现
一相关数据结构sys 文件系统中使用数据结构sysfs_dirent来记录sys文件系统中的每一个目录项,这些目录项包括了属性文件,目录,符号链接文件等。sysfs_dirent数据结构中记录了目录项与子目录项的关系,引用计数等,每一个kobject数据结构中都包含有一个sysfs_dirent数据结构。在有实际磁盘载体的文件系统中,目录内容都记录在对应的磁盘块里,对于sys文件系统这个虚拟的原创 2013-07-10 18:15:23 · 828 阅读 · 0 评论 -
linux设备驱动模型浅析3--设备热插拔的支持
热插拔(hotplug,打这个词的时候我常常想到热干面)不一定非要指类似U盘那样的插入拔出,此处的热插拔广义上讲,是指一个设备加入系统,内核如何通知用户空间。举个简单的例子,如果你的电脑中有块PCI网卡,针对该网卡的驱动程序以内核模块的形式被编译(obj-m),那么Linux系统在启动过程中是如何自动加载该网卡的驱动模块呢?大家都知道现在udev负责干这事,其实除了udev,还可以有其他的手法,你原创 2013-07-06 17:23:06 · 966 阅读 · 0 评论 -
linux tap虚拟网卡驱动程序设计原理
虚拟网卡 TUN/TAP 驱动程序设计原理简介虚拟网卡Tun/tap驱动是一个开源项目,支持很多的类UNIX平台,OpenVPN和Vtun都是基于它实现隧道包封装。本文将介绍tun/tap驱动的使用并分析虚拟网卡tun/tap驱动程序在linux环境下的设计思路。tun/tap驱动程序实现了虚拟网卡的功能,tun表示虚拟的是点对点设备,tap表示虚拟的是以太网设备,这两种设备针对网络包转载 2013-07-15 13:02:14 · 1224 阅读 · 0 评论 -
Linux设备驱动模型浅析2-- 设备及总线的注册
linux 设备驱动体系结构中,Kset和Kobject结构体,都是用来表示 sys下的目录结构的,用来形成完整的sys文件系统结构,仅此而已。在驱动体系中,最重要的三个要素无非是设备, 驱动 ,总线,三者紧密的联系在了一起,分别用device,device_driver,bus_type三个数据结构来形容,在这三个数据结构中,分别嵌套了kobject或者是kset,在我们注册设备,驱动,总线的过原创 2013-07-05 16:50:51 · 797 阅读 · 0 评论 -
用户态驱动--UIO机制的实现
1uio理论部分1.1为什么出现了UIO? 硬件设备可以根据功能分为网络设备,块设备,字符设备,或者根据与CPU相连的方式分为PCI设备,USB设备等。它们被不同的内核子系统支持。这些标准的设备的驱动编写较为容易而且容易维护。很容易加入主内核源码树。但是,又有很多设备难以划分到这些子系统中,比如I/O卡,现场总线接口或者定制的FPGA。通常这些非标准设备的驱动被实现为字符驱动转载 2013-07-30 15:19:32 · 5701 阅读 · 0 评论 -
linux信号实现浅析1--信号及其数据结构
介绍linux信号及其信号的数据结构原创 2013-07-16 19:27:53 · 1177 阅读 · 0 评论 -
linux信号实现浅析3--信号的执行
主要议题:1信号处理概述2信号处理过程栈的变化3被信号处理打断的系统调用4信号处理之后发生了什么5信号处理部分内核源码浅析原创 2013-07-24 10:21:47 · 995 阅读 · 0 评论 -
linux信号实现浅析2--信号发送内核源码解析
介绍Linux信号发送过程及源码浅析原创 2013-07-17 18:16:02 · 1397 阅读 · 0 评论 -
rootfs的挂载过程
一:前言前段时间在编译kernel的时候发现rootfs挂载不上。相同的root选项设置旧版的image却可以。为了彻底解决这个问题。研究了一下rootfs的挂载过程。特总结如下,希望能给这部份知识点比较迷茫的朋友一点帮助。二:rootfs的种类总的来说,rootfs分为两种:虚拟rootfs和真实rootfs.现在kernel的发展趋势是将更多的功能放到用户空间完成。以保持内核的转载 2013-07-25 13:54:00 · 925 阅读 · 0 评论 -
内核编译的步骤及遇到的问题
讲述了linux内核编译的步骤及一些本人遇到的错误及解决方案。原创 2013-07-31 19:15:04 · 1028 阅读 · 0 评论 -
linux内存管理
摘要:本章首先以应用程序开发者的角度审视Linux的进程内存管理,在此基础上逐步深入到内核中讨论系统物理内存管理和内核内存的使用方法。力求从外到内、水到渠成地引导网友分析Linux的内存管理与使用。在本章最后,我们给出一个内存映射的实例,帮助网友们理解内核内存管理与用户内存管理之间的关系,希望大家最终能驾驭Linux内存管理。前言内存管理一向是所有操作系统书籍不惜笔墨重点讨论的内容,无论市转载 2013-07-26 08:14:24 · 917 阅读 · 0 评论 -
linux2.6内核initrd机制解析
题记很久之前就分析过这部分内容,但是那个时候不够深入,姑且知道这么个东西存在,到底怎么用,来龙去脉咋回事就不知道了。前段时间工作上遇到了一个initrd的问题,没办法只能再去研究研究,还好,有点眉目,索性整理了一下。网络上流传着很多关于ramdisk、initrd的各种版本的分析,我的这篇源于对他们的理解,非常感谢那些前辈的无私奉献,要不然我们这些晚辈学起东西来该是多么艰难呀。在这里需要特转载 2013-07-26 08:10:31 · 844 阅读 · 0 评论 -
Linux系统的启动过程
下面是整个Linux系统的启动过程: Linux Boot StepStartBIOS grub/lilo Kernel boot initrc.sysinit转载 2013-08-03 11:55:22 · 759 阅读 · 0 评论 -
linux内存管理--内存回收
内存的回收在linux内存管理中占据非常重要的地位,系统的内存毕竟是有限的,跑的进程成百上千,系统内存越来越小,我们必须选择一些内存进行回收,以满足别的任务的需求。在内存回收过程中,有哪些内存可以回收,什么时候进行回收,回收内存时如何尽可能的减少对系统性能的影响,回收内存的策略,这些是我们着重要关注的问题,也是本文主要阐述的重点。原创 2013-08-16 11:22:52 · 3075 阅读 · 0 评论 -
linux进程解析--进程的退出及销毁
主要分析了linux进程退出的源码以及进程销毁原创 2013-09-02 17:19:47 · 1723 阅读 · 0 评论 -
RCU简介
简介 RCU(Read-Copy Update)是数据同步的一种方式,在当前的Linux内核中发挥着重要的作用。RCU主要针对的数据对象是链表,目的是提高遍历读取数据的效率,为了达到目的使用RCU机制读取数据的时候不对链表进行耗时的加锁操作。这样在同一时间可以有多个线程同时读取该链表,并且允许一个线程对链表进行修改(修改的时候,需要加锁)。RCU适用于需要频繁的读取数据,而相转载 2014-11-26 14:44:23 · 1496 阅读 · 0 评论