lunes, 4 de octubre de 2010

GNU Hurd y GNU Mach

GNU Hurd  y GNU Mach


GNU HURD





Es un conjunto de programas servidores que simulan un núcleo Unix que establece la base del sistema operativo GNU. El Proyecto GNU lo ha estado desarrollando desde 1990 como software libre, distribuyéndolo bajo la licencia GPL.
Hurd intenta superar los núcleos tipo Unix en cuanto a funcionalidad, seguridad y estabilidad, aun manteniéndose compatible con ellos. Esto se logra gracias a que Hurd implementa la especificación POSIX (entre otras), pero eliminando las restricciones arbitrarias a los usuarios.


GNU MACH




Es el micronúcleo oficial del Proyecto GNU. Como cualquier otro micronúcleo, su función principal es realizar labores mínimas de administración sobre el hardware para que el grueso del sistema operativo sea operado desde el espacio del usuario.
En la actualidad el GNU Mach sólo funciona en máquinas de arquitectura intel de 32 bits (IA32) y su uso más popular es servir de soporte a Hurd, el proyecto que pretende reemplazar a los núcleo tipo Unix en el sistema operativo libre GNU. Sin embargo, desde el año 2002 los esfuerzos de la Fundación del Software Libre se encaminaron hacia la adopción del OSKit Mach como micronúcleo oficial. Actualmente se denomina GNU Mach 1.x al antiguo GNU Mach y GNU Mach 2.x a OSKit Mach
A diferencia de la mayoría de núcleos tipo Unix, Hurd se erige encima de un micronúcleo (actualmente sólo está soportado Mach, aunque existió un proyecto ahora discontinuado para poder ejecutar Hurd en el micronúcleo de segunda generación L4), responsable de facilitarle los servicios de un núcleo más básicos: coordinar el acceso al hardware (a la CPU —mediante multiproceso—, a la memoria RAM —mediante gestión de memoria—, y a otros dispositivos de sonido, gráficos, almacenamiento, etc).

GNU/LINUX

GNU/LINUX






GNU/Linux:

Sistema operativo de código abierto creado a partir de la combinación del núcleo o kernel, similar a Unix denominado Linux, y el proyecto GNU.

Linux:

Núcleo del sistema operativo GNU/Linux creado por Linuss Torvalds en 1991

GNU:

El proyecto GNU fue iniciado por Richard Stallman con el objetivo de crear un sistema operativo completamente libre.



SOFTWARE LIBRE, SOFTWARE GRATUITO Y SOFTWARE DE DOMINIO PÚBLICO

SOFTWARE LIBRE, SOFTWARE GRATUITO Y

 SOFTWARE DE DOMINIO PÚBLICO




SOFTWARE LIBRE




El software libre (en inglés free software, esta denominación también se confunde a veces con gratis por el doble sentido del inglés free en castellano) es la denominación del software que respeta la libertad de los usuarios sobre su producto adquirido y, por tanto, una vez obtenido puede ser usado, copiado, estudiado, cambiado y redistribuido libremente. Según la Free Software Foundation, el software libre se refiere a la libertad de los usuarios para ejecutar, copiar, distribuir, estudiar, modificar el software y distribuirlo modificado.

El Software Libre es un tipo particular de software que le permite al usuario el ejercicio de cuatro libertades básicas:
0.Ejecutarlo con cualquier propósito
1.Estudiar como funciona y adaptarlo a sus necesidades
2.Distribuir copias
3.Mejorarlo, y liberar esas mejoras al publico


SOFWARE GRATUITO
 
 
 
Se de­no­mi­na soft­wa­re gra­tui­to a aquel que po­de­mos ac­ce­der gra­tui­ta­men­te, sin pre­vio pago.
"software gratuito" (denominado usualmente freeware), ya que, conservando su carácter de libre, puede ser distribuido comercialmente ("software comercial"). Análogamente, el "software gratis" o "gratuito" incluye en ocasiones el  codigo fuente; no obstante, este tipo de software no es libre en el mismo sentido que el software libre, a menos que se garanticen los derechos de modificación y redistribución de dichas versiones modificadas del programa.
 
SOFTWARE  DE DOMINIO PUBLICO
 
Aquel software que no requiere de licencia, pues sus derechos de explotación son para toda la humanidad, porque pertenece a todos por igual. Cualquiera puede hacer uso de él, siempre con fines legales y consignando su autoría original. Este software sería aquel cuyo autor lo dona a la humanidad o cuyos derechos de autor han expirado, tras un plazo contado desde la muerte de este, habitualmente 70 años. Si un autor condiciona su uso bajo una licencia, por muy débil que sea, ya no es del dominio público.

VULNERABILIDAD DEL NUCLEO DE WINDOWS VISTA

VULNERABILIDAD DEL NUCLEO DE WINDOWS VISTA




Una falla en la creación de redes de Vista se ha encontrado que el sistema de choque, pero no se espera fijar hasta el próximo Service Pack
Un error ha sido encontrado en Windows Vista que podría permitir que se rootkits ocultos o de denegación de servicio ataques a ser ejecutado en equipos que utilizan el sistema operativo.
La vulnerabilidad fue encontrada por Thomas Unterleitner de Austria phion empresa de seguridad 
Según Unterleitner la divulgación de la falla, la cuestión radica en la red de entrada y salida del subsistema de Vista. Algunas solicitudes enviadas a la iphlpapi.dll API puede causar un desbordamiento de búfer que corrompe la memoria kernel de Vista, lo que resulta en una pantalla azul de la muerte accidente.
"Este desbordamiento de búfer que podría (también) ser explotada para inyectar código, por lo tanto, comprometer la seguridad del cliente", Unterleitner dijo.
Unterleitner dijo a ZDNet Reino Unido a través de e-mail que el "explotar puede ser utilizado para apagar la computadora usando un (denegación de servicio) de ataque". También sugirió que, debido a que la explotación se produce en el componente de Netio.sys Vista, que pueden hacer posible rootkits para ocultar.





