python之并发编程储备知识

1、操作系统

1.1、定义
操作系统就是一个协调、管理和控制计算机硬件资源和软件资源的控制程序
操作系统位于计算机硬件与应用软件之间,本质也是一个软件。操作系统由操作系统的内核(运行于内核态,管理硬件资源)以及系统调用(运行于用户态,为应用程序员写的应用程序提供系统调用接口)两部分组成,所以,单纯的说操作系统是运行于内核态的,是不准确的
1.2、操作系统主要组成部分
1.2.1、驱动程序
最底层的、直接控制和监视各类硬件的部分,它们的职责是隐藏硬件的具体细节,并向其他部分提供一个抽象的、通用的接口
1.2.2、内核
操作系统之最内核部分,通常运行在最高特权级,负责提供基础性、结构性的功能
1.2.3、支承库(亦作“接口库”)
是一系列特殊的程序库,它们职责在于把系统所提供的基本服务包装成应用程序所能够使用的编程接口(API),是最靠近应用程序的部分。例如,GNU C运行期库就属于此类,它把各种操作系统的内部编程接口包装成ANSI C和POSIX编程接口的形式
1.2.4、外围
所谓外围,是指操作系统中除以上三类以外的所有其他部分,通常是用于提供特定高级服务的部件。例如,在微内核结构中,大部分系统服务,以及UNIX/Linux中各种守护进程都通常被划归此列
1.3、操作系统的作用
1、隐藏丑陋复杂的硬件接口,提供良好的抽象接口
2、管理、调度进程,并且将多个进程对硬件的竞争变得有序

2、多道技术

2.1、定义
多道技术中的多道指的是多个程序,多道技术的实现是为了解决多个程序竞争或者说共享同一个资源(比如cpu)的有序调度问题,解决方式即多路复用,多路复用分为时间上的复用和空间上的复用。

现在的主机一般是多核,那么每个核都会利用多道技术
有4个cpu,运行于cpu1的某个程序遇到io阻塞,会等到io结束再重新调度,会被调度到4个cpu中的任意一个,具体由操作系统调度算法决定
2.2、空间上的复用
空间上的复用: 复用内存的空间
1、多道/个程序的代码都存入内存
2、内存空间是物理隔离的

将内存分为几部分,每个部分放入一个程序,这样,同一时间内存中就有了多道程序
如内存中同时有多道程序

在这里插入图片描述

2.3、时间上的复用
时间上的复用: 复用cpu的时间
cpu的切换
1、任务的运行遇到IO阻塞 => 提升效率
2、任务占用cpu时间过长 => 降低效率

复用一个cpu的时间片
当一个程序在等待I/O时,另一个程序可以使用cpu,如果内存中可以同时存放足够多的作业,则cpu的利用率可以接近100%,类似于我们小学数学所学的统筹方法。(操作系统采用了多道技术后,可以控制进程的切换,或者说进程之间去争抢cpu的执行权限。这种切换不仅会在一个进程遇到io时进行,一个进程占用cpu时间过长也会切换,或者说被操作系统夺走cpu的执行权限)

强调: 遇到io切,占用cpu时间过长也切,核心在于切之前将进程的状态保存下来,这样才能保证下次切换回来时,能基于上次切走的位置继续运行

重点:
1、如果我们的核心目标是想让多个任务并发起来:那么无论是遇到IO还是没有遇到IO都应该让cpu在多个任务之间切换起来
2、如果我们的核心目标是想让多个任务的运行效率提升:我们应该只控制一个任务在遇到IO情况下切换到另外一个任务

2.4、多道技术的总结
切换+保存状态
切换(CPU)分为两种情况
1、当一个程序遇到IO操作的时候,操作系统会剥夺该程序的CPU执行权限
作用:提高了CPU的利用率 并且也不影响程序的执行效率
	
2、当一个程序长时间占用CPU的时候,操作系统也会剥夺该程序的CPU执行权限
弊端:降低了程序的执行效率(原本时间+切换时间)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值