并发编程基础

一.多道程序系统

1.批处理系统:加载在计算机上的一个系统软件,在它的控制下
计算机能够自动地、成批地处理一个或多个用户的作业(这作业包括程序、数据和命令)
2.多道程序设计技术:允许多个程序同时进入内存并运行.即同时把多个程序放入内存,并允许它们交替在CPU中运行
当一道程序因I/O请求而暂停运行时,CPU便立即转去运行另一道程序
3.单道程序设计:必须A工作完成后,B才能进入内存中开始工作,两者是串行的
4.单处理机系统中多道程序运行时的特点:
1)多道:计算机内存中同时存放几道相互独立的程序;
2)宏观上并行:同时进入系统的几道程序都处于运行过程中,即它们先后开始了各自的运行,但都未运行完毕;
3)微观上串行:实际上,各道程序轮流地用CPU,并交替运行。
5.多道批处理系统:它有两个特点:
(1)多道:系统内可同时容纳多个作业。
放在外存中,组成一个后备队列,系统按一定的调度原则每次从后备作业队列中选取一个或多个作业进入内存运行,
运行作业结束、退出运行和后备作业进入运行均由系统自动实现,从而在系统中形成一个自动转接的、连续的作业流。
(2)成批:在系统运行过程中,不允许用户与其作业发生交互作用,即:作业一旦进入系统,用户就不能直接干预其作业的运行。
缺点:因独占全机造成资源效率极低。

二.分时系统

1.分时系统:允许多个用户同时联机使用计算机。
 分时技术:把处理机的运行时间分成很短的时间片,按时间片轮流把处理机分配给各联机作业使用。
若某个作业在分配给它的时间片内不能完成其计算,则该作业暂时中断,把处理机让给另一作业使用,等待下一轮时再继续其运行
特点:1)多路性。若干个用户同时使用一台计算机。微观上看是各用户轮流使用计算机;宏观上看是各用户并行工作。
2)交互性。用户可根据系统对请求的响应结果,进一步向系统提出新的请求。分时系统又被称为交互式系统。
3)独立性。用户之间可以相互独立操作,互不干扰
4)及时性。系统可对用户的输入及时作出响应。分时系统性能的主要指标之一是响应时间,它是指:从终端发出命令到系统予以应答所需的时间
2.分时系统的主要目标:对用户响应的及时性,即不至于用户等待每一个命令的处理时间过长。

三.实时系统

实时系统:即系统能够及时响应随机发生的外部事件,并在严格的时间范围内完成对该事件的处理
实时系统可分成两类:(1)实时控制系统。当用于飞机飞行、导弹发射
(2)实时信息处理系统。当用于预定飞机票、查询有关航班
实时操作系统的主要特点:(1)及时响应。
   (2)高可靠性。

四.通用操作系统

操作系统的三种基本类型:多道批处理系统、分时系统、实时系统。
通用操作系统:具有多种类型操作特征的操作系统。可以同时兼有多道批处理、分时、实时处理的功能,或其中两种以上的功能。

五.操作系统的作用:

1:隐藏丑陋复杂的硬件接口,提供良好的抽象接口
2:管理、调度进程,并且将多个进程对硬件的竞争变得有序

六.进程

进程:它是操作系统动态执行的基本单元
进程是线程的容器。程序是指令和数据的有序集合,进程是程序的实体
第一,进程是一个实体。每一个进程都有它自己的地址空间
第二,进程是一个“执行中的程序”
进程和程序:
程序是指令和数据的有序集合,其本身没有任何运行的含义,是一个静态的概念。
而进程是程序在处理机上的一次执行过程,它是一个动态的概念。
程序可以作为一种软件资料长期存在,而进程是有一定生命期的。
程序是永久的,进程是暂时的。

七.同步异步阻塞非阻塞

进程三态:就绪,运行和阻塞


(1)就绪(Ready)状态
当进程已分配到除CPU以外的所有必要的资源,只要获得处理机便可立即执行,这时的进程状态称为就绪状态。
(2)执行/运行(Running)状态
当进程已获得处理机,其程序正在处理机上执行,此时的进程状态称为执行状态。
(3)阻塞(Blocked)状态
正在执行的进程,由于等待某个事件发生而无法执行时,便放弃处理机而处于阻塞状态。引起进程阻塞的事件可有多种,
例如,input sleep 文件的输入书输出 网络请求 recv send
同步和异步:
同步就是一个任务的完成需要依赖另外一个任务时,只有等待被依赖的任务完成后,依赖的任务才能算完成。是一种可靠的任务序列
异步是不需要等待被依赖的任务完成,只是通知被依赖的任务要完成什么工作,只要自己完成了整个任务就算完成了。它是不可靠的任务序列
同步/异步与阻塞(不能做自己想做的事)/非阻塞(能做自己想做的事)
1.同步阻塞形式:效率最低
2.异步阻塞形式:异步操作是可以被阻塞住的,只不过它不是在处理消息时阻塞,而是在等待消息通知时被阻塞
3.同步非阻塞形式
4.异步非阻塞形式:效率更高

八.同步 ,异步,并发/并行,串行的概念

同步:多个任务情况下,一个任务A执行结束,才可以执行另一个任务B。只存在一个线程
异步:多个任务情况下,一个任务A正在执行,同时可以执行另一个任务B。任务B不用等待任务A结束才执行。存在多条线程。
并发和并行其实是异步线程实现的两种形式
并行其实是真正的异步,多核CUP可以同时开启多条线程供多个任务同时执行,互补干扰
并发就不一样了,是一个伪异步。在单核CUP中只能有一条线程,但是又想执行多个任务。这个时候,只能在一条线程上不停的切换任务
串行:它是同步线程的实现方式
并发编程指在同一时间执行多个任务。又包含并行,和并发。并发不一定并行,但并行一定并发

 
 
 
 
 
原文地址:https://www.cnblogs.com/zgf-666/p/8658680.html