Uso de un programa de ejemplo, Unterleitner y sus colegas determinó que Vista Enterprise y Vista Ultimate definitivamente afectados por la falla, con otras versiones de Microsoft del sistema operativo "muy probable" que se vieron afectados como así. Ambos 32-bit y 64-bit versiones son vulnerables. Windows XP no se ve afectado.
Pregunta acerca de la gravedad de la falla, Unterleitner señaló que los derechos administrativos se necesitan para ejecutar un programa llamando a la función que podría causar el desbordamiento de búfer. Sin embargo, también dijo que era posible - pero todavía no confirmado - de que alguien podría utilizar un mal DCHP paquete a "aprovechar las ventajas de la explotación sin derechos de administrador."
"Hemos trabajado junto con Microsoft Security Response Center en Redmond desde octubre de 2008, para ubicar, clasificar y arreglar este error," escribió Unterleitner. "Microsoft se enviarán una solución para explotar este con el próximo Service Pack de Vista".
Microsoft le dijo a ZDNet Reino Unido el viernes que había investigado la cuestión, sino que se "desconoce la actualidad de cualquier ataque tratando de utilizar la vulnerabilidad o el impacto de los clientes". No puede, sin embargo, confirmar la inclusión de una solución para el problema en el próximo-como-aún inédito del Service Pack para Vista, ni dar la fecha para que el Service Pack.

NOMENCLATURA DEL KERNEL EN LINUX

NOMENCLATURA DEL KERNEL EN LINUX



El kernel de Linux (Linux) está escrito en C y es código abierto licenciado bajo licencia GNU/GPL (excepto el planificador de recursos, el cual pertenece a Linus Torvalds y al resto de programadores que se han ocupado de dicha parte), con lo cual tenemos acceso al código para su estudio y/o modificación.
Lo podemos encontrar en diferentes versiones, ahora explicaremos la nomenclatura de éste.




La nomenclatura del Kernel se divide en 3 campos separados por un punto (.), estos son:

Primer campo: Número de la versión, actualmente a fecha de este documento es la 2.

Segundo campo: Numero de "sub-versión", por llamarlo de algun modo, es la version dentro de la propia versión, si este numero es par, la versión sera estable, si por el contrario es impar, ésta sera inestable.

Tercer campo: Nivel de corrección el en que se encuentra.

Asi pues el primer paso para configurar nuestro propio Kernel será bajarnoslo.

EXPLICACION NOMBRE WINDOWS 7

WINDOWS 7



Pues parece que finalmente Microsoft va a dejar por primera vez a un sistema operativo con el mismo nombre en el producto final que cuando este está en la fase de desarrollo. Ha sido Mike Nash (Vicepresidente de la división de Windows) quien en su blog ha confirmado lo que hacía tiempo que se venía diciendo.

Recordamos que la nomenclatura viene dada por la versión del sistema operativo de Microsoft. Las primeras versiones del sistema operativo recibieron ya este tipo de nombre pero fueron reemplazadas por los nombres que hacían alusión a años de salida al mercado y para luego pasar a los nombres que inspiraban la experiencia del usuario delante del ordenador como pueden ser XP o Vista.
¿Razón oficial? Windows 7 es un nombre simple y esto representa la nueva política de sistema operativo que quieren adoptar.




Para justificar ese “bautismo”, Nash recorre la historia de Windows desde sus orígenes y el nombre que realmente tienen en la cronología Microsoft.

Está claro, y en eso no hay ninguna duda, de que Windows 1 (1985), 2 (1987) y 3 (1990) son los primeros de la familia. Sin embargo, explica Nash, “a partir de aquí las cosas se complican”.
En 1995, Microsoft lanzaba Windows 95, al que le siguieron Windows 98 (1998) , Windows 98 SE y el malogrado Windows ME (2000). Nash agrupa todas estas versiones bajo la denominación de Windows 4.
En el 2000 llegaba Windows 2000, uno de los mejores productos desarrollados por la compañía que se completaba un año después con el lanzamiento de Windows XP, un sistema que debía unir en un solo producto las dos líneas que hasta el momento manejaba Microsoft, la profesional: NT/2000 y la de consumo: 9.x. Nash otorga a Windows 2000, el número 5 y según él, lo justo sería bautizar a XP como 5.1.
Finalmente Vista, lanzado oficialmente en enero del 2007 sería la versión 6.0… por lo que la nueva versión, si realmente es nueva y no una actualización, debería corresponderle la denominación de 7.0.
Curiosamente y contradiciendo esta teoría evolutiva, Windows 7 tiene como número de código 6.1 por lo que muchos cuestionan que realmente sea una nueva versión y no el autentico Vista que debía haber salido al mercado y que la mala gestión el equipo de desarrollo y las prisas (tuvieron que rehacer todo el código en pocos meses cuando se dieron cuenta de que no funcionaba) impidieron acabarlo a tiempo.

NUCLEO DE WINDOWS 7 (MIN WIN)

NUCLEO DE WINDOWS 7 (MIN WIN)




