Subido por julio perez

SO Silberschatz - Capítulo 01

Anuncio
Resumen Sistemas Operativos
Silberchatz
Capítulo 1:
Un sistema operativo es un programa que administra, controla y coordina
el uso del hardware (recursos) entre los diversos programas de aplicación
(ej: editor de texto, navegador web), también actúa como intermediario
entre el hardware y el usuario.
Desde el punto de vista de un usuario, un sistema operativo puede
enfocarse en:
 Dejar que el usuario monopolice los recursos (sistema
monousuario), para maximizar el trabajo, prestando poca
atención al rendimiento y ninguna a la utilización de recursos
compartidos entre software y hardware.
 Para sistemas multiusuario, el sistema operativo se enfoca en
la utilización compartida de recursos entre las distintas
terminales.
 Para sistemas del tipo cliente-servidor, el SO se enfoca en
optimizar tanto la usabilidad individual (para el cliente), como
la asignación de recursos para cada uno.
Desde el punto de vista del sistema:
 Se lo puede relacionar íntimamente como un asignador y
controlador de recursos.
 También gestiona el orden de ejecución de los programas de
usuario para un correcto funcionamiento.
Funcionamiento de un sistema:
Una computadora consta de una o más CPU y una serie de controladores
de dispositivo. La CPU y los distintos controladores se conectan en un bus
común en donde tienen acceso a la memoria compartida. Ambos pueden
ejecutarse concurrentemente, por lo que para asegurar el uso eficiente de
memoria, se asigna un controlador de memoria para sincronizar el acceso
a esta.
Interrupción:
Señal que avisa la ocurrencia de un suceso, estos puede ser
mediante:
 Hardware: puede activarse en cualquier momento
mediante una señal a la CPU, a través del bus del
sistema(teclado,reloj,dma,...).
 Software: puede activarse ejecutando una operación
especial denominada llamada al sistema. Una
interrupción generada por software por un error (div x
0 o acceso a memoria no valido) se llama excepción.
Una interrupción por software, es un mecanismo de comunicación entre
un proceso (que se ejecuta en modo usuario) y el sistema operativo (que
se ejecuta en modo supervisor). El proceso emplea las interrupciones por
software para notificar al sistema operativo que requiere de su
intervención.
Primero, consideremos las interrupciones del sistema. Realmente,
podemos distinguir, como
hacen muchos sistemas, dos tipos diferentes de interrupciones de
sistema, unas simplemente denominadas interrupciones, y las otras
denominadas traps. Las primeras se producen por causa de algún tipo de
evento que es externo e independiente al proceso actualmente en
ejecución, por ejemplo la finalización de la operación de E/S. Las otras
están asociadas a una condición de error o
excepción generada dentro del proceso que está ejecutando, como un
intento de acceso no permitido a un fichero.
Cuando la CPU recibe la interrupción, deja lo que está haciendo e
inmediatamente transfiere la ejecución a una posición fijada en donde se
contiene la dirección de inicio a la rutina de servicio de la interrupción
correspondiente. Una vez que termina con la rutina de servicio, vuelve a
ejecutar lo que estaba haciendo antes.
Hay dos formas para encontrar la rutina de servicio indicada:
 Se utiliza una rutina genérica para que examine la información de la
interrupción y así, poder llamar a la rutina correspondiente. Este
método es algo lento porque se tiene que “ejecutar” dos rutinas.
 Se dispone de una tabla de punteros a las rutinas de interrupción,
en donde cada lugar le corresponde un número unívoco para cada
dispositivo y de esta manera se puede ejecutar la rutina
correspondiente. Por ejemplo: para el lugar i= 1, se encontrarán la
rutina para el tratamiento del teclado.
El código de kernel (solo en modo privilegiado,bit de modo en 0, se
ejecutan instrucciones privilegiadas)se ejecuta:
 Cuando una aplicación ejecuta una llamada al sistema, solicitar un
servicio del SO(interrupción sw, sincrona).
 Cuando una aplicación provoca una excepción(div x 0, fallo de
pagina,..)
 Cuando un dispositivo provoca una interrupción de hw(es
asincrona)
El hw garantiza que las instrucciones privilegiadas solo se ejecuten en
modo kernel. En caso de intentar realizarlo estando en modo usuario, el
hw manda una excepción al SO.
Estructuras de almacenamiento:
Los programas para que sean ejecutados, deben estar en la memoria
principal (RAM), en donde el CPU tiene conexión directa con ella. La
interacción se consigue a través de una secuencia de carga (load) o
almacenamiento (store) de instrucciones en direcciones específicas de
memoria. Es decir, mediante load se carga una instrucción a un registro
interno de la CPU para que pueda ser decodificado y ejecutado. Y con
store, se mueve el contenido de un registro a la memoria principal.
Según la arquitectura von Neumann:
1. Se extrae una instrucción de memoria y se almacena dicha
instrucción en el registro de instrucciones.
2. La instrucción se decodifica y se guardan los operandos en un
registro interno del CPU.
3. Una vez ejecutada la instrucción con los operandos
correspondientes, se guarda el resultado en memoria.
Debido a que:
 La memoria principal es muy pequeña como para almacenar
