.python 操作系统部分基础以及并行部分
操作系统:
现代操作系统中:分时技术,多道技术,实时技术
I/O操作有哪些
输入 input f.read() accept recv connect
输出 print f.write() connect send
文件操作/网络操作都是I/O操作
进程:运行起来就是进程
是 资源分配 的 最小单位
一个程序 要开始它的运行 一定先由操作系统 分配给他一些内存
一块内存 操作系统分配给你的
异步 并行
同步 串行
阻塞 非阻塞
最初是手工操作方式
后来使用磁带但是还是效率不够高
联机批处理系统 脱机批处理系统
多道程序系统:
多道程序设计技术
多道程序设计技术不仅使CPU得到充分利用,同时改善I/O设备和内存的利用率,从而提高了整个系统的资源利用率和系统吞吐量(单位时间内处理作业(程序)的个数),最终提高了整个系统的效率。
多道批处理系统
批处理系统的追求目标:提高系统资源利用率和系统吞吐量,以及作业流程的自动化。
分时系统
分时系统的主要目标:对用户响应的及时性,即不至于用户等待每一个命令的处理时间过长。
实时系统:
实时系统可分成两类:
实时操作系统的主要特点:
通用操作系统
操作系统的三种基本类型:多道批处理系统、分时系统、实时系统。
操作系统的进一步发展:
个人计算机操作系统 网络操作系统 分布式操作系统
操作系统的作用:
序员无法把所有的硬件操作细节都了解到,管理这些硬件并且加以优化使用是非常繁琐的工作,这个繁琐的工作就是操作系统来干的,有了他,程序员就从这些繁琐的工作中解脱了出来,只需要考虑自己的应用软件的编写就可以了,应用软件直接使用操作系统提供的功能来间接使用硬件。
精简的说的话,操作系统就是一个协调、管理和控制计算机硬件资源和软件资源的控制程序。操作系统所处的位置如图
细说的话,操作系统应该分成两部分功能:
义定义:进程是正在运行的程序的实例(an instance of a computer program that is being executed)。
进程调度:
先来先服务调度算法
短作业优先调度算法
时间片轮转法
多级反馈队列
进程的并行与并发
并行 : 并行是指两者同时执行,比如赛跑,两个人都在不停的往前跑;(资源够用,比如三个线程,四核的CPU )
并发 : 并发是指资源有限的情况下,两者交替轮流使用资源,比如一段路(单核CPU资源)同时只能过一个人,A走一段后,让给B,B用完继续给A ,交替使用,目的是提高效率。
区别:
并行是从微观上,也就是在一个精确的时间片刻,有不同的程序在执行,这就要求必须有多个处理器。
并发是从宏观上,在一个时间段上可以看出是同时执行的,比如一个服务器同时处理多个session。
阻塞与非阻塞
阻塞和非阻塞这两个概念与程序(线程)等待消息通知(无所谓同步或者异步)时的状态有关。也就是说阻塞与非阻塞主要是程序(线程)等待消息通知时的状态角度来说的
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
同步/异步与阻塞/非阻塞
- 同步阻塞形式
效率最低。拿上面的例子来说,就是你专心排队,什么别的事都不做。
- 异步阻塞形式
如果在银行等待办理业务的人采用的是异步的方式去等待消息被触发(通知)
,也就是领了一张小纸条,假如在这段时间里他不能离开银行做其它的事情,那么很显然,这个人被阻塞在了这个等待的操作上面;
异步操作是可以被阻塞住的,只不过它不是在处理消息时阻塞,而是在等待消息通知时被阻塞。
- 同步非阻塞形式
实际上是效率低下的。
想象一下你一边打着电话一边还需要抬头看到底队伍排到你了没有,如果把打电话和观察排队的位置看成是程序的两个操作的话,这个程序需要在这两种不同的行为之间来回的切换
,效率可想而知是低下的。
- 异步非阻塞形式
效率更高,
因为打电话是你(等待者)的事情,而通知你则是柜台(消息触发机制)的事情,程序没有在两种不同的操作中来回切换
。
比如说,这个人突然发觉自己烟瘾犯了,需要出去抽根烟,于是他告诉大堂经理说,排到我这个号码的时候麻烦到外面通知我一下,那么他就没有被阻塞在这个等待的操作上面,自然这个就是异步+非阻塞的方式了。
很多人会把同步和阻塞混淆,是因为很多时候同步操作会以阻塞的形式表现出来
,同样的,很多人也会把异步和非阻塞混淆,因为异步操作一般都不会在真正的IO操作处被阻塞
。