115
CASO DE ESTUDIO 2: WINDOWS VISTA

Windows Vista

Embed Size (px)

DESCRIPTION

Descripcion general de windows vista

Citation preview

11.4 PROCESOS E HILOS EN WINDOWS VISTA

CASO DE ESTUDIO 2: WINDOWS VISTA11.1 Historia de Windows Vista11.2 Programacin en Windows VistaConsisten en gran parte de bibliotecas de cdigo (DLLs) que los programas vinculan de manera dinmica para acceder a las caractersticas del sistema operativo. Windows tambin incluye varias interfaces de programacin que se implementan como servicios, los cuales se ejecutan como procesos separados. Las aplicaciones se comunican con los servicios en modo de usuario a travs de llamadas a procedimientos remotos (RPC).

La Interfaz de programacin de aplicaciones de NT nativaLa mayora de las llamadas al sistema nativas de NT operan sobre objetos en modo de kernel de un tipo u otro, incluyendo archivos, procesos, hilos, tuberas, semforos, etctera.

Lista de algunas de las categoras comunes de objetos en modo de kernel soportados por NT en Windows Vista

Los objetos del sistema operativo proporcionan ocultamiento y abstraccin de datos, pero carecen de algunas de las propiedades ms bsicas de los sistemas orientados a objetos, como la herencia y el polimorfismo.Cada llamada para crear o abrir un objeto devuelve un resultado conocido como manejador al proceso que hizo la llamada.Cada objeto tiene asociado un descriptor de seguridad, el cual indica con detalle quin s y quin no puede realizar ciertos tipos de operaciones en el objeto, con base en el acceso solicitado.Los objetos del kernel en Windows utilizan una herramienta uniforme basada en manejadores en el espacio de nombres de NT para hacer referencia a objetos del kernel, junto con una implementacin unificada en un administrador de objetos centralizado.El administrador de objetos utiliza Unicode (caracteres extensos) para representar nombres en el espacio de nombres de NT. A diferencia de UNIX, NT por lo general no distingue letras maysculas y minsculas (preserva el uso de maysculas y minsculas pero es insensible a maysculas y minsculas).La interfaz de programacin de aplicaciones Win32Las llamadas a las funciones Win32 se conocen en forma colectiva como API Win32. Estas interfaces se divulgan en forma pblica y estn documentadas en su totalidad. Se implementan como procedimientos de biblioteca que envuelven las llamadas al sistema nativas de NT empleadas para realizar el trabajo o, en algunos casos, realizan el trabajo en modo de usuario.

Para implementar los archivos con asignacin de memoria, Windows utiliza tres herramientas completamente distintas.En primer lugar, proporciona interfaces que permiten a los procesos administrar su propio espacio de direcciones virtuales, incluyendo los rangos reservados de direcciones para usarlas despus.En segundo lugar, Win32 proporciona una abstraccin conocida como asignacin de archivos, que se utiliza para representar objetos direccionables como los archivos (a una asignacin de archivo se le conoce como seccin en el nivel de NT). La mayora de las veces, las asignaciones de archivos se crean para hacer referencia a los archivos mediante el uso de un manejador de archivo, pero tambin se pueden crear para hacer referencia a las pginas privadas que se asignan del archivo de pginas del sistema.La tercera herramienta asigna las vistas de las asignaciones de archivos en el espacio de direcciones de un proceso. Win32 permite crear slo una vista para el proceso en curso, pero la herramienta subyacente de NT es ms general y permite crear vistas de cualquier proceso para el que se tenga un manejador con los permisos apropiados.El registro de WindowsWindows adjunta un tipo especial de sistema de archivos (optimizado para archivos pequeos) al espacio de nombres de NT. A este sistema de archivos se le conoce como el registro.Este registro est organizado en volmenes separados, conocidos como grupo masivo de archivos (hives). Lista de los grupos masivos de archivos que se utilizan en Windows Vista.

Para explorar el registro, Windows tiene un programa de GUI llamado regedit, el cual nos permite abrir y explorar los directorios (conocidos como claves) y los elementos de datos (conocidos como valores).

11.3 Estructura de Sistema11.3.1 Estructura del Sistema OperativoEl nivel central es el mismo kernel NTOS, que se carga desde ntoskrnl.exe cuando Windows inicia. NTOS tiene dos niveles: el ejecutivo que contiene la mayora de los servicios, y un nivel ms pequeo que (tambin) se conoce como kernel y es el que implementa las abstracciones de programacin y sincronizacin de hilos subyacentes (un kernel dentro del kernel?); tambin implementa los manejadores de trampas, las interrupciones y otros aspectos sobre la forma en que se administra la CPU.La divisin de NTOS en kernel y ejecutivo es una reflexin de las races de VAX/VMS en NT.El sistema operativo VMS, que tambin fue diseado por Cutler, tena cuatro niveles implementadospor el hardware: usuario, supervisor, ejecutivo y kernel, los cuales corresponden a los cuatro modos de proteccin que proporciona la arquitectura del procesador VAX.

La capa de abstraccin de hardwareLos detalles del hardware sobre la forma en que est organizada la memoria en los servidores grandes, o las primitivas de sincronizacin de hardware disponibles, tambin pueden tener un gran impacto en niveles ms altos del sistema. Por ejemplo, el administrador de memoria virtual de NT y el nivel del kernel estn conscientes de los detalles del hardware relacionados con la cach y la localidad de la memoria. NT utiliza las primitivas de sincronizacin compare&swap en todo el sistema, por lo que sera difcil portarlo a un sistema que no las tuviera. Por ltimo, hay muchas dependencias en el sistema en cuanto al ordenamiento de los bytes dentro de las palabras. En todos los sistemas a los que se ha portado NT, el hardware se estableci en el modo little-endian.Las diferencias en las versiones de las CPUs afectan la forma en que se implementan las primitivas de sincronizacin, como la espera activa. Hay varias familias de chips de soporte que crean diferencias en cuanto a la forma en que se aplica la prioridad a las interrupciones de hardware, la forma en que se accede a los registros de los dispositivos de E/S, la administracin de las transferencias de DMA, el control de los temporizadores y el reloj de tiempo real, la sincronizacin de los mulSECCIN.El trabajo del HAL es presentar al resto del sistema operativo el hardware abstracto que oculta los detalles especficos sobre la versin del procesador, el conjunto de chips de soporte y otras variaciones de la configuracin. Estas abstracciones del HAL se presentan en forma de servicios independientes de la mquina (llamadas a procedimientos y macros) que NTOS y losdrivers pueden utilizar.La capa del kernel

