自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(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 988

原创 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 739

原创 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 796 1

原创 LZ4格式及算法

B.Checksum 表示每个block 是否包含checksum。LZ4 就是直接利用lz77替换之后编码, 不使用huffman。EndMark后面的checksum。Data 压缩块由多个序列组成,序列快的压缩,解压过程参考。

2024-03-11 18:40:39 807 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

原创 Windbg 常用命令

Windbg 常用命令 线程 内存 verify

2023-12-27 17:07:27 627 1

原创 RSA 原理

RSA 原理

2023-10-09 18:21:20 133 1

原创 ECDH 密钥交换

一张图 ECDH

2023-10-09 18:16:17 189 1

原创 ECDSA 签名 验签

ECDSA 签名 验签

2023-10-09 18:14:57 422 1

原创 TLS 笔记

TLS 过程介绍

2023-10-09 18:09:54 113 1

原创 git常用命令

git 常用命令

2023-02-23 08:46:45 188

原创 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 12510 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 658

SVM Secure Virtual Machine Architecture Reference Manual

内容概要:本文档详细介绍了AMD64虚拟化技术(SVM)的安全虚拟机架构,重点涵盖硬件辅助虚拟化的关键机制。主要包括VMRUN、VMLOAD、VMSAVE等指令用于实现主机与客户机之间的状态切换;通过拦截机制(Intercepts)控制敏感指令和事件的执行,如对CR寄存器、MSR寄存器、中断和异常的拦截;支持嵌套分页(Nested Paging)以提升地址转换效率;提供外部设备访问保护(DEV)防止DMA攻击;并集成安全启动(SKINIT)、内存自动清零等安全特性,确保系统可信初始化。此外,文档还定义了虚拟机控制块(VMCB)的数据结构布局及相关MSR寄存器的功能。 适合人群:从事底层系统软件开发的工程师,特别是虚拟机监控器(VMM)、操作系统内核或固件开发的技术人员,需具备x86-

2025-10-11

AMD I/O Virtualization Technology (IOMMU) Specification

内容概要:本文档为AMD发布的IOMMU(Input-Output Memory Management Unit)架构技术规范,详细阐述了AMD I/O虚拟化技术的设计与实现。文档涵盖了IOMMU的核心架构、数据结构、命令系统、事件日志、中断重映射、地址翻译机制以及对虚拟化的支持,特别是针对虚拟机环境中设备访问的安全隔离与性能优化。文档还介绍了第二版新增特性,如两级地址转换(支持客户机与主机地址空间)、增强的AMD64页表兼容性、性能计数器、预取指令、TLB刷新机制、PCI-SIG PRI和PASID支持等,并提供了ACPI表定义和伪代码实现参考。; 适合人群:具备计算机体系结构、操作系统或虚拟化技术背景的系统软件工程师、固件开发者、hypervisor开发人员以及硬件设计相关人员;适合从

2025-10-11

GMT 0062-2018 密码产品随机数检测要求.pdf

GMT 0062-2018 密码产品随机数检测要求.pdf

2024-12-03

飞腾 PSPA 1.0 规范

飞腾 PSPA 1.0 规范

2024-12-04

gun c 与 ascii 的重要区别

gun c 与 ascii 的重要区别 初学linux必看

2010-05-16

82599-datasheet-v3-4 (2).pdf

Intel® 82599 10 GbE Controller Datasheet 最最权威的资料 寄存器 EEprom的所有说明 一切的一切都在这里

2020-08-25

i210-datasheet-v-3-5.pdf

The Intel® Ethernet Controller I210 (I210) is a single port, compact, low power component that supports GbE designs. The I210 offers a fully-integrated GbE Media Access Control (MAC), Physical Layer (PHY) port and a SGMII/SerDes port that can be connected to an external PHY. The I210 supports PCI Ex

2020-10-23

libudev-241.tgz

libudev-241 源码

2021-07-21

source insight 中文插件

source insight 中文插件,source insight 一直都无法显示utf-8的中文,安装这个插件以后就显示了,用法参见说明

2015-01-10

Linux version 3.10.0-514.el7.x86_64

Linux version 3.10.0-514.el7.x86_64 centos 内核源码 比较老版本的

2020-09-18

dpdk-getting-started-guide.pdf

dpdk-getting-started-guide.pdf

2017-03-14

fapolicyd-1.0.2.tar.gz

fapolicyd linux 下黑白名单管理 黑名单禁止运行

2021-01-20

net-tools-1.60.tar.bz2

net-tools-1.60 源码

2021-01-06

opal-3.6.6.tar.gz

opal-3.6.6.tar.gz包括h323 sip 等协议

2010-05-15

libpng-1.2.14.tar.gz

以前的是tartar格式 我传个gz格式·

2008-10-22

nwipe_0.30.orig.tar.gz

linux 下磁盘擦除工具

2021-01-20

c++ STL 源码

CGI STL 源码阅读 结合STL 源码剖析解读

2012-05-14

开源的AC算法 多模式匹配实现

开源的AC算法 多模式匹配实现 代码非常简单 清晰明了 适合新手学习,代码分析可以参照大神博文 一个开源AC算法源码分析

2017-12-07

ExtJS2·0入门级简明教程

ExtJS2.0实用简明教程 chm版教程包括ExtJS的新手入门、组件体系结构及使用、ExtJS中各控件的使用方法及示例应用等,是一个非常适合新手的ExtJS入门教程。本教程主要是针对ExtJS2.0进行介绍,全部代码、截图等都是基于ExtJS2.0。

2009-02-17

EclipseMe1.5.0 j2me开发工具.zip

EclipseMe1.5.0 j2me开发工具.zip 和Eclipse3.2 对应比较号

2008-11-20

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除