当前位置: 技术问答>linux和unix
面试问题:描述线程和进程的概念以及它们的区别?
来源: 互联网 发布时间:2015-04-30
本文导语: 面试问题:描述线程和进程的概念以及它们的区别? 征求用于面试的答案(简洁,清晰。) 谢谢! | 一个进程就是一个拥有自己的虚拟地址空间的单独运行程序。当操作系统改变当前的活动进程(active...
面试问题:描述线程和进程的概念以及它们的区别?
征求用于面试的答案(简洁,清晰。)
谢谢!
征求用于面试的答案(简洁,清晰。)
谢谢!
|
一个进程就是一个拥有自己的虚拟地址空间的单独运行程序。当操作系统改变当前的活动进程(active process)时,就会出现一个系统状态切换操作(a context switch)。由于每一个进程都有它们自己的虚拟地址空间,地址转换映射表(address translation map)就会在上下文切换过程中相应地发生改变。
在一个进程内,也有可能存在多个执行线程。线程与进程是类似的,但是,和进程不同的是,线程没有独立的虚拟地址空间,而是工作在父进程的空间里,同时,能够访问父进程的所有资源。相应地,线程创建时间只是进程创建时间的一小部分,此外,在线程之间产生的线程交互通讯(interprocess communication,IPC)比进程之间产生的进程交互通讯,速度要高出一大截。
在一个进程内,也有可能存在多个执行线程。线程与进程是类似的,但是,和进程不同的是,线程没有独立的虚拟地址空间,而是工作在父进程的空间里,同时,能够访问父进程的所有资源。相应地,线程创建时间只是进程创建时间的一小部分,此外,在线程之间产生的线程交互通讯(interprocess communication,IPC)比进程之间产生的进程交互通讯,速度要高出一大截。
|
进程:进程是一个运行程序并为其提供执行环境的实体,它包括一个地址
空间和至少一个控制点,进程在这个地址空间上执行单一指令序列。进程
地址空间包括可以访问或引用的内存单元的集合,进程控制点通过一个一
般称为程序计数器(program counter,PC)的硬件寄存器控制和跟踪进程指令序列。
在一个应用程序中使用多个进程有一个明显的缺点。创建这些进程增加了
一些基本开销,因为fork 是一种很大的系统调用,因为每个进程都有它
自己的地址空间,它必须使用进程间通信的手段如消息传递或者共享内
存。要把这些进程分配到不同的机器或处理器上去运行,及在进程之间传
递消息,等待进程完成,收集结果等都需要额外的开销。由于这些原因,
线程机制出现了。这时允许一个应用含有多个线程,所有这些线程共享一
个运行空间,但是每个线程有各自的私有栈。当系统在管理这些多线程时
(不论是用户态的线程,还是内核支持的线程),线程之间的切换将要比
进程之间的切换减少很多的工作量,从而节约系统的开销。
空间和至少一个控制点,进程在这个地址空间上执行单一指令序列。进程
地址空间包括可以访问或引用的内存单元的集合,进程控制点通过一个一
般称为程序计数器(program counter,PC)的硬件寄存器控制和跟踪进程指令序列。
在一个应用程序中使用多个进程有一个明显的缺点。创建这些进程增加了
一些基本开销,因为fork 是一种很大的系统调用,因为每个进程都有它
自己的地址空间,它必须使用进程间通信的手段如消息传递或者共享内
存。要把这些进程分配到不同的机器或处理器上去运行,及在进程之间传
递消息,等待进程完成,收集结果等都需要额外的开销。由于这些原因,
线程机制出现了。这时允许一个应用含有多个线程,所有这些线程共享一
个运行空间,但是每个线程有各自的私有栈。当系统在管理这些多线程时
(不论是用户态的线程,还是内核支持的线程),线程之间的切换将要比
进程之间的切换减少很多的工作量,从而节约系统的开销。
|
Process = thread + code, data, and kernel context
How threads and processes are similar
• Each has its own logical control flow.
• Each can run concurrently.
• Each is context switched.
How threads and processes are different
• Threads share code and data, processes (typically) do not.
• Threads are somewhat less expensive than processes.
How threads and processes are similar
• Each has its own logical control flow.
• Each can run concurrently.
• Each is context switched.
How threads and processes are different
• Threads share code and data, processes (typically) do not.
• Threads are somewhat less expensive than processes.
|
进程是资源分配的最小单位。
线程是任务调度的最小单位。
线程是任务调度的最小单位。