Por encima del nivel de abstraccin de hardware est el NTOS, el cual consiste de dos niveles: el kernel y el ejecutivo. Kernel es un trmino confuso en Windows: se puede referir a todo el cdigo que se ejecuta en el modo de kernel del procesador, pero tambin al archivo ntoskrnl.exe que contiene a NTOS, el ncleo del sistema operativo Windows. O se puede referir a la capa del kernel dentro de NTOS

En el sistema operativo Windows, la capa del kernel proporciona un conjunto de abstracciones para administrar la CPU.

La abstraccin ms central es la de los hilos, pero el kernel tambin implementa el manejo de excepciones, las trampas y varios tipos de interrupciones.

La creacin y destruccin de las estructuras de datos que dan soporte a los hilos se implementan en el nivel ejecutivo. La capa del kernel es responsable de la planificacin y sincronizacin de los subprocesos. Al tener soporte para los hilos en un nivel separado, el nivel ejecutivo se puede implementar mediante el uso del mismo modelo multihilo preferente que se utiliza para escribir cdigo concurrente en modo de usuario, aunque las primitivas de sincronizacin son mucho ms especializadas.

El planificador de hilos del kernel es responsable de determinar cul hilo se ejecuta en cada CPU del sistema. Cada hilo se ejecuta hasta que una interrupcin del temporizador indique que es tiempo de cambiar a otro hilo (expir su quantum), o hasta que el hilo tenga que esperar a que ocurra algo.Los objetos de control incluyen objetos primitivos para hilos, interrupciones, temporizadores, sincronizacin, creacin de perfiles y dos objetos especiales para implementar DPCs y APCs.

Los objetos DPC (Deferred Procedure Call, Llamada a procedimiento diferido) se utilizan para reducir el tiempo requerido para ejecutar ISRs (Interrupt Service Routines, Rutinas de servicio de interrupcin) en respuesta a una interrupcin de un dispositivo especfico.

El hardware del sistema asigna un nivel de prioridad de hardware a las interrupciones. La CPU tambin asocia un nivel de prioridad con el trabajo que realiza. La CPU responde slo a las interrupciones con un nivel de prioridad mayor al que utiliza en un momento dado. Los niveles de prioridad normales, incluyendo el nivel de prioridad de todo el trabajo en modo de usuario, son 0.

Las interrupciones de dispositivos ocurren en la prioridad 3 o mayor, y la ISR para una interrupcin de dispositivo se ejecuta por lo general en el mismo nivel de prioridad que la interrupcin, para poder evitar que ocurran otras interrupciones menos importantes mientras se procesa una ms importante.Si una ISR se ejecuta demasiado tiempo, se retrasar el servicio de las interrupciones de menor prioridad y tal vez se pierdan datos o se obstaculice la velocidad de transferencia de E/S del sistema.Llamadas a procedimientos asncronas

El otro objeto de control especial del kernel es el objeto APC (llamada a procedimiento asncrona).

Las APCs son como las DPCs en cuanto a que difieren el procesamiento de una rutina del sistema, pero a diferencia de las DPCs (que operan en el contexto de CPUs especficas) las APCs se ejecutan en el contexto de un hilo determinado. Cuando se procesa una tecla que se oprimi, no importaen qu contexto se ejecute la DPC, ya que sta es slo otra parte del procesamiento de interrupciones, y las interrupciones slo necesitan manejar el dispositivo fsico y realizar operaciones independientes de los hilos, como grabar los datos en un bfer en espacio de kernel.

La rutina de la DPC se ejecuta en el contexto de cualquier hilo que haya estado en ejecucin cuando ocurri la interrupcin original. Llama al sistema de E/S para reportar que se ha completado la operacin de E/S, y el sistema de E/S pone en cola una APC para ejecutarla en el contexto del hilo que realiza la peticin de E/S original, donde puede acceder al espacio de direcciones en modo de usuario del hilo que procesar la entrada.Objetos despachador

El objeto despachador es otro tipo de objeto de sincronizacin. Es cualquiera de los objetos ordinarios en modo de kernel (el tipo al que los usuarios pueden hacer referencia mediante manejadores) que contienen una estructura de datos llamada dispatcher_header, como se muestra en lafigura 11-15.Estos objetos incluyen semforos, mutexes, eventos, temporizadores con espera, y otros objetosque los hilos pueden esperar para sincronizar la ejecucin con otros hilos.

El nivel ejecutivo

Debajo de la capa del kernel de NTOS est el ejecutivo. El nivel ejecutivo est escrito en C, es en su mayor parte independiente de la arquitectura (el administrador de memoria es una notable excepcin) y se ha portado a nuevos procesadores con slo un esfuerzo modesto (MIPS, x86, PowerPC, Alpha, IA64 y x64). El ejecutivo contiene varios componentes distintos, los cuales se ejecutan mediante las abstracciones de control que proporciona la capa del kernel.Cada componente se divide en:Estructuras de datos e interfaces internas y externas.Los aspectos internos de cada componente estn ocultos y se utilizan slo dentro del mismo componente, mientras que los aspectos externos estn disponibles para todos los dems componentes dentro del ejecutivo. Se exporta un subconjunto de las interfaces externas del ejecutable ntoskrnl.exe y los drivers de dispositivos pueden crear vnculos a ellas, como si el ejecutivo fuera una biblioteca. Microsoft llama gerentes a muchos de los componentes del ejecutivo, ya que cada uno est a cargo de administrar cierto aspecto de los servicios operativos, como la E/S, la memoria, los procesos, los Objetos.El administrador de objetos administra la mayora de los objetos interesantes en modo de kernel que se utilizan en el nivel ejecutivo. stos incluyen los procesos, hilos, archivos, semforos, dispositivos y drivers de E/S, temporizadores y muchos otros.

