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等状态信息(没死透)

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

猜你喜欢

转载自www.cnblogs.com/jiann/p/11529580.html