2026-06-04 20:27:06 +08:00
2026-06-04 20:27:06 +08:00
2026-06-04 20:27:06 +08:00
2026-06-04 20:27:06 +08:00
2026-06-04 20:27:06 +08:00
2026-06-04 20:27:06 +08:00

进程管理系统课程设计

这是一个使用 C 语言实现的进程管理系统模拟器,包含进程管理、调度、IPC、同步与 Web 可视化展示。

当前架构:

C 进程管理程序
  -> 输出 data/state.json
Python WebUI 服务
  -> 读取 JSON 并提供 Web API
浏览器
  -> 展示 PCB、队列、调度统计、IPC 状态

功能概览

  • 进程创建、派生、阻塞、唤醒、撤销
  • FCFS、优先级、RR、MLFQ 调度
  • 调度统计,benchmark 对比放在测试验收中
  • 消息队列、共享内存、管道
  • 信号量 P/V、持有记录、等待队列和进程结束自动释放
  • 资源申请/释放、进程结束自动回收资源、死锁检测
  • JSON 状态输出
  • WebUI 可视化展示

系统手册

如果是第一次阅读这个项目,建议先看 SYSTEM_MANUAL.md。手册按初学者视角解释了运行方式、代码结构、PCB、进程状态、调度、IPC、同步、资源和死锁检测等内容。

目录结构

include/             头文件
src/                 C 源码
web/                 WebUI 静态文件
webui_server.py      Python WebUI 服务
CMakeLists.txt       CMake 构建配置
Makefile             Unix 风格构建入口
PROJECT_PROGRESS.md  项目进展记录
进程系统设计.txt      小组系统设计

C 核心代码按 5 个模块组织:

common.h                   公共常量和通用 PID 队列
process.h / process.c      进程管理、PCB、命令行入口
scheduler.h / scheduler.c  调度算法、统计、甘特图
ipc.h / ipc.c              消息队列、共享内存、管道
sync.h / sync.c            信号量 P/V、资源申请/释放、死锁检测
output.h / output.c        JSON 输出

macOS / Linux 构建

使用 Makefile

需要安装 C 编译器、make 和 Python 3。

make

运行命令行版本:

./process_manager

运行 WebUI:

python3 webui_server.py

浏览器打开:

http://127.0.0.1:8080

使用 CMake

cmake -S . -B build
cmake --build build

把可执行文件复制到项目根目录,供 Python WebUI 调用:

cp build/process_manager .
python3 webui_server.py

也可以直接运行 C 程序:

./build/process_manager

Windows 构建

推荐方式:WSL

在 WSL Ubuntu 中安装工具:

sudo apt update
sudo apt install build-essential cmake python3

构建并运行:

cmake -S . -B build
cmake --build build
cp build/process_manager .
python3 webui_server.py

浏览器打开:

http://127.0.0.1:8080

MSYS2 / MinGW

安装 MSYS2 后,在 UCRT64 shell 中执行:

pacman -S mingw-w64-ucrt-x86_64-gcc mingw-w64-ucrt-x86_64-cmake make python
cmake -S . -B build -G "MinGW Makefiles"
cmake --build build
cp build/process_manager.exe .
python webui_server.py

Visual Studio + CMake

在 “Developer PowerShell for VS” 中执行:

cmake -S . -B build
cmake --build build --config Debug
copy build\Debug\process_manager.exe .
python webui_server.py

如果使用 Release:

cmake --build build --config Release
copy build\Release\process_manager.exe .
python webui_server.py

浏览器打开:

http://127.0.0.1:8080

JSON 输出模式

C 程序可以直接输出系统状态 JSON:

mkdir -p data
./process_manager --json data/state.json

Windows PowerShell:

mkdir data
.\process_manager.exe --json data\state.json

WebUI 服务也是通过这种方式启动 C 程序并读取 JSON。

常用命令

启动 C 程序后可以输入:

create <name> <priority> <service_time>
fork <pid>
schedule <fcfs|priority|rr|mlfq> [quantum]
step
run
block <pid>
wakeup <pid>
kill <pid>
killtree <pid>
send <from_pid> <to_pid> <message>
recv <pid>
sem_create <name> <value>
sem_wait <sem_id> <pid>
sem_signal <sem_id>
shm_create <size>
shm_attach <shm_id> <pid>
shm_write <shm_id> <pid> <offset> <data>
shm_read <shm_id> <pid> <offset> <len>
shm_destroy <shm_id>
pipe_create
pipe_write <pipe_id> <pid> <data>
pipe_read <pipe_id> <pid>
pipe_close <pipe_id> <close_reader> <close_writer>
resource_add <name> <total>
request <pid> <resource_id> <amount>
release <pid> <resource_id> <amount>
detect_deadlock
ps
queue
status
exit

测试样例

自动化测试:

make test

调度算法性能对比报告:

make benchmark

该命令会用同一组进程分别运行 FCFS、Priority、RR、MLFQ,并输出平均周转时间、平均等待时间、平均响应时间、平均带权周转时间、上下文切换次数、CPU 利用率和甘特图摘要,适合验收时直接展示。

当前自动化测试覆盖:

  • 进程创建、派生、阻塞、唤醒、撤销、进程树撤销
  • FCFS、Priority、RR、MLFQ 调度和甘特图时间线
  • 调度统计、测试验收 benchmark、CPU 利用率、等待时间、带权周转时间
  • 消息队列 FIFO、空接收阻塞、发送唤醒、队列容量上限、阻塞进程不能主动接收
  • 信号量 P/V、持有者记录、多个等待进程 FIFO 唤醒、进程终止自动释放、信号量死锁检测与清除
  • 共享内存读写、重复 attach 记录、越界写入截断、销毁后访问失败
  • 管道读空阻塞、写入唤醒、写满阻塞、关闭管道端点、阻塞进程不能主动读写管道
  • 资源申请/释放、等待队列、进程撤销/自然结束释放资源、资源死锁检测与解除
  • 无效 PID、非法命令参数、非法服务时间等失败路径
  • tests/cases/ 下的复杂集成脚本也被自动化测试读取并断言最终状态

手动演示样例在 tests/cases/ 下,例如:

./process_manager < tests/cases/scheduling.txt
./process_manager < tests/cases/ipc_sync.txt
./process_manager < tests/cases/shm_pipe.txt
./process_manager < tests/cases/resource_deadlock.txt
./process_manager < tests/cases/full_workflow.txt
./process_manager < tests/cases/error_edges.txt
./process_manager < tests/cases/complex_termination_cleanup.txt
./process_manager < tests/cases/complex_ipc_pipe_shm.txt
./process_manager < tests/cases/complex_deadlock_recovery.txt

注意事项

  • WebUI 需要 Python 3。
  • Python WebUI 默认查找项目根目录下的 process_manager 或 Windows 下的 process_manager.exe。
  • 如果使用 CMake 构建,建议将生成的可执行文件复制到项目根目录。
  • Windows 控制台如果中文乱码,可优先使用 Windows Terminal、PowerShell 7、WSL 或 MSYS2。
S
Description
No description provided
Readme
198 KiB
0 Stars 1 Watchers 0 Forks
Languages
C 55.2%
Python 26.6%
JavaScript 9%
HTML 5.3%
CSS 3.4%
Other 0.5%