El administrador de E/S proporciona el marco de trabajo para implementar los drivers de los dispositivos de E/S y un nmero de servicios del ejecutivo especficos para configurar, utilizar y realizar operaciones en los dispositivos.El administrador de procesos se encarga de la creacin y terminacin de los procesos e hilos, incluyendo el establecimiento de las directivas y parmetros que los gobiernan. Pero los aspectos operacionales de los hilos se determinan con base en el nivel del kernel, que controla la programacin y sincronizacin de los hilos, as como su interaccin con los objetos de control como las APCs.El administrador de memoria del ejecutivo implementa la arquitectura de memoria virtual con paginacin bajo demanda. Administra la asignacin de las pginas virtuales a los marcos de pginas fsicas, la administracin de los marcos fsicos disponibles y la administracin del archivo de paginacin en el disco que se utiliza para respaldar las instancias privadas de las pginas virtuales que ya no se cargan en memoriaEl administrador de la cach optimiza el rendimiento de la E/S para el sistema de archivos, para lo cual mantiene una cach de pginas del sistema de archivos en el espacio de direcciones virtuales del kernel. El administrador de la cach utiliza cach con direcciones virtuales; es decir, organiza las pginaEl monitor de referencia de seguridad implementa los elaborados mecanismos de seguridad de Windows, los cuales aplican los estndares internacionales para seguridad computacional, conocidos como Criterios comunes, una evolucin de los requerimientos de seguridad del Libro naranja del Departamento de Defensa de los Estados Unidos. Estos estndares especifican una gran cantidad de reglas que debe cumplir un sistema para estar en conformidad, como el inicio de sesin autenticado, las auditoras, la puesta a cero de la memoria asignada y muchas ms de las cach con base en su ubicacin en sus archivos.El administrador de configuracin es el componente el ejecutivo que implementa el registro, como vimos antes. El registro contiene datos de configuracin para el sistema, en archivos del sistema conocidos como grupo masivo de archivos (hives). El grupo masivo de archivos ms crtico es SYSTEM, el cual se carga en memoria al momento de iniciar el sistema. Slo hasta despus de que el nivel ejecutivo inicializa con xito sus componentes clave (incluyendo los drivers de E/S que se comunican con el disco del sistema) es cuando se vuelve a asociar la copia en memoria del grupo masivo de archivos con la copia en el sistema de archivos.Los drivers de dispositivosEstos drivers son bibliotecas de vnculos dinmicos que se cargan mediante el ejecutivo de NTOS. Aunque su principal uso es para implementar los drivers para el hardware especfico, como los dispositivos fsicos y los buses de E/S, ruta se le conoce como pila de dispositivos, y consiste en instancias privadas de objetos de dispositivo del kernel que se asignan para la ruta. Cada objeto de dispositivo en la pila de dispositivos se vincula con un objeto driver especfico, el cual contiene la tabla de rutinas a utilizar para los paquetes de peticiones de E/S que fluyen a travs de la pila de dispositivos.

Los drivers de filtros especiales, conocidos como drivers de filtros del sistema de archivos, pueden insertar objetos de dispositivo antes del objeto de dispositivo del sistema de archivos, para aplicar la funcionalidad a las peticiones de E/S que se envan a cada volumen, como la inspeccin de los datos que se leen o escriben para asegurar que no tengan virus.

11.3.2 Booteo de Windows VistaPara hacer que se ejecute un sistema operativo se requieren varios pasos. Cuando se enciende una computadora, el hardware inicializa la CPU y despus empieza a ejecutar un programa en memoria.Pero el nico cdigo disponible est en cierta forma de CMOS voltil que el fabricante de la computadora inicializa (y algunas veces el usuario la actualiza, en un proceso conocido como flashing). En la mayora de las PCs, este programa inicial es el BIOS (Basic Input/Output System, Sistema bsico de entrada/salida), el cual sabe cmo comunicarse con los tipos estndar de dispositivos que se encuentran en una PC. Para iniciar Windows Vista, el BIOS primero carga pequeos programas tipo bootstrap que se encuentran al inicio de las particiones de la unidad de disco.Los programas bootstrap saben cmo leer suficiente informacin de un volumen del sistema de archivos para encontrar el programa BootMgr independiente de Windows en el directorio raz.BootMgr determina si el sistema haba hibernado antes o si estaba en modo suspendido (modos especiales de ahorro de energa, los cuales permiten volver a encender el sistema sin tener que iniciarlo).De ser as, BootMgr carga y ejecuta WinResume.exe. En caso contrario, carga y ejecuta WinLoad.exe para realizar un inicio desde cero. WinLoad carga los componentes de inicio del sistema en la memoria: el kernel/ejecutivo (por lo general es ntoskrnl.exe), el HAL (hal.dll), el archivo que contiene el grupo masivo de archivos SYSTEM, el driver Win32k.sys que contiene las partes del subsistema de Win32 en modo de kernel, y tambin las imgenes de los otros drivers listados en el grupo masivo de archivos SYSTEM como drivers de booteo, lo cual significa que se necesitan cuando el sistema arranca.Implementacin del administrador de objetosEl administrador de objetos tambin maneja objetos aun ms especializadosque representan cosas como transacciones del kernel, perfiles, tokens de seguridad y escritorios de Win32. Los objetos de dispositivos vinculan las descripciones del sistema de E/S entre s, y tambin proporcionan el vnculo entre el espacio de nombres de NT y los volmenes del sistema de archivos. El administrador de configuracin utiliza un objeto de tipo Key para crear los vnculos en los grupos masivos de archivos del registro. El mismo administrador de objetos tiene objetos que utiliza para administrar el espacio de nombres de NT e implementar objetos que utilicen una herramienta comn. stos son objetos de directorio, vnculo simblico y de tipo objeto.

