本项目是一个基于 Python 的 CPU 信息监测与死锁检测系统。通过使用psutil库获取 CPU 相关信息,并利用tkinter构建用户界面来展示这些信息,同时具备死锁检测功能,以保障系统的稳定运行。
功能特点
CPU 信息获取
利用psutil库实现了对 CPU 多种参数的获取功能。包括物理核心数量(通过_get_cpu_count方法)、逻辑核心数量(_get_cpu_count_logical方法)、当前 CPU 使用率(_get_cpu_usage方法)、每个核心的 CPU 使用率(_get_cpu_per_core_usage方法)、CPU 时间信息(_get_cpu_times方法)以及 CPU 频率(_get_cpu_freq方法)。这些方法在获取信息时都考虑了资源分配和锁机制,确保数据获取的稳定性。
资源管理机制
引入了资源管理机制,模拟资源总量和已分配资源的情况。在获取每个 CPU 信息的过程中,通过request_resources方法请求所需资源,检查资源是否充足,避免资源竞争问题。在获取信息完成后,使用release_resources方法释放资源,保证资源的合理利用和系统的正常运行。
死锁检测
detect_deadlock方法实现了死锁检测功能。通过不断检查资源分配情况和进程的完成状态,模拟资源分配过程,判断系统是否存在死锁。如果检测到死锁,不仅会在日志中记录错误信息,还会通过tkinter弹出提示框警告用户,并抛出异常暂停程序运行,确保系统问题能及时被发现和处理。
用户界面展示
使用tkinter创建了一个简单直观的用户界面。在界面上展示了 CPU 的各项参数信息,包括物理核心数、逻辑核心数、使用率、每个核心使用率、时间信息和频率等。界面布局清晰,方便用户查看 CPU 状态。同时,update_ui函数实现了定时更新 UI 的功能,每 5 秒更新一次 CPU 信息显示,确保用户看到的是最新的数据。
技术亮点
多线程安全
整个项目在多线程环境下运行,使用threading.Lock确保在获取 CPU 信息和资源管理过程中的线程安全。尤其是在资源分配和释放以及死锁检测等涉及共享数据操作的部分,有效地避免了数据不一致和竞争条件等问题。