Sistemas Operativos
Sistemas Operativos
Sistemas Operativos
CONTENIDO MÍNIMO
Facultad: FIT “Facultad de Ingeniería y Tecnología”
Carrera: Ingeniería de Sistemas
Asignatura: Sistemas Operativos
Sigla : CIS-600
Semestre : Sexto.
Carga Horaria Hrs. Teóricas Hrs. Prácticas Total hrs. Semestre:
Semanales : 4 Semanales : 2 102
Prerequisitos: Arquitectura de Computadoras (CIS 500)
generaciones.
1ª Generación (1945-55)
a) Características
● Sin sistema operativo.
● Sólo hardware, sin lenguajes de programación.
b) Ejemplos
● Mainframe IBM 701 y 704.
2ª Generación (1955-64)
a) Características
● Sistemas operativos de procesamiento por lotes.
● Sistema operativo básico. Se utilizan lenguajes de programación.
b) Ejemplos
● El primer sistema operativo fue desarrollado por General Motors Research
Laboratory en 1956 para su mainframe IBM 701 (véase la Figura 1.4) con
el fin de automatizar la carga de los trabajos.
1.4.3. 3ª Generación (1965-1968)
a) Características
● Sistemas operativos multiprogramados.
● Más lenguajes de programación y multiprogramación.
b) Ejemplos
● IBM OS/360. Desarrollado por IBM para su mainframe System/360.
4ª Generación
Esta generación abarca desde mediados de los años 60 hasta finales de la
década de los 70.
a) Características
● Sistemas operativos de tiempo compartido.
● Aparecen los programas interactivos y las máquinas virtuales.
b) Ejemplos
● MULTICS. Fue anunciado en 1964 como el primer sistema operativo
de propósito general fruto de la colaboración entre el MIT, General Electrics y Bell
Labs (véase la Figura 1.5).
Con el fin de entender cuáles son las funciones de un sistema operativo; se puede
explorar su papel desde dos puntos de vista: el del sistema informático y el del
usuario
Sin embargo, la función del sistema operativo desde el punto de vista del usuario
varía de acuerdo con la interfaz utilizada. Por ejemplo, los usuarios que se sientan
frente a un sistema de escritorio1.1. Funciones del sistema operativo
Sistemas Operativos - 2014/2015
(véase el apartado 1.3.2) disponen de monitor, teclado, ratón y una unidad central.
Estos sistemas se diseñan buscando la máxima productividad en equipos donde
un usuario monopoliza todos los recursos; por lo que el sistema operativo se
diseña considerando fundamentalmente la facilidad de uso, poniendo algo de
atención en el rendimiento y nada en el aprovechamiento de los recursos.
En otros casos un usuario se sienta frente a un terminal1 conectado a un
mainframe (véase el apartado 1.3.1), mientras muchos otros acceden al mismo
sistema a través de otros terminales. Por tanto, todos los usuarios comparten los
recursos del sistema informático y pueden intercambiar información. En esos
casos el sistema operativo debe maximizar el aprovechamiento de los recursos
con el objetivo de garantizar que toda la CPU, memoria y E/S sean empleadas de
forma eficiente, y que ningún usuario utiliza más que lo que le corresponde.
Otro ejemplo son los sistemas de mano (véase el apartado 1.3.5), por ejemplo
tablets y teléfonos móviles. A causa de las limitaciones de la interfaz, en el diseño
del sistema operativo debe primar la usabilidad2, aunque el rendimiento por
tiempo de vida de la batería también es importante.
si lo dividimos en porciones más pequeñas. Cada una de estas partes deberá ser
un componente bien delineado del sistema, con entradas, salidas y funciones
cuidadosamente definidas. La interfaz entre el S. O. y los programas del usuario
se define como el conjunto de instrucciones ampliadas que proporciona el S. O. y
son las “llamadas al sistema”.
Creación de Procesos
Los sistemas operativos necesitan asegurar de alguna forma que puedan existir
todos los procesos requeridos, entonces es necesaria alguna manera de poder
crear y destruir los procesos según sea necesario durante la operación del
sistema. Los cuatro principales sucesos que provocan la creación de nuevos
procesos son:
• La inicialización del sistema
• La ejecución por parte de un proceso (en ejecución) de una llamada al sistema
de creación de un nuevo proceso.
• La petición por parte del usuario de la creación de un nuevo proceso.
• El inicio de un trabajo en batch (lotes).
Terminación de Procesos
Tras la creación de un proceso comienza su ejecución realizando el trabajo que se
le ha encomendado. Sin embargo pronto o tarde el nuevo proceso debe terminar,
usualmente debido a una de las siguientes causas:
• El proceso completa su trabajo y termina (voluntariamente).
• El proceso detecta un error y termina (voluntariamente).
• El sistema detecta un error fatal del proceso y fuerza su terminación.
• Otro proceso fuerza la terminación del proceso (por ejemplo en UNIX mediante la
llamada al sistema kill).
• Nuevo (new).
• Ejecutándose (running). El proceso está siendo ejecutado en la CPU.
Por lo tanto a lo más un proceso puede estar en este estado en un computado
uniprocesador.
• Listo para ejecutar (ready). El proceso está en condiciones de
ejecutarse, pero debe esperar su turno de CPU.
• Bloqueado o En espera (waiting) El proceso no está en condiciones de
ejecutarse. Está esperando que algún evento ocurra, como la finalización de una
operación de E/S. También se dice que está suspendido o en espera.
• Terminado (terminated).
ALGORITMOS DE PLANIFICACIÓN
En entornos diferentes se necesitan algoritmos de planificación diferentes. Esto se
debe a que cada área de aplicación (y cada tipo de sistema operativo) tiene
objetivos diferentes. En otras palabras, lo que el planificador debe optimizar no es
lo mismo en todos los sistemas. Es necesario distinguir aquí tres entornos:
• Batch (lotes)
• Interactivo
• Tiempo Real.
Fragmentación
La mayor dificultad con las particiones fijas está en encontrar una buena relación
entre los tamaños de las particiones y la memoria requerida para los trabajos. La
fragmentación de almacenamiento ocurre en todos los sistemas
independientemente de su organización de memoria. Existen dos tipos de
desaprovechamiento de memoria:
a) La fragmentación interna, que consiste en aquella parte de la memoria que no
se está usando pero que es interna a una partición asignada a una tarea; por
ejemplo si una tarea necesita m bytes de memoria para ejecutarse y se le asigna
una partición de n bytes (con n>m), está desaprovechando n-m bytes.
b) La fragmentación externa, que ocurre cuando una partición disponible no se
emplea porque es muy pequeña para cualquiera de las tareas que esperan.
La selección de los tamaños de las particiones es una relación entre estos dos
casos de fragmentación. Por ejemplo, 7 Mb asignados a los usuarios se reparten
en 7 particiones de 1 Mb, y la cola de tareas contiene tareas con requerimientos
de 400 Kb, 1600 Kb, 300 Kb, 900 Kb, 200 Kb, 500 Kb y 800 Kb. Se ve que hay un
trabajo de 1600 Kb que no se podrá ejecutar nunca, los otros sin embargo si se
ejecutaran pero en conjunto desperdiciaran 3044 Kb, casi la mitad de memoria
disponible. Hay, pues en este caso 1024 Kb de fragmentación externa y 3044 Kb
de fragmentación interna. Si se divide la memoria en cuatro particiones de 512 Kb,
dos de 1 Mb y una de 3 Mb, todos los trabajos se ejecutarían sin fragmentación
externa y con una pérdida de memoria en fragmentación interna de 2648 Kb.
Memoria Virtual
La idea en que se basa la memoria virtual es que el tamaño combinado del
programa, los datos y la pila puede exceder la cantidad de memoria física
disponible para él. El sistema operativo mantiene en la memoria principal las
partes del programa que actualmente se están usando, y el resto en el disco. Por
ejemplo, un programa de 16M puede ejecutarse en una máquina de 4M si se
escogen con cuidado los 4M que se mantendrán en la memoria en cada instante,
intercambiando segmentos del programa entre el disco y la memoria según se
necesite [Tanembaum].
La memoria virtual también puede funcionar en un sistema de multiprogramación,
manteniendo segmentos de muchos programas en la memoria a la vez. Mientras
un programa está esperando que se traiga a la memoria una de sus partes, está
esperando E/S y no puede ejecutarse, así que puede otorgarse la CPU a otro
proceso, lo mismo que en cualquier otro sistema de multiprogramación.
haciéndolo que apunte a un lugar específico del archivo. Una vez efectuada esta
llamada, se pueden leer datos de esa posición o escribirlos en ella.
GET ATTRIBUTES. Es frecuente que los procesos necesiten leer los atributos de
un archivo para realizar su trabajo.
SET ATTRIBUTES. Algunos de los atributos pueden ser establecidos por el
usuario y modificarse después de que se creó el archivo.
RENAME. Es común que un usuario necesite cambiar el nombre de un archivo
existente.
cp /datos/joa/mailbox /datos/joa/mailbox.bak
Y el comando
cp mailbox mailbox.bak
Las aplicaciones utilizan los dispositivos (devices) para realizar la E/S (entrada-
salida). Estos dispositivos son variados y trabajan de manera diferente:
secuencialmente, random; transfieren datos asincrónicamente o sincrónicamente;
pueden ser de sólo lectura ( read only) o lectura-escritura ( read-write), etc. El
sistema operativo debe permitir que las aplicaciones puedan utilizar esos
dispositivos, proveyendo una interfaz que los presente de la manera más simple
posible. Los dispositivos son una de las partes más lentas de un sistema de
cómputo. Por lo tanto, el SO, debe manejar la situación como para salvar esa
diferencia de velocidad.
Una de las funciones principales de un S. O. es el control de todos los dispositivos
de E /S de la computadora [Tanenbaum].
Las principales funciones relacionadas son:
• Enviar comandos a los dispositivos.
• Detectar las interrupciones.
• Controlar los errores.
• Proporcionar una interfaz entre los dispositivos y el resto del sistema.
Dispositivos de E/S
Los dispositivos de E/S se pueden clasificar en dispositivos de almacenamiento,
dispositivos de comunicación y dispositivos de interfaz con humanos.
Ortogonalmente, se pueden clasificar como dispositivos de bloques o de
caracteres.
Dispositivos por bloques. Almacena información en bloques de tamaño fijo,
cada uno con su propia dirección.
Los tamaños de bloque comunes van desde 512 bytes hasta 32768 bytes. La
propiedad esencial de un dispositivo por bloques es que es posible leer o escribir
cada bloque con independencia de los demás. Los discos son los dispositivos por
bloques más comunes.