administracion de sistemas operativos apuntes

10
4. Administración de Sistemas Operativos Estudio de Utilidades del Sistema. Estudio de las Llamadas del Sistema. Programación del Sistema. Mantenimiento y Gestión. { UTILIDADES DEL SISTEMA OPERATIVO Los sistemas operativos, en su condición de capa software que posibilita y simplifica el manejo de la computadora, desempeñan una serie de funciones básicas esenciales para la gestión del equipo. Entre las más destacables, cada una ejercida por un componente interno (módulo en núcleos monolíticos y servidor en microkernels), podemos reseñar las siguientes: Proporcionar al usuario un entorno cómodo y eficiente para ejecutar sus programas. Gestionar de manera eficiente los recursos del equipo, ejecutando servicios para los procesos (programas) Brindar una interfaz al usuario, ejecutando instrucciones (comandos). Permitir que los cambios debidos al desarrollo del propio SO se puedan realizar sin interferir con los servicios que ya se prestaban (evolutividad). El Software de Sistema es software diseñado para operar el hardware de una computadora y proveer un plataforma para ejecuta aplicaciones. Los 3 tipos mas básicos de software de sistema son: El BIOS de la computadora y el firmware del dispositivo, los cuales proveen la funcionalidad básica para operar y controlar el hardware conectado a o integrado en la computadora. El sistema operativo. Software de Utilidades

Upload: lopez

Post on 07-Apr-2016

214 views

Category:

Documents


0 download

DESCRIPTION

apuntes de s.o.

TRANSCRIPT

Page 1: Administracion de sistemas operativos apuntes

4. Administración de Sistemas Operativos

Estudio de Utilidades del Sistema. Estudio de las Llamadas del Sistema. Programación del Sistema. Mantenimiento y Gestión.

{UTILIDADES DEL SISTEMA OPERATIVO

Los sistemas operativos, en su condición de capa software que posibilita y simplifica el manejo de la computadora, desempeñan una serie de funciones básicas esenciales para la gestión del equipo. Entre las más destacables, cada una ejercida por un componente interno (módulo en núcleos monolíticos y servidor en microkernels), podemos reseñar las siguientes:

Proporcionar al usuario un entorno cómodo y eficiente para ejecutar sus programas. Gestionar de manera eficiente los recursos del equipo, ejecutando servicios para los

procesos (programas) Brindar una interfaz al usuario, ejecutando instrucciones (comandos). Permitir que los cambios debidos al desarrollo del propio SO se puedan realizar sin

interferir con los servicios que ya se prestaban (evolutividad).

El Software de Sistema es software diseñado para operar el hardware de una computadora y proveer un plataforma para ejecuta aplicaciones.Los 3 tipos mas básicos de software de sistema son:

El BIOS de la computadora y el firmware del dispositivo, los cuales proveen la funcionalidad básica para operar y controlar el hardware conectado a o integrado en la computadora.

El sistema operativo. Software de Utilidades

Las utilidades son un tipo de software del sistema diseñado para ayudar a analizar, configurar, optimizar y mantener la computadora. Este tipo de software es diferente de los programas de aplicación, el cual permite por ejemplo crear documentos de texto, jugar juegos, escuchar música o navegar en internet, ya que no provee una funcionalidad enfocada en generar una particular salida, los software de utilidad se concentra en

como la infraestructura de la computadora opera (Incluyendo el hardware de la computadora, el sistema operativo, los software de aplicación y los dispositivos de almacenamiento de datos).

Page 2: Administracion de sistemas operativos apuntes

Normalmente las utilidades son altamente especializadas y diseñadas para realizar una sola tarea, o un pequeño conjunto de tareas. La mayoría de los sistema operativos vienen con varias utilidades pre-instaladas.Ejemplos de Utilidades: Desfragmentadores de discos, software que genera back-ups de los datos en la computadora, administradores de archivos, compresores de datos, etc

LLAMADAS AL SISTEMA

Las llamadas al sistema proveen una interfaz entre los procesos y los servicios del sistema operativo. Mediante las llamadas al sistema, el usuario solicita los servicios que desea del sistema operativo. Las llamadas al sistema comúnmente usan una instrucción especial de la CPU que causa que elprocesador transfiera el control a un código privilegiado, previamente especificado por el mismocódigo. Esto permite al código privilegiado especificar donde va a ser conectado así como elestadodel procesador.

Cuando una llamada al sistema es invocada, la ejecución del programa que invoca es interrumpida ysus datos son guardados, normalmente en su PCB, para poder continuar ejecutándose luego. El procesadorentonces comienza a ejecutar las instrucciones de código de alto nivel de privilegio, para realizar la tarearequerida. Cuando esta finaliza, se retorna al proceso original, y continúa su ejecución. El retorno al procesodemandante no obligatoriamente es inmediato, depende del tiempo de ejecución de la llamada al sistema ydel algoritmo de planificación de cpu

Las llamadas al sistema generalmente están disponibles como rutinas escritas en C y C++, aunquedeterminadas tareas de bajo nivel pueden necesitar escribirse con ensamblador. La mayoría deprogramadores de aplicaciones diseñan sus programas utilizando una API (applicationprogramming interface). La API especifica un conjunto de funciones que el programador deaplicaciones puede usar, indicándose los parámetros que hay que pasar a cada función y los valoresde retorno que el programador debe esperar. Una ventaja de programar usando una API es laportabilidad (un programa diseñado usando una API puede ser compilado y ejecutado en cualquiersistema que soporte la misma API.Habitualmente, cada llamada al sistema tiene asociado un número y la interfaz de llamadas alsistema mantiene una tabla indexada según dichos números. Usando esa tabla, la interfaz dellamadas al sistema invoca la llamada necesaria del kernel del sistema operativo y devuelve elestado de la ejecución de la llamada al sistema y los posibles valores de retorno.

TIPOS DE LLAMADAS AL SISTEMAControl de procesosUn programa en ejecución necesita poder interrumpir dicha ejecución, bien de forma normal obien de forma anormal. En cualquier caso el SO debe transferir el control al intérprete decomandos que realizó la invocación para que lea el siguiente comando. En un sistema GUI, unaventana alertará al usuario del error.Algunas llamadas al sistema, en cuanto al control de procesos se refiere, son: terminar/abortar;cargar/ejecutar; crear/terminar procesos; obtener/definir atributos del proceso; asignar/liberarmemoria; esperar/señalizar suceso...Administración de archivosNecesitamos crear y borrar archivos; abrir y cerrar archivos; leer, escribir y reposicionar; obtenery definir atributos de un archivo, etc. Lo mismo ocurre con directorios.Administración de dispositivosUn proceso puede necesitar varios recursos para ejecutarse: memoria principal, unidades dedisco, acceso a archivos, etc. Si los recursos están disponibles, pueden ser concedidos, en caso

Page 3: Administracion de sistemas operativos apuntes

contrario el proceso tendrá que esperar. Puede pensarse en los distintos recursos controlados porel SO como dispositivos, algunos físicos (como el espacio en memoria) y otros abstractos (como unarchivo).En cuanto a la administración de dispositivos, las principales llamadas al sistema son: solicitar oliberar dispositivos; leer, escribir y reposicionar; obtener y definir atributos de dispositivos;conectar y desconectar dispositivos lógicamente.Mantenimiento de informaciónMuchas llamadas al sistema existen simplemente con el propósito de transferir informaciónentre el programa de usuario y el sistema operativo. Por ejemplo la llamada al sistema paraconocer la hora y la fecha, el número actual de usuarios, la versión del sistema operativo,cantidad de memoria libre, etc. Además, el SO mantiene información sobre todos sus procesos.ComunicacionesExisten dos modelos comunes de comunicación entre procesos:a) Modelo de paso de mensajes : los procesos se comunican enviándose mensajes coninformación, directa o indirectamente a través de un buzón de correo común. La mayoríade los procesos que reciben conexiones son de propósito especial y se denominandemonios. Los demonios son programas que se mantienen a la espera y despiertancuando se establece una conexión. El origen de la comunicación, denominado cliente, y elreceptor, servidor, intercambian mensajes usando las llamadas al sistema para leer yescribir.b) Modelo de memoria compartida : los procesos usan las llamadas al sistema para crear yobtener acceso a regiones de la memoria que son propiedad de otros procesos.Normalmente el sistema operativo intentaría evitar que un proceso acceda a la memoriade otro, por ello la memoria compartida entre dos o más procesos requiere que estosacuerden eliminar esa restricción. La forma de los datos y su ubicación sondeterminadas por parte de los procesos y no por el SO.InterrupcionesLas interrupciones son fundamentales para los sistemas operativos, ya que proporcionan una manera eficiente de interactuar y reaccionar a su entorno. Los sistemas operativos "observan"(watch) las diversas fuentes de entrada para los eventos que requieren una acción. La programacion basada en interrupciones (interrupt-based programming) tiene el soporte directo de la mayoria de las CPU modernas. Las interrupciones proporcionan al equipo una forma de guardar localmente los contextos de registro y ejecutar código específico en respuesta a los eventos en los mismos. Incluso los ordenadores muy básicos soportan interrupciones de hardware, y permiten al programador especificar el código que se ejecutara cuando el evento se lleve a cabo.Cuando se recibe una interrupción, el hardware del equipo suspende automáticamente cualquier programa que se está ejecutando, guarda su estado, y se ejecuta el código asociado con la interrupción. En los sistemas operativos modernos, las interrupciones son manejadas por el kernel del sistema operativo. Las interrupciones pueden provenir tanto del hardware como de un programa en ejecución.Cuando un dispositivo de hardware provoca una interrupción, el kernel del sistema operativo decide qué hacer con este evento, por lo general mediante la ejecución de un código de procesamiento. La cantidad de código a ejecutar depende de la prioridad de dicha interrupción (por ejemplo: una persona por lo general responde a una alarma de detector de humo antes de contestar el teléfono).Un programa también puede provocar una interrupción en el sistema operativo, pero para ello debe enviar una solicitud al kernel del sistema operativo, el cual debera procesarla para luego hacer o no dicha interrupcion en el hardwareEjemplos de causas del por qué un programa genera una interrupción son: El desbordamiento en las operaciones aritméticas, la división por cero, el intento de ejecutar una instrucción con código operación incorrecto o de direccionar una posición de memoria prohibida.

PROGRAMACIÓN DEL SISTEMALos programas del sistema proporcionan un cómodo entorno para desarrollar y ejecutarprogramas. Algunos son simplemente interfaces de usuario para las llamadas al sistema; otros sonmás complejos. Pueden dividirse en:a) Administración de archivos : manipulan archivos y directorios.b) Información de estado : algunos solicitan la hora, fecha memoria o espacio en discodisponible... Otros proporcionan información detallada sobre rendimiento, inicios de

