modulo de sistemas operativos

Anuncio
UNIVERSIDAD ESTATAL DE BOLÍVAR
FACULTAD DE CIENCIAS DE LA EDUCACIÓN, SOCIALES, FILOSÓFICAS Y HUMANÍSTICAS
CONOCIMIENTOS BASICOS DE UN PC.
INFORMATICA Es un conjunto de métodos y técnicas aplicadas al tratamiento de la información automatizada.
El objetivo de la Informática es:
 Organización  Almacenamiento
 Transformación
 Transmisión
COMPUTACION
Es el conocimiento de diferentes programas y aplicaciones que presta el computador para su manejo. Además es el campo de acción de la Informática.
HARDWARE
Es la parte tangible del computador, es decir es la parte física que se puede ver tocar y palpar con nuestras manos. S O F T W A R E
Es la parte lógica del Pc, es decir son todos los programas.
EVOLUCION DEL SOFTWARE
ETAPAS DE LA EVOLUCION DEL SOFTWARE
1955­1965
1965 ­ 1975
1975 ­ 1985
1985­1995
Programación a gran escala
Programación orientada a Objetos
Programación a cualquier modo
Programación a pequeña escala
Programas Pequeños
Multiprogramación
Crisis del Software
Tecnología orientada a objetos
Tiempo Real
Procesamiento Conforme nos movemos Orientación por lotes
UNIVERSIDAD ESTATAL DE BOLÍVAR
FACULTAD DE CIENCIAS DE LA EDUCACIÓN, SOCIALES, FILOSÓFICAS Y HUMANÍSTICAS
Distribuido
Se realizaba sin planificación
Distribución limitada
Software a medida
No documentación
Base de Datos
Software como producto
Actividades de Mantenimiento
Redes de Area Local y Global
en esta era continúan creciendo los problemas de Software por computadora
Hardware desplaza al software
Costo Bajo de Pcs
La capacidad de dar mantenimiento amenazada
Generación de microprocesadores
La capacidad de Construir software no explota todo el potencial del Hardware disponible
Mantenimiento costoso Venta de centenares de copias de Software
TIPOS DE SOFTWARE
Los tipos de software se pueden clasificar en tres grandes áreas:
Software de Sistema
Es el que se encarga de gobernar la computadora. Tiene dos grandes funciones claramente diferenciadas:
 La primera de ellas es la de facilitar al usuario la manipulación de la computadora, mediante una serie de instrucciones denominados comandos. Si se quiere, por ejemplo, leer un disco, no hay que indicar a la computadora que encienda el motor de la disquetera y que vaya a la pista 23 del disco para buscar la información, sino que, a través de un comando de lectura en disco, es el software de sistema el que se encarga de todas estas operaciones sin que el usuario se de cuenta.
 También se encarga de gestionar los recursos (memoria, espacio en disco, etc.) de la computadora, de forma que se mejore su explotación. Esto quiere decir que será el software de sistema el que tome decisiones sobre qué programa se ejecutará, dónde se grabarán los datos o quién usará la impresora y en qué momento, etc., siempre con la intención de mejorar el uso de esos recursos.
La parte más importante dentro de esta clase de software es el Sistema Operativo, verdadero centinela y patrón de la computadora.
UNIVERSIDAD ESTATAL DE BOLÍVAR
FACULTAD DE CIENCIAS DE LA EDUCACIÓN, SOCIALES, FILOSÓFICAS Y HUMANÍSTICAS
Software de Desarrollo
Esta categoría abarca el software que permite construir software. Puesto que son un conjunto de herramientas que traducen, detectan errores, optimizan, etc., los programas escritos por el usuario al lenguaje de las computadoras.
Software de Aplicaciones
Dentro de esta categoría se incluye todo aquel software que permite editar gráficos y textos, manejar una base de datos, llevar el control de la facturación o la contabilidad de una empresa, etc. Generalmente, estos son los programas mas empleados por los usuarios, ya que resuelven muchas de sus necesidades. Los grupos más representativos dentro esta área son:
 Software de Ofimática: Son aquellos programas que son útiles dentro de una oficina, como Editores de Texto, Hojas de Calculo y pequeños gestores de Bases de Datos.
 Software de Edición; y Diseño Gráfico: Este es un software orientado a la creación y edición de gráficos. El más representativo de este software es el CAD (“ Diseño Asistido por Computadora), herramienta de arquitectura e ingeniería que sustituye la mesa de dibujo por la pantalla de la computadora.
 Software de Gestión Empresarial: Software para la mecanización de procesos de facturación, de gestión de nóminas, de gestión de almacenes, de planificación de recursos y de estimación y control de proyectos.
 Software de Ingeniería y Ciencias: En este grupo se clasifican los programas que modelan procesos de Ingeniería y Ciencias. Por ejemplo, programas de cálculo de Estructuras para la ingeniería civil, de modelización del clima, etc.
EL SISTEMA OPERATIVO
1.0 Introducción
El Sistema operativo esta formado por un conjunto de programas que se instala en la memoria de una computadora al momento del arranque y que tienen como función la interpretación y codificación de las órdenes básicas dadas por el usuario. Además, sirve como plataforma para que otros programas como los procesadores de texto, los graficadores y las hojas de calculo, entre otros, utilicen el hardware disponible de la manera adecuada.
El funcionamiento, y sobre todo la eficiencia del hardware de cualquier computadora, esta unido estrechamente a su sistema operativo. Podríamos tener la mejor computadora del mercado y sería completamente inútil si no tiene un sistema operativo que permita utilizar eficientemente sus recursos.
El Sistema Operativo realiza una conexión entre el hardware (componentes de la computadora) y el software (programas de aplicación). Esta hace posible que la estructura en la cual se desempeñan los diferentes programas sea uniforme. La estandarización de las funciones del hardware es el problema mas grande en el desarrollo de los UNIVERSIDAD ESTATAL DE BOLÍVAR
FACULTAD DE CIENCIAS DE LA EDUCACIÓN, SOCIALES, FILOSÓFICAS Y HUMANÍSTICAS
sistemas operativos. La evolución de las computadoras exige que el sistema operativo actualice su versión de manejo constantemente. Existe a la fecha gran variedad de sistemas operativos con distintos recursos dependiendo de la aplicación para la cual fueron diseñados. A través de la historia de los sistemas Operativos, que en sus inicios fue marcada por la competencia entre dos compañías como Microsoft y Digital Research, hemos visto gran cantidad de versiones que se han creado de acuerdo al desarrollo de las nuevas tecnologías de hardware.
Es difícil determinar el futuro de los sistemas operativos considerando la tendencia continua en el desarrollo del hardware y las exigencias crecientes de los programas de aplicación. Por esto, el futuro del DOS, uno de los sistemas operativos más utilizados en el ámbito mundial, no parece prometedor. El anuncio de Microsoft de terminar con el desarrollo del MS­DOS con la versión 6.22 revela también esta tendencia Sin embargo, muchos programas del DOS deberán continuar funcionando incluidos en los nuevos sistemas operativos. Es el caso, sobre todo, de los juegos avanzados que aprovechan un tipo especial de funcionamiento logrado solo en DOS. Por esta razón, los nuevos sistemas operativos presentan un grado de compatibilidad con DOS, para asegurar a los usuarios que puedan ejecutar las aplicaciones que exigen el uso de este sistema Operativo.
1.1 QUE ES UN SISTEMA OPERATIVO
El sistema operativo, es el conjunto de programas que ejercen el control principal en el equipo de computo. Este software le indica al microprocesador la manera en que debe utilizar los elementos periféricos y cómo administrar los archivos, a la vez se constituye en la plataforma sobre la que se ejecutan todos los programas de aplicación y brinda al usuario el medio de comunicación de la maquina.
Cuando se ejecuta el sistema operativo desempeña las siguientes funciones básicas:
 Proporciona una interface hombre – maquina.  Administrar los dispositivos de hardware (teclado, unidades
de disco, monitor, etc.)
 Administra los sistemas de archivos en disco.
 Apoyar en diversas funciones a los programas de aplicación.
