







































































Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Prepara tus exámenes
Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Prepara tus exámenes con los documentos que comparten otros estudiantes como tú en Docsity
Los mejores documentos en venta realizados por estudiantes que han terminado sus estudios
Estudia con lecciones y exámenes resueltos basados en los programas académicos de las mejores universidades
Responde a preguntas de exámenes reales y pon a prueba tu preparación
Consigue puntos base para descargar
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Comunidad
Pide ayuda a la comunidad y resuelve tus dudas de estudio
Descubre las mejores universidades de tu país según los usuarios de Docsity
Ebooks gratuitos
Descarga nuestras guías gratuitas sobre técnicas de estudio, métodos para controlar la ansiedad y consejos para la tesis preparadas por los tutores de Docsity
resumen de sop muy completo para final o parcial del año 2021
Tipo: Apuntes
1 / 79
Esta página no es visible en la vista previa
¡No te pierdas las partes importantes!
Un sistema operativo es un programa que controla la ejecución de los programas de aplicación y que actúa como interfaz entre las aplicaciones del usuario y el hardware de un computador.
Tiene tres objetivos fundamentales: a. Comodidad: hace que un computador sea más facil de utilizar. b. Eficiencia: permite que los recursos de un sistema informático se aprovechen de manera más eficiente. c. Capacidad de evolución: debe construirse de modo que permita el desarrollo efectivo, la verificación y la introducción de nuevas funciones al sistema. A continuación se detallaran estos tres aspectos:
De forma resumida, un SO ofrece servicios en las siguientes áres: ● Creación de programas: ofrece múltiples funcionalidades y servicios para ayudar al programador a la creación de programas. Normalmente, estos servicios están en forma de programas de utilidad, que realmente no forman parte del SO pero son accesibles a través del mismo. ● Ejecución de programas: para ejecutar un programa, se necesita llevar a cabo un cierto número de tareas. El SO administra estas tareas para el usuario. ● Acceso a los dispositivos de E/S: el SO proporciona una interfaz uniforme que oculta los detalles de acceso y control de los dispositivos, de modo que el programador pueda utilizarlos de una manera simple y clara. ● Acceso controlado a los archivos: el SO se encarga de los detalles de control y acceso a los archivos. ● Acceso al sistema: en el caso de un sistema compartido, el SO controla el acceso al sistema como un todo y a los recursos específicos del mismo. ● Detección y respuesta a errores: cuando un sistema informático está en funcionamiento puede producirse una serie de errores. En cada caso, el SO debe dar una respuesta que elimine la condición de error con el menor impacto posible sobre las aplicaciones que están en ejecución.
Un computador es un conjunto de recursos para el movimiento, almacenamiento y proceso de datos y para el control de estas funciones. El SO es el responsable de la gestión y control de estos recursos.
Normalmente, se piensa en un mecanismo de control como algo externo a lo que se está controlando. Éste no es el caso de un SO, que nos habitual como mecanismo de contro en dos aspectos: ● El SO funciona de la misma manera que el software normal de un computador, es decir, es un programa o una serie de programas ejecutados por el procesador. ● El SO abandona con frecuencia el control y debe depender del procesador para recuperarlo. Entonces, como otros programas, el SO proporciona instrucciones al procesador. La diferencia clave está en el propósito del programa. El SO dirige al procesador en el empleo de otros recursos del sistema y en el control del tiempo de ejecución de otros programas. Los recursos principales que el SO debe administrar y controlar son la memoria, el tiempo de procesador y los dispositivos de E/S.
Un SO importante evolucionará en el tiempo por una serie de razones: ● Actualización del hardware y nuevos tipos de hardware ● Nuevos servicios: como respuesta a las demandas del usuario o las necesidades de los administradores del sistema. ● Correcciones: desafortunadamente, el SO tiene fallos que se descubrirán con el curso del tiempo y que es necesario corregir.
En los primeros computadores, de finales de los 40 hasta mediado de los 50, el programador actuaba directamente con el hardware, no había SO. La operación con estas máquinas era desde una consola consistente en unos indicadores luminosos, unos conmutadores, algún tipo de dispositivo de entrada y otro de salida como una impresora. Los programas en código máquina se cargaban a través del dispositivo de entrada y el programa se ejecutaba hasta su culminación normal o se detenía en caso de producirse un error. Estos primeros sistemas presentaban dos problemas: ● Planificación: la mayoría de las instalaciones empleaban un formulario de reserva de tiempo de máquina. Un usuario podía reservar una hora y terminar en 45 minutos; esto daba como resultado un desperdicio de tiempo del computador. También podía presentarse el caso de el que usuario no termine en el tiempo reservado. ● Tiempo de preparación: un programa sencillo, llamado trabajo , cargaba un compilador y un programa en lenguaje de alto nivel (programa fuente) en la memoria, salvaba el programa compilado (programa objeto) y luego cargaba y montaba el programa objeto junto con las funciones comunes. Si se producía un error en algún paso, el usuario tenía que volver al inicio de este proceso de preparación.
La técnica de tiempo compartido, refleja el hecho de que el tiempo del procesador se comparte entre los diversos usuarios. En un sistema de este tipo, múltiples usuarios acceden simultáneamente al sistema por medio de terminales, donde el sistema operativo intercala la ejecución de cada programa de usuario en ráfagas cortas o cuantos ( quantum ) de computación. El tiempo de respuesta de un sistema correctamente diseñado debería ser comparable al de un computador dedicado.
Con el paso de los años, se ha producido una evolución gradual en la estructura y capacidades de los SO. Estos responden a nuevos desarrollos del hardware y nuevas aplicaciones. Muchos de los diferentes enfoques y elementos de diseño se han probado tanto en SO experimentales como comerciales, y muchos encajan dentro de las siguientes categorías: ● Arquitectura micronúcleo. ● Multihilos ● Multiprocesamiento simétrico ● Sistemas operativos distribuidos ● Diseño orientado a objetos
Los archivos son un mecanismo de abstracción que permite almacenar información en el disco y leerla después.
Las reglas exactas para nombrar archivos varían un tanto de un sistema a otro, pero todos los sistemas operativos permiten usar por ejemplo cadenas de una a ocho letras como nombre de archivos válidos. Es común que se permita también dígitos y caracteres especiales. Muchos sistemas de archivos reconocen nombres de hasta 255 caracteres de longitud. Algunos sistemas de archivos distinguen entre mayúsculas y minúsculas, pero otros no. UNIX pertenece a la primer categoría; MS-DOS, a la segunda. Muchos sistemas de archivos manejan nombres de archivos en dos partes, separadas con un punto. La parte que sigue al punto se denomina extensión de archivo , y por lo regular indica algo acerca del archivo. En MS-DOS, por ejemplo, los nombres de archivo tienen de uno a ocho caracteres, más una extensión opcional de uno a tres caracteres. En UNIX, el tamaño de la extensión, si la hay, se deja a criterio de usuario, y un archivo podría incluso tener dos o más extensiones.
Los archivos pueden estructurarse de varias maneras: a. Sucesión de bytes: con este enfoque, el SO no sabe que contiene el archivo, ni le interesa; lo único que ve son bytes. Cualquier significado que tenga el archivo deberán imponérselo los programas en el nivel de usuario. Tanto UNIX como Windows utilizan este enfoque que ofrece el máximo de flexibilidad. b. Sucesión de registros: en este modelo, un archivo es una sucesión de registros de longitud fija, cada uno de los cuales tiene una cierta estructura interna. Un aspecto fundamental de la idea de que un archivo es una sucesión de registros es la idea de que la operación de lectura devuelve un registro y que las operaciones de escritura sobrescribe o anexa un registro. c. Árbol: en esta organización, un archivo consiste en un árbol de registros, no todos necesariamente de la misma longitud, cada uno de los cuales contiene un campo clave en una posición fija del registro. El árbol está ordenado según el campo clave, con objeto de poder hallar con rapidez una clave en particular. Este enfoque se utiliza en forma amplia en las grandes computadoras mainframe que todavía se emplean en el procesamiento comercial de datos.
por posición. Los archivos cuyos bytes o registros pueden leerse en cualquier orden se denominan archivos de acceso aleatorio. Se usan dos métodos para especificar donde debe iniciar la lectura en archivos de acceso aleatorio. En el primero, cada operación read da la posición en el archivo donde debe comenzarse a leer. En el segundo, se cuenta con una operación especial, seek , para establecer la posición actual. Después del seek , el archivo podrá leerse en forma secuencial a partir de la posición que ahora es actual.
Todo archivo tiene un nombre y datos. Además, todos los SO asocian otra información a cada archivo. Esta información adicional recibe el nombre de atributos.
A continuación se listaran las llamadas al sistema más comunes relacionadas con archivos: ● Create. Se crea el archivo sin datos. ● Delete. Si ya no se necesita un archivo, se borra con esta operación. ● Open. Antes de usar un archivo, un proceso debe abrirlo. El propósito de esta llamada, es que el sistema obtenga los atributos y la lista de direcciones de disco y los coloque en la memoria principal para tener acceso a ellos en llamadas posteriores.
● Close. Una vez que terminaron todos los accesos, se cierra el archivo para desocupar espacio en memoria. ● Read. Se leen datos de un archivo. Quien efectúa la llamada debe especificar cuantos datos necesita, y el búfer donde deben colocarse. ● Write. Se escriben datos en un archivo, por lo regular, en la posición actual. ● Append. Es una forma restringida de write ; solo puede agregar datos al final del archivo. ● Seek. Reubica el apuntador de archivo en un lugar especifio del mismo. ● Get attributes. Para leer atributos de un archivo. ● Set attributes. Para establecer ciertos atributos o modificarlos después de que se creó el archivo. ● Rename. Es muy común necesitar cambiar el nombre de un archivo, esta llamada lo hace posible.
Para llevar el control de los archivos, los sistemas de archivos suelen tener directorios o carpetas que, en muchos sistemas, también son archivos.
La forma más sencilla de sistemas de directorios es que un directorio contenga todos los archivos. A veces se le llama directorio raíz , pero dado que es el único, el nombre no importa mucho. Las ventajas de este esquema son su sencillez y la capacidad para localizar archivos con rapidez; después de todo, solo pueden estar en un solo lugar. El problema de tener un directorio en un sistema con múltiples usuarios es que diferentes usuarios podrían usar por accidente los mismos nombres para sus archivos y esto puede generar problemas.
Para evitar conflictos cuando dos usuarios escogen el mismo nombre para sus propios archivos, el siguiente escalón sería dar a cada usuario un directorio privado. Algo implícito en este diseño es que cuando un usuario trata de abrir un archivo, el sistema necesita saber de qué usuario se trata para saber en cual directorio buscar. Por ello, se requiere algún tipo de procedimiento de login en el que el usuario especifica un nombre o una identificación de inicio de sesión.
Create, Delete, Opendir, Closedir, Readdir, Rename, Link, Unlink.
Los sistemas de archivos se almacenan en discos. Casi todos pueden dividirse en una o más particiones, con sistemas de archivos independientes en cada una. El sector 0 del disco se llama Registro Maestro de Arranque (MBR, Master Boot Record ) y sirve para arrancar la computadora. El final de la MBR contiene una tabla de particiones, la cual contiene las direcciones inicial y final de cada partición. Una de las particiones de la tabla está marcada como activa. Cuando se enciende la computadora, el BIOS lee el MBR del disco y lo ejecuta. Lo primero que hace el programa del MBR es localizar la partición activa, leer su primer bloque (llamado bloque de arranque ), y ejecutarlo. El programa del bloque de arranque carga el SO contenido en esa partición. La organización de una partición de disco varía en forma considerable de un sistema de archivos a otro. Es común que el sistema de archivos contenga algunos de los elementos que se muestran en la siguiente figura.
Tal vez el aspecto más importante de la implementación del almacenamiento de archivos sea llevar el control de cuales bloques de discos corresponden a cuál archivo. Para ello existen diversos métodos explicados a continuación. Asignación contigua: El esquema de asignación más simple es almacenar cada archivo en una serie contigua de bloques de disco. Cabe señalar que cada archivo inicia al principio de un bloque nuevo, de modo que si un archivo ocupa por ejemplo 3,5 bloques, se desperdiciaría mitad de un bloque. La asignación de espacio contiguo en disco tiene dos ventajas importantes. La primera es que su implementación es sencilla porque para llevar el control de dónde están los bloques
de un archivo basta con recordad dos números: la dirección en disco del primer bloque y el número de bloques del archivo. La segunda es que el desempeño de lectura es excelente porque puede leerse todo un archivo del disco en una sola operación. Solo se necesita un desplazamiento del brazo (al primer bloque). Después, no se requieren más desplazamientos ni retrasos rotacionales. Por desgracia, la asignación contigua también tiene una importante desventaja: con el tiempo, el disco se fragmenta. Asignación por lista enlazada: Consiste en mantener cada archivo como una lista enlazada de bloques de disco. La primer palabra de cada bloque se usa como apuntador al siguiente; el resto del bloque se usa para datos. Con este método pueden usarse todos los bloques del disco. No se pierde espacio por fragmentación de disco (solo por fragmentación interna en el último bloque). Aunque la lectura secuencial de un archivo es directa, el acceso aleatorio es lento en extremo. Para llegar al bloque n , el SO tiene que comenzar por el principio y leer los n- bloques que lo preceden, uno por uno. Además, la cantidad de datos almacenados en un bloque ya no es potencia de 2 porque el apuntador ocupa unos cuantos bytes. Por este motivo, merma la eficiencia porque muchos programas leen y escriben bloques cuyo tamaño es una potencia de 2. De esta manera, las lecturas de bloques enteros requieren obtener y concatenar información de dos bloques de disco, lo cual genera un gasto adicional. Asignación por lista enlazada empleando una tabla en memoria Las dos desventajas de las asignación por lista enlazada pueden eliminarse sacando al apuntador de cada bloque de disco y colocándolo en una tabla en memoria, la cual se denomina Tabla de Asignación de Archivos (FAT, File Allocation Table ). Al igual que con el método anterior, basta con que la entrada de directorio guardo un solo entero (el número de bloque inicial) para poder localizar todos los bloques, sin importar qué tamaño tenga el archivo. La desventaja primordial de este método es que, para que funcione, toda la tabla debe estar en la memoria todo el tiempo.
archivos. En los sistemas que usan Nodos-i, otra posibilidad es almacenar los atributos en los mismos, en lugar de en las entradas de directorio. Hasta ahora hemos supuesto que los archivos tienen nombre cortos de longitud fija. Sin embargo, casi todos los OS actuales reconocen nombres de archivos más largos, de longitud de variable. Una alternativa para esto, es abandonar la idea de que todas las entradas de directorio tienen el mismo tamaño. Con este método, cada entrada contiene una porción fija, que por lo regular principia con la longitud de la entrada y seguida de los atributos. Este encabezado de longitud fija va seguido del nombre de archivo en sí, que puede tener cualquier longitud. (Figura 6-17a) Una desventaja de este método es que cuando se elimina un archivo queda en el directorio un hueco de tamaño variable, aunque es factible compactar el directorio porque está por completo en memoria. Otro problema es que una sola entrada de directorio podría cruzar fronteras de página, por lo que podría presentarse un fallo de página durante la lectura de un nombre de archivo. Otra forma de manejar los nombres variables es hacer que todas las entradas de directorio sean de longitud fija y mantener los nombres de archivo juntos en un heap al final del directorio. (Figura 6-17b) Una forma de acelerar la búsqueda es utilizar una tabla de hash en cada directorio. Se examina la entrada de tabla correspondiente al código de hash calculado a partir del nombre del archivo especificado. Si está desocupada, se coloca en ella un apuntador a la entrada del archivo. Si ya está en uso es ranura, se construye una lista enlazada, encabezada por esa entrada de tabla, que encadena todas las entradas que tienen el mismo valor de hash. Aunque la búsqueda es más rápida, la administración de este método es más compleja.
Cuando varios usuarios colaboran en un proyecto, es común que necesiten compartir archivos. La conexión entre el directorio de un usuario y un archivo compartido se llama enlace (link). Hay dos formas de crear un enlace. En la primera, los bloques de disco no se listan en los directorios, sino en una pequeña estructura de datos asociada con el archivo mismo. Los directorios apuntarían entonces solo a la pequeña estructura de datos. Éste es el método
que se usa en UNIX (donde la pequeña estructura es el nodo-i). Este tipo de enlace se denomina enlace duro. En la segunda solución, un directorio se enlaza con otro archivo pidiendo al sistema que cree un archivo nuevo, de tipo link , y lo introduzca en el directorio. El nuevo archivo solo contiene el nombre de la ruta del archivo con el cual está enlazando. Este método se llama enlace simbólico. El problema de los enlaces simbólicos es el procesamiento adicional requerido. Es preciso leer el archivo que contiene la ruta, la cual entonces debe analizarse y seguirse, componente por componente, hasta llegar al nodo-i o la estructura de datos correspondiente. A pesar de esto, tienen la ventaja de que pueden enlazarse con archivos de máquinas que pueden estar en cualquier lugar del mundo.
Una vez que se ha decidido almacenar archivos en bloques de tamaño fijo, surge la pregunta de qué tamaño debe tener un bloque. Tener una unidad de asignación grande, por ejemplo 64kb, implica que todos los archivos, así tengan un solo byte, ocuparan un bloque entero de 64kb. Por otra parte, el uso de una unidad de asignación pequeña implica que cada archivo va a constar de varios bloques. Leer cada bloque por lo regular requiere un desplazamiento del bazo y un retraso rotacional, por lo que la lectura es lenta. A partir de lo planteado, se puede afirmar que la tasa de transferencia de datos es proporcional al tamaño de los bloques; mientras que el aprovechamiento del disco es inversamente proporcional al tamaño de bloques. En caso de UNIX, es común usar 1kb de tamaño de bloque. Mientras que en MS-DOS, el tamaño de bloque puede ser cualquier potencia de 2, desde 512 bytes, hasta 32kb.
Se usan principalmente dos métodos para administrar los bloques libres. El primer consiste en utilizar una lista enlazada de bloques libres de disco, en cada uno de los cuales se guardan tantos números de bloques de disco como quepan. La otra técnica de administración de espacio libre es un mapa de bits. Un disco con n bloques requiere un mapa de bits con n bits. Los bloques libres se representan con unos y los asignados con cero (o viceversa).
La misión principal del procesador es ejecutar las instrucciones de la máquina que residen que residen en la memoria principal. Estas instrucciones se dan en forma de programas. Para que un programa se ejecute se debe crear un proceso o tarea para él. Desde el punto de vista del procesador, este ejecutara instrucciones de su repertorio en una secuencia dictada por los valores cambiantes del registro contador de programa. A lo largo del tiempo, este contador puede apuntar al código de distintos programas que son parte de diferentes procesos. Desde el punto de vista de un programa individual, su ejecución involucra una secuencia de instrucciones dentro de ese programa. El comportamiento de un proceso individual puede caracterizarse por la lista de la secuencia de instrucciones que se ejecutan para dicho proceso. Dicho listado se llama traza del proceso. El comportamiento del procesador puede caracterizarse mostrando la forma en que se intercalan las trazas de varios procesos.
Cuando se añade un proceso, hay que construir las estructuras de datos que se utilizan para su administración y asignar el espacio de direcciones en la memoria principal para el proceso. Cuatro sucesos comunes conducen a la creación de un proceso: ● En un entorno de trabajo por lotes, un proceso se crea como respuesta a la emisión de un trabajo.
ininterrumpida. Otra razón es si el SO asigna diferentes niveles de prioridad a los procesos y cambia un proceso por otro con mayor prioridad. ● Ejecución -> Bloqueado: un proceso se pone en estado de bloqueado si solicita algo por lo que debe esperar. Puede pedir un recurso o iniciar una acción como una operación de E/S. ● Bloqueado -> Listo: un proceso que está en el estado bloqueado pasará al estado listo cuando se produzca el suceso que estaba esperando. ● Listo -> Terminado: en algunos SO, el proceso padre puede terminar con su proceso hijo en cualquier momento. ● Bloqueado -> Terminado: se aplica lo mismo que para la transición anterior.
Dado que el procesador es tan rápido comparado con la E/S que suele ser habitual que todos los procesos de memoria estén esperando por E/S. Así pues, incluso con multiprogramación, el procesador podría estar desocupado la mayor parte del tiempo. Una solución sería alojar más procesos con una mayor cantidad de memoria principal, pero esta solución no es factible. Otra solución es el intercambio, lo que significa mover una parte o todo el proceso de la memoria principal al disco. Cuando ninguno de los procesos en memoria principal está en estado Listo, el SO pasa al disco uno de los procesos que esté Bloqueado y lo lleva a una cola de Suspendidos. El espacio que se libero puede entonces utilizarse entonces para traer otro proceso, ya sea de la cola de suspendidos o aceptar la creación de un nuevo proceso. Al emplear intercambio, se debe añadir un nuevo estado al modelo de cinco estado, Suspendido. Pero este razonamiento presenta una dificultad. Todos los procesos que fueron suspendidos estaban en el estado de Bloqueado. Realmente no haría ningún bien traer de nuevo a la memoria principal un proceso Bloqueado porque no está todavía listo para ejecutarse. Para resolver esto se necesitan estos cuatro estados: ● Listo: el proceso está en la memoria principal y listo para la ejecución. ● Bloqueado: el proceso está en la memoria principal esperando un suceso. ● Bloqueado y suspendido: el proceso está en la memoria secundaria esperando un suceso. ● Listo y suspendido: el proceso está en la memoria secundaria pero está disponible para su ejecución tan pronto como se cargue en la memoria principal.
Si el SO va a administrar los procesos y los recursos, entonces tiene que disponer de información sobre el estado actual de cada proceso y de cada recurso; para ello, el SO construye y mantiene tablas de información sobre cada entidad que está administrando
Se utilizan para seguir la pista de la memoria principal (real) y secundaria (virtual). Parte de la memoria principal está reservada para el SO; el resto está disponible para los procesos. La tablas deben incluir la siguiente información: ● La asignación de memoria principal a los procesos. ● La asignación de memoria secundaria a los procesos. ● Cualesquiera atributos de protección de bloques de memoria principal o virtual. ● Cualquier información necesaria para gestionar la memoria virtual.
Son utilizadas por el SO para administrar dispositivos y los canales de E/S del sistema informático. Si hay una operación de E/S en marcha, el SO necesita conocer el estado de la