11.3.3 Implementacin del administrador de objetosProbablemente el administrador de objetos es el componente individual ms importante en el ejecutivo de Windows.

Proporciona una interfaz uniforme y consistente para administrar los recursos del sistema y las estructuras de datos, como archivos abiertos, procesos, hilos, secciones de memoria, temporizadores, dispositivos, drivers y semforos. El administrador de objetos tambin maneja objetos aun ms especializados que representan cosas como: Transacciones del kernel Perfiles Tokens de seguridadEscritorios de Win32El administrador de configuracin utiliza un objeto de tipo Key para crear los vnculos en los grupos masivos de archivos del registro.

El mismo administrador de objetos tiene objetos que utiliza para administrar el espacio de nombres de NT e implementar objetos que utilicen una herramienta comn. Administrador de objetos Tipo de objetoObjetos objetos de directorio vnculo simblicoUna clave para comprender los objetos es tener en cuenta que un objeto (ejecutivo) es slo una estructura de datos en la memoria virtual, accesible para el modo de kernel. Estas estructuras de datos se utilizan comnmente para representar conceptos ms abstractos. Una consecuencia del hecho de que los objetos sean slo estructuras de datos del kernel es que cuando el sistema se reinicia (o falla), se pierden todos ellos.

Los campos en este encabezado incluyen el nombre del objeto, el directorio en el que existe en el espacio de nombres de NT, y un apuntador a un descriptor de seguridad que representa la ACL para el objeto.Cada objeto contiene un encabezado con cierta informacin comn para todos los objetos de todos los tipos. La memoria que se asigna a los objetos proviene de uno de dos montculos (o reservas) de memoria mantenidos por el nivel ejecutivo. Son funciones utilitarias (como malloc) en el ejecutivo, que permiten a los componentes en modo de kernel asignar memoria paginable del kernel o memoria no paginable de kernel.Tanto la memoria fsica como las direcciones virtuales del kernel son recursos valiosos. Cuando ya no se necesita un objeto, hay que eliminarlo y reclamar su memoria y direcciones. Pero si se reclama un objeto cuando todava est en uso, entonces la memoria se podra asignar a otro objeto y es muy probable que las estructuras de datos se corrompan. El administrador de objetos implementa un mecanismo de conteo de referencias, y el concepto de un apuntador referenciado. Este tipo de apuntador se requiere para acceder a un objeto, siempre que ste se encuentra en peligro de ser eliminado. Dependiendo de las convenciones relacionadas con cada tipo de objeto especfico, slo hay ciertos momentos en los que otro hilo podra llegar a eliminar un objeto. Manejadores Windows utiliza manejadores para hacer referencia a los objetos en modo de kernel. Los manejadores son valores opacos que el administrador de objetos convierte en referencias a la estructura de datos especfica en modo de kernel que representa a un objeto.

La tabla de manejadores se puede expandir si se agregan niveles adicionales de indireccin. Cada proceso tiene su propia tabla, incluyendo el proceso del sistema, el cual contiene todos los hilos del kernel que no estn asociados con un proceso en modo de usuario.El espacio de nombres de objetos

El espacio de nombres de NT es jerrquico, y el administrador de objetos implementa los directorios y vnculos simblicos. El espacio de nombres tambin es extensible, ya que permite que cualquier tipo de objeto especifique extensiones del espacio de nombre, para lo cual tiene que proporcionar una rutina llamada Parse. La rutina Parse es uno de los procedimientos que se pueden proveer para cada tipo de objeto al momento de crearlo

El directorio nombre \?? contiene todos los nombres de dispositivos estilo MS-DOS, como A: para el disco flexible y C: para el primer disco duro.

Estos nombres son en realidad vnculos simblicos al directorio \Device, en donde viven los objetos.

Se eligi el nombre \?? para que siempre estuviera primero en orden alfabtico, y as poder agilizar la bsqueda de todos los nombres de rutas que empiecen con una letra de unidad.CASO DE ESTUDIO 2

El administrador de objetos mantiene un conteo separado de manejadores en cada objeto, el cual nunca es mayor que el de apuntadores referenciados, ya que cada manejador vlido tiene un apuntador referenciado al objeto en su entrada en la tabla de manejadores.

La razn para el conteo separado de manejadores es que muchos tipos objetos tal vez necesiten limpiar su estado cuando desaparezca la ltima referencia en modo de usuario, aun cuando no estn listos todava para eliminar su memoria. En Windows, los archivos se pueden abrir en modo de acceso exclusivo. Cuando se cierra el ltimo manejador para un objeto de archivo, es importante eliminar el acceso exclusivo en ese punto, en vez de esperar que desaparezca cualquier referencia incidental al kernel en algn momento dado.

Ejemplo:

Despus del ltimo vaciado de los datos de la memoria.Aunque el administrador de objetos tiene mecanismos extensos para administrar los tiempos de vida de los objetos dentro del kernel.

Por ende, muchas aplicaciones multihilo tienen condiciones de competencia y errores en donde cerrarn un manejador en un hilo antes de terminar con l en otro hilo.despus del ltimo vaciado de los datos de la memoriaPara ayudar a los escritores de aplicaciones a encontrar problemas como stos en sus programas, Windows tiene un verificador de aplicaciones que los desarrolladores de software pueden descargar de Microsoft.

El verificador de aplicaciones realiza una comprobacin extensa de las reglas para ayudar a los programadores a encontrar errores que tal vez las pruebas ordinarias no podran encontrar.El objeto de dispositivo es uno de los ms importantes y verstiles en modo de kernel en el ejecutivo. El tipo se especifica mediante el administrador de E/S.