1.2 EVOLUCION DE LOS SISTEMAS OPERATICOS
A lo largo de los años los sistemas operativos han venido experimentando una evolución considerable, dado que históricamente los sistemas operativos han sido muy dependientes de la arquitectura de las computadoras. El esquema de las generaciones del S.O a las generaciones de la computadoras ofrece una gran estructura de evolución y es así :
La primera computadora digital fue diseñada por el matemático inglés Charles Babbage ( 1972 ­ 1871 ) a pesar de ser una máquina analítica nunca funciono adecuadamente por que era un diseño puramente mecánico, esta máquina analítica no tuvo un sistema operativo.
PRIMERA GENERACIÓN (1945 –1955)
La característica principal de esta generación consistía en el hecho que las computadoras empleaba UNIVERSIDAD ESTATAL DE BOLÍVAR
FACULTAD DE CIENCIAS DE LA EDUCACIÓN, SOCIALES, FILOSÓFICAS Y HUMANÍSTICAS
como componentes básicos los TUBOS AL VACIO y paneles de Conexión. Su volumen precio y coste de mantenimiento los hacían asequibles sólo a grandes empresas y organismos estatales hasta este entonces el sistema operativo era extraño. La programación de las maquinas se hizo en un principio, directamente en código binario pero no se tardaron en aparecer los primeros programas ensambladores.
La aparición del primer lenguaje llamado de alto nivel era el FORTRAN, en 1956, destinado a usos científicos, pues constituyo una autentica revolución.
Al inicio de la década de 1950, la rutina había mejorado un poco con la introducción de las famosas Tarjetas Perforadas, lo que hizo posible escribir programas en tarjetas y leerlos.
LA SEGUNDA GENERACIÓN ( 1955 ­ 1965 ) Se caracterizo con la incorporación del transistor en las computadoras como elemento fundamental lo que permitió reducir el coste y aumentar la fiabilidad y rapidez de las máquinas. Es obvio que estos cambios pusieron las computadoras al alcance de nuevos sectores de usuarios.
Fue durante esta generación cuando se desarrollaron los lenguajes de programación COBOL (1960) dedicado a aplicaciones comerciales; el LISP (1959), que intereso principalmente a quienes trabajan en inteligencia Artificial, y el BASIC (1964), pensando en principio para la enseñanza, pero que se convertiría en el lenguaje de estándar de las microcomputadoras.
La introducción de datos sé hacia por tarjetas perforadas y se emplearon dispositivos magnéticos de almacenamiento externo, como cintas y discos, pero este proceso era demasiado tardado, y así que para aumentar la eficiencia y reducir el tiempo perdido la solución era utilizar el Sistema de Procesamiento por lotes. La idea implícita en este sistema era llenar una casilla de trabajos de la sala de entradas y transferirlos a una cinta magnética mediante el uso de una computadora pequeña y poco costosa como IBM 1401, que era muy eficiente en la lectura de tarjetas, en el copiado de cintas y en la impresión de salida, pero no eficiente en los cálculos numéricos. Otras máquinas mucho más costosas como IBM 7094 se utilizaron para hacer cálculos reales.
Las grandes computadoras de la 2da generación se utilizaban en su mayor parte para realizar cálculos científicos y de Ingeniería, como la solución de ecuaciones diferenciales parciales. se programaba principalmente en FORTRAN y en lenguaje ensamblador. Los sistemas operativos comunes eran FMS ( El sistema monitor del Fortran ) e IBSYS, sistema operativo de IBM de la 7094 LA TERCERA GENERACIÓN ( 1965 ­ 1980 ) Vino marcada por la disminución del tamaño del medio de las computadoras. El empleo generalizado de los circuitos integrados permitió una nueva disminución de volumen y de costo y también aumento la rapidez de funcionamiento de las grandes computadoras.
Al inicio de la década de 1960 muchos fabricantes de computadoras tenían dos líneas de productos distintas y totalmente incompatibles. Por un lado existían las computadoras científicas de grandes escalas orientadas a las palabras, como la 7094 que se utilizaba para realizar cálculos numéricos de ciencia e ingeniería. Por otro lado estaban las computadoras orientadas a los caracteres, como la 1401, que se utilizaba ampliamente para el ordenamiento de cintas de impresión por parte de Bancos y companias.
IBM intento resolver estos dos problemas de un solo golpe introduciendo en el mercado el sistema/360 la cual 360 fue la primera línea de computadora que utilizo circuitos integrados de pequeña escala lo cual ofreció una mayor ventaja de precio/ rendimiento sobre las máquinas de la 2da Generación.
El punto fuerte del concepto de " Una sola familia" era a la vez su punto débil. La intención era que UNIVERSIDAD ESTATAL DE BOLÍVAR
FACULTAD DE CIENCIAS DE LA EDUCACIÓN, SOCIALES, FILOSÓFICAS Y HUMANÍSTICAS
todo el software, como el sistema operativo, tenían que funcionar en todos los modelos.
No había manera de que IBM o cualquier otra compania escribiera una pieza de software que cumpliera una serie de requisitos conflictivos. El resultado de esto fue un Sistema Operativo enorme y extraordinariamente complejo, quizá de dos a tres ordenes de magnitud mayor que FMS, Constaba de millones de líneas de lenguaje ensamblador escrita por miles de programadores, y contenían miles y miles de errores ocultos, que necesitaba un flujo continuo de nuevas liberaciones en un intento por corregirlos. Más tarde se diseño el OS/360,( Fred Broks) que a pesar de su tamaño mounstruoso y de todos sus problemas. Satisfizo a sus clientes. También popularizaron varias técnicas importantes ausentes en los sistemas operativos de la 2da Generación. Probablemente la más importante de estas era la multiprogramación que permitía la posibilidad de realizar varios funciones a vez.
Otra característica importante de los S.O era la capacidad de leer trabajos de tarjetas contenidas en el disco tan pronto como se llevaban al cuarto de computación. Por lo tanto siempre que se terminaba un trabajo, el sistema operativo podía cargar un nuevo del disco en la partición no vacía y ejecutarlo. Esta técnica se denominaba manejo por cola de impresión (spooling), que es una operación periférica simultanea en línea, y se utilizaba así mismo para la salida.
Aunque los S.O de la tercera generación se adaptaban bien a cálculos científicos extensos y ejecuciones masivas de procesamiento de datos comerciales seguían siendo básicamente sistemas de lotes.
La necesidad de tiempos de respuesta más rápidos preparo el camino para los sistemas de Tiempo Compartido, variante de la multiprogramación en el que cada usuario tiene un terminal conectado a la computadora. El primer sistema con esta filosofía fue el CTSS, aunque esta técnica no se desarrollo hasta que aparecieron los mecanismo de protección de Hardware. Debido al éxito del CTSS. Los laboratorios Bell intentaron desarrollar un nuevo sistema llamado MULTICS(Servicio multiplexado de Información y procesamiento) teniendo muy poco éxito. El crecimiento fenomenal de las minicomputadoras era impresionante durante esta generación y es así que unos de los científicos de los Laboratorios BELL, Ken Thompson decidió escribir una versión reducida de MULTICS para un solo Usuario. Brian Kerninghan medio bautizado al sistema como “UNICS” pero posteriormente se llamaría UNIX.
Dennis Ritchie, otro experto de los laboratorios Bell, formo equipo con Thompson para reescribir el sistema en un lenguaje de alto nivel llamado C, diseñado e implementado por Ritchie. Los laboratorios Bell concedieron licencias de UNIX a las Universidades gratuitamente a pocos años este sistema había cientos de sistemas instalados. UNIX se ha transportado a mas computadoras que ningún otro sistema operativo y su uso continúa extendiéndose. LA CUARTA GENERACIÓN ( 1890 ­ 1995 ).
Con la creación de los circuitos integrados ( LSI ), la era de las computadoras personales vio sus inicios. En términos de arquitectura, las computadoras personales no eran tan diferentes de las minicomputadoras, pero en términos de precio diferían. La vasta diseminación del poder de computo altamente interactivo condujo al desarrollo de una industria importante que producía software. Gran parte de este software era amable al usuario lo cual fue importante en la intención de aprendizaje.
UNIVERSIDAD ESTATAL DE BOLÍVAR
FACULTAD DE CIENCIAS DE LA EDUCACIÓN, SOCIALES, FILOSÓFICAS Y HUMANÍSTICAS
Dos sistemas operativos han dominado el mundo de las computadoras personales: El primero el MS­DOS escrito por Microsoft, Inc, para la IBM PC y otras máquinas que usan los microprocesadores de la Familia Intel 80xxx; el segundo es UNIX , que domina el área de las grandes computadoras personales que hacen uso de los microprocesadores de Motorola de la Familia 68000. La versión inicial de MS­DOS era relativamente primitiva, las versiones subsiguientes han ido incorporando más funciones avanzadas, así la ultima versión (6.22), Las versiones se hacen para aumentar la capacidad del sistema Operativo, para aprovechar elementos del hardware mas perfeccionados y para corregir errores. En estos últimos años existe una lucha feroz entre IBM y Microsoft por implantar en el mercado un sistema operativo que domine el mercado; la apuesta de Microsoft pasa por un sistema Operativo Windows95 de 32 bits, multitarea y excelentes aplicaciones para conexión en redes de datos, mientras que IBM apuesta por el OS/2 WARP cuya filosofía es idéntica a la de su competidor a excepción del sistema de ficheros, cuyo manejo es más eficiente. Un avance importante empezó a tomar a mediados de la década de 1980 es el desarrollo de redes de computadoras personales que corren Sistemas Operativos en red y sistemas operativos distribuidos. En un sistema operativo en red, los usuarios tienen conocimientos de la existencia de múltiples computadoras y pueden ingresar en máquinas remotas y reproducir archivos de una máquina a otra. Cada máquina ejecuta su propio sistema operativo local y tiene su(s) propio(s) usuario(s).
En cambio un sistema operativo distribuido es aquel que presenta ante sus usuarios como un sistema uniprocesador o monoprocesador. En un sistema distribuido, los usuarios no saben dónde se ejecutan sus programas, o en qué lugar se encuentran sus ficheros. Los sistemas operativos de red no son esencialmente distintos de los sistemas operativos monoprocesadores. Necesitan obviamente, además de un controlador de manejo de la red, programas para entrada a computadoras remotas.
Dentro de esta categoría se encuentran sistemas operativos comerciales como Windows NT Server, así como sistemas operativos de red como Novell Netware o Lan Manager. QUINTA GENERACIÓN Era en la cual estamos viviendo actualmente, se caracteriza por la aparición de un nueva versión del sistema operativo Windows 95 llamado Windows 98, aprovecha las características revolucionarias de Windows 95, mejorando su rendimiento, la fiabilidad y la facilidad de Uso, pone a disposición del usuario la nueva gama de capacidades de uso del Hardware y de funciones de entretenimiento, incorpora ayuda dinámica para navegar en el Internet.
Actualmente ya se habla de una otra versión el Windows 2000 como un gran aporte a la nueva tecnología del milenio.
UNIVERSIDAD ESTATAL DE BOLÍVAR
FACULTAD DE CIENCIAS DE LA EDUCACIÓN, SOCIALES, FILOSÓFICAS Y HUMANÍSTICAS
Grafico.
MS­DOS WINDOWS95 WINDOWS 98 OS/2 WARP 1.3 Conceptos de los sistemas operativos
La interfaz entre el sistema operativo y los programas del usuario se definen como el conjunto de instrucciones ampliadas que proporciona el sistema operativo. Estas instrucciones ampliadas se conocen como llamadas al sistema.
Las llamadas al sistema crean, eliminan y utilizan varios objetos del software, controlados por el sistema operativo. Los más importantes son los procesos y archivos.
Procesos
Un proceso básicamente, es un programa en ejecución. Consta del programa ejecutable, sus datos y pila, contador y otros registros, además de toda la información necesaria para ejecutar el programa
Archivos.
Una de las funciones principales del S.O es ocultar las peculiaridades de los disco y demás dispositivos de E/S, para presentar al programador un modelo de archivos independientes de los dispositivos
Con respecto a esta función del sistema operativo debe recordarse que esté organiza la información en grupos o entidades lógicas llamadas archivos, para ser almacenadas en un dispositivo magnético o de otro tipo. El sistema de archivo proporciona un método lógico para organizar, recuperar, manipular y gestionar la información. Los archivos están organizados es un sistema de archivo jerárquico, agrupados en subdirectorios partiendo de un directorio principal en cada unidad de disco, llamado "directorio raíz". Precisamente por esta característica el sistema operativo, debe ser el encargado de administrar la forma como se almacena y se maneja la información en la com­
putadora.
Un ejemplo claro es el límite de ocho caracteres para el nombre del archivo más tres de extensión para indicar su tipo, empleado en los sistemas MS­DOS.
Llamadas al Sistema
Los programas del usuario se comunican con el sistema operativo y le solicitan servicio mediante las llamadas al sistema. A cada una de estas llamadas le corresponde un procedimiento de la UNIVERSIDAD ESTATAL DE BOLÍVAR
FACULTAD DE CIENCIAS DE LA EDUCACIÓN, SOCIALES, FILOSÓFICAS Y HUMANÍSTICAS
biblioteca que pueden llamar los programas del usuario.
El número de llamadas al sistema varía según el sistema operativo.
Hay llamadas al sistema para crear procesos, controlar la memoria, leer y escribir y hacer labores de Entrada/salida como por ej.
( Read, Write , printf)etc.
El Shell
El sistema operativo es el código que lleva a cabo las llamadas al sistema. El Shell lee las órdenes y las interpreta como peticiones de ejecución de un programa o programas. Por esta característica se le denomina interpretes de órdenes o comandos en la medida que toma el control de la pantalla, traduce las instrucciones escritas del usuario, interpreta la orden digitada y la ejecuta. Esta es, de hecho, la función más visible del Sistema operativo, pues seria imposible que el usuario se comunicara con la computadora en su propio lenguaje.
1.4 ESTRUCTURA DEL SISTEMA OPERATIVO
Para controlar todas las tareas de la computadora es necesario dotar al sistema operativo de una estructura que permita organizar las funciones que tiene que realizar.
En los primeros sistemas operativos se utilizaba una arquitectura monolítica, es decir un conjunto de procedimientos donde cada uno de ellos puede llamar a los demás cuando quiera. Esto conduce a un programa donde se tiene un proceso principal que utiliza una serie de proce­
dimientos para resolver el servicio requerido. Estos procedimientos a su vez pueden utilizar otros procedimientos para realizar determinadas funciones. A partir de esta arquitectura, surge otra que organiza el programa en una jerarquía de niveles donde cada nivel se construye sobre el anterior. THE fue el primer sistema operativo que utilizó en 1968 esta arquitectura. Este sistema de niveles se generalizó con la aparición de MUL­TICS. Éste, en vez de niveles, utilizaba una serie de anillos concéntricos, donde los anillos más internos tenían mas privilegios que los mas externos.
El siguiente avance en diseño fue la incorporación de multiproceso y tiempo compartido. Así, surge el primer sistema operativo de tiempo compartido para los IBM 360. Este sistema, de­
nominado al principio CP/CMS, se conoce hoy como VM/370. En el se pretendía separar la multiprogramación y la idea de disponer de una maquina virtual con una interfaz mas apropiada que la del hardware.
Existe un proceso monitor que ejecuta directamente sobre el hardware y se encarga de la multiprogramación. Esto permite ofrecer al nivel inmediatamente superior la imagen de varias UNIVERSIDAD ESTATAL DE BOLÍVAR
FACULTAD DE CIENCIAS DE LA EDUCACIÓN, SOCIALES, FILOSÓFICAS Y HUMANÍSTICAS
maquinas virtuales.
La ultima tendencia es la utilización de arquitecturas modelo cliente ­ servidor donde sé pretende reducir el sistema operativo a un núcleo mínimo. Para ello se implementan la mayoría de las funciones como procesos de usuario y, para solicitar cualquier servicio (procesos clientes), se envían peticiones al servidor (procesos servidores) que realiza la función pedida y devuelven el resultado.
En este tipo de arquitectura, la única función del núcleo es implementar la comunicación entre clientes y servidores.
2. Los procesos
Esta parte de código del sistema operativo se carga de controlar la ejecución de los distintos procesos que existen en La computadora. Un proceso es un programa en ejecución. Consta del programa ejecutable, los datos y la de la pila del programa, su contador de programa, apuntador de pila y otros registros. En definitiva, toda la información necesaria para ejecutar un programa.
En general un proceso necesita determinado recursos, incluyendo el tiempo de la CPU, memoria, archivos y dispositivos de entrada/salida, para cumplir con su tarea, éstos recursos se proporcionan al crear el proceso, o se le asignan mientras se ejecutan. De momento un proceso es posible proporcionar llamadas al sistema que permitan a los procesos crear sus procesos que se ejecuten concurrentemente, el sistema operativo es responsable de las siguientes actividades relacionadas con los siguientes procesos:
• Crear y eliminar los procesos de usuario y del sistema.
• Suspender y reanudar la ejecución de los procesos.
• Proporcionar mecanismos para la sincronización de procesos
• Proporcionar mecanismos para la comunicación de procesos.
• Proporcionar mecanismos para el manejo de bloques mutuos.
2.1.1 EL MODELO DE PROCESOS
En este modelo, todo el software ejecutable, inclusive el sistema operativo, se organiza en varios procesos secuenciales. Un proceso es tan solo un programa en ejecución, lo que incluye los valores activos del contador, registro y variables del programa. De manera conceptual, cada proceso tiene su propia CPU virtual. La verdadera CPU alterna entre procesos y la velocidad a la que se ejecutan un proceso no será uniforme y es probable que no se pueda reproducir si los mismos procesos se ejecutan de nuevo.
UNIVERSIDAD ESTATAL DE BOLÍVAR
FACULTAD DE CIENCIAS DE LA EDUCACIÓN, SOCIALES, FILOSÓFICAS Y HUMANÍSTICAS
Un contador de Programa
Procesos
Cuatro contadores de programa
Alternador
de procesos
D
C
B
A
B)
A)
Multiprogramación
C)
Tiempo
Figura : A) Multiprogramación de cuatro programas B) Modelo conceptual de cuatro procesos
secuenciales independientes
C) Sólo un programa activo en un momento dado
JERARQUIA DE PROCESOS.
Los sistemas operativos el concepto de proceso deben ofrecer cierta forma de crear todos los procesos necesarios. En la mayoria de los sistemas, es necesario una forma de crear y destruir procesos cuando se requiera durante la operación.
En UNIX, los procesos se crean mediante la llamada al sistema FORK, el cual crea una copia idéntica del proceso que hace la llamada. Después de la llamada FORK, el padre sigue su ejecución, en paralelo con el hijo. El padre puede dar lugar entonces a más hijos, de forma que en cualquier instante podrían estar varios hijos en ejecución.
En MS­DOS, existe una llamada al sistema que carga un archivo binario dado en la memoria y lo ejecuta como un proceso hijo. En gcontrasre con UNIX, en MS­DOS esta llamada suspende al padre hasta que l hijo ha finalizado su ejecución, de forma que el hijo y el padre no se ejecutan en paralelo.
ESTADOS DE LOS PROCESOS.
Aunque cada proceso es una entidad independiente, es frecuente que los procesos deban interactuar con otros.
Un proceso puede estar :
 En ejecución ( Utiliza la CPU en el instante dado).
 Listo (Ejecutable, se detiene en forma temporal para que se ejecute otro proceso).
