![IIS、应用程序域、池、进程和线程的高级理解](https://linux22.com/image/550762/IIS%E3%80%81%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F%E5%9F%9F%E3%80%81%E6%B1%A0%E3%80%81%E8%BF%9B%E7%A8%8B%E5%92%8C%E7%BA%BF%E7%A8%8B%E7%9A%84%E9%AB%98%E7%BA%A7%E7%90%86%E8%A7%A3.png)
希望有人能帮我理清这些事情。
这是为了更好地理解操作系统,以及它如何具体应用于 IIS。
应用程序域、应用程序池、进程和线程如何在 Web 应用程序中发挥作用?
是不是这样的:
一个应用程序池可以有多个应用程序域。
一个域可以有多个进程,每个进程管理一个线程池,线程在进程中共享内存空间。
另外,我对 linxu(ubuntu)服务器很感兴趣,因此,如果它相似或不同,我会很感兴趣了解。
答案1
一个应用程序池可以包含多个 IIS 应用程序。
IIS 应用程序是一组共享相同状态的相关页面 - 例如,应用程序和会话变量是共享的。您可以通过 UI 进行应用化或取消应用化。
IIS 应用程序可能有零个或多个 AppDomain。AppDomain 就像进程内的轻量级进程,但它是 .Net 特有的概念;ASP 应用程序没有 AppDomain,而 ASP.Net 应用程序有。
应用程序池在一个或多个工作进程 (w3wp.exe) 中运行。进程本质上是内存的容器,具有与之关联的标识 (令牌) 和一个或多个线程。
线程是“执行线程”——一组独特的 CPU 状态和在进程内存上运行的操作链。线程可以拥有与其关联的令牌(例如,当它们模拟用户时),该令牌将覆盖该线程操作的进程标识,直到线程停止模拟。如果线程“丢失”其令牌,它将充当进程标识。
你应该读的书是《Windows Internals》http://technet.microsoft.com/en-us/sysinternals/bb963901.aspx作者:Solomon、Russinovich 和 Ionescu。