Los objetos de dispositivo representan dispositivos de hardware, interfaces y buses, as como particiones de disco lgicas, volmenes de disco, e incluso sistemas de archivos y extensiones del kernel, como los filtros antivirus.

Los componentes del ejecutivo pueden crear nuevos tipos en forma dinmica, mediante una llamada a la interfaz ObCreateObjectType para el administrador de objetos. No hay una lista definitiva de tipos de objetos y cambian de una versin a otra.

Los objetos puerto, temporizador y cola tambin se relacionan con la comunicacin y la sincronizacin.

Los puertos son canales entre procesos para intercambiar mensajes LPC.

Los temporizadores proporcionan una manera de bloquear por un intervalo especfico.

Las colas se utilizan para notificar a los hilos que haba empezado antes una operacin de E/S asncrona, o que un puerto tiene un mensaje en11.4 PROCESOS E HILOS EN WINDOWS VISTA

11.4 PROCESOS E HILOS EN WINDOWS VISTA 86111.4.1 Conceptos fundamentales 86111.4.2 Llamadas a la API para administrar trabajos, procesos, hilos y fibras 86611.4.3 Implementacin de procesos e hilos 871Windows Vista utiliza de manera considerable los procesos de servicio en modo de usuario para extender la funcionalidad del sistema. Algunos de estos servicios tienen lazos estrechos con la operacin de los componentes en modo de kernel como lsass.exe , el servicio de autenticacin de seguridad local que administra los objetos de token que representan la identidad del usuario, y tambin administra las claves de cifrado utilizadas por el sistema de archivos.11.4.1 Conceptos fundamentalesEn Windows Vista, los procesos son contenedores para los programas. Contienen el espacio de direcciones virtuales, los manejadores que hacen referencia a los objetos en modo de kernel y los hilos. En su papel como contenedor para los hilos, contienen los recursos comunes que se utilizan para la ejecucin de hilos, como el apuntador a la estructura de cuotas, el objeto de token compartido y los parmetros predeterminados que se utilizan para inicializar hilos; incluyendo la prioridad y la clase de planificacin.PEB (Process Environment Block, Bloque de entorno del proceso)Cada proceso tiene datos del sistema en modo de usuario.Incluye la lista de mdulos cargados (es decir, los EXEs y DLLs), la memoria que contiene cadenas del entorno, el directorio actual de trabajo y datos para administrar los montculos del proceso; as como tambin un montculo de cdigo de Win32 de casos especiales que se ha acumulado con el tiempo.HilosLos hilos son la abstraccin del kernel para programar la CPU en Windows. Se asignan prioridades a cada hilo con base en el valor de prioridad en el proceso contenedor.Tambin pueden tener afinidad para ejecutarse slo en ciertos procesadores. Esto ayuda a los programas concurrentes que se ejecutan en multiprocesadores a esparcir el trabajo de manera explcita.Cada hilo tiene dos pilas de llamadas separadas:Ejecucin en modo de usuario.Ejecucin en modo modo de kernel. Tambin hay un TEB(Thread Environment Block, Bloque de entorno de hilo) que mantiene los datos en modo de usuario especficos para el hilo, incluyendo el almacenamiento por hilo (Thread Local Storage, Almacenamiento local de hilo) y campos para Win32, de lenguaje y localizacin cultural, adems de otros campos especializados que se han agregado mediante varias herramientas.Adems de los PEBs y los TEBs, hay otra estructura de datos que el modo de kernel comparte con cada proceso: los datos compartidos de usuario .sta es una pgina que el kernel puede escribir, pero es de slo lectura en todos los procesos en modo de usuario. Contiene varios valores mantenidos por el kernelVarias formas de hora, Informacin de la versin, Cantidad de memoria fsica Y un gran nmero de banderas compartidas que utilizan varios componentes en modo de usuario, como COM, los servicios de terminal y los depuradores.El uso de esta pgina compartida de slo lectura es slo una optimizacin del rendimiento, ya que los valores tambin se pueden obtener mediante una llamada al sistema en modo de kernel.ProcesosSe crean a partir de objetos de seccin, cada uno de los cuales describe un objeto de memoria respaldado por un archivo en el disco.Cuando se crea un proceso, el proceso creador recibe un manejador para el proceso creado, el cual le permite modificar:El nuevo proceso mediante la asignacin de secciones y de memoria virtual.La escritura de parmetros y datos sobre el entorno La duplicacin de descriptores de archivos en su tabla de manejadores y la creacin de hilos.Esto es muy distinto a la forma en que se crean los procesos en UNIX, y refleja la diferencia en los sistemas de destino para los diseos originales de UNIX en comparacin con WindowsTrabajos y fibrasWindows puede agrupar los procesos en trabajos, pero la abstraccin de trabajo no es muy general.Se dise de manera especfica para agrupar procesos y poder aplicar restricciones a los hilos que contienen, como la limitacin del uso de los recurso por medio de una cuota compartida o la implementacin de un token restringido para evitar que los hilos accedan a muchos objetos del sistema.La propiedad ms importante de los trabajos para la administracin de recursos es que, una vez que un proceso est en un trabajo, todos los procesos que los hilos creen en esos procesos tambin estarn en la tarea.

Relacin entre trabajos, procesos, hilos y fibrasLos trabajos contienen procesos. Los procesos contienen hilos. Pero los hilos no contienen fibras. La relacin entre los hilos y las fibras es por lo general de varios a varios.

Para crear fibrasSe asigna una pila y una estructura de datos tipo fibra en modo de usuario para almacenar los registros y datos asociados con la fibra. Los hilos se convierten en fibras, pero las fibras tambin se pueden crear en forma independiente a los hilos.Dichas fibras no se ejecutarn sino hasta que una fibra que ya se est ejecutando en un hilo llame de manera explcita a Switch-ToFiber para ejecutar la fibra. Los hilos podran tratar de cambiar a la fibra que ya se est ejecutan-do, por lo que el programador debe proporcionar la sincronizacin para evitarlo.