Page 4: Administracion de sistemas operativos apuntes

sesión y mecanismos de depuración.c) Modificación de archivos : editores de texto para crear y modificar archivos almacenadosen disco, programas para buscar un dato en el contenido de los archivos...d) Soporte de lenguajes de programación : compiladores, ensambladores, depuradores eintérpretes para los lenguajes de programación más habituales.e) Carga y ejecución de programas : cargadores absolutos o reubicables, editores demontaje, cargadores de sustitución y sistemas de depuración.f) Comunicaciones : mecanismos para crear conexiones virtuales entre procesos, usuarios ycomputadoras. Permiten enviar mensajes a las pantallas de otros, explorar páginas web,enviar mensajes de correo electrónico, iniciar una sesión remota o transferir archivos.Además de estos programas de sistema, la mayoría de SO se suministran con programas deutilidad (llamados programas de aplicación o utilidades del sistema) para resolver problemascomunes o realizar operaciones frecuentes: exploradores web, procesadores y editores de texto,hojas de cálculo, compiladores, juegos...

Gestor de recursosDesde el punto de vista del sistema, una computadora tiene muchos recursos que pueden ser requeridos para solucionar un problema, como el espacio de memoria, almacenamiento de archivos, dispositivos de E/S o tiempo de CPU.El sistema operativo actúa como administrador de esos recursos, y debe hacer frente a conflictos ( pedidos de recursos específicos ) decidiendo a que usuarios y procesos otorgar dichos recursos. Esto es esencial en sistemas de más de un usuario. Como gestor de recursos, el Sistema Operativo administra:

La CPU (Unidad Central de Proceso, donde está alojado el microprocesador). Los dispositivos de E/S (entrada y salida) La memoria principal (o de acceso directo). Los discos (o memoria secundaria). Los procesos (o programas en ejecución). y en general todos los recursos del sistema.

- Gestión de Procesos

Un proceso es un trabajo en ejecución en un sistema de tiempo compartido. Necesita ciertos recursos: tiempo de CPU, memoria, archivos y dispositivos E/S. Estos recursos se le proporcionan en el momento de crear el proceso o se le asignan mientras se está ejecutando. Cuando el proceso termina, el SO reclama todos los recursos utilizables. Cada sistema consta de una colección de procesos, algunos del SO y el resto de los usuarios. El SO es responsable de: a) Crear y borrar procesos b) Suspender y reanudar procesos c) Proporcionar mecanismos de sincronización de procesos d) Proporcionar mecanismos para la comunicación entre procesos e) Proporcionar mecanismos para el tratamiento de los interbloqueos

- Gestión de MemoriaLa memoria principal es fundamental, y es compartida por la CPU y los dispositivos de E/S. Para que la CPU procese unos datos de disco, dichos datos deben transferirse primero a la memoria principal. Para mejorar tanto la utilización de la CPU como la velocidad de respuesta de la computadora, ésta puede mantener varios programas en memoria, lo que crea la necesidad de mecanismos de gestión de la misma. El SO es responsable de: a) Controlar las partes de la memoria en uso y por parte de quién b) Decidir qué datos y procesos añadir o extraer de memoria c) Asignar y liberar espacio en memoria según sea necesario

