进程?线程?

进程是对运行程序的封装,是系统进行资源调度和分配的基本单位,实现了操作系统的并发。

其实现的过程:用户运行xx程序,系统就创建一个进程同时为其分配(内存空间,磁盘空间,I/O设备)资源,将该进程放到就绪队列中等待,被进程调度器选中。这就运行起来了。

线程是进程的子任务,是cpu调度和分派的基本单位,用于保证程序的实时性,实现进程内部的并发。

注意:在没有实现线程的时候,进程即是资源分配的基本单位,也是调度的基本单位,是系统中并发执行的单元

      实现线程的时候,进程是资源分配的基本单位,线程是调度的基本单位和系统中并发执行的单元。

引入线程的优点:

1)易于调度

2)提高并发性。通过线程可以方便有效实现并发

3)开销小,创建线程比创建进程要快,所需的开销也少

4)有利于发挥多处理器的功能。通过创建多线程,每个线程都在一个处理器上运行,从而实现应用程序的并行,充分利用每个处理器。

进程与线程的区别:

1)一个程序至少有一个进程,一个进程至少有一个线程,线程依赖进程而存在。

2)进程在执行时拥有独立的内存单元,而线程则是多个线程共享内存空间。

3)线程又称为轻量级的进程。进程有进程控制块,线程又线程控制控制块。线程控制块小,线程间切换代价小。

4)进程是一个程序的一次执行,线程可以理解为程序中一段程序片段的执行。

 

进程间的通讯:

1)管道与命名管道,这在linux中是“|”

管道可用于亲缘关系的父子进程间通信,但有名的管道还可以允许无亲缘关系的进程间通信。

2)信号

信号是一种用于通知接受进程某个事件发生

3)消息队列

是消息的链接表,存放在内核中。一个消息队列由一个标识符(即队列ID)来标识。

4)信号量(semaphore)它是一个计数器。

信号量用于实现进程间的互斥与同步,而不是用于存储进程间通信数据。

5)共享内存(Shared Memory)

指两个或多个进程共享一个给定的存储区。

 

posted on 2020-04-22 11:06  topass123  阅读(217)  评论(0编辑  收藏  举报