Story 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