Consiste en coger el núcleo de Windows e ir quitando cosas y parar sólo justo antes de que deje de funcionar. Su objetivo es simplemente consolidar el diseño del núcleo del sistema operativo. Por lo visto los ingenieros de Microsoft descubrieron que los sistemas de bajo nivel del núcleo de Windows realizaban llamadas a procesos de alto nivel.
Para mejorar el diseño “cortaron” estas llamadas de alto nivel para convertir el núcleo de Windows en un sistema escalable. De esta manera se realizó un mapa de dependencias para poder limpiar las llamadas que se realizaban fuera del núcleo. Se reorgnizaron estas llamadas y las API. El experimento acabó con un sistema operativo que funcionaba perfectamente sin necesidad de librerías de alto nivel: el MinWin. El sistema ocupa de 25 a 40 Megabytes, frente a los 4 Gigabytes de Vista, y se compone de apenas 100 ficheros, cuando Windows necesita 5.000 para funcionar.
De esta forma se creó un “corazón” de Windows nuevo autocontenido y escalable, pero que contiene el núcleo (el kernel) del Windows de toda la vida, sólo que con las llamadas de alto nivel y las API reorganizadas. La clave es, según el propio Russinovich, en la diferencia entre “Core” y “kernel”. El kernel o núcleo de Windows 7 es el mismo de siempre, pero el core (el corazón) ha cambiado, se ha reorganizado. Así que MinWin no es un nuevo kernel, sino un kernel reorganizado. ¿Por qué se ha hecho de esta manera? En primer lugar porque es mucho menos costoso reorganizar y optimizar el núcleo de Windows que empezar desde cero. Por el otro se conserva la compatibilidad con el sistema anterior, porque todas las llamadas se realizan de la misma forma y el núcleo funciona de la misma manera.
En resumen, es buena noticia que los ingenieros de Microsoft hayan trabajado en el núcleo de Vista para mejorarlo para Windows 7, sobre todo si el resultado es un sistema escalable que permitirá mejoras futuras y quién sabe si versiones más “ligeras” de Windows.

NUCLEO DE LINUX Y WINDOWS

NUCLEO DE LINUX Y WINDOWS





LLAMADAS DEL SISTEMA


Las llamadas del sistema (system calls), mientras Linux tiene 320 Windows tiene más de 1000. A simple vista no se puede sólo por el dato comparar si esto es mejor para uno u otro, pero el hecho de que los desarrolladores no se suelan quejar de las llamadas del sistema en Linux hace pensar que “tienen lo que necesitan”. El número abultado de llamadas en el kernel de Windows debe ser por mantener la (arcaica) compatibilidad hacía atrás lo cual como ya he dicho en anteriores veces vuelve el diseño muy complejo y propenso a errores.

TIEMPO DE  DESARROLLO



Otro dato interesante es el tiempo de desarrollo, cada “versión menor” (en el caso de linux los 2.6.x) dura 3 meses en linux y 31 en Windows. En las versiones mayores la cosa ya se balancea menos: Linux tarda 35 meses y Windows 38. Aquí se puede observar lo que decía Linus Torvalds (si no me falla la memoria): lanza versiones rápidamente, continuamente.

TAMAÑO EN LINEAS DE CODIGO


El tamaño en líneas de código en Windows aumenta en cada versión (actualmente 10 millones de líneas) de forma exagerada aunque Linux en cada versión mete soporte para mucho hardware sin que aumente el número tanto (4 millones actualmente). El número anterior es sin drivers, si incluimos los drivers los números se disparan y la diferencia también (Windows 25 millones, Linux 8).

TAMAÑO RESULTANTE DEL KERNEL





El tamaño resultante del kernel (sin drivers/módulos) también es exageradamente, Linux ocupa 1.3MB frente a los 4.6MB de Windows.

ARQUITECTURAS SOPORTADAS


Seguimos con más datos, a destacar el número de arquitecturas soportadas donde Windows literalmente es machado: Windows soporta x86 (los ordenadores de toda la vida), AMD64 y IA-64. Linux soporta ésas y además otras 14 arquitecturas sin contar consolas.

LIMITACIONES DE HARWARE




En tema de limitaciones para mucho hardware de golpe también gana el kernel linux por goleada: soporta 1024 CPUs de 32 o 64 bits frente a las 4-32 y 4-64 respectivamente de Windows. También soporta en temas de memoria 64GB de RAM de 32 bits PAE o 1024GB - 8.589.934.592GB de RAM de 64 bits frente a Windows que se queda con 1GB/<4GB y hasta 128GB (según versiones) respectivamente.


TRANSPARENCIA


* En Windows jamás se ha determinado la ubicación exacta de los programas que se instalan.
En Linux existe una unica carpeta donde se instalan todas las aplicaciones y configuración de las mismas

* Un trozo de código fuente del sistema operativo Windows fue modificado por la NSA de EUA y aún no se conoce que contiene.
Todo el código fuente del sistema linux ha sido construido por muchas comunidades y personas las cuales tienen absoluto acceso para modificarlo, adaptarlo a sus necesidades y distribuirlo.

*Muchos de los programas de mensajeria instantanea han sido cuestionados ya que al momento de habilitarlos consultan de manera automatica la carpetas de documentos de los usuarios y la carpeta de configuración del sistema del PC. (skype)
Los programas de mensajeria instantanea implementados en linux protejen al usuario cifrando las comunicaciones.

SEGURIDAD





SISTEMA MAS UTILIZADO




                                 CONCLUSION



ARQUITECTURA DE LINUX

ARQUITECTURA



ESTRUCTURA BASICA

De la misma manera que el Unix, el Linux se puede dividir generalmente en cuatro componentes principales: el núcleo(kernel), el shell, el sistema de archivos y las utilidades. El núcleo es el programa medular que ejecuta programas y gestiona dispositivos de hardware tales como los discos y las impresoras. El shell proporciona una interfaz para el usuario. Recibe órdenes del usuario y las envía al núcleo para ser ejecutadas. El sistema de archivos, organiza la forma en que se almacenan los archivos en dispositivos de almacenamientotales como los discos. Los archivos están organizados en directorios. Cada directorio puede contener un número cualquiera de subdirectorios, cada uno de los cuales puede a su vez, contener otros archivos. El núcleo, el shell y el sistema de archivos forman en conjunto la estructura básica del sistema operativo. Con estos tres elementos puede ejecutar programas, gestionar archivos e interactuar con el sistema. Además, Linux cuenta con unos programas de software llamados utilidades que han pasado a ser considerados como características estándar del sistema. Las utilidades son programas especializados, tales como editores, compiladores y programas de comunicaciones, que realizan operaciones de computación estándar. Incluso uno mismo puede crear sus propias utilidades





