Make your own free website on Tripod.com

Universidad Interamericana De Puerto Rico

Recinto Metropolitano

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Sistemas Operativos

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Estudiante: Israel Alicea López

Prof.  Domingo Cordero

Clase: M-J / 9:00pm-10:30pm

 

¿Qué es un Sistema Operativo?

 

Un sistema operativo es un grupo de programas de proceso con las rutinas de control necesarias para mantener continuamente operativos dichos programas. El Sistema Operativo es el programa fundamental de todos los programas de sistema. Ademas protege y libera a los programadores de la complejidad del hardware, colocándose un nivel de software por sobre el hardware para:

  1. Controlar todas las partes del sistema.
  2. Presentar al usuario una interfaz o máquina virtual

Historia de los Sistemas Operativos

  1. Generación Cero (década de 1940):

·         Carencia total de sistemas operativos.

·         Completo acceso al lenguaje de máquina.

  1. Primera generación (1945-1955): bulbos y conexiones:

·         Carencia de sistemas operativos

·         En los años cincuenta comienzan como transición entre trabajos, haciendo la misma más simple.

  1. Segunda generación (1955-1965): transistores y sistemas de procesamiento por lotes (batch):

·         En los años sesenta aparecen los S. O. para sistemas compartidos con:

v      Multiprogramación: varios programas de usuarios se encuentran al mismo tiempo en el almacenamiento principal, cambiando el procesador rápidamente de un trabajo a otro.

v      Multiprocesamiento: varios procesadores se utilizan en un mismo sistema para incrementar el poder de procesamiento.

  1. Tercera generación (1965-1980): circuitos integrados y multiprogramación
  2. Cuarta generación (1980-1990): computadoras personales:

 

v      Los usuarios están conscientes de la existencia de varias computadoras conectadas.

v      Cada máquina ejecuta su propio S. O. local.

v      Son similares a los S. O. de un solo procesador pero con el agregado de:

ü       Controlador de interfaz de la red y su software de bajo nivel.

ü       Software para conexión y acceso a archivos remotos, etc.

v      Aparece ante los usuarios como un S. O. de un solo procesador, aún cuando de soporte a varios procesadores.

v      Los usuarios no son conscientes del lugar donde se ejecutan sus programas o donde se encuentran sus archivos, ya que lo debe administrar el S. O. automáticamente.

v      Deben permitir que un programa se ejecute mediante varios procesadores a la vez, maximizando el paralelismo.

Sistemas Operativos Por Sus Estructura

 

  1. Estructura Monolítica : La construcción del programa final es a base de módulos compilados separadamente y que se unen a graves de un ligador. Carecen de protecciones  y privilegios al manejar recursos como memoria y disco duro.

 

  1. Estructura Jerárquica : El sistema operativo contiene subpartes y esto organizado en forma de niveles ó capaz.

 

  1. Maquina Virtual : Presenta una interfase a cada proceso, mostrando una maquina que parece idéntica a la maquina real subyacente. Se reparan los conceptos que suele estar unidos en el resto del sistema: La multiprogramación y la maquina extendida.

 

  1. Cliente-Servidor (MicroKernel): Es el más reciente y predominante, sirve para toda clase de aplicaciones y el propósito de este es de tipo general cumpliendo así con las mismas actividades de los otros sistemas operativos.

 

Su núcleo (core) esta designado a establecer comunicación entre los clientes y servidores. Los procesos pueden ser tanto servidores como cliente a su vez el cliente actual como servidor para otro proceso.

 

 

