Download C05-P01-Arquitecura_del_sistema

Document related concepts

Arquitectura de Windows NT wikipedia , lookup

Windows NT wikipedia , lookup

Ntoskrnl.exe wikipedia , lookup

Windows 2000 wikipedia , lookup

WOW64 wikipedia , lookup

Transcript
Fundamentos de Sistemas
Operativos
Modulo 2: Introducción a los
sistemas operativos Windows
Tema 2: Estructura de Windows
1
Agenda
•
•
•
•
•
Vistazo a la arquitectura
Entorno de ejecución de programas
Arquitectura del Modo Núcleo
Hilos de Sistema
Procesos de Sistema / Servicios
Arquitectura simplificada
Procesos
de apoyo
Modo
Usuario
Service
processes
Aplicaciones Subsistema
usuario
de entorno
Subsistema de DLLs
Modo
Núcleo
Executive
Kernel
Device drivers
Ventanas
y gráficos
Hardware Abstraction Layer (HAL)
2
Arquitectura del SO
Hay cuatro tipos básicos de procesos en el modo usuario:
• Fijos (system support processes), tales como el sistema de logon o
el administrador de sesiones, que no son servicios de Windows.
(Esto es, no son iniciados por el controlador de servicios.)
• Procesos de servicios, que albergan servicios de Windows, tales
como el administrador de tareas y los servicios de Spooler. Los
servicios generalmente tiene el requisito de correr
independientemente del logon de usuarios. Muchas aplicaciones
servidor de Windows, como SQL Server y Exchange Server,
también incluyen componentes que corren como servicios.
• Aplicaciones de Usuario, que puede ser uno de 6 tipos: Windows
32-bit, Windows 64-bit, Windows 3.1 16-bit, MS-DOS 16-bit, POSIX
32-bit, or OS/2 32-bit.
• Procesos servidores del subsistema de entorno, los cuales
implementan parte del soporte para el entorno del sistema
operativo, o la personalidad presentada al usuario y programador.
• El subsistema de DLLs es para traducir una función documentada
en la función interna de las llamadas a servicio de Windows.
Componentes del Modo Núcleo
• Executive
– servicios base del sistema operativo
– administración de memoria, gestión de procesos e hilos,
– seguridad, E/S, comunicación interprocesos.
• Kernel
–
–
–
–
Funciones de bajo nivel del sistema operativo,
Planificación de hilos, interrupciones y excepciones,
Sincronización multiprocesador.
Provee el conjunto básico de rutinas y objetos que el resto del
executive utiliza para implementar las construcciones de alto nivel.
• Ambos están contenidos en el archivo Ntoskrnl.exe
3
Componentes del Modo Núcleo:
Drivers
• Controladores de dispositivos (*.sys)
– Controladores de hardware que traducen una función
de E/S del usuario en llamadas a funciones especificas
del hardware
– Dispositivos virtuales – sistema de volúmenes y
protocoloes de red
• Controlador de Ventanas y gráficos (Win32k.sys)
– Funciones de la Interfaz gráfica de usuario (GUI)
(USER and GDI)
– ventanas, controles de la interfaz de usuario y dibujo
• Hardware Abstraction Layer (Hal.dll)
– Aísla el núcleo, controladores, y executive del hardware
– Esconde las diferencias especificas del hardware
(motherboards)
Portabilidad
• Cuando se diseñó Windows NT no había una arquitectura
de hardware dominante
– Por esto se diseño para ser portable
• ¿Cómo se logró?
– La mayoría del sistema operativos y los controladores de
dispositivos están escritos en C
• HAL y el núcleo contienen algunas partes en ensamblador
– Algunos componentes están escritos en C++:
• El controlador del sistema de ventanas y gráficos
• El Manejador de volúmenes
– El código especifico del hardware está asilado en las capas más
bajas del SO (tales como el Núcleo y la HAL)
• Brindando una interfaz portable
• NT 4.0 tenía soporta para x86, MIPS, PowerPC, Digital
Alpha AXP
– PowerPC y MIPS quedaron de lado poco después de la salida de NT 4
– Alpha AXP dejó de existir en 1999 (fue soportado hasta SP6)
4
Operaciones reentrantes y
asincrónicas
• El núcleo de Windows es reentrante
• La funciones del núcleo pueden ser llamadas por
múltiples hilos en forma simultanea
• No se permite la serialización de los hilos de
usuario cuando se realizan llamadas al sistema
• El sistema E/S trabaja en forma
asincrónica
• E/S asincrónico mejora la salida de las aplicaciones
• Las funciones sincrónicas proporcionan la facilidad
de programación
Archivos importantes del sistema
Componentes del núcleo del SO:
•
•
•
NTOSKRNL.EXE**
HAL.DLL
NTDLL.DLL
Executive y núcleo
Hardware abstraction layer
Funciones de soporte interno y sistema
de despacho a las funciones ejecutivas
Procesos de sistemas del núcleo:
•
•
•
•
SMSS.EXE
WINLOGON.EXE
SERVICES.EXE
LSASS.EXE
Proceso del administrador de sesiones
Proceso de Logon
Proceso controlador de servicios
Local Security Authority Subsystem
Subsistema de ventanas:
•
•
•
CSRSS.EXE*
Proceso del subsistema de ventanas
WIN32K.SYS
Componentes USER y GDI kernel-mode
KERNEL32/USER32/GDI32.DLL
Windows subsystem DLLs
5
Key System Components
Environment Subsystems
System
& Service
Processes
User
Application
Subsystem DLL
Modo
Usuario
Modo
Núcleo
OS/2
Windows
Windows
Executive
Device Drivers
POSIX
Kernel
Hardware Abstraction Layer (HAL)
Windows
User/GDI
Device
Driver
Modo núcleo vs Modo usuario
QuickSlice (qslice.exe)
•
•
•
Rojo=núcleo, Azul=Modo
usuario
Doble click en un proceso
para ver los hilos del
mismo
La suma de todos las
barras de un hilo
representa el tiempo del
proceso no de CPU
6
Administrador de tareas: Procesos vs
Aplicaciones
• Applications tab
• Pestaña de procesos
“Activo”
Activo” significa que
está
está esperando algú
algún
mensaje
Botó
Botón derecho en la
venta y seleccionar –
”Ir al proceso”
proceso”
Windows Architecture
System Processes
Services
Environment
Subsystems
Applications
Service
Control Mgr.
Windows
SvcHost.Exe
LSASS
Task Manager
WinMgt.Exe
WinLogon
SpoolSv.Exe
Modo
Usuario
Explorer
Session Manager
OS/2
User
Application
Services.Exe
POSIX
Subsystem DLLs
Windows DLLs
NTDLL.DLL
System
Threads
Modo
Núcleo
System Service Dispatcher
Windows
USER,
GDI
(kernel mode callable interfaces)
I/O Mgr
Local
Procedure
Call
Configuration Mgr
(registry)
Processes
&
Threads
Virtual
Memory
Security
Reference
Monitor
Power
Mgr.
Plug and
Play Mgr.
Object
Mgr.
File
System
Cache
Device &
File Sys.
Drivers
Graphics
Drivers
Kernel
Hardware Abstraction Layer (HAL)
Interfaces de hardware (buses, dispositivos de E/S, interrupciones,Original copyright by Microsoft Corporation.
Used by permission.
DMA, controladores de cachél, etc., etc.)
7
¿ Es un SO Microkernel?
• ¿Es Windows basado en microkernel?
–
–
No – no usando la definición académica (Los componentes del SO y
controladores corren en su propio espacio privado de direcciones,
separados de un microkernel primitivo)
Todos los componentes del núcleo comparte el espacio común
•
Por lo tanto no hay protección en el SO y los controladores
• ¿Porqué no es microkernel?
–
–
Performance – espacios de direcciones separados significaría cambios
de contexto para llamar a servicios básicos del SO
La mayoría de los sistemas comerciales (Unix, Linux, VMS etc.) tiene el
mismo diseño
• Pero tiene atributos de SO microkernel
–
Los componentes del núcleo no pueden ver las estructuras de los
demás
•
Usan interfaces formales para pasarse parámetros y acceder o modificar las estructuras
Multiprocesadores simétricos (SMP)
CPUs
• No hay procesador maestro
– Todos los procesos comparten sólo un único espacio
de direcciones
– Las interrupciones pueden ser atendidas por
cualquier procesador
– Cualquier procesador puede causar que otro
procesador re-planifique lo que está corriendo
• El número máximo de CPUs se guarda en
el registro
– HKLM\System\CurrentControlSet
\Control\Session Manager
\LicensedProcessors
L2
Cache
Memory
I/O
SMP
• La actual implementación limita el número
a los bits en una palabra de computadora
– 32 procesadores en sistemas de 32-bit
– 64 procesadores en sistemas de 64-bit
– No es un limite de la arquitectura – sólo una decisión
de implementación
8
Hyperthreading
• Nueva tecnología en los procesadores Xeon
y Pentium 4
–
–
Hace aparecer un único procesador como uno doble al
SO
También llamado simultaneous multithreading
technology (SMT)
• El chip mantiene dos estados separados de
CPU (“Procesadores lógicos”)
• Funciona con Windows 2000, pero sólo XP y
Server 2003 son “hyperthreading aware”
–
–
Los procesadores lógicos no cuentan en los limites de
procesadores físicos
Los algoritmos de planificación tienen en cuenta las
diferencias entre procesadores lógicos y físicos
• Las aplicaciones pueden también optimizarse
para esto (nueva función en Windows Server
2003)
NUMA
• NUMA (non uniform memory architecture)
– Grupos de procesadores físicos (llamados nodos) que
tiene memoria local
• Conectados al sistema a través de un bus de interconexión de
caché coherente
– Considera un sistema SMP (cualquier procesador
puede acceder a toda la memoria)
• Pero la memoria local es más rápida
• Los algoritmos de planificación deben tener esto
en cuenta
– Trata de planificar hilos en procesadores dentro del
mismo nodo
– Trata de utilizar la memoria local para procesos con
hilos en el mismo nodo
9
Multiples paquetes de productos…
1.
Windows XP Home Edition
– Licenciado para 1 chip CPU, 4GB RAM
Windows 2000 & XP Professional
– Versión de escritorio (pero con funcionalidades de servidor)
– Licenciados para 2 chips CPU, 4GB RAM (128GB en la edición de 64-bit)
Windows Server 2003, Web Server
– Funcionales reducidas respecto del Standard Server (sin controlador de dominio)
– Licenciado para 2 chips de CPU, 2GB RAM
Windows Server 2003, Standard Edition (formerly Windows 2000 Server)
– Agregan funciones de red (dominios active directory, espejado de host y RAID 5,
puerta de enlace de red, servidor DHCP, WINS, DNS, …)
– Licenciado para 4 chips de CPU, 4GB RAM (32GB en x64)
Windows Server 2003, Enterprise Edition
(antes Windows 2000 Advanced Server )
– Opcional 3GB de espacio de dirección por proceso, Clusters (8 nodos)
– Licenciado para 8 chips CPU, 32GB RAM (64GB en ediciones de 64-bit)
Windows 2000 Datacenter Server & Windows 2003 Server, Datacenter Edition
– Process Control Manager
– Licenciado para 32 procesadores, 64GB RAM (64 procesadores y 1024GB RAM)
2.
3.
4.
5.
6.
•
Esta no es una lista exhaustiva
– XP: Tablet PC edition, Media Center Edition, Starter Edition
– Server: Small Business Server, Storage Server, …
…Todos con el mismo núcleo
•
Desde Windows 2000, los ejecutables del núcleo son idénticos
–
–
•
NTOSKRNL.EXE, HAL.DLL, xxxDRIVER.SYS, etc.
XP & Server 2003 tienen diferentes versiones del núcleo
El registro indica el tipo de sistema
–
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control
\ProductOptions
•
•
•
ProductType: WinNT=Workstation, ServerNT=Server sin controlador de dominio,
LanManNT=Server con controlador de dominio
ProductSuite: indica el tipo de Server (Advanced, Datacenter, or for NT4: Enterprise Edition,
Terminal Server, …)
El código del sistema operativo prueba estos valores y se comporta
ligeramente diferentes de acuerdo a los valores
–
–
–
–
Limite de licencias (numero de procesadores, cantidad de conexiones de red,
etc.)
Cálculos al momento del inicio (la mayoría en el administrador de memoria)
Tiempos por defecto
Ver DDK: MmIsThisAnNtasSystem
10
NTOSKRNL.EXE
• Imagen del núcleo del sistema operativo
– Contiene el Executive y el Kernel
– También incluye los puntos de entrada a las rutinas implementadas en Hal.Dll
– Muchas de sus funciones están expuestas al modo usuario via NtDll.Dll y los
subsistemas de entorno
• Cuatro diferentes versiones:
NTOSKRNL.EXE Uniprocesador
NTKRNLMP.EXE Multiprocesador
– Windows 2000 agrega versiones PAE (page address extension) –
se debe iniciar con /PAE (32-bit Windows);
NTKRNLPA.EXE Uniprocesadores con soporte para extensión de direcciones
NTKRPAMP.EXEMultiprocesadores con soporte para extensión de direcciones
• Dos variaciones de compilaciones con chequeos (debug):
NTOSKRNL.EXE,
NTKRNLMP.EXE Debug multiprocesador
NTKRNLPA.EXE,
NTKRPAMP.EXEDebug multiprocesador con extensión de direcciones
Diferencias entre UP vs MP
• Estos archivos se actualizan cuando se pasa de
UP a MP:
Nombre del
archivo en disco
Nombre de la versión
monoprocesador CD-ROM
Nombre de la versión
multiprocesador CD-ROM
NTOSKRNL.EXE
\I386\NTOSKRNL.EXE
\I386\NTKRNLMP.EXE
NTKRNLPA.EXE
\I386\NTKRNLMP.EXE
\I386\NTKRPAMP.EXE
HAL.DLL
Depende del tipo de sistema
Depende del tipo de sistema
Todo lo demás es igual (controladores, EXEs,
DLLs)
11
Versión Debug (“Checked Build”)
• Versión especial del sistema llamada “Checked Build”
– Solo versiones multiprocesador (corre en sistema UP)
• Ayuda a capturar errores de sincronización que son más visibles en
sistemas MP
– Principalmente para prueba de controladores, pero pueden ser util
para localizar errores de tiempos en aplicaciones multiprocesador
• Compilados de los mismos fuentes de la versión
comercial
– Pero con los símbolos “DBG” en la compilación
– Esto permite:
• Probar errores en condiciones que “no deberían” ocurrir en el modo
núcleo (ASSERTs)
• Pruebas de validez de los argumentos pasados de una rutina del
modo núcleo a otra
#ifdef DBG
if (algo que no debería pasar pasa)
KeBugCheckEx(…)
#endif
Procesos
• Componentes del sistema que corren en ejecutables
separados (.exe), en sus propios procesos
– Iniciados por el sistema
– No están atados al logon de usuario
• Tres tipos:
– Subsistemas de entorno
– Procesos de inicio del sistema
– Servicios de Windows
• Todos pueden verse en el árbol de procesos
– Utilizando Tlist /T o Process Explorer
12
Procesos:
Procesos de inicio del sistema
• Los primeros dos no son procesos reales
–
–
–
–
No tienen un .exe de modo usuario
No tienen un espacio de direcciones de usuario
Diferentes herramientas los muestran con diferentes nombres
Las estructuras de datos de estos procesos (y sus hilos iniciales) son
creadas en NtosKrnl.Exe y cargadas junto con el código
(Idle)
Proceso id 0
Parte de la imagen del sistema cargada
Origen del los hilos ociosos (no es un proceso real ni son
hilos reales)
(System)
Proceso id 2 (8 in Windows 2000; 4 in XP)
Parte de la imagen del sistema cargada
Origen del los hilos del núcleo (no es un proceso real)
Hilo 0 (rutina llamada Phase1Initialization) lanza el primer
proceso real, corriendo smss.exe...
...y se convierte en un proceso sin páginas
Procesos:
Procesos de inicio del sistema
smss.exe
Administrador de sesiones
El primer proceso creado
Toma sus parámetros de
\HKEY_LOCAL_MACHINE\System\CurrentControlSet
\Control\Session Manager
Lanza los susbsistemas requeridos (csrss) y luego winlogon
csrss.exe
Subsistema de ventanas
winlogon.exe Proceso de Logon: inicia services.exe y lsass.exe; muestra la
primer pantalla de login
Cuando alguien se loguea, inicia las aplicaciones en
\Software\Microsoft\Windows NT\WinLogon\Userinit
services.exe Controlador de servicios; origen de muchos de los servicios de
Windows
Inicia los procesos que no son parte del services.exe
(\Registry\Machine\System\CurrentControlSet\Services )
lsass.exe
Local Security Authentication Server
userinit.exe Iniciado luego del logon; inicia el Explorer.exe (ver
\Software\Microsoft\Windows NT\CurrentVersion\WinLogon\Shell)
y termina (de esta forma el Explorer parece ser un huerfano)
explorer.exe y sus hijos son los creadores de la mayoria de las aplicaciones
interactivas
13
¿Dónde están definidos los
servicios?
• Definidos en el registro:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services
– Una clave por servicio instalado
• Información obligatoria se guarda en cada servicio:
– Tipo de servicio (Windows, Driver, ...)
– Nombre el la imagen del servicio .EXE
• Nota: algunos .EXE contienen más de un servicio
– Tipo de inicio (automático, manual, o deshabilitado)
• Información opcional:
–
–
–
–
Nombre a mostrar
Descripción
Dependencias
Cuenta y contraseña bajo la que corre
• Se pueden almacenar parámetros específicos de la aplicación
– Subclave “Parámetros” bajo la clave del servicio
Vida de un servicio
• Instalación
– La aplicación de configuración le
informa al controlador de servicios
sobre el mismo
Setup
Application
Registry
CreateService
• Inicio del sistema/inicializacion
– SCM leé el registro e inicia el
servicio
• Administración/mantenimiento
– El panel de control puede iniciar o
detener los servicios o cambiar los
parametros del mismo
Service
Controller/
Manager
(Services.Exe)
Service
Processes
Control
Panel
14
Explorador de procesos:
Información de un servicio
• El explorador de procesos puede identificar
los procesos de servicios
– Click en Options->Highlight Services
Procesos de servicios
• Un proceso es creado y administrado por el
Controlador de Servicios (Services.exe)
– Similar al concepto de demonio en Unix
– Normalmente configurado para iniciar en el
booteo (si se inicia mientras se está loguedo,
sobrevive el logoff)
– Normalmente no interactúa con el escritorio
15
Mapeando Servicios a procesos
de servicios
• Tlist /S (Debugging Tools) o Tasklist /svc
(XP/2003) listan los nombres de los servicios
dentro del proceso de servicios
• Process Explorer muestra aún más: nombre
externo y descripción
Herramientas de control de servicios
• Net start/stop – sólo localmente
• Sc.exe (incluido en XP/2003; también dentro del
Win2000 Resource Kit)
– Interface de linea de comandos a todas las funciones de contro
y configuración de los servicios
– Funciona en forma local y remota
• Psservice (Sysinternals) – similar to SC
• Otras herramientas en el Resource Kit
– Instsrv.exe – instalar/remover servicios (command line)
– Srvinstw.exe – instalar/remover servicios (GUI)
– ¿Porqué trae estas herramientas el Reskit?
• Porque incluye varios servicios que no son instalados como tales
cuando se instala el Reskit
16
Infraestructura de servicios
•
Windows 2000 introdujo el genérico Svchost.exe
–
Agrupa servicios en menos procesos
•
•
–
–
•
No es configurable por el usuario que servicio va a que proceso
Terceros no pueden agregar servicios al proceso Svchost.exe
Windows XP/2003 tienen más procesos Svchost debido a dos nuevas
cuentas no privilegiadas para servicios incorporados
–
–
LOCAL SERVICE, NETWORK SERVICE
Menos permisos que la cuenta SYSTEM
•
•
Mejor el tiempo de inicio
Conserva la memoria virtual
Reduce la posibilidad de dañar el sistema
En XP/2003, hay cuatro procesos Svchost (al menos):
–
–
–
–
SYSTEM
SYSTEM (2da instancia – para RPC)
LOCAL SERVICE
NETWORK SERVICE
Bibliografía
• Este material está basado en Windows
Operating System Internals Curriculum
Development Kit, desarrollado por David
A. Solomon y Mark E. Russinovich con
Andreas Polze
17