Como una alternativa a la interfaz de la línea de ordenes, Linux proporciona una interfaz gráfica de usuario (GUI) llamada X-Windows que cuenta con varios administradores de ventana que puede utilizar. Un administrador de ventana trabaja de forma muy parecida a los GUI de Windows y del Mac, posee ventanas iconos y menús, todos ellos gestionados por medio del ratón. Dos de los administradores de programas más populares son el Free Virtual Window Manager y el Open Look Window Managger, además de los administradores de ventanas X-Windows también utiliza un administrador de archivos y uno de programas.
El sistema de archivos de Linux organiza los archivos en directorios, de forma similar al DOS. Todo el sistema de archivos de Linux es un gran conjunto interconectado de directorios que están organizado en una estructura jerárquica de árbol. Linux posee un gran número de utilidades que se pueden clasificar en tres categorías: editores, filtros y programas de comunicaciones. Y a diferencia de otros sistemas operativos se distribuye de forma gratuita bajo una licencia publica de GNU de la Free Software Foundation (Fundación de programas libres) lo que básicamente significa que puede ser copiado libremente, cambiado y distribuido dejando siempre disponible el código fuente.
El software de Linux es frecuentemente desarrollado por varios usuarios que deciden trabajar conjuntamente en un proyecto. Una vez que se ha completado se instala en una localización ftp de Internet. Cualquier usuario de Linux puede acceder a la localización y descargar el software.

EL SHELL



El shell proporciona una interfaz entre el núcleo y el usuario. Se puede describir como un intérprete: interpreta las órdenes que introduce el usuario y las envía al núcleo. La interfaz del shell es muy sencilla. Normalmente consiste en un inductor desde el que se teclea una orden y después se pulsa enter. En cierta forma, se está tecleando una orden en una línea. A menudo, esta línea se conoce como la línea de órdenes.
Como una alternativa a la interfaz de la línea de órdenes, Linux proporciona una interfaz gráfica de usuario(GUI) llamada X-Windows, que cuenta con varios administradores de ventanas que puede utilizar. Dos de los administradores de ventanas más populares son el Free Virtual Window Manager (fvwm) y el Open Look Window Manager (olwm).
Aunque un administrador de ventanas constituye una interfaz flexible y vistosa, hay que tener presente que tan solo es un añadido al shell. El administrador de ventanas simplemente le pasa al shell las órdenes que recibe, éste las interpreta y las envía de nuevo al núcleo, para ser ejecutadas.
A lo largo de los años se han hido desarrollando varios tipos de diferentes de shell. En la actualidad, hay tres shells principales: Bourne, Korn y C-shell. El shell Bourne fue desarrollado en el Laboratorio Bell para el sistemaV. El C-shell fue desarrollado para la versión BSD del Unix. El shell Korn es una mejora y ampliación del shell Bourne. Linux usa versiones mejoradas o de dominiopúblico de estos shells: el shell Bourne Again, el TC-shell y el shell Korn. Una ves que inicie su sistema Linux, se encontrará en el shell Bourne Again; donde se podrá acceder a los demás.

 
 SISTEMA DE ARCHIVOS




Los directorios están organizados en una estructura jerárquica de árbol, que empieza en un directorio raíz (root) inicial. Todos los demás directorios se derivan, en última instancia, de este primer directorio raíz.

CARACTERISTICAS

• Multitarea:   La palabra multitarea describe la habilidad de ejecutar varios programas al mismo tiempo. LINUX utiliza la llamada multitarea preventiva, la cual asegura que todos los programas que se están utilizando en un momento dado serán ejecutados, siendo el sistema operativo el encargado de ceder tiempo de microprocesador a cada programa.

• Multiusuario:  Muchos usuarios usando la misma maquina al mismo tiempo.

• Multiplataforma:  Las plataformas en las que en un principio se puede utilizar Linux son 386-, 486-. Pentium, Pentium Pro, Pentium II,Amiga y Atari, tambien existen versiones para su utilizacion en otras plataformas, como Alpha, ARM, MIPS, PowerPC y SPARC.

• Multiprocesador:   Soporte para sistemas con mas de un procesadoresta disponible para Intel y SPARC.
  Funciona en modo protegido 386.
  Protección de la memoria entre procesos, de manera que uno de ellos no pueda colgar el sistema.
  Carga de ejecutables por demanda: Linux sólo lee del disco aquellas partes de un programa que están siendo usadas actualmente.


  Política de copia en escriturapara la compartición de páginas entre ejecutables: esto significa que varios procesos pueden usar la misma zona de memoriapara ejecutarse. Cuando alguno intenta escribir en esa memoria, la página (4Kb de memoria) se copia a otro lugar. Esta política de copia en escritura tiene dos beneficios: aumenta la velocidad y reduce el uso de memoria.
 Memoria virtual usando paginación (sin intercambio de procesos completos) a disco: A una partición o un archivo en el sistema de archivos, o ambos, con la posibilidad de añadir más áreas de intercambio sobre la marcha Un total de 16 zonas de intercambio de 128Mb de tamaño máximo pueden ser usadas en un momento dado con un límite teórico de 2Gb para intercambio. Este limite se puede aumentar fácilmente con el cambio de unas cuantas líneas en el códigofuente.
  La memoria se gestiona como un recurso unificado para los programas de usuario y para el caché de disco, de tal forma que toda la memoria libre puede ser usada para caché y ésta puede a su vez ser reducida cuando se ejecuten grandes programas.
  Todo el código fuente está disponible, incluyendo el núcleo completo y todos los drivers, las herramientas de desarrollo y todos los programas de usuario; además todo ello se puede distribuir libremente. Hay algunos programas comerciales que están siendo ofrecidos para Linux actualmente sin código fuente, pero todo lo que ha sido gratuito sigue siendo gratuito.



  Emulación de 387 en el núcleo, de tal forma que los programas no tengan que hacer su propia emulación matemática. Cualquier máquina que ejecute Linux parecerá dotada de coprocesador matemático. Por supuesto, si el ordenador ya tiene una FPU (unidad de coma flotante), esta será usada en lugar de la emulación, pudiendo incluso compilar tu propio kernel sin la emulación matemática y conseguir un pequeño ahorro de memoria.
