Basic I/O Programming
Basic I/O Programming
def f(name):
print(f'process: {os.getpid()}, parent: {os.getppid()}, hello {name}')
if __name__ == "__main__":
print(f'main process: {os.getpid()}')
p = Process(target=f, args=('bob',))
p.start()
p.join()
print(f'Child Process ID: {p.pid})
OUTPUT
def sjf(jobs):
# Sort jobs by burst time
jobs.sort(key=lambda x: x[1])
return completed
# Example usage
jobs = [("Job1", 3), ("Job2", 1), ("Job3", 2), ("Job4", 4)]
result = sjf(jobs)
print("Job\tCompletion Time")
for job in result:
print(f"{job[0]}\t{job[1]}")
OUTPUT
def fcfs(jobs):
# Initialize current time and completed jobs
time = 0
completed = []
return completed
# Example usage
jobs = [("Job1", 3), ("Job2", 1), ("Job3", 2), ("Job4", 4)]
result = fcfs(jobs)
print("Job\tCompletion Time")
for job in result:
print(f"{job[0]}\t{job[1]}")
OUTPUT
[('Job3', 2), ('Job1', 4), ('Job2', 5), ('Job4', 7), ('Job1', 8), ('Job4', 10)]
5.To implement reader/writer problem using semaphore
import threading
resource = threading.Semaphore(1)
read_count = 0
read_ready = threading.Semaphore(1)
def reader():
read_ready.acquire()
global read_count
read_count += 1
if read_count == 1:
resource.acquire()
read_ready.release()
print("Reader is reading")
read_ready.acquire()
read_count -= 1
if read_count == 0:
resource.release()
read_ready.release()
def writer():
resource.acquire()
print("Writer is writing")
resource.release()
t1 = threading.Thread(target=reader)
t2 = threading.Thread(target=writer)
t1.start()
t2.start()
t1.join()
t2.join()
OUTPUT
Reader is reading
Writer is writing
6. Banker’s algorithm for Deadlock avoidance Program for
page replacement algorithm
Banker's Algorithm:
Safe state: False
pages = [7, 0, 1, 2, 0, 3, 0, 4, 2, 3, 0, 3, 2]
frame_size = 3
print(fifo(pages, frame_size))
OUTPUT
10
8.Least Recently Used Algorithm.
pages = [7, 0, 1, 2, 0, 3, 0, 4, 2, 3, 0, 3, 2]
frame_size = 3
print(lru(pages, frame_size)) # Output: 10
OUTPUT
9
9. First fit, Best fit and Worst fit algorithm for memory
management.
import multiprocessing
def worker(conn):
conn.send("Hello from worker!")
if __name__ == "__main__":
parent_conn, child_conn = multiprocessing.Pipe()
p = multiprocessing.Process(target=worker, args=(child_conn,))
p.start()
print(parent_conn.recv())
p.join()
OUTPUT