zoukankan      html  css  js  c++  java
  • 操作系统和进程

    一.操作系统

      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,效率很高.

    五.multiprocessing模块中的Process

    1.什么是进程(process)

      进程:进程是系统进行资源分配和调度的基本单位

    2.创建进程的两种方式

       p = Process(targrt=任务,args=(参数,)

    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()
        
    第二种方式创建进程

    3.Process中的几个方法

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

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

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

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

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

    4.Process中的几个属性

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

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

      3.pid:查看进程的id

  • 相关阅读:
    java的基本数据类型有八种:
    BZOJ 1003 [ZJOI2006]物流运输trans
    BZOJ 1002 [FJOI2007]轮状病毒
    BZOJ 1001 [BeiJing2006]狼抓兔子
    FFT修正
    主席树修正
    COJ 0995 WZJ的数据结构(负五)区间操作
    COJ 1010 WZJ的数据结构(十) 线段树区间操作
    COJ 0999 WZJ的数据结构(负一)
    AC自动机修正
  • 原文地址:https://www.cnblogs.com/q767498226/p/10252614.html
Copyright © 2011-2022 走看看