一. 简述操作系统发展史
手, 批(联, 脱), 多, 分, 实, 通, 操(个, 网, 分)
1. 手动操作-穿孔卡片
2. 批处理-磁带存储
- 联机处理系统
- 脱机处理系统
3. 多道程序系统
4. 分时系统
5. 实时系统
6. 通用操作系统
7. 个人计算机操作系统,网络操作系统,分布式操作系统
二. 简述进程发展史及算法演变
进程发展史: 进程的概念起源于操作系统, 是操作系统最核心的概念. 也是操作系统提供的最古老最重要的抽象概念之一. 操作系统的所有其他的内容都是围绕进程的概念展开的.
进程调度之算法演变: 先来先服务调度算法, 短作业优先调度算法, 时间片轮转法, 多级反馈列队
三. 简述多道技术
多道技术产生的背景: 争对单核实现并发
多道技术的解决方法: 多路复用(时间上的复用, 空间上的复用)
空间上的复用: 内存中可以存放多道程序
时间上的复用: 复用同一个CPU的时间片
多道技术的本质就是CPU的切换 + 保存状态
切换:
- 第一种情况: 程序在执行的过程中遇到IO问题. 作用: 最大效率化利用CPU.
- 第二种情况: 程序占用CPU的时间过长. 作用: 让每个程序都能被CPU执行 弊端: 程序的执行时间变长, 程序执行时间=切换时间+原本执行时间
保存状态: 将进程当前执行的状态保存, 让下一次CPU执行时会基于上一次的状态, 继续执行.
四. 简述同步异步阻塞非阻塞概念
同步异步描述的是程序的提交方式
同步: 任务提交完毕, 等待任务的执行结果, 再此期间不做任何事情.
异步: 提交完任务以后, 直接做别的事情.
堵塞非堵塞描述的的程序的运行状态
堵塞: 堵塞态
非堵塞: 就绪态, 运行态
以上方法最完美的组合就是"异步非阻塞"
五. 书写进程创建的两种方式
# 方式一
import time
from multiprocessing import Process
def task(name):
print(f'{name} is running...')
time.sleep(2)
print(f'{name} is end...')
if __name__ == '__main__':
p = Process(target=task, args=('egon', ))
p.start()
print('主')
# 方式二: 继承Process类
import time
from multiprocessing import Process
class MyProcess(Process):
def __init__(self, name):
self.name = name
def run(self):
print(f'{self.name} is running...')
time.sleep(2)
print(f'{self.name} is end...')
if __name__ == '__main__':
p = MyProcess('egon')
p.run()
# p.join() # AttributeError: 'MyProcess' object has no attribute '_closed'
print('主')