并行是指“并排行走”或“同时实行或实施”。在操作系统中,若干个程序段同时在系统中运行,这些程序的执行在时间上是重叠的,一个程序段的执行尚未结束,另一个程序段的执行已经开始,无论从微观还是宏观,程序都是同时执行的;
问:单核CPU能否实现并行? 答:不能,但是可以实现并发
并发是指:在同一个时间段内,两个或多个程序执行,有时间上的重叠(宏观上是同时,微观上仍是顺序执行);
通俗讲,多个程序只要看起来像同时运行即可;
问:12306可以同一时间支持几个亿的用户买票 问是并行还是并发 答:高并发
以上建立在单核CPU上~
百度百科:进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。在早期面向进程设计的计算机结构中,进程是程序的基本执行实体;在当代面向线程设计的计算机结构中,进程是线程的容器。程序是指令、数据及其组织形式的描述,进程是程序的实体。
从开发角度,程序可以理解为一堆代码,而进程是怎么产生的呢?
进程的产生可以理解为:正在运行的程序,是活的,而程序(一堆代码)放在那是死的,不运行也不会产生什么;
单核情况下的进程调度
1、FCFS:先来先服务,如果先来一个长作业,比如要执行24h的程序,后面只有1s的程序,这样对短作业是不友好的; 2、短作业优先调度算法:相反这样是对长作业不友好; | | 3、时间片轮转法+多级反馈队列:先分配给新的多个进程相同的时间片段,之后根据进程消耗时间片多少分类执行;
就绪、运行、阻塞
并发编程
程序在运行之后先进入就绪态,直到第一行代码运行的时候进入运行态,如果中间有代码导致程序夯住,就会导致阻塞态;三态会不断切换;
同步:提交完任务之后原地等待任务的返回结果,期间不做任何事(消耗资源)
异步:提交完任务之后不原地等待任务的返回结果,直接去做其他事 ,结果由反馈机制自动提醒(优化)
# 概念剖析 比如你要做三件事:学习、洗衣服、做饭 # 同步 同步做这三件事的过程:学习期间不能干别的事,不学习了才能去洗衣服,洗衣服期间只能等着洗衣机洗完衣服,不能干别的事,然后衣服洗好了,才能去做饭; # 结果就是这样又耗时耗力 # 异步 异步做着三件事的过程:衣服丢洗衣机里,米放锅里,然后去学习;这样是不是很轻松,也省时间;
二者用于描述任务的执行状态
阻塞:是指调用结果返回之前,当前线程会被挂起
比如python中的input方法获取输入,你不输入会一直处于等待状态,也就是阻塞
非阻塞:就是阻塞的反面,执行和运行
可能栗子不恰当,不要纠结