多道技术背景:

  提高工作效率(充分利用I/O阻塞的时间)    (I: input, O: output)

  同时执行多个任务

多道技术:

  空间复用: 充分利用内存空间

  时间复用: 充分利用I/O阻塞时间

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

    

缺点:首先丧失的是安全性,比如你的qq程序可以访问操作系统的内存,这意味着你的qq可以拿到操作系统的所有权限。其次丧失的是稳定性,某个程序崩溃时有可能把别的程序的内存也给回收了,比方说把操作系统的内存给回收了,则操作系统崩溃。

为了解决空间复用上的问题:程序之间的内存必须分割,由操作系统控制。如果内存彼此不分割,则一个程序可以访问另外一个程序的内存。

时间上的复用:当一个程序在等待I/O时,另一个程序可以使用cpu,如果内存中可以同时存放足够多的作业,则cpu的利用率可以接近100%

缺点:程序员A的程序运行10分钟就能够运行结束,程序员B的程序需要运行24小时,如何程序员B的程序先运行,并且程序员B的程序没有任何I\O操作,那么程序员A需要等待24小时之后才能执行,那么这就不太合理了。

为了解决时间出现了分时系统

分时系统:

  分时技术: 把处理机的运行时间分成很短的时间片, 按时间片轮流把处理机分配给各联机作业使用.

  若某个作业在分配给它的时间片内不能完成其计算, 则该作业暂时中断, 把处理机让给另一作业使用, 等待下一轮时再继续其运行. 由于计算机速度很快, 作业运行轮转得很快, 给每个用户的印象是, 好像他独占了一台计算机. 而每个用户可以通过自己的终端向系统发出各种操作指令, 在充分的人机交互情况下, 完成作业的运行.

具有上述特征的计算机系统称为分时系统, 它允许多个用户同时联机使用计算机. 多用户分时系统是当今计算机操作系统中最普遍使用的一类操作系统.

实时系统:

  虽然多道批处理系统能获得较令人满意的资源利用率和系统响应时间, 但却不能满足实时控制与实时信息处理两个应用领域的需求. 于是就产生了实时系统, 即系统能够及时响应随机发生的外部事件, 并在严格的时间范围内完成对该事件的处理.

  实时系统在一个特定的应用中常作为一种控制设备来使用.

  实时系统可分成两类:

    (1)实时控制系统。当用于飞机飞行、导弹发射等的自动控制时,要求计算机能尽快处理测量系统测得的数据,及时地对飞机或导弹进行控制,或将有关信息通过显示终端提供给决策人员。当用于轧钢、石化等工业生产过程控制时,也要求计算机能及时处理由各类传感器送来的数据,然后控制相应的执行机构。
    (2)实时信息处理系统。当用于预定飞机票、查询有关航班、航线、票价等事宜时,或当用于银行系统、情报检索系统时,都要求计算机能对终端设备发来的服务请求及时予以正确的回答。此类对响应及时性的要求稍弱于第一类。
  实时操作系统的主要特点
    (1)及时响应。每一个信息接收、分析处理和发送的过程必须在严格的时间限制内完成。
    (2)高可靠性。需采取冗余措施,双机系统前后台工作,也包括必要的保密措施等。

  

分时——现在流行的PC,服务器都是采用这种运行模式,即把CPU的运行分成若干时间片分别处理不同的运算请求 linux系统
实时——一般用于单片机上、PLC等,比如电梯的上下控制中,对于按键等动作要求进行实时处理

并发:  (一个CPU执行多个进程, 进程之间不断切换)

  提高了程序的工作效率

  两项工作:

    1. 进程之间的切换

    2. 保护现场, 保留进程执行的进度

并行: (多核,每个核执行一个,同时执行无需切换即并行)

  应用多核, 多个任务同时执行

同步:  等待前面的任务执行完毕, 后面的任务才能执行.

异步:排队取号,前面的任务执行时,自己回去处理自己的事,等前面的任务执行完了,叫到自己的号,再过去执行自己的任务.