UNIVERSIDAD ESTATAL DE BOLÍVAR
FACULTAD DE CIENCIAS DE LA EDUCACIÓN, SOCIALES, FILOSÓFICAS Y HUMANÍSTICAS
 Bloqueado ( No se puede ejecutar debido a la ocurrencia de algún evento externo).
2.1.2
IMPLANTACION DE LOS PROCESOS
Para implantar el modelo de los procesos, el sistema operativo utiliza una tabla ( arreglo de estructuras ), llamada la tabla de procesos , con un dato por proceso. Este dato contiene la información relativa al estado del proceso, el contador del programa , el apuntador a la pila, asignación de memoria, el estado de los archivos abiertos, su información de contabilidad y planificación, así como todos los datos relativos al proceso que deben guardarse cuando el proceso alterna entre los estados en ejecución y listo de forma que se pueda volver a iniciar más adelante como si nunca se hubiera detenido.
2.2
COMUNICACIÓN ENTRE PROCESOS.
Los procesos requieren con frecuencia la comunicación entre ellos, la cual debe ser estructurada sin utilizar interrupciones.
2.2.1 CONDICIONES DE COMPETENCIA.
La condición de competencia es evitar o tratar de prevenir que más de un proceso de lectura/escritura esté en memoria compartida. La clave para evitar los problemas relacionados con la memoria compartida, archivos compartidos y cualquier otra cosa compartida, es utilizar la exclusión mutua (una forma de garantizar que sí un proceso utiliza una variable o archivo compartido, los demás procesos no puedan utilizarlos).
Directorio
Spooler
Proceso A
4
5
6
.
.
abc
Prog. c
Prog. n
in = 7
7
Proceso B
out =4
.
.
Figura : Dos procesos desean tener acceso a la memoria compartida al mismo tiempo
UNIVERSIDAD ESTATAL DE BOLÍVAR
FACULTAD DE CIENCIAS DE LA EDUCACIÓN, SOCIALES, FILOSÓFICAS Y HUMANÍSTICAS
En algunas ocasiones un proceso puede tener acceso a la memoria compartida de archivos realizando labores críticas que puedan llevar conflictos. Esa parte del programa, en la cual se tiene acceso a la memoria compartida de llama Sección Crítica. Si podemos arreglar las cosas de forma que no ocurra que dos procesos están al mismo tiempo en su sección crítica, podremos evitar las condiciones de competencia.
Para evitar condiciones de competencia debemos tener en cuenta que:
 Dos procesos no se deben encontrarse al mismo tiempo dentro de sus secciones críticas.
 No se deben hacer hipótesis sobre la velocidad o el número de CPU
 Ninguno de los procesos que estén en ejecución fuera de su sección crítica puede bloquear a otros procesos.
 Ningún proceso debe esperar eternamente para entrar a su sección crítica.
