进程和线程的定义、区别、联系、其他

一、定义

进程:是计算机中的程序关于某数据集合上的一次运行活动,是系统进行
资源分配和调度的基本单位,是操作系统结构的基础。它是系统资源管理的最小
单位。
线程:有时别称为轻量级进程,是程序执行流的最小单元。线程是进程中的
一个实体,是被系统独立调度和分配的基本单位,线程自己不拥有资源,只拥有
一点儿在运行中必不可少的资源,他可以与同属一个进程的其他线程共享进程所
拥有的全部资源。

二、区别

(1)进程是系统进行资源分配的最基本单位,有独立的地址空间;线程是CPU 调度的基本单位,没有单独的地址空间,有独立的栈、局部变量、寄存器等。

(2)创建进程的开销大,包括创建虚拟地址空间等需要大量系统资源;线程开销小,基本上只有一个内核对象和一个堆栈。

(3)一个进程无法直接访问另一个进程的资源;同一进程内的多个线程共享进程的资源

(4)进程切换开销大,线程切换开销小;进程间通信开销大,线程间通信开销小。

(5)线程属于进程,不能独立执行。每个进程至少要有一个线程,成为主线程。

三、联系

    进程有很多优点,它提供了多道编程,让我们感觉我们每个人都用有自己的CPU 和其他资源,可以提高自己的利

率。但是进程只能在一个时间干一件事,在执行过程中如果阻塞,整个程序就会挂起。线程提高了进程的并发度,

可以有效的利用多处理器和多核计算机。

        一个线程可以创建和撤销另一个线程;同一个进程中的多个线程之间可以并发执行。相对进程而言,线程是一个更加接近于执行体的概念,它可以与同进程中的其他线程共享数据,但是拥有自己的栈空间,拥有独立的执行序列。

四、其他

            #_1、进程间通信的方法、各自优缺点

          a、无名管道(亲源进程之间):管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用。进程的亲缘关系通常是指父子进程关系。
          b、有名管道(任意进程之间):也是半双工通信方式,但是允许在没有亲缘关系的进程之间使用,管道是先进先出的通信方式。
          c、共享内存(效率最高):共享内存就是映射一段能被其他进程所访问的内存,这段共享内存由一个进程创建,但多个进程都可以访问。共享内存是最快的IPC方式,他是针对其他进程间通信方式运行效率低而专门设计的。
          d、消息队列(具备同步的效果):消息队列是有消息的链表,存放在内核中并由消息队列标识符标识。消息队列克服了信号传递消息少、管道只能承载无格式字节流以及缓冲区大小受限等缺点。

          e、套接字(socket)(不同主机之间的进程通信):用于不同机器间的进程通信。
          f、信号量(同步机制):是一个计数器,可以用来控制多个进程对共享资源的访问。它常作为一种机制锁,防止某进程在防伪共享资源时,其他进程也访问该资源。因此,
主要作为进程间以及同一进程内不同线程之间的同步手段。      

          g、信号 ( sinal ) : 信号是一种比较复杂的通信方式,用于通知接收进程某个事件已经发生。


              

猜你喜欢

转载自blog.csdn.net/qq_38350514/article/details/78511956
今日推荐