day32——进程、操作系统
day32
进程的基础
程序
一堆静态的代码文件
进程
一个正在运行的程序进程。抽象的概念
- 被谁运行?
- 由操作系统操控调用交于CPU运行
操作系统
- 管理控制协调计算机中硬件与软件的关系
- 操作系统的作用?
- 如果没有操作系统:你们在开发软件
- 第一层:对硬件(CPU,内存,磁盘等等)协调,调用
- 第二层:如何调用各种接口,去编程
第一个作用
将一些对硬件操作的复杂丑陋的接口,变成简单美丽的接口。例:open函数
第二个作用
多个进程抢占一个(CPU)资源时,从操作系统会将你的执行变得合理有序
- 阻塞:input、read、write、sleep、recv、accept、sendto、recvfrom...
操作系统的发展史
最早出现的计算机:
算盘
电子类的计算机发展史:
第一代计算机(1940~1955)
在大学里出现了机房,想使用计算机必须预约
先连接调配各个硬件,1.5小时,真空管,然后再插上程序调试,效率低
- 优点:个人独享整个计算机资源
- 缺点:
- 硬件调试插线,耗时
- 所有人都是串行执行
第二代计算机(1955~1965)
磁带存储——批处理系统
- 优点
- 程序员不用亲自对硬件进行插线操控,效率提高
- 可以进行批量处理代码
- 缺点
- 程序员不能独自使用计算机
- 你的所有程序还是串行
第三代计算机(1955~1965)
集成电路,多道程序系统
大背景:
1、集成电路:把所有的硬件变小,线路板
2、将两套不同的生产线合并成一条生产线
技术上的更新:多道技术
- 空间上的复用:
将内存分区域,一个内存可以同时加载多个进程
- 时间上的复用:
实现将cpu在多个进程之间来回切换,并且保留状态
几乎所有的程序都有IO阻塞
洗衣服:10分钟 50分钟
烧水: 5分钟 10分钟
做饭:15分钟 5分钟
同时加载到内存3个任务,3个进程,每个进程都有阻塞情况,只要cpu运行一个进程时,遇到IO阻塞立马会切换,长时间占用cpu也会切换
提升效率,最大限度的使用cpu
如果是一个IO密集型进程,来回切换提升效率
如果是一个计算密集型,来回切换降低效率
第三代计算机广泛采用了必须的保护硬件(程序之间的内存彼此隔离)之后,第三代计算机应用而生:
每个人占用计算机的时间有限的,
多人(少于10个)共同使用一个计算机主机
第四代计算机:至今
进程的理论
串行:所有的任务一个一个的完成
并发:一个cpu完成多个任务,看起来像是同时完成
并行:多个cpu执行多个任务,真正的同时完成
阻塞:cpu遇到IO就是阻塞
非阻塞:没有IO,就叫非阻塞
1、程序:一堆静态文件
2、一个正在执行的程序任务,一个进程
3、一个程序能否开启多个进程?可以
4、进程的创建:
一个子进程必须依赖于一个主进程才可以开启
一个主进程可以开启多个子进程
unix:fork创建子进程
unix(linux,mac):创建一个子进程会完完全全复制一个主进程所有的资源,初始资源不变
windows:操作系统调用CreateProcess处理进程的创建
windows:创建一个子进程,会copy主进程所有的资源,但是会改变一些资源
进程的状态
day32——进程、操作系统的更多相关文章
- day32 进程
上午: # 1 开启子进程 #target #args # if __name__ == '__main__' #start() # 2.其它的方法: #方法: #terminate() #is_al ...
- python 操作系统和进程
一. 操作系统介绍 多道程序系统 多道程序设计技术 所谓多道程序设计技术,就是指允许多个程序同时进入内存并运行.即同时把多个程序放入内存,并允许它们交替在CPU中运行,它们共享系统中的各种 ...
- 每天3分钟操作系统修炼秘籍(6):Idle进程
点我查看秘籍连载 CPU的归属:Idle进程 操作系统并不总是繁忙.例如个人PC上任务比较轻,多数时候都无法充分利用CPU,导致CPU处于空闲状态.但CPU既然通电了,它就得运行,那么在它没有任务需要 ...
- 进程、线程、轻量级进程、协程与 go 的 goroutine【转载+整理】
本文内容 进程 线程 协程 Go 中的 goroutine 参考资料 最近,看一些文章,提到"协程"的概念,心想,进程,线程,协程,前两个很容易,任何一本关于操作系统的书都有说,开 ...
- 进程、线程、轻量级进程、协程和go中的Goroutine
进程.线程.轻量级进程.协程和go中的Goroutine 那些事儿电话面试被问到go的协程,曾经的军伟也问到过我协程.虽然用python时候在Eurasia和eventlet里了解过协程,但自己对协程 ...
- Linux下C语言的进程控制编程
代码: #include <stdio.h> #include <unistd.h> #include <stdlib.h> #include <sys/ty ...
- linux内核分析--操作系统是如何工作的?
一个简单的时间片轮转多道程序 操作系统的"两把剑":中断上下文(保存现场和恢复现场)和进程上下文的切换 源代码的分析 *使用的源代码为视频中所使用的精简内核的源代码 首先分析myp ...
- socket--多进程,多线程服务器
一:概念: 我们知道IP地址是标志网络中不用主机的IP地址,而端口号就是同一台主机上标志不同进程的地址,IP地址和端口号标志网络中的唯一地址.(又称socket) 在TCP协议中,建⽴立连接的两个进程 ...
- Linux间的进程通信;以及子进程的创建
"-----第六天-----------------------------------------------------------------------------" .版 ...
随机推荐
- thinkphp 打印sql语句方法
thinkphp 打印数据use think\Db; 引用db 需要查询的sql语句连锁查询 db()->table('business_order')->alias('o')->j ...
- svn项目迁移至gitlab
关于svn项目迁移有人可能会说,新建一个git项目,把原来的代码直接扔进去提交不完了吗.恩,是的,没错.但是为了保留之前的历史提交记录,还是得做下面的步骤 首先确保本地正常安装配置好git,具体步骤不 ...
- 【数位DP】数字统计
题目 给定两个正整数a和b,求在[a,b]中的所有整数中,每个数码(digit)各出现了多少次. 数位DP (1)分情况,逐位讨论. (2)模型:计算在[L,R]中有多少个数满足条件. (3)套路:将 ...
- 二分法python实现
聚会游戏,一个人想一个数,其他人来猜,然后告诉你猜大了还是小了,直到猜到这个数. 二分法和猜数游戏类似,只不过猜的时候一定猜最中间的那个数,折半查找所需内容,就数组来说,数组越长,梯度下降越快,二分查 ...
- 基于Linux(中标麒麟)上QT的环境搭建——解决cannot find lGL的问题
接上一篇,QT在中标麒麟环境安装完成后遇到运行报错的问题 一.问题描述: 在中标麒麟上配置好QT的环境后,新建一个工程,不做其他的任何操作,直接运行都会报cannot find lGL的错误.如图所示 ...
- (11)Go方法/接收者
方法和接收者 Go语言中的方法(Method)是一种作用于特定类型变量的函数.这种特定类型变量叫做接收者(Receiver).接收者的概念就类似于其他语言中的this或者 self. 方法的定义格式如 ...
- Nova官方资料入口处
Nova官方资料地址: https://www.openstack.org/software/releases/queens/components/nova --> https://wiki.o ...
- axios跨域请求报错:Request header field content-type is not allowed by Access-Control-Allow-Headers in preflight response.
在做项目时,用到axios,数据用post提交时,老是报错,错误提示为: Access to XMLHttpRequest at 'http://127.0.0.1:3000/api/add' fro ...
- 【大数据作业九】安装关系型数据库MySQL 安装大数据处理框架Hadoop
作业要求:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE2/homework/3161 4.简述Hadoop平台的起源.发展历史与应用现状. 列举发展过程中 ...
- Python3基础 二、八、十、十六进制数的定义
Python : 3.7.3 OS : Ubuntu 18.04.2 LTS IDE : pycharm-community-2019.1.3 ...