操作系统之-进程

一、进程

  1.1 进程的含义

  广义的说,进程是一个具有独立功能的程序关于某个数据集合的一次运行活动。

  1.2 进程的状态

  三态模型:等待态、就绪态、运行态。(五态模型比三态模型多了新建态和终止态)。--从名字可以推断各种状态的形态。

  1.3 进程的特征

  进程的特征有四点:动态性、并发性、独立性、异步性。

  动态性--进程的实质是程序在多道程序系统中的一次执行过程,既然是过程就要有始有终,所以进程会产生、会消亡。进程执行完毕后,一般不会留下关于它运行的一丝痕迹。

  并发性--任何进程都可以与其他进程一起并发执行,并发是任意时刻只有一个程序在运行(要与并行区别)。

  独立性--进程是一个独立运行的基本单位,同时也是系统分配资源和调度的基本单位。

  异步性--由于进程间的相互制约,使进程具有执行的间断性,即进程按各自独立的、不可预知的速度向前推进。

  1.4 进程的调度

  进程的调度分为抢占式和非抢占式。

  抢占式调度:抢过来自己占用。

  无论是抢占式还是非抢占式,都要依照这个队列中任务的先后顺序来运行他们。所以,队列代表着任务的“生存周期”。只要任务还在队列中,任务就没有“死”,即没有运行结束而消亡;任务就没有“生”,即任务还未开始运行。

  现在,重点就是如何安排这个队列(五种调度算法)。

  以队列为基础,抢占式调度意味着某任务A一旦运行后,可能被其他任务B抢占,现在就要把A移到堆底,把B移到堆顶;非抢占式调度意味着某任务A一旦运行后,就一直运行A知道结束,期间如果任务B也想要开始运行,就只能把B放在A的下面了,即任务的运行顺序从它们加入队列时就确定了,以后队列的顺序不会改变。

二、线程

  2.1 线程的含义

  线程是程序执行流的最小单元,是被系统独立调度和分派的基本单位。

  进程的“进程”,线程的粒度更小。

  2.2 线程的状态

  线程的状态与进程一样,参考五态模型。

  2.3 线程的特点

  · 线程是操作系统调度的基本单位;

  · 线程的状态切换比进程更迅速且开销更小;

  · 线程不拥有资源,只是任务的一种抽象,同一进程内的线程共享该进程的资源;

  · 对于单核CPU,同一时刻只能运行一个线程;

  · 一个进程至少有一个线程,且是它的主线程。

  2.4 线程与进程的区别

  · 进程之间相互独立(资源独立),线程之间共享同一进程的资源;

  · 进程之间需要通信时,由于资源独立,所以需要系统提供各种外部方法,比较繁琐,线程之间可以通过共享数据进行通信;

  · 线程的状态切换比进程快且开销小;

  · 在多线程系统中,线程才是可执行对象,因为线程是进程中的并发任务的抽象。原先,进程是运行任务的主体,有了线程过后,运行任务的重担就落到了线程之上。

  2.5 线程的优点

  · 充分利用CPU资源;

  · 实现进程内并发,使用任务的粒度分得更细,有利于开发人员对任务的分解、抽象(分解与抽象原则);

  · 提高了程序的运行效率。

三、同步与异步

  3.1 同步的含义

  同步:在调用一个过程时,假如过程还在执行,没有返回结果,那么在该过程返回之前就不能做下一件事情。

  3.2 异步的含义

  异步:与同步相反,即调用一个过程时,就接着做下面的事情,不立即获得该过程的返回值。要实现异步:你得学会做两件事情:

  1、添加新任务(创建线程)

  2、知道旧任务已经结束了并跑去处理(状态、通知和回调)。

  3.3 实现异步的方法

  创建线程可以通过调用API来实现,那么怎么知晓旧任务已经运行结束了呢?

  状态,即设一共享变量(FLAG),旧任务结束时,变量置为有效,之后旧任务结束,新任务循环检测变量是否有效;

  通知,即旧任务向新任务发送通知或消息,发完之后,旧任务结束;

  回调,就是把旧任务做完后要做的收尾工作交给旧任务本身,这样,旧任务做完收尾工作后便结束。

四、并发与并行

  4.1 并发的含义

  当有多个进程在运行时,如果系统是单核的CPU,那它根本不可能真正地同时运行一个以上的进程。系统只能把CPU运行时间划分若干个时间段(在每个时刻段的起始时刻使用调度算法分配任务),再将每个时间段分配给每个进程执行。在一个时间段内,某进程在运行时,其他进程处于挂起(就绪状态)。这种方式我们称之为并发。

  并发的精髓就是分配时间片,微观上是间断的,宏观上是连续的。

  还有一个概念就是超线程:通过特殊的硬件指令,可以把两个逻辑内核模拟成两个物理超线程芯片,在但处理器中实现线程级的并行计算,同时相应的软硬件的支持下大幅度提高运行效能,从而实现在单处理器上模拟双处理器的效能。(但是本质上不是多核,当两个进程使用同一资源时,就会变得复杂,性能不如多核)

  4.2 并行的含义

  当计算机有多个CPU(多核),一个CPU执行一个线程,另一个CPU执行另一个线程,两个线程互补抢占CPU资源,可以同时进行,这种方式我们称之为并行。

  4.3 并发与并行的区别

  并行是指两个或者多个事件在同一时刻发生;并发是指两个或者多个事件在同一时间间隔内发生。

  并行是多核CPU的产物,微观上更连续,宏观上更连续;并发是单核CPU产品,微观上间断,宏观上连续。

  4.4 死锁

  4.4.1 死锁的定义

  死锁的规范定义:集合中的每一个进程都在等待只能由集合中的其他进程才能引发的事件,那么该组进程是死锁的。

  4.4.2 死锁发生的四个必要条件

  1、互斥条件:指进程对所分配到的资源进行排他性使用,即在一段时间内某资源只由一个进程占用。如果此时还有其他进程请求资源,则请求者只能等待,知道占有资源的进程释放资源。

  2、请求和保持条件:指进程已经保持至少一个资源,但又提出了新的资源请求,而该资源已被其他进程占有,此时请求进程阻塞,但又对自己已获得的其他资源保持不放。

  3、不剥夺条件:指进程已获得的资源,在未使用完之前,不能被剥夺,只能在使用完时由自己释放。

  4、环路等待条件:指在发生死锁时,必然存在一个进程一资源的环链。

posted @ 2019-01-02 11:55  daisy_ai  阅读(272)  评论(0编辑  收藏  举报