操作系统-面试题/进程与线程
2017-08-29 19:23
197 查看
一、进程是不活泼的。
进程从来不执行任何东西,只是线程的容器。线程总是在某个进程环境中创建的,而且它的整个寿命期都在该进程中。这意味着线程在它的进程地址空间中执行代码,并且在进程的地址空间中对数据进行操作。因此,如果在单进程环境中,你有两个或多个线程正在运行,那么这两个线程将共享单个地址空间。这些线程能够执行相同的代码,对相同的数据进行操作。这些线程还能共享内核对象句柄,因为句柄表依赖于每个进程而不是每个线程的存在。
二、进程使用的系统资源比线程多的多,原因是它需要更多的地址空间。为进程创建一个虚拟地址空间需要许多系统资源。系统中要保留大量的记录,这要占用大量的内存。
由于线程需要的开销比进程少,因此一般用增加线程来解决编程问题,而要避免创建新的进程。
每当进程被初始化时,系统就要创建一个主线程。该线程与C/C++运行期库的启动代码一道开始运行,启动代码则调用进入点函数,并且继续运行知道进入点函数,并且继续运行直到进入点函数返回并且C/C++运行期库的启动代码调用退出为止。对于许多应用程序来说,这个主线程是应用程序需要的唯一线程。不过,进程能够创建更多的线程来帮助执行他们的操作。
每个线程必须拥有一个进入点函数,线程从这个进入点 开始运行。即main, wmain, Wmain, wWin Main. 如果想要在你的进程中创建一个辅助线程,它必定也是一个进入点函数,类似下面的样子:
线程函数可以执行你想要它做的任何任务。最终,线程函数到达它的结尾处并且返回。这时,线程终止运行,该堆栈的内存被释放,同时,线程的内核对象的使用计数被递减。如果使用计数降为0,线程的内核对象就被撤销。与进程内核对象的情况相同,线程内核对象的寿命至少可以到达它们相关联的线程那样长,不过,该对象的寿命可以远远超过线程本身的寿命。
进程从来不执行任何东西,只是线程的容器。线程总是在某个进程环境中创建的,而且它的整个寿命期都在该进程中。这意味着线程在它的进程地址空间中执行代码,并且在进程的地址空间中对数据进行操作。因此,如果在单进程环境中,你有两个或多个线程正在运行,那么这两个线程将共享单个地址空间。这些线程能够执行相同的代码,对相同的数据进行操作。这些线程还能共享内核对象句柄,因为句柄表依赖于每个进程而不是每个线程的存在。
二、进程使用的系统资源比线程多的多,原因是它需要更多的地址空间。为进程创建一个虚拟地址空间需要许多系统资源。系统中要保留大量的记录,这要占用大量的内存。
由于线程需要的开销比进程少,因此一般用增加线程来解决编程问题,而要避免创建新的进程。
每当进程被初始化时,系统就要创建一个主线程。该线程与C/C++运行期库的启动代码一道开始运行,启动代码则调用进入点函数,并且继续运行知道进入点函数,并且继续运行直到进入点函数返回并且C/C++运行期库的启动代码调用退出为止。对于许多应用程序来说,这个主线程是应用程序需要的唯一线程。不过,进程能够创建更多的线程来帮助执行他们的操作。
每个线程必须拥有一个进入点函数,线程从这个进入点 开始运行。即main, wmain, Wmain, wWin Main. 如果想要在你的进程中创建一个辅助线程,它必定也是一个进入点函数,类似下面的样子:
DWORD WINAPI ThreadFunc(PVOID pvParam) { DWORD dwResult = 0; ... return(dwResult); }
线程函数可以执行你想要它做的任何任务。最终,线程函数到达它的结尾处并且返回。这时,线程终止运行,该堆栈的内存被释放,同时,线程的内核对象的使用计数被递减。如果使用计数降为0,线程的内核对象就被撤销。与进程内核对象的情况相同,线程内核对象的寿命至少可以到达它们相关联的线程那样长,不过,该对象的寿命可以远远超过线程本身的寿命。
相关文章推荐
- 进程、线程、文件共享--操作系统概念--unix环境高级编程
- 现代操作系统读书笔记第2章 进程与线程
- 【初探】操作系统之进程线程
- 操作系统之进程与线程4——进程调度
- 操作系统-进程和线程
- 很生动的 图文并茂的 操作系统 进程 线程
- 编程思想之多线程与多进程(1)-以操作系统的角度述说线程与进程
- C++进阶—>以操作系统的角度述说线程与进程
- 关于操作系统必知必会-进程与线程
- 编程思想之多线程与多进程(1)——以操作系统的角度述说线程与进程
- 线程、进程面试题
- 编程思想之多线程与多进程(1)——以操作系统的角度述说线程与进程
- 编程思想之多线程与多进程(1)——以操作系统的角度述说线程与进程
- 操作系统中的进程与线程
- java面试题14--进程和线程的差别
- 一道面试题:说说进程和线程的区别
- 进程与线程的区别与联系(经典面试题)
- 操作系统-进程和线程介绍、死锁处理
- 编程思想之多线程与多进程(1)——以操作系统的角度述说线程与进程
- 操作系统--进程与线程