阻塞: 只等待排队,什么都不干

非阻塞: 可以处理自己的事情,不用干等着

进程:

  具有独立功能的程序在某个数据集合上的一次运行活动, 也是操作系统进行资源分配和保护的基本单位.

  进程状态的七态模型

  1. 新建态(new): 进程被创建, 尚未进入就绪队列.

  2. 就绪态(ready): 进程具备运行条件, 等待系统分配处理器.

   3. 挂起就绪态(ready suspend): 进程具备运行条件, 但目前在外存中.

   4. 运行态(running): 进程占有处理器正在运行.

   5. 终止态(exit): 进程达到正常结束点或被其他原因所终止, 下一步将被撤销.

   6. 等待态(wait): 又称阻塞态或休眠态. 进程正在等待某个事件完成, 目前不具备运行条件.

   7. 挂起等待态(blocked suspend): 进程正在等待某个事件完成, 并且在外存中.

  进程的交互:

  进程互斥(Mutual Exclusion): 若干进程因相互抢夺独占型资源而产生的竞争制约关系.

  进程同步(Synchronization): 为完成共同任务的并发进程基于某个条件来协调其活动, 因为需要在某些位置上排定执行的先后次序而等待,、传递信息或信息所产生的协作制约关系.

  

查看进程的pid

import os
import time
from multiprocessing import Process def func(pycharm_pid):
print('子进程', os.getpid())
print('父进程', os.getppid())
print('pycharm的pid', pycharm_pid)
time.sleep(10) # 等待10s,防止进程很快结束,可以在此期间看到任务管理器中进程的PID
print('我是func~~~')
def inner():
print('我是inner')
print('子进程', os.getpid())
print('父进程', os.getppid())
def inner2():
print('我是inner2')
print('子进程', os.getpid())
print('父进程', os.getppid())
return inner2()
return inner() def func2():
print('我是func2')
print('父进程的另一个子进程', os.getpid())
time.sleep(10) if __name__ == '__main__':
print('父进程', os.getpid())
pycharm_pid = os.getppid()
p = Process(target=func, args=(pycharm_pid,)) # 创建一个进程
p.start() # 启动这个进程
p1 = Process(target=func2,) # 创建一个进程
p1.start() # 启动这个进程
# 进程启用后会相互抢占内存, 而p和p1进程的启动间隔十分短,所以p和p1无法确定哪个进程会先执行,是完全随机的

