什么是io操作
i input 输入 相对内存 进入内存
read
recv
input 人脑子里的内容直接通过键盘输入到内存中
load
o output 输出 相对内存 从内存出去
write
send
dump
文件操作就是io
网络操作就是io
文件在硬盘上 程序在运行的时候 是在内存中存储数据
如果文件中的内容 -输入的过程-> 内存中
str -输出的过程-> 写到文件中
网络操作
send 输出
recv 输入
多道操作系统
提高了cpu的利用率
第一次出现了一个概念 : 任务状态的保存
数据隔离的概念(由于同时在执行的多个程序之间的数据不能混为一谈)
单处理机系统中多道程序运行时的特点:
(1)多道:计算机内存中同时存放几道相互独立的程序;
(2)宏观上并行:同时进入系统的几道程序都处于运行过程中,即它们先后开始了各自的运行,但都未运行完毕;
(3)微观上串行:实际上,各道程序轮流地用CPU,并交替运行。
计算机 - 多道操作系统
研究生 : 5分钟 并且没有IO
老教授 : 24h 并且没有IO
时间短的走 : 短作业优先算法
分时操作系统 把时间分成片
实时操作系统
大型的任务 高并发
分布式系统 帮助你分发任务 拆解任务
celery - 分布式
所有的程序 - 任务
所有的任务 - 进程
什么是进程 ? 进行中的程序
进程 :
是计算机中资源分配的最小单位
并且 进程与进程之间的数据是隔离的
进程的三状态图
就绪 阻塞 运行
同步
有几件事情 先做一件,做完一件再做一件
异步
有几件事情 同时完成
阻塞 blocking
input
accept
recv
sleep
recvfrom
非阻塞 所有不阻塞的程序
import socket
sk = socket.socket()
sk.setblocking(False)
sk.bind(('127.0.0.1',9000))
sk.listen()
while True:
try:
conn,addr = sk.accept()
break
except BlockingIOError:
print('没人连我')
conn.recv
四个词不是一回事儿
同步和异步是一对反义词
阻塞和非阻塞是一对反义词
同步阻塞
一件事儿一件事儿的做
中间还要被阻塞
同步非阻塞 : 费力不讨好
一件事儿一件事儿的做
但是不阻塞
异步阻塞
同时进行的
每一件事儿都会遇到阻塞事件
异步非阻塞
几个事情同时进行
每一件事都不阻塞
并发和并行的区别:
并发
宏观上是在同时运行的
微观上是一个一个顺序执行的
同一时刻只有一个cpu在工作
并行
微观上就是同时执行的
同一时刻不止有一个cpu在工作
什么是进程
一个运行中的程序就是一个进程
是计算机中最小的资源分配单位
什么是同步
程序顺序执行,多个任务之间串行执行
什么是异步
多个任务同时运行
IO操作
input 输入到内存 read load recv accept recvfrom input
output 从内存输出 write dump send connect sendto print
什么是阻塞
recv recvfrom accept
程序由于不符合某个条件或者要等待某个条件满足在某一个地方进入等待状态
什么是非阻塞
sk.setblocking(Fasle)就让这个socket模型不阻塞了