Soporte para muchos teclados nacionales o adaptados y es bastante fácil añadir nuevos dinámicamente.
Consolas virtuales múltiples: varias sesiones de login a través de la consola entre las que se puede cambiar con las combinaciones adecuadas de teclas (totalmente independiente del hardware de video). Se crean dinámicamente y puedes tener hasta 64.
Acceso transparente a particiones MS-DOS (o a particiones OS/2 FAT) mediante un sistema de archivos especial: no es necesario ningún comando especial para usar la partición MS-DOS, esta parece un sistema de archivos normal de Unix (excepto por algunas restricciones en los nombres de archivo, permisos, y esas cosas). Las particiones comprimidas de MS-DOS 6 no son accesibles en este momento, y no se espera que lo sean en el futuro. El soporte para VFAT (WNT, Windows 95) ha sido añadido al núcleo de desarrollo y estará en la próxima versión estable.
Un sistema de archivos especial llamado UMSDOS que permite que Linux sea instalado en un sistema de archivos DOS.



Sistema de archivos de CD-ROM que lee todos los formatos estándar de CD-ROM.
TCP/IP, incluyendo ftp, telnet, NFS, etc.
Diversos protocolos de red incluidos en el kernel: TCP, IPv4, IPv6, AX.25, X.25, IPX, DDP, Netrom, etc.

 CARACTERISTICAS GENERALES

Linux es un kernel monolítico
Es capaz de linkar módulos en tiempo de ejecución
No está diseñado a partir de hilos de núcleo
Tiene un diseño reentrante de modo que pueden existir varios procesos en modo núcleo 'ejecutándose' a la vez.
Tiene soporte para aplicaciones de usuario multihilo
Compatible con estándares: POSIX, las APIs del UNIX SysV y los sockets BSD
Admite multiproceso simétrico (SMP)
No expropiativo

 SEGURIDAD
 

Se debe tener cuidado con esté sistema. Verificando los registros (logs) del sistema, tales como /var/log/messages y no perder de vista el sistema.

Se debe tener el sistema actualizado, estar seguro de que se ha instalado las versiones actuales de los programas y estar al tanto de las nuevas alertas de seguridad.




domingo, 3 de octubre de 2010

ARQUITECTURA MICROSOFT

ARQUITECTURA



Con el paso de los años se ha producido una evolución gradual de la estructura y capacidades de los Sistemas Operativos. Sin embargo, recientemente se ha introducido un cierto número de nuevos elementos de diseño en los nuevos Sistemas Operativos y en las nuevas versiones de los Sistemas Operativos existentes. Estos Sistemas Operativos modernos responden a nuevos desarrollos del hardwarey nuevas aplicaciones.

La arquitectura micronúcleo asigna solamente unas pocas funcionesesenciales al núcleo, incluyendo espacios de direcciones, comunicación entre procesos (IPC) y planificación básica. Otros servicios del Sistema Operativo los proporciona procesos, algunas veces llamados servidores, que se ejecutan en modo usuario y que el micronúcleo trata como a cualquier otra aplicación. Este enfoque desconecta el núcleo y el desarrollode servidores. Los servidores pueden estar diseñados para aplicaciones específicas o necesidades del entorno. El enfoque del micronúcleo simplifica la implementación, proporciona flexibilidad y se adapta bien para entornos distribuidos. En esencia, un micronúcleo interactúa de la misma forma con procesos servidores locales y remotos, facilitando la construcción de sistemas distribuidos.


VISION GENERAL DE LA ARQUITECTURA DE WINDOWS




Un Sistema Operativo serio, capaz de competir en el mercado con otros como Unix que ya tienen una posición privilegiada, en cuanto a resultados, debe tener una serie de características que le permitan ganarse ese lugar. Algunas de estas son:
•Que corra sobre múltiples arquitecturas de hardware y plataformas.
•Que sea compatible con aplicaciones hechas en plataformas anteriores, es decir que corrieran la mayoría de las aplicaciones existentes hechas sobre versiones anteriores a la actual, nos referimos en este caso particular a las de 16-bit de MS-DOS y MicrosoftWindows 3.1.
•Reúna los requisitos gubernamentales para POSIX (Portable Operating System Interface for Unix).
•Reúna los requisitos de la industria y del gobierno para la seguridad del Sistema Operativo.
•Sea fácilmente adaptable al mercado global soportando código Unicode.
•Sea un sistema que corra y balancee los procesos de forma paralela en varios procesadores a la vez.
•Sea un Sistema Operativo de memoria virtual.
Uno de los pasos más importantes que revolucionó los Sistemas Operativos de la Microsoft fue el diseño y creación de un Sistema Operativo extensible, portable, fiable, adaptable, robusto, seguro y compatible con sus versiones anteriores (Windows NT).

