Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Download
25 views
ubuntu2004
Kernel: Python 3 (system-wide)
#SHORTEST JOB FIRST(SJF)(CPU SCHEDULING)4 bt = [int(input(f"BurstTime for process {i}: ")) for i in range(int(input("No. of processes: ")))] bt.sort() wt = [sum(bt[:i]) for i in range(len(bt))] tt = [bt[i] + wt[i] for i in range(len(bt))] print(f"WaitingTime: {wt}\n") print(f"TurnaroundTime: {tt}\n") print(f"AverageWaitingTime: {sum(wt)/len(wt)}\n") print(f"AverageTurnaroundTime: {sum(tt)/len(tt)}\n")
Enter no. of processes:
Enter burst time for process 0:
Enter burst time for process 1:
Enter burst time for process 2:
Enter burst time for process 3:
Enter burst time for process 4:
Waiting Time: [0, 1, 3, 6, 10] Turnaround Time: [1, 3, 6, 10, 15] Average Waiting Time: 4.0 Average Turnaround Time: 7.0
#BANKERS ALGORITHM(6) def bankers(np, nr, avail, Max, allo): need = [[Max[i][j] - allo[i][j] for j in range(nr)] for i in range(np)] safe = [] work = avail.copy() finish = [0] * np while len(safe) < np: found = False for i in range(np): if finish[i] == 0 and all(need[i][j] <= work[j] for j in range(nr)): work = [work[j] + allo[i][j] for j in range(nr)] safe.append(i) finish[i] = 1 found = True break if not found: print("System is not in safe state") return False print("System in safe state.") print("Safe sequence is: ", end="") print(*[f"P{p}" for p in safe], sep=" -> ") return True np = 5 nr = 3 avail = [3, 3, 2] Max = [[7, 5, 3], [3, 2, 2], [9, 0, 2], [2, 2, 2], [4, 3, 3]] allo = [[0, 1, 0], [2, 0, 0], [3, 0, 2], [2, 1, 1], [0, 0, 2]] bankers(np, nr, avail, Max, allo)
System is in safe state. Safe sequence is: P1 -> P3 -> P0 -> P2 -> P4
True
#FIRST-FIT AND BEST-FIT (Contiguous Memory Allocation)7 def first_fit(bS,pS): for x in pS: for y in bS: if x<y: print(f"{x} --> {y}") bS.remove(y) break else: print(f"{x} --> cannot be placed") def best_fit(bS,pS): new_pro = sorted(pS,reverse=True) new_blo = sorted(bS,reverse=True) first_fit(new_blo,new_pro) bS= [100, 500, 200, 300, 600] Bno= [1, 2, 3, 4, 5] pS= [212, 417, 112, 426] best_fit(bS,pS)
426 --> 600 417 --> 500 212 --> 300 112 --> 200
#FIRST IN FIRST OUT(FIFO)(PAGE REPLACEMENT ALGORITHM)8 def fifo(): m, s, h = [], 3, 0 for x in [7,0,1,2,0,3,0,4,2,3,0,3,2,3]: if len(m) < s: m.append(x) elif x in m: h += 1 else: m[m.pop(0) and 0] = x print(f"hits: {h}\nmisses: {len(m)}") fifo()
hits: 3 misses: 3
#LEAST RECENTLY USED(LRU)(PAGE REPLACEMENT ALGORITHM)8 from collections import deque def lru(pages, ps): ph = deque(maxlen=page_size) for x in pages: if x not in ph: if len(ph) == ps: ph.popleft() ph.append(x) print("miss", ph) else: ph.remove(x) ph.append(x) print("hit", ph) lru([7, 0, 1, 2, 0, 3, 0, 4, 2, 3, 0, 3, 2], 4)
miss deque([7], maxlen=4) miss deque([7, 0], maxlen=4) miss deque([7, 0, 1], maxlen=4) miss deque([7, 0, 1, 2], maxlen=4) hit deque([7, 1, 2, 0], maxlen=4) miss deque([1, 2, 0, 3], maxlen=4) hit deque([1, 2, 3, 0], maxlen=4) miss deque([2, 3, 0, 4], maxlen=4) hit deque([3, 0, 4, 2], maxlen=4) hit deque([0, 4, 2, 3], maxlen=4) hit deque([4, 2, 3, 0], maxlen=4) hit deque([4, 2, 0, 3], maxlen=4) hit deque([4, 0, 3, 2], maxlen=4)
#SHORTEST SEEK TIME FIRST(SSTF)(DISK SCHEDULING)10 def sstf(): cur = int(input("position of the disk head: ")) req = list(map(int, input("list of requests: ").split())) time = 0 while req: closest = min(req, key=lambda x: abs(x - cur)) time += abs(closest - cur) return move cur = closest req.remove(closest) print("Total seek time:", time) sstf()
position of the disk head:
list of requests:
Total seek time: 167
#FIRST COME FIRST SERVE(FCFS)(CPU SCHEDULING)10 def fcfs(req, head): move = abs(req[0] - head) for i in range(1, len(req)): move += abs(req[i] - req[i-1]) return move head = int(input("position of disk head: ")) req = list(map(int, input("disk requests: ").split())) if not req: print("Error") else: mov = fcfs(req, head) print("Total movements:", mov)
position of disk head:
disk requests:
Total movements: 315