OS学习笔记——进程与线程

程序的顺序执行:顺序性、封闭性(一旦运行就独占系统资源,只有本程序才能改变资源状态,运行结果不受外界条件的影响)、可再现性。


程序的并发执行:间断性(运行快的如果需要运行慢的程序的结果才能继续,就得先停下来,等结果出来继续运行) 失去封闭性、不可再现性(并发过程中,如果AB俩程序先后顺序不同,会造成结果不同,即结果不一定能复现)


操作系统以进程的方式运行应用程序,进程不但包括应用程序的指令流,还包括运行程序所需要的内存、寄存器等资源。单处理器中,如果要开两个程序,操作系统就相应创建两个进程。


比如单核处理系统中,两个进程表面上同时进行(并发),微观里却交替进行。


进程的概念:可并发进行且具有独立功能的程序在在一个数据集合上的运行过程,是操作系统分配资源的基本单位。


程序可以一直存在,而进程有生命周期。

进程是一个独立的运行单位,可以和其他进程并发进行。程序不能并发进行。

进程是计算机分配资源的基本单位,也是处理机调度的基本单位。

一个程序可以作为多个进程的运行程序。


进程的五大特性:动态性、结构性(进程是由进程控制块、程序段和数据段组成)、并发性、异步性、独立性


进程的三大状态:就绪状态(得到除CPU以外的所有必要资源,只要得到CPU,就可以马上投入运行。运行状态:处于就绪状态的进程被调度程序选中后将得到CPU控制权,此时该进程就可以使用处理器进行数据运算和处理。阻塞状态:当一个进程正在等待某事件的发生(比如等待IO完成)而暂停执行,这时,即使分配有CPU时间,也无法执行。


除此之外,进程还有一种状态叫做“挂起”。随着系统的运行,新进程逐渐增多,当系统资源不能满足进程运行需要的时候,系统会将某些进程交换到磁盘上,不让其参与进程调度,以达到平衡系统负荷的目的。


有关进程的操作:

1.子进程被创建的时候,它可以直接向操作系统申请资源,也可以继承父进程的资源。进程的创建必须调用原语来实现。创建原语的主要功能是为新进程申请获得唯一的标识符,并从PCB集合中获取一个空白PCB。

2.进程撤销:当进程完成任务或者执行发生异常时,系统将调用进程终止原语来终止该进程。

3.进程阻塞:正在运行的进程调用阻塞原语将自己阻塞,等待相应事件出现之后再唤醒。阻塞是一种主动行为

4.进程唤醒:唤醒原语的执行过程为 首先把被阻塞的进程从等待该事件的队列中移除,将PCB中的状态由阻塞修改为就绪,再将PCB插入到就绪队列中。


传统进程有两大特性:可拥有资源的独立单位、处理器调度和分配的基本单位。在进程的创建、撤销、切换中,系统必须付出较大的时空开销。所以系统中设置的进程数量不宜太多,否则会影响并发程度的提高。


这里就要引入线程,将进程的两个属性分开。进程作为资源分配的基本单位,而线程作为处理器调度与分配的基本单位。可以创建线程来完成任务,减少程序并发执行时的时空开销。


线程是进程中的一个实体,是被系统独立分配和调度的基本单位。线程基本上不拥有资源,只需要一些必不可少的资源(如程序计数器 一组寄存器 和栈)

一个传统进程只有一个控制线程。如果进程有多个控制线程,则可以同时做多个任务。


线程是程序中一个单一的顺序控制流程。在单个程序中可以同时运行多个线程以完成不同工作,叫做多线程。


多线程编程的优点:

1. 响应程度高。如果对一个交互式应用程序采用多线程,那么其中部分如果阻塞或者执行了冗长操作,程序仍然可以继续工作,提高了对用户的响应程度。(加载图片)

2. 资源共享。 线程默认共享自身所属进程的内存和资源。代码共享的优点就是允许一个应用程序在同一地址空间内有多个不同的活动线程。

3.经济。 如果是只进行进程的创建/销毁等工作,所需要内存和资源分配比较昂贵。创建线程更经济。

4.多处理器体系结构的利用。多线程的优点之一就是能充分使用多处理器体系结构,以便每个线程能够并行运行在不同处理器上。


线程主要分为用户级线程和内核级线程。


用户级线程仅存在于用户空间中。用户级线程的创建/撤销/同步与通信都无需通过系统调用来实现,也无需内核的支持,速度快。

内核级线程是在内核的支持下运行的,不论是用户进程中的线程,还是系统进程中的线程,其创建/撤销/切换/管理都依靠操作系统内核来完成。内核为每个内核级线程设置了一个PCB,内核根据PCB感知存在,并对其进行控制。

猜你喜欢

转载自blog.csdn.net/Serenity0614/article/details/78690544
今日推荐