97 lines
3.1 KiB
Python
97 lines
3.1 KiB
Python
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() |