Sistemas Operativos Por Servicios

 

  1. Monousuarios : Soportan un usuario a la vez sin importar los procesadores que tengan la computadora o los procesos y tareas que el usuario puede realizar al mismo tiempo. Ejemplo: las PC

 

  1. Multiusuario : Ofrece servicio a mas de un usuario a la vez ya sea por medio de terminales o secciones remotas en un red. No importa la cantidad de procesadores que tenga la maquina ni la cantidad de procesos que se realicen  a la misma vez.

 

  1. Monotareas : Permite una tarea a la vez por usuario. Aunque hallar más de un usuario a la misma vez solo permitirá una tarea por usuario.

 

  1. Multitareas : Permite al usuario realizar varias tareas a la misma vez.

 

  1. Uniproseso : Maneja solamente un procesador de la computadora. Si tuviera más de uno seria inútil. Ejemplo: Dos y MacOS

 

  1. Multiproceso : Puede manejar más de un procesador distribuyendo la carga asimétrica y simétrica.

 

Sistemas Operativos Por La Forma Que Ofrecen Sus Servicios

 

  1. Sistema Operativo De Red : Interactúan con otras computadoras a través de un medio transmisión que intercambia información, transfiere archivo, ejecutar comandos remotos y otras tareas.

 

  1. Sistemas Operativos Distribuidos : Incluyen los servicios que ofrece los sistemas operativos de red incluyen ó añade recursos (impresoras, unidades de respaldo, memoria, procesos y unidad central de proceso) adicionales en una sola maquina virtual que el usuario accesa de forma transparente.

 

Ventajas De Los Sistemas Distribuidos

 

  1. Ventajas sobre los sistemas centralizados:

 

a)      Economía

b)      Velocidad

c)      Confiabilidad

d)      Crecimiento

e)      Distribución

 

  1. Ventajas sobre los sistemas aislados:

 

a)      Compartir Datos

b)      Compartir Dispositivos

c)      Comunicaciones

 

  1. Desventajas:

 

a)      Comparición de datos y recursos

b)      Problemas con la concurrencia y paralelismo

 

Administración De La Memoria

 

  1. Problema De La Re-Localización: Ocurre cuando un programa se carga en una dirección de memoria real distinta a la que el programa se le definió al momento de la compilación del mismo.

 

  1. Problemas De Protección : Una vez un programa ha sido cargado en memoria nada le impide al programador direccional localidades de memoria.

 

  1. Particiones Fijas ó Variables :

 

a)      Particiones Fijas : Se crean cunado se enciende el equipo y permanecen con los tamaños iniciales hasta que se apague el equipo.

b)      Particiones Variables : Se crearon para mejorar las particiones fijas creando particiones contiguas de tamaño variable. Cuando un programa es cargado en memoria RAM el sistema analiza los huecos disponibles con le tamaño suficiente para el programa.

 

Algoritmos Para Asignar Huecos En La Memoria:

 

·        Primer Ajuste : Se asigna el primer hueco mayor al tamaño deseado.

·        Mayor Ajuste : Se asigna el hueco que exceda en menor cantidad al deseado. Requiere búsqueda exhaustiva.

·        Peor Ajuste : Se asigna el hueco que exceda en mayor cantidad al deseado. Requiere búsqueda exhaustiva.

·        Siguiente Ajuste : Igual al “Primer Ajuste” con un apuntador con el lugar del ultimo hueco asignado para que en una próxima búsqueda comience a partir de el.

·        Ajuste Rápido : Se mantiene una lista organizada de acuerdo a los tamaños de los huecos, así el proceso de búsqueda es mas rápido.

 

  1. Overlays : El programador dividía lógicamente un programa muy grande en secciones que puedan almacenarse en las particiones de RAM. Requiere que el programador descargara por medio de llamadas las secciones presentes.

 

  1. Paginación Pura : Manejo de memoria del sistema operativo que consiste en dividir  dinámicamente los programas en unidades de tamaño fijo, los manipulara de RAM a disco y viceversa. A este proceso se le conoce como intercambio ó swapping.

 

  1. Segmentación Pura : Asigna particiones de memoria a cada segmento de un programa buscando hacer fácil compartir segmentos (Ejemplo: librerías compartidas) intercambiarlos con memoria y los medios de almacenamiento secundarios.   

 

Sistemas de Archivos

 

