更改目录名称

This commit is contained in:
GuanM
2024-11-01 08:49:12 +08:00
parent c2012cc012
commit b8caca3fc0
4 changed files with 0 additions and 0 deletions

51
操作系统/题目1.py Normal file
View File

@@ -0,0 +1,51 @@
class 任务:
def __init__(self, 任务名称, 到达时间, 执行时间):
self.任务名称 = 任务名称
self.到达时间 = 到达时间
self.执行时间 = 执行时间
self.完成时间 = 0
self.周转时间 = 0
self.已开始 = False
def 计算周转时间():
任务列表 = []
for _ in range(4):
任务名称, 到达时间, 执行时间 = input().split()
任务列表.append(任务(任务名称, int(到达时间), int(执行时间)))
当前时间 = 0
完成数量 = 0
结果 = []
while 完成数量 < 4:
可用任务 = [t for t in 任务列表
if t.到达时间 <= 当前时间 and not t.已开始]
if not 可用任务:
下一个到达 = min([t.到达时间 for t in 任务列表 if not t.已开始])
当前时间 = 下一个到达
continue
最短任务 = min(可用任务,
key=lambda x: (x.执行时间, 任务列表.index(x)))
最短任务.已开始 = True
当前时间 += 最短任务.执行时间
最短任务.完成时间 = 当前时间
最短任务.周转时间 = 最短任务.完成时间 - 最短任务.到达时间
完成数量 += 1
结果.append(最短任务)
周转时间列表 = []
for i in range(4):
for t in 结果:
if 任务列表[i].任务名称 == t.任务名称:
周转时间列表.append(str(t.周转时间))
break
print(" ".join(周转时间列表))
计算周转时间()

52
操作系统/题目2.py Normal file
View File

@@ -0,0 +1,52 @@
class 进程:
def __init__(self, 名称, 到达时间, 执行时间):
self.名称 = 名称
self.到达时间 = 到达时间
self.执行时间 = 执行时间
self.剩余时间 = 执行时间
def 最短作业优先调度():
进程列表 = []
for _ in range(4):
名称, 到达时间, 执行时间 = input().split()
进程列表.append(进程(名称, int(到达时间), int(执行时间)))
当前时间 = 0
完成数 = 0
当前进程 = None
执行序列 = []
while 完成数 < 4:
可用进程 = [p for p in 进程列表
if p.到达时间 <= 当前时间 and p.剩余时间 > 0]
if not 可用进程:
下一个到达 = min([p.到达时间 for p in 进程列表
if p.剩余时间 > 0])
当前时间 = 下一个到达
continue
最短作业 = min(可用进程,
key=lambda x: (x.剩余时间, 进程列表.index(x)))
if 当前进程 is None or 当前进程 != 最短作业:
当前进程 = 最短作业
执行序列.append(最短作业.名称)
当前时间 += 1
最短作业.剩余时间 -= 1
if 最短作业.剩余时间 == 0:
完成数 += 1
当前进程 = None
结果 = []
for i in range(len(执行序列)):
if i == 0 or 执行序列[i] != 执行序列[i - 1]:
结果.append(执行序列[i])
print(" ".join(结果))
最短作业优先调度()

41
操作系统/题目3.py Normal file
View File

@@ -0,0 +1,41 @@
class 进程:
def __init__(self, 名称, 到达时间, 执行时间):
self.名称 = 名称
self.到达时间 = 到达时间
self.执行时间 = 执行时间
self.剩余时间 = 执行时间
self.顺序 = 0
def 最短剩余时间调度():
进程列表 = []
for i in range(4):
名称, 到达时间, 执行时间 = input().split()
进程列表.append(进程(名称, int(到达时间), int(执行时间)))
进程列表[-1].顺序 = i
当前时间 = 0
完成的进程 = []
结果 = []
while len(完成的进程) < 4:
可用进程 = [p for p in 进程列表 if p.到达时间 <= 当前时间 and p not in 完成的进程]
if not 可用进程:
下一个到达 = min([p.到达时间 for p in 进程列表 if p not in 完成的进程])
当前时间 = 下一个到达
continue
选择的进程 = min(可用进程, key=lambda x: (x.剩余时间, x.顺序))
if not 结果 or 结果[-1] != 选择的进程.名称:
结果.append(选择的进程.名称)
选择的进程.剩余时间 -= 1
当前时间 += 1
if 选择的进程.剩余时间 == 0:
完成的进程.append(选择的进程)
print(" ".join(结果))
最短剩余时间调度()

27
操作系统/题目9.py Normal file
View File

@@ -0,0 +1,27 @@
def 电梯调度():
当前位置, 请求数量 = map(int, input().split())
请求序列 = list(map(int, input().split()))
移动方向 = int(input())
大于当前位置 = [x for x in 请求序列 if x > 当前位置]
小于当前位置 = [x for x in 请求序列 if x < 当前位置]
等于当前位置 = [x for x in 请求序列 if x == 当前位置]
大于当前位置.sort()
小于当前位置.sort(reverse=True)
结果 = []
if 等于当前位置:
结果.extend(等于当前位置)
if 移动方向 == 1:
结果.extend(大于当前位置)
结果.extend(小于当前位置)
else:
结果.extend(小于当前位置)
结果.extend(大于当前位置)
print(' '.join(map(str, 结果)))
电梯调度()