La principal ventaja de las fibras es que la sobrecarga de cambiar entre una fibra y otra es bastante menor que la sobrecarga de cambiar entre un hilo y otro. Para un cambio de hilo se requiere entrar y salir del kernel. En un cambio de fibra se guardan y restauran unos cuantos registros sin cambiar los modos.Hilos

Los hilos forman la base de la programacin de la CPU, ya que el sistema operativo siempre selecciona un hilo para ejecutarlo, no un proceso. Cada hilo tiene un estado (listo, en ejecucin, bloqueado, etc.), mientras que los procesos no tienen estados de planificacin. Se pueden crear en forma dinmica mediante una llamada a Win32 que especifique la direccin dentro del espacio de direcciones del proceso circundante en la que va a empezar su ejecucin.Tiene un ID de hilo, el cual se toma del mismo espacio de nombres que los IDs del proceso, por lo que un proceso y un hilo nunca pueden utilizar un solo ID al mismo tiempo.Por lo general, un hilo se ejecuta en modo de usuario, pero cuando hace una llamada al sistema, cambia al modo de kernel y contina su ejecucin como el mismo hilo con las mismas propiedades y lmites que tena en modo de usuario.

Cada hilo tiene dos pilasModo de usuarioModo de kernel. Cada vez que un hilo entra al kernel, cambia a la pila en modo de kernel. Los valores de los registros en modo de usuario se guardan en una estructura de datos llamada CONTEXT en la base de la pila en modo de kernel. Como la nica forma de que un hilo en modo de usuario no se ejecute es que entre al kernel, el contexto (CONTEXT) para un hilo siempre contiene el estado de sus registros cuando no se ejecuta. El contexto (CONTEXT) para cada hilo se puede examinar y modificar desde cualquier proceso que tenga un manejador para ese hilo.Por lo general, los hilos se ejecutan mediante el token de acceso del proceso que los contiene.Tambin son el punto focal normal para la E/S. Los hilos se bloquean al realizar ope-raciones de E/S sncronas, y los paquetes de peticin de E/S restantes para las operaciones de E/S asncronas se vinculan con el hilo.11.4.2 Llamadas a la API para administrar trabajos, procesos, hilos y fibrasLos nuevos procesos se crean mediante la funcin CreateProcess de la API Win32. Esta funcin tiene muchos parmetros y opciones. Recibe el nombre del archivo que se va a ejecutar, las cadenas de la lnea de comandos (sin analizar) y un apuntador a las cadenas del entorno.

En la versin Windows Vista se incluy una nueva API nativa para los procesos, la cual mueve muchos de los pasos en modo de usuario al ejecutivo en modo de kernel, y combina la creacin del proceso con la creacin del hilo inicial.

La razn del cambio fue aceptar el uso de los procesos como lmites de seguridad. Este cambio en Windows Vista permite a los procesos proporcionar tambin lmites de confianza, pero esto significa que el proceso creador no tiene los permisos suficientes en relacin con un manejador de procesos como para implementar los detalles de la creacin de procesos en modo de usuario.

Comunicacin entre procesosLos hilos se pueden comunicar de muchas formas: TuberasByteMensajeTuberas con nombreByteMensajeRanuras de correoSocketsConectan procesos en distintas mquinas.Llamadas a procedimientos remotosSon una forma de que el proceso A haga que el proceso B llame a un procedimiento en el espacio de direcciones de B a beneficio de A, y devuelva el resultado a A.Archivos compartidosSe puede implementar con facilidad el bfer compartido que se utiliza en los problemas de productor-consumidor.SincronizacinLos procesos tambin pueden utilizar varios tipos de objetos de sincronizacin. As como Windows Vista proporciona muchos mecanismos de comunicacin entre procesos, tambin proporciona muchos mecanismos de sincronizacin, incluyendo los semforos, los mutexes, las regiones crticas y los eventos.SemforosPara crear un semforo se utiliza la funcin CreateSempahore de la API Win32. Los semforos son objetos en modo de kernel y, por ende, tienen descriptores de seguridad y manejadores. El manejador para un semforo se puede duplicar mediante DuplicateHandle y se puede pasar a otro proceso, de manera que se puedan sincronizar varios procesos con el mismo semforo. MutexesLos mutexes tambin son objetos en modo de kernel que se utilizan para la sincronizacin, pero son ms simples que los semforos ya que no tienen contadores. En esencia son bloqueos con funciones de la API para bloquear WaitForSingleObject y desbloquear ReleaseMutex . Al igual que los manejadores de semforos, los manejadores de los mutexes se pueden duplicar y pasar entre los procesos, de manera que los hilos en distintos procesos puedan acceder al mismo mutex.Secciones CrticasSon locales para el espacio de direcciones del hilo creador. Como las secciones crticas no son objetos en modo de kernel, no tienen manejadores explcitos ni descriptores de seguridad, y no se pueden pasar entre procesos. Las operaciones de bloqueo y desbloqueo se realizan con EnterCriticalSection y LeaveCriticalSection, respectivamente. Las secciones crticas se optimizan para combinar espera activa (en multiprocesadores), y la sincronizacin del kernel se utiliza slo cuando es necesario. En muchas aplicaciones es muy raro que haya contiendas en la mayora de las secciones crticas, o tienen tiempos de contencin tan cortos que nunca es necesario asignarles un objeto de sincronizacin del kernel. Esto produce ahorros considerables en la memoria del kernel.EventosUn evento puede estar en uno de dos estados: SealadoNo sealado. Un hilo puede esperar que se seale un evento mediante WaitForSingleObject . Si otro hilo seala un evento con SetEvent , lo que ocurra depender del tipo de evento. Con un evento de notificacin, todos los hilos en espera se liberan y el evento permanece activo hasta que se borra en forma manual mediante ResetEvent . Con un evento de sincronizacin, si hay uno o ms hilos en espera, slo se libera un hilo y se borra el evento. Una operacin alternativa es PulseEvent , que es como SetEvent slo que si no hay nadie esperando, se pierde el pulso y se borra el evento.

