• 9.11(day35)计算机发展史,进程,开启进程的两种方式


    操作系统的发展

    将应用程序对硬件资源的静态请求变得有序化
    第一代:真空管,插件版,没有操作系统概念,同一时间只能一个使用(浪费资源)
    第二代:晶体管和批处理技术,节省机时,需要人参与控制
    第三代:集成电路芯片,多道程序设计
    现代计算机:
    一般多核,每个核都有多道技术
    当一个程序运行阻塞,IO结束会重新调度,最大为核数
    调度cpu的任意一个,有操作系统调度算法决定

    IO:不只是输入输出设备,硬盘读取代码到内存,内存保存在硬盘中,网络IO

    串行:一个完完整整的执行完了在执行下一个
    并发:看起来是同时运行的(切换+保存状态)
    并行:真正做到同时运行,只有多核才能实现并行

    多道技术:
    空间复用:公用一个内存条,每一个进程都有自己独立的内存空间,互不干扰,物理级别的隔离
    (给时间复用铺路)
    时间复用:公用一个cpu,
    cpu的切换:IO的时候,占用时间过长的时候切换

    进程概述

    进程:正在进行的一个任务

    进程的创建:系统初始化;一个进程在运行过程中开启子进程;用户交互请求,创建新进程
    进程的三个基本状态:运行,阻塞,就绪
    就绪:除了处理器资源,别的都准备就绪,只要分配了处理器进程就可以执行
    运行:进程占用处理器资源,此状态进程数目小于等于处理器数目,通常会执行计算机的空闲进程
    阻塞:缺少某种条件,在条件满足前及时分配了处理器资源给该进程,也无法运行

    开启子进程的两种方式

    方式一:

    from multiprocessing import Process
    # 导入模块,可以开启子进程
    import time
    def task(x):
        print(f'{x},start')
        time.sleep(2)
        print(f'{x},end')
    if __name__ == '__main__':
    
        p = Process(target=task,args=('lqz',))   # 目标
        p2 = Process(target=task,args=('lhf',))
        p.start()
        p2.start()   # 告诉操作系统开启进程,告诉完就执行完了,操作系统什么时候开子进程我们不能控制
        time.sleep(5)
        print('主进程')
    
    

    方式二:

    from multiprocessing import Process
    import time
    class Test(Process):
        def __init__(self,sex):
            self.sex = sex
        def run(self):
            print(f'{self.sex}.start')
            time.sleep(5)
            print(f'{self.sex}.end')
    if __name__ == '__main__':
    
        p = Test()
        p.start()
        print('主进程')
    

    僵尸进程,孤儿进程

    僵尸进程:子进程结束时保用pid等状态信息(没死透)

    孤儿进程:父进程死了自己在死

  • 相关阅读:
    java实现第三届蓝桥杯填算式
    java实现第三届蓝桥杯填算式
    微信--高效解决token及授权用户openid的持久化处理办法
    微信开发学习总结——微信开发入门(转)
    Java 微信公众号开发--- 接入微信
    微信开发工具类
    手把手教你反编译别人的app
    马士兵hadoop第五课:java开发Map/Reduce(转)
    马士兵hadoop第四课:Yarn和Map/Reduce配置启动和原理讲解(转)
    马士兵hadoop第三课:java开发hdfs(转)
  • 原文地址:https://www.cnblogs.com/jiann/p/11529580.html
Copyright © 2020-2023  润新知