- >Memoria virtualMuchos sistemas operativos pueden "engañar" a los programas en el uso de memoria utilizando parte del disco duro y memoria RAM como si fuera un pedazo continuo de la memoria, llamada memoria virtual.El uso del direccionamiento de memoria virtual(tales como la paginación o segmentación) significa que el kernel puede elegir que memoria y que cantidad utiliza cada programa en un momento

Page 5: Administracion de sistemas operativos apuntes

dado, permitiendo que el sistema operativo pueda utilizar los mismos segmentos de memoria para multiples tareas.Si un programa intenta acceder a memoria que no está en su área de distribución actual(permitida por el kernel), el kernel se interrumpirá en la misma forma que lo haría si el programa exediera la memoria total disponible(gestión de memoria).En los sistemas operativos modernos, la memoria que se accede con menor frecuencia puede ser almacenada temporalmente en el disco u otros medios para hacer que el espacio de memoria real almacenado pueda ser utilizado por otros programas. Esto se conoce como "swapping"(intercambio).- KernelEl Kernel conecta el software de aplicación con el hardware de una computadora.Con la ayuda de los controladores y el firmware del dispositivo, el sistema operativo proporciona el nivel más básico de control sobre todos los dispositivos de hardware de la computadora. Se gestiona el acceso de memoria para los programas en la memoria RAM, que determina qué programas tienen acceso a que los recursos de hardware, en ella se establece o restablece los estados de funcionamiento de la CPU para un funcionamiento óptimo en todo momento, y organiza los datos para el almacenamiento no volátil a largo plazo con sistemas de archivos en soportes tales como discos, memoria flash, etc.- ModosLas CPU modernas soportan varios modos diferentes.Por lo general, utilizan al menos dos modos: modo seguro/protegido y modo supervisor. El modo de supervisor se utiliza por el kernel del sistema operativo para las tareas de bajo nivel que necesitan un acceso sin restricciones al hardware, tales como el control de la cantidad de memoria que se escribe y se borra, y la comunicación con dispositivos como tarjetas gráficas. El modo protegido, por el contrario, se utiliza para casi todo lo demás. Las aplicaciones funcionan en modo protegido, y sólo puede usar el hardware mediante la comunicación con el kernel, que controla todo en el modo de supervisor.Cuando un equipo se inicia por primera vez, automáticamente se ejecuta en modo supervisor. Los priemros programas en ejecutarse, siendo el BIOS, gestor de arranque y el sistema operativo tienen un acceso ilimitado a un hardware - y esto es necesario porque, por definición, la inicialización de un entorno protegido sólo puede llevarse a cabo desde afuera de la proteccion -. Sin embargo, una vez que el sistema operativo pase el control a otro programa,ya podra hacerse en modo protegido.En modo protegido, los programas tienen acceso a un conjunto más limitado de instrucciones de la CPU. Un programa de usuario puede desprenderse del modo protegido sólo mediante la activación de un control de la interrupción, pasando por el kernel. De esta manera el sistema operativo (mas especificamente el kernel) puede mantener el control exclusivo sobre cosas como el acceso al hardware y la memoria.- Interfaz de usuarioCada equipo que recibe algún tipo de intervención humana necesita una interfaz de usuario, que le permita interactuar con el sistema operativo. Mientras que los dispositivos como teclados, ratones y pantallas táctiles conforman el lado hardware de esta tarea, la interfaz de usuario abarca el software que se utiliza para ello. Las dos formas más comunes de una interfaz de usuario han sido históricamente: la interfaz de línea de comandos, comandos de la computadora donde se escriben fuera de línea por línea, y la interfaz gráfica de usuario, en un entorno visual (más comúnmente con ventanas, botones e iconos )

