zoukankan      html  css  js  c++  java
  • 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等状态信息(没死透)

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

  • 相关阅读:
    纪念Google Reader—Google Reader的最后一天
    SlickEdit 18.0 版本发布 同时更新破解文件
    Linux设置中文的man手册
    Android按钮单击事件的五种实现方式
    使用VBS脚本语音朗读文字
    JavaGUI设置windows主题外观
    EL表达式
    自己封装的一个Ajax小框架
    微信公众号清除内存缓存
    墨刀编辑微信端 原型设计
  • 原文地址:https://www.cnblogs.com/jiann/p/11529580.html
Copyright © 2011-2022 走看看