Un archivo es un conjunto de registros relacionados. El sistema de archivos está relacionado especialmente con la administración del espacio de almacenamiento secundario, fundamentalmente con el almacenamiento de disco

 

  1. Estructura de un Archivo : Los archivos se pueden estructurar de varias maneras, las más comunes son

 

·        Secuencia de Bytes

v     El archivo es una serie no estructurada de bytes

v     Posee máxima flexibilidad

v     El sistema operativo no ayuda pero tampoco estorba

·        Secuencia de registros

v     El archivo es una secuencia de registros de longitud fija, cada uno con su propia estructura interna

·        Árbol

v     El archivo consta de un árbol de registros, no necesariamente de la misma longitud.

v     Cada registro tiene un campo key (llave o clave) en una posición fija del registro.

v     El árbol se ordena mediante el campo de clave para permitir una rápida búsqueda de una clave particular

  1. Acceso a un Archivo

·        Acceso Secuencial : el proceso lee en orden todos los registros del archivo comenzando por el principio, sin poder

·        Acceso Aleatorio : el proceso puede leer los registros en cualquier orden utilizando dos métodos para determinar el punto de inicio de la lectura

 

  1. Atributos de Archivo

·        Protección: quién debe tener acceso y de qué forma.

·        “Contraseña”: contraseña necesaria para acceder al archivo.

·        “Creador”: identificador de la persona que creó el archivo.

·        “Propietario”: propietario actual.

·        “Bandera exclusivo - para - lectura”: 0 lectura / escritura, 1 para lectura exclusivamente.

·        “Bandera de ocultamiento”: 0 normal, 1 para no exhibirse en listas.

·        “Bandera de sistema”: 0 archivo normal, 1 archivo de sistema.

·        “Bandera de biblioteca”: 0 ya se ha respaldado, 1 necesita respaldo.

·        “Bandera ascii / binario”: 0 archivo en ascii, 1 archivo en binario.

·        “Bandera de acceso aleatorio”: 0 solo acceso secuencial, 1 acceso aleatorio.

·        “Bandera temporal”: 0 normal, 1 eliminar al salir del proceso.

·        “Banderas de cerradura”: 0 no bloqueado, distinto de 0 bloqueado.

·        “Longitud del registro”: número de bytes en un registro.

·        “Posición de la llave”: ajuste de la llave dentro de cada registro.

·        “Longitud de la llave”: número de bytes en el campo llave.

·        “Tiempo de creación”: fecha y hora de creación del archivo.

·        “Tiempo del último acceso”: fecha y hora del último acceso al archivo.

·        “Tiempo de la última modificación”: fecha y hora de la última modificación al archivo.

·        “Tamaño actual”: número de bytes en el archivo.

·        “Tamaño máximo”: tamaño máximo al que puede crecer el archivo.

  1. Operaciones con Archivos

·        Create (crear): el archivo se crea sin datos.

·        Delete (eliminar): si el archivo ya no es necesario debe eliminarse para liberar espacio en disco. Ciertos S. O. eliminan automáticamente un archivo no utilizado durante “n” días.

·        Open (abrir): antes de utilizar un archivo, un proceso debe abrirlo. La finalidad es permitir que el sistema traslade los atributos y la lista de direcciones en disco a la memoria principal para un rápido acceso en llamadas posteriores.

·        Close (cerrar): cuando concluyen los accesos, los atributos y direcciones del disco ya no son necesarios, por lo que el archivo debe cerrarse y liberar la tabla de espacio interno.

·        Read (leer): los datos se leen del archivo; quien hace la llamada debe especificar la cantidad de datos necesarios y proporcionar un buffer para colocarlos.

·        Write (escribir): los datos se escriben en el archivo, en la posición actual. El tamaño del archivo puede aumentar (agregado de registros) o no (actualización de registros).

·        Append (añadir): es una forma restringida de “write”. Solo puede añadir datos al final del archivo.

·        Seek (buscar): especifica el punto donde posicionarse. Cambia la posición del apuntador a la posición activa en cierto lugar del archivo.

·        Get attributes (obtener atributos): permite a los procesos obtener los atributos del archivo.