Y para ello crearon la siguiente arquitectura modular:
La cual está compuesta por una serie de componentes separados donde cada cual es responsable de sus funciones y brindan servicios a otros componentes. Esta arquitectura es del tipo cliente – servidor ya que los programas de aplicación son contemplados por el sistema operativo como si fueran clientes a los que hay que servir, y para lo cual viene equipado con distintas entidades servidoras.




Ya creado este diseño las demás versiones que le sucedieron a Windows NTfueron tomando esta arquitectura como base y le fueron adicionando nuevos componentes.
Uno de las características que Windows comparte con el resto de los Sistemas Operativos avanzados es la división de tareas del Sistema Operativo en múltiples categorías, las cuales están asociadas a los modos actuales soportados por los microprocesadores. Estos modos proporcionan a los programas que corren dentro de ellos diferentes niveles de privilegios para acceder al hardware o a otros programas que están corriendo en el sistema. Windows usa un modo privilegiado (Kernel) y un modo no privilegiado (Usuario).
Uno de los objetivos fundamentales del diseño fue el tener un núcleo tan pequeño como fuera posible, en el que estuvieran integrados módulos que dieran respuesta a aquellas llamadas al sistema que necesariamente se tuvieran que ejecutar en modo privilegiado (modo kernel). El resto de las llamadas se expulsarían del núcleo hacia otras entidades que se ejecutarían en modo no privilegiado (modo usuario), y de esta manera el núcleo resultaría una base compacta, robusta y estable.
El Modo Usuario es un modo menos privilegiado de funcionamiento, sin el acceso directo al hardware. El código que corre en este modo sólo actúa en su propio espacio de dirección. Este usa las APIs (System Application Program Interfaces) para pedir los servicios del sistema.
El Modo Kernel es un modo muy privilegiado de funcionamiento, donde el código tiene el acceso directo a todo el hardware y toda la memoria, incluso a los espacios de dirección de todos los procesos del modo usuario. La parte de WINDOWS que corre en el modo Kernel se llama Ejecutor de Windows, que no es más que un conjunto de servicios disponibles a todos los componentes del Sistema Operativo, donde cada grupode servicios es manipulado por componentes que son totalmente independientes (entre ellos el Núcleo) entre sí y se comunican a través de interfaces bien definidas.


MODO KERNEL


1.1 – CAPA DE ABSTRACCIÓN DE HARDWARE (HAL).


Conocido por sus siglas en inglés HAL (Hardware Abstraction Layer) es una interfaz entre el hardware y el resto del Sistema Operativo, está implementada como una biblioteca de enlace dinámico (dll) y es responsable de proteger el resto del sistema de las especificaciones del hardware, tales como controladores de interrupción e interfaces de entrada/salida. Esta abstracción hace al sistema más portable ya que el resto del sistema no tiene que preocuparse sobre que plataforma está corriendo. Cada plataforma en que el sistema corre necesita un HAL específico. El diseño intenta que cuando Windows sea portado a una nueva arquitectura de procesador, el HAL sea reescrito para el nuevo procesador, pero el resto del sistema simplemente debe ser recompilado.
Aunque la meta de Windows es que todas las llamadas relacionas con el hardware sean a través del HAL, la realidad es que un número pequeño de llamadas de los drivers y del Kernel bordean al HAL e interactúan directamente con el hardware.


1.2 – MICROKERNEL



Es el responsable de todas las acciones que se realizan sobre le sistema y casi todas las funciones del sistema pasan a través de él.

El diseño de este componente asigna muchas de las funciones normalmente asignadas al Kernel en los Sistemas Operativos tradicionales a un grupo de programas llamado Ejecutor de Windows, del cual el microkernel es parte, corre en el modo privilegiado y ambos (el ejecutor y el microkernel) se comunican a través de primitivas del sistema operativo a bajo nivel.
El microkernel está situado en el corazónde Windows, trabaja muy estrechamente con el HAL (Nivel de Abstracción de Hardware), este planifica la ejecución de hilos y manipula las interrupciones y excepciones de procesos. El papel de este es mantener a los procesadores lo mas ocupado posible. En sentido general este se encarga de las funciones más básicas de todo el SO, como son:
•Ejecución de subprocesos.
•Sincronización multiprocesador.
•Manejo de las interrupciones de hardware.

1.3 – EL ADMINISTRADOR DE OBJETOS.



El Administrador de Objetos (Object Manager) es usado para crear, modificar y eliminar objetos ( tipos de datos abstractos que son usados para representar recursos del Sistema Operativo) usados por todos los sistemas que conforman el Ejecutor de Windows. Este también proporciona información sobre el estado de los objetos a todo el Sistema Operativo.

Este también se asegura que los objetos no consuman muchos recursos (por lo regular la memoria), manteniendo cuotas para los diferentes tipos de objetos.
A modo de resumen el Administrador de Objetos se encarga de crear, destruir y gestionar todos los objetos del Ejecutor de Windows.

1.4 – EL EJECUTOR DE WINDOWS.

El Ejecutor de Windows se encarga de las tareas importantes, las que son de vital importancia para el sistema completo, ya que el microkernel está casi siempre demasiado ocupado para dirigirse directamente.
Este componente trabaja estrechamente con el Administrador de Objetos. Cada vez que un usuario intenta acceder a un objeto el Administrador de Objetos crea un manipulador para acceder a este y llama al SRM para determinar el nivel de acceso concedido por el manipulador. El SRM usa información contenida en la ficha de acceso del usuario y lo compara con la lista de control de accesos sobre el objeto para ver si al usuario debe concederse el nivel de acceso pedido. De esta forma el SRM tiene el control de la seguridad de acceso de todos los objetos en el sistema. Una definición clara es que el Ejecutor de Windows provee los fundamentos del sistema operativo que serán suministradas a todas las aplicaciones que corren sobre el sistema. Este incluye servicios como la Administración de Objetos, de Memoria virtual, de Entrada-Salida y de Procesos.