11.4.3 Implementacin de procesos e hilosUn proceso se crea cuando otro proceso realiza la llamada a CreateProcess de Win32. Esta llamada invoca a un procedimiento (en modo de usuario) en kernel32.dll que crea el proceso en varios pasos, mediante el uso de varias llamadas al sistema y la realizacin de otro trabajo.

PlanificacinEl kernel de Windows no tiene ningn hilo de planificacin central. En vez de ello, cuando un hilo ya no puede seguir ejecutndose, entra al modo de kernel y llama al planificador para ver con cul hilo se puede cambiar. Las siguientes condiciones ocasionan que el hilo actual en ejecucin ejecute el cdigo del planificador:1. El hilo actual en ejecucin se bloquea en un semforo, mutex, evento, operacin de E/S, etc.2. El hilo seala a un objeto (por ejemplo, realiza una operacin upen un semforo o hace que se seale un evento).3. El quantum expira.

El planificador tambin se llama bajo otras dos condiciones:1. Se completa una operacin de E/S. 2. Expira un tiempo de espera.

La API Win32 proporciona dos APIs para influir en la planificacin de hilos. En primer lugar, hay una llamada SetPriorityClass que establece la clase de prioridad de todos los hilos en el proceso del que hizo la llamada. Los valores permitidos son: Tiempo real Alto Arriba de lo normalNormal Debajo de lo normal Inactivo. La clase de prioridad determina las prioridades relativas de los procesos (a partir de Windows Vista, la clase de prioridad de procesos tambin puede utilizar un proceso para marcarse a s mismo de manera temporal como en segundo plano, lo cual significa que no debe interferir con ninguna otra actividad en el sistema). Observe que la clase de prioridad se establece para el proceso, pero afecta a la prioridad actual de todos los hilos en el proceso, al establecer una prioridad de base con la que empieza cada hilo al momento de su creacin.Algoritmo De Planificacin.Segunda API Win32 es SetThreadPriority .

Establece la prioridad relativa de un hilo (que puede ser pero no necesariamente, el hilo que hizo la llamada) con respecto a la clase de prioridad de su proceso. Los valores permitidos son: Tiempo crtico Mayor Arriba de lo normal Normal Debajo de lo normal Menor Inactivo.

Los hilos de tiempo crtico obtienen la prioridad de programacin ms alta que no sea de tiempo real, mientras que los hilos inactivos obtienen la menor, sin importar la clase de prioridad. El uso de clases de prioridad y prioridades relativas de los hilos facilita a las aplicaciones la decisin sobre qu prioridades deben especificar.Para mejorar la escalabilidad de los algoritmos de planificacin hacia multiprocesadores con un mayor nmero de procesadores, el planificador trata de no tomar el bloqueo que sincroniza el acceso al arreglo global de listas de prioridad. En vez de ello, verifica si puede despachar de manera directa un hilo que est listo para ejecutarse al procesador correspondiente.

Los usuarios ordinarios no pueden ejecutar hilos en tiempo real. Si un hilo de usuario se ejecutara a una prioridad mayor que (por decir) el hilo del teclado o del ratn y entrara en un ciclo, el hilo del teclado o del ratn nunca se ejecutara y el sistema quedara paralizado. Para tener permiso de establecer la clase de prioridad a tiempo real, hay que habilitar un privilegio especial en el token del proceso. Los usuarios normales no tienen este privilegio.

11.5 Administracin de la MemoriaWindows Vista tiene un sistema de memoria virtual muy sofisticado. Tiene varias funciones de Win32 para utilizarlo, las cuales se implementan mediante el administrador de memoria: el componente ms grande del nivel ejecutivo de NTOSConceptos fundamentalesEn Windows Vista, todos los procesos de usuario tienen su propio espacio de direcciones virtuales. En las mquinas x86 las direcciones virtuales son de 32 bits, por lo que cada proceso tiene 4 GB de espacio de direcciones virtuales.Se puede asignar como 2 GB de direcciones para el modo de usuario de cada proceso, o los sistemas servidores de Windows pueden configurar el sistema de manera opcional para ofrecer 3 GB en el modo de usuario.

El cdigo y los datos privados del usuario empiezan desde los 64 KB, y se extienden hasta casi 2 GB. Los 2 GB superiores contienen el sistema operativo, incluyendo el cdigo, los datos y las reservas con y sin paginacin

Asignacin de direcciones virtualesCada pgina de direcciones virtuales puede estar en uno de tres estados: invlida, reservada o confirmada. Una pgina invlida no est asignada a un objeto de seccin de memoria en un momento dado, y una referencia a ella produce un fallo de pgina que a su vez origina una violacin de acceso. Una vez que se asignan cdigo o datos a una pgina virtual, se dice que la pgina est confirmada. Archivos de paginacin

Hay una interesante concesin que ocurre al confirmar espacio de almacenamiento a la pginas confirmadas que no se van a asignar a archivos especficos. Estas pginas utilizan el archivo de paginacin.Windows utiliza una estrategia denominada justo a tiempo. Las pginas confirmadas que respalda el archivo de paginacin no reciben espacio en este archivo sino hasta cuando tienen que paginarse fuera de la memoria. No se asigna ningn espacio en el disco para las pginas que nunca se paginan fuera de la memoria. Si la memoria virtual total es menos que la memoria fsica disponible, no se necesita un archivo de paginacin para nada. Esto es conveniente para los sistemas incrustados que se basan en Windows. 11.6 Uso de la Cach en Windows VistaLa cach de Windows mejora el rendimiento de los sistemas de archivosAl mantener en la memoria las regiones de archivos de uso reciente y frecuente. En vez de poner en cach bloques diseccionados en forma fsica del disco, el administrador de la cach administra los bloques diseccionados en forma virtual.Las regiones de los archivos en cach se conocen como vistas, ya que representan regiones de direcciones virtuales del kernel que se asignan a los archivos del sistema de archivosEl administrador de memoria se encarga de la administracin actual de la memoria fsica en la cach.El papel del administrador de la cach es administrar el uso de las direcciones virtuales del kernel para las vistas, ponerse de acuerdo con el administrador de memoria para marcar las pginas en la memoria fsica y proporcionar interfaces para los sistemas de archivos.