2.2.2 EXCLUSION MUTUA CON ESPERA OCUPADA
En esta sección examinaremos varios métodos para lograr la exclusión mutua, de tal forma que si un proceso está ocupado con la actualización de la memoria compartida en su región crítica, ningún otro proceso entre a su región crítica y provoque problemas
Existen varios métodos para lograr la exclusión mutua:
Desactivación de interrupciones.
La solución es hacer que cada proceso desactivara todos sus interrupciones justo antes de entrar a la región crítica y los activara de nuevo una vez que saliera de ella. Al desactivar las interrupciones no puede ocurrir una interrupción de reloj . Después de todo, la CPU sólo se activa de proceso en proceso como resultado del reloj y otros interruptores, por lo que con las interrupciones desactivadas la CPU no alternará con otro proceso. Así, una vez que un proceso ha desactivado las interrupciones, puede examinar la memoria compartida, sin temer la intervención de otros procesos. Este punto de vista es poco atractivo, puesto que no es correcto que los procesos del usuario tengan el poder de desactivar las interrupciones. UNIVERSIDAD ESTATAL DE BOLÍVAR
FACULTAD DE CIENCIAS DE LA EDUCACIÓN, SOCIALES, FILOSÓFICAS Y HUMANÍSTICAS
Variables de cerradura.
Es una solución de software, si se desea que un proceso entre a su región crítica, primero se hace una prueba de la cerradura. Sí está es 0, el proceso cambia el valor a 1 y entra a la región crítica. Sí ésta ya vale 1, el proceso sólo se espera hasta que obtiene el valor 0 de nuevo. Así, un 0 indica que ningún proceso se encuentra en la región crítica y un 1 indica que cierto proceso está en su región crítica.
DORMIR Y DESPERTAR
Lo que hacen estas soluciones son las siguientes: cuando un proceso desea entrar a su sección crítica, verifica si está permitida la entrada. Si no, el proceso se queda esperando (Sleep es una llamada al sistema que provoca el bloqueo) hasta obtener el permiso de él ( Wakeup llamada al sistema por despertar). Este punto de vista no sólo desperdicia el tiempo de la Cpu, si no que tiene efectos inesperados.
El problema del productor y consumidor
También se le conoce como almacén limitado. Dos procesos comparten un almacén (buffer) de tamaño fijo. Uno de ellos, el productor coloca información en el buffer, mientras que el otro, el consumidor, la obtiene de él.
El problema es que los dos están dormidos (sleep), para que no suceda esto debe existir un bit de espera de despertar para que envie una señal para despertar.
En este punto de vista el problema sigue ahí ya que un solo bit no es suficiente.
Algoritmo
# include ” Prod_Consum ”
# define N 100
int count = 0;
void productor(void)
{
int item;
WHILE (TRUE)
{
Productor.item(&item);
If ( count == N) sleep ();
count= count+1;
if ( count == 1 ) wakeup( consumidor);
}
}
void consumidor( void )
UNIVERSIDAD ESTATAL DE BOLÍVAR
FACULTAD DE CIENCIAS DE LA EDUCACIÓN, SOCIALES, FILOSÓFICAS Y HUMANÍSTICAS
{
int item;
WHILE (TRUE)
{
If ( count == 0) sleep ();
remove.item (&item); count= count­1;
if ( count == N­1 ) wakeup(productor);
sonsumidor.item(item);
}
}
2.2.4 Semáforos
Un semáforo puede tener valor 0, lo que indica que no existen despertares almacenados; o bien algún valor positivo si están pendientes uno o más despertares.
Existen dos operaciones , DOWN y UP . La operación Down verifica si el valor de un semáforo es mayor que 0 decrementa el valor ( es decir utiliza un despertar almacenado) y continua . Si el valor es 0, el proceso se va a dormir . La verificación y modificación del valor se realiza en conjunto, como una sola e indivisible acción atómica. Se garantiza que al iniciar una operación con un semáforo, ningún otro proceso puede tener acceso al semáforo hasta que la operación termine o se bloquee. Esta es esencial para resolver problemas de sincronización y evitar condiciones de competencia.
La operación UP incrementa el valor del semáforo correspondiente. Si uno o más procesos dormían en ese semáforo, y no podían completar la operación DOWN anterior, el sistema elige alguno de ellos aleatoriamente y se le permite terminar DOWN. Así después de un UP en un semáforo con procesos durmiendo, el semáforo seguirá con valor o, pero habrá un menor número de procesos durmiendo. Ningún proceso se llega a bloquear mediante un UP.
Solución del problema del productor y el consumidor mediante semáforos Los semáforos resuelven el problema del despertar perdido. La forma normal consiste en implantar Up y Down como llamadas al sistema, haciendo que el sistema operativo desactive por un momento todos los interruptores mientras hace una prueba del semáforo. Puesto que todas estas acciones sólo emplean pocas instrucciones, no hacen daño la desactivación de los interruptores.
Esta solución utiliza tres semáforos que son:
Full Que cuenta el número de entradas ocupadas
Empty .­ Para en conteo de las entradas vacías
Mutex .­ Que sirve para garantizar que el productor y el consumidor no tienen acceso simultáneo al buffer.
El valor inicial de full es 0, el de Empty es igual al número de entradas en el buffer y el de mutex es 1. Los semáforos que se inicializan con un valor de 1 y que son utilizados por dos o más procesos para garantizar que sólo uno de ellos pierda entrar a su región crítica se llaman semáforos binarios. Si cada proceso realiza un down justo antes de cerrar a su región crítica y un UP justo antes de salir de ella, queda garantizada la exclusión mutua.
UNIVERSIDAD ESTATAL DE BOLÍVAR
FACULTAD DE CIENCIAS DE LA EDUCACIÓN, SOCIALES, FILOSÓFICAS Y HUMANÍSTICAS
Algoritmo
# include ” Prod_Consum ”
# define N 100
typedef int semaphore
semaphore mutex = 1;
semaphore empty = N;
semaphore full = 0;
void productor (void)
{
int item;
WHILE (TRUE)
{ Productor.item(&item);
down (&empty);
down (&mutex);
enter.item (item)
up (&mutex);
up (&full);
}
}
void consumidor( void )
{ int item;
WHILE (TRUE)
{
down (&full);
down (&mutex);
remove.item(item);
up (&mutex);
up (&empty);
consumidor.item(item);
}
}
2.2.5 Contadores de eventos
También es posible programar una solución sin que se requiera la exclusión mutua, para esto utiliza un tipo particular de variable, llamada contador de eventos (Reed y Kanodia,1979 )
Se definen tres operaciones sobre un contador de eventos E:
1.
Read(E): Regresa el valor actual de E:
2.
Advance(E): Incrementa en forma atómica el valor de E en 1
3.
Awaite(e,v): Espera hasta que E tenga el valor de v o mayor.
UNIVERSIDAD ESTATAL DE BOLÍVAR
FACULTAD DE CIENCIAS DE LA EDUCACIÓN, SOCIALES, FILOSÓFICAS Y HUMANÍSTICAS
Algoritmo
# define N 100
typedef int event_counter;
event_counter in = 0;
event_counter out = 0;
void productor (void)
{
int item, sequence = 0;
WHILE (TRUE)
{ Productor.item(&item);
sequence = sequence +1;
await (out, sequence ­ N);
enter.item (item);
advance(& in );
}
}
void consumidor( void )
{
int item, sequence = 0;
WHILE (TRUE)
{ sequence = sequence +1;
await (in, sequence);
remove.item(&item)
consumidor.item(item);
}
}
2.2.6 Transferencia de Mensajes.
Este medio de comunicación entre procesos utiliza el SEND, RECEIVE, las cuales, al igual que los semáforos son llamas al sistema en vez de comandos del lenguaje. Como tales se pueden colocar con facilidades en procedimiento y bibliotecas, por ejemplo:
Send (destination, &message) ( Envía un mensaje a un destino dado)Y Receivce ( source, &message) ( Recibe un mensaje desde cierto origen )
Si no hay mensajes, el receptor se puede bloquear hasta que llegue alguno.
Si los procesos en comunicación se encuentran en máquinas distintas unidas mediante red, los mensajes se pueden perder.
Como protección contra la perdida de mensajes, el emisor y el receptor pueden convenir en que tan UNIVERSIDAD ESTATAL DE BOLÍVAR
FACULTAD DE CIENCIAS DE LA EDUCACIÓN, SOCIALES, FILOSÓFICAS Y HUMANÍSTICAS
pronto se reciba el mensaje, el receptor envié de regreso un mensaje especial de confirmación. Si el emisor no ha recibido una conformación después de cierto tiempo, retransmite el mensaje.
Los sistemas con mensajes también deben enfrentar la cuestión de los nombres de los procesos, de forma que no haya ambigüedad en el proceso dado en una llamada send o receive. Con frecuencia se utiliza un esquema tal como proceso: maquina o maquina: proceso Para evitar que dos máquinas tengan el mismo nombre y pueda causar conflicto es considerable agrupar las máquinas en dominios y dirigirse a los procesos como proceso máquina: dominio donde cada dominio debe ser único.
La autentificación es otro aspecto de los sistemas de mensajes:
¿ Cómo saber si el cliente se comunica con un verdadero servidor o impostor? ¿ Cómo puede determinar el servidor cuál cliente solicito un archivo dado.? Este punto puede ser de utilidad el ciframiento de mensajes con una clave que solo conozca los usuarios autorizados.
PLANIFICACION DE PROCESOS.
Cuando más de un proceso es ejecutable, el sistema operativo debe decidir cuál de ellos debe ejecutarse en primer término. Esa parte del sistema operativo que debe llevar a cabo se llama el Planificador y el algoritmo que se utiliza se llama el Algoritmo de planificación
Un algoritmo de planificación intenta conseguir:
 Equidad: garantizar que cada proceso obtenga su proporción justa de la CPU
 Eficacia: mantener ocupada la CPU el 100% del tiempo
 Tiempo de Respuesta: minimizar el tiempo de respuesta para los usuarios interactivos
 Tiempo de regreso: minimizar el tiempo que deben esperar los usuarios por lotes para obtener sus resultados.
 Rendimiento: maximizar el número de tareas procesadas por hora
