Day032--Python--操作系统, process进程
多道技术背景:
提高工作效率(充分利用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小时之后才能执行,那么这就不太合理了。
为了解决时间出现了分时系统
分时系统:
分时技术: 把处理机的运行时间分成很短的时间片, 按时间片轮流把处理机分配给各联机作业使用.
若某个作业在分配给它的时间片内不能完成其计算, 则该作业暂时中断, 把处理机让给另一作业使用, 等待下一轮时再继续其运行. 由于计算机速度很快, 作业运行轮转得很快, 给每个用户的印象是, 好像他独占了一台计算机. 而每个用户可以通过自己的终端向系统发出各种操作指令, 在充分的人机交互情况下, 完成作业的运行.
具有上述特征的计算机系统称为分时系统, 它允许多个用户同时联机使用计算机. 多用户分时系统是当今计算机操作系统中最普遍使用的一类操作系统.
实时系统:
虽然多道批处理系统能获得较令人满意的资源利用率和系统响应时间, 但却不能满足实时控制与实时信息处理两个应用领域的需求. 于是就产生了实时系统, 即系统能够及时响应随机发生的外部事件, 并在严格的时间范围内完成对该事件的处理.
实时系统在一个特定的应用中常作为一种控制设备来使用.
实时系统可分成两类:
分时——现在流行的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进程的更多相关文章
- python 操作系统和进程
一. 操作系统介绍 多道程序系统 多道程序设计技术 所谓多道程序设计技术,就是指允许多个程序同时进入内存并运行.即同时把多个程序放入内存,并允许它们交替在CPU中运行,它们共享系统中的各种 ...
- Python process (进程)
进程 (process) 进程是对各种资源管理的集合,包含对各种资源的调用.内存的管理.网络接口的调用 进程要操作 CPU 必须先启动一个线程,启动一个进程的时候会自动创建一个线程,进程里的第一个线程 ...
- python中的进程、线程(threading、multiprocessing、Queue、subprocess)
Python中的进程与线程 学习知识,我们不但要知其然,还是知其所以然.你做到了你就比别人NB. 我们先了解一下什么是进程和线程. 进程与线程的历史 我们都知道计算机是由硬件和软件组成的.硬件中的CP ...
- Day9 - Python 多线程、进程
Python之路,Day9, 进程.线程.协程篇 本节内容 操作系统发展史介绍 进程.与线程区别 python GIL全局解释器锁 线程 语法 join 线程锁之Lock\Rlock\信号量 将线 ...
- Python学习--17 进程和线程
线程是最小的执行单元,而进程由至少一个线程组成.如何调度进程和线程,完全由操作系统决定,程序自己不能决定什么时候执行,执行多长时间. 进程 fork调用 通过fork()系统调用,就可以生成一个子进程 ...
- python基础(16)-进程&线程&协程
进程之multiprocessing模块 Process(进程) Process模块是一个创建进程的模块,借助这个模块,就可以完成进程的创建. 介绍 初始化参数 Process([group [, t ...
- python进阶之 进程编程
1.进程 顾名思义,进程即正在执行的一个过程.进程是对正在运行程序的一个抽象. 进程的概念起源于操作系统,是操作系统最核心的概念,也是操作系统提供的最古老也是最重要的抽象概念之一.操作系统的其他所有内 ...
- Python 多线程、进程
本节内容 操作系统发展史介绍 进程.与线程区别 python GIL全局解释器锁 线程 语法 join 线程锁之Lock\Rlock\信号量 将线程变为守护进程 Event事件 queue队列 生产者 ...
- Python 线程和进程和协程总结
Python 线程和进程和协程总结 线程和进程和协程 进程 进程是程序执行时的一个实例,是担当分配系统资源(CPU时间.内存等)的基本单位: 进程有独立的地址空间,一个进程崩溃后,在保护模式下不会对其 ...
- Python 操作系统介绍 进程的创建
背景知识 顾名思义,进程即正在执行的一个过程.进程是对正在运行程序的一个抽象. 进程的概念起源于操作系统,是操作系统最核心的概念,也是操作系统提供的最古老也是最重要的抽象概念之一.操作系统的其他所有内 ...
随机推荐
- TensorFlow总结
第一 基础 1. 定义变量 #定义维度为[2,3], 平均值为·1, 标准差为1,类型为float32,名称为w1的服从正态分布的变量 w1 = tf.Variable(tf.random_norma ...
- 替换JDK 对eclipse的影响?
问题 替换原有的JDK 对 eclipse有影响么? 之前用的eclipse是32位的,我的电脑是64位的,装的JDK是也是32位的,所以不影响使用! 但是,前两天装了一个ideal,新配置了一个9 ...
- fdisk磁盘分区与挂载
参考博客:https://blog.csdn.net/capecape/article/details/78499351?locationNum=6&fps=1 1.查看磁盘分区情况.root ...
- SVN连接不上,Host地址问题
链接https://svn.ct-ec:8888/svn/189cn-document C:\Windows\System32\drivers\etc 单独换成单行,就好了.
- ABP 番外篇-容器
一. @using YD.CloudTimetable.Web.Areas.AppAreaName.Startup @{ ViewBag.CurrentPageName = AppAreaNamePa ...
- VS2017设置背景主题
一.VS2017设置背景主题 1.下载并安装Color Theme Editor for Visual Studio 2017和MoeIDE (图中红圈中的两个插件,工具-扩展和更新-联机-右上角搜索 ...
- 算法题 -- 输入一个Long数组,按要求输出一个等长的Long数组
/** * 输入一个Long数组,按要求输出一个等长的Long数组 * 输出数组的元素值等于,输入数组除相同下标外其他元素的积 * 如:输入[1, 2, 3, 4], 输出[24, 12, 8, 6] ...
- Announcing Windows Template Studio in UWP
今天,我们很高兴地宣布您的文件→新的通用Windows平台应用程序在Visual Studio - Windows模板工作室中的下一个演变.Windows Template Studio在开发人员调查 ...
- U68464 滑稽树上滑稽果(guo)
U68464 滑稽树上滑稽果(guo) 题目描述 小小迪有 n 个约会对象,每个对象有一个约会时长 p[i],小小迪 想尽可能多的去完成他的约会(假设小小迪可以瞬移),每个对象还有 一个忍耐时间 q[ ...
- hdu-2717(基础搜索bfs)
题意:给你n和k,问你n最少花费多少代价能得到k: 有两种变换:1.n++或者n--: 2.n=n*2: 两种代价每次的花费都是1: 思路:一维的bfs,每次入队三个点,一个是n+1,一个是n-1,一 ...