billLeeTheScienceGuy/C-Systems-Programming

GitHub: billLeeTheScienceGuy/C-Systems-Programming

C语言编写的低级系统工程作品集,涵盖内存管理、缓存模拟、逆向工程等。

Stars: 0 | Forks: 0

# C 系统编程与机器架构作品集 ## 概述 这是一个由 C 语言编写的低级系统工程项目的综合集合。该仓库展示了在内存管理、软硬件接口、缓存架构、x86-64 汇编逆向工程和 Unix 系统调用方面的熟练程度。 每个子目录都是一个独立、自包含的实用程序,具有自己的构建系统和文档。 ## 仓库内容 ### 1. 凯撒密码解码器 * **重点:** 指针算术、位操作、文件 I/O。 * **描述:** 一个加密实用程序,使用动态的用户生成位移密钥通过 XOR 减少算法解码密文。 ### 2. 数独验证器 * **重点:** 2D 矩阵操作、CSV 流解析、算法约束。 * **描述:** 一个验证引擎,动态分配多维数组以解析和验证 9x9 数独棋盘状态,从文本文件中以 O(N²) 的时间复杂度进行验证。 ### 3. 动态内存分配器(堆管理器) * **重点:** 虚拟内存、地址对齐、碎片缓解。 * **描述:** 标准的 `malloc()` 和 `free()` 库的替代品。利用隐式空闲列表、最佳匹配放置算法和堆遍历合并来管理直接从操作系统通过 `mmap()` 请求的内存页面。 ### 4. 缓存性能分析 * **重点:** 空间和时间局部性、内存布局。 * **描述:** 一套基准测试程序,旨在生成特定的内存跟踪以分析 CPU 缓存效率,展示了行主序和列主序遍历之间的架构差异。 ### 5. LRU 缓存模拟器 * **重点:** 硬件模拟、驱逐策略、命令行解析。 * **描述:** 一个高度可配置的 CPU 缓存模拟器,可以解析现实世界的 Valgrind 内存跟踪,并应用严格的 LRU(最近最少使用)算法来跟踪缓存命中、未命中和驱逐。 ### 6. 逆向工程保险箱破解器 * **重点:** x86-64 汇编、二进制分析、`gdb`、控制流。 * **描述:** 一个网络安全和逆向工程练习。涉及在没有源代码的情况下反汇编原始 ELF 二进制文件,以分析寄存器状态、堆栈帧和跳转表以提取隐藏的密码。 ### 7. Linux 信号处理器 * **重点:** Unix IPC(进程间通信)、硬件异常、操作系统中断。 * **描述:** 一组工具,展示了使用 `sigaction` API 和计时器驱动的系统调用安全拦截异步操作系统信号(SIGINT、SIGALRM、SIGUSR1)和硬件异常(SIGFPE)。 ## 技术栈 * **语言:** C(GNU C99) * **架构:** x86-64 / i686(32 位和 64 位环境) * **工具:** GCC、Make、GDB(GNU 调试器)、Valgrind * **操作系统 / API:** Linux、POSIX 系统调用(`mmap`、`kill`、`alarm`、`sigaction`)
标签:Bing搜索, CPU缓存, CSV解析, DNS解析, LRU缓存, Sudoku验证, Unix IPC, x86-64逆向工程, 位操作, 信号处理, 内存对齐, 内存布局, 内存映射, 内存碎片, 内存管理, 内存管理工具, 加密工具, 动态堆分配, 动态数组, 命令行解析, 客户端加密, 开源项目, 性能分析, 指针算术, 操作系统调用, 数据管道, 文件I/O, 矩阵操作, 硬件软件接口, 算法约束, 系统性能分析, 系统编程, 缓存架构, 缓存模拟, 缓存模拟工具, 编程实践, 计算机架构, 计算机科学, 计算机系统, 软件工程, 软件开发, 逆向工程工具