进程和线程
来源:互联网 发布:招聘java工程师的要求 编辑:程序博客网 时间:2024/04/29 09:53
进程和线程
源地址:http://witmax.cn/process-vs-thread.html
在提到操作系统和程序运行方式的时候,进程和线程是逃不开的话题,面试中问到,于是回顾总结一下。
概念
进程(process)是指在系统中正在运行的一个应用程序,是系统资源分配的基本单位,在内存中有其完备的数据空间和代码空间,拥有完整的虚拟空间地址。一个进程所拥有的数据和变量只属于它自己。
线程(thread)是进程内相对独立的可执行单元,所以也被称为轻量进程(lightweight processes);是操作系统进行任务调度的基本单元。它与父进程的其它线程共享该进程所拥有的全部代码空间和全局变量,但拥有独立的堆栈(即局部变量对于线程来说是私有的)。
进程和线程都具有就绪、阻塞和运行三种基本状态。
联系
一个进程至少拥有一个线程——主线程,也可以拥有多个线程;一个线程必须有一个父进程。多个进程可以并发执行;一个线程可以创建和撤销另一个线程;同一个进程中的多个线程之间可以并发执行。
区别
系统开销:在创建或撤消进程时,由于系统都要为之分配和回收资源,导致系统的开销明显大于创建或撤消线程时的开销
资源管理:进程有独立的地址空间,一个进程崩溃后,在保护模式下不会对其它进程产生影响,而线程只是一个进程中的不同执行路径。线程有自己的堆栈和局部变量,但线程之间没有单独的地址空间,一个线程死掉就等于整个进程死掉,所以多进程的程序要比多线程的程序健壮,但在进程切换时,耗费资源较大,效率要差一些。但对于一些要求同时进行并且又要共享某些变量的并发操作,只能用线程,不能用进程。
通信方式:进程间通信主要包括管道、系统IPC(包括消息队列,信号量,共享存储)、SOCKET。进程间通信其实是指分属于不同进程的线程之间的通讯,所以进程间的通信方法同样适用于线程间的通信。但对应归于同一进程的不同线程来说,使用全局变量进行通信效率会更高。
- 进程和线程
- 关于进程和线程
- 进程和线程
- 进程和线程
- 小解进程和线程
- 进程和线程
- 理解进程和线程
- 进程和线程
- 进程和线程
- 进程和线程 编程
- 进程和线程
- 进程和线程
- 线程和进程
- 进程和线程编程
- 程序、进程和线程
- 进程和线程 区别
- 进程和线程编程
- 什么是线程和进程
- Android只显示月和日的DatePickerDialog
- Visual Studio 2008项目系统属性中的宏
- JAVA位运算符
- DBI接口与DPI接口
- Linux再一次整理
- 进程和线程
- webkit技术译文系列(二):RefPtr和PassRefPtr基础
- 剑法三套,程序员也能挣大钱(一)
- WebKit中的设计模式(一): Noncopyable
- Siverlight 应用标准的WCF开发应用程序,WCF+LINQ+SL LINQ动态查询(今日随笔)
- 剑法三套,程序员也能挣大钱(二)
- WebCore中的渲染机制(一):基础知识
- 剑法三套,程序员也能挣大钱(三)
- 如何给多个子系统设计一个简单通用的权限管理方案?(详细讲解及源代码下载)