进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,它是系统进行资源分配和调度的一个独立单位。
线程是进程的一个实体,是CPU调度和分配的基本单位,线程自己基本不拥有系统资源,只拥有一点在运行中必不可少的资源(程序计数器,一组寄存器和栈),但是它
可以与同属一个进程的其他的线程共享所拥有的全部资源。
引入线程的优点:
1..易于调度
2.提高并发性
3.开销小。创建线程比创建进程快,所需要的开销小
4.有利于发挥多处理器的功能。通过创建多线程,每个线程都在一个处理器上运行,从而实现应用程序的并行,使每个处理器得到充分运行。
区别:
1.一个线程必定属于也只能属于一个进程;而一个进程可以拥有多个线程并且至少拥有一个线程。
2.属于一个进程的所有线程共享该线程的所有资源,包括打开的文件,创建的socket等,不同的进程相互独立
3.线程又被称为轻量级进程。进程有进程控制块。但线程控制块比进程控制小的多,线程间切换代价小,进程间切换代价大。
4.进程是程序的一次执行,线程可以理解为程序中的一段程序片段的执行。
5.每个进程都有独立的内存空间,而线程共享其所属进程的内存空间。
总结:
程序:一组指令的有序结合
进程:具有一定独立功能的程序在某个数据集合上的一次运行,是系统资源分配和调度的基本单位
线程:进程的一个实体,是CPU分配和调度的基本单位,是比进程更小的独立运行的基本单位,本身不拥有系统资源,只拥有在运行中必不可少
的资源(程序计数器,寄存器和栈),一个线程可以创建和撤销另一个线程,同一个进程中的多个线程可以并发执行。
1.进程是系统资源分配和调度的基本单位,线程是CPU调度和分配的基本单位,线程又称轻量级进程。
2.线程的引入(1)便于调度(2)提高并发性 (3)开销小(4) 利于多处理器的发挥
3.线程只属于一个进程,而进程可以拥有多个线程,且至少有一个线程。
4.线程间切换代价小,进程间切换代价大。
5.属于同一个进程的线程可以共享该进程的资源,包括打开的文件,sockert链接等。
6.每个进程有独立的空间,线程共享该进程的内存空间。
进程与线程的区别:
(1)调度:线程作为调度和分配的基本单位,进程作为拥有资源的基本单位
(2)并发性:不仅进程之间可以并发执行,同一个进程的多个线程之间也可并发执行
(3)拥有资源:进程是拥有资源的一个独立单位,线程不拥有系统资源,但可以访问隶属于进程的资源.
(4)系统开销:在创建或撤消进程时,由于系统都要为之分配和回收资源,导致系统的开销明显大于创建或撤消线程时的开销。
进程间通信方式:
(1)管道:管道及有名管道:管道可用于具有亲缘关系的父子进程间的通信,有名管道除了具有管道所具有的功能外,它还允许无亲缘关系进程间的通信。
(2)信号:信号是在软件层次上对中断机制的一种模拟,它是比较复杂的通信方式,用于通知进程有某时间发生一个进程收到一个信号与处理器收到一个
中断请求效果上可以说是一致的
(3)消息队列:消息队列是消息的链接表,它客服了上两种通信中信号量有限的缺点,有写权限的可以向消息队列添加新消息,有读权限的可以向消息队列
读取消息。
(4)共享内存:可以说这是最有用的进程间通信方式,是的多个进程可以访问同一快内存空间,不同进程可以及时看到对方进程中对共享内幕才能中数据
的更新,这种方式主要依靠某种同步操作如互斥锁和信号量等。
(5)信号量:主要作为进程间一同一进程的不同线程自己的同步和互斥手段。
(6)套接字:用于网络中不同机器之间的进程间通信。
线程同步的机制:
(1):临界区 :通过对多线程的串行化来访问公共资源或一段代码,速度快,适合控制数据访问
(2):互斥量:为协调对一个共享资源的单独访问而设计,只有拥有互斥量的线程才有权限去访问系统的公共资源,但互斥量只要一个,所以能够保证资源不会同时
被多个线程访问,互斥量不仅能实现同一个应用程序的公共资源共享,还能实现不同应用程序的资源共享。
(3):信号量:为控制一个具有优先数量的用户资源而设计,允许多个线程在同一个时刻去访问同一个资源,但一般需要限制同一时刻访问的最大线程数目
(4):事件:用来通知线程一些事件的发生,从而启动后继任务的开始