Tema 1 Conceptos e
Historia de los Sistemas Operativos
Los sistemas Operativos se sitúan
desde dos puntos de vista que son administradores de recursos y maquinas
extendidas. Desde el punto de vista que correspondiente al administrador de recursos, la funcionalidad
del sistema operativo es administrar las distintas partes del sistema en forma
eficiente y eficaz. En el mismo sentido desde el punto de vista de la maquina
extendida, la función del sistema operativo es proveer a los usuarios
abstracciones que sean más convenientes de usar que la maquina actual, estas
abstracciones incluyen los procesos, espacios de direcciones y archivos.
Los sistemas operativos tienen
una larguísima historia desde que empezaron a reemplazar al operador, hasta los
sistemas modernos de multiprogramación. Entre los puntos más importante se
puede mencionar a los primeros sistemas de procesamientos por lotes, los
sistemas de multiprogramación y los sistemas de computadora personales.
Los sistemas operativos
interactúan de cerca con el hardware, es recomendable tener cierto conocimiento
del hardware de computación para poder comprenderlos y es por ellos un breve
detalle de cómo están compuestas las computadoras. Las computadoras están
compuestas por procesadores, memorias, la administración de E/S, el sistema de
archivos y la seguridad.
¿Sabes cuál es el corazón del
sistema operativo? Pues el corazón del sistema operativo es el conjunto de
llamadas al sistema que pueden manejar. Dicha llamadas indican lo que
verdaderamente hace el sistema operativo. En
UNIX, hay cuatro grupos de llamadas al sistema. El primer grupo de
llamada se relaciona con la creación y terminación de procesos, el segundo es
para leer y escribir archivo, el tercer grupo de llamada es para administrar
directorios y por último el cuarto grupo de llamada contiene una miscelánea de
llamadas.
Los sistemas operativos se pueden
estructurar en varias formas, las más comunes son:
Un sistema monolítico, una
jerarquía de capas, microkernel, cliente-servidor, máquina virtual o exokernel.
En este capítulo examinamos la
administración de memoria. Vimos que los sistemas más simples no realizan
intercambios ni paginaciones, una vez que se carga un programa en la memoria,
permanece ahí hasta que termina. Hay sistemas operativos que solo permiten un
proceso a la vez en la memoria, mientras que otros soportan multiprogramación.
El siguiente paso es el
intercambio, cuando se utiliza esta técnica, el sistema puede manipular más
procesos de los que puede admitir en la memoria. Los procesos para los cuales
no haya espacio se intercambian hacia el disco. Se puede llevar el registro del
espacio libre en la memoria y en el disco con un mapa de bits o una lista de
huecos.
Con frecuencias las computadoras
modernas tienen cierta forma de memoria virtual. En su forma más simple, el
espacio de direcciones de cada proceso se divide en bloque de tamaño uniforme
llamados páginas que pueden colocarse en cualquier marco de página disponible
en la memoria. Hay infinidades de algoritmos de reemplazo de páginas; dos de
los mejores son el de envejecimiento y WSClock
El algoritmo de envejecimiento
consiste en lo siguientes:
Este algoritmo es un
descendiente del algoritmo "No usada frecuentemente", con algunas
modificaciones necesarias para tener en cuenta en qué momento fue usada
frecuentemente una página, y no solamente cuántas veces fue referenciada.
En vez de sólo
incrementar el contador de la página cuando es referenciada, primero se
desplaza a la derecha (se divide por 2) y después sí se suma 1. Por ejemplo, si
los bits de referencia de una página fueron 1, 0, 0, 1, 1 y 0 en los últimos 6
ticks del reloj, el contador se verá así: 10000000, 01000000, 00100000,
10010000, 11001000, 01100100.
De esta forma,
cuando se necesite eliminar una página de memoria, se eliminará la que tenga el
número más pequeño en su contador.
Este algoritmo
provee una buena aproximación al desempeño del algoritmo óptimo, por un módico
precio.
Para modelar los
sistemas de paginación hay que abstraer la cadena de referencia de página de
programa y utilizar la misma cadena de referencia con distintos algoritmos.
Estos modelos pueden utilizarse para hacer algunas predicciones acerca del
comportamiento de la paginación.
Para que los
sistemas de paginación funcionen bien, no basta con elegir un algoritmo; hay
que poner interés en cuestiones como determinar el conjunto de trabajo, la
política de asignación de memoria y el tamaño de agina.
La segmentación ayuda las ayuda a manejar las estructuras de datos que
pueden cambiar de tamaño durante la ejecución y simplifica la vinculación y la
compartición, además facilita la provisión de distintos segmentos.
Tema 3 Sistemas de Archivos
Visualizado desde fuera un sistema de archivo es una colección de archivos
y directorios, mas las operaciones que se realizan con ellos, los archivos se
pueden leer y escribir, los directorios se pueden crear y destruir, los
archivos se pueden mover de directorio, es decir, de un directorio a otro. La
mayor parte de los sistemas modernos soportan un sistema de directorios
jerárquico en el cual los directorios pueden tener subdirectorios y estos
pueden tener subdirectorios en forma infinita.
Ahora bien visto desde adentro un sistema de archivo tiene una apariencia
diferente. Los diseñadores del sistema de archivos se tienen que preocupar
acerca de la forma en que se asigna el almacenamiento y como el sistema lleva
registro de que bloque va con cual archivo. Las posibilidades incluyen archivos
contiguos, listas enlazadas, tablas de asignación de archivos y nodos. Los
distintos sistemas tienen diferentes estructuras de directorios. Los atributos
pueden ir en los directorios o en alguna otra parte. El espacio en el disco se
puede administrar mediante el uso de listas de bloques libres o mapas de bits.
La confiabilidad del sistema aumenta al realizar vaciados incrementales y tener
un programa que pueda reparar sistemas de archivos enfermos. El rendimiento de
los sistemas de archivos es importante y se puede mejorar de diferentes formas,
incluyendo el uso de caches, la lectura adelantada y la colocación cuidadosa de
los bloques de un archivo cerca unos de otros. Los sistemas de archivos
estructurados por registro también mejoran el rendimiento, al realizar
escrituras en unidades grandes.
Tema 4 Dispositivos de E/S
Con regularidad las operaciones de entrada /salida son tema ignorado pero
no dejan de ser importante. Una fracción considerable de cualquier sistema
operativo está relacionado con las operaciones de E/S. Estas operaciones se
pueden llevar a cabo en tres formas que son las siguientes:
·
E/S
programadas, en la CPU principal recibe o envía cada byte.
·
E/S
controladas por interrupciones en la CPU inicia una transferencia de E/S para
un carácter o palabra y se pone a hacer algo más hasta que llega una
interrupción indicando que se completó la E/S.
·
El
DMA, en el que un chip separado administra la transparencia completa de un
bloque de datos y recibe una interrupción solo cuando se ha transformado todo
el bloque completo.
La E/S pueden ser estructuradas en cuatro niveles: los procedimientos
de servicio de interrupciones, los
controladores de dispositivos,, el software de E/S independiente del
dispositivo y las bibliotecas de E/S y el uso de colas que se ejecutan en
espacio de usuario. Los controladores de dispositivos se encargan de los
detalles de operación de los dispositivos y proporcionan interfaces uniformes
para el resto del sistema operativo. El software de E/S independiente del
dispositivo realiza cosas como el uso de búfer y el reporte de errores.
Los discos en una variedad de tipos, incluyendo discos magnéticos, RAIDs y
varios tipos de discos ópticos.
Los relojes se utilizan para llevar la cuenta real de la hora y limitan el
tiempo que se pueden ejecutar los procesos, manejan temporizadores guardianes y
realizan la contabilidad.
Los clientes delgados tienen algunas ventajas en comparación con las PCs
estándar, siendo las más notables su simplicidad y menor necesidad de
mantenimiento por parte de los usuarios. Los experimentos con cliente delgado
THINC han demostrado que con cinco primitiva simples es posible construir un
cliente con un buen rendimiento, hasta para el video.
La administración de la energía es una cuestión importante para las
computadoras notebook, ya que los tiempos de vida de las baterías son
limitadas. El sistema operativo puede emplear varias técnicas para reducir el
consumo de energía. Los programas también pueden ayudar al sacrificar cierta
calidad por tiempos de vida más largos para las baterías
Tema 5 Protección y Seguridad
A menudo, las computadoras poseen datos valiosos y confidenciales,
incluyendo declaraciones fiscales, números de tarjetas de créditos, planes de
negocios, secretos comerciales entre otro muchos más, esto es solo por citar
algunos. Los propietario de estas computadoras se preocupan mucho porque sean
privadas y nadie pueda alterarlas, motivos por el cual requieren un sistema
operativo que proporcione buena seguridad. Una forma de mantener la información
secreta en cifrarla y administrar las claves con mucho cuidado. En ocasiones es
necesario demostrar la autenticidad de la información digital, en algunos casos
se pueden utilizar hasta criptográficos, firmas digitales y certificados
firmado por una autoridad de certificación confiable.
Los derechos de acceso a la información se pueden modelar como una gran
matriz, en donde las filas son los dominios (usuario) y las columnas los
objetos (archivos).
En cualquier sistema seguro, los usuarios se pueden autentificar. Par ello
se pueden utilizar algo que el usuario conozca, algo que el usuario tenga o
algo que el usuario sea (biométrica). Se puede utilizar la identificación de
los factores, como la exploración del iris y una contraseña, para mejorar la
seguridad.
Los internos (los empleados de una empresa) pueden vencer la seguridad del
sistema en una variedad de formas. Entre ellas se incluyen las bombas lógicas
que se activan en cierta factura, las puertas de trampa para permitir al
interno un acceso no autorizado en un momento posterior y la suplantación de
nombres al inicio de sesión.
Se pueden explotar muchos tipos de errores en el código para tomar el
control de los programas y sistemas. Estos errores incluyen desbordamientos de
búfer, ataques mediante cadenas de formato, ataques por desbordamientos de
enteros, ataques por inyección de código y ataques por escala de privilegios.
El internet está llena de malware, incluyendo caballos de troya (conocido
comúnmente como troyano), virus, gusanos, spayware y rootkits. Cada uno de
estos tipos de malware son amenaza a la confidencialidad de los datos y su
integridad o peor aún, un ataque de malware tiene la capacidad de tomar el
control de una maquina y convertirla en un zombie que envié spam o utilice para
lanzar otros ataques.
Por suerte hay diferente forma en las que los
sistemas se pueden defender por su cuenta. La mejor estrategia es la
defensa en profundidad, mediante el uso
de diferentes técnicas. Algunas de ellas incluyen firewalls, exploradores de
virus, firmas de código, encarcelamiento, sistemas de detección de intrusos y
encapsulamiento de código móvil.
Tema 6 Administración de Procesos y del Procesador
Los sistemas operativos proporcionan un modelo conceptual que consiste en
procesos secuenciales ejecutándose en paralelo. Los procesos se pueden crear y
terminar de forma dinámica. Cada proceso tiene su propio espacio de
direcciones.
Para algunas aplicaciones es muy provechosa tener varios hilos de control
dentro de un solo proceso. Estos hilos se planifican de manera independiente y
cada uno tiene su propia pila, pero todos los hilos en un proceso comparten un
espacio de direcciones comunes. Los hilos se pueden implementar en espacio de
usuario o en el kernel.
Los procesos se pueden comunicar entre sí mediante el uso de las primitivas
de comunicación entre procesos, como semáforo, monitores, o mensajes. Estas
primitivas se usan para asegurar que no haya dos procesos en sus regiones
criticas al mismo tiempo, es una situación que produce un caos. Un proceso
puede entrar en ejecución, listo para ejecutarse o bloqueado, pudiendo cambiar
de estado cuando este u otro proceso ejecute una de las primitivas de
comunicación entre procesos. La comunicación entre hilo es similar.
Las primitivas de comunicación entre procesos se pueden utilizar para
resolver problemas como el productor-consumidor, los filósofos comelones y el
de los lectores y escritores. Aun con estas primitivas hay que tener cuenta
para evitar errores e interbloqueos.
Se han estudiado muchos algoritmos de planificación del trabajo más corto
primeramente para sistemas de procesamiento por lotes, como la planificación del
trabajo más corto primero. Otros son comunes tanto en los sistemas de
procesamiento por lotes como en los sistemas interactivos. Estos algoritmos
incluyen el de planificación en turno circular, por prioridad, colas de
multiniveles, planificación garantizada por lotería y planificación por partes
equitativas. Algunos sistemas hacen clara separación entre el mecanismo de
planificación y la política de planificación, lo cual permite a los usuarios
tener control del algoritmo de planificación.
No hay comentarios:
Publicar un comentario