·        Set attributes (establecer atributos): algunos atributos pueden ser determinados por el usuario y modificados luego de la creación del archivo. La información relativa al modo de protección y la mayoría de las banderas son un ejemplo obvio.

·        Rename (cambiar de nombre): permite modificar el nombre de un archivo ya existente.

Planificación Del Procesador :

       

     Técnicas que se usan para decidir el tiempo de ejecución y cuanto se le asignan cada

     Proceso de sistema.

 

  1. Objetivos De La Planificación : Debe buscar que los procesos obtengan sus turnos de ejecución apropiadamente, conjuntamente con buen rendimiento y minimización de la carga (overhead) del planificador.

 

 

                  Planificación Apropiada ó No Apropiada

 

1.      Planificación Apropiada : Una vez que a un proceso le toca su turno de ejecución ya no se le puede ser suspendido, ya no se le puede arrebatar el cpu.

 

2.      Planificación No Apropiada : Existe un reloj que lanza interrupciones periódicas en las cuales el planificador toma el control y decide si el mismo proceso seguirá ejecutándose  o se le sedera el turno a otro proceso.

 

Algoritmos de Asignación de Turno de Ejecución :

 

·        Por Prioridad : El de mayor prioridad se ejecuta primero. Si hay procesos con igual prioridad se ejecuta en orden de llegada.

·        El  Trabajo Mas Corto Primero : Difícil de llevar a cabo, necesita estimación de cuanto tiempo necesitara el proceso para terminar.

·        El Primero en Llegar Primero en Ejecutarse : Los procesos que llegan reciben su turno conforme llegan.

·        Round Robin : Consiste en darle a cada proceso un intervalo de tiempo de ejecución y cada vez que se vence ese intervalo se copia el contesto de este, en el lugar seguro y se le pasa el turno a otro.

·        El Tiempo Restante Mas Corto : Parecido al “trabajo mas corto primero” pero aquí se calcula en todo momento cuando el tiempo restante para terminar a los procesos.

·        La Tasa de Respuesta Mas Alta : Concede el turno de ejecución al proceso que produzca el valor mayor con ciertas formulas determinadas.

·        Por Política : Se establece un reglamento específico que el planificador debe obedecer.

 

 

 

  1. Problemas De Concurrencia : En los sistemas de tiempo compartido se presentan muchos problemas debido a que los procesos compiten por los recursos del sistema.

 

  1. Controladores De Dispositivos ( terminales, discos duros ) : Son las partes electrónicas de los periféricos el cual puede tener forma de tarjeta ó un circuito integrado a la tarjeta maestra de la computadora.

 

  1. Acceso Directo a Memoria (DMA) : Se invento con el propósito de liberar el cpu de la carga de atender algunos controladores de dispositivos.

 

  1. Relojes : Son esenciales para el buen funcionamiento de cualquier sistema porque juegan un papel decisivo en la sincronización de procesos, en la calendarización de trabajos por lote y para asignación de turno de ejecución.

 

  1. Núcleos De Sistemas Operativos  :

 

 

Conceptos

 

Trabajo, Proceso, Thread :

 

·        Trabajo : Se conceptualiza como un conjunto de uno ó más procesos.

·        Proceso : Se define como la imagen de un programa en ejecución, o sea en memoria y usando el cpu.

·        Thread : Es un trozo ó una sección de un proceso que tiene sus propios registros, pila y “program counter”. Puede compartir la memoria con los Thread que forman parte del mismo proceso.

·        Objetos : Es una entidad que contiene dos partes principales: una colección de atributos y un conjunto de métodos ó servicios.

v     Atributos : No pueden ser cambiados por el usuario y de haber un cambio debe ser a través  de los métodos.

v     Métodos : Son accesibles al usuario y es lo único que el observa : Es lo que se conoce como interfase del objeto.

·        Cliente-Servidor :

v     Cliente : Es un proceso que necesita algún valor ó de alguna operación externa para poder trabajar.

