Windows内建linux子系统
Windows内建linux子系统
Windows原生运行Linux的技术细节
一:Windows的用户模式和内核模式
根据处理器上运行的代码的类型,处理器在两种模式之间切换:应用程序在用户模式下进行,核心操作系统组件在内核模式下进行;多个驱动程序在内核模式下运行时,某些驱动程序可能在用户模式下进行。
启动用户模式的应用程序时,windows为应用程序创建进程,进程包含该应用程序的“虚拟地址空间”和“句柄表格”。每个程序都单独运行,收到操作系统的监控。程序损坏时不会影响到系统中的其他部分。
内核模式下运行的所有代码共享一个虚拟地址空间。>这表示内核模式驱动程序未从其他驱动程序和操作系统自身独立开来。如果内核模式驱动程序意外写入错误的虚拟地址,可能会影响其他驱动程序甚至操作系统。<
[https://i-msdn.sec.s-msft.com/dynimg/IC535109.png]
二:Windows NT子系统
NT内核将应用程序所能调用的API和内核层之间做了隔离,这样NT可以支持多个子系统:POSIX,OS/2,Win32等。这些子系统最初的用途是简化UNIX和OS/2应用程序向Windows移植的工作,虽然POSIX和OS/2子系统已被取消,但它们的架构保留了下来。
Pico进程和驱动:DrawBridge项目引进的Pico进程和相应的驱动提供了一种基于过程的容器。这是一种不包含操作系统服务的轻量级解决方案,系统调用是由一对Pico驱动处理的。
用户模式Linux,通过这种方式可将 Linux 作为应用程序在其他 Linux 宿主机基础之上运行。此时来宾 Linux 内核无需直接访问硬件,而是将系统调用转发至宿主机 Linux,由其代为访问。
[http://www.oschina.net/news/73063/windows-run-linux]
本文由作者按照
CC BY 4.0
进行授权