py知识(每日更新) 7.19

计算系操作系统基础知识

  1. 进程基础知识

    1. 程序是什么?

      程序就是一堆文件.

    2. 进程是什么?

      进程就是一个正在执行的文件/程序,抽象的概念.

    3. 进程被谁执行?

      cpu最终运行你的程序.

      操作系统调度作用.将你的磁盘上的程序加载到内存,然后交由CPU去处理.一个cpu正在运行的一个程序,就叫开启了一个进程.

  2. 操作系统

    1. 操作系统的定义

      操作系统是存在于硬件与软件之间,管理,协调,控制软件与硬件的交互.

    2. 操作系统的作用:

      1. 如果没有操作系统,你去写一个程序,你只要完成两层即可.

      第一层: 你要学会底层硬件:cpu,内存,磁盘是如何工作使用的.

      第二层: 去调用这些底层的硬件.

      操作系统第一个作用:将一些丑陋复杂的硬件操作封装成美丽的接口,便于使用.

      open()

      1. 操作系统的第二个作用:

        你的计算机(单个cpu情况)看似可以处理多个进程,看电影 + 玩纸牌游戏 + qq聊天 + 12306抢票.....

        操作系统第二个作用: 合理的调度分配多个进程与cpu的关系,让其有序化,

  3. 操作系统(计算机)的发展史(多道技术)

    计算机: 机械式计算机.算盘.

    电子计算机:发展史.

    1. 第一代电子计算机(1940~1955)

      二战时期,推出的电子计算机 手工操作.预定.类似于插线板的程序,计入机房,一个人独资享有计算机2个小时,各种硬件的操作插线与你的程序结合.

      特点: 没有操作系统的概念,所有的硬件连接都是自己完成.

      优点: 一个人独享.

      缺点:

      1. 一个人享用浪费资源.
      2. 所有的程序都是串行处理.
    2. 第二代计算机:磁带存储,批处理系统.(1955~1965)

      不需要程序员本人继续硬件的操作,所有的硬件的操作都已经是成型的机器了.

      每个程序员将自己的程序可在磁盘上.就可以走了.中间有工作人员将你的代码磁盘运行,最后打印结果.

      优点: 节省了程序员连接个硬件的操作的时间.

      缺点:

      1. 不能独享计算机,不能在程序运行时修复bug.
      2. cpu还是串行处理.
    3. 第三代计算机,集成电路,多道程序系统.

      集成电路概念,所有的硬件变的很小,排列在线路板上.

      20世纪60年代初: 计算机两条生产线:互不兼容

      1. 用于科学计算,运算的 计算密集型.

      2. 用户商用保险银行,归档,打印等工作. IO 密集型.

        阻塞; IO阻塞,recv, accept, read input,write, sleep等等,都是阻塞.

      system/360系列: 将两种计算机类型合并成一个.

      第三代计算机解决一个问题: 人工中途参与磁盘传递工作,以及输入输出设备不同机的问题.

      第三代计算机解决第二个问题: 多道技术.

      知识点解释:

      办一个效率高,效率低的问题.

      你洗衣服,20分钟,20分钟,你(cpu)一直没有闲着.cpu处理的效率高(利用率,满负荷),

      洗衣服: 10分钟, 40分钟, # 以耗时最长的进程结束为准

      聊天 : 20分钟, 10分钟

      烧水: 3分钟, 5分钟

      如果三个进程全部都没有IO阻塞,多道技术就会影响最终的效率.

      多道技术解决的第一个问题: 时间上的复用.

      第一代,二代计算机一个内存只允许加载一个进程.

      第三代计算机开始,多道技术结局了提高内存的利用率: 空间上的复用.

      一个内存可以加载多个进程.

      空间上的复用: 当年面临着一个问题,数据隔离.

      麻省理工(MIT)在一台改装过的7094机上开发成功的,CTSS兼容分时系统.

      一个问题: 还是不能独享

      最终第三代计算机推广使用.

  4. 进程介绍(理论部分)

    1. 介绍几个概念.

      串行: 所有的进程由cpu一个一个的解决.

      并发:单个cpu,同时执行多个进程(来回切换的),看起来像是同时运行.

      并行:多个cpu,真正的同时运行多个进程.

      阻塞:遇到IO才叫阻塞.

      一个cpu运行两个进程,其中一个进程完全没有阻塞,

      非阻塞: 没有IO.

    2. 进程的创建.

      什么是开启多个进程:

      python中,如果一次想开启多个进程,必须是一个主进程,开启多个子进程.

      linux, windows: 由主进程开启子进程:

      相同点: 原则:主进程开启子进程两个进程都有相互隔离的独立的空间,互不影响.

      不同点:

      ​ linux: 子进程空间的初始数据完全是从主(父)进程copy一份.

      ​ windows: 子进程空间的初始数据完全是从主(父)进程copy一份,但是有所不同.

  5. python并发编程之:多进程

from multiprocessing import Process
import time

def task(name):

    print(f'{name} is running')
    time.sleep(3)
    print(f'{name} is done')
if __name__ == '__main__':  # windows环境下,开启多进程一定放在这个下面
    p = Process(target=task,args=('怼怼',))  # args 一定是一个元组的形式.
    p.start()
    # 通知操作系统,你给我在内存中开辟一个空间,将p这个进程放进去,然后让cpu执行.
    print('===主进程')
from multiprocessing import Process
import time

class MyProcess(Process):
    def __init__(self, name):
        super().__init__()  # 必须要继承父类的__init__
        self.name = name
    def run(self):  # 必须定义run名字.
        print(f'{self.name} is running')
        time.sleep(3)
        print(f'{self.name} is done')

if __name__ == '__main__':  # windows环境下,开启多进程一定放在这个下面
    p = MyProcess('怼怼')
    p.start()
    # 通知操作系统,你给我在内存中开辟一个空间,将p这个进程放进去,然后让cpu执行.
    print('===主进程')

猜你喜欢

转载自www.cnblogs.com/lyoko1996/p/11233951.html