Windows 3.0 (1990) and Windows
3.1 (1992) improved the design, mostly because of virtual memory and loadable virtual device drivers (VxDs) that allowed them to share arbitrary devices between
multitasked DOS windows.] Also,
Windows applications could now run in protected mode (when Windows
was running in Standard or 386 Enhanced Mode), which gave them access to
several megabytes of memory and removed the obligation to participate in the
software virtual memory scheme. They still ran inside the same address space,
where the segmented memory provided a degree of protection, and multi-tasked
cooperatively. For Windows 3.0, Microsoft also rewrote critical operations from C into assembly.