python 32 操作系统与进程
1. 操作系统
管理、控制、协调计算机硬件与软件资源的计算机程序。
1.1 作用
- 将一些对硬件操作的复杂、丑陋的接口,变成简单、清晰的接口。
- 将多个进程对硬件资源(cpu)的竞态请求变得有序化、合理化。
1.2 操作系统的发展
linux或windows的源代码有五百万行数量级。
计算机发展史:
第一代:电子管计算机(1946——1958年),真空电子管,机器语言编写。
优点:个人能够独享资源;
缺点: 体积大,功耗高,速度慢,操作繁琐,串行执行。
第二代:晶体管计算机(1958年—1964年)存储与磁盘,批处理系统
优点:批处理,节省机时;
缺点:人参与控制,串行执行,统一规划到一批作业中。
第三代:集成电路计算机(1964年—1970年):多道程序系统
背景:1. 集成电路:把所用的硬件变小,线路板。2.不同生产线不兼容,需合并兼容。
多道程序系统:
- 空间上的复用:将内存分区域,一个内存可以同时加载多个进程。
- 时间上的复用:实现将cpu在多个进程之间来回切换,并且保留状态。
几乎所有的程序又有IO阻塞;同时加载到内存3个进程,每个进程都有阻塞情况,只要cpu运行一个进程遇到IO阻塞时,会立马切换,长时间占用cpu也会切换。 这样能够提升效率,最大限度的使用cpu。
如果时一个IO密集型进程,来回切换提升效率;
如果是一个计算密集型,来回切换降低效率。
再加上计算机采用了必须的保护硬件(程序之间的内存彼此隔离)之后,第三代计算机应用而生。(分时系统)
特点:系统化、标准化。
- 空间上的复用:将内存分区域,一个内存可以同时加载多个进程。
第四代:大规模集成电路(1970年—至今)
集成度更高,体积小,使用方便。
2. 进程的理论
2.1 相关名词
程序:一堆静态的代码。
进程:程序的运行过程、任务。 是由操作系统操控调用交与cpu运行。
一个程序可以开启多个进程。
串行:所有的任务一个接一个去完成。
并行:多个cpu执行多个任务,真正的同时完成。
并发:一个cpu完成多个任务,看起来像是同时完成。
阻塞:cpu遇到IO就是阻塞。
非阻塞:没有IO就是非阻塞。
2.2 进程的创建
新的进程创建都是由一个已存在的进程执行调用创建的。
一个主进程可以开启多个子进程;
一个子进程必须依赖主进程才可以开启。
Unix: 由fork创建子进程。linux,mac基于Unix: 创建一个子进程会完完全全复制一个主进程所有的资源,初始资源不变.
Windows:操作系统调用CreateProcess 处理进程的创建。创建一个子进程,会copy主进程所有的资源,但是会改变一些资源。
2.3 进程的状态:
运行、阻塞、就绪三种状态。