Una complicación que debe enfrentar el planificador es que cada proceso es único e imprescindible. La estrategia de permitir que procesos ejecutables (Lógico) sean suspendidos en forma temporal se llama Planificación apropiativa. La ejecución hasta terminar también recibe el nombre de Planificación no apropiativa .
Tenemos algunos algoritmos de Planificación:
UNIVERSIDAD ESTATAL DE BOLÍVAR
FACULTAD DE CIENCIAS DE LA EDUCACIÓN, SOCIALES, FILOSÓFICAS Y HUMANÍSTICAS
Planificación Round Robin. Algoritmo fácil de utilizar , cada proceso tiene asignado un intervalo de tiempo de ejecución, llamado su Quantum.. Si el proceso continúa en ejecución al final de si Quantum, otro proceso se apropia de la CPU. Si el proceso está bloqueado o ha terminado antes de consumir su quantum, se alterna el uso de la CPU. El round robin es muy fácil de implantar. Todo lo que necesita el planificador es mantener una lista de procesos ejecutables como se muestra en la fig:
Proceso
activo
B
Siguiente proceso
F
D
G
Proceso activo
A
F
D
G
A
B
Planificación Round Robin : a) Lista de procesos ejecutables. b) La lista de
procesos ejecutables después de agotarse el quantum B
El único aspecto interesante del round robin es la longitud del quantum. La alternancia entre un proceso y otro necesita cierta cantidad de tiempo para administración( resguardo, carga de registro y mapas de memoria, actualización de varias tablas y listas).
Si el quantum es muy corto, se alternan demasiados procesos, lo que reduce la eficacia de l a CPU; pero si es muy largo, esto puede causar una respuesta lenta a las solicitudes interactivas breves. Un quantum cercano a 100 mseg es con frecuencia un compromiso razonable. Planificación por prioridad
Consiste en que cada proceso tiene asociada una prioridad y el proceso ejecutable con máxima prioridad es el que tiene el permiso de ejecución.
Para evitar que los procesos de alta prioridad se ejecuten en forma indefinida, el planificador puede disminuir la prioridad del proceso en ejecución en cada instante, es decir en cada interrupción del reloj. Si esto hace que su prioridad sea menor que del siguiente proceso con alta prioridad, se alternan los procesos.
Se pueden asignar procesos en forma estática o en forma dinámica con el fin de lograr ciertas metas del mismo.
En forma dinámica ciertos procesos tienen grandes limitaciones de E/S. Un algoritmo sencillo que le da un buen servicio a los procesos con limitaciones en las E/S es establecer que la UNIVERSIDAD ESTATAL DE BOLÍVAR
FACULTAD DE CIENCIAS DE LA EDUCACIÓN, SOCIALES, FILOSÓFICAS Y HUMANÍSTICAS
prioridad sea 1/f , donde f es la fracción del último quantum utilizado por el proceso . Un proceso que sólo utilice 50 mseg de su quantum de 100 tendrá prioridad 2 , mientras que un proceso que utilice todo su quantum tendría prioridad 1. 100 /50 2 prioridad
100/100 1 prioridad Con frecuencia, es conveniente agrupar los procesos en clases de prioridad y utilizar la planificación con prioridades entre las clases, pero con round robin dentro de cada clase.
Colas múltiples
Uno de los primeros planificadores con Prioridad era el de CTSS. En un principio era muy lenta en la alternancia entre procesos, puesto que solo podía mantener un proceso dentro de memoria (memoria limitada), la solución fue utilizar colas múltiples y el establecimiento de clases de prioridad. Los procesos en la clase de mayor prioridad se ejecutaban en un quantum. Los procesos de la siguiente clase se ejecutaban en dos quanta, los de la siguiente clase en cuatro quanta, etc. Cuando un proceso consumiera todos los quanta asignados a él, se le movía a la siguiente clase.
Encabezado de la Cola
Procesos Ejecutables
Prioridad 4
Máxima prioridad
Prioridad 3
Prioridad 2
Prioridad 1
Mínima Prioridad
Figura: Algoritmo de planificación con cuatro clases de prioridad
Se han utilizado muchos otros algoritmos apara la asignación de procesos a clases de prioridad, Por ejemplo el sistema XDS940 tenía cuatro clases de prioridad, llamadas terminal, E/S, quantum corto, quantum largo. Según el dispositivo que se va a ocupar se asigna la prioridad.
Primero el Trabajo más corto
La mayoría de los algoritmos anteriores se diseñaron para los sistemas interactivos. Ahora un algoritmo más apropiado para las tareas por lotes, en las cuales los tiempos de ejecución se conocen de antemano es ejecutar el primero el trabajo más corto. Este algoritmo produce el promedio mínimo de tiempo de respuesta.
UNIVERSIDAD ESTATAL DE BOLÍVAR
FACULTAD DE CIENCIAS DE LA EDUCACIÓN, SOCIALES, FILOSÓFICAS Y HUMANÍSTICAS
8
A
4
4
4
B
C
D
4
B
4
4
8
C
D
A
Figura : Planificación del trabajo más corto primero
En la figura se tienen cuatro tareas A,B,C,D, cuyos tiempos de ejecución son de 8 ,4 ,4 y 4 minutos respectivamente. Al ejecutarlo en ese orden, el tiempo de regreso para A es de 8 minutos, para B es de 12 minutos, para C es de 16 minutos y para D es de 20 minutos, con un promedio de 14 minutos.
a
a+b
a+b+c
a+b+c+d
El tiempo promedio de regreso es ( 4a+3b+2c+d)/4
Planificación garantizada.
Si existen n usuarios dentro del sistema mientras usted esta trabajando, recibirá cerca de 1/n de la potencia de la CPU
Para mantener esa promesa, el sistema debe tener un registro del tiempo de CPU que cada usuario ha tenido desde su entrada al sistema, así como del tiempo transcurrido desde esa entrada. Calcula entonces la cantidad de tiempo en CPU prometida al usuario, es decir, el tiempo transcurrido desde la entrada, dividido entre n. Puesto que mediante un cálculo directo se obtiene la proporción del tiempo de CPU real entre el tiempo de CPU prometido. El algoritmo ejecuta entonces el proceso con la menor proporción, hasta que ésta se acerque a la de su competidor más cercano.
Planificación de dos niveles.
Una forma práctica de trabajar con el intercambio de los procesos es por medio de un planificador de dos niveles. Primero se carga en la memoria principal cierto subconjunto de los procesos ejecutables. El planificador se restringe entonces a ese subconjunto durante tiempo. En forma periódica, se llama a un planificador de nivel superior para eliminar de la memoria los procesos que hayan permanecido en ella el tiempo suficiente y cargar a memoria los procesos que hayan estado en disco demasiado tiempo. Una vez hecho el cambio, el planificador de nivel inferior se restringe de nuevo a los procesos ejecutables que se encuentran en la memoria. Así el planificador de nivel inferior se encarga de elegir de entre los procesos ejecutables que están en memoria en ese momento, mientras que el planificador de nivel superior se encarga de desplazar los procesos de memoria a disco o viceversa.
UNIVERSIDAD ESTATAL DE BOLÍVAR
FACULTAD DE CIENCIAS DE LA EDUCACIÓN, SOCIALES, FILOSÓFICAS Y HUMANÍSTICAS
a , b,
c, d
e, f
g, h
Procesos en la
memoria
principal
Procesos en
disco
a)
e, f
g, h
b,c
f,g
a,b
c, d
a, d
e, h
b)
c)
Figura : Un planificador de dos niveles debe desplazar los procesos entre el disco y la memoria, además de que
debe elegir los procesos por ejecutar de entre aquellos que se encuentran en la memoria. En a), b)y c) se muestran
diferentes instantes de tiempo
El planificador de nivel superior debe tomar en cuenta ciertas características para ver cual proceso se va a llevar a la memoria y cuál proceso sigue esperando en disco: ¿ Cuánto tiempo ha transcurrido desde el último intercambio del proceso ¿
¿ Cuánto tiempo de CPU ha utilizado recientemente el proceso
¿ Que tan grande es el proceso? ( Los procesos pequeños no causan problemas).
¿ Que tan alta es la prioridad del proceso.
Conclusión
Para ocultar los efectos de las interrupciones, los sistemas operativos proporcionan un método conceptual, consistente en procesos secuenciales ejecutados en paralelo. Cada proceso tiene su propio estado y se puede pensar que se ejecuta en su propio procesador virtual.
A veces los procesos deben interactua, por ejemplo, para compartir un área común de almacenamiento ( buffer ). Esta interacción puede derivar en condiciones de competencia, situaciones en las que la perfecta sincronización determina el resultado.
Las condiciones de competencia conducen al comportamiento irreproducible.
Para evitar las condiciones de competencia, se introdujo el concepto de región crítica, que es sección de código en la que un proceso realiza algo con el estado compartido y no desea que otros procesos trabajen ahí también. Las secciones críticas proporcionan la exclusión mutua.
Los procesos se pueden comunicar entre sí mediante las primitivas de comunicaciones entre procesos. Estas primitivas se utiliza para garantizar que dos procesos no se encuentren jamas al mismo tiempo dentro de sus regiones críticas; es decir, para garantizar la exclusión mutua. Un UNIVERSIDAD ESTATAL DE BOLÍVAR
FACULTAD DE CIENCIAS DE LA EDUCACIÓN, SOCIALES, FILOSÓFICAS Y HUMANÍSTICAS
proceso puede estar en ejecución, ser ejecutable o estar bloqueado y puede cambiar de estado cuando él u otro proceso ejecute una de las primitivas de la comunicación entre procesos.
Se han propuesto varias primitivas de la comunicación entre procesos. Entre éstas están los semáforos, monitores, contadores de eventos y la transferencia de mensajes .
En esta teoría. Todas son equivalentes, en el sentido de que cada una se puede utilizar para implantar a las demás. En la mayoría de los sistemas reales se utilizan los semáforos y la transferencia de mensajes.
Varios problemas clásicos se resuelven mediante estas primitivas. De hecho, el primer examen de cualquier propuesta de primitiva es ver si resuelve bien los problemas clásicos, entre los que se encuentran los problemas del productor y consumidor, la cena de los filósofos, lectores y escritores. Incluso con las primitivas adecuadas, hay que tener cuidado para evitar errores y bloqueos.
Se conocen muchos algoritmos de planificación. La labor de un algoritmo de planificación es determinar el proceso que debe ejecutarse a continuación, tomando en cuenta factores como el tiempo de respuesta, la eficacia y la equidad. Entre los algoritmos de planificación más conocidos están el round robin, planificación por prioridades, colas de varios niveles, en primer lugar el trabajo mas corto y la planificación garantizada. En algunos sistemas, el mecanismo de planificación y la política de planificación se dividen, lo que permite una mayor flexibilidad.
Multiprogramación y tiempo compartido
La idea de la multiprogramación es la siguiente. El sistema operativo toma uno de los programas de un grupo de ellos y empieza a ejecutarlo. Eventualmente, el programa seguramente tendrá que esperar por algún motivo, como por ejemplo que tenga que leer información de un disco, que se teclee un comando en un teclado o que tenga que imprimir algo. En un sistema sin multiprogramación (monoprogramación), la computadora permanecería inactiva hasta que terminara la operación por la que está esperando. En un sistema con multiprogramación, el sistema operativo sencillamente cambiaría a otro programa y lo ejecutaría. Cuando este ultimo deba esperar, la computadora pasaría a ejecutar otro programa y así sucesivamente. Finalmente, el primer programa habrá acabado su espera y podrá ser ejecutado de nuevo. En la medida en que siempre haya algún programa por ejecutar, la computadora nunca permanecerá inactiva, como se ve en la figura.
UNIVERSIDAD ESTATAL DE BOLÍVAR
FACULTAD DE CIENCIAS DE LA EDUCACIÓN, SOCIALES, FILOSÓFICAS Y HUMANÍSTICAS
A
B
C
D
D
C
B
A
Multiprogramación
Tiempo
Los sistemas operativos multiprogramados son sofisticados. Tener varios programas dispuestos para su ejecución, supone mantenerlos simultáneamente en memoria. Tener varios programas en memoria al mismo tiempo requiere una gestión de memoria. Además, Si hay varios programas dispuestos para ejecución al mismo tiempo, hay que tomar alguna decisión para elegir entre ellos. Este proceso, se denomina planificación de la CPU, consume tiempo de la computadora.
Tiempo compartido
Cuando un usuario está trabajando, generalmente, desea que la respuesta de la computadora sea lo más rápido posible. Antiguamente se empleaban los ” sistema por Lotes “ en donde existía un grupo de programas de diferentes usuarios y la computadora los iba ejecutando uno detrás de otro secuencialmente. Entonces para ofrecer tiempos de respuesta más rápidos, se crearon los sistemas de tiempo compartido.
La idea es muy simple, pero no simple de realizar, en vez de dedicarse la computadora a un solo usuario, se divide y atiende por turnos a todos a la vez. En un Sistema de tiempo compartido, si de 20 usuarios conectados 17 están pensando, charlando o tomando un café, el procesador puede dedicarse por turnos a los otros tres trabajos que precisan servicio. Dado que las personas que ponen a punto programas utilizan normalmente comandos de efecto corto (por ejemplo, compilar un programa de cinco paginas), en vez de comandos de efecto largo (por ejemplo, ordenar un millón de registros de un fichero), la computadora puede ofrecer un servicio rápido a cierto número de usuarios y procesar todavía trabajos en los tiempos muertos en que no haya ningún usuario que atender.
Un sistema operativo en tiempo compartido utiliza la planificación de la CPU y la multiprogramación para dotar a cada usuario de una pequeña parte de la computadora compartida. Cada usuario tiene en memoria un programa independiente. Cuando se ejecuta, lo hace normalmente durante un breve periodo de tiempo. Puesto que la entrada de datos se realiza a velocidad humana, puede llevar mucho tiempo completarla. La entrada, por ejemplo, esta limitada por la velocidad de tecleo; cinco caracteres por segundo es un tecleo bastante rápido para una persona, pero muy lento para las computadoras.
UNIVERSIDAD ESTATAL DE BOLÍVAR
FACULTAD DE CIENCIAS DE LA EDUCACIÓN, SOCIALES, FILOSÓFICAS Y HUMANÍSTICAS
En lugar de dejar que la computadora permanezca inactiva cuando esto sucede, el sistema operativo cede rápidamente el control de la computadora al programa de algún otro usuario.
Gestión de la entrada/salida
Los problemas que tiene que resolver esta parte del código son los relacionados con los dispositivos de entrada/salida: terminales, discos, impresoras, ratón, interfaz a redes de comunicación etc.
Cada uno de los dispositivos de entrada/salida tiene un controlador que trata directamente con las características particulares de cada dispositivo en concreto. Es el encargado de enviar todas las señales necesarias para realizar cualquier operación tal y como se ve en la figura RUTA DE COMUNICACION
Unidades de disco
Impresora
La computadora no trata con el dispositivo físico sino con el controlador del dispositivo. La razón es que la velocidad de procesamiento de la computadora es muy superior a la de cualquier dispositivo de entrada/salida. De esta forma se envía la orden al controlador, por ejemplo leer cierta información del disco, y la computadora pasa a ejecutar otro proceso mientras el proceso anterior espera la respuesta del dispositivo de entrada/salida. Cuando la información esta lista para utilizar, el controlador avisa a la computadora indicándole que la operación de lectura ya ha finalizado y UNIVERSIDAD ESTATAL DE BOLÍVAR
FACULTAD DE CIENCIAS DE LA EDUCACIÓN, SOCIALES, FILOSÓFICAS Y HUMANÍSTICAS
puede continuar con la ejecución del proceso anterior. En este momento se decide cual será el proceso que sigue ejecutándose.
Gestión de memoria
Otro de los problemas que debe resolver el sistema operativo es el de la asignación de memoria al programa o programas que se encuentren en ejecución. Tiene que llevar la cuenta de que partes se están usando y cuales no.
El método más sencillo de gestión de memoria consiste en tener, en cada instante, un solo proceso en memoria principal, disponiendo éste de toda la memoria disponible. En este caso, la memoria se divide entre el sistema operativo y el proceso de usuario.
Se pueden ver las distintas posibilidades en el siguiente gráfico: (1), (2), (3) de la figura :
El sistema operativo se puede situar al principio de la memoria RAM (1) (memoria de acceso directo), al final de está o al final en una memoria ROM (2) (memoria de sólo lectura). Otra posibilidad (3) es separar del sistema operativo la parte correspondiente a los manejadores de los distintos dispositivos y situarla en una memoria ROM dejando el resto del sistema operativo en memoria RAM.
Con la aparición del concepto de multiprogramación para optimizar la utilización de la computadora, la gestión de la memoria ya no resulta tan sencilla. El sistema operativo tiene que asignar un trozo de memoria a cada proceso. Además tiene que proteger a unos procesos de otros de forma que un usuario no pueda acceder a los datos de otro usuario. En el gráfico e la figura, se muestra una posible ejecución y la correspondiente asignación de memoria de cuatro procesos A, B, UNIVERSIDAD ESTATAL DE BOLÍVAR
FACULTAD DE CIENCIAS DE LA EDUCACIÓN, SOCIALES, FILOSÓFICAS Y HUMANÍSTICAS
C y D a lo largo del tiempo.
Comienza ejecutando el proceso A; mientras que ejecutándose A, otro usuario ordena la ejecución del proceso B. Posteriormente, el proceso A termina su ejecución y libera la memoria que estaba utilizando. Mas tarde surgen los procesos C, D y se les asigna su correspondiente espacio de memoria.
Sistema de gestión de ficheros
Para la mayoría de usuarios, el sistema de ficheros es el aspecto más visible de un sistema operativo. Los ficheros almacenan datos y programas. El sistema operativo ofrece el concepto abstracto de fichero, gestionando dispositivos de almacenamiento externo, tales como discos duros, disquetes y cintas. Pero ¿qué es un sistema de gestión de ficheros y de qué se compone?
Las computadoras pueden almacenar información de distinta formas físicas: los discos y las cintas magnéticas son las mas corrientes. Cada uno de estos dispositivos tiene sus propias características y organización física. Con vistas al buen uso de la computadora, el sistema operativo ofrece una visión lógica sencilla del almacenamiento de información. Este también oculta las propiedades físicas de sus dispositivos de almacenamiento, y define una unidad lógica de almacenamiento: el fichero.
¿Qué es un fichero? Es un conjunto de registros, que permiten almacenar información. También se puede definir como una colección de informaciones relacionadas entre si y definidas por su creador.
Normalmente, los ficheros almacenan programas (tanto en fuente como en forma objeto) y datos, aunque también podrían almacenar una carta que escriba o un dibujo que se haya hecho.
Los ficheros de datos pueden ser numéricos, alfabéticos o alfanuméricos. En general, un fichero es una secuencia de bits (ceros o unos), bytes (conjuntos de ocho bits), líneas o registros cuyo significado ha sido definido por su creador y usuario
AL Fichero se le asigna un nombre, por el cual se hace referencia. Tiene algunas otras características como su tipo, el instante de su creación, el nombre de su creador, su longitud, etc. Por ejemplo, en uno de los sistemas operativos, el MS DOS, un fichero tiene un nombre formado por ocho caracteres, seguido de un punto y otras tres letras. Los ocho primeros caracteres representan el nombre del fichero mientras que los tres últimos representan la extensión del mismo e indica el tipo de fichero del que Se trata. Si es un fichero de texto, la extensión es. TXT, si es un programa fuente en C su extensión es .C y si es programa ejecutable entonces será.EXE.
UNIVERSIDAD ESTATAL DE BOLÍVAR
FACULTAD DE CIENCIAS DE LA EDUCACIÓN, SOCIALES, FILOSÓFICAS Y HUMANÍSTICAS
El sistema operativo MS­DOS también almacena la y fecha de creación del fichero, así como su tamaño.
La información que contienen la define su creador. Hay muchos tipos diferentes de información que pueden almacenarse en un fichero: programas fuente, programas objeto, datos numéricos, textos, registros contables, etc.
Un fichero tiene una cierta estructura, que se define según el uso que se vaya a hacer de él. Así, Un fichero de texto es una secuencia de caracteres organizados en líneas (y posiblemente paginas); Un fichero fuente es una secuencia de subrutinas y funciones, cada una de las cuales se organiza a su vez en forma de declaraciones seguidas de instrucciones ejecutables; Un fichero objeto es una secuencia de palabras organizada interpretables por el cargador.
Una consideración importante es que parte de esta estructura debe ser conocida y controlada por el sistema operativo. Si un Sistema operativo conoce la estructura de un fichero, puede operar sobre él de forma razonable. Por ejemplo, Un error frecuente sucede cuando un usuario trata de imprimir un fichero objeto en binario (compuesto solo de ceros y unos). El listado que se produce normalmente es inservible, pero esto puede evitarse si el sistema operativo ha sido informado de que el fichero es un programa objeto en binario.
Por ultimo, los ficheros tienen una organización determinada dentro de un disco. Si se tienen varios ficheros con cartas, otros ficheros con unos pequeños programas y algunos que contienen gráficos, seguramente se deseará tener estos ficheros almacenados ordenadamente, agrupados según su contenido para que así la búsqueda de uno de ellos resulte sencilla se utilizan los directorios. Un directorio se puede definir como un almacén de ficheros. Este directorio tiene un nombre que puede indicar el tipo de ficheros que contiene. Así, en el ejemplo, Se tendrían tres directorios llamados cartas, dibujos y programas.
El fichero es gestionado por el sistema operativo. Hay comandos para crear, escribir, leer y borrar ficheros. Para comprender cómo se gestionan los sistemas de ficheros se verán estas operaciones mas detalladamente:
a) Crear un fichero. Para crear un fichero son necesarios dos pasos. En primer lugar, hay que encontrarle espacio en el sistema de gestión de ficheros. En segundo lugar, hay que crear una nueva entrada en el directorio para el nuevo fichero. La entrada en el directorio registra el nombre del fichero y su situación.
b)
Escribir en un fichero. Para escribir en un fichero, se envía un comando al sistema operativo especificando tanto el nombre del fichero, como la información que hay que escribir en él. Dado el nombre del fichero, el sistema explora el directorio para encontrar su situación. Una vez localizado esté, se escribe la información en él.
UNIVERSIDAD ESTATAL DE BOLÍVAR
FACULTAD DE CIENCIAS DE LA EDUCACIÓN, SOCIALES, FILOSÓFICAS Y HUMANÍSTICAS
c) Leer de un fichero. Para leer de un fichero un comando enviado al sistema especifica el nombre del fichero y donde hay que situar la información leída en memoria. También se explora el directorio en busca del correspondiente fichero. Una vez encontrado, se leerá la información requerida almacenándose en la memoria. d)
Borrar un fichero. Para borrar un fichero, se explora el directorio en busca del fichero nombrado. Una vez hallada la entrada del directorio correspondiente, se deja libre todo el espacio del fichero (de modo que pueda ser reutilizado por otros ficheros) y se invalida la entrada del directorio.
La entrada en el directorio contiene la información significativa necesaria para operar sobre el fichero. Para evitar esta búsqueda constante muchos sistemas abren un fichero cuando empieza a ser utilizado por el usuario. El Sistema operativo mantiene una pequeña tabla que sostiene información acerca de todos los ficheros abiertos. Cuando se solicita una operación sobre un fichero, solamente se explora esta pequeña tabla, no el directorio entero. Cuando fichero ya no va a ser utilizado activamente, cierra y se elimina de la tabla de ficheros abiertos.
Mecanismos de seguridad y protección
Las computadoras contienen a menudo información de gran valor para los usuarios. La protección de esta información contra un uso no autorizado es una de las preocupaciones más importantes de todo Sistema operativo.
Los términos “seguridad" y “protección” se suelen utilizar de manera indistinta. Para evitar confusión, se usara el termino seguridad para referirse al problema de intromisión en la computadora y mecanismos de protección para hablar de los mecanismos específicos del sistema operativo encaminados a salvaguardar la información en la computadora. En cualquier caso, la frontera esta poco definida. Primero Se examinara la seguridad; mas adelante se describirá la protección.
Seguridad
La seguridad tiene muchas facetas. Lo más importante son las intrusiones. Para abordar el problema, lo primero que se tiene que establecer es que hacer con los intrusos. Estos pueden ser de dos tipos: intrusos pasivos, que solo desean leer información (ficheros) que no están autorizados a leer, e intrusos activos, más dañinos que los anteriores porque pretenden hacer modificaciones no autorizadas en los datos.
Al diseñar un sistema que evite intrusos, es importante tener en cuenta la clase de intrusión de la que se quiere proteger. Algunas de las categorías más comunes son:
 Cotilleo casual de usuarios no técnicos: Lectura de ficheros por parte de personas que UNIVERSIDAD ESTATAL DE BOLÍVAR
