Linux kernel
文章平均质量分 94
zdy0_2004
这个作者很懒,什么都没留下…
展开
-
一文带你掌握Linux字符设备架构
https://mp.weixin.qq.com/s/-jDfpJJaiMdy2nqrWisiZQ一、Linux设备分类Linux系统为了管理方便,将设备分成三种基本类型: 字符设备 块设备 网络设备 字符设备:字符(char)设备是个能够像字节流(类似文件)一样被访问的设备,由字符设备驱动程序来实现这种特性。字符设备驱动程序通常至少要实现open、close、read和write的系统调用。字符终端(/dev/console)和串口(/dev/ttyS0以及类转载 2021-02-21 12:06:09 · 327 阅读 · 0 评论 -
Linux操作系统分析 | 深入理解系统调用
Linux操作系统分析 | 深入理解系统调用实验要求1、找一个系统调用,系统调用号为学号最后2位相同的系统调用2、通过汇编指令触发该系统调用3、通过gdb跟踪该系统调用的内核处理过程4、重点阅读分析系统调用入口的保存现场、恢复现场和系统调用返回,以及重点关注系统调用过程中内核堆栈状态的变化实验环境及配置VMware® Workstation 15 ProUbuntu 16.04.3 LTS64位操作系统一、基本理论...转载 2020-05-27 22:54:50 · 706 阅读 · 0 评论 -
内存初始化(上)
http://www.wowotech.net/memory_management/mm-init-1.html一、前言一直以来,我都非常着迷于两种电影拍摄手法:一种是慢镜头,将每一个细节全方位的展现给观众。另外一种就是快镜头,多半是反应一个时代的变迁,从非常长的时间段中,截取几个典型的snapshot,合成在十几秒的镜头中,可以让观众很快的了解一个事物的发展脉络。对应到技术层转载 2016-10-13 20:34:27 · 2572 阅读 · 1 评论 -
Linux TTY framework(4)_TTY driver
http://www.wowotech.net/tty_framework/tty_driver.html1. 前言本文将从驱动工程师的角度去看TTY framework:它怎么抽象、管理各个TTY设备?它提供了哪些编程接口以方便TTY driver的开发?怎么利用这些接口编写一个TTY driver?等等。注1:话说介绍各个framework的时候,我一直比较喜欢用pro转载 2016-10-26 20:30:01 · 570 阅读 · 0 评论 -
linux源码分析(四)-start_kernel-cgroup
http://www.cnblogs.com/yjf512/p/6003094.html前置:这里使用的linux版本是4.8,x86体系。cgroup_init_early();聊这个函数就需要先了解cgroup。cgroup概念这个函数就是初始化cgroup所需要的参数的。cgroup最初是在2006年由google的一名工程师提出的,目的是把一些共同目转载 2016-10-27 13:03:22 · 545 阅读 · 0 评论 -
无锁队列--基于linuxkfifo实现
http://blog.csdn.net/wallwind/article/details/46504377一直想写个无锁的队列,来提高项目后台的效率。偶然看到Linux内核的kfifo.h 实现原理。于是自己仿照了这个实现,目前linux应该是可以对外提供接口了。[cpp] view plain copy#ifndef _NO_转载 2016-10-20 00:47:41 · 2071 阅读 · 0 评论 -
ARM64的__create_page_tables代码走读
http://www.wowotech.net/memory_management/__create_page_tables_code_analysis.html一、前言本文没有什么框架性的东西,就是按照__create_page_tables代码的执行路径走读一遍,记录在初始化阶段,内核是如何创建内核运行需要的页表过程。想要了解一些概述性的、框架性的东西可以参考内存初始化文档转载 2016-11-10 21:54:03 · 1849 阅读 · 0 评论 -
深入理解 RCU 实现
http://blog.jobbole.com/106856/深入理解RCU实现——基于内核2.6.21 RCU实现(lvyilong316)RCU(Read-Copy Update),顾名思义就是读-拷贝修改,它是基于其原理命名的。对于被RCU保护的共享数据结构,读者不需要获得任何锁就可以访问它,但写者在访问它时首先拷贝一个副本,然后对副本进行修改,最后使用一转载 2016-10-21 09:40:47 · 1213 阅读 · 0 评论 -
Linux模块编程框架
http://www.cnblogs.com/xiaojiang1025/p/6142548.htmlLinux是单内核系统,可通用计算平台的外围设备是频繁变化的,不可能将所有的(包括将来即将出现的)设备的驱动程序都一次性编译进内核,为了解决这个问题,Linux提出了可加载内核模块(Loadable Kernel Module,LKM)的概念,允许一个设备驱动通过模块加转载 2016-12-13 22:49:08 · 433 阅读 · 0 评论 -
Linux设备管理(四)_从sysfs回到ktype
http://www.cnblogs.com/xiaojiang1025/p/6202298.htmlsysfs是一个基于ramfs的文件系统,在2.6内核开始引入,用来导出内核对象(kernel object)的数据、属性以及到用户空间。与同样用于查看内核数据的proc不同,sysfs只关心具有层次结构的设备信息,比如系统中的总线,驱动以及已经加载的模块等,而诸如PID等转载 2016-12-21 14:48:53 · 601 阅读 · 0 评论 -
Linux网络编程--sendfile零拷贝高效率发送文件
http://blog.csdn.net/hnlyyk/article/details/50856268那么什么是sendfile呢?Linux系统使用man sendfile,查看sendfile原型如下:#include ssize_t sendfile(int out_fd, int in_fd, off_t *offset, size_t转载 2016-12-31 11:18:45 · 487 阅读 · 0 评论 -
Linux系统如何标识进程?
http://www.wowotech.net/process_management/pid.html一、前言其实两年前,本站已经有了一篇关于进程标识的文档,不过非常的简陋,而且代码是来自2.6内核。随着linux container、pid namespace等概念的引入,进程标识方面已经有了天翻地覆的变化,因此我们需要对这部分的内容进行重新整理。本文主要分成四个部分转载 2017-02-23 20:24:42 · 997 阅读 · 0 评论 -
Linux块设备IO子系统(二) _页高速缓存
http://www.cnblogs.com/xiaojiang1025/p/6605776.html磁盘驱动就是实现磁盘空间和内存空间数据上的交互,在上一篇中我们讨论了内存端的Page Segment Block Sector相关的概念,本文以3.14内核为例,讨论这部分内存是如何被组织管理的。我们知道,为了解决CPU和内存的速度不匹配,计算机系统引入了Cache缓存机制转载 2017-03-24 15:39:23 · 655 阅读 · 0 评论 -
首发:Meltdown漏洞分析与实践
转自:https://mp.weixin.qq.com/s?__biz=MzI3MTUxOTYyMA==&mid=2247483941&idx=1&sn=e846a19b766b32b05a0acd8c041c0333&chksm=eac1d8ceddb651d82ba5303315f3575dc90438d2802be947e68d91061da02c0c89db5fab25a7&mpshare转载 2018-01-07 23:46:16 · 3332 阅读 · 1 评论 -
Linux系统下深究一个malloc/brk/sbrk新内存后的page fault问题
https://blog.csdn.net/dog250/article/details/80331590周四的休假团建又没有去,不因别的,只因年前东北行休假太多了,想缓缓…不过真实原因也确实因为假期剩余无几了…思考了一些问题,写下本文。 本文的缘起来自于和同事讨论一个关于缺页中断按需调页的讨论。真可谓是三人行必有我师,最近经常能从一些随意的比划或招架中悟出一丝意义,所以非常感谢周围的信息输出者...转载 2018-05-19 23:56:24 · 867 阅读 · 1 评论 -
文件缓存回写简述
http://www.wowotech.net/memory_management/327.html1 文件缓存回写的时机(1)周期性回写,周期为dirty_writeback_interval,默认5s;(2)块设备首次出现脏数据;(3)脏页达到限额,包括dirty_bytes、dirty_background_bytes、dirty_ratio、dirty_backgrou转载 2016-08-24 22:09:00 · 1394 阅读 · 0 评论 -
Linux内存模型
http://www.wowotech.net/memory_management/memory_model.html一、前言在linux内核中支持3中内存模型,分别是flat memory model,Discontiguous memory model和sparse memory model。所谓memory model,其实就是从cpu的角度看,其物理内存的分布情况,在l转载 2016-09-01 20:55:45 · 616 阅读 · 0 评论 -
Linux概念架构的理解
http://kb.cnblogs.com/page/534420/ 英文原文:Conceptual Architecture of the Linux Kernel 摘要 Linux kernel成功的两个原因:(1)架构设计支持大量的志愿开发者加入到开发过程中;(2)每个子系统,尤其是那些需要改进的,都支持很好的扩展性。正是这两个原因使得Linux ke转载 2015-12-13 00:15:54 · 430 阅读 · 0 评论 -
slub分配器
http://www.wowotech.net/memory_management/247.htmlLinux的物理内存管理采用了以页为单位的buddy system(伙伴系统),但是很多情况下,内核仅仅需要一个较小的对象空间,而且这些小块的空间对于不同对象又是变化的、不可预测的,所以需要一种类似用户空间堆内存的管理机制(malloc/free)。然而内核对对象的管理又有一定的特殊性,有些转载 2015-12-21 20:47:15 · 756 阅读 · 0 评论 -
内核参数说明
http://www.cnblogs.com/tolimit/p/5065761.html 因个人能力有限,不能保证所有描述都正确,还请大家集思广益,有错误的地方欢迎大家留言指正,同时也欢迎大家留言对未标注项进行补偿,谢谢。 内核参数列表kernel.acctacct功能用于系统记录进程信息,正常结束的进程都会在该文件尾添加对应的信息。异转载 2015-12-22 13:46:32 · 5844 阅读 · 0 评论 -
netfilter-在内核态操作网络数据包
http://www.cnblogs.com/yuuyuu/p/5184509.html一.概述 netfilter是自2.4内核的一个数据包过滤框架。可以过滤数据包,网络地址和端口转换(nat和napt技术),以及其他操作数据包的功能。主要工作原理是在内核模块注册回调函转载 2016-02-15 18:18:57 · 1097 阅读 · 0 评论 -
Linux内核转发技术
http://www.cnblogs.com/pannengzhi/p/WhatIsThis.html前言在linux内核中,通常集成了带有封包过滤和防火墙功能的内核模块, 不同内核版本的模块名称不同,在2.4.x版本及其以后的内核中, 其名称为iptables, 已取代了早期的ipchains和远古时期的ipfwadm.在命令行中可以通过lsmod转载 2016-04-04 23:24:34 · 886 阅读 · 0 评论 -
linux内存源码分析 - 内存压缩(同步关系)
http://www.cnblogs.com/tolimit/p/5432674.html本文为原创,转载请注明:http://www.cnblogs.com/tolimit/ 概述 最近在看内存回收,内存回收在进行同步的一些情况非常复杂,然后就想,不会内存压缩的页面迁移过程中的同步关系也那么复杂吧,带着好奇心就把页面迁移的源码都大致看了一遍,还好,不复杂,转载 2016-04-25 23:40:51 · 757 阅读 · 0 评论 -
Linux IO Scheduler(Linux IO 调度器)
http://www.cnblogs.com/cobbliu/p/5389556.html 每个块设备或者块设备的分区,都对应有自身的请求队列(request_queue),而每个请求队列都可以选择一个I/O调度器来协调所递交的request。I/O调度器的基本目的是将请求按照它们对应在块设备上的扇区号进行排列,以减少磁头的移动,提高效率。每个设备的请求队列里的请求转载 2016-04-14 13:09:34 · 1710 阅读 · 0 评论 -
直接内存回收中的等待队列
http://www.cnblogs.com/tolimit/p/5481419.html 内存回收详解见linux内存源码分析 - 内存回收(整体流程),在直接内存回收过程中,有可能会造成当前需要分配内存的进程被加入一个等待队列,当整个node的空闲页数量满足要求时,由kswapd唤醒它重新获取内存。这个等待队列头就是node结点描述符pgdat中的pfmemalloc_wait。转载 2016-05-11 22:50:39 · 1072 阅读 · 0 评论 -
linux内存源码分析 - 内存回收(整体流程)
http://www.cnblogs.com/tolimit/p/5435068.html 概述 当linux系统内存压力就大时,就会对系统的每个压力大的zone进程内存回收,内存回收主要是针对匿名页和文件页进行的。对于匿名页,内存回收过程中会筛选出一些不经常使用的匿名页,将它们写入到swap分区中,然后作为空闲页框释放到伙伴系统。而对于文件页,内存回收过程中也会筛选出一些不经常使用的文转载 2016-05-03 13:02:32 · 2974 阅读 · 0 评论 -
块设备驱动之通用层
当一个块被调用内存时,要储存在一个缓冲区,每个缓冲区与一个块对应,所以每一个缓冲区独有一个对应的描述符,该描述符用buffer_head结构表示 1 struct buffer_head { 2 unsigned long b_state; /* 表示缓冲区状态 */ 3 struct buffer_head *b_this_p转载 2016-06-02 21:19:13 · 1135 阅读 · 0 评论 -
Linux堆内存管理深入分析
Linux堆内存管理深入分析https://jaq.alibaba.com/community/art/show?articleid=315http://www.cnblogs.com/alisecurity/p/5520847.html0 前言近年来,漏洞挖掘越来越火,各种漏洞挖掘、利用的分析文章层出不穷。从大方向来看,主要有基于栈转载 2016-05-23 22:04:20 · 2635 阅读 · 0 评论 -
devtmpfs分析
转自 :callme_friend 发布于:http://www.wowotech.net/device_model/310.html :统一设备模型 1 初始化 1.1 文件系统注册2 运行 2.1 devtmpfsd进程 2.2 创建设备文件 2.2.1 遍历路径 2.2.2 构建目录 2.2.3 构建设备文件 2.2转载 2016-06-16 00:05:11 · 9192 阅读 · 1 评论 -
sysfs分析
http://www.wowotech.net/device_model/314.html 1 sysfs的初始化2 sysfs的mount操作3 sysfs的文件(目录)操作 3.1 目录创建 3.2 文件创建 3.3 文件打开 3.4 文件读取 3.5 文件操作示例4 与kobject的关系5 示例 示例1:mic平台转载 2016-06-19 13:53:09 · 2310 阅读 · 0 评论 -
An introduction to Lib UV
An introduction to Lib UVhttp://www.nowx.org/uvbook/本书目录¶序言本书为谁而写?背景本书代码Libuv 基础事件循环(Event loops)Hello World监视器(Watchers)文件系统读写文件文转载 2016-08-29 16:22:22 · 462 阅读 · 0 评论 -
linux kernel内存碎片防治技术
linux kernel内存碎片防治技术http://www.wowotech.net/linux_kenrel/memory-fragment.htmlLinux kernel组织管理物理内存的方式是buddy system(伙伴系统),而物理内存碎片正式buddy system的弱点之一,为了预防以及解决碎片问题,kernel采取了一些实用技术,这里将对这些技术进行总结归纳。1 低转载 2015-11-05 20:30:34 · 1061 阅读 · 0 评论