python 32 操作系统与进程的更多相关文章
- 33.python之操作系统,进程,线程
转载:https://www.cnblogs.com/yuanchenqi/articles/6248025.html 操作系统 一 为什么要有操作系统? 现代计算机系统是由一个或者多个处理器,主存, ...
- python 操作系统和进程
一. 操作系统介绍 多道程序系统 多道程序设计技术 所谓多道程序设计技术,就是指允许多个程序同时进入内存并运行.即同时把多个程序放入内存,并允许它们交替在CPU中运行,它们共享系统中的各种 ...
- 操作系统/应用程序、操作中的“并发”、线程和进程,python中线程和进程(GIL锁),python线程编写+锁
并发编程前言: 1.网络应用 1)爬虫 直接应用并发编程: 2)网络框架 django flask tornado 源码-并发编程 3)socketserver 源码-并发编程 2.运维领域 1)自动 ...
- day 32 操作系统、线程和进程(GIL锁)
一.操作系统/应用程序 a. 硬件 - 硬盘 - CPU - 主板 - 显卡 - 内存 - 电源 ... b. 装系统(软件) - 系统就是一个由程序员写出来软件,该软件用于控制计算机的硬件,让他们之 ...
- Python之线程、进程和协程
python之线程.进程和协程 目录: 引言 一.线程 1.1 普通的多线程 1.2 自定义线程类 1.3 线程锁 1.3.1 未使用锁 1.3.2 普通锁Lock和RLock 1.3.3 信号量(S ...
- 在Python程序中的进程操作,multiprocess.Process模块
在python程序中的进程操作 之前我们已经了解了很多进程相关的理论知识,了解进程是什么应该不再困难了,刚刚我们已经了解了,运行中的程序就是一个进程.所有的进程都是通过它的父进程来创建的.因此,运行起 ...
- python 全栈开发,Day38(在python程序中的进程操作,multiprocess.Process模块)
昨日内容回顾 操作系统纸带打孔计算机批处理 —— 磁带 联机 脱机多道操作系统 —— 极大的提高了CPU的利用率 在计算机中 可以有超过一个进程 进程遇到IO的时候 切换给另外的进程使用CPU 数据隔 ...
- python(40)- 进程、线程、协程及IO模型
一.操作系统概念 操作系统位于底层硬件与应用软件之间的一层.工作方式:向下管理硬件,向上提供接口. 操作系统进行进程切换:1.出现IO操作:2.固定时间. 固定时间很短,人感受不到.每一个应用层运行起 ...
- Python程序中的进程操作--—--开启多进程
Python程序中的进程操作-----开启多进程 之前我们已经了解了很多进程相关的理论知识,了解进程是什么应该不再困难了,刚刚我们已经了解了,运行中的程序就是一个进程.所有的进程都是通过它的父进程来创 ...
随机推荐
- 二、SQL Server 2008附加数据库时出错的解决方法
错误中提示“数据库的版本为661,无法打开.此服务器支持655版及更低版本.不支持降级路径”. 这种情况是由于高版本的数据库文件在低版本的数据库上造成的,即我们要附加的数据库文件的版本高于当前SQL ...
- 《VR入门系列教程》之9---谷歌纸盒
谷歌纸盒---基于智能手机的廉价VR眼镜 如果用汽车来做类比,Oculus Rift和GearVR就是特斯拉和兰博基尼,它们物美但是价不廉.要是主机性能不好,那么几百美元的Oculus眼镜就是 ...
- module中module.exports与exports的区别(转)
转https://cnodejs.org/topic/55ccace5b25bd72150842c0a require 用来加载代码,而 exports 和 module.exports 则用来导出代 ...
- springboot-rabbitMQ
作者:纯洁的微笑出处:http://www.ityouknow.com/ 版权所有,欢迎保留原文链接进行转载:) RabbitMQ 即一个消息队列,主要是用来实现应用程序的异步和解耦,同时也能起到消息 ...
- spring使用thymeleaf
一.spring使用thymeleaf做解析器其实很简单,这是基于xml配置的方式 <?xml version="1.0" encoding="UTF-8" ...
- IDEA:No SLF4J providers were found.
如果您是用IDEA 的 maven 写的 将slf4j的导入包 更改 为下列代码 <dependency> <groupId>org.slf4j</groupId> ...
- ES6--变量
声明变量 首先我们来回顾一下 es6 之前声明变量的方法:通常情况下,在 JavaScript 中,我们只有一种声明变量的关键字--var,我们使用 var 声明变量,使用 = 给变量赋值.在es6中 ...
- 【iOS】Xcode 使用 CocoaPods 导入第三方库后没有提示
Github 上下载的开源项目,运行后出现的 [iOS]build diff: /../Podfile.lock: No such file or directory 解决后,又出现了这个问题. 解决 ...
- bug探索常识
1.什么是Bug探索测试? 探索测试是将测试设计和测试执行整合在一起,形成的一种测试方法. 2.探索性测试怎么做? 需要认真思考和分析结果,并且在探索测试的过程中做记录. 3.探索性测试的好处? 可以 ...
- 9-1、大型项目的接口自动化实践记录----数据库结果、JSON对比
上一篇写了如何从DB获取预期.实际结果,这一篇分别对不同情况说下怎么进行对比. PS:这部分在JSON对比中也适用. 1.结果只有一张表,只有一条数据 数据格式:因为返回的是dicts_list的格式 ...