重点
消息机制(任务调度),内存分布,通信和同步
操作系统的基本类型
批处理系统
提高资源的利用率
单道:内存中任何时候只有一道作业
多道:先分配除处理机以外的硬件资源
特征:资源利用率高/系统吞吐量大/平均周转时间长/无交互能力
分时系统
定义:采用时间片轮转的方式,使一台计算机为多个终端服务,使每个用户得到足够快的时间响应
用户需求:人机交互、共享主机、便于用户上机
实现:
简单分时:单道+轮流交替使用时间单位
前后台分时:前台--运行作业、后台--固定作业
多道分时:cpu调度
特征:多路、独立、及时、交互
实时系统:
系统可及时响应外部事件的需求
实时控制信息:类比航母,卫星,武器
特点:及时、可靠、实时的人机对话、过载保护
OS特征
https://blog.youkuaiyun.com/weixin_43914604/article/details/104416461
并发
:两个或多个事件在同一时间间隔内
发生,这些事件在宏观上是同时发生的,在微观上是交替发生的, 操作系统的并发性指系统中同时存在着多个运行的程序(是否一定交替?还是可能交替)并行
:两个或多个事件在同一时刻
发生
是指两个或多个事件在同一时间间隔内发生。操作系统的并发性是指计算机系统中同时存在多个运行着的程序,因此它应该具有处理和调度多个程序同时执行的能力。
在这种多道程序环境下,一段时间内,宏观上有多个程序在同时运行,而每一时刻,单处理器环境下实际仅能有一道程序执行,故微观上这些程序还是在分时地交替执行。操作系统的并发性是通过分时得以实现的。
注意:并行性是指计算机系统具有可以同时进行运算或操作的特性,在同一时间完成两种或两种以上的工作。并行性需要有相关硬件的支持,如多流水线或多处理器硬件环境。
- 一个单核(CPU)同一时刻只能执行一个程序,因此操作系统会协调多个程序使他们交替进行(这些程序在宏观上是同时发生的,在微观上是交替进行的)
- 操作系统是伴随着“多道程序技术出现的”,因此操作系统和并发是一同诞生的
- 在如今的计算机中,一般都是多核cpu的,即在同一时刻可以并行执行多个程序,比如我的计算机是8核的,我的计算机可以在同一时刻并行执行8个程序,但是事实上我们计算机执行的程序并不止8个,因此并发技术是必须存在的,并发性必不可少。
共享:
定义:cpu,存储器,输入输出设备供内存中并发执行的进程共同使用
类型:互斥访问:一个访问完成另一个才访问
同时访问: 二者同一时刻访问
是指系统中的资源(硬件资源和信息资源)可以被多个并发执行的程序共同使用,而不是被其中一个独占。资源共享有两种方式:互斥访问和同时访问。
并发和共享是操作系统的最基本特征,互为依存。并发执行的要求引出了资源的共享;而资源共享的管理又直接影响到程序的并发执行。
虚拟:
物理实体----(某种技术)-----逻辑上的对应物
虚拟性是一种管理技术,把物理上的一个实体变成逻辑上的多个对应物,或把物理上的多个实体变成逻辑上的一个对应物的技术。采用虚拟技术的目的是为用户提供易于使用、方便高效的操作环境。
异步:
(并发执行)在运行环境不同的情况下,相同的输入条件----相同的输出结果
在多道程序环境下,允许多个程序并发执行,但由于资源有限,进程的执行不是一贯到底。而是走走停停,以不可预知的速度向前推进,这就是进程的异步性。异步性使得操作系统运行在一种随机的环境下,可能导致进程产生与时间有关的错误。但是只要运行环境相同,操作系统必须保证多次运行程序,都获得相同的结果。
并行和并发
在计算机操作系统(第4版,汤子瀛)中,小标题'并行和并发'的父标题是'并发‘,经过学习,我的理解是并行是并发的子集,并发是包含并行的含义的。
并行性和并发性是既相似又有区别的两个概念。并行性是指两个或多个事件在同一时刻发生。而并发性是指两个或多个事件在同一时间间隔发生。在多道程序环境下,并发性是指在一段时间内宏观上有多个程序在同时运行,但在单处理机系统中,每一时刻却仅能有一道程序执行,故微观上这些程序只能是分时地交替执行。
倘若在计算机系统中有多个处理机,这些可以并发执行的程序便可被分配到多个处理机上,实现并行执行
《并发的艺术》 — 〔美〕布雷谢斯
如果某个系统支持两个或者多个动作(Action)同时存在,那么这个系统就是一个并发系统。如果某个系统支持两个或者多个动作同时执行,那么这个系统就是一个并行系统。并发系统与并行系统这两个定义之间的关键差异在于“存在”这个词。
实际上是对线程的操作:
- 并发:当有多个线程在操作时,如果系统只有一个CPU,把CPU运行时间划分成若干个时间段,分配给各个线程执行,在一个时间段的线程代码运行时,其它线程处于挂起状态。这种方式我们称之为并发(Concurrent)。并发=间隔发生
- 并行:当系统有一个以上CPU时,则线程的操作有可能非并发。当一个CPU执行一个线程时,另一个CPU可以执行另一个线程,两个线程互不抢占CPU资源,可以同时进行,这种方式我们称之为并行(Parallel)。 并行=同时进行
归纳总结一下:
1. 系统中能够并发执行的程序在多核cpu的加持下是能够并行执行的
2.
a. 并发:拥有处理多任务的能力,不一定同时进行(没有否定同时执行)
b. 并行:拥有同时处理多任务的能力,不是间隔执行
同步异步阻塞非阻塞
top -H 命令打印线程
| 本质区别 | 消息的通知机制 |
同步模式 | 由处理消息者自己去等待消息是否被触发 | 所谓同步,就是发起调用后,被调用者处理消息,必须等处理完才直接返回结果,没处理完之前是不返回的,调用者主动等待结果 |
异步模式 | 由触发机制来通知处理消息者 | 所谓异步,就是发起调用后,被调用者直接返回,但是并没有返回结果,等处理完消息后,通过状态、通知或者回调函数来通知调用者,调用者被动接收结果 |
| 本质区别 | 涉及到CPU线程调度 |
阻塞调用 | 线程挂起,不能做其他事。 | 所谓阻塞,就是调用结果返回之前,该执行线程会被挂起,不释放CPU执行权,线程不能做其它事情,只能等待,只有等到调用结果返回了,才能接着往下执行,比如一个线程占用了临界区资源,那么其他需要这个资源的线程就必须在临界区等待。等待会导致线程挂起,这种情况就是阻塞。此时如果占用资源的线程不释放资源,那么其他的线程就不能执行。 |
非阻塞调用 | 线程活跃,能处理其他事。 | 所谓非阻塞,就是在没有获取调用结果时,不是一直等待,线程可以往下执行,如果是同步的,通过轮询的方式检查有没有调用结果返回,如果是异步的,会通知回调。它强调的是没有一个线程能够阻碍其他线程的执行,所以线程都会尝试不断的向前执行 |
所以对于app内部而言,都是线程间通信
但app和fpga,就是进程间通信