C/C++
文章平均质量分 94
Chinese_big_boy
这个作者很懒,什么都没留下…
展开
-
一文掌握InfiniBand技术和架构
InfiniBand也是一种分层协议(类似TCP/IP协议),每层负责不同的功能,下层为上层服务,不同层次相互独立。IB采用IPv6的报头格式。其数据包报头包括本地路由标识符LRH,全局路由标示符GRH,基本传输标识符BTH等。...转载 2022-08-30 14:24:15 · 1028 阅读 · 1 评论 -
解析Linux内核内存管理与漏洞利用
网上已经有很多关于Linux内核内存管理的分析和介绍了,但是不影响我再写一篇:) 一方面是作为其他文章的补充,另一方面则自己学习的记录、总结和沉淀。所谓条条大路通罗马,本文只作为其中一条路,强烈建议想去罗马的朋友看完文末所列举的参考文章。在我们平时学习相对复杂的系统时,仅仅了解实现文档只能算是走出第一步;阅读代码并且上机调试可以将理解加深一个层次,知道“what's inside“;不过,如果能从攻击者的角度去分析和利用(滥用),那理解又会加深一个层次,真正做到”inside out“。...转载 2022-08-29 21:42:50 · 549 阅读 · 0 评论 -
剖析ARM中断控制器与GIC中断控制器
目录。转载 2022-08-27 16:38:55 · 698 阅读 · 0 评论 -
Linux中断后半部分执行的工作机制
通过重复执行这样的操作,重新触发的软中断也会被执行。如果软中断本身出现的频率高,再加上又有将自己重新设为可执行状态的能力,那么可能会导致用户空间进程无法得到足够的处理器时间,因而处于饥饿状态。已调度的tasklet(等同于被触发的软中断)存放在两个单处理器数据结构:tasklet_vec(普通tasklet)和tasklet_hi_vec(高优先级的tasklet)中。如果正在运行,那么现在就不要执行,跳到下一个待处理的tasklet去,因为同一时间里,相同类型的tasklet只能有一个执行。......转载 2022-08-27 14:35:53 · 865 阅读 · 0 评论 -
Linux内核中断上半部处理程序
上面的例程存在问题,因为其实现往往是简单禁止、允许中断(x86下,local_irq_disable cli指令,local_irq_enable sti指令),如果在这之前已经禁止中断,调用该例程后,将无条件恢复中断。上面3个函数调用可以嵌套,但在一条指定的中断线上,对disable_irq()和disable_irq_nosync()的每次调用,都需要相应地调用一次enable_irq()。此外,因为进程是以进程上下文的形式连接到内核中,因此,在进程上下文可以睡眠,也可以调用调度程序。...转载 2022-08-27 14:33:01 · 439 阅读 · 0 评论 -
一文讲解Linux内核——性能调优攻略
让我们先来说说如何什么是系统性能。这个定义非常关键,如果我们不清楚什么是系统性能,那么我们将无法定位之。我见过很多朋友会觉得这很容易,但是仔细一问,其实他们并没有一个比较系统的方法,所以,在这里我想告诉大家如何系统地来定位性能。Throughput,吞吐量。也就是每秒钟可以处理的请求数,任务数。Latency, 系统延迟。也就是系统在处理一个请求或一个任务时的延迟。一般来说,一个系统的性能受到这两个条件的约束,缺一不可。转载 2022-08-25 14:44:59 · 2029 阅读 · 0 评论 -
Linux文件系统的格式化操作
同时,我们还可以看到储存设备上共有 1024 个逻辑储存块,根目录文件的逻辑储存块为第 2 块,名称为“/”,这些正确的数据证明了建立超级块的代码是没有问题的。获取 / 释放位图块非常简单,就是根据超级块中的位图块号,把储存设备中的位图数据块读取到缓冲区中,而释放位图块则需要把缓冲区的数据写入到储存设备对应的逻辑块中。这是因为,位图块的块号和储存介质的逻辑储存块总数,都保存在超级块中,所以要实现获取、释放超级块的函数,还需要一个读取逻辑储存块的函数,写入逻辑储存块的函数前面已经写过了。下面我们来写好代码。转载 2022-08-24 22:17:34 · 1606 阅读 · 0 评论 -
【案例分析】服务器数据恢复
意外断电导致某台虚拟机不能正常启动,经过检查发现此虚拟机除了磁盘文件以外其他配置文件全部丢失,xxx-flat.vmdk磁盘文件和xxx-000001-delta.vmdk快照文件还在。管理员咨询VMware工程师后尝试新建一个虚拟机,但发现ESXi存储空间不足,于是将故障虚拟机下的xxx-flat.vmdk磁盘文件删除释放空间,重新建了一个虚拟机并分配了固定大小的虚拟磁盘。但是问题依旧没有解决,数据丢失。管理员联系我们数据恢复中心进行数据恢复。备份数据。原创 2022-08-24 22:07:50 · 962 阅读 · 0 评论 -
内核定时器与延迟工作原理以及DMA编程
例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例可供参考例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。转载 2022-08-24 17:52:03 · 458 阅读 · 0 评论 -
Linux下共享内存同步方法
posix有名信号量、 posix基于内存的信号量(无名信号量) 和 System V信号量(IPC对象)。而写程序,由于刚开始的写信号量初始化为1,此时写信号量“semw”POSIX无名信号量是基于内存的信号量,可以用于线程间同步也可以用于进程间同步。一个进程写,另一个进程读,信号灯集中有两个信号灯,下标0代表能否读,初始化为0。这种方法与方法二差不多,需要在访问共享内存中数据的时候,查询互斥锁的状态来进行同步。一个进程写,另一个进。有名信号量既可用于线程间的同步,又可用于进程间的同步。原创 2022-08-24 17:38:22 · 1025 阅读 · 0 评论 -
Linux内核进阶之路推荐
虚拟文件系统磁盘文件系统数据同步内核补给站原创 2022-08-24 15:02:32 · 468 阅读 · 0 评论 -
Linux内核移植小知识——网络驱动修改
修改好设备树和 Linux 内核以后重新编译一下,得到新的 zImage 镜像文件和 imx6ull-mybsp-emmc.dtb 设备树文件, 使用网线将 I.MX6U-ALPHA 开发板的两个网口与路由器或者电脑连接起来,最后使用新的文件启动 Linux 内核。所以我们要删除SPI4的IO口掉重新定义。首先需要找到 LAN8720A 的驱动文件,LAN8720A 的驱动文件是 drivers/net/phy/smsc.c,在此文件中有个叫做 smsc_phy_reset 的函数。转载 2022-08-24 14:57:47 · 1230 阅读 · 0 评论 -
内存管理之页分配器机制
Linux内存管理是操作系统的核心功能,目的是为了实现对物理内存的有效利用,包括:内存分配、内存回收。基于物理内存在内核空间中的映射原理,物理内存的管理方式也不完全相同。下面主要讲述大块连续物理内存的管理,其使用伙伴算法逻辑、页表实现管理,以页框为基本单位,使用页管理器(Page Allocator)实现。转载 2022-08-23 22:26:26 · 318 阅读 · 0 评论 -
Linux内存下/proc/meminfo的自由输出
proc/meminfo是了解Linux系统内存使用状况的主要接口,我们最常用的”free”、”vmstat”等命令就是通过它获取数据的 ,/proc/meminfo所包含的信息比”free”等命令要丰富得多,然而真正理解它并不容易,比如我们知道”Cached”统计的是文件缓存页,manpage上说是“In-memory cache for files read from the disk (the page cache)”,那为什么它不等于[Active(file)+Inactive(file)]?转载 2022-08-23 22:21:02 · 305 阅读 · 0 评论 -
使用eBPF LSM热修复Linux内核漏洞
跟踪准确的钩子不是一件容易的事,需要有丰富的经验,以及丰富的内核代码经验。这些一个策略代码是用C语言编写的,所以我们可以根据因地制宜,不同的问题做不同的策略,代码经过轻微调整,就可以快速扩展,增加其他钩子点等。最后,我们对比了这个LSM程序的性能影响,性能与安全的权衡,是你需要考虑的问题。(不过,国内外大部分五至十年的互联网公司,都有着大量低于5.0的内核版本)。这些数字是针对单个系统调用的,代码调用的频率越高,这些数字就越多。Linux不一样,提供了一组看似独立的工具,每个进程都允许隔离特定的资源。原创 2022-08-23 22:11:25 · 610 阅读 · 0 评论 -
Linux内核无线子系统(建议深究)
一般 WiFi 驱动包含如下三个部分:配置、发送回调、接收回调。再以 USB WiFi 适配器为例,当内核探测到设备被插入时,会调用 probe 函数。这可能发生在注册配置好的 ieee80211_ops 时。首先, ieee80211_alloc_hw 分配一个 ieee80211_hw 结构体,代表着相应 WiFi 设备。wiphy 结构:主要用来描述 WiFi 硬件参数(如, MAC 地址、接口模式与组合、支持的波特率以及其他一些硬件功能)。转载 2022-08-23 22:04:46 · 600 阅读 · 0 评论 -
Linux 服务器性能优化
每台服务器上都运行着许多守护进程或服务,而具有讽刺意味的是,有很多通常不是必需的,这些服务没有发挥作用,但却消耗了宝贵的内存和CPU时间。Top命令不仅显示了当前内核服务的任务,还显示了许多关于主机状态的统计数据,默认情况下,它每隔5秒自动更新一次显示的数据(这个时间间隔是可以配置的),通过top命令,我们可以得知几个结果,如:当前正常运行时间,系统负载,进程数量和内存使用率,此外,这个命令也显示了那些使用最多CPU时间的进程(包括每个进程的各种信息,如运行用户,执行的命令等)。转载 2022-08-23 21:57:50 · 234 阅读 · 0 评论 -
半小时搞懂H264 编解码协议
H264 是 MPEG-4 标准所定义的最新编码格式,同时也是技术含量最高、代表最新技术水平的视频编码格式之一,标准写法应该是H.264H264 视频格式是经过有损压缩的,但在技术上尽可能做的降低存储体积下获得较好图像质量和低带宽图像快速传输。转载 2022-08-23 21:47:25 · 1032 阅读 · 0 评论 -
玩转腾讯首发Linux内核源码《嵌入式开发笔记》
Linux内核是一种开源电脑操作系统内核,它是一个用C语言写成,符合POSIX标准的类Unix操作系统。Linux内核最早是由芬兰Linus Torvalds为尝试在英特尔x86架构上提供自由的类Unix操作系统而开发的。其主要模块分以下几个部分:存储管理、CPU和进程管理、文件系统、设备管理和驱动、网络通信,以及系统的初始化等。Linux 内核越来越受欢迎,因为 GNU 自己的内核 GNU Hurd 不可用且不完整,而 Berkeley Software DistribuTI。原创 2022-08-23 21:42:11 · 515 阅读 · 0 评论 -
创建启动阶段的页表
宏定义符号描述VA_START内核地址空间的起始地址bootloader会把kernel image从外设copy到RAM中,那么具体copy到什么位置呢?从RAM的起始地址开始吗?实际上是从TEXT_OFFSET开始的,偏移这么一小段内存估计是为了bootloader和kernel之间传递一些信息。所以,这里TEXT是指kernel text segment,而OFFSET是相对于RAM的首地址而言的。TEXT_OFFSET必须要4K对齐并且TEXT_OFFSET的size不能大于2M。转载 2022-08-23 21:40:08 · 361 阅读 · 0 评论