1.5 – EL ADMINISTRADOR DE PROCESOS.






El Administrador de Procesos (Process Manager) es el responsable de crear, quitar y modificar los estados de todos los procesos e hilos. Este también proporciona información sobre el estado de procesos e hilos al resto del sistema.


1.6 – EL ADMINISTRADOR DE MEMORIA VIRTUAL.

El Administrador de Memoria Virtual (Virtual Memory Manager o VMM) proporciona la gestión de memoria virtual del sistema. La memoria virtual es un esquema que permite usar los recursos del disco en lugar de la memoria física del sistema moviendo las páginas al disco cuando estas no están siendo usadas y recuperándolas cuando se les necesitan. Este es un segmento integral de Windows el cual asigna espacios de direcciones de 32 bit a cada proceso sin preocuparse de la cantidad de memoria física del sistema.


1.7 – EL MONITOR DE SEGURIDAD.




El Monitor de Seguridad (Security Reference Monitor o SRM) es el lecho de toda la seguridad dentro del sistema WINDOWS y es el responsable de hacer cumplir todas las políticas de seguridad en la computadora local.

Este componente trabaja conjuntamente con los subsistemas de tiempo de corrida, proceso de conexión al sistema (conocido como logon process) y control de la seguridad local (local security authority). Cuando un usuario intenta conectarse al sistema su identidad es verificada, el subsistema de proceso de conexión pide una ficha de acceso de seguridad (conocido por sus siglas en inglés SAT o security access token) del usuario. El SAT contiene una lista de los privilegios de usuarios y grupos. Este se usa como llave para ese usuario durante la sesión de conexión. Siempre que el usuario quiera hacer algo, el SAT es presentado y usado para determinar si el usuario puede realizar las acciones.


1.8 – EL ADMINISTRADOR DE ENTRADA-SALIDA.



El Administrador de Entrada-Salida (I/O Manager) es responsable de gestionar la comunicación entre los distintos drivers de dispositivo, para lo cual implementa una interfaz bien definida que permite el tratamiento de todos los drivers de una manera homogénea, sin que intervenga el cómo funciona específicamente cada uno. Tiene una serie de subcomponentes que son:

•Driver del Sistema de Archivos: este se encarga de establecer la comunicacióncon los drivers de los Sistemas de Ficheros, ya que el sistema permite la coexistencia de múltiples Sistemas de Archivos en diferentes particiones lógicas de la misma unidad física.
•El servidor y el redirector de red.
•Los drivers de dispositivo del sistema.
•El administrador de caches (Cache Manager): este se encarga de manipular la cache para todo el Sistema de Entrada y Salida.

MODO USUARIO



2.1 – SUBSISTEMAS DE AMBIENTE PROTEGIDO

Dos de los objetivos de WINDOWS son personalidad y compatibilidad. Esto ha sido logrado a través de los subsistemas de ambiente protegido.

La personalidad esencialmente significa que WINDOWS expone múltiples conjuntos de interfaces de programas de aplicación (APIs) y puede actuar eficazmente como si fuera un sistema operativo diferente. WINDOWS viene con una personalidad POSIX y OS/2 además de sus personalidades Win32, Win16 y DOS.
En WINDOWS, hay tres subsistemas de ambiente protegido:
•El subsistema de Win32
•El subsistema de POSIX
•El subsistema de OS/2

2.2 – EL SUBSISTEMA WIN32

La versión 2.0 de Windows PE es un subsistema Win32 mínimo con servicios limitados, basado en el kernel de Windows Vista y que se ejecuta en modo protegido.



Win32 es el subsistema nativo y primario de WINDOWS. Las bases para este subsistema es el conjunto de APIs de Win32. Muchos de estas API son extensiones directas de sus homólogas Win16.
Este subsistema actúa como un servidor para todos los otros subsistemas de ambiente soportados en WINDOWS, los que actúan como clientes y traducen sus llamadas API hacia las API apropiadas de Win32. El subsistema Win32 es responsable de toda la entrada y salida. Este posee el control de la pantalla, el teclado, y el ratón. Cuando otros subsistemas, como OS/2 o POSIX, necesitan beneficiarse de estos dispositivos, ellos piden los servicios al subsistema de Win32.


2.3 – EL SUBSISTEMA POSIX.

Microsoft prestó mucha atención a los diferentes estándares de sistemas abiertos cuando Windows NT estaba en vía de desarrollo. Ellos reconocieron el valor de soportar sistemas abiertos como un método para ganar aceptación de su nuevo sistema operativo avanzado dentro del mercado.

Uno de los estándares más frecuentemente citados soportados por Windows es el POSIX (Interfaz de Sistema operativo Portable Basado en Unix), el cual representa la interfaz del Sistema Operativo portable y fue desarrollado por el IEEE (Instituto de Ingenieros en Electricidad y Electrónica) como un método de proporcionar portabilidad a las aplicaciones hechas sobre plataformas UNIX. No obstante, POSIX se ha integrado en muchos sistemas no UNIX.

2.4 – EL SUBSISTEMA OS/2.




El subsistema de OS/2 está implementado como un subsistema de ambiente protegido, parecido al subsistema POSIX. Este traduce las llamadas API de OS/2 en llamadas a APIs de Win32 que son servidas por el subsistema de Win32.

El subsistema y sus aplicaciones corren en su propio espacio de memoria protegido de 32 bits y constituyen multitarea preventiva unas respecto a otras y respecto a otras aplicaciones que corren en el sistema.




NUCLEO O KERNEL


NUCLEO O KERNEL