FACULTAD DE CIENCIAS DE LA EDUCACIÓN, SOCIALES, FILOSÓFICAS Y HUMANÍSTICAS
sólo les mueve el cotillear un poco.
 Fisgoneo de listillos: personas que, con una elevada preparación y formación, consideran un desafío personal saltarse la seguridad del sistema de computadoras.
 Intentos de ganar dinero: programadores que trabajando en una determinada empresa se sirven de sus conocimientos informáticos para tratar de robarle dinero a la empresa.
 Espionaje militar o comercial: este tipo de intrusión trata de conseguir toda aquella información contenida en la computadora y que es vendible a terceros.
Aunque se trate de crear un sistema operativo que evite todas estas “incursiones”, la verdad es que una computadora tiene mas agujeros que un colador.
La forma normal de comprobar la seguridad de un sistema consiste en contratar a un grupo de expertos, conocido como equipo de tigres 0 de penetración, que tratan de colarse. Con los años, estos Equipos han descubierto ciertas áreas en las que los sistemas suelen presentar grietas. Los ataques más comunes son:
 Solicitar espacio en disco, cintas o paginas de memoria, y leerlas. Muchos sistemas no las borran antes de asignarlas de nuevo y pueden estar llenas de información interesante del propietario anterior.
 Convencer a un programador del sistema para que lo cambie y así saltarse comprobaciones de seguridad vitales para cualquier usuario con el nombre de entrada intruso. Este ataque se conoce como de la escotilla.
 Intentar enviar comandos ilegales o raros al sistema operativo. Muchos sistemas pueden confundirse fácilmente.
