• Like
  • Save
Compilación Bibliográfica S.O
Upcoming SlideShare
Loading in...5
×
 

Compilación Bibliográfica S.O

on

  • 559 views

 

Statistics

Views

Total Views
559
Views on SlideShare
556
Embed Views
3

Actions

Likes
1
Downloads
0
Comments
0

1 Embed 3

http://chsos20112908020.wordpress.com 3

Accessibility

Categories

Upload Details

Uploaded via as Microsoft Word

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Compilación Bibliográfica S.O Compilación Bibliográfica S.O Document Transcript

    • COMPILACIÓN BIBLIOGRÁFICA<br />(Sistemas Operativos)<br />LUIS EDUARDO ESCOBAR GALLO<br />908520<br />CRISTIAN ALEXANDER TABORDA<br />908058<br />MARTHA LILIANA CORREA OSPINA<br />908020<br />Presentado a<br />CARLOS HERNAN GOMEZ<br />UNIVERSIDAD NACIONAL DE COLOMBIA – SEDE MANIZALES<br />ADMNISTRACIÓN DE SISTEMAS INFORMÁTICOS<br />SISTEMAS OPERATIVOS<br />MANIZALES<br />2011<br />TABLA DE CONTENIDO TOC o "1-3" h z u 1.INTRODUCCIÓN PAGEREF _Toc301250817 h 32.PRESENTACIÓN GENERAL DEL TRABAJO PAGEREF _Toc301250818 h 43.COMPILACIÓN BIBLIOGRÁFICA SOBRE SISTEMAS OPERATIVOS PAGEREF _Toc301250819 h 63.1 INTRODUCCIÓN A LOS SISTEMAS OPERATIVOS PAGEREF _Toc301250820 h 63.1.1 HISTORIA Y EVOLUCIÓN DE LOS SISTEMAS OPERATIVOS PAGEREF _Toc301250821 h 63.1.2 CONCEPTOS Y VISIÓN GRAL DE LOS SISTEMAS OPERATIVOS PAGEREF _Toc301250822 h 93.2 ESTRUCTURA DE LOS SISTEMAS OPERATIVOS: PAGEREF _Toc301250823 h 12 3.2.1 ADMINISTRACION DE RECURSOS PAGEREF _Toc301250824 h 163.3 GESTIÓN DEL PROCESADOR PAGEREF _Toc301250825 h 17 3.3.1 PLANEACIÓN Y DESPACHO PAGEREF _Toc301250826 h 18 3.3.2 ADMINISTRACIÓN DE PROCESOS PAGEREF _Toc301250827 h 203.4 GESTIÓN DE MEMORIA PAGEREF _Toc301250828 h 233.5 CONCURRENCIA PAGEREF _Toc301250829 h 273.6 GESTIÓN DE ARCHIVOS/ENTRADA/SALIDA PAGEREF _Toc301250830 h 283.7 SISTEMAS OPERATIVOS MULTIPROCESADORES PAGEREF _Toc301250831 h 303.8 SISTEMAS OPERATIVOS DISTRIBUIDOS PAGEREF _Toc301250832 h 323.9 SISTEMAS OPERATIVOS TIEMPO REAL/EMBEBIDOS PAGEREF _Toc301250833 h 344.RESUMEN DEL TRABAJO PAGEREF _Toc301250834 h 415.CONCLUSIONES Y OBSERVACIONES PAGEREF _Toc301250835 h 456.BIBLIOGRAFÍA PAGEREF _Toc301250836 h 46<br />INTRODUCCIÓN<br />Por lo general se tiende a dar más importancia a lo tangible que a lo intangible en todo aspecto de la vida. Sin embargo en los computadores tienen igual relevancia ambos aspectos. El Hardware y el Software tienen igual importancia para el correcto funcionamiento de un computador, pues sin alguno de estos dos elementos no se logra el objetivo debido.<br />Un computador es un conglomerado de elementos y dispositivos electrónicos que requieren una correcta integración, por lo que se crearon los sistemas operativos que se definen como un programa que integra y actúa como intermediario entre el usuario y el hardware. <br />Como es normal el proceso de creación de los sistemas operativos comenzó con un sistema sencillo que se fue perfeccionando a través de los años hasta convertirse en lo que es en la actualidad. Se fueron corrigiendo errores, anexando nuevos módulos y perfeccionando las interfaces.<br />En esta recopilación bibliográfica se van a analizar las distintas etapas por las cuales han pasado los sistemas operativos además de los diferentes módulos agregados que van perfeccionando y mejorando el rendimiento de los computadores haciendo uso correcto de las tecnologías modernas.<br />Es importante conocer el funcionamiento de estos sistemas, aunque en la actualidad sean muy transparentes, porque realmente se aprenden a manejar las herramientas cuando se conocen como están diseñadas, por lo que hace indispensable para un programador y desarrollador conocer los detalles de estos sistemas operativos pues en últimos cualquier desarrollo va a necesitar estar sobre un sistema operativo o en su defecto ser uno de estos sistemas.<br />PRESENTACIÓN GENERAL DEL TRABAJO<br />Para comprender mejor las temáticas acerca de Sistemas Operativos que se tratan en esta compilación bibliográfica, es pertinente precisar ciertos conceptos. Comencemos pues por citar diversas definiciones que se encuentran alrededor de Sistema Operativo:<br />Como Máquina Ampliada: Significa que es el software cuya función es presentar al usuario el equivalente de una máquina virtual nivel 3 (Más adelante se explicará en detalle a que se refiere una máquina de nivel 3) para que sea más fácil de programar el hardware subyacente.<br />Como Manejador de Recursos: Así pues, es el administrador de los recursos ofrecidos por el hardware para lograr un eficiente rendimiento uso de ellos.<br />Es un programa o conjunto de programas que actúan como intermediarios entre el usuario y el hardware del computador.<br />En la primera definición se habla de una máquina ampliada, tomando como base el concepto de que un COMPUTADOR puede verse como una máquina Multinivel, vista de la siguiente manera:<br />Nivel 0: Nivel de Lógica Digital  (Maquina real)  - (Los microprogramas son ejecutados directamente por la maquina)<br />Nivel 1: Nivel de Microprogramación - (interpretación - microprogramación)<br />Nivel 2: Nivel de Maquina del Sistema Convencional -(Interpretación parcial - SO)<br />Nivel 3: Nivel de Máquina del SO - (traducción - ensamblador)<br />Nivel 4: Nivel de Lenguaje Ensamblador - (traducción - compilador)<br />Nivel 5: Nivel de Lenguaje Orientado a Problema.<br />Miremos ahora, la organización estructurada del Computador:<br />Cada una de las partes mencionadas en la imagen, componen la estructura de un computador MONOPROCESADOR, ampliando un poco, los buses que lo componen son de 4 tipos, a saber: Direcciones, Control, Alimentación y Datos. Esta estructura es la base para la evolución tanto a nivel de hardware como para la creación de sistemas operativos que se ejecuten sobre estas plataformas.<br />COMPILACIÓN BIBLIOGRÁFICA SOBRE SISTEMAS OPERATIVOS<br /> INTRODUCCIÓN A LOS SISTEMAS OPERATIVOS<br />HISTORIA Y EVOLUCIÓN DE LOS SISTEMAS OPERATIVOS<br />La historia de los sistemas operativos es relativamente corta en comparación con los elementos de otras disciplinas tales como la ingeniería civil o la arquitectura.<br />El primer intento de construir una computadora lo realizó Charles Babbage quien fue un matemático inglés que dedicó gran parte de su vida y su fortuna en construirla. Sin embargo por limitaciones de tecnología no pudo concretar su deseo. Después de esta época se realizaron pocos intentos por construir una máquina de este tipo principalmente por las guerras mundiales y la inversión en armas. Por todas estas limitantes no existía un Sistema Operativo en las máquinas de esa época pues apenas se estaba desarrollando el hardware.<br />La primera generación de sistemas operativos empezó en el año 1950 donde se creó un sistema cuya principal característica era que asociaba los trabajos o las tareas por lotes lo que permitía reducir el tiempo entre la transición de una tarea a otra. Uno de los principales sistemas operativos de esta generación fue el realizado por la General Motors para la computadora IBM 701, sin embargo todo cambió positivamente cuando fue inventado el transistor (1947) y fue introducido al hardware de las computadoras. Los programas se escribían en papel utilizando FORTRAN o lenguaje ensamblador y posteriormente se pasaban a unas tarjetas que eran perforadas y que reconocía la computadora.<br />Después de 1960 empezó la denominada segunda generación de sistemas operativos donde estos sistemas tenían multiprogramación y multiprocesamiento. Estas dos características consistían en que se pueden cargar varios programas en el almacenamiento principal y que se integran varios procesadores en una sola computadora. En esta época surgieron los sistemas en tiempo real y la computadora se empezó a masificar en la industria.<br />La tercera generación comenzó en 1964 cuando IBM lanza su línea de computadoras Sistema/360. A diferencia de los anteriores años, esta serie de computadoras y sistemas operativos no estaban tan pensados para la empresa sino para un uso general. Sin embargo y como es obvio esta generación era muy costosa, el hardware era grande y el sistema operativo no era muy intuitivo; todo esto redujo la masificación de esta generación. Diferente a lo anterior sucedió en la cuarta generación (iniciada en 1970) donde los fabricantes de sistemas operativos empezaron a interesarse en que sus sistemas fueran transparentes para el usuario. Además se crean los conceptos de máquina virtual, bases de datos y en la actualidad ya hablamos de sistemas operativos enfocados al servicio es decir en la denominada nube.<br />A través de los años han sobresalido diferentes sistemas operativos que se han diferenciado por incorporar elementos innovadores en su época, entre estos sistemas está el CP/M (Control Program Microcomputers) construido por el doctor en ciencias de la computación Gary Kildall que tuvo la novedad de funcionar en computadoras de diferente fabricante.<br />Posteriormente fue creado el QDOS (Quick and Dirty Operating System) diseñado por Tim Paterson para la compañía Seattle Computer Products, estaba basado en CP/M. Con el tiempo este sistema fue adquirido por Bill Gates para su empresa Microsoft donde le hizo pequeñas modificaciones y lo lanzó al mercado donde fue conocido como MS-DOS (Microsoft Disk Operating System) y su difusión estuvo potenciada por el acuerdo que tenía con IBM, pues MS-DOS estaba pre-instalado en los productos de IBM aunque en IBM era conocido por otro nombre: PC-DOS.<br />Con el tiempo Digital Research lanzó al mercado un sistema operativo denominado DR-DOS (después conocido como Novell DOS) sin embargo por las campañas de publicidad de Microsoft tuvo poca acogida.<br />DOS era un sistema sin interfaz gráfica donde solo se exponía con texto el directorio en el que se encontraba, por lo que Microsoft desarrolló un entorno operativo denominado Windows que consistía en un entorno grafico que reflejaba lo que mostraba el DOS, sin el DOS no funcionaba Windows. Con las tecnologías que se fueron mejorando Windows pudo desarrollar todo su potencial haciendo uso de las mejoras en los procesadores y las memorias.<br />A partir de allí Windows ha sido la marca comercial que más ha dominado el mundo de las computadoras convirtiéndose en el sistema operativo por defecto, en parte por su buen desempeño y en parte por su excelente campaña comercial. Esto último ha hecho que sistemas considerados más potentes no hayan tenido buena aceptación ni buena masificación, derrumbando proyectos como el del OS/2 de IBM y reduciendo el campo de acción de otros más conocidos como el MAC-OS.<br />Otros sistemas operativos que han surgido contemporáneamente a Windows han sido Unix, Linux, MAC-OS, entre otros.<br />Linux fue diseñado en la década del 90 por Linus Torvalds basado en Unix, este nucleo Linux desencadeno toda una corriente pues se caracterizaba por no estar asociada a una gran empresa, además de ser código libre y de distribución gratuita lo que generó múltiples derivaciones para las diferentes necesidades de las personas. Esta corriente se ha mantenido hasta la actualidad donde se pueden encontrar sistemas operativos como Debian, Ubuntu, Fedora y otros, todos basados en Linux.<br />La otra corriente que surgió fue la de Apple, una de las más grandes compañías de la actualidad, quien desarrolló un sistema operativo denominado Mac OS. La singularidad de esta serie de sistemas operativos diseñados por Apple es que solo están disponibles para sus equipos Macintosh, a diferencia de Windows o Linux que son multiplataforma. Esto ha permitido potenciar su sistema pues es a la medida, pero le ha restado masificación.<br />En la actualidad los sistemas operativos han evolucionado a la par con las tendencias tecnológicas y con la inclusión de internet. Por lo anterior se han realizado sistemas operativos que funcionan desde la nube (Windows Azure). Además de lo anterior se han adentrado en el mundo de la telefonía móvil creando sistemas enfocados a estos dispositivos (Android, Windows 7 Mobile, etc).<br />Los sistemas operativos seguirán evolucionando como lo muestra la historia, hemos llegado a un nivel insospechado en el pasado y seguramente llegaremos a niveles inimaginables en este momento.<br />CONCEPTOS Y VISIÓN GENERAL DE LOS SISTEMAS OPERATIVOS<br />Los sistemas operativos se han convertido en algo común para la población en general, esto es debido a la masificación de las computadoras y del internet. Estos sistemas son tan conocidos en la actualidad que no se concibe la idea de computadora sin sistema operativo y esto es en parte a la transparencia que con que han sido desarrollados.<br />Actualmente existen tres principales tendencias en los sistemas operativos para computadoras familiares (las más difundidas) que son la línea del software libre con sistemas basados en Linux (Ubuntu, Android, Debian, etc), la línea de MacOS (desarrollada por Apple) y la más popular que es el sistema operativo de Microsoft denominado Windows.<br />Todos estos sistemas han sabido integrar los aspectos importantes y necesarios, tales como el manejo de redes, el soporte a internet y otros.<br />La evolución de estos sistemas se ha visto influenciada por la rentabilidad comercial que este mercado produce, pues las empresas que desarrollan este tipo de programas están en el top mundial de empresas más rentables (Apple, Microsoft), lo que incrementa la competencia por la innovación y mejora la calidad.<br />La computación en la nube (cloud computing) que es una nueva tendencia donde los archivos personales están alojados en otro lugar desconocido para el usuario, cambia totalmente el concepto de sistema operativo, pues este ya no tendrá que gestionar datos desde el disco duro del usuario sino que debe permitir una transparente utilización de los recursos de la nube. Aunque aún es aún no se ha difundido como se espera, ya empiezan a salir las primeras versiones de este tipo de sistemas operativos. <br />Además de lo anterior la telefonía celular se ha convertido en algo más que una industria que ofrece comunicación por llamadas sino que ahora son un computador portable donde pueden acceder a internet y realizar demás características personalizadas. Esto también ha demandado sistemas operativos específicos para esta plataforma. Estos sistemas son los que están tomando principal relevancia en la actualidad pues según los expertos toda la economía va a girar alrededor de los celulares. Por lo que muchas empresas desarrolladoras de software para computadoras han empezado a desarrollar este tipo de sistemas. Lo anterior es evidenciado por la reciente adquisición por parte de Microsoft (desarrolladora de Windows 7 Mobile) de Nokia (líder en telefonía celular) además de la compra realizada por Google (desarrolladora de Android basado en Linux) a la empresa Motorola Mobile (líder en telefonía celular), mientras que Apple tiene una amplia cobertura de mercado con su propio sistema operativo con sus productos Iphone, Ipad, Ipod, etc.<br />Lo anterior demuestra que la evolución de los sistemas operativos está enfocada hacia la computación en la nube y hacia la telefonía celular.<br /> ESTRUCTURA DE LOS SISTEMAS OPERATIVOS:<br />Cuando se habla de la estructura de los Sistemas Operativos, se hace referencia a éstos desde una mirada interna, sin embargo, se hace necesario también prestar atención a dos puntos importantes, al momento de su construcción, estos son: Los Requerimientos del Usuario y del Software, es decir, que el Sistema sea intuitivo, seguro, veloz y que cumpla con los objetivos para los cuales se utiliza, y además, se deben tener en cuenta los aspectos de mantenimiento, eficiencia, flexibilidad, respectivamente.<br />Clasificación de las Estructuras que puede tener un Sistema Operativo:<br />ESTRUCTURA MONOLÍTICA:<br />Es la estructura de los primeros sistemas operativos, donde generalmente se encuentra un solo programa compuesto de un conjunto de rutinas entrelazadas de tal forma que cada una puede llamar a cualquier otra.<br />Características:<br />No tiene estructura definida.<br />Elaborado a base de módulos o procedimientos compilados por separado, pero que pueden llamarse entre sí.<br />Hechos a Medida, por lo que son poco flexibles, tanto en cuando a ambientes de trabajo, como para el uso de otras aplicaciones.<br />Poca protección para entrar a rutinas que manejan recursos como la memoria.<br />Ejemplo: MS-DOS, Linux<br />MODELO DE ESTRUCTURA SIMPLE, PARA UN SISTEMA MONOLÍTICO:<br />49149017462500<br />ESTRUCTURA JERÁRQUICA O CON CAPAS:<br />Dado que las necesidades de los usuarios evolucionan, los sistemas operativos deben hacerlo también, con el tiempo, se requirió que el software fuese más organizado, así pues, que para este tipo de estructura, los sistemas se organizaron en forma de niveles, donde el sistema contenía sub-partes, y éstas a su vez, se comunicaban con el resto de elementos de una manera clara y definida.<br />Entre los primeros sistemas operativos, que tuvieron esta estructura podemos encontrar: <br />““THE” (Technische Hogeschool, Eindhoven), de Dijkstra, que se utilizó con fines didácticos. Se puede pensar también en estos sistemas como si fueran `multicapa’. Multics y Unix caen en esa categoría”.<br />98679016129000<br />En la actualidad, es este tipo de estructura se basan gran parte de los sistemas operativos. También suele verse a este tipo de sistemas como Sistemas de anillos o “rings”. En éstos, cada anillo tiene una apertura, conocida como puerta, por donde pueden entrar las llamadas de las capas inferiores. Así que, las Zonas más internas están más protegidas que las externas. <br />Ejemplo: OS/2<br />ESTRUCTURA DE MÁQUINA VIRTUAL:<br />En esta estructura de Sistema Operativo, se presenta una interfaz a cada proceso, mostrando una máquina similar, es decir, con su modo núcleo, usuario, entrada/salida, etc. exactamente como la máquina real que le subyace. En esta estructura, se bifurcan 2 conceptos, a los que normalmente se les encuentra unidos: la multiprogramación y la máquina extendida.<br />El Objetivo de estos sistemas es integrar varios Sistemas Operativos, para crear la sensación de tener diferentes máquinas.<br />El núcleo es denominado Monitor Virtual, su función es llevar a cabo la multiprogramación, presentando las máquinas virtuales necesarias y suficientes presentadas por los niveles superiores.<br />Una característica a destacar es que ese elemento central, que llamamos monitor de la máquina virtual, se ejecuta directamente sobre el hardware y además, soportan dispositivos periféricos virtuales.<br />Un ejemplo de este Sistema Operativo con esta estructura es “VM/370” de IBM:<br />66294020828000<br />ESTRUCTURA CLIENTE – SERVIDOR (MicroKernel):<br />Es la estructura de sistema operativo más reciente, y puede ser ejecutad en computadores pequeños o grandes. Se dice que es de propósito general, ya que es empleado para toda clase de aplicaciones y además cumple con las actividades de los anteriores sistemas operativos.<br />El núcleo es quien establece la comunicación entre el Servidor y sus clientes.<br />44386511684000<br />El proceso del usuario o proceso cliente, envía solicitudes a un proceso servidor, éste realiza el trabajo y regresa la respuesta.<br />Los servidores a su vez, se ejecutan como procesos en modo usuario, ya que no tienen acceso directamente al hardware y se aíslan manteniéndose al margen de los problemas.<br />Es necesario destacar, que esta estructura de sistema operativo se adapta para el uso en los sistemas distribuidos.<br />Ejemplo: Windows.<br />3.2.1 ADMINISTRACION DE RECURSOS<br />Los sistemas operativos tienen la función de administrar los recursos con los que cuenta la máquina sobre la cual se está ejecutando, dicha función consiste en dar prioridad a un programa en especial cuando dos programas se ejecutan y a la vez requieren el uso de un mismo recurso, como por ejemplo, memoria, tiempo de la Unidad Central de Proceso o una impresora.<br />Por otro lado, en un sistema multiusuario, generalmente se hace necesario compartir recursos, como dispositivos físicos o información y de manera simultánea, por lo que además de la prioridad en recursos, debe tenerse en cuenta aspectos tales como la seguridad, en el caso de información confidencial, los usuarios (persona, programa, computador) deben tener previa autorización para acceder a la información, y si son datos de dominio público, debe tenerse en cuenta su integridad, que no se pierdan, sin control.<br />En síntesis,  el sistema operativo debe estar pendiente de quién está usando y qué recursos; asignar recursos a quienes los necesite (siempre que quien solicita tenga permisos adecuados sobre el recurso); y controlar el uso correcto de recursos en caso de solicitudes conflictivas. <br />Además de lo anteriormente mencionado, hay sistemas operativos, especializados en administrar los recursos de redes de los sistemas informáticos, por lo podemos concluir que los sistemas operativos administran recursos de diferente índole, como hardware, software, información y redes.<br /> GESTIÓN DEL PROCESADOR<br />Los sistemas operativos gestionan la distribución que debe tener el procesador entre los distintos programas a través de un algoritmo de programación. El tipo de programador depende exclusivamente del sistema operativo, ya que varía según objetivo que se persigue.<br />Siendo un poco más específicos, hablamos que un sistema operativo necesita administrar o gestionar las actividades que de manera simultánea se realizan en la máquina, por lo que requiere hacer gestión del procesador que tiene, proporcionando primitivas para la creación, eliminación, activación y desactivación de procesos. Para cumplir con lo anterior, el sistema operativo debe tener información sobre todos y cada uno de los procesos del sistema, esto lo hace con bloques de control de proceso, que contienen: Número del proceso, estado, valor del contador ordinal, apuntador a la pila que se asocia al proceso, apuntador a la información I/O y la prioridad del mismo.<br />3.3.1 PLANEACIÓN Y DESPACHO<br />La Planeación es entendida como el conjunto de reglas para determinar el orden de ejecución de los procesos, también llamados threads.<br />Afecta a la ordenación de los procesos o threads cuando éstos se suspenden, son expulsados, se activan o llaman a una función que cambia la prioridad o la política.<br />El propósito de la planificación, puede variar, de acuerdo al tipo de sistema, por ejemplo:<br />En los sistemas de tiempo compartido, lo que se pretende es: <br />Repartir equitativamente el procesador.<br />Eficiencia: tiempos de respuesta promedio bajos.<br />Potencia de cálculo: procesar en promedio la mayor cantidad posible de actividades.<br />En los sistemas de tiempo real, el objetivo es:<br />Predictibilidad: tiempos de respuesta de peor caso acotados.<br />Urgencia: tiempos de respuesta de peor caso pequeños, para actividades muy urgentes.<br />Criticidad: hacer primero las actividades críticas<br />Veamos ahora algunos conceptos interesantes y necesarios de comprender en la planeación:<br />La Expulsión, es una característica de la planificación, ya que ésta puede ser expulsora o no; si lo es, una tarea (que tenga mayor prioridad) puede interrumpir a otra y desalojarla de la CPU. Si no lo es, cuando una tarea comienza continúa ejecutando hasta que voluntariamente cede la CPU.<br />La Prioridad, en la planeación se refiere a:<br />• Número asociado a cada proceso o thread y utilizado por la política de planificación, lo que significa que a mayor valor del número asociado, mayor prioridad.<br />• Prioridades fijas: corresponde a un número entero positivo que no cambia.<br />• Prioridades dinámicas: el valor cambia por sí solo.<br />Cuando hablamos de Plazo, nos referimos al instante de tiempo en el que una tarea debe haber terminado su actividad. El concepto de Plazo se usa como prioridad dinámica en la planificación de la siguiente manera: a menor plazo, mayor prioridad.<br />Al hablar de despacho, se hace referencia al conjunto de acciones que se llevan a cabo para comenzar la ejecución de una tarea o actividad.<br />Para entender mejor como se llevan a cabo los procesos de planificación y despacho, hay que por un lado, la planificación es llevada a cabo por un despachador, éste lo que hace es asignar la unidad central de proceso a uno a uno los procesos ejecutables del sistema, y por otro lado observar los diferentes niveles de la planificación, a saber:<br />35052018161000<br />ADMINISTRACIÓN DE PROCESOS<br />Aclaremos en primera instancia, aquello que entendemos por proceso, éste es una entidad activa que compite con otros por los recursos de la máquina, los sistemas operativos son los responsables de hacer seguimiento a todos éstos y las actividades o tareas que se generan a partir de ellos.<br />Los procesos son cargados en memoria y se ejecutan uno tras otros, son generados a su vez por la ejecución de programas.<br />La administración de procesos, consiste entre otras cosas, en determinar qué proceso se debe ejecutar y cuánto tiempo debe estar ejecutándose.<br />Un proceso tiene o transita por varios estados:<br />Nuevo: El proceso está siendo creado<br />En Ejecución: Se están ejecutando las instrucciones.<br />En espera: El proceso está esperando a que se produzca un suceso<br />Preparado: El proceso está a la espera de que se le asigne a un procesador<br />Terminado: Ha finalizado su ejecución.<br />El estado de Ejecución sólo admite un proceso a la vez, si hay otros a la espera, deben quedar en estado de listos o bloqueados, ya que ellos no tienen autonomía de pasar a ejecutarse, es el sistema operativo quien define cuando deben hacerlo.<br />9620253302000<br />Los procesos están representados en el sistema operativo en una estructura de datos, que almacena la información que se necesita saber sobre cada uno, llamada “BLOQUE DE CONTROL DE PROCESOS” o Descriptor de Procesos, a continuación se describen los elementos presentes en esta estructura:<br />• Estado del proceso: Determina la situación actual.<br />• Identificador de Proceso: Es un número positivo, denominado PID, y es el mismo durante la vida del proceso.<br />• Contador de programas: Contiene la dirección de la siguiente instrucción a ejecutar por el proceso.<br />• Registro de CPU: Varían en cuanto a número y tipo, dependiendo de la arquitectura de la computadora. Generalmente, almacenan información necesaria del proceso cuando se producen interrupciones como consecuencia de un cambio de estado, y así poder recuperarla para volver al estado original. Incluye acumuladores, registro de índices, punteros de pila y registros de propósito general. <br />• Información de planificación CPU: Incluye prioridad del proceso, apuntadores a colas de planificación, etc. (Información del algoritmo de planificación).<br />• Información de gestión de memoria: Incluye información acerca del valor de los registros base y limites, las tablas de paginación o tablas de segmentos, dependiendo del mecanismo de gestión de memoria.<br />• Información contable: Contiene información acerca de la cantidad de CPU y tiempos empleados, los límites de tiempo asignados, el número de trabajo o de proceso.<br />• Información del estado de E/S: Esta información incluye, solicitudes pendientes de E/S, dispositivos de E/S asignados al proceso, etc.<br />El sistema operativo debe gestionar dos tipos de procesos, los de usuario y los de sistema; los primeros son creados por el sistema operativo, los siguientes forman parte del propio sistema operativo y desempeñan algunas de sus labores características.<br />Para la administración de procesos, el sistema operativo, cumple con los siguientes requerimientos:<br />Debe intercalar la ejecución de procesos, con el fin de optimizar la utilización del procesador y a la vez ofreciendo buenos tiempos de respuesta.<br />Debe asignar los recursos con que cuenta el sistema a los procesos que se ejecutan sobre él, cumpliendo con una política que evite situaciones de inter-bloqueo.<br />Puede dar soporte a la comunicación entre procesos y ofrecer mecanismos para su creación y terminación.<br /> GESTIÓN DE MEMORIA<br />Uno de los aspectos principales que hace imprescindible la utilización de un sistema operativo es la gestión de la memoria. Pues la memoria física se ha construido con mucho potencial pero si el sistema operativo realiza una mala administración de la misma se va a desperdiciar el potencial con que fue construida la memoria física.<br />La gestión de memoria por parte de un sistema operativo incluye los siguientes aspectos: <br />“La carga de programas y su ubicación. Hay que establecer la correspondencia entre las direcciones lógicas del programa y su ubicación física en memoria.<br />La presencia simultánea de más de un programa en memoria.<br />La posibilidad de cargar rutinas en tiempo de ejecución (rutinas de enlace dinámico).<br />La compartición de espacios de memoria por varios programas.<br />La ejecución de programas que no caben completos en memoria.<br />La gestión eficiente del espacio de memoria libre.”<br />A través de los años los sistemas operativos han satisfecho estas necesidades. Entre las características que debe administrar un sistema operativo están:<br />Número de Programas: Determinar cuántos programas pueden estar simultáneamente en memoria.<br />Permanentes o no permanentes: Determinar si los programas pueden entrar y salir durante su ejecución.<br />Contiguo o no contiguo: Determinar si un programa debe ocupar posiciones contiguas de memoria.<br />Entero o no entero: Determinar si un programa puede ser ejecutado solo con cargarse parcialmente.<br />Inicialmente los sistemas operativos solo permitían uso de programas cargados completamente, además debían ser contiguos y permanentes con un número bastante limitado de programas en memoria. Pero estos aspectos se han ido perfeccionando. Entre las distintas características de la gestión de memoria por parte de los sistemas operativos están:<br />Partición: La memoria es divida en particiones de tamaño establecidos y posteriormente a los programas se les asigna una de estas particiones. Estas particiones pueden ser fijas o variables, la primera se caracterizan por asignar un espacio de memoria rígido pero ocasionan un desperdicio de memoria por los huecos que quedan, pues un programa puede que utilice menos memoria de la que se le ha asignado. Las particiones variables se caracterizan porque tratan de llenar estos huecos con una asignación de espacio variable que permite optimizar la memoria.<br />Swapping: Consiste en mover programas entre la memoria principal y secundaria. Durante la ejecución los programas puede salir o entrar a la memoria. Esto genera una mejor administración de la memoria pues la utilización del espacio es más eficiente y puede desencadenar en la multiprogramación. Para poder realizar su objetivo el swapping utiliza espacio para el almacenamiento secundario donde va a colocar temporalmente los datos que se encuentran en la memoria principal, de esta forma permite que varios programas utilicen los mismos campos de la memoria principal lo que acorta los tiempos de espera de un programa para ser ejecutado.<br />Paginación y segmentación: Como la ubicación de los datos de un código en memoria no son contiguos se debe poder reconocer estos datos por separados que estén. La paginación es la división del programa en páginas del mismo tamaño lo que permite la posterior recuperación de los datos. Además de esta técnica se utiliza la segmentación que consiste en dividir los programas, no en partes iguales, sino en unidades lógicas (código, pilas, datos, etc.) que se llaman segmentos, esta división permite la paginación dinámica de los programas.<br />Marco de página: Para poder identificar donde se encuentran las partes de un programa se guardan las direcciones físicas en una tabla que es asociado al programa.<br />Gestión: Cuando se realiza paginación es probable que ocurra fragmentación por lo que se utiliza comúnmente la segmentación que permite que varios programas compartan páginas con intereses comunes ahorrando espacio en memoria. <br />Sistemas Combinados: Es la combinación de la paginación y la segmentación. Consiste en ubicar los segmentos en páginas (segmentación paginada) o ubicar las páginas en segmentos (paginación segmentada).<br />Enlace Dinámico: Consiste en dividir los programas en varios módulos, pero que solo se cargan en la memoria cuando ese modulo del programa realmente se va a utilizar, todo esto se logra de forma transparente al usuario. Cuando se va a utilizar un módulo se realiza el llamado a dicho modulo y solo es cargado esta sección del programa. <br />Memoria Virtual: Es un sistema de paginación donde solo es cargado un subconjunto del programa y el resto del mismo reside en un almacenamiento secundario. Esto permite que el sistema operativo pueda ejecutar programas mayores a los de su memoria física disponible. Para poder tener una memoria virtual se requiere varios elementos, los dos más sobresalientes son:<br />Carga de programas y reubicación: Tablas con las direcciones físicas de los segmentos y paginaciones del programa.<br />Reemplazo de página: Cuando se requiere desocupar un espacio de memoria este algoritmo elige el programa saliente.<br />CONCURRENCIA<br />Los humanos tenemos la facultad de realizar varias actividades al tiempo e inclusive realizar acciones simultáneamente. Las computadoras en un principio fueron concebidas para realizar acciones y procesar programas de forma secuencial. Con el tiempo los sistemas han evolucionado, lo que ha modificado esta forma de procesar los programas, pues ya se pueden ejecutar o realizar varias acciones de forma simultánea en una sola computadora inclusive con una sola CPU, a esta característica se le denomina concurrencia.<br />La concurrencia se produce cuando dos programas coinciden en la ejecución en el mismo intervalo de tiempo. Estos programas se caracterizan por ser independientes y por utilizar un espacio de memoria independiente.<br />Pero no solo se pueden ejecutar programas de forma simultánea sino que también los hilos (threads) son de control independiente. Por lo tanto los programas y aplicaciones se pueden convertir en un conjunto de procesos e/o hilos. A estos programas se les denomina aplicación concurrente ya que tienen características particulares donde varía el diseño, la implementación, la depuración, entre otros.<br />Para poder lograr la concurrencia es muy importante que el sistema operativo pueda soportar el concepto de hilos y que los programas a ejecutar estén diseñados con esta técnica.<br />Los sistemas operativos de las computadoras multiprocesador no tienen necesariamente que soportar concurrencia pues cada procesador se puede encargar de un solo proceso.<br />Los sistemas operativos convencionales deben tener las siguientes características:<br />“El sistema operativo debe seguir a los distintos procesos activos <br />El sistema operativo debe asignar y retirar los distintos recursos a cada proceso activo, entre estos se incluyen:<br />Tiempo de procesador <br />Memoria<br />Archivos <br />Dispositivos de E/S<br />El sistema operativo debe proteger los datos y los recursos físicos de cada proceso contra injerencias no intencionadas de otros procesos.<br />Los resultados de un proceso deben ser independientes de la velocidad a la que se realiza la ejecución de otros procesos concurrentes.”<br /> GESTIÓN DE ARCHIVOS/ENTRADA/SALIDA<br />La gestión de archivos es uno de los módulos más grandes que tiene un sistema operativo pues se encarga de monitorear los campos libres que se encuentran en la memoria (producto de las asignaciones dinámicas) para realizar asignaciones y designaciones de espacio de disco. Además es el encargado de administrar la información, es decir el acceso, la verificación y la manipulación a la misma. <br />Entre las principales funciones que cumple un gestor de archivos en un sistema operativo están:<br />Crear y eliminar un archivo<br />Crear y eliminar un directorio<br />Facilitar la manipulación de archivos y directorios<br />Mapear los archivos alojados en el almacenamiento secundario<br />Respaldar archivos en medio de almacenamientos estables<br />Para cumplir con lo anterior se debe tener una correcta manipulación de la memoria lo que implica incluir módulos de gestión de archivos muy potentes y robustos. Sin embargo este módulo era muy pesado y muy rígido por lo que se resolvió este problema diseñando “un método más estructural. En particular el sistema de archivo se implementa habitualmente en forma de varias capas, cada una de las cuales proporciona su propia abstracción de los dispositivos de almacenamiento secundarios. Las capas inferiores de esta estructura, tal como las rutinas de dispositivos, conoce explícitamente las características físicas de los dispositivos.” Mientras que las capas superiores operan con dispositivos virtuales que tienen las características de los dispositivos físicos reales. <br />El sistema operativo también debe ejercer de vínculo entre las aplicaciones y los dispositivos periféricos, es decir el hardware.<br />Para que un dispositivo conectado a la computadora sea utilizado el sistema operativo debe haberlo reconocido, es decir debe reconocer que dispositivo es, como se utiliza, que aplicaciones pueden tener acceso a ellas y demás datos. Para esto los sistemas operativos hacen uso de los llamados drivers (controladores) que tienen almacenados todos estos datos, por lo que si se le solicita al sistema utilizar el dispositivo este debe hacer uso del driver de este dispositivo y servir de vínculo. <br />En la actualidad varios sistemas operativos traen incluidos algunos drivers por defectos de los dispositivos más comunes, pero por lo general es necesario instalar el driver seguido del dispositivo al cual pertenece.<br /> SISTEMAS OPERATIVOS MULTIPROCESADORES<br />A pesar de las mejoras que se implementaron en los sistemas monoprocesador, para la evolución del software no fue suficiente, por lo que se optó por la creación de los sistemas multiprocesadores, fue una mejor solución que seguir aplicando mejoras, más sencilla y con mejor costo-prestaciones, por otro lado, estos sistemas permiten explotar el paralelismo.<br />Llamamos multiprocesador a un computador que cuenta con dos o más microprocesadores y los correspondientes sistemas operativos multiprocesadores deben estar en capacidad de administrar tales recursos de manera óptima.<br />Gracias al sistema multiprocesador, varios hilos de un mismo proceso o diferentes procesos se pueden ejecutar a la vez, sin embargo puede presentarse el problema que dos procesos interfieran entre sí al ejecutarse, por ejemplo en las lecturas y escritas en memoria. Dado que un sistema multiprocesador tiene más de una CPU compartiendo memoria y dispositivos periféricos, tiene ventajas en cuanto a potencia y fiabilidad, ya que asignan tareas específicas a cada procesador, y éstos a su vez trabajan en una relación maestro/esclavo, donde uno tiene control y los otros esperan la instrucción a seguir o tienen tareas ya predefinidas.<br />Un sistema operativo de Multiprocesadores y multiprogramación tiene las siguientes capacidades funcionales:<br />Protección de tablas y conjuntos de datos.<br />Asignación y administración de recursos.<br />Prevención contra el ínter bloqueo del sistema.<br />Terminación anormal.<br />Equilibrio de cargas de Entrada / Salida.<br />Equilibrio de carga del procesador.<br />Reconfiguración.<br />Equilibrio de cargas de Entrada / Salida, Equilibrio de carga del procesador y Reconfiguración tienen una importancia especial pues permite explorar el paralelismo en el hardware y en los programas y se hace automáticamente.<br />Organización Sistemas Operativos Multiprocesadores:<br />Maestro / Satélite - Es la organización más sencilla.<br />No alcanza el uso óptimo del hardware dado que sólo el procesador maestro puede ejecutar el Sistema Operativo y el (o los) procesador (es) satélite(s) sólo puede(n) ejecutar programas del usuario.<br />Las interrupciones generadas por los procesos en ejecución en los procesadores satélites que precisan atención del Sistema Operativo deben ser atendidas por el procesador maestro y por ello pueden generarse largas colas de procesos pendientes.<br />Ejecutivos Separados - Cada procesador tiene su propio Sistema Operativo. <br />Existen tablas de control con información global de todo el sistema (por ejemplo, lista de procesadores conocidos por el Sistema Operativo) a las que se debe acceder utilizando exclusión mutua.<br />Los procesadores no cooperan en la ejecución de un proceso individual, es más confiable que la organización Maestro/Satélite.<br />Tratamiento Simétrico - Es la organización más complicada de implementar y también la más poderosa y confiable.<br />El Sistema Operativo administra un grupo de procesadores idénticos, donde cualquiera puede utilizar cualquier dispositivo de Entrada / Salida y cualquiera puede referenciar a cualquier unidad de almacenamiento.<br /> SISTEMAS OPERATIVOS DISTRIBUIDOS<br />Los sistemas operativos distribuidos cumplen el mismo objetivo que los sistemas operativos corrientes pero operando sobre un entorno distribuido.<br />Un entorno distribuido es la utilización de muchas computadoras organizadas en racimos que están asociados a una misma infraestructura que permiten realizar procesos como si fuera una sola computadora. Estos sistemas distribuidos son utilizados mayoritariamente en el área científica y matemática pues permite una ejecución y manipulación de enormes cantidades de datos.<br />Los sistemas operativos distribuidos permiten acceder a recursos remotos como si fueran recursos locales. Además traen algoritmos que permiten distribuir el trabajo entre todos los procesadores y memorias disponibles, esto último aumenta la complejidad del sistema operativo. Todas estas características anteriores deben ser totalmente transparentes, pues el usuario no debe percibir en donde se encuentra alojado el recurso utilizado o si se está utilizando un procesador remoto.<br />Estos sistemas deben ser necesariamente confiables y estables pues si se está utilizando un procesador o un recurso remoto y esta computadora falla o no responde de forma adecuada, todo el proceso debe continuar sin mayores contratiempos.<br />Entre los sistemas operativos distribuidos están:<br />Sprite<br />Solaris-MC<br />Mach<br />Chorus<br />Spring<br />Amoeba<br />Taos<br />Por lo anterior los sistemas distribuidos sobresalen por tener: transparencia, eficiencia, flexibilidad y confiabilidad.<br />Existen dos tipos de sistemas distribuidos que son:<br />Fuertemente Acoplados: Son los sistemas operativos distribuidos que comparten un reloj global y una sola memoria para todas las computadoras.<br />Débiles: Son los sistemas operativos distribuidos que no comparten una sola memoria para todas las maquinas asociadas. Además cada computadora hace utilización de su propia memoria para llevar a cabo sus cálculos.<br /> SISTEMAS OPERATIVOS TIEMPO REAL/EMBEBIDOS<br />Los sistemas operativos de tiempo real, fueron diseñados para aplicaciones basadas en tiempo real, por lo que su principal restricción tiene que ver con el tiempo, además que debe ser determinista, lo que significa que al ser ejecutado con los mismos datos en cualquier otro momento debe dar el mismo resultado o respuesta.<br /> CARACTERÍSTICAS <br />No se precisa mucha memoria para su ejecución. <br />Fiabilidad. <br />Capacidad de interactuar con el usuario. <br />Cualquier cambio en el hardware puede hacer que se inicialice alguno de sus comandos. <br />Sensibilidad. <br />Tiempo de respuesta predecible para eventos electrónicos. <br />Determinista. <br />Multi-arquitectura, es decir, que puede funcionar con distintos tipos de CPU. <br />Tolerancia a los fallos del sistema. <br />99441032321500ARQUITECTURA DE UN SISTEMA OPERATIVO DE TIEMPO REAL<br />La memoria física de un ordenador está divida en dos partes: Espacio para el usuario y espacio para el kernel. El kernel multitarea puede manejar múltiples aplicaciones del usuario, que se ejecutan en el espacio reservado para tal fin y les hacen creer que disponen de toda la memoria física y de todo el hardware Las operaciones entre los programas que se encuentran en el espacio del usuario y el espacio kernel se realizan mediante las llamadas al sistema. Éstas llamadas se hacen para acceder a recursos físicos compartidos por las dos partes de la memoria. El kernel controla el acceso al hardware del sistema y por ello los programas del espacio de memoria destinado al usuario no conocen los detalles físicos de estas máquinas.<br />Ejemplos de Sistemas Operativos de Tiempo real:<br /> QNX <br /> LynxOS <br /> Redhat Embedded Linux <br /> SOOS <br /> Ubuntu Studio (Linux) <br /> VxWorks <br /> Windows CE <br /> Linchos <br /> UNIX <br />Un sistema operativo embebido es un programa que se ejecuta continuamente en un dispositivo, facilitando el uso de éste y brindando una capa de abstracción a los usuarios, también se encarga de la administración de los recursos. <br />Los sistemas operativos embebidos se ejecuta sobre un sistema embebido, éstos a su vez se entienden como una combinación de hardware y software de computadora, sumados a piezas mecánicas o de otro tipo y que son diseñados para cumplir con una función específica; generalmente estos dispositivos se usan sin darse cuenta que hay un procesador y un programa ejecutándose que les permite funcionar.<br />Algunos ejemplos de sistemas embebidos son: los sistemas de frenos o el sistema de inyección de combustible en automóviles actuales, televisores, hornos microondas, teléfonos móviles. Esta combinación de software y hardware puede ser reemplazada en muchos casos por un circuito integrado que realice la misma tarea. Pero una de las ventajas de los sistemas embebidos es su flexibilidad. Ya que a la hora de realizar alguna modificación resulta mucho más sencillo modificar unas líneas de código al software del sistema embebido que reemplazar todo el circuito integrado.<br />Algunas definiciones alternativas de sistemas operativos embebidos se listan a continuación:<br />• “Algunos sistemas embebidos incluyen un sistema operativo, que se conoce como sistema operativo embebido. Este puede ser un sistema de software muy pequeño desarrollado específicamente para ser usado con un algún sistema embebido en particular, o en ocasiones puede ser una versión reducida de algún sistema operativo que se utiliza en una computadora de propósito general” [The Linux Information Project (LINFO). “Embedded System Definition”. 2006. <br />http://www.linfo.org/embedded_system.html].<br />• “Un sistema operativo es definido como una capa de software que permite multiplexar abstracciones de hardware como: memoria volátil, ciclos de procesador, dispositivos de entrada salida, etc., para los programas de aplicación. Un sistema operativo embebido debe realizar las operaciones expuestas anteriormente, pero en un ambiente donde los programas de aplicaciones poseen numerosas restricciones, particularmente en cuanto a consideraciones de tiempo y energía” [Chen-Mou, C. “An Operating System Architecture for Embedded Systems – Design and Implementation”. Department of Electrical Engineering. National Taiwan University. 1998.].<br />• “Un sistema operativo para un sistema embebido usualmente es diseñado para una aplicación específica, y por lo tanto es más estático que un sistema operativo de propósito general” [Friedrich, L. “A Survey on Operating System Support for Embedded Systems Properties”. Departamento de Informática e Estatística].<br />ARQUITECTURA DE UN SISTEMA OPERATIVO EMBEBIDO<br />Los sistemas operativos embebidos usan una arquitectura de microkernel o modular, por lo que son adaptables a los requerimientos de las diferentes aplicaciones.<br />MicroprocesadorEs el encargado de realizar las operaciones de cálculo principales del sistema. Ejecuta código para realizar una determinada tarea y dirige el funcionamiento de los demás elementos que le rodean.<br />MemoriaEn ella se encuentra almacenado el código de los programas que el sistema puede ejecutar así como los datos. Su característica principal es que debe tener un acceso de lectura y escritura lo más rápido posible para que elmicroprocesador no pierda tiempo. Al ser volátil el sistema requiere de un soporte donde se almacenen los datos incluso si no se dispone de alimentación o energía.<br />Disco duro<br />En él la información no es volátil y además puede conseguir capacidades muy elevadas. Pero su excesivo tamaño a veces lo hace inviable para PCs embebidos, con lo que se requieren soluciones como discos de estado sólido. Existen en el mercado varias soluciones de esta clase (DiskOnChip, CompactFlash, IDE Flash Drive, etc.) con capacidades suficientes para la mayoría de sistemas embebidos.<br />Plataformas<br />QNX contiene un microkernel muy pequeño rodeado por un conjunto de procesos cooperantes, que proveen servicios de alto nivel. El microkernel de QNX implementa cuatro servicios: 1) Comunicación entre procesos. 2) Comunicación de red a bajo nivel. 3) Planificación de procesos. 4) Manejo de interrupciones. Los procesos de servicio de sistema operativo son opcionales, y el usuario puede elegir cuales son necesarios para sus aplicaciones.<br />La arquitectura de Windows CE es jerárquica. En el fondo se encuentran los drivers del dispositivo. Sobre ellos está el subsistema de gráficos, ventanas y eventos, el kernel y la pila de comunicaciones. Sobre el kernel se ubica el sistema de archivos. Las aplicaciones se ejecutan en su propio espacio de direcciones e interactúan con el resto de Windows CE vía llamadas al API de Win32.<br />Linux embebido posee una estructura en capas complementada con módulos. Estas capas generalmente son el kernel de Linux, el sistema de archivos, los drivers de dispositivos y los protocolos de red. Linux embebido toma el kernel de Linux y extrae los módulos que no son necesarios. Dentro de la capa del kernel, Linux embebido está compuesto de cinco grandes subsistemas: el planificador de procesos, el manejador de memoria, el sistema de archivos virtual, la interfaz de red, y la comunicación entre procesos.<br />RESUMEN DEL TRABAJO<br />Los sistemas operativos nacieron de la necesidad de optimizar los recursos tecnológicos con los que cuenta la humanidad, además de hacer más amigable y fácil el entorno de trabajo sobre máquinas (hardware), evidentemente el surgimiento de estos sistemas inmateriales significó un cambio drástico en la relación usuario máquina, ya que el primero, pudo delegar la administración del hardware a un sistema operativo, que finalmente se volvió transparente.<br />A la par que las estructuras físicas evolucionaron, también lo hicieron las lógicas, en primera instancia, reconocemos que la historia en cuanto a sistemas es relativamente reciente al compararse con otros campos del saber, para estudiarla y comprenderla mejor, se ha optado por dividirla en generaciones, de esta manera ver los avances y logros alcanzados es fácil, por las características que los sistemas compartían en cada generación; comenzamos pues, por referenciar a Charles Babbage, quien fue el primero en diseñar una computadora, aunque no pudo construirla. En la historia que respecta a los sistemas operativos, la primera generación empezó en el año 1950 con un sistema que asociaba los trabajos o las tareas por lotes lo que permitía reducir el tiempo entre la transición de una tarea a otra, como el desarrollado por la General Motors para la computadora IBM 701. Los programas se escribían en papel utilizando FORTRAN o lenguaje ensamblador y posteriormente se pasaban a unas tarjetas que eran perforadas y que reconocía la computadora. La segunda generación de sistemas operativos data del año 1960 donde estos sistemas tienen multiprogramación y multiprocesamiento, por lo que pueden cargar varios programas en el almacenamiento principal e integran varios procesadores en una sola computadora. La tercera generación comenzó en 1964 cuando IBM lanza su línea de computadoras Sistema/360. En la cuarta generación (iniciada en 1970), los fabricantes de sistemas operativos empezaron a interesarse por que sus sistemas fueran transparentes para el usuario. Además se crean los conceptos de máquina virtual, bases de datos y en la actualidad ya hablamos de sistemas operativos enfocados al servicio es decir en la denominada nube.<br />El diseño de los sistemas operativos al pasar por cada una de las anteriores etapas ha cambiado, en orden de historicidad hablamos de sistemas con estructura Monolítica, en Capas, de Micronúcleo y Cliente/Servidor, dichas estructuras ha respondido a requerimientos del momento histórico en que fueron creadas. <br />Los sistemas operativos deben cumplir con ciertas funciones independientemente de la estructura que subyace a ellos, como lo son: <br />La administración de recursos: consiste en gestionar los recursos con los que cuenta la máquina, debe dar prioridad a un programa cuando se ejecutan varios a la vez y requieren el uso de un mismo recurso, como por ejemplo, memoria, tiempo de la Unidad Central de Proceso o una impresora.<br />La gestión del procesador: Se refiere a la gestión sobre la distribución que debe tener el procesador entre los distintos programas a través de un algoritmo de programación, y las actividades que de manera simultánea se realizan en la máquina, proporcionando primitivas para la creación, eliminación, activación y desactivación de procesos<br />La planeación y despacho: La Planeación es el conjunto de reglas para determinar el orden de ejecución de los procesos, mientras el despacho, se hace referencia al conjunto de acciones que se llevan a cabo para comenzar la ejecución de una tarea o actividad.<br />Administración de procesos: consiste entre otras cosas, en determinar qué proceso se debe ejecutar y cuánto tiempo debe estar ejecutándose.<br />La gestión de la memoria: incluye la carga de programas y su ubicación, la presencia simultánea de programas en memoria, la posibilidad de cargar rutinas en tiempo de ejecución, compartir espacios de memoria por varios programas, la ejecución de programas que no caben completos en memoria, la gestión eficiente del espacio de memoria libre.<br />El manejo de la concurrencia: Se produce cuando dos programas coinciden en la ejecución en el mismo intervalo de tiempo. Estos programas se caracterizan por ser independientes y por utilizar un espacio de memoria independiente.<br />La gestión de archivos, entrada/salida: se encarga de crear y eliminar un archivo o un directorio, facilitar la manipulación de archivos y directorios, mapear los archivos alojados en el almacenamiento secundario, respaldar archivos en medio de almacenamiento estables, monitorear los campos libres que se encuentran en la memoria para realizar asignaciones y designaciones de espacio de disco.<br />Los sistemas operativos se clasifican de diferentes maneras, teniendo en cuenta aspectos como su uso o aplicación, las plataformas para las cuales fueron creados, y en general cualquier clasificación que se quiera dárseles, siempre y cuando cumplan con características determinantes al grupo en el que se les vaya a referenciar. A continuación se mencionarán al menos tres clasificaciones:<br />Sistemas Operativos Multiprocesadores: Son sistemas operativos que nacen para optimizar los recursos de los sistemas multiprocesador, que son quieres tienen varias CPU compartiendo recursos como la memoria y dispositivos periféricos, su manera de organizarse para administrar el hardware asume tres posturas, respecto a los procesadores con que cuenta: Maestro/Satélite, Ejecutivos Separados, Tratamiento Simétrico.<br />Sistemas Operativos Distribuidos: son sistemas operativos cumplen el mismo objetivo que los sistemas operativos corrientes pero operando sobre un entorno distribuido. Un entorno distribuido es la utilización de muchas computadoras organizadas en racimos que están asociados a una misma infraestructura que permiten realizar procesos como si fuera una sola computadora.<br />Sistemas Operativos de tiempo real/embebidos: fueron diseñados para aplicaciones basadas en tiempo real, por lo que su principal restricción tiene que ver con el tiempo, No se precisa mucha memoria para su ejecución, son fiables y tienen la capacidad de interactuar con el usuario. Por otro lado, Un sistema operativo embebido es un programa que se ejecuta continuamente en un dispositivo, facilitando el uso de éste y brindando una capa de abstracción a los usuarios.<br />CONCLUSIONES Y OBSERVACIONES<br />Los sistemas operativos y el hardware sobre el que se ejecutan éstos, con el paso del tiempo ha evolucionado, adaptándose a las necesidades de la sociedad.<br />Dado que los sistemas operativos deben administrar recursos, tienen una serie de importantes tareas, como administrar tanto a los procesos, como el procesador, la memoria, la concurrencia, los archivos, entre otros, todo esto debe tener una armonía para el buen funcionamiento de todo el sistema.<br />Los sistemas embebidos están presentes en nuestro entorno e interactuamos con ellos constantemente, pero su transparencia es tal, que no nos percatamos de ello.<br />Los sistemas de tiempo real están muy presente en nuestras vidas (Teléfonos móviles, aviones), pues está pensando como un método de interacción entre usuario y máquina, dispuesto a satisfacer las necesidades, de una manera efectiva en cuanto a tiempo y confiabilidad.<br />BIBLIOGRAFÍA<br />A continuación se encuentra la bibliografía de esta compilación bibliográfica con temas relacionados con los Sistemas Operativos, referenciando a cada tema que se trató.<br />Introducción<br />Historia y Evolución de los Sistemas Operativos<br />http://es.wikipedia.org/wiki/Gary_Kildall<br />http://www.torrealday.com.ar/articulos/articulo005.htm<br />http://www.mitecnologico.com/Main/HistoriaEvolucionSistemaOperativo<br />Conceptos y visión general de los Sistemas Operativos<br />http://www.mitecnologico.com/Main/HistoriaEvolucionSistemaOperativo<br />http://www.bbc.co.uk/mundo/ciencia_tecnologia/2010/05/100526_0117_apple_microsoft_valor_mercado_jg.shtml<br />Estructura de los Sistemas Operativos<br />http://www.mitecnologico.com/Main/EstructurasDeSistemasOperativos<br />http://exa.unne.edu.ar/depar/areas/informatica/SistemasOperativos/SO1.htm#ESO (Las imágenes, fueron tomadas de éste último link)<br />Administración de recursos<br />http://www.euram.com.ni/pverdes/verdes_informatica/informatica_al_dia/que_es_un_so_144.htm<br />http://www.slideshare.net/helmer614/sistemas-operativos-1802129<br />Gestión del procesador<br />http://es.kioskea.net/contents/systemes/sysintro.php3<br />http://www.agendistas.com/computadoras/administracion-procesador.html<br />Planeación y despacho<br />http://www.ctr.unican.es/asignaturas/so/cap5-2en1.pdf<br />http://wwwdi.ujaen.es/~lina/TemasSO/PLANIFICACIONDEPROCESOS/1NivelesdePlanificacion.htm<br />http://wwwdi.ujaen.es/~lina/TemasSO/PLANIFICACIONDEPROCESOS/1NivelesdePlanificacion.htm (Imagen tomada de este link)<br />Administración de Procesos<br />http://www.slideshare.net/omarhcc/gestion-de-procesos-en-sistemas-operativos-presentation (Imagen tomada de este link)<br />http://www.youblisher.com/p/105203-Tema-3/<br />http://blogs.utpl.edu.ec/sistemasoperativos/2009/04/27/gestion-de-procesos-2/<br />Gestión de Memoria<br />http://www.sc.ehu.es/acwlaroa/SO2/Apuntes/Cap4.pdf<br />Concurrencia<br />http://ubuntuone.com/p/1Amt/<br />http://exa.unne.edu.ar/depar/areas/informatica/SistemasOperativos/MonogSO/CONCEM02.htm<br />http://www.webprogramacion.com/43/sistemas-operativos/concurrencia-de-procesos.aspx<br />http://elvex.ugr.es/decsai/java/pdf/E0-intro.pdf<br />Gestión de Archivos/Entrada/Salida<br />http://pepemorales.galeon.com/Doc/ssoo_9.htm<br />http://es.kioskea.net/contents/systemes/sysintro.php3<br />http://www.slideshare.net/hmcampoverde/sistema-operativosarchivos<br />Sistemas operativos multiprocesadores<br />http://es.scribd.com/doc/50574044/12/Evolucion-de-los-Sistemas-Operativos-Multiprocesadores<br />http://es.scribd.com/doc/33611730/Multiprocesadores<br />http://icaro.eii.us.es/descargas/Sistemas%20Multiprocesadores%202004-2005.pdf<br />http://www.mitecnologico.com/Main/SistemasOperativosDelMultiprocesador<br />Sistemas operativos distribuidos<br />http://www.monografias.com/trabajos6/sidi/sidi.shtml<br />Sistemas operativos tiempo real/embebidos<br />http://www.google.com.co/url?sa=t&source=web&cd=4&ved=0CDcQFjAD&url=http%3A%2F%2Fwww.portaltecnicofp.com%2Findex.php%2Fdescargas%2Fdoc_download%2F129-sistemas-operativos-en-tiempo-real&rct=j&q=sistemas%20operativos%20tiempo%20real&ei=udpJTqOqFM2Ctgec97SlCg&usg=AFQjCNE2Du-cvuLGXGq2D5LbLMQ0IN2ONQ&sig2=3Q0_eJjymst4UsfOdUU34g&cad=rja (Imagen tomada de este link)<br />http://jeammy.wordpress.com/2009/02/18/sistemas-operativos-en-tiempo-real/<br />http://gnujavier.blogspot.com/2011/06/sistemas-operativos-embebidos.html<br />http://www.google.com.co/url?sa=t&source=web&cd=4&ved=0CDsQFjAD&url=http%3A%2F%2Fwww.ciens.ucv.ve%2Fescueladecomputacion%2Fdocumentos%2Farchivo%2F88&rct=j&q=sistemas%20operativos%20embebidos&ei=C9xJTvrtLcujtgf7x4GbCg&usg=AFQjCNHRsGaovLKLg1AULkwWwJtig0P67Q&sig2=NRVm-mndHuIFOZHVOxuzyA&cad=rja<br />