请问进程线程的区别,进程间怎么相互通信,什么是多线程,什么是并发
参考回答:
1、进程是资源分配的最小单位,线程是程序执行的最小单位
2、进程有自己独立地址空间,每启动一个进程,系统就会为它分配地址空间,建立数据表来维护代码段,堆栈段,数据段,而线程是共享进程中的数据的,使用相同的地址空间,但是CPU切换一个线程的花费远比进程要小,
3、线程之间通信方式更方便,同一进程下的线程共享全局变量等数据,而进程之间的通信方式需要以通信的方式进行,
4、多线程程序中只要有一个线程死掉了,整个进程也死掉了,而一个进程死掉了,并不会对另一个进程造成影响,因为进程有自己独立的地址空间
进程间的通信方式:
1、无名管道通信,数据只能单向流动,只能在具有亲缘的进程间使用
2、高级管道通信,将领一个程序当作一个新的进程在当前程序中启动,则他算是当前进程的子进程
3、有名管道通信,允许无亲缘关系进程间的通信
4、消息队列通信,消息队列是由消息的链表,存放在内核中并由消息队列标识符标识,消息队列克服了信息传递信息少等缺点
5、信号量通信,信号量用于控制多个进程对共享资源的访问
6、信号通信,用于通知接受进程某个事件已经发生
7、共享内存通信,共享内存映射一段能被其他进程所访问的内存,往往与其他通信机制配合使用,来实现进程间的同步和通信
8、套接字通信,他用于不同机器之间的进程通信
什么是多线程
多线程就是指一个进程中同时有多个执行路径正在执行
并发指在操作系统中,一个时间段中有几个程序都已处于已启动运行到运行完毕之间,且这几个程序都是在同一个处理机上面,但任意时刻点上只有一个程序在处理机上运行。