Ahora bien, no todo está perdido en la guerra de los intrusos. Se han definido normas generales que se pueden usar como guia para diseñar un sistema con buenos niveles de seguridad. Estas son:
 El mecanismo de protección debe ser simple y uniforme. Intentar imponer seguridad en sistemas inseguros existentes es casi imposible.
 La opción por defecto debe ser prohibir el acceso.
 Hay que comprobar la autorización en cada momento de los usuarios y para cada acción.
 Se debe conceder a los programas los privilegios más bajos. De esta forma si éste contiene un virus que podrían ocasionar daños irreparables, al tener pocos privilegios no podrá ocasionar daños irrecuperables.
UNIVERSIDAD ESTATAL DE BOLÍVAR
FACULTAD DE CIENCIAS DE LA EDUCACIÓN, SOCIALES, FILOSÓFICAS Y HUMANÍSTICAS
 El esquema escogido debe ser psicólogamente aceptable. Si un usuario tiene que hacer mucho esfuerzo para proteger sus ficheros, no lo hará. Si le sucede algo se quejara y le echará la culpa a la dificultad para establecer protecciones del sistema operativo.
Muchos esquemas de seguridad se basan en la suposición de que el sistema conoce la identidad de los usuarios. El problema de identificar los usuarios cuando entran en el sistema Se conoce como legitimación de los usuarios.
La mayoría de los métodos de legitimación se basan en identificar algo que el usuario conozca algo que tenga o algo que sea. Por ejemplo cuando se emplea una tarjeta de crédito la maquina necesita saber quien es y además confirmar que es quien dice que es. Para ello preguntar una clave secreta y solo conocida por el dueño.
Este ejemplo, llevado a las computadoras consiste en que la computadora pregunta un nombre de usuario, una vez que se le ha dado, pregunta la clave secreta para que pueda comprobar que es el verdadero usuario. Este método es fácil de quebrantar. Se hizo un estudio d contraseñas en sistemas UNIX. Confeccionaron una Lista de posibles contraseñas: nombres propios, apellidos, nombres de calles, de ciudades palabras de un diccionario de tamaño medio, números de matrículas y tiras cortas de caracteres aleatorios. A continuación comprobaron si algunas de estas palabras casaba con las contraseñas (o passwords) del sistema y sorprendentemente comprobaron que el 86% de las contraseñas aparecían en la lista. Sabiendo esto solo es cuestión de paciencia y seguro de que se descubre alguna.
Protección
A medida que los sistemas informáticos se han ido haciendo más sofisticados y sus aplicaciones mas difundidas, también ha crecido la necesidad de proteger su integridad. La concepción moderna de la protección ha evolucionado incrementando la fiabilidad de cualquier sistema informático.
La Protección hace referencia a un mecanismo para controlar el acceso de programas, procesos usuarios a los recursos de un sistema informático (impresoras, memoria, ficheros, etc.). Este mecanismo tiene que ofrecer un medio para especificar los controles a imponer, junto con algunas herramientas para hacerlos cumplir.
Existen varios motivos para preocuparse por de la protección. El mas evidente es la necesidad de prevenir la violación intencionada y maliciosa de una restricción de acceso, por parte de un usuario del sistema. Sin embargo, es de importancia más general la necesidad de asegurar cada componente de un programa, únicamente utiliza los recursos del mismo según los criterios que establezca el sistema operativo. Para construir un sistema de protección se tiene que definir, por un lado, la estrategia de UNIVERSIDAD ESTATAL DE BOLÍVAR
FACULTAD DE CIENCIAS DE LA EDUCACIÓN, SOCIALES, FILOSÓFICAS Y HUMANÍSTICAS
protección (de que fallos hay que proteger al sistema) y por otro, los mecanismos de protección (como hacer que se consiga la protección definida por la estrategia).
Ubicación del sistema operativo
Para aclarar se muestra un diagrama donde se indica la ubicación del sistema operativo dentro de la estructura de la computadora personal. Observe que en la base se encuentra el microprocesador, y en general, todo el hardware que se encarga de ejecutar las órdenes y procesos.
Inmediatamente después, en esta organización lógica, se encuentra la BIOS, el cual es un código de intercambio o conjunto de programas que facilitan la transferencia de información e instrucciones de control entre de microprocesador y los periféricos.
En el tercer nivel se encuentra el sistema operativo y, por último, los programas de aplicación. Cabe aclarar que hay programas que corren directamente en DOS y otros que precisan del ambiente operativo Windows para su ejecución. Existen diversos fabricantes de sistemas operativos para DOS, existen Microsoft con su MS­DOS por ser el original que se integra a la IBM PC con el nombre de PC­DOS, Compaq DOS, el Novell DOS, DR­DOS, y el 4DOS. La ventaja de estos sistemas operativos es su compatibilidad entre sí en la mayor parte de las órdenes y principios de operación.
A su vez, entre los sistemas operativos con interface gráfica para PC, se encuentran el Windows NT y el Windows 95, 98 los tres de Microsoft, el OS/2 de IBM y algunas variantes del UNIX como el Solaris, el Linux, y el QNX.
Rutinas que se ejecutan durante el arranque
Vea detalladamente el proceso que se lleva a cabo al ser encendida la computadora, justamente cuando el sistema operativo verifica el hardware existente y toma su control. Cuando se enciende la computadora, se ejecutan automáticamente varias rutinas que permiten poner en marcha la maquina y revisar la fiabilidad del sistema. Estas pruebas corresponden a pequeños programas grabados en una memoria llamada ROM­BlOS cuyas tareas especificas es la comprobación de la integridad de los componentes del sistema.
El proceso de carga del sistema operativo empieza por el arranque, pasando por los comandos propios del sistema y la ejecución de los programas de configuración. Esta secuencia en el proceso de arranque es similar para todos los sistemas. Concluida la verificación del hardware, la ROM­BIOS busca en el sector de arranque de la unidad A: 0 C: una serie de instrucciones que servirán como complemento a las rutinas básicas de entrada y salida almacenadas en La BIOS.
UNIVERSIDAD ESTATAL DE BOLÍVAR
FACULTAD DE CIENCIAS DE LA EDUCACIÓN, SOCIALES, FILOSÓFICAS Y HUMANÍSTICAS
BIBLIOGRAFIA
http://es.wikipedia.org/wiki/Sistema_operativo
• http://es.wikipedia.org/wiki/Historia_de_los_sistemas_operativos
• http://www.monografias.com/Computacion/Sistemas_Operativos/
• http://www.genbeta.com/categoria/sistemas­operativos
• http://www.google.com.ec/imgres?imgurl=http://blog.solusan.com/wp­
content/uploads/2008/12/demanda_sistemas_operativos.gif&imgrefurl=http://blog.solusan.com
/si­los­sistemas­operativos­fueran­lineas­
aereas.html&usg=__b2eyoTh­
pBpwzT0iaDARQuTOl9Q=&h=408&w=463&sz=9&hl=es&start=5&um=1&itbs=1&tbnid=wwe
uluIBv2wx_M:&tbnh=113&tbnw=128&
prev=/images%3Fq%3Dsistemas%2Boperativos%26um%3D1%26hl%3Des%26sa%3DX%26tbs
%3Disch:1
• http://www.monografias.com/trabajos12/hisis/hisis.shtml
• http://www.todobytes.net/Articulos/Historia_SO/historia_so.html
• www.ubuntu.ec
Descargar