DEFINICION SISTEMA OPERATIVO

Anuncio
INSTITUTO POLITÉCNICO NACIONAL
ESCUELA SUPERIOR DE INGENIERÍA MECÁNICA Y
ELÉCTRICA
UNIDAD CULHUACAN
INGENIERÍA EN COMPUTACIÓN
APUNTES DE LA MATERIA: SISTEMAS OPERATIVOS
ACADEMIA: COMPUTACION
SEXTO SEMESTRE
PROFESORA: M. en C. MARISOL HERNANDEZ LOPEZ
Fecha de entrega: 10 de septiembre de 2008
M. en C. Marisol Hernández López
INDICE TEMATICO
UNIDAD I. INTRODUCCIÓN
1.1 Funciones de un sistema operativo.
1.1.1 Administradores de un sistema operativo.
1.2 Evolución de los sistemas operativos.
1.3 Tipos de sistemas operativos.
1.4 Estructuras de los sistemas operativos.
UNIDAD II. ADMINISTRACIÓN DE LA MEMORIA.
2.1 Jerarquía de la memoria.
2.1.1 Memoria secundaria.
2.1.2 Memoria principal.
2.1.3 Memoria cache.
2.2 Asignación de memoria.
2.2.1 Contigua simple.
2.2.2 Particionada.
2.2.3 Algoritmos de asignación de procesos.
2.2.4 Paginación simple.
2.2.5 Segmentación simple.
2.2.6 Paginación por demanda.
2.2.7 Segmentación por demanda.
2.3 Servicios de gestión de memoria.
2.3.1 Servicios POSIX.
2.3.2 Servicios Win32.
UNIDAD III. ADMINISTRADOR DE PROCESADOR.
3.1 Introducción a los procesos.
3.1.1 Diferencia entre proceso y programa.
3.1.2 Modelo de un proceso.
3.1.3 Estados de un proceso.
3.1.3 Bloque de control de procesos.
3.1.5 Niveles de Planificación.
3.1.6 Políticas de Planificación.
3.1.7 Información de un proceso: estado del procesador, imagen de memoria del proceso, tablas del
sistema operativo.
3.2 Despacho de procesos.
3.2.1 Algoritmos de planificación de procesos.
3.2.2 Prioridades.
3.3 Concurrencia.
3.3.1 Multitareas.
3.3.2 Multiprocesos.
M. en C. Marisol Hernández López
3.4 Comunicación entre procesos.
3.4.1 Subprocesos.
3.4.2 Modelo de subprocesos.
3.4.3 Secciones críticas.
3.4.4 Exclusión mutua con espera ocupada.
3.4.5 Bloqueo y Desbloqueo (Sleep y Wakeup).
3.4.6 Semáforos.
3.4.6.1 Binarios.
3.4.6.2 De conteo.
3.4.7 Monitores.
3.4.8 Transmisión de mensajes.
3.5 Problemas de comunicación entre procesos.
3.5.1 Los cinco filósofos comensales.
3.5.2 Lectores y Escritores.
3.6 Servicios POSIX para la gestión de procesos.
3.7 Servicios WIN32 par ala gestión de procesos.
UNIDAD IV. DISPOSITIVOS DE ENTRADA / SALIDA.
4.1 Dispositivos E/S.
4.1.1 Interrupción del CPU.
4.1.2 Definición y manejo de interrupciones.
4.1.3 E/S programada.
4.1.4 E/S controlada por interrupciones.
4.1.5 Clasificación.
4.1.6 Manejador de interrupciones.
4.1.7 Vector de interrupciones.
4.2 Canales de E/S.
4.2.1 Tipos de canales.
4.2.2 Interfaces.
4.2.3 Controladores.
4.3 Memorias Transitorias (Buffers).
4.3.1 Tipos de memorias transitorias.
4.3.2 Manejo de memorias transitorias.
4.3.3 Implementación.
4.3.4 Terminales de red.
4.3.5 Interfaces graficas de usuario.
4.4 Servicios de E/S: genéricos para POSIX y WIN32.
UNIDAD V. SISTEMA DE ARCHIVOS.
5.1 Manejo de archivos y directorios.
5.1.1 Aspectos básicos de los archivos.
5.1.2 Directorios.
5.2 Sistemas de archivos.
5.2.1 Manejo del espacio en disco.
5.2.2 Almacenamiento de archivos.
M. en C. Marisol Hernández López
5.2.3 Estructura de directorios.
5.2.4 Archivos compartidos.
5.2.5 Rendimiento del sistema de archivos.
5.3 Seguridad.
5.3.1 Fallas de seguridad.
5.3.2 Principios de diseño para seguridad.
5.3.3 Virus.
5.3.4 Mecanismos de protección.
5.4 Ejemplos de sistemas de archivos.
5.4.1 CP/M.
5.4.2 MS-DOS.
5.4.3 Win 98.
5.4.4 UNIX V7.
M. en C. Marisol Hernández López
UNIDAD I
1. DEFINICION SISTEMA OPERATIVO:
Programa que actúa como intermediario entre el usuario y el hardware de una computadora. Su propósito
es ofrecer un ambiente en el cual el usuario pueda ejecutar programas y su objetivo principal es hacer que el
sistema de cómputo se pueda utilizar de manera cómoda, su objetivo secundario es que el hardware de la
computadora sea usado de una forma eficiente.
ESTRUCTURA DE UN SISTEMA OPERATIVO
PROGRAMAS
PROGRAMAS
APLICACIONES PERSONALIZADOS
JUEGOS
COMPILADORES
EDITORES
INTERPRETE
DE
COMANDOS
PROGRAMAS DE APLICACIÓN
PROGRAMAS DE SISTEMA
SISTEMA OPERATIVO
LENGUAJE MAQUINA
HARDWARE
BIOS
(MULTIPROGRAMA)
HARDWARE
(DISPOSITIVOS FISICOS)
1.1 FUNCIONES PRINCIPALES DE UN SISTEMA OPERATIVO:
Un Sistema Operativo realiza 2 funciones principales que se basan en dos puntos de vista: 1) del usuario y 2)
del programador.
•
MAQUINA EXTENDIDA:
Es el programa que oculta la complejidad del hardware que el programador utilice, es decir, presenta una
visión agradable y más fácil de manejar de todos los recursos del sistema (Hardware y Software). Muestra al
usuario el equivalente de una maquina extendida o maquina virtual que sea mas fácil de programar que el
hardware subyacente.
M. en C. Marisol Hernández López
•
CONTROLADOR DE RECURSOS:
Es el conjunto de programas que llevan un registro de la utilización de los recursos, da el paso a
solicitudes de recursos y controla su uso, además tiene que mediar entre aquellas solicitudes que se encuentran en
conflicto.
1.1.1 ADMINISTRADORES DEL SISTEMA OPERATIVO
•
ADMINISTRADOR DE MEMORIA:
Esta a cargo de la memoria RAM, comprueba la validez de cada solicitud de espacio de memoria, su tarea
principal es proteger el espacio reservado para el sistema operativo, no puede permitir que parte alguna de ese
espacio sea alterado de forma accidental o propositiva y finalmente en entornos multiusuarios lleva el control del
uso de cada sección de la memoria mediante una tabla conocida como Tabla de Memoria.
•
ADMINISTRADOR DE LA CPU:
Se encarga de asignar la Unidad Central de Procesamiento así como controlarla, monitorearla y manejarla
para que todos los procesos puedan ser atendidos. Contiene algoritmos para la planificación de la CPU por lo que
trabaja con dos niveles de planificación:
o PLANIFICADOR DE TAREAS (alto nivel): Se encarga de aceptar o rechazar las tareas que se
generan durante la aplicación.
o PLANIFICADOR DE PROCESOS (bajo nivel): Una vez que las tareas son aceptadas decide cuales
de ellas obtienen la CPU y durante cuanto tiempo.
•
ADMINISTRADOR DE DISPOSITIVOS ENTRADA/SALIDA:
Se encarga de controlar y vigilar todos los dispositivos, así como las unidades de control, canales, buffers
y buses que forman el sistema de E/S. Su tarea fundamental es definir la manera más eficiente de asignar los
recursos de E/S en base a políticas de programación descritas por los diseñadores del sistema.
•
ADMINISTRADOR DE ARCHIVOS:
Administra y lleva el control de todos los archivos que se encuentran en el sistema. Controla la
flexibilidad de acceso que se tiene para cada uno de ellos, se encarga de la creación de cada archivo así como de
estipular sus características, además contiene políticas de acceso, almacenamiento y búsqueda para cada archivo.
•
ADMINSTRADOR DE RED:
Proporciona la forma más conveniente de compartir recursos (Hardware y Software) y al mismo tiempo
controla el acceso a los mismos, mediante protocolos de comunicación.
1.2 EVOLUCION DE LOS SISTEMAS OPERATIVOS.
Los sistemas operativos han evolucionado a través de los años y se han apegado íntimamente a la
arquitectura de las computadoras en las cuales se ejecutan. La primera computadora digital real fue diseñada por
el matemático inglés Charles Babbage, la máquina analítica nunca la hizo funcionar adecuadamente por que era
un diseño puramente mecánico; sin tener que decirlo la maquina analítica no tuvo un sistema operativo.
M. en C. Marisol Hernández López
Primera Generación 1940 (Bulbos y tableros de conexiones).
Debido a la tecnología de bulbos y conexiones que existía en las computadoras de esa generación la
necesidad de un Software que controlara estos recursos no existía, ya que estas conexiones eran realizadas por
personas que tenían el conocimiento de la computación. Estas maquinas eran enormes y llenaban cuartos enteros
con decenas de miles de tubos de vacío, pero eran mucho mas lentas que aún la computadora doméstica más
barata que existe hoy en el mercado.
Toda la programación se realizaba en lenguaje maquina absoluto, a menudo alambrando tableros de
conexiones para controlar las funciones básicas de la maquina. Los lenguajes de programación se desconocían
(todavía no existía el lenguaje ensamblador). El modo usual de operación consistía en que el programador firmaba
para tener acceso a un bloque de tiempo en la hoja de registros situada en la pared, después bajaba al cuarto de
máquina, insertaba un tablero de conexiones en la computadora y pasaba las siguientes horas esperando que
ninguno de los 20 000 bulbos (mas o menos) se fundiera durante la ejecución de su programa; virtualmente todos
los problemas eran los cálculos numéricos directos, como la elaboración de tablas de senos y cosenos. Al inicio
de la década de 1950, la rutina había mejorado un poco con la introducción de las tarjetas perforadas, ahora era
posible escribir programas en tarjetas y leerlos, en vez de utilizar tableros de conexiones.
Segunda Generación 1950 (Transistores y sistemas de procesamiento por lotes).
Por primera vez hubo una separación entre los diseñadores, constructores, operadores, programadores y
personal de mantenimiento dedicado a los sistemas de cómputo. Se diseña un programa típico y primitivo en una
tarjeta perforada el cual tenía las instrucciones básicas para la operación de la computadora, a finales de la
segunda generación y principios de la tercera generación se introducen los primeros conceptos de sistemas
operativos de procesamiento por lotes.
La introducción del transistor a mediados de la década de 1950 cambio la imagen radicalmente. Las
computadoras se volvieron lo suficientemente confiables que podían fabricarse y venderse a clientes con la
esperanza de que continuaran funcionando el tiempo suficiente para realizar algún trabajo útil.
Para ejecutar un trabajo (un programa o conjunto de programas), un programador primero escribía el
programa en papel (en Fortran o lenguaje Ensamblador) y después lo perforaba en tarjetas, luego llevaría la pila
de tarjetas al cuarto de introducción al sistema y la entregaría a unos de los operadores; que al finalizar la
ejecución imprimía los resultados para su análisis.
Debido al alto costo y desperdicio de tiempo del equipo, se buscaron maneras para solucionarlo por lo que
se adoptó el procesamiento por lotes; la idea implícita en este sistema era la de conjuntar un cajón lleno de
trabajos en el cuarto de introducción al sistema y después leerlos en una cinta magnética mediante el uso de una
computadora pequeña y poco costosa, como la IBM 1401, que era muy eficiente en la lectura de tarjetas, en el
copiado de cintas y en la impresión de la salida, pero no muy eficiente en los cálculos numéricos, otras maquinas
muchos más costosas como la IBM 7094, se utilizaron para realizar los cálculos reales.
Las grandes computadoras de la segunda generación se utilizaban en su mayor parte para realizar cálculos
científicos y de ingeniería, como la solución de ecuaciones diferenciales parciales. Se programaban
principalmente en FORTRAN y en lenguaje ENSAMBLADOR, los sistemas operativos comunes eran FMS
(Fortran Monitor System) e IBSYS, sistema operativo de IBM para la computadora 7094.
M. en C. Marisol Hernández López
Tercera Generación 1960 (Circuitos Integrados y Multiprogramación)
Se utilizan los primeros circuitos integrados y el concepto de multiprogramación, IBM diseña los primeros
sistemas operativos, así como el hardware que tiene que administrar. Al inicio de la década de 1960 muchos
fabricantes de computadoras tenían dos líneas de productos distinta y totalmente incompatibles. Por un lado
existían las computadoras científicas de gran escala orientadas a las palabras, como la 7094 que se utilizaba para
realizar cálculos numéricos de ciencias e ingeniería, por el otro lado, estaban las computadoras comerciales
orientadas a los caracteres, como la 1401, que se utilizaban ampliamente para el ordenamiento de cintas e
impresión por parte del banco y compañías de seguros; el desarrollo y mantenimiento de dos líneas de productos
completamente diferentes era una proposición costosa para los fabricantes.
IBM intento resolver estos dos problemas introduciendo en el mercado el Sistema 360, el cual era una
serie de maquinas de software compatible que iba desde computadoras del tamaño de la 1401, hasta otras mucho
más potentes que la 7094. Además, el sistema 360 estaba diseñado para realizar cálculos tanto científicos como
comerciales. El sistema 360 fue la primera línea importante de computadoras que utilizó circuitos integrados, lo
cual ofreció una mayor ventaja de precio/rendimiento sobre las maquinas de la segunda generación que se
construían a partir de transistores individuales.
La intención era que todo el software como sistema operativo tenía que funcionar en todos los modelos,
correr en sistemas pequeños que a menudo sustituía a las unidades 1401 para copiar o reproducir tarjetas en cinta,
y en sistemas muy grandes, que con frecuencia reemplazaban la 7094 para realizar predicciones climatológicas y
otras operaciones complejas además de funcionar adecuadamente en sistemas con pocos periféricos y en sistemas
con muchos periféricos y finalmente, funcionar en medios comerciales y científicos. Por todo esto no había
manera de que IBM escribiera una pieza de software que cumpliera todos esos requisitos conflictivos y el
resultado fue un sistema operativo enorme y extraordinariamente complejo llamado OS/360, quizá de dos a tres
órdenes de magnitud mayor que FMS, constaba de millones de líneas de lenguaje ensamblador escritas por miles
de programadores y contenía miles y miles de errores ocultos que necesitaban un flujo continuo de nuevas
liberaciones en un intento por corregirlos. A pesar de su tamaño y problemas enormes el OS/360 y los sistemas
operativos similares de la tercera generación producidos por otros fabricantes de computadoras satisfacían a
muchos de sus clientes, también popularizaron varias técnicas importantes ausentes en los sistemas operativos de
la segunda generación, probablemente la más importante sea la multiprogramación.
Cuarta Generación 1980 (Computadoras Personales).
Existen los primeros sistemas operativos multiprogramados de tiempo compartido. Microsoft diseña el
sistema operativo DOS para las IBM PC, las 8088 de Intel y sucesores; Se realiza una división sobre la
funcionalidad de las computadoras: IBM dedicada a funciones comerciales y científicas e INTEL dedicada a
computadoras personales, por lo que existen dos principales empresas en el diseño de sistemas operativos:
Microsoft y Multics.
Dos sistemas operativos han dominado la escena de la computación: MS-DOS, escrito por Microsoft, Inc.
para la IBM PC y otras maquinas que utilizan la CPU INTEL 8088 y sucesores; y UNIX que domina en las
computadoras mayores que hacen uso de la familia de CPU MOTOROLA 68000 y sucesores. Quizás sea irónico
que descendiente directo de MULTICS, diseñado para proporcionar un servicio de computación gigantesco, se
haya vuelto tan popular en las computadoras personales, pero muestra principalmente lo bien pensadas que fueron
las ideas de MULTICS y UNIX.
M. en C. Marisol Hernández López
Aunque la versión inicial de MS-DOS era relativamente primitiva, versiones subsiguientes han incluido
más y más características de UNIX, lo que no es totalmente sorprendente dado que Microsoft es un proveedor
importante de UNIX, que usa el nombre comercial de XENIX.
Un avance interesante que empezó a tomar sitio a mediados de la década de 1980 es el desarrollo de las
redes de computadoras que corren en un sistema operativo centralizado y en sistemas operativos distribuidos. En
un sistema operativo centralizado, los usuarios tienen conocimiento de la existencia de múltiples computadoras y
pueden ingresar en maquinas remotas y reproducir archivos de una maquina a la otra, cada maquina ejecuta su
sistema operativo local y tiene un usuario propio (o usuarios). Un sistema operativo distribuido es aquel que se
presenta ante sus usuarios como un sistema uniprocesador tradicional, aunque en realidad este compuesto de
múltiples procesadores.
1.3 TIPOS DE SISTEMAS OPERATIVOS
Se clasifican por la forma en que se introducen los datos al sistema, por su tiempo de respuesta y por tipo de
procesamiento:
•
Por tipo de introducción y aceptación de datos:
o Sistemas Operativos en Serie: Los mecanismos de desarrollo y ejecución de programas en estos
sistemas son bastante lentos debido a la secuencia que sigue la operación como la carga del
programa editor, el traductor del lenguaje, etc.
o Sistemas Operativos por Lotes o Batch (FMS e IBSYS): Se introducía una tarea mediante la
agrupación de tarjetas en un paquete y se corría todo el paquete a través de un lector como un
grupo (LOTE). En la actualidad no existen ni tarjetas ni cintas, pero todavía se procesa en lotes, sin
la interacción del usuario. La eficiencia de estos sistemas se mide en producción, esto es la
cantidad de tareas completadas en un lapso de tiempo.
o Sistemas Operativos multiprogramados o multitarea (OS/360): Son Sistemas Operativos que
alternan con diferentes procesos a la vez, debido a que se tiene el concepto de memoria
particionada, por lo cual son capaces de aceptar mas de un trabajo a la vez.
•
Los Sistemas Operativos multiprogramados se subdividen por sus tiempos de respuesta:
o Interactivos (DOS, UNIX): También conocidos como sistemas de Tiempo Compartido, se crearon
para satisfacer las demandas de los usuarios que necesitaban un tiempo de retorno rápido al
eliminar los errores de sus programas. Permite a cada usuario interactuar directamente con el
sistema de computo mediante introducción de comandos a partir de una terminal tipo maquina de
escribir, proporciona una retroalimentación inmediata al usuario y el tiempo de respuesta se puede
medir en minutos o segundos, según el numero de usuarios activos.
o De tiempo real (trafico aéreo, vuelos espaciales, aeronaves de alta velocidad, equipo medico): Son
los mas rápidos, se utilizan en entornos donde el tiempo es crítico, debido a que los datos se
procesan con rapidez ya que la salida afecta a decisiones inmediatas. El sistema debe ser 100%
sensible el 100% de las veces por lo que el tiempo de respuesta se mide en fracciones de segundos.
o Híbridos: Son una combinación de sistemas por lotes e interactivos, parecen interactivos porque
los usuarios pueden tener acceso al sistema mediante terminales y obtener respuesta rápida; pero
cuando la carga interactiva es ligera este sistema acepta y opera programas por lotes en un segundo
plano. Aprovecha el tiempo libre entre demandas de procesamiento para ejecutar programas que
M. en C. Marisol Hernández López
no necesitan ayuda significativa del operador, muchos de los sistemas de cómputo grandes son
híbridos.
•
Por el tipo de usuario:
o Monousuario: Dedica todos los recursos del sistema a un solo usuario, sus operaciones en red son
mínimas o casi nulas debido a que en estos Sistemas Operativos se implementaron en las primeras
computadoras personales.
o Multiusuario: Aceptan la interacción con varios usuarios a través de terminales, manejando el
concepto de red.
•
Los sistemas multiusuarios se dividen en dos tipos de acuerdo al procesamiento que llevan a cabo.
o Centralizado: Son aquellos que ejecutan todos los procesos en una sola computadora, y consideran
como terminales tontas a todas aquellas computadoras conectadas a la red (UNIX).
o Distribuidos: Son aquellos que ejecutan las tareas en diferentes computadoras, cada computadora
contiene su propio Hardware y Software de ejecución. Permiten que los programas corran en
varios procesadores al mismo tiempo, con lo cual se requieren algoritmos de planificación del
procesador más complejos a fin de optimizar la cantidad de paralelismo lograda.
1.4 ESTRUCTURAS DE LOS SISTEMAS OPERATIVOS.
ESTRUCTURA MONOLITICA
Este tipo de organización es en mucho la más común, la estructura consiste en que no existe estructura
alguna. El sistema operativo se escribe como una colección de procedimientos, cada uno de los cuales puede
llamar a los demás cada vez que así lo requiera; cada procedimiento del sistema tiene una interfaz bien definida
en términos de parámetros y resultados y cada uno de ellos es libre de llamar a cualquier otro si este proporciona
cierto calculo útil para el primero.
Para construir el programa objeto real del sistema operativo, se compilan en forma individual los
procedimientos o los archivos que contienen los procedimientos y después se enlazan en un solo archivo objeto
con el ligador. En términos de ocultamiento de la información es prácticamente nula, cada procedimiento es
visible a los demás.
Los servicios (llamadas al sistema) que proporciona el sistema operativo se solicitan colocando los
parámetros en lugares bien definidos, como en los registros o en la pila, para después ejecutar una instrucción
especial de trampa conocida como llamada al núcleo o llamada al supervisor, esta instrucción cambia la maquina
del modo usuario al modo núcleo y transfiere el control al sistema operativo.
M. en C. Marisol Hernández López
Programa 2 del usuario
Programa 1 del usuario
:
• Llamada al núcleo
Programas del usuario (ejecución en modo usuario)
(4)
(1)
Proc. del
(3) Servicio
El sistema operativo se ejecuta en modo núcleo
(2) Tabla de despacho
•
Núcleo
Memoria Principal
(1)
(2)
(3)
(4)
El programa del usuario es atraído hacia el núcleo.
El sistema operativo determina el número del servicio solicitado.
El sistema operativo localiza y llama al procedimiento correspondiente al servicio.
El control regresa al programa del usuario.
Esta organización sugiere el siguiente funcionamiento básico del sistema operativo:
• Un programa principal que llama al procedimiento del servicio solicitado.
• Un conjunto de procedimientos de servicio que llevan a cabo las llamadas al sistema.
• Un conjunto de procedimientos utilitarios que ayudan al procedimiento de servicio.
ESTRUCTURA POR CAPAS
Consiste en organizar el Sistema Operativo como una jerarquía de capas, cada una construida sobre la
inmediata inferior, donde la información y los datos son privados para cada capa. Este tipo de estructura sugiere
una orientación modular lo cual conlleva la ventaja de mantenibilidad.
El primer sistema construido bajo este esquema fue el sistema THE (Technische Hogeschool Eindhoven),
el sistema tenia seis capas: la capa 0 se encargaba de la asignación del procesador y la alternancia entre los
proceso cuando ocurren las interrupciones o expiran los cronómetros, esta capa proporcionaba la
multiprogramación básica de la CPU, la capa 1 realizaba la administración de la memoria principal asignando el
espacio solicitado por los procesos, así como la organización de las paginas de dichos procesos en el caso de que
no se pudieran cargar en memoria garantizando la asignación cuando estas fueran necesarias, la capa 2 permitía
la comunicación entre cada proceso y la consola del operador, la capa 3 controlaba los dispositivos de E/S y
guardaba en almacenes (buffer) los flujos de información entre ellos, la capa 4 en esta se encontraban los
programas del usuario y en la capa 5 se ubicaba el proceso del operador del sistema.
M. en C. Marisol Hernández López
Capa
5
4
3
2
1
0
Función
El operador
Programas del usuario
Control de E/S
Comunicación Proceso-Operador
Administración memoria y disco
Asignación de la CPU y Multiprog.
Capa
5
4
3
2
1
1) Estructura del Sistema “THE” (1968).
Función
Interprete del lenguaje de órdenes
Sistema de Archivos
Gestión de Memoria (segmentos, páginas)
E/S Básica
Núcleo (procesos, semáforos)
2) Estructura por capas de los Sistemas Operativos actuales.
ESTRUCTURA DE MAQUINA VIRTUAL
Esta estructura esta orientada a los sistemas operativos híbridos sobre hardware de estilo “mainframe”.
Los programas que forman el Sistema Operativo se crean de acuerdo al hardware simple de la computadora como
lo es la E/S, interrupciones, modo núcleo y multiprogramación. El primer Sistema Operativo que propuso esta
estructura fue el TSS/360 (actualmente conocido como VM/370).
Son sistemas de tiempo compartido que proporcionan 1) multiprogramación y 2) una máquina extendida
con una interfaz más cómoda que el hardware desnudo, lo cual en esencia es separar por completo estas dos
funciones. El núcleo del sistema, llamado monitor de la máquina virtual, se ejecuta directamente en el hardware y
realiza la multiprogramación, proporcionando varias máquinas virtuales a la capa inmediata superior; sin embargo
estas máquinas virtuales no son máquinas extendidas, sino copias exactas del hardware desnudo que incluyen
modo de kernel/usuario, E/S, interrupciones y todo lo que contiene una máquina real, por lo tanto cada una puede
ejecutar cualquier sistema operativo ejecutable directamente en el hardware.
Algunas ejecutan uno de los descendientes de OS/360 para el procesamiento de transacciones por lotes,
mientras que otras ejecutan un sistema interactivo monousuario llamado CMS (Conversational Monitor System)
para usuarios interactivos de tiempo compartido.
370 virtuales
Llamadas al sistema aquí
Instrucciones de E/S
Salto aquí
CMS
CMS
CMS
Salto aquí
VM/370
Hardware desnudo de la 370
Estructura del VM\370 con CMS
•
•
El sistema OS/360 utilizado para procesamiento por lotes.
El sistema CMS utilizado para tiempo compartido.
M. en C. Marisol Hernández López
ESTRUCTURA DE CLIENTE SERVIDOR
La tendencia en los sistemas operativos modernos consiste en llevar mas lejos la idea de subir código a
capas superiores y quitar lo más que se pueda del modo de kernel, dejando un microkernel mínimo. Esto es,
implementando casi todo el sistema operativo en procesos de usuario, para solicitar un servicio, un proceso del
usuario (proceso-cliente) envía la solicitud a un proceso servidor que realiza el trabajo y regresa la respuesta. El
núcleo del Sistema Operativo, ahora es el encargado de controlar la comunicación entre los clientes y los
servidores.
Una gran ventaja de esta estructura es que todos los procesos servidores se ejecutan como proceso en
modo usuario y no en modo kernel, de esta manera no tienen acceso directo al hardware, por lo tanto, si se activa
un error en el servidor de archivos, el servicio de archivos podría fallar, pero eso no hará que se detengan todos
los demás procesos servidores, es decir, toda la maquina. Otra ventaja del modelo cliente-servidor es su
adaptabilidad para usarse en sistemas distribuidos.
Proceso Proceso
Cliente Cliente
Servidor de
Procesos
Servidor de
Terminales …..
Microkernel
Servidor de
Archivos
Servidor de
Memoria
El cliente obtiene servicio
enviando mensajes a los
procesos servidores
Modo de Usuario
Modo de kernel
El modelo Cliente-Servidor
M. en C. Marisol Hernández López
UNIDAD II.
2. ADMINISTRACION DE MEMORIA
El desempeño de todo sistema ha dependido de dos cosas: cuanta memoria está disponible y de qué
manera se utiliza mientras se procesan los trabajos. La parte del sistema operativo que administra la memoria
principal se denomina administrador de memoria, su responsabilidad es mantenerse al tanto de qué partes de la
memoria están en uso y cuales no, asignar memoria a los procesos cuando la necesitan y liberarla cuando
terminan, además de administrar los intercambios entre la memoria principal y el disco.
La administración de la memoria principal es vital debido a que es el único espacio físico disponible en el
cual se almacenan las instrucciones que forman un proceso para que sean ejecutadas. El ciclo típico de ejecución
de instrucciones incluye la transferencia de instrucciones de memoria a CPU, decodificación de instrucciones,
búsqueda de operandos y ejecución efectiva de las instrucciones, posteriormente los resultados también pueden
ser almacenados en memoria.
2.1 JERARQUIA DE MEMORIA
La jerarquía de memoria se refiere a los diferentes tipos de memoria disponibles en un sistema. Estos
diferentes tipos de memoria se colocan en una pirámide mientras más abajo en la jerarquía de memoria se
encuentra el tipo de memoria, más lenta y barata es, pero hay mayor cantidad de ella en un sistema.
El éxito o fracaso de un acceso a un nivel superior se designa como acierto o fallo: un acierto (hit) es un
acceso a memoria que se encuentra en nivel superior, mientras que un fallo (miss) significa que no se encuentra
en ese nivel. La frecuencia de aciertos es la fracción de accesos a memoria encontrados en el nivel superior. La
frecuencia de fallos es la fracción de accesos a memoria no encontrados en el nivel superior. En la jerarquía de
memoria podemos ver que se cumplen una seria de condiciones:
•
•
•
•
•
Al bajar de nivel aumenta la capacidad de la memoria.
Al bajar de nivel disminuye el coste por bit.
El registro es el más caro, luego la cache.
Al bajar de nivel se observa que el tiempo de acceso aumenta. Acceder a un disco óptico es más lento que
a un disco magnético.
Si seguimos bajando de nivel, disminuye la frecuencia de acceso: no es lo mismo que el tiempo que es el
tiempo que trae el dato, es el nº de veces que accede a esa memoria.
Esta es la clave del funcionamiento de la jerarquía de memoria, esa disminución de frecuencia se debe
sobre todo a lo que se conoce como principio de localidad o cercanía de referencia.
M. en C. Marisol Hernández López
Jerarquía de Memoria
2.1.1 MEMORIA SECUNDARIA
Son una extensión de la memoria principal, el requerimiento fundamental para la memoria secundaria es
que sea capaz de retener grandes cantidades de datos y de manera permanente. El dispositivo más común es el
disco magnético, el cual almacena tanto programas como datos, los cuales permanecen en el disco hasta que son
cargados en memoria principal. Muchos programas utilizan el disco duro como fuente y como destino de la
información para su procesamiento.
2.1.2 MEMORIA PRINCIPAL
Para la ejecución de los procesos, estos deben estar almacenados en la memoria principal (RAM). La
RAM es el único espacio de almacenamiento a la que el procesador tiene acceso. La interacción entre el
procesador y la memoria se lleva a cabo mediante dos opciones orientadas a direccionamiento de memoria:
•
•
LOAD: Mueve una palabra de la memoria a un registro del CPU.
STORE: Mueve el contenido de un registro a la memoria.
Se implementa con una tecnología de semiconductores llamada memoria dinámica de acceso aleatorio
(DRAM), que forma un arreglo de palabras de memoria. La CPU carga en automático instrucciones desde la
memoria principal para su ejecución. Se desearía que los programas y los datos residieran en memoria de manera
permanente, sin embargo esto no es posible por dos principales desventajas: 1) la memoria principal es demasiado
pequeña para que pueda almacenar todos lo programas y datos de manera permanente y 2) la memoria principal
es un dispositivo de almacenamiento volátil.
2.1.3 MEMORIA CACHE
Es un espacio muy pequeño de memoria que almacena los datos más usados, por lo que tiene las mismas
características de la RAM. La memoria cache es una versión de rápido acceso, diseñada para resolver las
diferencias de velocidad entre un CPU muy rápido y una memoria principal mas lenta, lo hace almacenando una
copia de los datos de uso frecuente en una memoria de fácil acceso en vez de la memoria principal, cuyo acceso
M. en C. Marisol Hernández López
es mas lento; un tamaño de cache razonablemente pequeño puede generar mejorías significativas en el
rendimiento.
Su propósito principal es aproximar la velocidad de la memoria (acceso) a la de aquellas más rápidas que
existen, cada vez que se realiza una carga de datos a los registros del CPU se hace una prueba de cache que
consiste en la búsqueda de estos datos dentro de la cache antes de llegar a la RAM.
Dado que la memoria cache es un pequeño espacio que contiene relativamente pocos datos, el procesador
tiene acceso a sus datos e instrucciones con mucha mayor rapidez que si tuviera que recuperarlos de la memoria
principal, la memoria cache se localiza entre el procesador y la memoria principal.
Memoria
Principal
CPU
Controlador
de cache
Acierto
Memoria
Cache
Falla
Un controlador de cache determina la frecuencia con que se utilizan los datos, transfiere los que se usan a
menudo a la memoria cache y los elimina cuando identifica datos de uso aun mas constante, los datos en la
memoria cache se deben considerar como temporales, en el caso de una falla de energía, estos se pierden y no
pueden recuperarse, exactamente igual que la memoria RAM.
2.2 ASIGNACION DE MEMORIA
Los primeros esquemas de administración de memoria introdujeron conceptos fundamentales que
ayudaron a la evolución de la administración de memoria, haciendo eficiente su uso en los sistemas actuales. La
elección de un método de administración de la memoria para un sistema específico depende de muchos factores,
fundamentalmente del diseño del hardware del sistema.
2.2.1 CONTIGUA SIMPLE
También conocida como “monoproceso”, el tamaño de la memoria era muy pequeño por lo que solo
existían dos particiones contiguas, una definida para el S. O. y otra para los llamados “procesos transitorios” o
“procesos de usuario”. La designación del espacio para el sistema operativo se llevaba a cabo mediante hardware,
por lo que el espacio designado para los procesos transitorios se define por el propio sistema operativo, es decir,
la primera localidad disponible era la inmediata después del sistema operativo y la última estaba definida por la
capacidad máxima de la memoria.
M. en C. Marisol Hernández López
Para que el sistema pudiera proteger las localidades designadas tanto para el sistema operativo como para
los otros procesos, requería de algún tipo de asistencia de hardware, como por ejemplo la utilización de los
“registros valla”, los cuales delimitan una frontera entre el área del sistema operativo y el área de procesos.
0
SISTEMA
OPERATIVO
(MONITOR)
AREA DE
PROCESOS
TRANSITORIOS
Máxima Localidad de Memoria
2.2.2 MEMORIA PARTICIONADA (MULTIPROGRAMACION)
La multiprogramación consiste en que el espacio de memoria de usuario es compartido por múltiples
procesos, es decir, un conjunto de procesos pueden ser almacenados en memoria de forma simultáneamente. La
utilización de multiprogramación trae consigo varias ventajas entre las cuales se cuenta el mejor aprovechamiento
de la CPU, pues cuando un proceso está realizando E/S, la CPU podría ser utilizada por otro proceso; por otro
lado la multiprogramación es atractiva para los sistemas multiusuarios y procesos interactivos.
PARTICIONES FIJAS
El primer intento para posibilitar la multiprogramación fue la creación de particiones fijas (estáticas) en la
memoria principal: una partición para cada tarea. La memoria es dividida en varios bloques de tipo fijo, los cuales
se definen en cuanto se inicia el arranque del sistema, posteriormente esas particiones permanecen fijas; en caso
de que se deseara reconfigurar estos bloques se tenía que reiniciar el sistema nuevamente y configurar.
Este esquema introdujo un factor esencial: la protección del espacio de memoria para los procesos. La
protección de cada uno de estos bloques estaba a cargo del sistema operativo, el cual contenía una tabla en la que
se mostraba el tamaño de la partición, así como su dirección de inicio y fin de la partición y el estado de libre u
ocupado.
Las desventajas de esta asignación surgen debido a que es necesario que el programa se almacene
completo y contiguo en la memoria desde el principio hasta el fin de su ejecución, por lo que si el tamaño de la
partición es demasiado pequeño las tareas grandes serán rechazadas o por el contrario si el tamaño de la partición
es demasiado grande, se desperdicia memoria lo que se conoce como fragmentación interna.
M. en C. Marisol Hernández López
Lista de tareas:
J1 30K
J2 50K
J3 30K
J4 25K
SISTEMA OPERATIVO
SISTEMA OPERATIVO
PARTICION 1
100K
Tarea 1 (30K)
Partición 1
PARTICION 2
25K
Tarea 4 (25K)
PARTICION 3
25K
Partición 2
Partición 3
Tarea 2 (50K)
PARTICION 4
50K
MEMORIA PRINCIPAL
Partición 4
MEMORIA PRINCIPAL
TABLA DE MEMORIA:
Tamaño de Dirección en
Partición
Memoria
100K
200K
25K
300K
25K
325K
50K
350K
Acceso
Tarea 1
Tarea 4
Tarea 2
Estado de
Partición
Ocupado
Ocupado
Libre
Ocupado
2.2.3 ALGORITMOS DE ASIGNACION DE PROCESOS
Los tres tipos de algoritmos para la asignación de procesos en la memoria son:
• PRIMER AJUSTE: Tiene que asignar la primera partición disponible y suficiente para la tarea que la
solicita de acuerdo a la prioridad FIFO.
• MEJOR AJUSTE: Asigna la partición más pequeña pero suficiente para la tarea que la solicita, la
búsqueda la realiza en toda la tabla de memoria hasta encontrar la adecuada.
• PEOR AJUSTE: Asigna la partición más grande disponible y suficiente para almacenar la tarea que la
solicita, la búsqueda se realiza en toda la tabla de memoria.
2.2.4
PAGINACION SIMPLE
Se basa en el concepto principal de dividir cada tarea de llegada en páginas de igual tamaño, donde el
tamaño de página es fijo y depende del tamaño de los sectores del disco duro (y los sectores de memoria). Los
M. en C. Marisol Hernández López
sectores en que se divide la memoria principal se denominan marcos de página y en ellos se almacena las páginas
de cada tarea. El tamaño usual de cada marco de página va desde los 512 bytes hasta 64 Kbytes.
La principal ventaja de la paginación simple es el almacenamiento no continuo de las páginas dentro de la
memoria principal, sin embargo es necesario que la tarea se almacene completa hasta el termino de su ejecución.
El administrador de memoria debe realizar las siguientes tareas:
1. Determinar el número de páginas de cada programa.
2. Ubicar los marcos de página vacíos en la memoria principal.
3. Cargar todas las páginas del programa en los marcos de página.
Por lo que requiere el manejo de tres tablas importantes:
• TABLA DE MAPAS DE PAGINAS (TMP): Contiene la información de los marcos de página, su
dirección y número de página.
• TABLA DE MAPA DE MEMORIA (TMM): Contiene la dirección de los marcos de página y su
estado libre u ocupado.
• TABLA DE TAREAS (TT): Contiene el tamaño de la tarea en números de página y la localidad de
memoria donde se encuentra almacenada.
2.2.5 SEGMENTACION SIMPLE
SEGMENTO: Modulo independiente del programa que realiza una tarea en especifico pero en conjunción
con los demás módulos.
Es un método de asignación de memoria que se realiza a nivel lógico, debido a que divide cada proceso de
llegada en segmentos o módulos de distintos tamaños cada uno independiente de los demás. La carga de los
procesos en la memoria principal debe ser completa y de manera no contigua, por lo que la asignación se define
como “Dinámica”.
Una vez que quedan asignados los segmentos y terminan su ejecución, la memoria permanece con las
particiones que se crearon al asignar estos segmentos, por lo que la asignación de nuevos segmentos tendrá que
ser en las particiones que se encuentren vacías y que sean suficientes para la asignación.
La asignación por segmentación simple es un proceso complejo que requiere del uso de tres tablas que le
permitan un buen manejo tanto de los bloques en memoria como de los segmentos que solicitan ser asignados.
• TABLA DE TAREAS: Lista todas las tareas en proceso.
• TABLA DE MAPA DE SEGMENTOS: Lista detalles sobre cada segmento.
• TABLA DE MAPA DE MEMORIA: Vigila la asignación de la memoria principal.
2.2.6 PAGINACION POR DEMANDA
Es similar a lo visto para la paginación simple, con la diferencia que este esquema introdujo la idea de
cargar solo una porción del programa para su procesamiento. Los paginas de los procesos residen en el disco duro
y solo cuando van a ser ejecutados deben ser cargados en memoria.
M. en C. Marisol Hernández López
Una de las innovaciones de mayor importancia en la paginación por demanda es que hizo posible el
amplio uso de la memoria virtual, lo que permite al usuario ejecutar tareas con menos memoria principal de lo
que requeriría si utilizara la paginación simple.
El sistema operativo se sigue apoyando en las mismas tablas que se utilizan en la paginación simple, pero
con la adición de tres nuevos campos para cada página en la Tabla de Mapa de Paginas:
Campo #1, establece si la pagina solicitada esta o no en la memoria.
Campo #2, determina si el contenido de la página se ha modificado.
Campo #3, define si la página ha sido referenciada recientemente.
La ventaja principal de la paginación por demanda es que pueda ejecutar procesos con números de páginas
mayores a la memoria físicamente disponible debido al reemplazo de páginas, haciendo creer al usuario que tiene
una memoria casi infinita.
Las desventajas principales es que sigue existiendo fragmentación interna en la última página de cada
proceso y además un reemplazo continuo de páginas lo que se conoce como hiperpaginación.
2.2.7 SEGMENTACION POR DEMANDA
Un proceso no necesita tener todos los segmentos cargados en memoria para ser ejecutado, este esquema
se basa en la idea de que solamente se deben cargar en memoria aquellos segmentos que estén siendo activamente
utilizados. La ventaja principal de este esquema es el uso de la Memoria virtual (parecido a la paginación por
demanda), la principal desventaja es que debido a una asignación dinámica existe la fragmentación externa y el
reemplazo continuo de segmentos a los que llamamos hipersegmentación.
2.3 SERVICIOS DE GESTION DE MEMORIA
Las labores que lleva a cabo el sistema de gestión de memoria son más bien de carácter interno, los
principales servicios están relacionados con la proyección de archivos. Típicamente existirán dos:
•
•
Proyectar un archivo. Permite incluir en el mapa de memoria de un proceso un archivo o parte del mismo,
con esta operación, se crea una región asociada al objeto de memoria almacenado en el archivo.
Normalmente, se pueden especificar algunas propiedades de esta nueva región, por ejemplo, protección.
Desproyectar un archivo. Eliminar una proyección previa o parte de la misma.
2.3.1 SERVICIOS POSIX
El estándar POSIX (Portable Operating System) define un conjunto de servicios de gestión de memoria y
los mas frecuentemente utilizados son los que corresponden con la proyección y desproyección de archivos
(mmap,munmap). El servicio mmap tiene el siguiente prototipo:
caddr_t mmap (caddr_t direc, size_t longitud, int protect, int indicador, int descriptor, off_t despl);
El primer parámetro indica la dirección del mapa donde se quiere que se proyecte el archivo, la función
devolverá la dirección de proyección utilizada.
M. en C. Marisol Hernández López
El parámetro descriptor se corresponde con el descriptor del archivo que se pretende proyectar y los
parámetros despl y longitud establecen que zona del archivo se proyecta: desde la posición despl hasta
desp+longitud.
El argumento protect establece la protección sobre la región que puede ser de lectura (PROT_READ), de
escritura (PROT_WRITE), de ejecución (PROT_EXEC).
El parámetro indicador permite establecer ciertas propiedades en la región:
• MAP_SHARED. La región es compartida. Las modificaciones sobre la región afectaran al archivo. Un
proceso hijo compartirá esta región con el padre.
• MAP_PRIVATE. La región privada. Las modificaciones sobre la región no afectaran al archivo. Un
proceso hijo no compartirá esta región con el padre, sino que obtendrá un duplicado de la misma.
• MAP_FIXED. El archivo debe proyectarse justo en la dirección especificada en el primer parámetro,
siempre que éste sea distinto de cero.
Cuando se quiere eliminar una proyección previa o parte de la misma, se usa el servicio munmap cuyo
prototipo es:
int munmap (caddr_t direc, size_t longitud);
2.3.2 SERVICIOS WIN32
La API Win32 incluye varias funciones que permiten a un proceso administrar en forma explicita su
memoria virtual. Las más importantes de esas funciones son:
Función API Win32
VirtualAlloc
VirtualFree
VirtualProtect
VirtualQuery
VirtualLock
Descripción
Reserva o compromete una región
Libera o descompromete una región
Modifica la protección de leer/escribir/ejecutar una región
Pregunta por la situación de una región
Hace residente en memoria una región (Inhabilita su paginación)
VirtualUnlock
CreateFileMapping
MapViewOfFile
Hace paginable una región
Crea un objeto de correspondencia de archivo y lo nombra
Establece correspondencia con un archivo y el espacio de direcciones
UnmapViewOfFile
OpenFileMapping
Elimina la correspondencia entre un archivo y el espacio de direcciones
Abre un objeto de correspondencia de archivo creado con anterioridad
M. en C. Marisol Hernández López
UNIDAD III.
3. ADMINISTRADOR DEL PROCESADOR
El administrador del procesador trabaja con tres niveles de planificación:
Planificador de nivel alto (Tareas): Acepta o rechaza tareas de acuerdo a políticas establecidas que
generan una jerarquía de tareas para la asignación del recurso.
• Planificador de nivel bajo (Procesos): Decide la toma más adecuada para asignar la CPU, cuanto tiempo y
bajo que condiciones la van a utilizar.
• Planificador de nivel medio: En un entorno muy interactivo, cuando el sistema esta sobrecargado el
planificador de nivel medio encuentra ventajoso retirar trabajos activos de la memoria para reducir el
grado de multiprogramación con el objetivo de que los trabajos en memoria se completen más rápido.
•
3.1.1 INTRODUCCION A LOS PROCESOS
Un proceso, puede definirse como una entidad activa (programa en ejecución), que requiere un conjunto
de recursos para llevar a cabo su función, tales como procesador, memoria, dispositivos E/S, registros especiales,
etc., en conclusión un proceso es una instancia de un programa ejecutable.
3.1.2 DIFERENCIA ENTRE PROCESO Y PROGRAMA
La diferencia fundamental entre un proceso y un programa se da cuando existe actividad en las tareas que
mantienen un código o conjunto de instrucciones, por lo tanto se puede decir que un programa es una unidad
inactiva almacenada en un dispositivo de almacenamiento secundario y que al momento de ser llamado a
memoria principal para su ejecución se convierte en un proceso.
3.1.3 MODELO DE UN PROCESO
Todo software ejecutable de la computadora, incluso el sistema operativo se organiza en varios procesos
secuenciales o simplemente procesos. De manera conceptual cada proceso tiene su propia CPU virtual, por
supuesto que la realidad es que una verdadera CPU alterna entre los procesos en ejecución. Esta rápida
conmutación se denomina multiprogramación.
Modelos distintos de los procesos en su ejecución:
a) Conmutación de procesos
b) Proceso Secuencial
A
B
C
A
D
B
C
D
c) Un solo programa esta activo a la vez
D
C
B
A
Tiempo
M. en C. Marisol Hernández López
3.1.3
ESTADOS DE UN PROCESO
A medida que un proceso se ejecuta, cambia de estado. El estado de un proceso está definido en parte por
la actividad actual de ese proceso. En el estado de ejecución solo puede haber un proceso, sin embargo, varios
pueden estar listos o bloqueados. Cada proceso puede estar en uno de los siguientes estados:
•
•
•
•
•
Nuevo (New): El proceso se está creando.
Listo (Ready): El proceso está esperando que se le asigne a un procesador.
En ejecución (Running): Se están ejecutando instrucciones.
En espera (Waiting): El proceso está esperando que ocurra algún suceso (como la terminación de una
operación de E/S o la recepción de una señal).
Terminado (Terminated): El proceso terminó su ejecución.
3.1.4 BLOQUE DE CONTROL DE PROCESOS
El bloque de control de procesos (PCB) de un trabajo se crea cuando el planificador de trabajos lo acepta y se
actualiza conforme este avanza desde el principio hasta el final de su ejecución. El PCB es una estructura de
datos que contiene los datos del trabajo necesarios para que el sistema operativo administre el procesamiento de
este. El PCB contiene entre otros los siguientes campos:
• Identificación del proceso.
• Estados del proceso.
• Condición del proceso.
• Contabilidad.
3.1.5 NIVELES DE PLANIFICACION
El administrador del procesador trabaja con tres niveles de planificación:
•
•
•
Planificador de nivel alto (Tareas): Acepta o rechaza tareas de acuerdo a políticas establecidas que
generan una jerarquía de tareas para la asignación del recurso.
Planificador de nivel bajo (Procesos): Decide la toma más adecuada para asignar la CPU, cuanto tiempo y
bajo que condiciones la van a utilizar.
Planificador de nivel medio: En un entorno muy interactivo, cuando el sistema esta sobrecargado el
planificador de nivel medio encuentra ventajoso retirar trabajos activos de la memoria para reducir el
grado de multiprogramación con el objetivo de que los trabajos en memoria se completen más rápido.
3.1.6 POLITICAS DE PLANIFICACION
Define específicamente una prioridad de los algoritmos de planificación que resuelven los problemas de
ejecución de acuerdo a una o más políticas:
1. Maximización de la producción: Significa el poder ejecutar tantos trabajos de la cola de listos como le sea
posible al sistema.
M. en C. Marisol Hernández López
2. Minimizar los tiempos de respuesta: Se trata de que el sistema sea capaz de atender solicitudes de la manera
más rápida posible.
3. Minimizar los tiempos de de retorno del sistema: El sistema debe ser capaz de aceptar procesos y sacarlos
con la mayor rapidez.
4. Minimizar los tiempos de espera: Que los trabajos que se encuentran en la cola de listos sean sacados con
mayor rapidez.
5. Minimizar la eficiencia del procesador: Que el sistema sea capaz de mantener ocupada la CPU el 100% de
las veces, el 100% del tiempo.
6. Asegurar justicia para todos los procesadores: El sistema garantiza que todos los procesos deben tener lo
que quieren en el tiempo que lo requieren.
3.1.7 INFORMACION DE UN PROCESO
Las colas utilizan los PCB para llevar el control de los trabajos de la misma manera que los funcionarios
las aduanas usan los pasaportes para llevar el control de los visitantes.
3.2 DESPACHO DE PROCESOS
El planificador de procesos se apoya en un algoritmo de planificación de procesos, basado en una política
especifica para asignar al CPU y mover los trabajos por el sistema. Los primeros sistemas operativos utilizaban
políticas no apropiativas, diseñadas para mover los trabajos por lotes a través del sistema con tanta eficiencia
como era posible. La mayor parte de los sistemas actuales, con su énfasis en el uso interactivo del tiempo de
respuesta, utiliza un algoritmo que se ocupa de las solicitudes inmediatas de usuarios interactivos.
3.2.1 ALGORITMOS DE PLANIFICACION DE PROCESOS
ALGORITMO FCFS
Primero en entrar, primero en servirse, es un algoritmo de planificación no apropiativa que maneja los
trabajos de acuerdo con tu tiempo de llegada: conforme entran son servidos. Los tiempos que maneja son:
tiempos de retorno de proceso, tiempo de retorno promedio de sistema.
• El tiempo de retorno de proceso: Es el tiempo en que el proceso termina su ejecución y devuelve el control
al sistema operativo para que alterne con otro proceso.
• El tiempo de retorno promedio de sistema: Este se calcula sumando todos los tiempos de retorno de los
procesos ejecutados y dividendo entre el número de procesos.
ALGORITMO SJF
Este algoritmo asocia a cada trabajo en la cola de listos, el tiempo de CPU de cada proceso de tal manera
que cuando la UCP está disponible se asigna al trabajo con el tiempo de CPU más corto. SJF es probablemente
óptimo, ya que reduce el tiempo de espera promedio de cada trabajo. Sin embargo, la dificultad principal para la
implementación de este algoritmo es que no se conoce ni es posible conocer el tiempo de CPU real de cada
proceso. Los tiempos que maneja son:
• Tiempo de espera: Tiempo que espera un proceso para ser obtenido.
• Tiempo de retorno de proceso: Tiempo de terminación de proceso, tiempo en que devuelve el control al
sistema operativo.
M. en C. Marisol Hernández López
•
Tiempo de retorno promedio del sistema: Tiempo promedio de trabajo del sistema.
PLANIFICACION ROUND ROBIN
Es un tipo de algoritmo aplicado en sistemas multiprogramados. Se basa en la justicia de asignación del
procesador para todos los procesos de llegada. Utiliza la prioridad FIFO y se basa en un QUANTUM de tiempo
que varia de 100ms hasta 1 o 2 segundos, para asegurar justicia entre los trabajos. Los tiempos que calcula son:
• El tiempo de retorno de proceso: Este tiempo se calcula restando el tiempo en que realmente termina el
proceso menos el tiempo de llegada.
• El tiempo de retorno promedio de sistema: Este se calcula sumando todos los tiempos de retorno de los
procesos ejecutados y dividendo entre el número de procesos.
Existen dos condiciones principales para la terminación del QUANTUM:
1. Interrupción de E/S por parte del proceso.
2. Cuando el proceso utiliza ciclos de CPU menores al QUANTUM del tiempo.
3.2.2 PRIORIDADES
Es un algoritmo que se basa en un conjunto de prioridades para la ejecución de los procesos, donde cada
prioridad no es más que un criterio que permita menor complejidad de ejecución. La jerarquía de prioridades se
establece de la siguiente manera: “Menor prioridad aquellos procesos que por su complejidad reclaman
mayor esfuerzo del procesador y mayor prioridad aquellos que requieren menos del procesador”.
Dentro de las prioridades que se manejan están:
• Tiempo de llegada.
• Ciclo de CPU.
• Tamaño de memoria.
• Tipo proceso (sistema, programa).
• No. Archivos.
• No. E/S.
3.3 CONCURRENCIA
La concurrencia es la propiedad de los sistemas que permiten que múltiples procesos sean ejecutados al
mismo tiempo, y que potencialmente puedan interactuar entre sí. Los procesos concurrentes pueden ser
ejecutados realmente de forma simultánea, sólo cuando cada uno es ejecutado en diferentes procesadores.
En cambio, la concurrencia es simulada si sólo existe un procesador encargado de ejecutar los procesos
concurrentes, simulando la concurrencia, ocupándose de forma alternada en uno y otro proceso a pequeñísimos
intervalos de tiempo. Debido a que los procesos concurrentes en un sistema pueden interactuar entre otros
también en ejecución, el número de caminos de ejecución puede ser extremadamente grande, resultando en un
comportamiento sumamente complejo. Las dificultades asociadas a la concurrencia han sido pensadas para el
desarrollo de lenguajes de programación y conceptos que permitan hacer la concurrencia más manejable.
M. en C. Marisol Hernández López
3.3.1
MULTITAREAS
Características de un sistema operativo que permite ejecutar varios procesos al mismo tiempo usando uno
o más microprocesadores.
Existen diferentes tipos de multitarea:
MULTITAREA NULA: Aquel sistema operativo que carece de multitarea. Aún así puede simularla
implementándola en un espacio de usuario o usando trucos como los TSR en MS-DOS. Justamente la familia
DOS son ejemplos de sistemas operativos de multitarea nula.
MULTITAREA COOPERATIVA: Tipo de multitarea en donde los procesos de usuario son quieres ceden
la CPU al sistema operativo a intervalos regulares. Es sumamente problemático porque si por algún motivo el
proceso de usuario es interrumpido, no cede la CPU al sistema operativo que lo ejecuta y, por lo tanto, quedará
trabado (tildado). Los sistemas operativos Windows antes de la versión 1995 implementaban este tipo de
multitarea.
MULTITAREA PREFERENTE: Tipo de multitarea en donde el sistema operativo se encarga de
administrar uno o más procesadores, repartiendo el tiempo de uso del mismo entre los distintos procesos que
esperan utilizarlo. En el caso de un solo procesador, cada proceso o tarea lo utiliza en períodos cortos de tiempo,
lo que, en la práctica, da la sensación de que estuviesen ejecutándose al mismo tiempo. Los sistemas operativos
que utilizan este tipo de multitareas son los UNIX, VMS, Windows NT, etc.
MULTITAREA REAL: Tipo de multitarea en donde el sistema operativo ejecuta los procesos realmente
al mismo tiempo haciendo uso de múltiples procesadores. La ejecución realmente se realiza en distintos
procesadores para cada proceso o tarea. Obviamente en el caso de que los procesos o tareas sean más que la
cantidad de procesadores, éstos comienzan a ejecutarse en procesadores "en uso" en la forma de multitareas
preferente. Todos los sistemas operativos modernos soportan esta capacidad.
3.3.2 MULTIPROCESOS
Es una situación en la cual dos o más procesadores operan al unísono. Esto quiere decir que dos o más
CPU ejecutan instrucciones de manera simultánea. Por lo tanto, con más de un proceso activo a la vez, cada CPU
puede tener al mismo tiempo un proceso en estado de ejecución. Para los sistemas multiprocesamiento, el
administrador del procesador tiene que coordinar la actividad de cada procesador, así como sincronizar la
interacción entre los CPU.
La complejidad de la tarea del administrador del procesador cuando se ocupa de varios procesadores o de
múltiples procesos, hace que su prioridad sea la sincronización, lo cual es la clave del éxito de todo sistema
multiproceso.
3.4 COMUNICACIÓN ENTRE PROCESOS.
Se basa en dos conceptos fundamentales que son competencia y cooperación, la competencia se da en la
situación en que dos o más procesos necesitan un mismo recurso, por lo que el sistema debe ser capaz de atender
M. en C. Marisol Hernández López
a estos procesos sin afectar la integridad del sistema; la cooperación existe cuando hay procesos relacionados que
de manera colectiva presentan una sola aplicación.
3.4.1 SUBPROCESOS
En los sistemas operativos tradicionales cada proceso tiene un espacio de direcciones y un solo subproceso
de control. Sin embargo existen situaciones en las que es deseable tener varios subprocesos de control en el
mismo espacio de direcciones, operando de forma pseudoparalela.
3.4.2 MODELO DE SUBPROCESOS
Un subproceso tiene un contador de programa que indica cual instrucción se ejecutara a continuación,
tiene registros que contienen sus variables de trabajo actúales y tiene una pila, que contiene el historial de
ejecución. Aunque un subproceso debe ejecutarse en algún proceso, el subproceso y su proceso son conceptos
distintos que pueden tratarse aparte, los subprocesos son las entidades que se calendarizan para ejecutarse en la
CPU.
Los subprocesos aportan al modelo de procesos la posibilidad de que haya varias ejecuciones en el mismo
entorno de un proceso, en gran medida independientes una de otra, tener múltiples subprocesos ejecutándose en
paralelo en un proceso es análogo a tener múltiples procesos ejecutándose en paralelo en una computadora.
3.4.3 SECCIONES CRITICAS
Es una secuencia de instrucciones con un comienzo y un fin claramente especificado que delimita la
entrada a un recurso compartido, es decir, actualiza una o más variables compartidas. Cuando un proceso entra a
una sección critica, debe completar todas las instrucciones incluidas en ella antes de que se permita que otro
proceso entre a la misma sección crítica.
3.4.4 EXCLUSION MUTUA CON ESPERA OCUPADA
Debido a los problemas de competencia existe una forma de garantizar que si un proceso utiliza un recurso
compartido los demás procesos no pueden utilizarlo, la exclusión mutua. Esta se define como sigue: “Un proceso
puede excluir temporalmente a todos los demás procesos de utilizar un recurso compartido que tiene este
proceso”.
La espera ocupada sucede cuando un proceso hace una prueba continua de una variable, en espera de que
aparezca cierto valor y este no aparece, esta situación en algún momento puede también ser garantía de una
exclusión mutua.
M. en C. Marisol Hernández López
3.4.5 BLOQUEO Y DESBLOQUEO (SLEEP Y WAKEUP)
SLEEP y WAKEUP, se define como una solución para lograr exclusión mutua, utiliza variables de
cerradura y funciona como su nombre lo dice: una función manda a dormir procesos y otra función los despierta.
Es el método que soluciona los problemas de las variables de cerradura. Cuando un proceso entra a su
región critica hace una llamada al sistema mediante la variable SLEEP (S), si el recurso esta desocupado se asigna
al proceso y omite la llamada a SLEEP, una vez que el recurso se asigna al proceso las siguientes llamadas a
SLEEP hacen que el sistema suspenda a los procesos que las hicieron, hasta que el recurso sea liberado. La
llamada WAKEUP (W), contiene un parámetro que indica el proceso que hay que despertar y es el primer proceso
de la cola que hizo la llamada a SLEEP.
3.4.6 SEMAFOROS
Los semáforos son otra solución de software para lograr exclusión mutua, existen dos tipos de variables
semáforos: binarios y de conteo.
3.4.6.1 SEMAFOROS BINARIOS
Es una variable definida como Semáforo que puede contener dos valores, 0 que indica ocupado y 1 que
indica libre. Los semáforos binarios utilizan dos funciones Signal y Wait, para manipular la variable semáforo.
SIGNAL indica una llamada al sistema que cambia el valor de la variable semáforo a libre (+1) y WAIT es una
llamada al sistema que indica una espera hasta que la variable semáforo indique libre (-1).
3.4.6.2 SEMAFOROS DE CONTEO
Los semáforos de conteo se inicializan con el número de recursos disponibles. Cada proceso que desea
usar un recurso realiza una operación DOWN, la cual decrementa el contador y cuando es liberado un recurso, es
decir, un proceso ha salido de su región y critica, realiza una operación UP, la cual incrementa el contador.
Cuando el contador llega a cero significa que todos los recursos están siendo utilizados, por lo que los
procesos subsecuentes que deseen utilizar un recurso se bloquearan hasta que el contador sea mayor que cero.
3.4.7 MONITORES
Un monitor es un conjunto de procedimientos que proporciona el acceso con exclusión mutua a un recurso
o conjunto de recursos (datos o dispositivos) compartidos por un grupo de procesos. Los procedimientos van
encapsulados dentro de un módulo que tiene la propiedad especial de que sólo un proceso puede estar activo cada
vez para ejecutar un procedimiento del monitor.
El monitor se puede ver como una valla alrededor del recurso (o recursos), de modo que los procesos que
quieran utilizarlo deben entrar dentro de la valla, pero en la forma que impone el monitor. Muchos procesos
M. en C. Marisol Hernández López
pueden querer entrar en distintos instantes de tiempo, pero sólo se permite que entre un proceso cada vez,
debiéndose esperar a que salga el que está dentro antes de que otro pueda entrar.
La ventaja para la exclusión mutua que presenta un monitor frente a los semáforos u otro mecanismo es
que ésta está implícita: la única acción que debe realizar el programador del proceso que usa un recurso es invocar
una entrada del monitor. Si el monitor se ha codificado correctamente no puede ser utilizado incorrectamente por
un programa de aplicación que desee usar el recurso. Cosa que no ocurre con los semáforos, donde el
programador debe proporcionar la correcta secuencia de operaciones espera y señal para no bloquear al sistema.
Los monitores no proporcionan por si mismos un mecanismo para la sincronización de tareas y por ello su
construcción debe completarse permitiendo, por ejemplo, que se puedan usar señales para sincronizar los
procesos. Así, para impedir que se pueda producir un bloqueo, un proceso que gane el acceso a un procedimiento
del monitor y necesite esperar a una señal, se suspende y se coloca fuera del monitor para permitir que entre otro
proceso.
3.4.8 TRANSMISION DE MENSAJES
Este método de comunicación entre procesos utiliza dos primitivas, send y relieve, que al igual que los
semáforos y a diferencia de los monitores, son llamadas al sistema, no construcciones del lenguaje. De tal manera
pueden incluirse con facilidad en procedimientos de biblioteca como:
send(destino, &mensaje); y relieve(origen, &mensaje);
La primera llamada envía un mensaje a un destino dado y la segunda recibe un mensaje de un origen dado.
Si no hay mensajes disponibles, el receptor puede bloquearse hasta que llegue uno, o bien, regresar de inmediato
cono un código de error.
3.5 PROBLEMAS DE COMUNICACION ENTRE PROCESOS
INANICION
Sucede cuando un proceso esta en espera de un recurso que nunca va a ser liberado, esto es el resultado de
una asignación conservadora de recursos, donde una tarea no puede ejecutarse por que permanece en espera de
recursos que nunca quedan disponibles, lo que afecta directamente y exclusivamente a los procesos. Debido a que
esta situación conservadora de recursos se da por prioridad, una posible solución es aplicar la prioridad por
antigüedad del proceso.
DEADLOCK (Abrazo mortal)
Se trata de bloqueos mutuos entre procesos y recursos, es un problema de sincronización de procesos que
afectan exclusivamente a los recursos, debido a que un proceso se vuelve propietario de un recurso que ya no
necesita y no lo puede liberar por que esta en espera de otro recurso que se encuentra en la misma situación,
provocando un bloqueo mutuo de recursos y procesos.
M. en C. Marisol Hernández López
3.5.1 LOS CINCO FILOSOFOS COMENSALES
Cinco filósofos están sentados en torno a una mesa circular, cada uno tiene un plato de espagueti y
requiere de dos tenedores para comerlo, entre cada par de platos hay un tenedor. La vida de un filósofo consiste
en periodos alternados de comer y pensar, cuando un filósofo tiene hambre, trata de tomar los tenedores que están
a su izquierda y a su derecha, uno a la vez, en cualquier orden. Si logra tomar los tenedores, come durante un
tiempo, luego los deja en la mesa y sigue pensando. El problema sucede cuando los filósofos tratan de comer al
mismo tiempo y entonces cada uno tomara su tenedor derecho o bien izquierdo y por lógica ninguno podrá tener
ambos tenedores para comer, si tuvieran que verificar que ambos tenedores estén disponibles (uno a la vez) para
comer, debería existir una eficiente sincronización para que esto sucediera, sino tendrían que hacer la revisión
indefinidamente lo que provocaría inanición.
Este problema suele suceder en los sistemas operativos cuando se trata de atender solicitudes para el uso
de recursos, una posible solución es detectar trabajos con inanición, esto es controlando el tiempo que cada
trabajo permanece en espera de recursos, una vez detectada la inanición el sistema puede bloquear nuevos
trabajos hasta que los trabajos hambrientos queden satisfechos.
3.5.2 LECTORES Y ESCRITORES
El sistema categoriza los procesos dependiendo del modo como utilizan el recursos, por lo que maneja
dos tipos de procesos: procesos lectores (R) y procesos escritores (W).
•
•
LECTOR: No modifica la estructura de los datos, por lo que son capaces de compartir archivos al
mismo tiempo con otros procesos lectores.
ESCRITOR: Debido a que es capaz de leer y modificar la estructura tienen acceso exclusivo a los
datos, solo puede entrar un proceso lector a la vez.
SOLUCIONES DEL PROBLEMA
1er SOLUCION: El sistema debe mantener un alto grado de concurrencia entre los lectores, aceptar tantos
lectores como le sea posible. Un escritor no va a ser capaz de hacer uso de la variable hasta que salga o termine el
último lector que entro. Sin embargo, tiene una desventaja: en esta situación el sistema no permite ninguna
actualización.
2ª SOLUCION: Una estrategia propone que tanto lectores como escritores puedan completar sus
operaciones en tiempos finitos. De esta manera, un nuevo lector no debería comenzar si hay un escritor
esperando, esto evita la postergación de escritores y todos los lectores que esperan el final de una escritura
deberían tener prioridad sobre el siguiente escritor, esto evita la postergación de lectores.
3.6 SERVICIOS POSIX PARA LA GESTION DE PROCESOS
Las primeras versiones de UNIX no tenían subprocesos. En un principio se usaban muchos paquetes de
subprocesos, pero la proliferación de tales paquetes dificulto mucho la escritura de código portátil, de ahí que se
haya creado un proyecto que tenia como objetivo lograr la portabilidad de estas aplicaciones en la diferentes
M. en C. Marisol Hernández López
versiones de UNIX (tal como con MS-DOS), POSIX, de las iniciales de Portable Operating System, por lo tanto
las llamadas empleadas para administrar subprocesos se estandarizaron como parte de esta.
La especificación POSIX no adopto una postura en cuanto a si los subprocesos debían implementarse en el
kernel o en el espacio de usuario, la ventaja de tener subprocesos en el espacio de usuario es que se les puede
implementar sin tener que modificar el kernel y la conmutación de subprocesos es muy eficiente, la desventaja
esta en que si un subproceso se bloquea, todos los subprocesos del proceso se bloquearan.
Las llamadas de subprocesos mas usadas son las siguientes:
Llamada de subprocesos Descripción
pthread_create
Crea un subproceso nuevo en el espacio de direcciones del invocador
pthread_exit
Termina el subproceso invocador
pthread_join
Espera a que un subproceso termine
pthread_mutex_init
Crea un nuevo mutex
pthread_mutex_destroy
Destruye un mutex
pthread_mutex_lock
Cierra el bloqueo de un mutex
pthread_mutex_unlock
Abre el bloqueo de un mutex
pthread_cond_init
Crea una variable de condición
pthread_cond_destroy
Destruye una variable de condición
pthread_cond_wait
Espera a una variable de condición
pthread_cond_signal
Libera un subproceso que espera a una variable de condición
3.6.1 SERVICIOS WIN32 PARA LA GESTION DE PROCESOS
Win32 dispone de dos mecanismos de comunicación, que también se pueden utilizar para sincronizar.
Estos mecanismos son las tuberías y los mailslots, como mecanismos de sincronización puros, Win32 dispone de
secciones críticas, semáforos, mutex y eventos.
Los objetos de sincronización en Win32 tienen asociados un manejador que se puede utilizar en funciones
de espera (wait), que permiten a un proceso ligero (subproceso) bloquear su ejecución.
Las características de los mecanismos de sincronización, son:
Mecanismos
Identificador
Tuberías
Descriptor de archivos
Semáforos
Variable de tipo semáforo
Mutex y variables condicionales Variable de tipo mutex y condicional
Cola de mensajes
Descriptor propio
M. en C. Marisol Hernández López
UNIDAD IV.
4.1 DISPOSITIVOS DE ENTRADA/SALIDA
Existe un administrador de dispositivos entrada/salida que se encarga de vigilar y controlar cada uno de
los dispositivos de E/S así como los canales, unidades de control, buffers y todo aquel componente que permita la
comunicación entre el sistema operativo y el hardware.
Debido a que el administrador E/S maneja políticas de asignación y liberación de los recursos tiene una
relación estrecha con el BIOS del sistema, el cual contiene información sobre el manejo y control de cada uno de
ellos.
Mantener el equilibrio entre la oferta y la demanda de recursos, además tiene la capacidad para controlar
muchas facetas de las E/S automáticamente sin la implicación del procesador.
4.1.1 INTERRUPCION DEL CPU
Las interrupciones se dividen en dos tipos las cuales son: Externas e Internas. Una interrupción
externa es provocada por un dispositivo externo al procesador. Las dos líneas que pueden señalar interrupciones
externas son la línea de interrupción no enmascarable (NMI) y la línea de petición de interrupción (INTR). La
línea NMI reporta la memoria y errores de paridad de E/S. El procesador siempre actúa sobre esta interrupción,
aun si emite un CLI para limpiar la bandera de interrupción en un intento por deshabilitar las interrupciones
externas. La línea INTR reporta las peticiones desde los dispositivos externos, en realidad, las interrupciones 05H
a la 0FH, para cronometro, el teclado, los puertos seriales, el disco duro, las unidades de disco flexibles y los
puertos paralelos.
Una interrupción interna ocurre como resultado de la ejecución de una instrucción INT o una operación de
división que cause desbordamiento, ejecución en modo de un paso o una petición para una interrupción externa,
tal como E/S de disco. Los programas por lo común utilizan interrupciones internas, que no son enmascarables,
para accesar los procedimientos del BIOS y del DOS.
4.1.2 DEFINICION Y MANEJO DE INTERRUPCIONES
INTERRUPCIÓN
Es una llamada al sistema, generada por el propio proceso, las interrupciones son tomadas siempre por el
sistema operativo que a su vez analiza la petición y lleva a cabo un proceso específico que direcciona la
interrupción a una tabla que indica la prioridad y los procesos necesarios para ejecutarla.
Es la indicación al sistema de que hay otra actividad pendiente y cambio de contexto, se tiene que estar
ejecutando un programa y producir una interrupción, consiste en que el procesador atiende una interrupción y
decide en función de unos criterios preestablecidos cambiar de proceso. Las interrupciones se pueden dividir en 2
grupos:
• Interrupciones de Software. También son conocidas como "falsas interrupciones" ya que se
producen como consecuencia de la ejecución de otra instrucción al no ser el hardware las que las
produce. Otra forma de entender estas interrupciones, es verlas desde el punto de vista de llamadas
M. en C. Marisol Hernández López
•
a subrutinas, lógicamente, la gracia está en que esas subrutinas no son nuestras, sino que son las
propias de cada sistema operativo, driver o similar tiene. Quedaros pues, con que somos nosotros
los que hacemos invocamos a la interrupción. Este tipo de interrupción es el más habitual en la
programación.
Interrupciones de Hardware. Este tipo de interrupción es invocado directamente por los
dispositivos hardware de nuestro ordenador, por lo que "son bastante más auténticas" que las
anteriores. Al producir algún dispositivo hardware la interrupción el controlador de interrupciones
o PIC se encarga de gestionarla determinando, en el caso de producirse más de una interrupción a
la vez, cual de ellas tiene más prioridad y debe de ser gestionada por la CPU. El funcionamiento de
este tipo de interrupciones es bastante similar y se suele utilizar mucho para la programación de
sistemas de comunicaciones.
4.1.3 ENTRADA / SALIDA PROGRAMADA
Un controlador de dispositivos o unidades de E/S se encargan de controlar uno o más dispositivos del
mismo tipo, de intercambiar información entre ellos y al memoria principal de ellos o la CPU.
SPOOL: Concepto basado en evitar tiempos de óseo por parte del procesador, debido a que permite llevar
a cabo instrucciones de entrada/salida fuera de línea de ejecución. La entrada/salida programada permite que se
transfiera información entre las unidades de control y la CPU, a través de un programa que se ejecuta
continuamente.
4.1.4 ENTRADA/ SALIDA CONTROLADA POR INTERRUPCIONES
Permite que el procesador envié la orden de E/S al controlador de dispositivos específicos sin esperar a
que la orden se lleve a cabo, por lo que el procesador puede dedicarse a otras tareas mientras que la instrucción de
E/S inicia su ejecución.
4.1.5 CLASIFICACION
Interrupción enmascarable: Significa que, bajo control del software, el procesador puede aceptar o ignorar
(enmascarar) la señal de interrupción. Para ello se envía una señal a la terminal INTR, y el procesador la atiende
o la ignora en función del contenido de un bit (IF) en un registro (FLAGS) que puede estar habilitado o
deshabilitado. En el primer caso, cuando se recibe la señal, el procesador concluye la instrucción que estuviese en
proceso y a continuación responde con una combinación de señales en algunas de sus patillas componiendo una
sucesión de dos señales INTA ("Interrupt Acknowledge").
Interrupción no enmascarable: Significa que la interrupción no puede ser deshabilitada por software. Este tipo de
interrupciones ocurren cuando se recibe una señal en la terminal NMI ("Nonmaskable Interrupt") del procesador.
Se reservan para casos en que es crítica la respuesta, por ejemplo que se detecte un error de paridad en la
memoria. Además son de prioridad más alta que las enmascarables. La única forma de enmascarar estas
interrupciones es a través de circuitos externos al procesador, por ejemplo a nivel del PIC.
M. en C. Marisol Hernández López
4.1.6 MANEJADOR DE INTERRUPCIONES
El manejador de interrupciones es un programa de control que se encarga de guiar la secuencia de
interrupción por la cual se hizo la llamada. Cuando sucede una interrupción el manejador tiene que llevar a cabo
la siguiente secuencia de instrucciones:
1. Describir y almacenar la interrupción: Debe conocer el tipo de interrupción que se dio para enviarlo al
usuario mediante un mensaje (mensaje de error o avisos).
2. Guardar el estado del procesador que hizo la interrupción: El manejador debe almacenar el estado actual
de los procesos que se encontraban activos y del proceso que hizo la llamada, los datos que se guardan
son: contador de programa, contenidos de los registros, pilas y atributos de los procesos.
3. Procesar la interrupción:
• Cuando se trata de una E/S se detiene al proceso y se envía a la cola apropiada del dispositivo
de E/S, cuando se atiende a la solicitud de E/S y una vez que acaba el proceso es devuelto a la
cola de listos para que continúe su ejecución.
• Cuando se trata de un error el mensaje de error y el estado del proceso se envía al usuario, la
ejecución de los procesos se detiene y el sistema debe ser capaz de restaurarse o reiniciarse.
4.1.7 VECTOR DE INTERRUPCIONES
Es el mecanismo de interrupción que acepta una dirección, que es un número que selecciona una rutina
específica para manejo de interrupciones. Esta dirección es un desplazamiento en una tabla la cual se denomina
“Vector de Interrupciones”, este contiene las direcciones de memoria de los manejadores de interrupción
especializados.
En muchas arquitecturas de computación típicas, los vectores de interrupción se almacenan en una tabla en
una zona de memoria, la llamada tabla de vectores de interrupción, de modo que cuando se atiende una petición
de interrupción de número n, el sistema, tras realizar eventualmente algunas tareas previas ( tales como salvar el
valor de ciertos registros) transfiere el control a la dirección indicada por el elemento n-ésimo de dicha tabla.
Usualmente, en las arquitecturas más típicas, la transferencia de control se efectuará de modo análogo a una
llamada a función a nivel de máquina, almacenándose en una pila el estado actual del registro contador de
programa, que será recuperado por una instrucción máquina de retorno de interrupción, que restaurará el estado
correspondiente a la ejecución normal de programa forzando la ejecución de la siguiente instrucción.
4.2 CANAL DE E/S
Son unidades programables que se encargan de las entradas y salidas provenientes de la CPU y las llevan a
la unidad de control apropiada.
Sincronizan la velocidad rápida del CPU con la lenta del dispositivo de E/S y permite la superposición de
operaciones de E/S con las operaciones del procesador, de tal forma que la CPU y al E/S puedan procesarse de
manera concurrente, a este concepto se le denomina spool.
M. en C. Marisol Hernández López
CANAL 1
UNIDAD DE CONTROL 1.
UNIDAD DE CONTROL 2.
Disco 1.
Disco 2.
Disco 3.
Disco 1.
Disco 2.
Disco 3.
CPU.
UNIDAD DE CONTROL 3.
CANAL 2
UNIDAD DE CONTROL 4.
UNIDAD DE CONTROL 5.
Disco 4.
Disco 5.
Disco 6.
Teclado.
Mouse.
4.2.1 TIPOS DE CANALES
Los canales son tan rápidos como la CPU, que cada canal puede dirigir varias unidades de control, así
mismo cada unidad de control puede dirigir varios dispositivos. La configuración típica de un canal es que un
canal y hasta ocho unidades de control, cada una de las cuales se comunica con hasta ocho dispositivos de E/S.
Al inicio de un comando E/S, la información que pasa de la CPU al canal es:
1.
2.
3.
4.
Comando E/S (read, write, rewind, etc)
Numero del canal.
Dirección del registro físico que se va a transferir (desde el almacenamiento secundario).
Dirección de inicio del buffer a partir del cual se va a transferir el registro o hacia el cual se va a mandar.
4.2.2 INTERFACES
La mayor parte de los sistemas utilizan uno de dos estándares de interfaz de alto rendimiento: IDE o SCSI.
IDE, ofrece un buen rendimiento, son poco costosas y se entran en las PC, SCSI, son más caras y transfieren
datos a una tasa más rápida que las IDE, servidores y estaciones de trabajo.
4.2.3 CONTROLADORES
CONTROLADORES DE DISPOSITIVOS (Unidades de E/S).
Es un conjunto de componentes electrónicos que operan un puerto, un bus o un dispositivo mediante un
modo de programa específico que maneja las interrupciones particulares del dispositivo. Se encargan de
interpretar la señal enviada por el canal que corresponde a una instrucción específica para un dispositivo
específico.
M. en C. Marisol Hernández López
Las unidades de E/S por lo regular constan de un componente mecánico y uno electrónico, en muchos
casos es posible separar las dos partes para tener un diseño más modular y general. El componente electrónico se
denomina controladora o adaptador de dispositivo.
4.3 MEMORIAS TRASITORIAS (BUFFERS)
Los buffers son áreas de almacenamiento temporal que residen en la memoria principal, en los canales y
en las unidades de control. Sirven para almacenar datos leídos de un dispositivo de entrada antes que los necesite
el procesador y para almacenar datos que se escribirán en un dispositivo de salida.
4.3.1 TIPOS DE MEMORIAS TRANSITORIAS
Buffers de una única fila
Un buffer de una única fila no es en realidad un cursor, aunque aquí se apliquen las mismas reglas de
pertenencia que se aplican a un cursor de conjunto de claves de sólo avance. Con un buffer de una única
fila sólo es posible examinar los datos de la fila del conjunto de resultados. Las filas anteriores no están
disponibles y la fila actual no estará accesible después de pasar a la siguiente fila del conjunto de
resultados.
Buffers de n filas
Un buffer de n filas amplía el ámbito y la capacidad de desplazamiento del buffer de una única fila. En
este caso, a la estación de trabajo se le expone un número determinado de filas del conjunto de resultados
y a la aplicación se le permite que se desplace libremente por esas filas.
4.3.2 MANEJO DE MEMORIAS TRANSITORIAS
El uso de búferes también es un problema, tanto para los dispositivos de caracteres como para los de
bloques. Para entender mejor el problema, consideremos un proceso que quiere leer datos de un módem, una
posible estrategia para manejar los caracteres que llegan es hacer que el proceso de usuario emita una llamada al
sistema read y se bloquee en espera de un carácter. La llegada de cada carácter causa una interrupción, el
procedimiento de servicio de interrupciones entrega el carácter al proceso de usuario y lo desbloquea; después de
colocar el carácter en algún lado, el proceso lee otro carácter y vuelve a bloquearse. Esta posible solución no es
recomendable debido a que un proceso se ejecutara muchas veces durante lapsos de tiempo muy cortos.
Los búferes son muy importantes en las operaciones de salida. Por ejemplo, considere la forma en que se
envían salidas al módem siguiendo el modelo descrito anteriormente, el proceso de usuario ejecuta una llamada
write al sistema para enviar a la salida n caracteres.
4.3.3 IMPLEMENTACION
La implementación mas adecuada para el uso de memorias transitorias es que el kernel copie los datos en
un búfer kernel y desbloqueando de inmediato el invocador. Ahora no importa cuando termine la E/S real; el
usuario podrá volver a utilizar el búfer en el instante en que se le desbloquee.
M. en C. Marisol Hernández López
El uso de búferes es una técnica ampliamente utilizada, pero tiene sus desventajas, si los datos se colocan
en demasiados búferes sucesivos, hay una merma en el desempeño.
4.3.4 TERMINALES DE RED
Se denominan dispositivos de comunicación y son aquellos que permiten conectar a la computadora con
otras a través de una red, los dos tipos de dispositivos mas importantes son: Tarjeta red y el módem.
El administrador de red proporciona una forma conveniente para los usuarios de compartir recursos y al
mismo tiempo controlar sus acceso a los mismos, mediante la implementación de protocolos y comunicaciones de
red; estos recursos incluyen hardware como la CPU, áreas de memoria, impresoras, unidades de almacenamiento
secundario, módem; y recursos de software como compiladores, programas de aplicación y archivos de datos.
4.3.5 INTERFACES GRAFICAS DE USUARIO
Una interfaz gráfica de usuario, definida por sus siglas en inglés GUI, es la interfaz de usuario que le
permite activar los comandos de sistema operativo con un clic sobre un icono de escritorio mediante un
dispositivo apuntador como un ratón o una pantalla táctil. El GUI evolucionó a partir de las interfaces de usuario
impulsadas por comandos.
Muchas interfaces gráficas de usuario comparten muchas similitudes, tanto en apariencia como en
operación. Ejemplo de ello, se puede mencionar a sistemas operativos populares como Windows (todas sus
versiones hasta las actuales), UNIX, Macintosh (diferentes versiones) y Linux.
4.4 SERVICIOS DE E/S: GENERICOS PARA POSIX Y WIN32
Debido al tratamiento diferenciado que se da el reloj, se presentan separadamente los servicios
relacionados con el mismo de los correspondientes a los dispositivos de entrada/salida convencionales.
En cuanto a los servicios del reloj, se van a especificar de acuerdo a las tres categorías: fecha y hora,
temporizaciones y contabilidad.
SERVICIO DE FECHA Y HORA: El servicio para obtener fecha y hora es time, y su prototipo es:
time_t time(time_t *t);
SERVICIO DE TEMPORIZACION: El servicio esta definido por alarm, y su prototipo es:
unsigned int alarm (unsigned int segundos);
SERVICIO DE CONTABILIDAD: Existen diversas funciones que se pueden englobar en esta categoria, por
ejemplo la mas usada times, que devuelve información sobre el tiempo de ejecución de un proceso y sus hijos.
clock_t times (struct tms *info);
M. en C. Marisol Hernández López
UNIDAD V.
5. SISTEMA DE ARCHIVOS
Es el software que se encarga de crear, eliminar, modificar y controlar el acceso a cada uno de los archivos
del sistema, además de administrar los recursos utilizados por los archivos.
La función principal del administrador de archivos es una de las funciones principales es estar a cargo de
los componentes físicos del sistema, los recursos de información y las políticas que se utilizan para almacenar y
distribuir los archivos.
5.1 MANEJO DE ARCHIVOS Y DIRECTORIOS
El administrador de archivos controla la información mediante la utilización de archivos y directorios. Por
lo tanto realiza cuatro tareas fundamentales:
1.
2.
3.
4.
Controlar el almacenamiento de los archivos.
Utilizar políticas de almacenamiento (donde, como).
Asignación del archivo.
Desasignar el archivo.
5.1.1 ASPECTOS BASICOS DE LOS ARCHIVOS
Los archivos son un mecanismo de abstracción. Son una forma de almacenar información en un disco y
volver a leerla mas adelante. Esto debe hacerse de forma que el usuario quede protegido contra los detalles de
forma y lugar de almacenamiento de la información, así como el funcionamiento real de los discos.
Cuando un proceso crea un archivo, le da a éste un nombre. Cuando el proceso concluye el archivo sigue
existiendo y otros procesos pueden tener acceso a él mediante su nombre. La extensión determina con que
programa se ejecuta ese archivo.
ESTRUCTURA DE UN ARCHIVO
Los archivos se pueden estructurar de varias maneras: puede ser una serie estructurada de bytes, o una
secuencia de archivos de longitud fija, cada uno con su propia estructura interna. También esta la estructura de
árbol en los archivos donde hablamos de jerarquías y ramificaciones y llaves.
TIPOS DE ARCHIVOS
Los sistemas operativos soportan varios tipos de archivos, archivos regulares, directorios, archivos
especiales de caracteres y archivos especiales de bloques.
1. Archivos regulares: son aquellos que contienen información del usuario (generalmente
son binarios o en ASCII).
2. Los directorios: son archivos del sistema para el mantenimiento de una estructura del
sistema de archivos.
3. Los archivos especiales de caracteres: Tienen relación con entrada/salida y se usan para
modelar dispositivos seriales de E/S, tales como las impresoras, terminales y redes.
M. en C. Marisol Hernández López
4. Los archivos especiales de bloques: se usan para modelar discos.
5.1.2 DIRECTORIOS
En sistemas de archivos jerárquicos, en lo usual, se declara la ubicación precisa de un archivo con una
cadena de texto llamada "ruta". La nomenclatura para rutas varía ligeramente de sistema en sistema, pero
mantienen por lo general una misma estructura. Una ruta viene dada por una sucesión de nombres de directorios y
subdirectorios, ordenados jerárquicamente de izquierda a derecha y separados por algún carácter especial que
suele ser una barra ('/') o barra invertida ('\') y puede terminar en el nombre de un archivo presente en la última
rama de directorios especificada. Un directorio tiene por lo menos varios datos, uno por archivo
5.2 SISTEMAS DE ARCHIVOS
El administrador de archivos tiene que controlar esta información mediante el sistema de archivos, que
esta compuesto principalmente por una estructura de directorios y una colección de archivos correspondiente a
cada directorio.
C:
Invoca siempre a “FAT”.
La tabla de asignación de archivos contiene un índice separado de un nivel para cada archivo; el índice
posee una entrada para cada sección asignada al archivo. El índice del archivo se guardará en un bloque aparte y
la entrada del archivo en la tabla de asignación, apuntará a dicho bloque.
Cuando se crea un sistema de archivos, se almacena en una parte especial del mismo una tabla que
contiene una entrada por cada bloque de disco y que está indexada por número de bloque. A medida que se
asignan nuevos bloques al archivo, se apunta a ellos desde la última entrada de la tabla asociada al archivo.
5.2.1 MANEJO DEL ESPACIO EN DISCO
Los sistemas de archivos se almacenan en discos. Casi todos los discos pueden dividirse en una o mas
particiones, con sistemas de archivos independientes en cada partición. El sector 0 del disco se llama registro
maestro de arranque (MBR; Master Boot Record) y sirve para arrancar la computadora. El final del MBR
contiene la tabla de particiones, esta tabla contiene las direcciones inicial y final de cada partición. Una de las
particiones de la tabla esta marcada como activa, cuando se enciende la computadora el BIOS lee el MBR del
disco y lo ejecuta. Lo primero que hace el programa 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 sistema operativo
contenido en esa partición.
5.2.2 ALMACENAMIENTO DE ARCHIVOS
ASIGNACIÓN ADYACENTE
El aspecto más importante en la implantación del sistema de archivos es cómo se realiza el registro de los
bloques asociados a cada archivo. El espacio en disco se divide en unidades de asignación denominadas bloques,
M. en C. Marisol Hernández López
de tal manera que cuando un proceso solicita espacio en disco se entregará una cantidad de bloques que satisfaga
las necesidades. Los tamaños típicos de bloques fluctúan entre 512 bytes hasta 2 Kb.
Para guardar constancia de las secciones asignadas a un archivo se utiliza una estructura denominada
normalmente como Tabla de Asignación de Archivos (FAT). Cuando se crea un archivo se le asigna un único
conjunto contiguo de bloques; por tanto esta es una estrategia de asignación previa denominada asignación
adyacente. En la asignación adyacente se almacena cada archivo como un solo bloques de datos en el disco.
ASIGNACIÓN POR LISTAS LIGADAS
Para almacenar archivos se mantiene a cada uno de ellos como una lista ligada de bloques en disco. Donde
en cada bloque de un archivo existe un apuntador al siguiente bloque del mismo. La primera palabra de cada
bloque guarda la dirección del siguiente. Cada bloque contendrá un puntero al siguiente bloque de la cadena.
ASIGNACIÓN POR LISTAS LIGADAS CON ÍNDICE
En esta asignación se toma el apuntador que se encuentra en la primera palabra del bloque de disco y lo
colocamos en una tabla o índice de la memoria, estaríamos hablando de una asignación por listas ligadas con
índice. En la asignación indexada, todo el bloque está disponible para almacenar datos. La asignación puede
hacerse por bloques de tamaño fijo o en secciones de tamaño variable.
La tabla de asignación de archivos contiene un índice separado de un nivel para cada archivo; el índice
posee una entrada para cada sección asignada al archivo. El índice del archivo se guardará en un bloque aparte y
la entrada del archivo en la tabla de asignación, apuntará a dicho bloque.
5.2.3 ESTRUCTURA DE DIRECTORIOS
Antes de poder leer un archivo éste debe ser abierto, al abrir un archivo, el So usa el nombre de la ruta de
acceso dado por el usuario para localizar el dato en el directorio.
•
•
•
Directorios en CP/M: en este sistema solo existe un directorio, por lo que todo lo debe hacer el sistema
de archivos para encontrar el nombre es que tiene que buscar en un solo directorio.
Directorios en MS/DOS: los directorios pueden contener otros directorios, lo que conduce a un sistema
jerárquico de archivos.
Directorios en UNIX: es en extremo su estructura sencilla, cada entrada contiene un nombre de
archivo y su número de nodo-i. toda la información relativa al tipo, tamaño, tiempos, propiedad y
bloques en disco esta contenida en ese nodo.
5.2.4 ARCHIVOS COMPARTIDOS
Cuando varios usuarios colaboran en un proyecto, es común que necesiten compartir archivos, por ello es
en muchos casos conveniente que un archivo compartido aparezca al mismo tiempo en diferentes directorios que
pertenecen a distintos usuarios. El archivo compartido se llama enlace (link), por lo que ahora el sistema de
archivos es mas bien una gráfica cíclica dirigida, no un árbol.
M. en C. Marisol Hernández López
Compartir archivos es conveniente, pero también presenta problemas, por principio, si los directorios
contienen en verdad direcciones de disco, tendrá que crearse una copia de ellas en cada uno cuando se enlace el
archivo, además de que la actualización correcta no puede mantenerse a tiempo.
5.2.5 RENDIMIENTO DEL SISTEMA DE ARCHIVOS
El acceso al disco es mucho más lento que el acceso a memoria. La lectura de una palabra de memoria
tarda un máximo de unas cuantas centenas de nano segundos. La lectura de un bloque de disco tarda decenas de
milisegundos, 100 000 veces mas lento.
La técnica más común para reducir los accesos a disco es el bloque de cache o búfer caché. Una caché
es una colección de bloques que pertenecen desde el punto de vista lógico al disco, pero que se mantienen en la
memoria por razones de rendimiento.
5.3 SEGURIDAD
Los términos seguridad y protección se utilizan en forma indistinta. Sin embargo, es útil hacer una
distinción entre los problemas generales relativos a la garantía de que los archivos no sea leídos o modificados
por personal no autorizado, lo que incluye aspectos técnicos, de administración, legales y políticos, por un lado y
los sistemas específicos del sistema operativo utilizados para proporcionar la seguridad, por el otro. Para evitar la
confusión, se utilizará el término seguridad para referirnos al problema general y el término mecanismo de
protección para referirnos a los mecanismos específicos del sistema operativo utilizado para resguardar la
información de la computadora. Sin embargo, la frontera entre ellos no está bien definida.
5.3.1 FALLAS DE SEGURIDAD
Al igual que la industria del transporte tiene el Titanic y el Hindenburg, los expertos en seguridad de las
computadoras tienen algo que quisieran poder olvidar. En esta sección se analizaran algunos problemas de
seguridad que surgieron en cuatro sistemas operativos: Unix, Multics, Tenex, y el OS/360.
La utilería LPR de Unix imprime un archivo en la impresora de líneas tiene una opción para eliminar el
archivo después de ser impreso. En las primeras versiones de Unix, era posible que cualquiera utilizara LPR para
imprimir, para que después el sistema eliminara el archivo con la contraseña.
El problema de seguridad de Multics se relacionaba con el hecho de que los diseñadores de sistema
siempre pensaron en Multics como un sistema de tiempo compartido, cuyas facilidades para el procesamiento por
lotes surgieron como una idea tardía, para pacificar ciertas viejas intransigencias de los lotes. La seguridad en el
tiempo compartido era excelente; la seguridad en los lotes era inexistente. Cualquier persona podía introducir un
trabajo por lotes que leyera un paquete de naipes en el directorio de cualquier otro usuario.
El sistema operativo Tenex era muy popular en las computadoras DEC-10 ya no se utiliza mucho pero su
nombre quedará grabado para siempre en los anales de la seguridad de las computadoras, debido al siguiente error
del diseño. Tenex permitía la paginación. Para que los usuarios supervisaran el comportamiento de sus
programas, era posible indicar al sistema que llamara una función del usuario si ocurría un fallo de página.
M. en C. Marisol Hernández López
En el sistema OS/360 era posible iniciar una lectura de cinta y continuar después el cálculo mientras que la
unidad de cinta transferiría datos al espacio el usuario. El truco aquí consistía en iniciar con cuidado una lectura
de cinta y después hacer una llamada al sistema que necesitará una estructura de datos del usuario; por ejemplo,
un archivo que leer y su contraseña.
5.3.2
PRINCIPIOS DE DISEÑO PARA SEGURIDAD
Al diseñar sistemas se debe asegurar que pueden resistir ataques de estos tipos:
1. Solicitar páginas de memoria, espacio en disco y solo leerlas. Muchos sistemas no las borran antes de
asignarlas y podrían contener interesante información escrita por el anterior usuario.
2. Intentar llamadas al sistema no válidas, o bien llamadas válidas con parámetros no válidos, o incluso
llamadas válidas con parámetros válidos pero no razonables. Muchos sistemas pueden ser confundidos
con facilidad.
3. Iniciar la conexión al sistema y oprimir entonces DEL, RUBOUT o BREAK a la mitad de la secuencia de
acceso. En ciertos sistemas el programa de verificación de la contraseña quedará eliminado y se
considerará un acceso exitoso.
4. Intentar modificar las complejas estructuras del sistema operativo que está en el espacio del usuario. En
muchos sistemas, para abrir un archivo, el programa construye una enorme estructura de datos, la cual
contiene el nombre del archivo y muchos otros parámetros, lo cual se transfiere al sistema. Al leer o
escribir en un archivo, el sistema puede actualizar a veces la propia estructura. La modificación de estos
campos puede causar estragos a la seguridad.
5. Engañar al usuario, escribiendo un programa que haga aparecer "login": En la pantalla y que después
desaparezca. Muchos usuarios irán hacia la Terminal y le indicarán su nombre y su contraseña de acceso,
la cual registrará el programa para su diabólica maestro.
6. Buscar manuales que digan "no lleve a cabo X" he intentar tantas variaciones de X como sea posible.
7. Convencer a un programador del sistema para que modifique el sistema, con el fin de evitar ciertas
verificaciones vitales de seguridad para cualquier usuario con su nombre de acceso. Este ataque se conoce
como una trampa (trap door).
5.3.3 VIRUS
Una categoría especial de ataque es el virus computacional, el cual se ha convertido en un enorme
problema para muchos usuarios de computadoras. Un virus es un fragmento de programa que se añade a un
programa legítimo con la intención de infectar a otros. Difiere de un gusano solo en el echo en que un virus está a
cuesta de un programa existente, mientras que un gusano es un programa completo en si mismo.
Un virus típico funciona de la manera siguiente. En primer lugar, la persona que escribe el virus produce
un nuevo programa útil, que ha menudo es un juego para MS-DOS. Este programa contiene el código del virus
oculto en él. El juego se envía a un sistema de boletines públicos, o bien se le ofrece gratis o a un módico precio
en discos flexibles. Se anuncia el programa y las personas empiezan a cargarlo y usarlo. La construcción de un
virus no es fácil, por lo que las personal que los realizan son brillantes en general y la calidad del juego o
programa es con frecuencia excelente.
M. en C. Marisol Hernández López
Al iniciar el programa, este comienza a examinar de inmediato todos los programas en binario del disco
duro, para ver si ya están infectados. Si encuentra un programa no infectado, lo infecta al añadir el código del
virus al final del archivo y re emplaza la primera instrucción con un salto al virus. Cuando el código del virus
termina su ejecución, ejecuta las instrucciones que estaban antes en primer lugar y después salta a la segunda
instrucción. De esta forma, cada vez que se ejecuta un programa infectado, este intenta infectar más programas.
5.3.4 MECANISMO DE PROTECCION
DOMINIOS DE PROTECCIÓN
Un sistema de cómputos contiene muchos objetos que necesitan protección. Estos objetos pueden ser el
hardware, la CPU, los segmentos de memoria, terminales, unidades de disco o impresoras; o bien ser del
software, como los proceso, archivos, bases de datos o semáforos.
Cada objeto tiene un único nombre mediante el cual se la hace referencia y un conjunto de operaciones
que se pueden realizar en él. READ y WRITE son operaciones adecuadas para un archivo; UP y DOWN tiene
sentido en un semáforo. Es evidente que se necesita una vía para prohibir el acceso de los procesos a los objetos a
los que no tiene permitido dicho acceso. Además, este mecanismo debe posibilitar la restricción de los procesos a
un subconjunto de operaciones legales en caso necesario. Por ejemplo, puede permitirse que el proceso A lea el
archivo F, pero no escriba en él.
LISTAS PARA CONTROL DE ACCESO
En la práctica, rara vez se almacena la matriz puesto que es grande y rala. La mayoría de los dominios no
tienen acceso alguno a la mayoría de los objetos, por lo que el almacenamiento de una enorme matriz casi vacía
es un desperdicio de espacio en disco. Sin embargo, existen dos métodos prácticos, que guardan la matriz por
renglones o por columnas, pero sólo los elementos no vacíos. Los dos puntos de vista son distintos, aunque no lo
parezcan.
La primera técnica asocia a cada objeto una lista (ordenada) con todos los dominios que pueden tener
acceso al objeto y la forma de dicho acceso. Esta lista se llama Lista de Control de Acceso (ACL). El propietario
de un objeto puede modificar su ACL en cualquier momento, lo que hace fácil prohibir accesos antes permitidos.
El único problema es que probable que la modificación de la ACL no afecte a los usuarios que utilicen en ese momento al objeto
(por ej. alguien que tenga abierto el archivo).
MODELOS DE PROTECCIÓN
Las matrices de protección, no son estáticas. Estas cambian con frecuencia cuando se crean los objetos, se
destruyen objetos anteriores o bien cuando los propietarios deciden agrandar o restringir el conjunto de usuarios
de sus objetos. Se ha prestado gran atención al modelado de sistemas de protección en los que la matriz de
protección cambia de manera constante.
5.4 EJEMPLOS DE SISTEMAS DE ARCHIVOS
Existen diversos sistemas operativos y por consecuencia cada uno con una estructura especifica de su
sistema de archivos, sin embargo lo que si tienen en común, es el hecho de que el uso de sus sistemas de archivos
es con el objetivo de mantener una estructura ordenada de la información y sobre todo el hecho de tener el control
de la misma.
M. en C. Marisol Hernández López
5.4.1 CP/M
Un sistema CP/M solo tiene un directorio, que contiene entradas de tamaño fijo de 32 bytes, el tamaño del
directorio, aunque fijo para una implementación dada, podría ser distinto en otras implementaciones de CP/M.
Todos los archivos del sistema aparecen en este directorio.
Después de que CP/M arranca, lee el directorio y calcula un mapa de bits que contiene lo bloques de disco
libres, viendo cuales bloques no están en ningún archivo. Este mapa de bits, que solo ocupa 32 bytes par aun
disco de 180 Kb, se mantiene en memoria durante la ejecución. En el momento de apagar el sistema el mapa se
desecha, es decir no se escribe en el disco.
5.4.2 MS-DOS
El sistema de archivos de MS-DOS sigue de cerca el patrón del sistema CP/M, incluyendo el uso de
nombres de archivo de 8 + 3 caracteres. La primera versión de MS-DOS hasta la limitada a un solo directorio, sin
embargo a partir de la segunda versión se expandió de manera considerable la funcionalidad del sistema de
archivos. La principal mejora fue la inclusión de un sistema de archivos jerárquico en el que los directorios
podían anidarse hasta una profundidad arbitraria. Esto implicaba que el directorio raíz podía contener
subdirectorios y estos contener otros subdirectorios.
5.4.3 WIN 98
La estructura de directorios de Windows 98 tenía que ser compatible con MS-DOS, sin embargo utilizaba
los 10 bytes reservados de las entradas. El sistema de archivos representa los nombres de archivos largos de
modo que sean compatibles con MS-DOS. Ahora se puede tener acceso a los archivos con cualquiera de los dos
nombres.
Desde el punto de vista conceptual, la implementación del sistema de archivos FAT-32 es similar a la del
sistema de archivos FAT-16, sin embargo en lugar de un arreglo de 65,536 entradas, hay tantas entradas como se
necesiten para cubrir la parte del disco que contiene datos.
5.4.4 UNIX V7
UNIX tiene tres tipos de archivos: directorios, archivos ordinarios y archivos especiales. UNIX almacena
los archivos como secuencias de bytes y no les impone estructura alguna. Por lo tanto los archivos de texto son
cadenas de caracteres y los archivos binarios son secuencias de dígitos binarios agrupados en palabras.
El sistema de archivos de UNIX organiza al disco en bloques de 512 bytes cada uno y lo divide en cuatro
regiones: la primera, se reserva para el arranque (dirección 0), la segunda contiene el tamaño del disco y las
fronteras con las demás regiones, la tercera, incluye una lista de definiciones de archivo, conocida como “lista i”
que utiliza una combinación de números primarios de dispositivo mayores y menores y numero i que singularizan
el archivo y la cuarta región contiene los bloques libres disponibles para almacenamiento de archivos.
M. en C. Marisol Hernández López
BIBLIOGRAFIA:
1) A. Tanenbaum
Sistemas Operativos Modernos
Prentice Hall, 5ª Edición
2) W. Stallings
Sistemas Operativos
Pearson-Prentice Hall
5ª Edición
3) I. Flynn, A. Mchoes
Sistemas Operativos
Thomson Learning
3ª Edición
4) Carretero, García
Sistemas Operativos: Una visión aplicada
Mc-Graw Hill
6ª Edición
5) Milenkovic
Sistemas Operativos: Conceptos y Diseño
Mc-Graw Hill
2ª Edición
M. en C. Marisol Hernández López
Descargar