- 博客(23)
- 收藏
- 关注
原创 int8类型的数值-48在内存中是怎么存储的
48 的二进制补码表示11010000。最高位 (MSB):1 表示这是一个负数。其余位1010000是 48 的二进制补码表示。这种表示方法确保了加法和减法操作的一致性,并且能够有效地利用有限的位数来表示有符号整数。
2024-10-31 11:04:53 198
转载 [转]stdin,stdout,stderr
如果 `buf` 是 `NULL`,并且 `mode` 为 `_IOFBF` 或 `_IOLBF`,`size` 被忽略,系统自动管理缓冲区大小。3. 对于标准输入、输出和错误流(`stdin`、`stdout`、`stderr`),其缓冲模式和缓冲区可能由系统默认设置,调用 `setvbuf()` 可能会改变这些默认设置。1. `setvbuf()` 必须在第一次读写操作之前调用,即在 `fopen()` 之后、`fread()`、`fwrite()`、`fprintf()` 等之前调用。
2024-04-17 15:21:53 54
原创 gcc -o $@ $^的作用
这条命令的作用是将 `main.o`、`module1.o` 和 `module2.o` 这些目标文件链接成一个名为 `my_program` 的可执行文件。- `$@`:表示规则的目标文件名。比如,如果当前规则的目标是 `my_program`,那么 `$@` 就会展开为 `my_program`。- `$^`:表示规则中所有依赖文件(前提条件)的列表。它会替换成依赖文件的完整路径,中间由空格分隔。
2024-03-25 10:36:42 248 1
原创 NVMe协议——Atomic Write特性
Namespace Atomic Boundary Size Power Fail (NABSPF):指示特定于NAWUPF的原子边界大小。Namespace Atomic Compare & Write Unit (NACWU):NS原子比较&写命令的大小。Namespace Atomic Boundary Offset (NABO):NS第一个原子写边界开始的LBA。缺点:需要较多的SSD缓存,限制了支持的原子写大小。
2023-09-18 11:01:19 611
原创 设计与原型、重构、实现、测试的关系
设计是一个过程,在这个过程中探讨、启发,寻求最简洁有效的解决方法。设计一个方案是思维从模糊混沌演化到清晰明确的脑力过程,是对大脑中与该方案有关的现有的信息的加工,使其结构化、模型化。在设计的过程中,大脑需要的信息可能不足,或者信息量过大、过于复杂,超出大脑和设计方案的承载限度,所以可以去做原型。原型实现的过程中会展现更多的信息、细节,以验证方案可行性、补充方案的不足,并将方案的设想落实到原型中以降低方案的抽象、复杂度。
2023-09-12 10:18:58 124
原创 使用C语言实现RAID 5
要使用C语言实现一个基本的RAID 5系统,你需要考虑磁盘I/O、奇偶校验计算和数据恢复等关键方面。以下是一个简化的示例,用C语言演示如何实现一个基本的RAID 5系统,其中有3块磁盘驱动器。请注意,这个示例仅用于教育目的,实际的RAID 5系统会更复杂,需要更多的错误处理和优化。此示例假定每个磁盘块的大小相同。在生产环境中,建议使用现有的RAID解决方案或咨询专业存储解决方案供应商,而不是手动实现RAID 5。
2023-09-08 18:29:52 162 1
原创 RAID技术简介
这些是常见的RAID级别,每个级别都有不同的算法和特点,适合不同的用例和需求。选择合适的RAID级别取决于性能、可用性和容错性的权衡,以及存储设备和应用程序的需求。除了上述级别外,还存在其他RAID级别,如RAID 50、RAID 60等,它们结合了不同级别的特点来满足特定需求。RAID (Redundant Array of Independent Disks) 是一种数据存储技术,通过组合多个硬盘驱动器来提高性能、可用性和/或容错性。不同的RAID级别使用不同的算法和策略来实现这些目标。
2023-09-08 18:27:54 93 1
原创 python操作NVMe盘设备文件/dev/nvme0示例
您可以使用标准的文件I/O操作和相应的系统库。以下是一个基本的示例代码,演示如何在Python中读取和写入NVMe设备文件。请注意,NVMe设备文件通常需要超级用户或管理员权限才能访问。确保您以具有适当权限的身份运行以下代码。要在Python中操作NVMe盘设备文件。
2023-09-08 15:28:11 613 1
原创 VFS的IO栈
整个I/O栈允许应用程序通过高级抽象接口(系统调用和C库函数)访问文件和数据,而不必关心底层存储硬件和文件系统的细节。VFS的I/O栈是操作系统中文件系统管理的关键组成部分,使文件操作能够在不同类型的文件系统上实现统一的接口。在Unix和Unix-like操作系统中,VFS用于抽象不同类型的文件系统,使应用程序和系统能够以一种统一的方式与不同文件系统交互,而无需关心底层文件系统的细节。I/O栈是VFS中的一个关键组成部分,它包含了用于执行文件系统I/O操作的各个层次和模块。
2023-09-07 17:09:12 176
原创 SSD的垃圾回收-GC
当前大多数SSD盘的内部实现,单个single block中的物理空间一般是按照4K顺序分配(与NAND的物理结构有关,可以调整分配大小,也可以组成super block的所有single block交替分配若干个4K)。假如只有一个single block,有1024个4K的空间,总空间为1024*4K = 1MB大小。APP向这个SSD盘写入2个文件file1和file2的数据,file1和file2分别为512KB大小。
2023-09-07 15:52:07 674
原创 NVMe TP4146: Flexible-Data-Placement-Mode-FDP分析和思考
NVMe TP4146: Flexible-Data-Placement-Mode-FDP分析
2023-09-07 11:52:46 2293
原创 elf程序文件的结构和解析代码示例
ELF(Executable and Linkable Format)是一种常见的可执行文件和共享库文件的格式,通常在Unix和Unix-like操作系统上使用。ELF文件结构包括多个部分,用于描述可执行程序或共享库的各个方面。.text.data.bss.symtab这些部分构成了ELF文件的基本结构,允许操作系统和链接器正确加载和执行可执行文件或共享库。不同类型的ELF文件(可执行文件、共享库等)可能具有不同的结构和包含不同的节和表,但上述结构是通用的。
2023-09-07 11:10:05 150
原创 windows和虚拟机linux上运行qemu
想在wsl ubuntu、vmwre ubuntu等虚拟机os中运行qemu,并能在qemu中再运行linux的os,这样就不用依赖物理的服务器上运行qemu,如果可以成功,就可以方便的修改扩展qemu的代码了。但是可惜没有正常运行起来。但是没有在网上找到支持x86_64的windows qemu的QEMU_EFI文件,按照同样的步骤安装x86_64版本的linux os没有成功。按照如下两个帖子的指导,可以安装arm架构的linux OS系统,并在windows上通过qemu虚拟机运行linux OS。
2023-08-18 10:28:07 1267 1
原创 如何取消Windows11的右键二级菜单
通过执行如下的命令并重启后,即可取消掉windows11的右键二级菜单,恢复成windows10之前的右键展示全部选项。windows11做了一些小的改进,比如资源管理器中右键时,将许多选项做了隐藏,需要点击“但这样有个缺点,就是常用的选项在二级菜单,总是要点“”才能选中,反而降低了效率。
2023-06-12 13:54:21 5766 1
原创 ARM compiler 5(DS-5 built-in)编译错误:Eorror:#28 exppression must hasve a constant value
只是编译脚本中执行目标文件./helloworld_dt.exe会报Segmentation fault,因为这个0x12000000地址是嵌入式ARM环境中的ram地址,在windows的Mingw环境中并不存在。单独去执行,没有报错,为什么?
2023-03-15 10:15:41 169
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人