操作系统和进程

一.操作系统

  1.什么是操作系统

    操作系统就是一个协调,管理和控制计算机硬件资源和软件资源的控制程序.

    在计算机硬件和用户接口程序之间

  2.操作系统的作用

    1.为应用程序提供如何使用硬件资源的抽象

    2.管理硬件资源

二.操作系统发展史

  第一代(1940-1955)  手工操作--穿孔卡片

  第二代(1955-1965)  磁带存储--批处理

  第三代(1965-1980)  多道程序系统

    1.多道程序技术:允许多个程序同时进入内存并相互独立运行

      时间复用:遇到I/O就切换任务

      空间复用:将内存分为几部分,每个部分放入一个程序,这样,同一时间内存中就有了多道程序

    2.多道批处理系统(解决空间复用缺点)

    3.分时系统(解决时间复用缺点)

    4.实时系统(高精度)

    5.通用操作系统

三.并发与并行

  1.并发:伪并行,看起来是同时运行,实际上是cpu切换太快.单核cpu+多道技术就可以实现并发

  2.并行:真正的同时运行,只有多核cpu才能实现

四.同步,异步,阻塞,非阻塞

  1.进程的三状态:就绪,执行,阻塞

  2.同步:任务提交方式,一个一个提交

  3.异步:任务提交方式,多个任务同时提交

  4.阻塞:遇到I/O(程序遇到input等等)

  5.异步非阻塞:程序最理想状态,同时执行多个进程并且没有I/O,效率很高.

五.multiprocess模块中的Process

1.创建进程的两种方式

import time
from multiprocessing import Process

def f1(str):
    time.sleep(1)
    print(str)

def f2(str):
    time.sleep(1)
    print(str)

# 创建多线程的过程:
#       先copy主程序的代码,类似于import导入
#       如果没有main 就会发生copy的代码中还会执行多线程创建,造成递归.
#       main的作用就是防止import导入时候执行main下面代码
#           如果是模块导入,__name__ = 模块名
#           如果是自己执行,__name__ = __main__
#       main 就是为了防止造成递归
if __name__ == '__main__':
    for i in range(20):
        p1 = Process(target=f1, args=("烧饼",))  # args传参方式  元组
        p2 = Process(target=f2, kwargs={"str": "羊汤"})  # kwargs传参方式 字典

        p1.start()  # 发出开始指令
        p1.join()  # 等待p1对象执行完才能往下执行

        p2.start()
第一种方式创建进程
from multiprocessing import Process

class Myprocess(Process): # 继承Process类

    def __init__(self,str):
        super().__init__()    # 重用父类中的__init__()
        self.str = str

    def run(self):          # 重写run方法
        print(self.str)

if __name__ == '__main__':
    for i in range(20):

        p = Myprocess("666") # 传参
        p.start()
    
第二种方式创建进程

2.Process中的几个方法

  1.start():启动继承,并调用子进程中的run

  2.run():进程启动时运行的方法

  3.terminate():给操作系统发出结束该进程的信号

  4.is_alive():判断该进程是否还运行

  5.join():等待该程序执行完再往下执行

3.Process中的几个属性

  1.daemon:默认为False.守护进程,当daemon为True时,主进程结束,子进程也会被强制结束

  2.name:进程的名称,可以自定义

  3.pid:查看进程的id

猜你喜欢

转载自www.cnblogs.com/q767498226/p/10252614.html