En informática, el núcleo (también conocido en español con el anglicismo kernel, de raíces germánicas como kern) es la parte fundamental de un sistema operativo. Es el software responsable de facilitar a los distintos programas acceso seguro al hardware de la computadora. Como hay muchos programas y el acceso al hardware es limitado, el núcleo también se encarga de decidir qué programa podrá hacer uso de un dispositivo de hardware y durante cuánto tiempo, lo que se conoce como multiplexado. Acceder al hardware directamente puede ser realmente complejo, por lo que los núcleos suelen implementar una serie de abstracciones del hardware. Esto permite esconder la complejidad, y proporciona una interfaz limpia y uniforme al hardware subyacente, lo que facilita su uso para el programador.


 
FUNCIONES




· La comunicación entre los programas informáticos y el hardware.

· Gestión de los distintos programas informáticos (tareas) de una máquina.
· Gestión del hardware (memoria, procesador, periférico, forma de almacenamiento, etc.)

La mayoría de los sistemas operativos se construyen en torno al concepto del núcleo. La existencia de un núcleo, es decir, de un único programa responsable de la comunicación entre el hardware y el programa informático, resulta de compromisos complejos referentes a cuestiones de resultados, seguridad y arquitectura de los procesadores. El núcleo tiene grandes poderes sobre la utilización de los recursos materiales (hardware), en particular, de la memoria.
Los núcleos tienen como funciones básicas de garantizar el cargamento y la ejecución de los procesos, las entradas / salidas y proponer un interfaz entre el espacio núcleo y los programas del espacio del usuario.


TIPOS

Hay cuatro grandes tipos de núcleos:

•Los núcleos monolíticos
Facilitan abstracciones del hardware subyacente realmente potentes y variadas.
•Los micronúcleos (en inglés microkernel)
 Proporcionan un pequeño conjunto de abstracciones simples del hardware, y usan las aplicaciones llamadas servidores para ofrecer mayor funcionalidad.
•Los núcleos híbridos (micronúcleos modificados)
Son muy parecidos a los micronúcleos puros, excepto porque incluyen código adicional en el espacio de núcleo para que se ejecute más rápidamente.Son los que reciben o dan salida a señales analógicas que son procesadas digitalmente.Esto puede realizarse gracias a los conversores analogicos/digitales que , como su nombre indica ,convierte señales analógicas a digitales
•Los exonúcleos
No facilitan ninguna abstracción, pero permiten el uso de bibliotecas que proporcionan mayor funcionalidad gracias al acceso directo o casi directo al hardware.

SISTEMA OPERATIVO


SISTEMA OPERATIVO



Un sistema operativo es un conjunto de programas que se encargan de realizar muchas tareas entre las que destaca la administración de los dispositivos periféricos.
Además , es el encargado de coordinar todas las funciones de un sistema de computo y de compartir sus recursos.


El Sistema Operativo es un conjunto de programas (software) que trata de optimizar todo el poder de una computadora y sus periféricos (hardware) y de facilitar al usuario el aprovechamiento de su equipo


FUNCIONAMIENTO

Los sistemas operativos proporcionan una plataforma de software encima de la cual otros programas, llamados aplicaciones, puedan funcionar.

FUNCIONES

1. Interfaces del usuario
Es la parte del sistema operativo que permite comunicarse con él de tal manera que se puedan cargar programas.

2. Administración de recursos
Sirven para administrar los recursos de hardware y de redes de un sistema informativo.

3.Administracion de archivos
Un sistema de información contiene programas de administración de archivos que controlan la creación, borrado y acceso de archivos de datos y de programas.

4.Administracion de tareas
Los programas de administración de tareas de un sistema operativo administran la realización de las tareas informáticas de los usuarios finales.

5.Servicio de soporte
1.Actualización de versiones.
2.Mejoras de seguridad.
3.Inclusión de alguna nueva utilidad (un nuevo entorno gráfico, un asistente para administrar alguna determinada función, ...).
4.Controladores para manejar nuevos periféricos (este servicio debe coordinarse a veces con el fabricante del hardware).
5.Corrección de errores de software


TIPOS DE SISTEMA ÓPERATIVOS

NUMERO DE USUARIOS

MONOUSUARIO:
Si sólo permite ejecutar los programas de un usuario al mismo tiempo.

MULTIUSUARIO:
Si permite que varios usuarios ejecuten simultáneamente sus programas, accediendo a la vez a los recursos de la computadora. Normalmente estos sistemas operativos utilizan métodos de protección de datos, de manera que un programa no pueda usar o cambiar los datos de otro usuario. Macintosh, Windows, Linux



NUMERO DE TAREAS

MONOTAREA:
Solamente puede ejecutar un proceso (aparte de los procesos del propio S.O.) en un momento dado. Una vez que empieza a ejecutar un proceso, continuará haciéndolo hasta su finalización y/o interrupción. Es una característica de los sistemas operativos más antiguos como MS-DOS.



MULTITAREA:
Es capaz de ejecutar varios procesos al mismo tiempo. Este tipo de S.O. normalmente asigna los recursos disponibles (CPU, memoria, periféricos) de forma alternada a los procesos que los solicitan, de manera que el usuario percibe que todos funcionan a la vez, de forma concurrente. UNIX, MS Windows 95 en adelante





NUMERO DE PROCESADORES

UNIPROCESO:
Un sistema operativo uniproceso es aquél que es capaz de manejar solamente un procesador de la computadora, de manera que si la computadora tuviese más de uno le sería inútil. El ejemplo más típico de este tipo de sistemas es el DOS y MacOS.




MULTIPROCESO:
Un sistema operativo multiproceso se refiere al número de procesadores del sistema, que es más de uno y éste es capaz de usarlos todos para distribuir su carga de trabajo.
Ejemplos: Linux, Windows