38---进程作业

一 操作系统发展史

  • 穿孔卡片---CPU利用率太低
  • 联机批处理系系统---节省插入卡片的时间间隔
  • 脱机批处理系统---代码/程序通过输入机发送到卫星机写入到高速磁带,已经类似于现代计算机将程序由硬盘读入内存的操作

二 简述进程发展史及算法演变

  • 1 先来先服务调度算法
    • 对长作业有利,对短作业无益处
  • 2 短作业优先调度算法
    • 对短作业有利,对长作业无益处
  • 3 时间片轮转法+多反馈队列
    • 多个任务进入第一个队列,在一个固定的时间片内,任务能在该固定的时间片内未执行完成的话就会进入下一个队列,越往下的队列的程序被执行的优先级就会越低

三 简述多道技术

  • 在单核CPU的前提下,在执行A任务的时候控制硬盘将任务B提前读取到内存,节省多个程序运行的总耗时
  • 多道技术---切换+保存状态
    • 空间上的复用:多个应用程序公用一套计算机硬件
    • 时间上的复用:只需要任务时长最长的所需时间,可以保存状态、
  • 切换分成两种情况
    • 1 当一个程序遇到IO操作时,操作系统会剥夺该程序CPU的执行权限
      • 提高了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('。。。')
posted @ 2020-04-22 17:10  微信搜索-程序媛小庄  阅读(120)  评论(0)    收藏  举报