Las herramientas del administrador de la cach de Windows se comparten entre todos los sistemas de archivos.La cach se direcciona en forma virtual de acuerdo con los archivos individuales, el administrador de la cach puede realizar con facilidad la lectura adelantadaLos sistemas de archivos no tienen que traducir primero los desplazamientos de los archivos en nmeros de bloques fsicos antes de solicitar una pgina del archivo en la cach.

La administracin de los recursos de direcciones virtuales del kernel y de la memoria fsica que se utilizan para la cach.El administrador de la cach tambin tiene que coordinarse con los sistemas de archivos en relacin con cuestiones como la coherencia de las vistas, el vaciado al disco y el mantenimiento correcto de las marcas de fin de archivo.Uno de los aspectos ms difciles de un archivo que se debe administrar entre el sistema de archivos, el administrador de la cach y el administrador de memoria es el desplazamiento del ltimo byte en el archivo, conocido como ValidDataLength.Ahora vamos a examinar la forma en que funciona el administrador de la cach. Cuando se hace referencia a un archivo, el administrador de la cach le asigna un trozo de 256 KB del espacio de direcciones virtuales del kernel. Si el archivo es mayor de 256 KB, slo se asigna una porcindel archivo a la vez. Si el administrador de la cach se queda sin trozos de 256 KB de espacio de direcciones virtuales, debe desasignar un archivo anterior antes de asignar uno nuevo.Windows Vista introdujo una nueva forma de uso de cach en el sistema, conocida como ReadyBoost, la cual es distinta del administrador de la cach.Los usuarios pueden insertar memorias flash en los puertos USB o en otros puertos, y hacen los arreglos para que el sistema operativo utilice la memoria flash como cach de escritura inmediata.Las lecturas de la memoria flash son relativamente rpidas, aunque no tanto como la RAM dinmica que se utiliza para la memoria normalEl administrador de la cach tambin funciona para las pginas que se asignan en la memoria virtual y se utilizan con apuntadores, en vez de copiarlas entre los bferes del kernel y de usuario.Cuando un hilo accede a una direccin virtual asignada a un archivo y se produce un fallo de pgina, en muchos casos el administrador puede satisfacer el acceso como un fallo suave.

El uso de cach no es apropiado para todas las aplicaciones. Las grandes aplicaciones empresariales como SQL prefieren administrar su propia cach y sus propias operaciones de E/S. Windows permite abrir archivos para E/S sin bfer, con lo cual se ignora al administrador de la cach.

11.7 Entrada/Salida en Windows Vista11.8 El Sistema de Archivos en Windows Vista11.9 La Seguridad en Windows VistaWindows vista no se diseo de manera especifica para cumplir con los requerimientos C2, hereda muchas propiedades de seguridad del diseo original de NT.

1. Inicio de sesin seguro con medidas anti-suplantacin de identidad.2. Controles de acceso discrecionales.3. Controles de acceso privilegiados.4. Proteccin del espacio de direcciones por proceso.5. Las nuevas pginas deben ponerse en ceros antes de asignarlas.6. Auditora de seguridad

Windows Vista se identifica mediante un SID ( ID de seguridad ) Los SIDs son nmeros binarios con un encabezado corto seguido de un componente aleatorio largo. Cada SID est diseado para ser nico en todo el mundo

Ejemplo: Cuando un usuario inicia un proceso,el proceso y sus hilos se ejecutan bajo el SID del usuario

Conceptos fundamentales Se encarga de especifica un SID y otras propiedades indica quin es el propietario del proceso y qu valores predeterminados y poderes estn asociados con l.

Token de acceso

Cada objeto tiene asociado un descriptor de seguridad, el cual indica quin puede realizar operaciones sobre el.El sistema de archivos NTFS y el registro mantienen una forma persistente de descriptor de seguridad, el cual se utiliza para crear el descriptor de seguridad para los objetos Archivo y Clave lEl descriptor de seguridad consiste en un encabezado seguido deACEs (Entradas de control de acceso). Los dos tipos principales de elementos son Permitir y Denegar..SACL (lista de Control de Acceso del Sistema) no especificaquin puede usar el objeto, Descriptor de seguridadLlamadas a la API de seguridad

Muchas de las llamadas de seguridad de la API Win32 se relacionan con la administracin de los descriptores de seguridad.El inicio de sesin se maneja mediante winlogon y la autenticacin mediante lsass.El resultado de un inicio de sesin exitoso es un nuevo shell de GUI explorer.exe con su token de acceso asociado. Este proceso utiliza los grupos masivos de archivos SECURITY y SAM en el registro. Una vez que un usuario inicia sesin, se realizan operaciones de seguridad cuando abre un objeto para utilizarlo. Cada llamada Openxxx requiere que se abra el nombre del objeto y el conjunto de permisos.Implementacin de la seguridadUna vez abierto un objeto, se devuelve un manejador para el mismo al proceso que hizo la llamada. En las siguientes llamadas slo se comprueba si la operacin intentada est en el conjunto de operaciones solicitadas al momento de abrir el objeto,Windows Vista agreg otra herramienta de seguridadSIDs de nivel de integridad obligatorios en el tokendel procesoUAC (User Account Control, Control de cuentas de usuarioLa ltima caracterstica de seguridad en Windows Vista es una que ya hemos mencionado. Hay soporte para crear procesos protegidos, los cuales proveen un lmite de seguridad. Por lo general, el usuario (segn su representacin mediante un objeto de token) define el lmite de privilegios en el sistema.