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, 矩阵操作, 硬件软件接口, 算法约束, 系统性能分析, 系统编程, 缓存架构, 缓存模拟, 缓存模拟工具, 编程实践, 计算机架构, 计算机科学, 计算机系统, 软件工程, 软件开发, 逆向工程工具