(All of the above are desirable properties of any good O/S!)
The ability of the operating system to support multiple paths of execution within a single process. It enables an operating system process or application process to perform multiple functions simultaneously, without waiting for other functions within the process to complete.
An SMP computer contains more than one identical CPU. These computers can contain from 2 to 32 processors. Each of these CPUs has equal access to all memory, devices, and other resources.
Windows NT uses spin locks to synchronize CPUs on an SMP computer. Each thread that needs to manipulate critical data first checks to see if any other thread is already doing so. If not, the thread holds the lock and keeps all other threads out. Another thread, executing on a different CPU, waits or spins in a loop until the lock is released.
There are two kernels:
Ntkrnlmp.exe for SMP (with spin lock code)
Ntoskrnl.exe for single-CPU (no spin lock code)
To run DOS applications, NT creates a virtual DOS machine (VDM). A VDM is a 32-bit Windows (Win32) application that provides a complete virtual Intel x86 environment running DOS. Each DOS application gets its own VDM, and each VDM runs in its own address space.
To run 16-bit Windows (Win16) applications, NT uses a Win32 subsystem called Windows On Windows (WOW), which consists of a single VDM to run to support all Win16 applications. Within this VDM, a thread is provided for each application, and these threads are co-operatively multitasked.
Provides functions that control output to video displays, printers, plotters, and other graphics devices.
Display text, bitmapped graphics, shapes, ...
Handles the management of windows and their parts by making calls to the GDI.
Frames, buttons, dialogs, menus, list boxes, ...
Supports printing by queuing up print jobs and managing their distribution to physical printers.
Almost every system service is performed on an object.
An object is a representation of a physical or conceptual entity in the system.
Files, directories, processes, threads, semaphores, mutexes, events, timers, virtual memory
An object is described using a data structure that contains information on its type, the actions that can be performed on it, a set of attributes defining the behaviour of the object, and its relationship to other objects.
Windows NT can recognize up to 4 GB of physical RAM. The entire address space is divided into 4K pages.
each process gets its own 4 GB virtual address space
at any give time a page might be in RAM, or it might be in a file on disk (pagefile.sys)
if the page isn't in RAM, but currently resides on disk, a page fault occurs
if there is no available pages in RAM, VMM selects the least recently used page and swaps it to disk
VMM ensures that it never gives one process access to another process' memory
VMM provides a file mapping service (I/O by addressing memory)
Manages all the input and output for the system.
keyboard, mouse, disk, CD-ROM, screen, printer
Provides communication among I/O drivers.
file systems, hardware device drivers, network drivers
Each I/O operation is described by an I/O Request Packet (IRP)
Synchronous vs. asynchronous I/O, Caching
The NT kernel's main goal is to feed all available CPUs with a continuous supply of useful work (in the form of executable threads), to operate the system as efficiently as possible.
priority scheduling of threads
32 priority levels, plus real-time vs. variable priorities
Handling of hardware interrupts for devices, processor exceptions, graceful system shutdown and power-fail
Managing kernel objects: events, mutexes, semaphores, and timers
Hides (most of) the implementation details of the hardware platform from the operating system and device drivers ("virtual hardware").
HAL allows the O/S to handle hardware-dependent issues such as: