一 操作系统发展史
- 穿孔卡片---CPU利用率太低
- 联机批处理系系统---节省插入卡片的时间间隔
- 脱机批处理系统---代码/程序通过输入机发送到卫星机写入到高速磁带,已经类似于现代计算机将程序由硬盘读入内存的操作
二 简述进程发展史及算法演变
- 1 先来先服务调度算法
- 2 短作业优先调度算法
- 3 时间片轮转法+多反馈队列
- 多个任务进入第一个队列,在一个固定的时间片内,任务能在该固定的时间片内未执行完成的话就会进入下一个队列,越往下的队列的程序被执行的优先级就会越低
三 简述多道技术
- 在单核CPU的前提下,在执行A任务的时候控制硬盘将任务B提前读取到内存,节省多个程序运行的总耗时
- 多道技术---切换+保存状态
- 空间上的复用:多个应用程序公用一套计算机硬件
- 时间上的复用:只需要任务时长最长的所需时间,可以保存状态、
- 切换分成两种情况
- 1 当一个程序遇到IO操作时,操作系统会剥夺该程序CPU的执行权限
- 2 当一个程序长时间占用CPU的时候,操作系统也会剥夺该程序的CPU执行权限
四 简述同步异步阻塞非阻塞概念
- 同步和异步----描述的时程序的提交方式
- 同步:等程序提交之后,原地等待任务的执行结果,等待的过程中不做任何事情
- 异步:任务提交之后,不原地等待任务的返回结果,直接去做其他事情
- 阻塞和非阻塞----描述的是程序的运行状态
- 阻塞:进程三状态中的阻塞态
- 非阻塞:继承三状态中的就绪态和运行态
五 书写进程创建的两种方式
from multiprocessing import Process
import time
def task(name,n):
print('{} is run'.format(name))
time.sleep(n)
print('{} is over'.format(name))
if __name__ == '__main__':
# 创建多个进程
p_list = []
for i in range(1,4):
p = Process(target=task,args=(f'jason{i}',i))
p_list.append(p)
# 开始进程
p.start()
for p in p_list:
p.join()
print('....')
from multiprocessing import Process
import time
class MyProcess(Process):
def run(self):
print('hello')
time.sleep(3)
print('get')
if __name__ == '__main__':
p = MyProcess()
p.start()
print('。。。')