操作系统
计算机的工作分为两个状态:
cpu工作:做计算(对内存中的数据进行操作)
cpu不工作:IO操作
cpu的工作效率:500百万条指令/s
I/O操作:相对内存来讲
输入:键盘\input\read\recv
输出:显示器、打印机、播放音乐视频等\print\write\send
文件操作:read、write
网络操作:send、recv
函数:print、input
多道操作系统
由原来很早以前的计算机顺序的一个一个执行变成共同存在在一台计算机中,其中一个程序让出cpu后,另一个程序能够继续使用cpu,来提高cpu的利用率。(遇到IO操作就切换)
单纯的切换会占用cpu的时间,但是多道操作系统的原理整体上节省了时间,提高了cpu的利用率。
时空复用的概念
进程之间数据是相互隔离的
分时操作系统
时间片:把时间片分成很小很小的一段,每一个时间就是一个时间片
时间片的轮转:每一个程序轮流执行一个时间片段的时间,程序自己的时间片到了之后,就轮到下一个程序执行。
操作系统有两种模式:短作业优先(FCFS)和先来先服务
但是如果三个人,abc,a24H全是计算,没有io操作,b5min全是计算,也没有io操作,c最后来,5min全是计算,没有io,这时候,如果仅仅是以上两种模式,可能会造成不公平现象,比如b先完成了,(短作业),下来是a,而a有24H,c仅仅5min的运算,却要等待b24H,这是一种不合理的(先来先服务)
但是引入分时技术后,结合起来会产生一种公平方式。每个程序运行一个时间片,然后让出cpu,这样轮转下来,虽然没有提高cpu的利用率,但是却提高了用户体验。
实时操作系统
1.实时控制系统:如飞机飞行,导弹发射等精密仪器的控制上
2.实时信息处理系统:如订飞机票,查航班,银行系统,情报检索系统等等。
主要特点:
1.及时响应:每一个信息接收、分析处理和发送的过程必须在严格时间限制里完成。
2.高可靠性:需采取冗余措施,双机系统前后台工作,也包括必要的保密措施等。
通用操作系统
以上三种操作系统中至少两种,组成了我们常用的通用操作系统
分布式
什么是分布式计算?
所谓分布式计算是一门计算机科学,它研究如何把一个需要非常巨大的计算能力才能解决的问题分成许多小的部分,然后把这些部分分配给许多计算机进行处理,最后把这些计算结果综合起来得到最终的结果。
分布式网络存储技术是将数据分散的存储于多台独立的机器设备上。
分布式网络存储系统采用 可扩展的系统结构,利用多台存储服务器分担存储负荷,利用位置服务器定位存储信息,不但解决了传统集中式存储系统中单存储服务器的瓶颈问题,还提高了系统的可靠性、可用性和扩展性。
celery python的分布式框架
进程
运行中的程序就是一个进程,是计算机中最小的资源分配单位
占用资源,需要操作系统调度
pid:能够唯一标识一个进程
线程
是进程中的一个单位,不能脱离进程存在
线程是计算机中能够被cpu调度的最小单位
实际执行具体编译解释之后的代码的是线程,所以cpu执行的是解释之后的线程中的代码
并发
多个程序同时执行:只有一个cpu,多个程序轮流在一个cpu上执行
宏观上:多个程序在同时执行
微观上:多个程序轮流在一个cpu上执行,本质上还是串行
并行
多个程序同时执行,并且同时在多个cpu上执行
同步
在进行A的时候,发起B,必须等待B结束之后才能继续A
调用一个操作,要等待结果
异步
在进行A时,发起B,不需要等待B结束就可以继续A
调用一个操作,不等待结果
阻塞(Block)
cpu不工作
如:input、accept、recv、recvfrom、sleep、connect
非阻塞
cpu工作
同步阻塞
调用函数必须等待结果,cpu不工作
如:input、sleep、recv、recvfrom
同步非阻塞
调用函数必须等待结果,cpu工作
如:ret = eval(‘1+1+2’)
异步阻塞
调用函数不需要立即获取结果,而是继续做别的事,在获取结果的时候不知道先获取谁的,总之需要等待(阻塞)
异步非阻塞
调用函数不需要立即获取结果,也不需要等待
如:start(),terminate()