todos los programas y datos.
 Es de tipo volátil (pierde su contenido cuando se le quita la
alimentación).
Se utilizan estructuras de memoria secundarias, como por ejemplo, discos
magnéticos, CD-ROMs, memorias flash, etc.
Estructuras de E/S:
Dicho anteriormente, cada dispositivo tiene un controlador asociado, en la
cual se compone de búferes locales y registros de propósitos especiales.
Con esto, el controlador es responsable de la transferencia de datos entre
los dispositivos que controla y su búfer local, para de esta manera, poder
realizar las operaciones correspondientes.
Arquitectura de un sistema informático:
De un solo procesador: hay una CPU principal que se encarga de
ejecutar un conjunto de instrucciones. Pero además, también existen
pequeños microprocesadores de propósito especial en el cual sólo se
encargan de ejecutar instrucciones específicas, por ejemplo: el teclado
tiene un microprocesador en el que traduce la pulsaciones de teclas en
código para la CPU.
Multiprocesador: se disponen de dos o más CPU que se comunican
entre sí, compartiendo el bus de la computadora, memoria y dispositivos
periféricos. Poseen tres grandes ventajas:
 Mayor rendimiento: gracias al mayor trabajo de los N procesadores.
 Economía escalada: resulta más barato tener múltiples
procesadores en un sistema, que múltiples sistemas de un solo
procesador.
 Mayor fiabilidad: si las funciones están bien distribuidas, el fallo de
un procesador no hará que el sistema deje de funcionar, sino que
sólo lo ralentizará.
Hay dos tipos de sistemas multiprocesador:
 Asimétricos: cada procesador tiene una tarea específica. Hay
un procesador maestro que se encarga de controlar y asignar
tareas a los demás procesadores.
 Simétrico: todos los procesadores son iguales, es decir, no
existe una relación maestro-esclavo, en la que todos ejecutan
instrucciones del sistema operativo.
En cluster: también utilizan múltiples procesadores, pero a
diferencia de los sistemas multiprocesador, están formados por dos
o más máquinas individuales acopladas.
 Asimétrico: una máquina espera en caliente,
controlando a la otra, mientras ejecuta las
aplicaciones. Si dicho servidor falla, la máquina que
estaba esperando se convierte en la activa.
 Simétrico: ambas máquinas ejecutan aplicaciones y se
controlan entre sí, de esta manera se aprovecha todo el
hardware.
Operaciones del sistema operativo:
Para prevenir que, en caso de error en algún proceso, no haya
problemas con las demás aplicaciones que se están ejecutando, existen
dos formas:
 Modo dual: usuario y el kernel. El primero se utiliza para
aplicaciones de usuario; el segundo contiene las instrucciones
privilegiadas de máquina. En el caso de que el proceso
requiera hacer una instrucción privilegiada, hace una llamada
al sistema y de esta manera se accede al modo kernel.
 Temporizador: se establece un contador que se encarga de
interrumpir una ejecución en un determinado tiempo.
Gestiones del sistema operativo:
Gestión de procesos:
 Crear y borrar procesos de usuario y del sistema.
 Suspender y reanudar procesos
 Proporcionar mecanismos para la sincronización,
comunicación y tratamientos de interbloqueos de los mismos.
Gestión de memoria:
 Decidir qué datos y procesos se añadirán o extraerán de la
memoria.
 Asignar y liberar la asignación de espacio de memoria según sea
lo necesario.
 Controlar qué partes de la memoria están en uso y por parte de
quién.
Gestión de almacenamiento:
Archivos:
 Creacion y borrado de archivos
 Creacion y borrado de directorios para organizar
archivos
 Soporte de primitivas para manipular archivos y
directorios
 Asignacion de archivos a los dispositivos de
almacenamiento secundario
 Copia de seguridad de los archivos en medios de
almacenamientos no volátiles
Masivo:
 Gestión del espacio libre
 Asignación del espacio de almacenamiento
 Planificación del disco
Caché:
Es un sistema de almacenamiento con capacidad limitada,
pero más rápido que la memoria principal, en donde se recibe de
esta última la información que necesita la CPU, de forma temporal.
Por eso, cuando se quiere buscar una información específica, el
sistema primero la busca en la caché, de no encontrarla, la busca en
la información original (ya sea RAM, disco rígido, etc) y hace de esta
una copia para guardarla en la caché nuevamente.
Comúnmente, los sistemas disponen de una o más cachés de
instrucciones en donde almacena las siguientes instrucciones que
esperan ser ejecutadas, esto permite que el CPU no pierda el
tiempo buscando su siguiente instrucción en la RAM.
En una estructura de almacenamiento jerárquica, los mismos datos
pueden aparecer en diferentes niveles del sistema de
almacenamiento. Por lo que es esencial una buena planificación y
gestión de la caché para que garantice la coherencia entre los datos
que utiliza el sistema.
Seguridad y Protección:
En los sistemas que admiten múltiples usuarios y
permiten la ejecución concurrente de múltiples procesos, se emplean
mecanismos que controlen el acceso de las aplicaciones y a los recursos
del sistema.
Una de las técnicas más usadas es la de asignar a uno o varios
usuarios un ID de seguridad unívoco en la que el sistema podrá saber el
nivel de prioridad.
Descargar