操作系统学习之进程与线程

一.进程

  1.进程的特征

    结构:一般来说进程有三部分组成,分别是程序段,数据,PCB(进程控制块),这三部分组成我们通常说的进程实体。

    动态:具体来说,进程是指程序的一次执行过程,有创建有消亡等生命周期。

    并发:进程可以多个并存与内存中,可以同时运行。

    操作系统中,对进程的定义是:进程实体的运行过程,系统进行资源分配和调度的基本单位。

 

  2.进程的状态

    1.三种基本状态

      就绪:就差cpu就可以运行了,一切就绪中,放在就绪队列里面。

      执行:拿到了cpu在执行。

      阻塞:从执行到停止。比如请求IO或者申请缓冲空间,放到阻塞队列里面。

 

    2.五种状态以及转换

      创建状态:线程的创建

      就绪状态:等待获取时间片

      执行状态:已经获取时间片

      阻塞状态:执行状态下io阻塞等进入阻塞状态,io完成会带就绪状态

      终止状态:执行完了释放线程会到终止状态。

 

  3.PCB进程控制块

    1.what:

        一个控制和描述进程运行的数据结构.它的作用是描述进程当前的状态和进程运行的全部信息,使一个不能独立运行的程序成为一个可以独立运行的基本单位,它是进程存在的唯一标志,常住内存。

    2.how:

        进程标识符:唯一标识进程,分为内部和外部,内部是数字,方便系统调用,外部为创建者创建,子母和数字组成。

        处理机状态:各种寄存器组成。

        进程调度信息:状态,优先级等。

        进程控制:程序和数据地址,进程同步和通信机制,资源请求等。

    3.pcb的组织方式

        链接方式:同一状态的PCB链接成一个 队列。

        索引方式:根据进程的状态建立几张索引表。

  4.进程的通信方式

      1.分类

         共享内存:公用存储分区。

         消息传递:报文,原语,应用广泛。比如OS 的发送命令,send,Receive等直接通信,还有通过共享数据实体的简介通信。

         管道:一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用。进程的亲缘关系通常是指父子进程关系。

      2.具体可以看看这篇博客,很详细

         https://www.cnblogs.com/LUO77/p/5816326.html

二.线程

  1.定义

    引入线程之后,其实线程才是操作系统调度的基本单位,进程是资源分配,其实资源分配就是那些程序的代码段,数据段,以及系统资源,如文件,io设备,内存等。但是线程也不是没有一点点资源,它也有它的一些寄存器和堆栈(TCB),以便控制线程运行。

  2.特征

    1.并发性高,线程由于没有占有很多资源,它的切换其实是很快的,代价低,所以并发性很高。

    2.系统调度和任务分派的基本单位。

  3.同步以及通信

     1.首先,想说一下同步,这个词真是经常出现,好像又知道它什么意识,但是事实上又说不出个所以然,感觉很多地方都有这个概念,而它们本身意义也不一样,下面先来搞一波同步,以及对应的,异步,阻塞,非阻塞。

    同步:同步(英语:Synchronization),指对在一个系统中所发生的事件(event)之间进行协调,在时间上出现一致性与统一化的现象。这是百度百科上面的解析,其实也比较准确。如果按照字面意思,同步非常容易被理解为同时进行,其实并不是,你可以理解为协同事件,按照一定的顺序执行。有任务A,B,如果协商好先A再B,那么就会通过一些方法来保证,一定是先A再B,A完了再B,而不能A没完到B或A到C。系统会等待A任务的返回,在等A任务完成的消息,如果没看到这个消息,它就主动等待结果

    异步:异步和同步的不同,在于处理A任务时,系统不会等A成功了的消息再去执行,系统继续去执行任务,A如果完成了,会通知系统,系统被动接收通知,类似你煮开水,同步的话就在厨房看着水有没有开,异步就是说你把水放到炉上后就走了,等水开了它会发出声音告诉你。

    阻塞:阻塞其实就是看你怎么处理任务处理的返回结果,比如说煮开水这个任务,成功了会返回开水,如果你的态度是停下来(线程挂起)等待它给你返回开水(程序运行的结果),那么你的处理方式就是阻塞的,你(线程)停下来等待煮开水(挂起),就是阻塞。

    非阻塞:非阻塞就是说,你在等待煮开水这个过程,没有停下来,而去干了其他事情,线程没有挂起,你没有停下来,去干了其他事情。

    总结:同步和异步是对于消息的处理机制,主要看调用者会不会等待任务的返回结果,阻塞与非阻塞主要是在等待这个过程的状态,你是停下来,还是去干了其他事情。

  

posted @ 2018-11-15 15:45  AJimmyFang  阅读(278)  评论(0编辑  收藏  举报