import sys import time from typing import List, Dict, Any from dataclasses import dataclass, field # 导入其他模块 from process_management import ProcessManager from memory_management import MemoryManager from resource_management import ResourceManager # from file_system import FileSystem # from disk_management import DiskManager from command_interpreter import CommandInterpreter @dataclass class OperatingSystem: """ 模拟操作系统核心类 """ process_manager: ProcessManager = field(default_factory=ProcessManager) memory_manager: MemoryManager = field(default_factory=MemoryManager) resource_manager: ResourceManager = field(default_factory=ResourceManager) # file_system: FileSystem = field(default_factory=FileSystem) # disk_manager: DiskManager = field(default_factory=DiskManager) command_interpreter: CommandInterpreter = field(default_factory=CommandInterpreter) def execute_job_script(self, script_path: str): """ 通过命令解释器执行作业脚本 :param script_path: 作业脚本文件路径 """ try: # 读取并解析脚本 with open(script_path, 'r') as script_file: script_lines = script_file.readlines() # 为脚本创建作业/进程 job = self.process_manager.create_process(script_path) # 解释并执行命令 for line in script_lines: line = line.strip() if line: self.command_interpreter.execute_command(line, job, self) # 完成进程 self.process_manager.terminate_process(job) except Exception as e: print(f"执行作业脚本 {script_path} 时出错: {e}") def run_system(self, job_scripts: List[str]): """ 并发运行多个作业脚本 :param job_scripts: 要执行的脚本路径列表 """ # 模拟并发作业处理 for script in job_scripts: try: self.execute_job_script(script) except Exception as e: print(f"作业 {script} 出错: {e}") # 计算并显示系统性能指标 self.display_system_performance() def display_system_performance(self): """ 显示整体系统性能指标 """ print("\n--- 系统性能指标 ---") print(f"总进程数: {self.process_manager.get_total_processes()}") print(f"平均周转时间: {self.process_manager.calculate_avg_turnaround_time():.2f}") print(f"平均带权周转时间: {self.process_manager.calculate_avg_weighted_turnaround_time():.2f}") print(f"缺页率: {self.memory_manager.calculate_page_fault_rate():.2%}") # print(f"磁盘寻道优化: {self.disk_manager.get_seek_optimization_metric()}") def main(): # 创建操作系统实例 os_sim = OperatingSystem() # 模拟作业脚本 job_scripts = [ 'job1_script.txt', 'job2_script.txt', 'job3_script.txt' ] # 运行操作系统模拟 os_sim.run_system(job_scripts) if __name__ == '__main__': main()