Day032--Python--操作系统, process进程的更多相关文章

  1. python 操作系统和进程

    一. 操作系统介绍 多道程序系统 多道程序设计技术       所谓多道程序设计技术,就是指允许多个程序同时进入内存并运行.即同时把多个程序放入内存,并允许它们交替在CPU中运行,它们共享系统中的各种 ...

  2. Python process (进程)

    进程 (process) 进程是对各种资源管理的集合,包含对各种资源的调用.内存的管理.网络接口的调用 进程要操作 CPU 必须先启动一个线程,启动一个进程的时候会自动创建一个线程,进程里的第一个线程 ...

  3. python中的进程、线程(threading、multiprocessing、Queue、subprocess)

    Python中的进程与线程 学习知识,我们不但要知其然,还是知其所以然.你做到了你就比别人NB. 我们先了解一下什么是进程和线程. 进程与线程的历史 我们都知道计算机是由硬件和软件组成的.硬件中的CP ...

  4. Day9 - Python 多线程、进程

    Python之路,Day9, 进程.线程.协程篇   本节内容 操作系统发展史介绍 进程.与线程区别 python GIL全局解释器锁 线程 语法 join 线程锁之Lock\Rlock\信号量 将线 ...

  5. Python学习--17 进程和线程

    线程是最小的执行单元,而进程由至少一个线程组成.如何调度进程和线程,完全由操作系统决定,程序自己不能决定什么时候执行,执行多长时间. 进程 fork调用 通过fork()系统调用,就可以生成一个子进程 ...

  6. python基础(16)-进程&线程&协程

    进程之multiprocessing模块 Process(进程) Process模块是一个创建进程的模块,借助这个模块,就可以完成进程的创建. 介绍 初始化参数 Process([group [, t ...

  7. python进阶之 进程编程

    1.进程 顾名思义,进程即正在执行的一个过程.进程是对正在运行程序的一个抽象. 进程的概念起源于操作系统,是操作系统最核心的概念,也是操作系统提供的最古老也是最重要的抽象概念之一.操作系统的其他所有内 ...

  8. Python 多线程、进程

    本节内容 操作系统发展史介绍 进程.与线程区别 python GIL全局解释器锁 线程 语法 join 线程锁之Lock\Rlock\信号量 将线程变为守护进程 Event事件 queue队列 生产者 ...

  9. Python 线程和进程和协程总结

    Python 线程和进程和协程总结 线程和进程和协程 进程 进程是程序执行时的一个实例,是担当分配系统资源(CPU时间.内存等)的基本单位: 进程有独立的地址空间,一个进程崩溃后,在保护模式下不会对其 ...

  10. Python 操作系统介绍 进程的创建

    背景知识 顾名思义,进程即正在执行的一个过程.进程是对正在运行程序的一个抽象. 进程的概念起源于操作系统,是操作系统最核心的概念,也是操作系统提供的最古老也是最重要的抽象概念之一.操作系统的其他所有内 ...

随机推荐

  1. 关于对ProgressBar定义模板的一些总结

    在之前的博客中曾经写到了一篇关于如何定义圆形进度条的文章,今天就ProgressBar再来进行一些总结,首先来介绍一下ProgressBar的结构,ProgressBar控件的模板有两个部分,我们在定 ...

  2. python设计模式第十九天【职责链模式】

    1.应用场景 (1)将一个任务拆分为具有顺序的多个部分,每个类完成相应的部分,并且顺序执行 (2)软件窗口的消息传播 (3)SERVLET容积的过滤器Filter的实现 2.代码实现 #!/usr/b ...

  3. 解决mybatis generator警告Cannot obtain primary key information from the database, generated objects may be incomplete

    使用 mybatis generator 生成pojo.dao.mapper时 经常出现 Cannot obtain primary key information from the database ...

  4. SpringBoot之加载自定义配置文件

    SpringBoot默认加载配置文件名为:application.properties和application.yml,如果需要使用自定义的配置文件,则通过@PropertySource注解指定. J ...

  5. Javassist之使用字节码在运行时生成新的类 01

    介绍 Javassist是一个开源的分析.编辑和创建Java字节码的类库.是由东京工业大学的数学和计算机科学系的 Shigeru Chiba (千叶 滋)所创建的.它已加入了开放源代码JBoss 应用 ...

  6. H5 history.pushState 在微信内修改url后点击用safari打开/复制链接是修改之前的页面

    解决方案:url参数增加随机参数 function wxRefresh() { var replaceQueryParam = (param, newval, search) => { var ...

  7. BZOJ4873[Shoi2017]寿司餐厅——最大权闭合子图

    题目描述 Kiana最近喜欢到一家非常美味的寿司餐厅用餐.每天晚上,这家餐厅都会按顺序提供n种寿司,第i种寿司有一个 代号ai和美味度di,i,不同种类的寿司有可能使用相同的代号.每种寿司的份数都是无 ...

  8. HDU5773-The All-purpose Zero-多校#41010-最长上升子序列问题

    只想到了朴素的n^2做法,然后发现可以用splay维护.于是调了几个小时的splay... splay的元素是从第二个开始的!第一个是之前插入的头节点! #include <cstdio> ...

  9. 图灵机器人API接口

    调用图灵API接口实现人机交互 流程一: 注册 图灵机器人官网: http://www.tuling123.com/ 第一步: 先注册, 然后创建机器人, 拿到一个32位的key 编码方式 UTF-8 ...

  10. Java 视频处理,截帧操作

    1.maven <dependency> <groupId>org.bytedeco</groupId> <artifactId>javacv</ ...