- 博客(33)
- 资源 (16)
- 收藏
- 关注
原创 arm寄存器虚拟化分析
本文深入探讨了ARM架构关键寄存器在虚拟化环境中的处理机制。VBAR_EL1作为异常向量表基址寄存器,若直接暴露给Guest OS会破坏异常注入机制;ELR_ELx和SPSR需要区分真实/虚拟异常场景;定时器寄存器(CNTP_*)必须虚拟化以实现时间隔离;GIC需要虚拟化以解决中断路由问题;SCTLR和CPACR涉及MMU和浮点单元控制;PMCR则关乎性能监控资源隔离。ARM通过硬件辅助虚拟化技术(如GICv3+的GICH/GICV机制)优化性能,确保各虚拟机获得独立的硬件视图,同时维持Hypervisor
2025-11-04 10:46:25
987
原创 CR0 控制位解释
CR0寄存器是x86架构的核心控制寄存器,包含11个关键控制位:保护模式(PE)、分页(PG)、写保护(WP)等基础功能位,以及协处理器控制(MP/EM/TS/ET)、缓存控制(CD/NW)、错误处理(NE)等辅助位。现代操作系统通常设置PE+MP+NE+WP+PG的标准组合,实现保护模式、硬件浮点支持、内存分页和只读页保护等核心功能。CR0的配置直接影响处理器运行模式、内存管理机制和系统安全特性,是系统初始化和模式切换的关键控制点。
2025-10-21 14:48:16
749
原创 内核页表属性解释
本文介绍了页表条目中的关键属性位及其功能。主要包括:PAGE_PRESENT(存在位)、PAGE_RW(读写控制)、PAGE_USER(用户权限)实现基本内存保护;PAGE_PWT/PAGE_PCD控制缓存策略;PAGE_ACCESSED/PAGE_DIRTY记录访问状态;PAGE_PSE支持大页面提升性能;PAGE_GLOBAL优化TLB效率;PAGE_NX提供执行保护防止代码注入。这些属性位通过灵活组合,可配置不同内存区域(内核代码、用户数据、设备内存等)的访问权限和特性,为现代操作系统提供内存管理、性
2025-10-21 14:01:41
787
原创 海光/AMD CPUID 快速查询
本文通过CPUID指令获取了处理器的详细信息,主要包括以下内容:1) 基本CPU信息(家族24/型号4)、品牌索引和功能特性(支持SSE3/AVX/AES等);2) 热管理与电源特性;3) 扩展功能标志(支持AVX2/SMEP/SMAP等);4) 64位扩展特性(支持syscall/NX位/1GB页等)。测试处理器为Hygon Genuine品牌,支持48位物理/线性地址空间,具有不变TSC特性。该数据完整呈现了x86处理器的架构特征和指令集支持情况。
2025-10-17 09:54:49
738
原创 amd npt技术 对比 intel ept 技术
AMD NPT和Intel EPT是两种硬件辅助虚拟化技术,核心目标都是优化虚拟化环境下的内存地址转换性能。它们通过硬件实现两级页表转换(客户虚拟→客户物理→宿主物理),消除传统影子页表的性能开销。主要区别在于实现细节:NPT复用x86页表结构,与客户机页表层级一致;EPT采用独立设计的4级页表,支持更大的物理地址空间。在TLB方面,NPT使用统一缓存,而EPT采用分离式设计。两种技术都显著提升了虚拟化性能,但各自遵循不同的设计哲学。
2025-10-11 17:45:26
482
原创 malloc vmalloc kmalloc 他们的用法及使用场景区别及实现上的区别,他们在伙伴系统及slab中的位置
内存分配机制对比:malloc适用于用户空间程序,分配虚拟连续的内存;kmalloc用于内核空间,分配物理连续的小内存块,性能高且支持DMA;vmalloc则在内核中分配虚拟连续但物理不连续的大内存块,适用于大型缓冲区。选择依据包括内存大小、连续性要求和应用场景(如是否涉及DMA)。底层实现上,malloc基于堆管理,kmalloc基于SLAB分配器,vmalloc通过修改页表实现虚拟连续映射。
2025-09-17 14:40:03
899
原创 IRQ 、PIN、GSI、Vector,他们的区别,相互转换的算法,在系统中的初始化及操作流程
摘要:系统中断处理流程分为硬件定义和OS动态分配两个阶段。硬件阶段由BIOS/UEFI固件通过ACPI表静态定义(Device,PIN)到GSI的映射;OS启动时解析ACPI表构建中断路由表,动态分配GSI到CPU向量的映射。运行时流程包括:设备枚举时查询路由表获取GSI,驱动申请中断时分配向量,配置I/OAPIC重定向表,最终通过IDT将中断路由到驱动ISR。整个过程实现了从硬件中断信号到软件处理程序的完整映射链。
2025-09-17 13:33:55
747
原创 MSI 与 IOAPIC LAPIC 如何协作,操作系统如何初始化和使用他们
摘要:现代计算机系统中,I/OAPIC和LocalAPIC协同处理中断,MSI机制允许设备直接向LocalAPIC发送中断消息。系统启动时,OS通过ACPI表初始化中断控制器,动态分配中断资源:优先为支持MSI的设备配置直接中断路径,对传统设备则通过I/OAPIC重定向表中转。运行时,MSI设备通过内存写操作触发中断,而传统设备通过引脚信号经I/OAPIC转发,最终均由目标CPU的LocalAPIC统一处理,实现高效的中断管理。
2025-09-16 14:19:28
934
1
原创 igb网卡的 link状态
在当前的环境中, 拔出SFP后,系统没有监测到media_type的变化, 中断未上报,只报了一些对i2c_read ERR的日志。这里对于copper,link状态在外部,由外部上报LSC中断,系统觉得是准确的,所以这里如果外部中断已经上报了,不需要再去读取link状态了。_dev_open则是在调用ifconfig up 的流程中调用的,所以 netif_running类似于管理状态的概念,这里有一个netif_carrier_ok(netdev): 这里最终是网卡link_up状态中设置的,见后面。
2024-04-15 17:24:47
1231
原创 内核编译外部模块
hack_unlinkat.c是源文件,把Makefile放到源文件目录下,执行make.最后编 译出来的目标是hack_unlinkat.ko。-C $DIR kernel源码路径,编译过程中会改变该路径下内容,编译完成后回 退修改,还原到编译前。完全编译过的kernel,删掉其中的源文件(即.c文件),也可以编译外部模块。选项"M=<dir>"告诉kernel编译系统编译外部模块的源码路径。一、首先,编译外部模块,需要一个已经编译完成的内核。
2024-04-12 14:38:23
457
原创 linux的文件隐藏属性 专治手滑
有用户曾经在生产环境和 RHCE 考试题目中碰到过明明权限充足但却无法删除某个文件的情况,或者仅能在日志文件中追加内容而不能修改或删除内容,这在一定程度上阻止了黑客篡改系统日志的图谋,因此这种“奇怪”的文件也保障了 Linux 系统的安全性。linux系统开发人员几乎都通过后台操作文件,相信99%的同学都有过不小心删除文件之后无法找回的经历,今天介绍一下文件的隐藏属性,文件的隐藏属性可以让系统中的文件受保护,避免不小心被误操作。(+i参数)对于目录,只能修改子文件中的内容不能新建或删除文件。
2024-04-12 14:14:03
553
原创 文件操作 从VFS到设备驱动的流程
grab_cache_page_write_begin 根据pgoff_t index,在page_tree。file->f_op->write(ext4_file_operations..write_iter=ext4_file_write_iter ) 文件系统层。file->f_op->read(ext4_file_operations..read_iter=ext4_file_read_iter ) 文件系统层。copy_page_to_iter 会将内容从内核缓存页拷贝到用户内存空间。
2024-04-08 17:51:48
794
1
原创 LZ4格式及算法
B.Checksum 表示每个block 是否包含checksum。LZ4 就是直接利用lz77替换之后编码, 不使用huffman。EndMark后面的checksum。Data 压缩块由多个序列组成,序列快的压缩,解压过程参考。
2024-03-11 18:40:39
806
1
原创 windows 杂项
reg.exe add "HKCU\Software\Classes\CLSID\{86ca1aa0-34aa-4e8b-a509-50c905bae2a2}\InprocServer32" /f /ve 右键。3,对于分页内存来说,调用MmProbeAndLockPages以及MmGetSystemAddressForMdlSafe来锁定内存页,以防止被page out出去;第一,MDL的一个用法是提供驱动程序访问用户模式数据缓冲区的一种方式:直接I/O。1,分配一个buf,可能是分页或者非分页的;
2024-03-11 10:34:10
718
原创 中断 INTX 》MSI 》MSI-X
MSI 要求中断数是连续的,现在单个设备 32 个中断也不够用,所以引入了 MSI-X。MSI-X 不要求中断数是连续的,单个设备支持 2048 个中断。MSI-X 如何支持 2048 中断?配置空间如下:MSI-x 信息记录到BAR上面,每个中断会在BAR上有一条记录,中断信息在BAR上的记录的样子如下:每个中断都使用单独的“消息地址”字段和“消息数据”字段。
2024-03-08 14:05:17
1564
1
原创 GZIP&Deflate 压缩格式
每一个压缩块都必须有一个块首部,但是每一个压缩块在最终输出的时候,下面三种编码格式(存储、静态、动态)只能用一种。45 2D F1 80 : 这四个字节是CRC32校验码,转换成正常读取的顺序“80 F1 2D 45”,),表示这是最后一个压缩块,如果没置上(该位是0),取模的结果(因为只能用四个字节存结果,所以只能对。:这四个字节是原始文件的大小,网络字节序,即。的文件体“基本”是一样的,因为它们都使用了。使用zip压缩,下面是压缩后的文件,的文件格式,这部分都是一样的,比如。
2024-03-07 15:55:48
1401
1
原创 一文看懂zip压缩的始末,LZ77 与 Huffman
16”后面就是表示重复次数(注意区分“出现次数”)的数据,用2bit(两比特)记录,分别是“00,01,10,11”,对应的重复次数分别为“3,4,5,6”(重复次数不小于三次,所以这里从3开始,因为只用两位记录,所以最大的重复次数是6),如果6次之后紧跟着还有重复,那么就再来一个“16”并且后面跟着实际的重复次数即可;用一个数组来存放这个树,数组的每个元素存放二叉树中的层数,7,8的层数都是3,如何区分呢,那就是数值小的一定是左叶子节点,数值大的一定是右叶子节点。如果减小码字占用的bit位长度?
2024-03-07 15:28:21
1301
1
原创 MSI MSIX
Message Address:存放MSI存储器写事务的目的地址,中断到来的时候,PCIE会向这个地址写message data数据。Msi-x table offset : 0-2bit表示table在第几个bar, 3-31表示在bar上的偏移量。0-7 是中断向量编号, 如果是MSI,则中断向量号连续,msi-x则不要求连续。1-3: 支持的中断数量,0b000=支持一个中断 0b001=支持4个中断。X86系统下,message address对应的LAPIC的地址。4-6: 使能的中断数量。
2024-03-05 16:43:01
780
原创 Linux 调度策略 SCHED_OTHER SCHED_FIFO SCHED_RR SCHED_BATCH SCHED_IDLE
Linux 调度策略的类型大致可以分为 TSS (分时系统)和实时系统这两种。一方面.一般的进程是通过分时运行的。也就是说.使用 CPU 的时间达到分配给进程的时间(时间片)时,就会切换到其他进程。这种分时运行的调度策略称为 TSS 。另一方面,在实时制约较严格且要求保证实时的处理中,就需要指定静态的执行优先级.并严格按照执行优先级进行调度。对这种对应答性有要求的进程,可以使用实时调度策略。另外,与 TSS 调度策略的进程相比. CPU将优先分配给使用用实时调度策略的进程。在 Linux中,进程..
2021-03-03 19:08:18
3725
1
原创 openssl RSA 编程
前面一篇讲到了密钥的格式,本文利用密钥进行加密,加密/解密都是类似的,本文只说加密。密钥加载有两个接口:PEM_read_RSA_PUBKEY加载PKCS#8文件头格式PEM_read_bio_RSAPublicKey加载PKCS#1文件头格式参数没仔细研究,第一个参数为文件句柄即可。加密接口:int RSA_public_encrypt(int flen, const unsigned char *from, unsigne...
2021-02-23 18:57:30
488
转载 37个最佳免费数据销毁软件程序
https://www.lifewire.com/free-data-destruction-software-programs-2626174
2021-02-23 18:24:27
1513
原创 RSA密钥格式解析 DER-PEM 转换代码
环境: ubuntu20.4 内核 5.10.10RSA是最常见的非对称加密算法,RSA的原理就不做介绍了,主要介绍一下密钥格式,linux 进行密钥转换编程。要学习RSA编码,首先需要理解RSA密钥的格式。RSA有公钥,私钥之分,公钥私钥都使用相同的语法格式。RSA的密钥有两种格式,PEM格式,DER格式PEM格式PEM格式包含几种报文头"-----BEGIN PUBLIC KEY-----": PKCS#8 格式公钥"-----BEGIN PRIVATE ...
2021-02-22 10:44:22
12509
6
原创 linux 常用磁盘操作搜集
查看UUIDls /dev/disk/by-uuid/* -l修改 UUIDtune2fs -U x /dev/sdaxmount命令参数mount /dev/sda1 /mnt-t:ext2linux目前常用的文件系统msdosMS-DOS的fat,就是fat16vfatwindows98常用的fat32nfs网络文件系统iso9660CD-ROM光盘标准文件系统ntfswindowsNT/2000/XP的文件系统...
2021-02-08 09:12:47
175
原创 linux启动流程1:实模式都干了啥
实模式是什么?实模式就是系统刚刚启动的时候,采用和8086相同的16位段和偏移量,最大寻址空间1MB,最大分段64KB的模式。在这个模式下,系统的资源还没有完全利用起来,主要是起过度作用。BIOS在主板上,有一个东西叫ROM(Read Only Memory,只读存储器)。ROM 是只读的,买到电脑时,上面就固化了一些初始化的程序,也就是BIOS(Basic Input and Output System,基本输入输出系统)。BIOS就是工作在实模式的(严重怀疑现在很多bios已经不是实模式
2021-02-05 19:54:06
574
1
原创 linux驱动加载 动态加载 静态加载 自动加载
概述在Linux下可以通过两种方式加载驱动程序:静态加载和动态加载。静态加载就是把驱动程序直接编译进内核,系统启动后可以直接调用。动态加载利用了Linux的module特性,可以在系统启动后用insmod命令添加模块(.ko),在不需要的时候用rmmod命令卸载模块。驱动加载静态加载过程将模块的程序编译到Linux内核中,也就是咱们在编译内核时选择Y的模块,静态由do_initcall函数加载。先来看看initcall在哪里:核心进程(/init/main.c)...
2021-02-04 14:57:40
5021
1
原创 linux 5.10 x86 内核开发环境
linux 5.10 开发环境vmware虚拟机镜像基于最新ubuntu 20.4搭建源代码在/root 下面工具链完整链接:https://pan.baidu.com/s/1U7F6xu7OinrK7SGOHcLiVA提取码:9wrt复制这段内容后打开百度网盘手机App,操作更方便哦...
2021-01-26 16:43:36
286
原创 nwipe使用
nwipe --sync --rounds=3 --method=gutmann /dev/sdc-m, --method=METHOD The wiping method (default: dodshort). See man page for more details.dod522022m / dod - 7 pass DOD 5220.22-M methoddodshort / dod3pass - 3 pass DOD methodgutmann - Peter Gutman.
2021-01-20 12:30:32
657
SVM Secure Virtual Machine Architecture Reference Manual
2025-10-11
AMD I/O Virtualization Technology (IOMMU) Specification
2025-10-11
82599-datasheet-v3-4 (2).pdf
2020-08-25
i210-datasheet-v-3-5.pdf
2020-10-23
source insight 中文插件
2015-01-10
Linux version 3.10.0-514.el7.x86_64
2020-09-18
ExtJS2·0入门级简明教程
2009-02-17
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