v     Servidor : Es la entidad que provee ese valor ó realiza esa operación que necesita el cliente para poder trabajar.

 

  1. Introducción y Definiciones Sobre Procesos

 

El concepto central de cualquier Sistema Operativo es el de proceso: una abstracción de un programa en ejecución también llamada tarea. No hay un acuerdo universal sobre una definición de proceso. Un proceso es una actividad de un cierto tipo, que tiene un programa, entrada, salida y estado. Un solo procesador puede ser compartido entre varios procesos con cierto algoritmo de planificación , el cual determina cuándo detener el trabajo en un proceso y dar servicio a otro distinto.

 

Los estados, que puede tener un proceso son:

 

 

Procesamiento de Interrupciones

 

 Una interrupción es un evento que altera la secuencia en que el procesador ejecuta las instrucciones; es un hecho generado por el hardware del computador. Generalmente las interrupciones se pueden clasificar por tipos según el siguiente detalle:

·        “SVC (llamada al supervisor)”: es una petición generada por el usuario para un servicio particular del sistema, por ejemplo, realización de Entrada / Salida u obtención de más memoria.

·        “Entrada / Salida”: son iniciadas por el hardware de Entrada / Salida, indicando a la cpu que ha cambiado el estado de un canal o dispositivo, por ejemplo, finalización de Entrada / Salida u ocurrencia de un error.

·        “Externas”: son causadas por distintos eventos, por ejemplo, expiración de un cuanto en un reloj de interrupción o recepción de una señal de otro procesador en un sistema multiprocesador.

·        De reinicio”: ocurren al presionar la “tecla de reinicio” o cuando llega una instrucción de reinicio de otro procesador en un sistema multiprocesador.

·        De verificación de programa”: son causadas por errores producidos durante la ejecución de procesos.

·        De verificación de máquina”: son ocasionadas por un mal funcionamiento del hardware.

 

               Planificación de Procesos

                 

                 Cuando más de un proceso es ejecutable desde el punto de vista lógico, el

                 sistema operativo debe decidir cuál de ellos debe ejecutarse en primer término.  

                

                       Criterios de la Planificación

 

·        Equidad : Garantizar que cada proceso obtiene su proporción justa de la cpu.

·        Eficacia :  Mantener ocupada la cpu el ciento por ciento 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 (batch) para obtener sus resultados.

·        Rendimiento : Maximizar el número de tareas procesadas por hora

 

Niveles de Planificación del Procesador

 

·        Planificación de alto nivel :

v     También se denomina Planificación de trabajos.

v     Determina a qué trabajos se les va a permitir competir activamente por los recursos del sistema, lo cual se denomina Planificación de admisión.

·        Planificación de nivel intermedio:

v     Determina a qué procesos se les puede permitir competir por la cpu.

v     Responde a fluctuaciones a corto plazo en la carga del sistema y efectúa “suspensiones” y “activaciones” (“reanudaciones”) de procesos.

v     Debe ayudar a alcanzar ciertas metas en el rendimiento total del sistema.

 

 

·        Planificación de bajo nivel:

v     Determina a qué proceso listo se le asigna la cpu cuando esta queda disponible y asigna la cpu al mismo, es decir que “despacha” la cpu al proceso.

v     La efectúa el Despachador del Sistema Operativo, el que opera muchas veces por segundo y reside siempre en el almacenamiento primario.

  1. Núcleo Monolítico : Esta dividido en dos partes estructuradas; El núcleo dependiente del hardware y el independiente del hardware.

 

a)      Núcleo Dependiente : Se encarga de manejar las interrupciones del hardware, hacer el manejo de bajo nivel de memoria y discos. Además trabajar con los manejadores de dispositivos de bajo nivel principalmente.

 

  1. MicroKernels : Es aquel que contiene únicamente el manejo de procesos, thread y un manejo bajo de memoria, así como dar soporte a la comunicaciones, manejar interrupciones y operaciones de bajo nivel de entrada-salida. Permite que los servidores no estén atados a un fabricante en particular.