ALIPSO.COM - Trabajos prácticos, monografías, apuntes, tesis, manuales, material educativo y mucho más.
 

Página de inicio | Agregar a Favoritos | Contactate con nosotros | Publicidad

Alipso.com
 

Monografías

Examenes

Enlaces

Publicar material o sitio

Foros

ABC del estudio

Diversión

  Buscar material sobre...
Todas las palabras Cualquier palabra Frase Exacta
El sitio en el que encontrás
todo el material que buscás.

   

Enlaces recomendados
   

Material relacionado
 

Material educativo de Alipso relacionado con Sistemas operativos entornos amigables

  • Introducción a los circuitos integrados.: Indice de figuras. Amplificadores. Hojas DAT. Fuentes informativas. Circuitos integrados de interfase. Circuitos de reloj. Sistemas de radio am/fm. Circuito de alarma.
  • Vivienda residencial: Factores que influyen en la construcción de una vivienda. Patrones culturales y de costumbres. Gustos y preferencias estéticas. Materiales y sistemas constructivos. Aislamiento térmico y acústico. Revestimiento Exterior. Concreto. Tipología de una vivienda. Habitaciones.
  • Medios, comunicación y radio: Recopilación de  Teóricos de  la cátedra Historia General de  los Medios y Sistemas de  Comunicación, profesor : Jorge Rivera, de  la carrera Comunicación Social, UBA. Se abre a modo de  introducción con un pantallazo general de Historia de los Medios y s
  • Termoelectricidad: Introducción, Teoría Básica, Teoría de Onsaguer, Teoría de Semiconductores, Descripción de una placa Termoeléctrica, Fabricantes y Modelos de Placas, Sistemas Termoeléctricos de Generación Eléctrica, Sistemas Termoeléctricos de Refrigeración, Termodinámic


  • Enlaces externos relacionados con Sistemas operativos entornos amigables

    Ver enlaces

     

    Publicidad
       

    Monografías
     
    Sistemas operativos y entornos amigables


    Agregado: 12 de ABRIL de 2000 | Palabras: 34637 | Votar! | Sin Votos | Sin comentarios | Agregar Comentario
    Categoría: Apuntes y Monografías > Computación > Varios >

      Imprimir Recomendar a un amigo Recordarme el recurso Descargar como pdf

    SISTEMAS OPERATIVOS Y ENTORNOS AMIGABLES

                 

     

     


    1-FUNCIONES DEL SISTEMA OPERATIVO

     

    Casi sin excepción, toda computadora tiene un sistema operativo. Varían mucho según los distintos modelos de computadora, pero el sistema operativo siempre esta ahí.

    Para la mayoría de los usuarios el sistema operativo es la máquina. nunca ven una máquina ‘en bruto’; en vez de esto ven y utilizan la interfaz  que presenta el sistema operativo.

    Una máquina en bruto es un dispositivo poco agradable. Para que realice una determinada tarea, requiere un programa en una representación binaria específica del código particular de máquina.

    En especial, necesita programas más o menos complicados para manejar sus periféricos antes de que pudiera siquiera comunicarse con el mundo exterior.

    En computadoras personales grandes, en minicomputadoras y en macrocomputadoras, es posible identificar cierto número de partes individuales de software del sistema, la mayor parte, destinadas a la preparación de programas: editores, ensambladores, compiladores, editores de enlace, etc.

    Abarcando todo esto se encuentra el sistema operativo. Dicho sistema se ha descripto como el pegamento que mantiene juntos a todos los otros componentes. También se le puede considerar lo que proporciona  una infraestructura: un medio común en el cual los diferentes programas de sistemas pueden operar, incluyendo los mecanismos para comunicarse con los dispositivos periféricos.

    Hace muchos año, quedó claro que debía determinarse una forma de proteger a los programadores de la complejidad del hardware. La forma en que esto ha evolucionado de manera gradual es colocando un nivel de software por arriba del simple hardware, con el fin de controlar todas las partes del sistema y presentar al usuario una interfaz o máquina virtual que facilite la comprensión del programa. Este nivel de software es el sistema operativo.

    es posible definir la función de un sistema operativo como aquella que proporciona un medio para el usuario de un sistema de computación, cualesquiera que sean sus necesidades: desarrollo de programas, control de procesos en tiempo real, manejo de base de datos, nómina, etc.; En el caso de una computadora personal sólo hay un usuario, y la función única del sistema operativo es implantar la interfaz con el usuario. en el caso de un sistema con múltiples usuarios el sistema operativo debe compartir los recursos a fin de proporcionar la interfaz del usuario a cada uno de éstos.

     

    2- CATEGORIAS DEL SISTEMA OPERATIVO

     

    *  Un solo usuario y múltiples usuarios: se explican por sí mismos.

     

    * Un sistema de multiprogramación es aquel en el cual el procesador(es) disponible (s) (s) comparten (por el sistema operativo) varios programas corresidentes en la memoria  principal, a fin de mejorar la utilización de la C.P.U.

     

    * Un sistema de alta prioridad - baja prioridad es un sistema de un solo usuario en el cual dos programas están multiprogramados. Uno (el de alta prioridad) interactúa con la terminal y corre tanto como sea posible; el programa de baja prioridad se asigna al procesador siempre que el programa de alta prioridad no pueda continuar. En cuanto el trabajo de alta prioridad esté libre para continuar, lo hace.

    Un sistema de alta prioridad - baja prioridad en un caso particular de sistema de un solo usuario y procesos múltiples.

    Un sistema concurrente o de tareas múltiples es una generalización del sistema de alta prioridad - baja prioridad en la cual la persona que utiliza el sistema de un sólo usuario puede iniciar cierto número de trabajos concurrentes, asignando el exhibidor de la terminal a cualquiera de los trabajos, según se necesite.

    Un sistema de tiempo compartido, es aquel que comparte el procesador y la memoria entre cierto número de programas, asociado cada uno con una terminal interactiva remota, de manera tal que cada usuario considera que tiene una máquina para el solo.

    * Un sistema de procesamiento de transacciones  se parece a un sistema de tiempo compartido ya que da servicio a cierto número de terminales remotas. Sin embargo, mientras que en un sistema de tiempo compartido cada usuario remoto está asociado con un programa distinto, y es independiente por completo de las otras terminales y programas, en un sistema. En un sistema Tiempo Compartido todas las terminales  están conectadas al mismo programa. Este programa acepta transacciones provenientes de sus terminales, las procesa y envía respuestas.

    * Un sistema de aplicación  general es un sistema de múltiple usuarios que combinan procesamientos por lotes, tiempo compartido y tal vez procesamiento de transacciones en un sólo sistema( generalmente, grande y complejo)

     

    3-  HISTORIA DE LOS SISTEMAS OPERATIVOS

     

    La primera computadora digital real  fue diseñada por el primer matemático inglés Charles Babbage (1792 - 1871). Nunca logró que funcionara de manera adecuada, ya que ésta era un diseño puramente mecánico y la tecnología de su época no podía producir las ruedas, engranes, levas y demás partes mecánicas con la precisión que él necesitaba. No tenía Sistema Operativo.

    1945 - 1955: la primera generación, bulbos y conexiones

     

    Después de los infructuosos esfuerzos de Babbage, hubo poco progreso en la construcción de las computadoras digitales, hasta la Segunda Guerra Mundial. Se logró construir máquinas de cálculo mediante bulbos. Éstas máquinas eran enormes y llenaban cuartos complejos con decenas de miles de bulbos, y eran mucho más lentas que la computadora casera más económica en nuestros días.

    Un solo grupo de personas diseñaba, construía, programaba, operaba y daba mantenimiento a cada máquina.

    No se oía de los sistemas operativos. El modo usual de operación consistía en que el programador reservaba cierto período en una hoja de reservación pegada a la pared, iba al cuarto de la máquina, insertaba su conexión en la computadora y pasaba unas horas esperando que ninguno de los 20.000 o más bulbos se quemara durante la ejecución.

    1955 - 1965: La segunda generación: Transistores y sistemas de procesamiento por lotes.

     

    Ésta introducción del transistor a mediados de los años cincuenta modificó en forma radical el panorama. Las computadores se volvieron confiables. Por primera vez, hubo una clara separación entre los diseñadores, constructores, operadores, programadores y personal de mantenimiento.

    Para ejecutar un trabajo, el programador debía primero escribir el programa en hojas de papel para después perforar las tarjetas. Después debía llevar el paquete de tarjetas perforadas al cuarto de lectura y dárselas a uno de los programadores.

    Dado el alto costo del equipo, no debe sorprender el hecho de que las personas buscaron en forma por demás, rápida, vías para reducir el tiempo invertido. La solución que, por lo general se adoptó, fue la de sistema de procesamiento por lotes.

     

    1965 - 1980: La tercera generación: Circuitos Inttegrados y Multiprogramación

     

    A principios de la década de los sesenta, estaban las computadoras científicas de gran escala,  orientadas a palabras como la 7094, la cual se utilizaba en cálculos científicos y de ingeniería. Por otro lados, estaban las computadoras comerciales, orientadas a caracteres, como la 1401, de uso común para el ordenamiento de cintas a impresión  por los bancos y las compañías aseguradoras.

    El desarrollo y mantenimiento de dos líneas de productor completamente distintas era una propuesta cara para los fabricantes.

    I.B.M. intentó resolver ambos problemas a la vez;  para ello, introdujo el sistema 360. El 360 era una serie de máquinas con software compatible, con un rango desde la 1401 hasta máquinas más poderosas que la 7094.

     

    La 360 fue  la primera línea principal de computadoras que utilizo los circuitos integrados ( a pequeña escala), lo que proporciono una gran ventaja de precio y desempeño con respecto de las maquinas de la segunda generación, construidas a partir de transistores individuales.

    No había forma de que IBM (o cualquier otra empresa)  pudiera escribir un pedazo de software que cumpliera con todos los requisitos en conflicto. El resultado fue un sistema operativo enorme y extraordinariamente complejo. También popularizaron varias técnicas fundamentales, ausentes de los sistemas operativos de la segunda generación, de las cuales la mas importante tal vez sea la multiprogramación .

    Otra  de las características principales  de los sistemas operativos de la tercera generación era la capacidad de leer trabajos de las tarjetas de discos, tan pronto como llegaron al cuarto de computo,

    Así, siempre que concluyera un trabajo, el sistema operativo podía cargar un nuevo trabajo del disco en la partición que quedara desocupada y ejecutarlo. Esta técnica se llama SPOOLiING y también se utilizo para las salidas. Con el spooling, las 1401 ya no fueron necesarias y desapareció el transporte de las cintas de un lado al otro,

    Aunque los sistemas operativos de la tercera generación  eran adecuados para los grandes cálculos científicos y la ejecución de un procesamiento por lotes.

    Con los sistemas de tercera generación, el tiempo transcurrido entre el envío de un trabajo y la obtención de la salida era a menudo de varias horas.

    Este deseo de una rápida respuesta preparo el camino para el tiempo compartido, variante de la multiprogramación en la que cada usuario tenia una terminal en línea.

    Otro desarrollo fundamental durante la tercera generación fue el crecimiento fenomenal de las minicomputadoras.

    Ken Thompson, se encontró una pequeña minicomputadora PDP-7 que nadie utilizaba e intento escribir una versión desprotegida de multics para un solo usuario.

    Este trabajo desemboco en  el sistema operativo UNIX, que en la actualidad domina los mercados de las minicomputadoras y estaciones de trabajo.

     

    3-d 1980-1990: La cuarta generación: Computadoras personales                       

    Con el desarrollo de los circuitos LCI (Large Scale Integracion) , chips con miles de transistores en un centímetro cuadrado de silicio, se inicio la era de la computadora. Las computadoras personales no eran muy distintas de las minicomputadoras del tipo de la PDP-11, pero en términos del precio si eran distintas.

    Las computadoras personales mas poderosas utilizadas por empresas, universidades e instalaciones de gobierno reciben el nombre de ESTACIONES DE TRABAJO, pero en realidad solo son computadoras personales grandes.

    Un interesante desarrollo que comenzó a llevarse a cabo a mediados de la década  de los ochenta ha sido el crecimiento de las redes de computadoras personales con sistemas operativos de red y sistemas  operativos distribuidos. En un sistema operativo de red, los usuarios están conscientes de la existencia de varias computadoras y pueden  conectarse con maquinas remotas y copiar archivos de una maquina a otra. Cada maquina ejecuta su propio sistema operativo local y tiene su propio usuario.

    Por el contrario, un sistema operativo distribuido es aquel  que aparece ante sus usuarios como un sistema tradicional de un solo procesado, aun cuando este compuesto por varios procesadores. En un sistema distribuido verdadero, los usuarios no deben ser conscientes del lugar donde su programa se ejecute o del lugar donde se encuentran sus archivos; eso debe ser manejado en forma eficaz y automática  por el sistema operativo.

     

     

    Estructura de los sistemas operativos

    Examinaremos cuatro estructuras distintas.

     

     

    Sistemas monolíticos

    Este tipo de organización es la mas común: La estructura consiste en que no existe estructura alguna.

    El sistema operativo se escribe como una educación de procedimientos, cada uno de los cuales puede llamar a los demás cada vez que así lo requiera cuando se usa esta técnica, cada procedimiento del sistema tiene una interfaz bien definida en términos de parámetros y resultados y cada uno de ellos es libre de llamar a cualquier otro si estos últimos proporciona cierto calculo útil para el primero.

    Para construir el programa objeto real del sistema operativo mediante este punto de vista uno compila en forma individual los procedimientos o los archivos que contienen los procedimientos y después los enlaza en un solo archivo objeto con el ligador. En términos del ocultamiento de la información, esta es prácticamente nula: Cada procedimiento es visible a los demás.

    Los servicios que proporcionan el sistema operativo se solicita colocando los parámetros bien definidos, como en los registros o en la pila, para después ejecutar una instrucción especial de trampa  de nombre llamada  al núcleo o llamada al supervisor.

    Esta instrucción cambia la maquina del modo usuario al modo núcleo y transfiere el control al sistema operativo.

    El sistema operativo examina entonces los parámetros de la llamada para determinar cual de ellos se desea realizar; A continuación, el sistema operativo analiza una tabla que contiene en la entrada un apuntador  al procedimiento que realiza la k-esima llamada al sistema. Esta operación identifica el procedimiento de servicio, al cual se llama. Por ultimo, la llamada al sistema termina y el control regresa al programa del usuario.

    Esta organización sugiere una estructura básica del sistema operativo:

    1- Un programa principal se llama al procedimiento del servicio solicitado.

    2- Un conjunto de procedimiento de servicios que lleva a cabo las llamadas al sistema.

    3- Un conjunto de procedimientos utilitarios que ayudan al procedimiento de servicio.

     

     

     

    Sistemas con capas

    Consiste en organizar el sistema operativo como una jerarquía de capas, cada una construida sobre la inmediata inferior. El mismo sistema construido de esta manera fue el sistema THE desarrollado en Holanda.

    El sistema tenia seis capas como se muestra en la figura. La capa 0 con la asignación del proceso t alterna entre los procesos cuando ocurren las interrupciones o expiran los cronómetros sobre la capa 0, el sistema consta de procesos secuenciales, cada uno de los cuales se podía programar sin tener que preocuparse por el hecho de que varios procesos estuvieran en ejecución en el mismo procesador. En otras palabras la capa 0 proporcionaba la multiprogramacion basica de la CPU.

    La capa 1 realizaba la administración de la memoria. Por encima de la capa 1, los procesos no debían preocuparse se estaban en la memoria o  en el recipiente; el software de la capa 1 se encargaba de garantizar que las paginas llegaran a la memoria cundo fueran necesarias        

                                                     CAPAS

    ---------------------------------------------------------------------------------------------------

       5              El procesador

    ---------------------------------------------------------------------------------------------------

      4               Programas  del usuario

    ---------------------------------------------------------------------------------------------------

      3               Control de entrada/ salida

    --------------------------------------------------------------------------------------------------

      2               Comunicación operador - proceso

    --------------------------------------------------------------------------------------------------

      1               Administración de la memoria  y del disco

    --------------------------------------------------------------------------------------------------

      0               Asignación del procesador y multiprogramación

    --------------------------------------------------------------------------------------------------

     

    La capa 2 se encarga de la comunicación  entre cada proceso y la consola del operador . La capa 3 controla los dispositivos E/S y guarda en almacenes (buffers) los flujos de información entre ellos.  Por encima de la capa tres cada proceso puede trabajar con dispositivos de E/S con propiedades adecuadas, en vez de dispositivos reales con muchas peculiaridades. La capa 4 es donde estaban los programas del usuario. Estos no tenían que preocuparse por el proceso, memoria,  consola o control de E/S . El proceso operador del sistema se localizaba en la capa 5.

    Una generalización mas avanzada del concepto de capas se presento en el sistema MULTICS. En lugar de capas, MULTICS  estaba organizado como una serie de anillos concéntricos, siendo los anillos interiores los privilegiados, cuando un procedimiento  de un anillo exterior deseaba llamar a un procedimiento de un anillo exterior debía hacer el equivalente a una llamada al sistema; es decir; una instrucción  TRAP  cuyos parámetros eran validadas con cuidado antes de permitir que procediese la llamada. Aunque todo el sistema operativo era parte del espacio de direcciones  de cada proceso del usuario en MULTICS, el hardware posibilito el diseño de procedimientos individuales (segmentos de memoria, en realidad)  de forma protegida contra la lectura , escritura o ejecución.

     

    Maquinas virtuales

    Son versiones iniciales de OS/360 eran, en sentido estricto, sistemas de procesamiento por lotes. Sin embargo, muchos de los usuarios de 360 deseaban tener tiempo compartido.

    El sistema de tiempo compartido oficial de IBM, tSS/360, tuvo una entrada retrasada y cuando finalmente apareció era tan grande y lento que pocos lugares lo adoptaron

    Este sistema cuyo nombre original era CP/CMS y que ahora se llama VM/370 se baso en una observación astuta:  un sistema de tiempo compartido proporciona multiprogramación y una maquina extendida  con una interfaz mas conveniente que el mero hardware. La esencia de Vm/370 es la total separación entre estas dos funciones.

    El corazón del sistema, llamado monitor de la maquina virtual se ejecuta en el hardware simple y realiza la multiprogramación , proporcionando no una, sino varias maquinas virtuales a la siguiente capa superior; Sin embargo, la diferencia de los demás sistemas operativos,  estas maquinas virtuales no son maquinas extendidas con archivos u otras características adecuadas. En lugar de esto, son copias exactas de hardware simple, con su modo núcleo/usuario, interrupciones y todo lo demás que posee la maquina real.

    Puesto que cada maquina virtual es idéntica  al hardware real , cada una puede ejecutar cualquier sistema operativo que se ejecute en forma directa sobre el hardware.

    Las distinta maquinas virtuales pueden, y por lo general lo hacen , ejecutar distintos sistemas operativos.

    Cuando un programa CMS ejecuta una llamada al sistema, la llamada es atrapada por el sistema operativo en su propia maquina virtual, no a VM/370, de la misma forma en que lo haría si se ejecutar en una maquina real  en vez de una virtual. CMS proporciona entonces las instrucciones normales de E/S en hardware  para la lectura de disco virtual lo necesario para llevar adelante la llamada. Estas instrucciones de E/S son atrapadas por VM/370, que entonces las lleva  a cabo como parte de al simulación del hardware verdadero. Al hacer una separación total de las funciones de multiprogramación y proporcionar una maquina extendida , cada una  de las partes puede ser mas sencilla, flexible y tener un fácil mantenimiento.

     

    Modelo cliente - servidor

     

    VM/370 gano mucho en sencillez al trasladar gran parte del código tradicional del sistema operativo (al implantar la maquina extendida) en una capa superior, CMS.

    Sin embargo, VM/370 sigue siendo un programa complejo, puesto que la simulación de varios 370 virtuales no es tan simple (en especial si usted desea que todo sea eficaz).

    Una tendencia de los sistemas operativos modernos es la de explorar mas esta idea de mover el codigo a capas superiores y eliminar la mayor parte posible del sistema operativo para mantener un nucleo mínimo. El punto de vista usual es el de implantar la mayoría de las funciones del sistema  operativo en los procesos del usuario.

    Para solicitar un servicio, como la lectura de un bloque de cierto archivo, un proceso del usuario (denominado en este caso proceso cliente) envía la solicitud a un proceso servidor, que realiza entonces el trabajo y regresa la respuesta.

    Otra de las ventajas del modelo cliente- servidor es su capacidad de adaptación para su uso en los sistemas distribuidos.

    Algunas funciones del sistema operativo (como el cargado de comandos  en los registros físicos del dispositivo de E/S) son difíciles, si no es que imposibles  de realizar a partir de programas del usuario. Existen dos formas de enfrentar  este problema. Una es la de hacer que algunos  procesos de servidores críticos se ejecuten en realidad en modo núcleo, con acceso total al hardware pero de forma que se comuniquen con los demás procesos mediante el mecanismo normal de mensajes.

    La otra forma es la  de construir una cantidad  mínima de mecanismos dentro del núcleo, pero manteniendo las decisiones de política relativas a los usuarios dentro del espacio del usuario

     

     

     

     


     

    4 -PROCESOS

     

    La CPU ejecuta una elevada cantidad de programas, y aunque su principal ocupación es la ejecución de los programas, también se requiere para otras actividades del sistema. A estas actividades se las denomina procesos.

     

    Un proceso es la unidad de trabajo dentro de un sistema.

     

    Proceso secuencial

     

    Es un programa en ejecución. La ejecución de un proceso debe proceder en forma secuencial, en cualquier momento se ejecuta como máximo una instrucción en nombre del proceso. Un proceso es más que el código del programa aunado a la actividad que se desarrolle, por lo general, incluye tambien la pila del proceso que contiene datos  temporales y una sección de datos con variables globales.

    Un proceso es una entidad activa.

     

    Estado de un proceso

     

    El estado de un proceso se define en parte por la actividad de este proceso y cada proceso secuencial puede encontrarse en uno de los siguientes estados

     

    ·         En ejecución: las instrucciones se están ejecutando.

    ·         En espera: el proceso está esperando a que ocurra algún suceso.

    ·         Listo: el proceso está esperando que se le asegure a un procesador.

     

     

    Bloque de control de procesos

     

    Un bloque de control de procesos, es un registro de datos que contiene diversa información relacionada con un proceso concreto que incluye

     

    ·         Estado del proceso

    ·         Contador del programa

    ·         Registros de la CPU

    ·         Información de la planificación de la CPU

    ·         Información de la administración de memoria.

    ·         Información contable.

    ·         Información del estado de la E/S.

     

    Procesos concurrentes

     

    Los procesos pueden ejecutarse concurrentemente.

    Existen varias razones para permitir la ejecución concurrente

     

    ·         Compartir recursos físicos.

    ·         Compartir recursos lógicos.

    ·         Acelerar los cálculos.

    ·         Modularidad.

    ·         Comodidad.

     

    Creación de procesos

     

    Un proceso puede crear varios procesos nuevos a través de una llamada al sistema para la creación de procesos.

    El proceso que crea se lo llama padre y al creado hijo.

    Si un proceso crea otro nuevo, hay dos alternativas habituales de implantarlo.

    ·         El padre continua su ejecución concurrentemente con los hijos.

    ·         El padre espera o que sus hijos hayan terminado. En general el proceso necesitará recursos (memoria o archivos) cuando crea un subproceso, este último puede obtener recursos directamente del sistema operativo que queda restringido a su padre.

     

    4.2 TERMINACION DE PROCESOS

     

    El proceso termina cuando concluye la ejecución de su último enunciado y solicita al sistema operativo que elimine el proceso.

    Un proceso puede provocar la terminación de otro a través de la llamada al sistema apropiado.

    Varios sistemas no permiten que los hijos existan si los padres han terminado. En estos sistemas cuando el padre termina, también deben terminar los hijos A éste fenómeno se lo denomina terminación en cascada.

     

    RELACION ENTRE PROCESOS

     

    Un  proceso puede ser independiente si no puede afectar o ser afectado por los otros procesos que se ejecutan. Tiene las siguientes características:

    ·         Su estado no es compartido de ninguna manera por otro proceso.

    ·         Su ejecución es determinista, es decir, el resultado de la ejecución depende en exclusiva del estado de entrada.

    ·         Su ejecución es reproducible, es decir, el resultado de la ejecución será el mismo para una misma entrada.

    ·         Su ejecución puede detenerse o renunciarse sin ocasionar efectos adversos.

     

    Un proceso es cooperativo cuando:

    ·         Su estado es compartido por otros procesos.

    ·         El resultado de su ejecución depende de una secuencia de ejecución relativa.

    ·         El resultado de su ejecución no es determinista.

     

     

    4.3 PLANIFICACION

     

    Los beneficios de la multiprogramación son un aumento de la utilización de la CPU. La productividad es la cantidad de trabajo desarrollado en intervalo de tiempo.

     

    Colas de planificación

     

    Conforme los procesos entran en el sistema, se colocan en una cola de trabajos formada por todos los procesos que residen en almacenamiento secundario esperando la aseguración de la memoria principal.

     

     

    Planificadores

     

    En un sistema por lotes se presentan mas procesos que los que se pueden ejecutar de inmediato, estos procesos se envian a un “spooler” en un dispositivo de almacenamiento masivo. El planificador a corto plazo selecciona uno de los procesos de éste depósito y los carga en memoria para su ejecución. El planificador a corto plazo selecciona uno de los procesos listos para la ejecución y le asegura la cpu.

    La diferencia entre los planificadores es la frecuencia de su ejecución.

    El planificador a largo plazo controla el grado de multiprogramación si, éste es estable, entonces la tasa promedio de creación de promedios debe ser igual a la tasa promedio de salida de procesos. En algunos sistemas es posible que no existan planificadores a largo plazo o que su función sea mínima.

     

     

    Planificación de la CPU

     

    Es una función fundamental del sistema operativo. Casi todos los recursos de un computador se planifican antes de usarse.

     

     

    Siempre que la CPU queda inactiva, el sistema operativo debe seleccionar para su ejecución uno de los procesos de la cola de procesos listos y le asegura la CPU. Esta cola no es necesariamente “primero que entra, primero que sale”.

    Las decisiones de planificación pueden efectuarse en 4 circunstancias.

     

    1.        Cuando un proceso cambia del estado de ejecución, al estado de espera.

    2.        Cuando un proceso cambia del estado de ejecución al estado de listo.

    3.        Cuando un proceso cambia del estado de espera al estado de listo.

    4.        Cuando termina el proceso.

     

    Algoritmos de planificación

     

    Los criterios que se emplean para la utilización de los algoritmos son los siguientes:

     

    ·         Utilización de la CPU, queremos que la CPU se mantenga tan ocupado como sea posible (entre un %40 y %90).

    ·         Productividad, una medida del trabajo es el número de procesos que se completan por unidad de tiempo.

    ·         Tiempo de retorno, el tiempo de retorno es el intervalo entre el momento de ofrecer el proceso y el momento de aceptarlo.

    ·         Tiempo de espera, es el tiempo de espera para cada proceso.

    ·         Tiempo de respuesta, es la calidad de tiempo para comenzar a responder.

     

    Es deseable maximizar la utilización de la CPU y la productividad, y minimizar los tiempos de respuesta, retorno y espera.

    Hay varios algoritmos para la planificación de la CPU:

     

    ·         Planificación servicio por orden de llegada

    Es definitivamente el más sencillo. Con este esquema el proceso que primero solicita la CPU es al primero que se le asegura.

    El código para la planificación es sencillo de escribir y comprender.

    El tiempo de espera promedio es bastante largo. Es especialmente conflictivo en los sistemas de tiempo compartido.

     

    ·         Planificación “Primero el trabajo mas breve”

    Asocia a cada proceso la longitud de su siguiente ráfaga de CPU. Cuando la CPU está disponible, se le asegura al proceso que tiene la ráfaga más corta. Si dos procesos tienen la misma longitud se utiliza el orden de llegada.

    Este tipo de planificación se utiliza frecuentemente. No puede usarse en planificación a corto plazo.

     

     

     

     

    ·         Planificación por prioridades

    Se asocia una prioridad a cada proceso y la CPU se asegura al de mayor prioridad. Los de igual prioridad se ordena por orden de llegada.

    Las prioridades pueden definirse interna o externamente.

    El serio problema de este tipo de algoritmos es el bloqueo indefinido o inanición. Un proceso de baja prioridad puede quedar esperando indefinidamente.

     

    ·         Planificación circular

    Está diseñada especialmente para sistemas de tiempo compartido.

    Se define una pequeña unidad de tiempo. La cola de procesos listos se trata como una cola circular, el planificador la recorre asegurando la UCP o cada proceso por intervalo de hasta un cuanto tiempo.

    Mantenemos la cola de procesos listos, como una cola. Primero entrada primero salida. El planificador toma el primer proceso de la cola programa un cronometro para que interrumpa después de un tiempo y despache el proceso.

     

    ·         Planificación de múltiples niveles

    Este algoritmo divide la cola de procesos listos en diversa colas. Los procesos se aseguran a una cola. Cada cola tiene su propio algoritmo de planificación. Debe existir planificación entre las colas. Cada cola tiene prioridad absoluta sobre las colas de menor prioridad.

     

     

     

    4.4 COORDINACION DE PROCESOS

     

    Un proceso productor genera información que será aprovechada por un proceso consumidor. Para permitir que se genere concurrentemente, debemos crear un depósito (pool) de buffers que puede llenar el productor y vaciar el consumidor.

    El problema del productor - consumidor con buffers ilimitado, no establece limite en el número de buffers: el consumidor puede tener que esperar nuevos elementos, pero el productor siempre puede producirlos por que siempre hay buffers vacios. El problema de buffers limitado, supone un número fijo de buffers y el productor puede tener que esperar si están llenos y el consumidor si están vacios.   

     

     

    EL PROBLEMA DE LA SECCION CRITICA

     

    Cada proceso tiene un segmento de código llamado sección crítica en el cual el proceso puede estar modificando variables comunes, actualizando una tabla, escribiendo en un archivo,etc. La ejecución de las secciones críticas de los procesos es mutuamente excluyente en el tiempo.

     

    Una solución para la sección crítica debe cumplir con tres requisitos:

     

    1.        EXCLUSION MUTUA: Si un proceso se está ejecutando en su sección crítica ningún otro proceso se puede estar ejecutando en la suya.

    2.        PROGRESO: Si ningún proceso se está ejecutando en su sección y hay otros procesos que desean entrar en las suyas, entonces sólo aquellos procesos que no se están ejecutando en su sección restante pueden participar en la decisión de cuál será el siguiente en entrar en la sección crítica, y esta selección no puede postergarse indefinidamente.

    3.        ESPERA LIMITADA: Debe haber un límite en el número de veces que se permite que los demás procesos entren en su sección crítica después de que un proceso haya efectuado una solicitud para entrar en la suya y antes de que se conceda esa solicitud.

     

    HARDWARE DE SINCRONIZACION

     

    Como resolver el problema de la sección crítica?

    El problema de la sección crítica puede solucionarse simplemente evitando que ocurran interrupciones mientras se modifica una variable compartida, pero por desgracia no siempre es factible esta solución. Por esto, muchas máquinas ofrecen instrucciones de hardware especiales que permiten evaluar y modificar el contenido de una palabra o intercambiar automáticamente el contenido de dos palabras.

     

     

    Semáforos

     

    Las soluciones al problema de la sección crítica a veces no son tan sencillos de generalizar es por eso que se puede utilizar una herramienta de sincronización llamada semáforo.Un semáforo S es una variable entera a la que, salvo por la asignación de valores iniciales, sólo puede accederse mediante dos operaciones atómicas comunes: espera y señal. Las modificaciones al valor entero del semáforo en las operaciones espera y señal se ejecutan indivisiblemente. Es decir, cuando un proceso modifica el valor del semáforo, ningún otro proceso puede modificar simultáneamente ese mismo valor.

     

       

    Implantación

     

    La principal desventaja de las soluciones para el problema de la sección crítica es que todas requieren una espera activa. Mientras un proceso se encuentra en su sección crítica, cualquier otro proceso que intente entrar en esa sección deberá ejecutar un ciclo continuo en la sección de entrada. La espera activa desperdicia ciclos de CPU que otros procesos podrían usar productivamente. A éste tipo de semáforos se los llama cerradura giratoria. La ventaja de una cerradura giratoria es que no es necesario efectuar un cambio de contexto cuando el proceso debe esperar a una cerradura. Por esto, cuando se espera que las cerraduras tengan una duración muy breve, las cerraduras giratorias son bastante útiles.

    Para superar la necesidad de la espera activa, podemos modificar la definición de las operaciones espera y señal del semáforo. Cuando un proceso ejecuta la operación espera y encuentra que el valor del semáforo no es positivo, debe esperar, pero puede bloquearse a si mismo para no esperar activamente.Un proceso bloqueado debe reiniciarse con la ejecución de una señal de otro proceso. La operación bloquear suspende al proceso que la invoca. La operación despertar reanuda la ejecución de un proceso bloqueado.

    Debemos garantizar que dos procesos no pueden ejecutar operaciones espera y señal al mismo tiempo en el mismo semáforo.

     

    Bloqueos mutuos y bloqueos indefinidos    

       

    La implantación de un semáforo con cola de espera puede dar como resultado una situación donde dos o más procesos esperen indefinidamente un suceso que solo puede ocasionar uno de los procesos de espera. Cuando se llega a este estado, se dice que los procesos están el bloqueo mutuo.

    Decimos que un conjunto de procesos está en bloqueo mutuo cuando uno de los procesos del conjunto está esperando un suceso que solamente puede ser provocado por otro proceso del conjunto.

     

     

    PROBLEMAS CLASICOS DE SINCRONIZACION