- Gestión de Almacenamiento

Gestión del sistema de archivosUn archivo es una colección de información relacionada definida por su creador. Comúnmente,los archivos representan programas (tanto en formato fuente como objeto) y datos. El SOimplementa el abstracto concepto de archivo gestionando los medios de almacenamientomasivos. Asimismo, los archivos normalmente se organizan en directorios para hacer más fácilsu uso. El SO es responsable de:a) Creación y borrado de archivosb) Creación y borrado de directorios para organizar los archivosc) Soporte de primitivas para manipular archivos y directoriosd) Asignación de archivos a los dispositivos de almacenamiento secundario.e) Copia de seguridad de los archivos en medios de almacenamiento no volátiles

Page 6: Administracion de sistemas operativos apuntes

Gestión de almacenamiento masivoComo la memoria principal es demasiado pequeña para almacenar los datos y programas, yademás de volátil, la mayoría de los sistemas informáticos modernos usan discos como principalmedio de almacenamiento. Por tanto, la apropiada gestión del almacenamiento en disco tieneuna importancia crucial. El SO es responsable de:a) Gestión del espacio libreb) Asignación del espacio de almacenamientoc) Planificación del discoLas unidades de cinta magnética y de CD/DVD son dispositivos de almacenamiento terciario.Este almacenamiento no es crucial, pero también necesita ser gestionado (montar y desmontarmedios, asignar y liberar los dispositivos, y migrar datos de almacenamiento secundario alterciario). Algunos SO realizan esta tarea, mientras que otros lo dejan en manos de programasde aplicación.

Almacenamiento en cachéLa caché es un sistema de almacenamiento muy rápido, y de mucho menor tamaño que la RAM.Cuando necesitamos alguna información particular, primero comprobamos si está almacenadaen caché, si lo está usamos dicha información, en caso contrario utilizamos la informaciónoriginal, colocando una copia en la caché bajo suposición de que pronto la necesitaremos. Lamayoría de los sistemas disponen de una caché de instrucciones para almacenar las siguientesinstrucciones en espera de ser ejecutadas. Sin una caché, la CPU tendría que esperar variosciclos mientras las instrucciones son extraídas de la RAM. También la mayoría de sistemasdisponen, por la misma razón, de una caché de datos o más. La transferencia de datos del discoduro a la memoria principal es una función controlada por el SO, por el contrario, el paso dedatos de la caché a los registros de la CPU normalmente no.En un entorno donde sólo se ejecuta un proceso al tiempo, un acceso a un dato (por ejemplo unnúmero entero A) siempre se realiza a la copia situada en el nivel más alto de la jerarquía dememoria (registros). Sin embargo, en un entorno multitarea, en el que la CPU conmuta entrevarios procesos, hay que tener cuidado para asegurar que, si varios procesos quieren acceder a A,cada uno obtenga el valor más reciente. La situación se complica en un entorno multiprocesador,donde A puede encontrarse en varias cachés al tiempo. En ese caso debemos asegurarnos de queuna actualización de A en una caché se vea reflejada en el resto. Esto se denomina coherencia decaché. El caso más complejo es en un entorno distribuido, donde varias copias del mismo archivopueden estar en diferentes computadoras.

Sistemas de E/SUno de los propósitos de un SO es ocultar al usuario las peculiaridades de los dispositivoshardware. El subsistema de E/S consta de varios componentes:a) Un componente de gestión de memoria que incluye almacenamiento en búfer, gestión decaché y gestión de colas.b) Una interfaz general para controladores de dispositivo.c) Controladores para dispositivos hardware específicos.Principio del software de E/S.Hay 4 capas:

Manejadores de interrupciones. Es el nivel más bajo. Manejadores de dispositivos. Controladores del dispositivo. Es la única capa que está en

contacto con el dispositivo. Reciben solicitudes del tipo “quiero el bloque físico 20” y tiene que traducirlo al cilindro, pista y sector correspondiente.

Software independiente del dispositivo. Es el software que se encarga de las funciones comunes para todos los dispositivos. Funciones:

Interfaz uniforme para los manejadores. Nombre de los dispositivos: que se reconozcan por un nombre simbólico. Protección de los dispositivos. Uso de buffers: Dispositivos de bloques: cache de disco. Y dispositivos de caracteres:

técnicas de buffering.