Apuntes B..

73
SISTEMAS OPERATIVOS SEXTO SEMESTRE, LICENCIATURA EN SISTEMAS COMPUTACIONALES UNIVERSIDAD AUTÓNOMA DEL ESTADO DE HIDALGO, INSTITUTO DE CIENCIAS BÁSICAS E INGENIERÍA CATEDRÁTICO: MTRA. THEIRA IRASEMA SAMPERIO MONROY FEBRERO, 2011

Transcript of Apuntes B..

Page 1: Apuntes B..

SISTEMAS OPERATIVOSSEXTO SEMESTRE, LICENCIATURA EN SISTEMAS COMPUTACIONALES

UNIVERSIDAD AUTÓNOMA DEL ESTADO DE HIDALGO, INSTITUTO DE CIENCIAS BÁSICAS E INGENIERÍA

CATEDRÁTICO: MTRA. THEIRA IRASEMA SAMPERIO MONROYFEBRERO, 2011

Page 2: Apuntes B..

1

SISTEMAS OPERATIVOS

UNIDAD I

INTRODUCCION A LOS SISTEMAS OPERATIVOS

1.1 Concepto y funciones

Sistema Operativo

Es el conjunto de programas que establecen al usuario una interfaz (medio de comunicación) con la computadora (cpu) y sus periféricos.

Un sistema operativo está compuesto por una serie de programas dispuestos ya sea en el software o en la memoria fija que hacen al hardware utilizable.

Un sistema operativo (SO) es un conjunto de programas destinados a permitir la comunicación del usuario con un ordenador y gestionar sus recursos de manera eficiente. Comienza a trabajar cuando se enciende el ordenador, y gestiona el hardware de la máquina desde los niveles más básicos.

Otros conceptos:

- Herramientas para poder trabajar con software.- Programa que permite la interfaz entre el hombre y la computadora.- Programa de arranque.- Software que controla el hardware.- Administrador de recursos del sistema de cómputo.- Conjunto de programas que se integran con el hardware para facilitar al usuario, el

aprovechamiento de los recursos disponibles.

Funciones de un Sistema Operativo

1. Establecer una interfaz entre el usuario, el hardware y el software.2. Controlar estrictamente los dispositivos (periféricos, circuitos, tarjetas, memoria, disco, etc).3. Controlar procesos (funciones, tareas) en el sistema.4. Detectar errores en el sistema. Avisa por medio de mensajes la presencia de un error, por

ejemplo, cuando queremos leer un archivo en la unidad de 3 ½ y no hemos introducido el disquet.

5. Planificar recursos entre usuarios. En sistemas compartidos, el sistema operativo asigna recursos y da servicio a todos los usuarios.

6. Recuperarse de errores. Lo que permite no interrumpir el funcionamiento normal del sistema.7. Compartir el hardware entre los usuarios.

Recursos que administra el s.o. en el sistema

1. El (los) procesador(es).2. El almacenamiento primario (memoria RAM) y secundario (unidades de disco).3. Dispositivos de entrada/salida (monitor, teclado, micrófonos, lectores, escáner, mouse).4. Datos.

Page 3: Apuntes B..

2

SISTEMAS OPERATIVOS

¿Cómo trabaja un sistema operativo?

El sistema operativo administra la ejecución de las operaciones en el sistema de dos maneras:

1. En serie

En un trabajo en serie el sistema operativo va atendiendo las operaciones una por una. Hasta que termina una operación se ejecuta la siguiente.

El sistema operativo MS-DOS trabaja en serie.

Ventaja: Garantiza que se ejecuten completamente los procesos.

Desventaja: Es muy lento.

2. En paralelo (concurrente)

Hay un tiempo determinado en cada tarea para su ejecución. Al terminar su tiempo de ejecución, se sigue con la siguiente operación.

El sistema operativo Windows trabaja en paralelo.

Ventaja: En menos tiempo se atiende a todos los usuarios.

Desventaja: No garantiza que se ejecuten completamente los procesos.

1.2 Evolución de los sistemas operativos

El desarrollo y evolución de los sistemas operativos va de la mano con la evolución de los sistemas computacionales y las Tecnologías de Información y Comunicación (TIC).

Generación 0

- No había sistemas operativos.- Década de los 40’s.- Codificación en lenguaje máquina (0,1).- Los programas se introducían bit a bit.

1ª Generación

- 1945-1955- Máquinas enormes.- Bulbos y conexiones.- Lenguaje máquina absoluto.- Tarjetas perforadas.- Máquinas lentas y costosas.- Lenguajes de programación desconocidos.

2ª Generación

- 1955-1965- Transistores.- Procesamiento por lotes (unitarea).- Cintas magnéticas como unidades de almacenamiento.- Se empieza a hablar de sistemas operativos.- El primer sistema operativo es desarrollado por la General Motors para una IBM 701 y la 7094.- Los sistemas se utilizan para cálculos científicos e ingeniería.- Lenguaje ensamblador.- FORTRAN, IBSYS.

Page 4: Apuntes B..

3

SISTEMAS OPERATIVOS

- Tiempos compartidos.

3ª Generación

- 1965-1980- Circuitos integrados.- Multiprogramación.- Tiempos compartidos.- Lenguaje de alto nivel C.- Etapa inicial de las PC’s.- Estándares de comunicación.- Lectura de trabajos de tarjetas a discos.- Ejecución de trabajos en serie.- Sistemas de tiempo real.- Manejo por cola de impresión.

4ª Generación

- Década de los 80’s a nuestros días.- Surgen PC’s- MS-DOS, UNIX.- Diseño de interfaz amigables gráficas.- VLCI- Redes- Sistemas operativos de redes- Sistemas operativos distribuidos- Máquinas virtuales- Compatibilidad entre plataformas- Comunicación remota- Programación orientada a objetos- Internet- Robótica- SW amable con el usuario- Sistemas de seguridad para BD’s.- HTML- Agentes- TIC’s

NOTA: Se maneja hasta esta 4º Generación por el avance del hw y sw que en la actualidad es muy rápido. En esta última generación se incluyen las nuevas tecnologías actuales como: programación para Internet, memory flash, realidad virtual, etc.

1.3 Conceptos de hardware y software

A continuación vamos describir algunos conceptos de hardware y software, que nos facilitarán la comprensión del funcionamiento de un sistema operativo.

El hardware se refiere a los dispositivos físicos del sistema.

Compaginación de almacenamiento.

Page 5: Apuntes B..

4

SISTEMAS OPERATIVOS

La compaginación del almacenamiento se utiliza para acelerar el acceso al almacenamiento primario (memoria RAM), al dividir el dispositivo de almacenamiento en localidades de memoria para almacenar la información.

1. LOCALIDADES ADYACENTES. El sistema operativo guarda la información de manera contigua. La información queda compactada. El acceso es más rápido.

2. LOCALIDADES NO ADYACENTES. El sistema operativo guarda la información en espacios no contiguos. La información queda esparcida. El acceso es más lento.

Registro de relocalización (reubicación)

Permite relocalizar de forma dinámica los programas y/o información en memoria.

Se añade a cada dirección que genere el programa o información en memoria, de esta manera el sistema proporciona un registro para localizar el programa donde quiera que se encuentre.

Utilización del Buffer

Un buffer es un área del almacenamiento primario destinada a contener datos durante transferencias de entrada/salida. Durante le entrada, los datos son colocados en el buffer (ya que ocupan demasiada memoria). Cuando termina la transferencia el procesador ya puede accesar a los datos.

NOTA: El buffer NO utiliza localidades de memoria porque ocuparía muchísima.

Dispositivos periféricos

Un periférico es un dispositivo de soporte físico a una computadora, que le permite interactuar con el exterior por medio de la entrada, salida y el almacenamiento de datos así como la comunicación entre ordenadores. El término suele aplicarse a los dispositivos que no forman parte indispensable de una computadora (como lo son cpu y memoria) y que son, en cierta forma, opcionales. También se suele utilizar habitualmente para definir a los elementos que se conectan externamente a un puerto de la misma, aunque muchos de ellos se han vuelto tan indispensables para las computadoras personales de hoy en día que ya son integrados desde la fabricación en la tarjeta principal.

Los dispositivos periféricos pueden dividirse en cuatro categorías principales:

Almacenamiento: Su función principal es asegurar la permanencia de la información producida y/o manejada por la computadora después de que esta ha sido apagada.

Entrada: Aportan datos al ordenador para su tratamiento por parte de la CPU. Son la interfaz por medio de la cual el ser humano introduce información al mismo.

Salida: Se encargan de transmitir los datos procesados por el CPU de vuelta a la persona que está utilizando la computadora por diferentes medios.

Comunicación: Su función es servir de canal entre una o más computadoras o entre la computadora y un dispositivo periférico externo.

Protección del almacenamiento

Page 6: Apuntes B..

5

SISTEMAS OPERATIVOS

La protección del almacenamiento limita el número de direcciones que un programa puede referenciar. Se utiliza para evitar que los programas se interfieran entre sí. El sistema operativo debe ser capaz de proteger determinadas áreas del acceso a usuarios, mediante registros límites o claves de protección de almacenamiento.

Se puede implantar a través de:

a) Registros límites. Definen la dirección superior e inferior del bloque de almacenamiento.

b) Claves de protección del almacenamiento. Asociadas con áreas de memoria principal (un programa puede hacer referencia a localidades de memoria solamente en aquellas áreas cuyas claves coincidan con la clave del programa).

Operación en línea & Operación fuera de línea

Operación en línea. Los dispositivos periféricos están conectados al procesador. Es decir, el procesador se incluye en las operaciones, por ejemplo la lectura/escritura en memoria RAM.

-Operación fuera de línea. Los dispositivos periféricos son manejados por unidades de control que no están conectadas al cpu. Estas unidades de control hacen posible manejar los dispositivos periféricos sin cargar directamente al procesador. Hacen posible manejar dispositivos periféricos sin que esto represente una carga directa al procesador, por ejemplo, una operación para pasar información de una memoria flash a un cd.

Temporizadores y relojes

Un Temporizador de intervalos es un circuito que controla el pulso del reloj del sistema, es útil en sistemas de usuarios múltiples para prevenir que un solo usuario monopolice el procesador.

El reloj controla las actividades dentro del sistema. Es de cristal de cuarzo. El sistema cuenta con dos tipos de reloj:

1. Reloj horario. Lleva la hora y fecha del sistema.

2. Reloj de procesos. Envía interrupciones al cpu de manera periódica para la sincronización en los procesos (tiempo de ejecución)

Para sincronizar los procesos el sistema almacena un valor en un registro o variable denominado QUANTUM el cual se va decrementando cada ciclo de reloj, cuando llega a 0 lanza un proceso que ejecutará las operaciones necesarias.

Canales de entrada/salida

Los módulos de E/S (un controlador de disco, por ejemplo) pueden intercambiar datos directamente con el procesador. Al igual que el procesador puede iniciar una lectura o escritura en la memoria, indiciando la dirección de una ubicación específica, el procesador también puede leer datos de un módulo de E/S o escribir datos en un módulo de E/S.

Un canal es un sistema computacional de propósito especial dedicado al manejo de entrada/salida con independencia del procesador central. El verdadero mérito de los canales de entrada/salida consiste en aumentar en gran medida la cantidad de actividad concurrente de hw posible y evitar al procesador la mayor parte de la carga de manejar E/S (esto por medio de sus controladores).

Robo de ciclo (de reloj)

Un punto de conflicto entre los canales y el procesador está en el acceso al almacenamiento primario. Como no puede estar en marcha más que un solo acceso a la vez (a la memoria), y como no es

Page 7: Apuntes B..

6

SISTEMAS OPERATIVOS

posible que tanto los canales como el procesador quieran tener acceso al almacenamiento primario de forma simultánea, en general, se da prioridad a los canales.

Esto se llama robo de ciclo , los canales literalmente, roban ciclos al procesador.

Estado problema & Estado supervisor

Estado problema o Estado de usuario. Cuando el cpu se encuentra ejecutando una actividad y se impide la ejecución directa de operaciones de entrada/salida.

Estado supervisor. El sistema operativo trabajando en un sistema, entra a un estado supervisor con todos los privilegios necesarios para cumplir con las tareas designadas.

Almacenamiento virtual

Los sistemas de almacenamiento virtual permiten a los programas hacer referencia a espacios de direcciones mucho mayores que los espacios de direcciones disponibles en el almacenamiento primario. El sistema operativo se vale de los dispositivos de almacenamiento secundario para hacer el almacenamiento virtual. Ofrece la ventaja de incrementar la capacidad de memoria.

El software consiste en los programas de instrucciones y datos que definen para el hardware los algoritmos necesarios para la resolución de problemas. A continuación mencionaremos algunos conceptos de software útiles para entender el funcionamiento de los sistemas operativos.

Lenguaje máquina & Lenguaje Ensamblador

Lenguaje máquina. Es un SW de bajo nivel, utiliza código binario, dependiente de la máquina, con instrucciones bastante primitivas. Es el lenguaje que el sistema de cómputo puede comprender directamente.

-Lenguaje ensamblador. Se desarrollaron para aumentar la velocidad del proceso de programación y reducir los errores de codificación. Se consideran la versión simbólica del lenguaje máquina. No son directamente entedibles por la computadora, para ellos requieren ser previamente traducidos (Ensamblador).

Compilador

Programa que traduce los lenguajes de alto nivel a lenguaje máquina.

Sistema de Control de Entrada/Salida (IOCS)

Es el conjunto de programas a través del cual el sistema operativo controla las actividades de entrada/salida que se generan en el sistema. Comúnmente conocido como BIOS.

Spool / Spooling

Operaciones periféricas simultáneas en línea. (Simultaneous Peripherical Operation on Line)

Actividad que realiza el sistema operativo para hacer cambios de velocidad entre los diferentes dispositivos. Es el empleo de un almacenamiento auxiliar como buffer para reducir el retardo del procesamiento cuando se transfieren datos entre los equipos periféricos y los procesadores de un computador.

El SPOOL es una técnica que permite que las entradas y las salidas de un proceso tengan un paso intermedio en dispositivos de gran capacidad de almacenamiento. El ejemplo típico es el spool de impresora: un proceso puede obtener una gran cantidad de información en poco tiempo, y en cambio

Page 8: Apuntes B..

7

SISTEMAS OPERATIVOS

estos resultados pueden necesitar mucho tiempo para ser impresos. Otro caso muy corriente es el de trabajar con un procesador de textos y hacer una impresión de un documento relativamente largo. Si no se utiliza el spool, tanto el computador como el usuario no podrán hacer nada hasta que se termine de imprimir.

El Spooling utiliza el disco como un buffer muy grande para leer tan por delante como sea posible de los dispositivos de entrada y para almacenar los ficheros hasta que los dispositivos de salida sean capaces de aceptarlos.

De esta manera, puede mantener tanto a la CPU como a los dispositivos de E/S trabajando con un rendimiento mucho mayor.

Cargadores

Un cargador es un programa que se encarga de colocar las instrucciones y datos (fichero ejecutable) dentro de localidades del almacenamiento primario, asignando el espacio necesario en memoria y pasando el control a la primera de las instrucciones a ejecutar, comenzando a continuación la fase de ejecución.

Cargador absoluto. Reserva un espacio determinado de memoria específico para un determinado programa.

Cargador de relocalización. Puede cargar un programa en diversos lugares de la memoria, dependiendo de la disponibilidad de memoria al momento de realizar la carga.

1.4 Estructura de un sistema operativo

Se considera la organización interna del sistema operativo y para ello debemos observar dos tipos de requisitos:

a. Requisitos del usuario:

- Sistema fácil de usar y aprender- Seguro- Rápido- Adecuado al uso al que se quiere destinar

b. Requisitos de software:

- Mantenimiento- Forma de operación- Restricciones de uso- Eficiencia- Tolerancia frente a errores- Flexibilidad

A medida que fueron creciendo las necesidades de los usuarios y se perfeccionaron los sistemas, se hizo necesaria una mayor organización del software del sistema operativo, donde una parte del sistema contenía subpartes y esto organizado en forma de niveles.

Es una estructura jerárquica, con mayor organización del sw del sistema operativo.

El sistema operativo se divide en partes o niveles, cada uno perfectamente definido y con un claro interfase (comunicación) con el resto de los elementos.

La 1ª estructura jerárquica o de niveles, la desarrolló Djikstra, utilizándose para fines didácticos, denominada THE (Technische Hogeschool, Eindhoven). Una forma de ver este tipo de sistema es la denominada de anillos concéntricos o “rings”:

Page 9: Apuntes B..

8

SISTEMAS OPERATIVOS

De esta forma, las zonas más internas del sistema operativo o núcleo del sistema estarán más protegidas de accesos indeseados desde las capas más externas. Las capas más internas serán, por tanto, más privilegiadas que las externas.

A continuación definiremos de manera breve cada uno de estos niveles que conforman el sistema operativo (nota: en el gráfico la quinta y última capa de “intérprete de comandos” está representada por un círculo aparte de los niveles, pero está interrelacionado con los demás).

1. Núcleo (Kernell)

Es la parte primordial del sistema operativo. El núcleo o centro del sistema operativo administra todo el sistema, sincroniza todos los procesos. A nivel de núcleo solo se trabaja con procesos.

2. Gestión de entrada/salida

El sistema operativo administra los dispositivos externos a través de sus controladores.

3. Gestión de memoria

El sistema operativo administra todos los aspectos relativos a memoria real y memoria virtual.

4. Sistemas de archivos

El sistema operativo se ocupa de administrar los archivos del usuario a través de una estructura de directorios con algún tipo de organización.

5. Intérprete de comandos

Es un mecanismo de comunicación entre los usuarios y el sistema. Lee las instrucciones del usuario y hace que se ejecuten las funciones del sistema solicitadas.

Page 10: Apuntes B..

9

SISTEMAS OPERATIVOS

1.5 Clasificación de los sistemas operativos

Existen diversas clasificaciones de los sistemas operativos, la más común es por lo servicios que ofrecen al usuario final:

Sistemas operativos monousuarios

Los sistemas operativos monousuarios son aquellos que soportan a un usuario a la vez, sin importar el número de procesadores que tenga la computadora o el número de procesos o tareas que el usuario pueda ejecutar en un mismo instante de tiempo. Las computadoras personales típicamente se han clasificado en este renglón.

Sistemas operativos multiusuarios

Los sistemas operativos multiusuarios son capaces de dar servicio a más de un usuario a la vez, ya sea por medio de varias terminales conectadas a la computadora o por medio de sesiones remotas en una red de comunicaciones. No importa el número de procesadores en la máquina ni el número de procesos que cada usuario puede ejecutar simultáneamente.

Sistemas operativos monotareas

Los sistemas monotarea son aquellos que sólo permiten una tarea a la vez por usuario. Puede darse el caso de un sistema multiusuario y monotarea, en el cual se admiten varios usuarios al mismo tiempo pero cada uno de ellos puede estar haciendo solo una tarea a la vez.

Page 11: Apuntes B..

10

SISTEMAS OPERATIVOS

Sistemas operativos multitareas

Un sistema operativo multitarea es aquél que le permite al usuario estar realizando varias labores al mismo tiempo. Por ejemplo, puede estar editando el código fuente de un programa durante su depuración mientras compila otro programa, a la vez que está recibiendo correo electrónico. Es común encontrar en ellos interfaces gráficas orientadas al uso de menús y el ratón, lo cual permite un rápido intercambio entre las tareas para el usuario, mejorando su productividad.

Sistemas operativos uniproceso

Un sistema operativo uniproceso es aquél capaz de manejar solamente un procesador de la computadora, de manera que si la computadora tuviese más de uno le sería inútil. El ejemplo más típico de este tipo de sistemas es el DOS y MacOS.

Sistemas operativos multiproceso

Un sistema operativo multiproceso se refiere al número de procesadores del sistema, que es más de uno y éste es capaz de usarlos todos para distribuir su carga de trabajo. Generalmente estos sistemas trabajan de dos formas: simétrica o asimétricamente. Cuando se trabaja de manera asimétrica, el sistema operativo selecciona a uno de los procesadores el cual jugará el papel de procesador maestro y servirá como pivote para distribuir la carga a los demás procesadores, que reciben el nombre de esclavos. Cuando se trabaja de manera simétrica, los procesos o partes de ellos son enviados indistintamente a cualesquiera de los procesadores disponibles, teniendo, teóricamente, una mejor distribución y equilibrio en la carga de trabajo bajo este esquema.

Page 12: Apuntes B..

11

SISTEMAS OPERATIVOS

UNIDAD II

ADMINISTRACIÓN DE PROCESOS

2.1 Definición de proceso

El núcleo del sistema operativo controla todas las operaciones en las que participan los procesos. Es la parte que más se utiliza del sistema operativo, por lo que reside en memoria, mientras que otras partes del sistema operativo son cargadas en memoria solo cuando se necesitan.

Proceso

Este término fue utilizado por primera vez en los años sesenta, muchas veces utilizado como sinónimo de tarea.

• Programa en ejecución• El “espíritu animado” de un procedimiento• El “centro de control” de un procedimiento en ejecución• Entidad atendida por un procesador.• Secuencia codificada en trance de ejecución.• Conjunto de microinstrucciones de un programa destinadas a ser ejecutadas por el microprocesador.• Es un programa en ejecución que necesita recursos para realizar su tarea: tiempo de cpu, memoria, archivos y dispositivos de e/s.• Consiste en el conjunto de instrucciones de programa destinadas a ser ejecutadas por el microprocesador.

Un programa como tal es una entidad inanimada, cuando el procesador le “infunde vida” se convierte en una entidad activa que se denomina PROCESO.

Un proceso está conformado por: CÓDIGO y DATOS.

Funciones del proceso

1. Ejecutarse2. Crear otro(s) proceso(s). (Estructura jerárquica de los procesos: un proceso padre crea

proceso(s) hijo(s).

Padre

Hijo Hijo

2.2 Funciones y políticas del procesador

Page 13: Apuntes B..

12

SISTEMAS OPERATIVOS

El sistema operativo a nivel de núcleo únicamente trabaja con procesos. El sistema operativo atiende y administra los procesos a través de su PCB.

PCB. Bloque de control de procesos. Es un descriptor del proceso. Es una estructura de datos que contiene información acerca del proceso.

Funciones del sistema operativo sobre los procesos

El sistema operativo sabe en todo momento lo que hace cada proceso. Administra su ejecución, sabe a qué hora entran al procesador, etc.

Las principales funciones que realiza el sistema operativo sobre los procesos:

1. Crear el Bloque de Control de Procesos (PCB) para cada proceso. Al sistema no entran procesos desconocidos.

2. Auxiliar en la ejecución del proceso:

- Creación: dar nombre al proceso, insertar en la Tabla de Procesos, determinar la prioridad inicial del proceso, crear el PCB, asignar recursos iniciales.

- Destrucción

3. Suspender momentáneamente el proceso. Se suspenden temporalmente ciertos procesos y así se reduce la carga de trabajo del sistema. Por ejemplo, tenemos un proceso de impresión y tenemos problemas con la impresora que no está lista (encendida), el proceso “detiene su ejecución”, se resuelve el problema y sigue.

4. Bloquear un proceso. Un proceso está bloqueado cuando está esperando que suceda algún evento de entrada/salida antes de poder seguir su ejecución. El proceso no se puede ejecutar debido a la ocurrencia de un evento externo. Por ejemplo, el cursor en word indica que el proceso está esperando que entre un carácter. O el botón “Aceptar”.

5. Reanudar un proceso. Cuando un proceso es suspendido (problemas con el disco dura, impresora) y se resuelve, el sistema operativo hace que el proceso continúe a partir del punto en que se quedó.

6. Cambiar la prioridad de un proceso.

7. “Dormir” un proceso. El sistema operativo indica que un proceso está en espera para pasar al CPU a realizar una actividad.

8. “Despertar” un proceso. El sistema operativo activa los procesos al momento en que van a pasar al CPU a ejecutarse.

9. Permitir que un proceso se comunique con otros (comunicación entre procesos).

10. Destruir un proceso. Cuando el proceso se termina de ejecutar, el sistema operativo lo destruye y da de baja su PCB, y se libera memoria.

Políticas del sistema operativo sobre los procesos

1. Cuando se está creando el PCB para un proceso, la información que se debe asignar es:

a) Identificador único del proceso.b) Estado actual del proceso. (El sistema operativo debe saber en todo momento en qué

parte del sistema está el proceso).c) Prioridad del proceso.d) Recursos que va a ocupar el proceso.e) El procesador en que se está ejecutando el proceso.

Page 14: Apuntes B..

13

SISTEMAS OPERATIVOS

f) Apuntador hacia el “padre” del proceso.g) Apuntador(es) hacia el (los) hijo(s) del proceso.h) Apuntadores hacia las zonas de memoria del proceso.

2. Si se elimina a un proceso padre, se elimina a los procesos hijo. Cuando un proceso crea a otro(s) proceso(s) se genera una estructura jerárquica. Cuando se destruye un proceso padre, se elimina del sistema, se quita de la Tabla de Procesos, se elimina su PCB y se libera memoria, no sin antes eliminar a sus procesos hijo. Por política, termina de ejecutarse el proceso padre y se va a destruir, el sistema operativo elimina a los hijos (esperando a que terminen de ejecutarse para eliminar al padre).

2.3 Bloque de Control de Procesos

El Bloque de Control de Procesos (PCB) es un descriptor del proceso.

El PCB es un almacén central de información que permite al sistema operativo localizar toda la información importante acerca de un proceso. El PCB es la entidad que define a un proceso al sistema operativo.

Es una estructura de datos que contiene información acerca del proceso, que incluye:

a) Identificador único del proceso.b) Estado actual del proceso. (El sistema operativo debe saber en todo momento en qué

parte del sistema está el proceso).c) Prioridad del proceso.d) Recursos que va a ocupar el proceso.e) El procesador en que se está ejecutando el proceso.f) Apuntador hacia el “padre” del proceso.g) Apuntador(es) hacia el (los) hijo(s) del proceso.h) Apuntadores hacia las zonas de memoria del proceso.

2.4 Estados de un proceso

Un proceso pasa por varios estados. Varios eventos pueden ocasionar que un proceso cambie de estado.

Un proceso está en estado de:

Ejecución. Cuando tiene asignada la CPU, es decir, en ese momento está utilizando el CPU. Sólo puede haber un proceso en ejecución a la vez.

Listo. Cuando un proceso está en espera de pasar al CPU. Puede haber varios procesos listos en una Lista de Procesos Listos (se ordenan). Se dice que el proceso está en un estado de “dormido” y está formado para pasar al CPU. El proceso está “listo” para pasar al CPU.

Page 15: Apuntes B..

14

SISTEMAS OPERATIVOS

Bloqueado. Se presenta cuando un proceso está esperando que suceda algún evento de estrada/salida antes de poder proseguir su ejecución. Puede haber varios procesos bloqueados en una “Lista de Procesos Bloqueados”. El proceso no se puede ejecutar debido a la ocurrencia de un evento externo. Una vez que ocurre el evento externo por que se estaba esperando, se desbloquean los procesos y pasan a “Listos” en el orden de ocurrencia de estos eventos (en la “lista de procesos bloqueados” no se ordenan los procesos).

2.5 Transiciones de estado de los procesos

Una transición de estado implica que un proceso cambie de un estado a otro. Al realizar un proceso una transición de estado, el sistema operativo registra el nuevo estado en el PCB.

Despacho

La asignación del procesador al primer proceso de la lista de procesos listos se denomina DESPACHO.

Llega un proceso al sistema y se inserta al final de la “Lista de Procesos Listos”, el proceso se desplaza poco a poco en esta lista a medida que los procesos se van ejecutando. Cuando el proceso llega al principio de la lista, se le asigna el CPU (que ya está disponible).

Se dice que hay una transición de estado:

ESTADO LISTO ESTADO DE EJECUCIÓN

Expiración de tiempo

Ocurre cuando el sistema decide que el proceso en ejecución ya ha sido ejecutado el tiempo suficiente y es hora de que otro proceso tenga tiempo de CPU.

Para evitar que un proceso monopolice el sistema, el sistema operativo utiliza el reloj, para que las tareas de un usuario se ejecuten durante un intervalo específico de tiempo (quantum).

Si el proceso no libera voluntariamente el CPU antes que expire el intervalo de tiempo, el reloj genera una interrupción, haciendo que el sistema operativo retome el control. El sistema operativo transforma el proceso en ejecución en un proceso listo; y como está desocupado el CPU, pasa un proceso que estaba en la “Lista de Procesos Listos” primero.

Se dice que hay una transición de estado:

ESTADO EN EJECUCIÓN ESTADO LISTO

Bloqueo

El proceso se bloquea esperando que se complete una operación de entrada/salida.

Page 16: Apuntes B..

15

SISTEMAS OPERATIVOS

Un proceso se está ejecutando normalmente en CPU, el proceso descubre que no puede continuar porque no llegan los datos que espera. El proceso libera voluntariamente el CPU, en espera de los datos.

Es común que los procesos estén en espera de datos y estos no están disponibles, por lo que se bloquean en forma inmediata.

Se dice que hay una transición de estado:

ESTADO EN EJECUCIÓN ESTADO BLOQUEADO

Despertar

Ocurre cuando se completa una operación de entrada/salida.

Ocurre el evento externo por el que espera un proceso bloqueado (llegada de nuevos datos). Se “despierta” al proceso bloqueado que pasa al estado “Listo” tomando su lugar en la fila y espera hasta que llega al inicio de la fila para pasar nuevamente a CPU.

Se dice que hay una transición de estado:

ESTADO BLOQUEADO ESTADO LISTO

2.6 Procesamiento de interrupciones

Los procesos que están en ejecución en CPU a veces son interrumpidos. La interrupción es generada por el hardware del sistema, a través de un bip, una alarma, una señal, una luz, entre otros).

Interrupción

Es un evento que altera la secuencia en que el procesador ejecuta las instrucciones.

Suspensión de un proceso, como la ejecución de un programa, originada por un suceso externo a dicho proceso y llevada a cabo de forma que el proceso pueda reanudarse.

Tipos de interrupción

1. Interrupciones de programaGeneradas por alguna condición que se produce como resultado de la ejecución de una instrucción, como el desbordamiento aritmético, la división por cero, el intento de ejecutar una instrucción ilegal de la máquina, o una referencia a una zona de memoria fuera del espacio permitido al usuario.

Page 17: Apuntes B..

16

SISTEMAS OPERATIVOS

2. Interrupciones de relojGeneradas por el reloj interno del sistema. Esto permite al sistema operativo llevar a cabo ciertas funciones con determinada regularidad, por ejemplo, el no permitir que ciertos procesos monopolicen el sistema.

3. Interrupciones de entrada/salidaGeneradas por los controladores de entrada/salida, para indicar que una operación ha terminado normalmente o para indicar diversas condiciones de error.

4. Interrupciones de reinicioOcurre cuando se presiona el botón de reinicio o llega desde otro procesador la instrucción de Reinicio.

5. Interrupciones de verificación de la máquina.Ocasionadas por el mal funcionamiento del hardware o por fallas tales como un corte de energía.

¿Qué pasa cuando ocurre una interrupción?

1. El sistema operativo toma el control (el hardware pasa el control al sistema operativo).2. El sistema operativo guarda el estado del proceso interrumpido en el PCB del proceso.3. El sistema operativo analiza la interrupción y transfiere el control a la rutina adecuada para

atenderla. Actualmente, el hardware se encarga de esto automáticamente.4. La rutina del manejador de interrupciones procesa la interrupción.5. Se restablece el estado del proceso interrumpido.6. Se ejecuta el proceso interrumpido (pasa a su estado Listo).

2.7 Secciones críticas

En sistemas multiusuarios los procesos entran en conflicto cuando compiten por el uso de un mismo recurso (CPU, memoria, dispositivos de entrada/salida).

En el caso de que haya procesos en competencia por un recurso compartido, es necesaria la exclusión mutua. Basado en el operador “xor exclusivo” donde entra uno pero no ambos.

Exclusión mutua

Administra el área de datos compartidos y los recursos compartidos del sistema.

La exclusión mutua es la actividad que realiza el sistema operativo para evitar que dos o más procesos ingresen al mismo tiempo a un área de datos compartidos o accedan a un mismo recurso.

En otras palabras, es la condición por la cual, de un conjunto de procesos, sólo uno puede acceder a un recurso dado o realizar una función dada en un instante de tiempo.

Región/sección crítica

Cuando un proceso utiliza un recurso compartido, realiza una serie de operaciones sobre este recurso y luego lo deja de utilizar. A estos recursos se les llama recursos críticos y la parte del programa/código que utiliza estos recursos se le conoce como sección crítica del programa.

Para lograr la exclusión mutua, generalmente se utilizan algunas técnicas o algoritmos como: semáforos, monitores, algoritmo de Decker, algoritmo de Peterson, los candados.

2.8 Semáforos y Monitores

Page 18: Apuntes B..

17

SISTEMAS OPERATIVOS

Semáforo

Programa del sistema operativo que controla el tráfico de procesos dentro del sistema.

Controla los procesos dentro de memoria en el área de datos compartidos (lectura, lectura/escritura, escritura).

Trabaja con dos elementos:

- señal (despertar)

- espera (dormir)

Dependiendo del tipo de operación en el área de datos compartidos, será el semáforo que se implante.

El uso de semáforos depende del número de procesos; en áreas de datos no compartidos no tiene razón de ser.

Monitores

Dentro de un sistema operativo es un programa que observa y administra los procesos dentro del cpu.

Se pueden implementar monitores en memoria en áreas de datos compartidos y no compartidos.

NOTA: Dentro de los monitores se implementan los semáforos.

2.9 Deadlock (Abrazo mortal)

A cada proceso se le asignan varios recursos para su ejecución. En sistemas de multiprogramación, uno de los principales objetivos del sistema operativo es el compartimiento de los recursos. Cuando se comparten los recursos entre una población de usuarios, cada uno de los cuales mantiene un control exclusivo sobre ciertos recursos asignados a él, es posible que otros usuarios no terminen sus procesos (bloqueo entre usuarios).

El bloqueo mutuo puede aparecer de muchas formas:

- Si a un proceso se le asigna la tarea de esperar a que ocurra un evento y el sistema no incluye providencias para señalar la ocurrencia de dicho evento, habrá un bloqueo mutuo con un solo proceso. Es muy difícil detectar bloqueos mutuos de esta naturaleza.

- La mayor parte de los bloqueos mutuos en sistemas reales implican una competencia entre varios procesos por varios recursos.

Bloqueo mutuo = Deadlock = Abrazo mortal

El bloqueo mutuo o abrazo mortal (deadlock) es el problema más serio que se puede presentar en un ambiente de multiprogramación. Es la actividad en que dos o más procesos esperan un recurso (cpu, memoria, entrada/salida) que nunca les va a ser otorgado.

Page 19: Apuntes B..

18

SISTEMAS OPERATIVOS

Como se vé, aquí el sistema está bloqueado: Proceso1 tiene a Recurso1 y necesita a Recurso2 para continuar. Y Proceso2 tiene asignado a Recurso2, y necesita a Recurso1 para continuar. Cada proceso espera que el otro libere un recurso que no liberará hasta que el otro libere su recurso, lo cual no sucederá si el primero no libera su recurso. Aquí se presenta una espera circular.

Otro ejemplo, dos procesos adueñados de cpu. ProcesoA se ejecuta y llama a ProcesoB, ProcesoB se ejecuta y llama a ProcesoA, ... , si llega otro proceso, no lo van a dejar entrar a CPU a ejecutarse.

Detección

Es el proceso de determinar si realmente existe un bloqueo mutuo e identificar los procesos y recursos implicados en él.

* PCB indica qué recursos, cuántos y en qué orden va a utilizar el proceso. Al momento que se asignen recursos al proceso no se le deben asignar a otro proceso.

Prevención

Es la técnica más empleada para tratar el bloqueo mutuo.

Para prevenir la condición de deadlock:

a. Cada proceso deberá pedir desde un principio todos los recursos que va a utilizar.b. Si va a utilizar más recursos después, tiene que esperarse a que se liberen los demás

recursos.c. Si a un proceso que tiene varios recursos se le niegan los demás, ese proceso deberá liberar

sus recursos que ya le habían sido asignados.d. Asignar prioridad a los recursos.

1º CPU2º Memoria

Page 20: Apuntes B..

19

SISTEMAS OPERATIVOS

3º E/S4º Buses

Recuperación

Cuando se ha bloqueado un sistema, el deadlock se debe romper mediante la eliminación de una o más de las condiciones necesarias.

Por lo general, varios procesos perderán una parte o la totalidad del trabajo que han efectuado, pero el precio puede ser pequeño en comparación con las consecuencias de permitir que el sistema siga bloqueado.

En los sistemas actuales, la recuperación se suele realizar eliminando un proceso y arrebatándole sus recursos. Por lo general, el proceso eliminado se pierde, pero ahora es posible concluir los procesos restantes.

Los procesos pueden eliminarse de acuerdo a su prioridad. Si se llega a presentar el deadlock, el sistema operativo debe eliminar un proceso, el de menos prioridad, para que los demás puedan continuar. Al momento que se elimina un proceso se libera el recurso que tenía asignado. Si los 2 procesos tienen la misma prioridad, se elimina el segundo que pidió el recurso (solo por política).

UNIDAD II continuación

ADMINISTRACIÓN DEL PROCESADOR

A. Niveles de planificación

La asignación del (los) procesador(es) a los procesos es lo que permite que estos últimos realicen su trabajo.

¿Cuándo deben asignarse los procesadores y a qué procesos? Esto lo decide la actividad conocida como Planificación del procesador. Se consideran 3 niveles importantes de planificación:

Page 21: Apuntes B..

20

SISTEMAS OPERATIVOS

Planificación de alto nivel.- “Planificación de trabajos o procesos”.- Determina a qué trabajos se les va a permitir competir activamente por los recursos del

sistema.- Planificación de admisión, pues determina qué trabajos obtienen admisión al sistema. Una vez

admitidos, los trabajos se convierten en procesos o grupos de procesos.

Planificación de nivel intermedio.- Determina a qué procesos se les puede permitir competir por la CPU.- Suspende y activa los procesos para lograr una operación uniforme del sistema y para ayudar a

alcanzar ciertas metas en el rendimiento total del sistema.- Actúa como un “buffer” entre la admisión de trabajos al sistema y la asignación de la CPU a

estos trabajos.Planificación de bajo nivel.

- Determina a qué proceso listo se le asigna la CPU cuando ésta queda disponible y se le asigna la CPU a este proceso.

- Despacha los procesos.- Ejecuta los procesos.

B. Objetivos de la planificación

Una estrategia de planificación debe buscar que los procesos obtengan sus turnos de ejecución apropiadamente, conjuntamente con un buen rendimiento y minimización de la sobrecarga (overhead) del planificador mismo.

En general, se buscan los siguientes objetivos principales:

1. Justicia. Todos los procesos son tratados de la misma manera y ninguno experimenta postergación indefinida.

2. Maximizar la capacidad de ejecución. Debe intentar dar servicio al número máximo de procesos por unidad de tiempo.

3. Maximizar el tiempo de respuesta. Cada usuario o proceso debe observar que el sistema les responda consistentemente a sus requerimientos.

Page 22: Apuntes B..

21

SISTEMAS OPERATIVOS

4. Evitar el aplazamiento indefinido. Los procesos deben terminar de ejecutarse en un plazo finito de tiempo.

5. El sistema debe ser predecible. Un trabajo dado debe ejecutarse, aproximadamente, en la misma cantidad de tiempo y costo con independencia de la carga del sistema.

6. Equilibrar el uso de recursos. El planificador debe mantener ocupados los recursos del sistema.

7. Mantener bien definidas las prioridades de los procesos. Establecer las prioridades de los procesos en cuanto al uso de los recursos.

C. Criterios de planificación

Para poder alcanzar los objetivos de la planificación mencionados en el punto anterior, los mecanismos de planificación deben considerar los siguientes criterios o características:

1. Limitación de un proceso a operaciones de entrada/salida. El proceso nada más entra a CPU a esperar un evento de entrada/salida, solo la utiliza brevemente.

2. Limitación de un proceso al CPU. El proceso tiende a usar el CPU hasta que termina su tiempo.

3. Si un proceso es por lote o interactivo. Por lote, los proceso se realizan ininterrumpidamente; interactivo, permite la interacción usuario-máquina, que lleva más tiempo.

4. Rapidez de respuesta. Si los procesos deben dar respuesta en tiempo real se requiere que tengan prioridad para los turnos de ejecución.

5. Prioridad. Los procesos de alta prioridad deben recibir mejor tratamiento que los de prioridad baja.

6. Tiempo de ejecución real. Cuánto tiempo requiere el proceso para ejecutarse.

7. Tiempo de ejecución adicional. Cuánto tiempo más requiere el proceso para terminar de ejecutarse.

D. SCHEDULER (Scheduling)

El Scheduler es el programa dentro del sistema operativo que administra de manera eficiente el procesador, es parte del núcleo del sistema operativo.

Funciones principales:a) Dar de alta el PCBb) Hacer actualizaciones al PCBc) Dar de baja el PCBd) Asigna tiempos de ejecución a cada procesoe) Organiza la fila de listos y bloqueados

El Planificador de trabajos o Scheduler se encarga de elegir la tarea siguiente que hay que admitir en el sistema y el proceso siguiente que hay que ejecutar.

Page 23: Apuntes B..

22

SISTEMAS OPERATIVOS

Su finalidad es asignar procesos para que sean ejecutados por el procesador o procesadores con el fin de obtener mejores tiempos de respuesta, mayor productividad o rendimiento y eficiencia del procesador.

En otras palabras, podemos definir al Scheduling como el conjunto de políticas y mecanismos construidos dentro del sistema operativo que gobiernan la forma de conseguir que los procesos a ejecutar lleguen a ejecutarse.

El Scheduler o Scheduling está muy relacionado con la gestión de los recursos, en cuestiones como: cuándo introducir un nuevo proceso en el sistema o determinar el orden de ejecución de los procesos del sistema. Existen tres niveles de Scheduling que son:

a) Planificador de la CPU o a corto plazo : También llamado short.term scheduler o low scheduler, es el responsable de decidir quién, cuándo, cómo y por cuánto tiempo recibe el procesador un proceso que está preparado para ejecutar (los recursos a esta altura ya deben estar todos disponibles para este trabajo). Además en en sistemas operativos con esquemas apropiativos (se quita el recurso CPU al proceso) verifica las interrupciones.

b) Planificador a mediano plazo : El planificador a mediano plazo es el encargado de regir las transiciones de procesos entre memoria principal y secundaria, actúa intentando maximizar la utilización de los recursos. Por ejemplo, transfiriendo siempre a memoria secundaria procesos bloqueados, o transfiriendo a memoria principal procesos bloqueados únicamente por no tener memoria. Este tipo de planificador se encuentra solo en algunos sistemas especialmente en los de tiempo compartido, ya que permite mantener un equilibrio entre los procesos activos e inactivos. Este planificador puede ser invocado cuando quede espacio libre de memoria por efecto de la terminación de un proceso o cuando el suministro de procesos caiga por debajo de un límite especificado.

c) Planificador a largo plazo : El planificador a largo plazo, Scheduler o planificador de trabajos, es un administrador que se encarga de organizar la ejecución con un adecuado planeamiento de recursos para que el trabajo se ejecute ordenadamente y eficientemente según la modalidad de procesamiento. El Scheduler se ejecuta con poca frecuencia, sólo cuando se necesita crear un nuevo proceso en el sistema, cuando termina un proceso, o ingresa un usuario en el sistema, por lo que tiene prioridad máxima para ejecutar. Es el responsable de controlar el nivel de multiprogramación del sistema y el balance de carga del sistema.

E. Estrategias de planificación del procesador

Una vez que el proceso entra al CPU a ejecutarse, el sistema le indica en qué forma va a realizar su ejecución.

1. Planificación No Apropiativa

Aquella en la cual, una vez que a un proceso le toca su turno de ejecución, ya no puede ser suspendido, ya no se le puede arrebatar la CPU.

Los trabajos largos hacen esperar a los trabajos cortos, pero el tratamiento que reciben todos los procesos es más justo.

Trabaja en serie, hasta que no termina una operación se ejecuta la siguiente.

Page 24: Apuntes B..

23

SISTEMAS OPERATIVOS

Existe una fila de procesos, los procesos se ejecutan ininterrumpidamente. El proceso se adueña de los recursos (CPU, memoria, datos, dispositivos e/s) que le habían sido asignados inicialmente hasta terminar su ejecución.

Si entra un proceso de alta prioridad, éste también debe esperar a que termine el proceso en ejecución. Este esquema puede ser peligroso, ya que si el proceso contiene accidental o deliberadamente ciclos infinitos, el resto de los procesos pueden quedar aplazados indefinidamente. Los tiempos de respuesta son más fáciles de predecir.

2. Planificación Apropiativa

Es aquella en que existe un reloj que lanza interrupciones periódicas en las cuales el planificador toma el control y se decide si el mismo proceso seguirá ejecutándose o se le dá su turno a otro proceso.

Este mismo reloj puede servir para lanzar procesos manejados por el reloj del sistema (por ejemplo, antivirus programados, analizadores de rendimiento).

Al proceso se le puede arrebatar la CPU. Es útil en sistemas en los cuales los procesos de alta prioridad requieren una atención rápida.

Se permite a cada proceso ejecutarse un determinado tiempo. Al proceso se le asignan los recursos que va a utilizar inicialmente. Garantiza tiempos de respuesta aceptables. Trabaja de manera concurrente.

Sistema operativo más complejo, se requiere estar checando en todo momento los procesos y sus recursos (PCB).

Algoritmos o Estrategias del turno de ejecución

Page 25: Apuntes B..

24

SISTEMAS OPERATIVOS

a) Por prioridad

Cada proceso tiene asociada una prioridad y el proceso ejecutable con máxima prioridad es el que tiene permiso de ejecución.

Si existen varios procesos de mayor prioridad que otros, pero entre ellos con la misma prioridad, pueden ejecutarse éstos de acuerdo a su orden de llegada u otro algoritmo de planificación.

Ventaja: Es flexible al permitir que ciertos procesos se ejecuten primero, e incluso, por más tiempo.

Desventajas: Puede provocar aplazamiento indefinido en los procesos de baja prioridad. Provoca que el sistema sea impredecible para los procesos de baja prioridad.

Por ejemplo, entran procesos al sistema con las siguientes prioridades:

b) El trabajo más corto primero

Se ejecutan primero aquellos trabajos que necesitan menos tiempo de ejecución, y de esta manera se obtiene el mejor tiempo de respuesta promedio para los procesos.

Ventaja: Se ejecuta un mayor número de procesos.

Desventaja: Es difícil llevar a cabo porque se requiere saber o tener una estimación de cuánto tiempo necesita el proceso para terminar.

Por ejemplo, entran procesos al sistema con los siguientes tiempos de ejecución, en la tercer columna se muestra el orden de ejecución de ejecución de los procesos.

Page 26: Apuntes B..

25

SISTEMAS OPERATIVOS

c) FIFO (primero en llegar, primero en ejecutarse)

Los procesos reciben su turno de ejecución conforme llegan.

Ventaja: Es justo y no provoca aplazamiento.

Desventajas: No aprovecha ninguna característica de los procesos. Puede no servir para un proceso de tiempo real.

Los procesos llegan al sistema y se van formando, en ese orden van pasando a ejecutarse.

d) Round Robin (RR)

Los procesos se despachan en FIFO, pero se les otorga una cantidad limitada de tiempo de CPU conocida como quantum o time slice.

Los procesos están ordenados en una cola circular.

Si un proceso no termina antes que expire su tiempo en CPU, se le quita la CPU y se asigna al siguiente proceso en espera.

El proceso que sale del CPU se coloca al final de la fila de procesos Listos.

Ventaja: es simple y justo. No provoca aplazamiento indefinido.

Los procesos llegan al sistema y se van formando, en ese orden van pasando a ejecutarse el tiempo que asigne el procesador; sale y pasa a ocupar un lugar al final de la fila de procesos.

e) Por política

Una forma de asignar el turno de ejecución es por política, en la cual se establece algún reglamento específico que el planificador debe obedecer.

Por ejemplo: “Que todos los procesos reciban el mismo tiempo de uso de CPU en cualquier momento”. Entonces, tenemos dos procesos que han pasado a CPU a ejecutarse, recibiendo un total de 20 unidades de tiempo cada uno, en intervalos de 5 unidades.

Page 27: Apuntes B..

26

SISTEMAS OPERATIVOS

Cuando el proceso 2 se estaba terminando de ejecutar y completa sus 20 unidades de tiempo, llega el proceso 3 y pasa al procesador.

Inmediatamente el CPU le da 20 unidades para ejecutarse, para que se cumpla la política, y después sigue asignando unidades de tiempo de 5.

Page 28: Apuntes B..

27

SISTEMAS OPERATIVOS

UNIDAD III

ADMINISTRACIÓN DE LA MEMORIA

3.1 Almacenamiento real

La organización y administración de la “memoria principal”, “memoria primaria” o “memoria real” de un sistema ha sido y es uno de los factores más importantes en el diseño de los sistemas operativos.

Los términos “memoria” y “almacenamiento” se consideran equivalentes. Los programas y datos deben estar en el almacenamiento principal para:

Poderlos ejecutar.

Referenciarlos directamente.

Se considera “almacenamiento secundario” o “almacenamiento auxiliar” al generalmente soportado en discos.

Los hechos demuestran que generalmente los programas crecen en requerimientos de memoria tan rápido como las memorias:

“Ley de Parkinson parafraseada”: Los programas se desarrollan para ocupar toda la memoria disponible para ellos.

La parte del S. O. que administra la memoria se llama “administrador de la memoria”, el cual:

- Lleva un registro de las partes de memoria que se están utilizando y de aquellas que no. - Asigna espacio en memoria a los procesos cuando estos la necesitan. - Libera espacio de memoria asignada a procesos que han terminado.

Organización y administración del almacenamiento

El almacenamiento principal, es un recurso relativamente caro, por lo que los diseñadores de sistemas operativos intentan optimizar su uso. En los últimos años ha disminuido su costo, pero sigue siendo más caro en relación con el almacenamiento secundario, y las aplicaciones actuales requieren cantidades mayores de almacenamiento principal.

La organización del almacenamiento es la forma de considerar el almacenamiento principal, bajo los siguientes esquemas de organización:

- sistemas de usuario único- multiprogramación con particiones fijas, con traducción y carga con reubicación- multiprogramación con particiones fijas, con traducción y carga absoluta- multiprogramación con particiones variables

Page 29: Apuntes B..

28

SISTEMAS OPERATIVOS

- sistemas de intercambio de almacenamiento

Sea cual sea el esquema de organización de la memoria que se adopte, hay que decidir qué estrategias de deben utilizar para obtener un rendimiento óptimo de la misma.

Las estrategias de administración del almacenamiento buscan obtener el mejor aprovechamiento y desempeño posible del caro recurso de almacenamiento principal. Se divide en las siguientes categorías:

1) Estrategias de obtención (¿Cuándo se toma un nuevo programa para colocarlo en memoria? ¿Se toma el programa cuando el sistema lo solicita o se anticipa?)

a) Estrategias de obtención por demanda

b) Estrategias de obtención anticipada

2) Estrategias de colocación (¿En qué lugar del almacenamiento se coloca el siguiente programa?)

3) Estrategias de reemplazo (¿Qué programas se deben reemplazar, los más antiguos, los menos usados?)

Jerarquía de almacenamiento

Por la década de los 50 y 60’s se contaba con una cantidad de memoria suficiente para el sistema operativo y para cierto número de usuarios. El objetivo era comprar mayor cantidad de almacenamiento para manejar adecuadamente cargas de usuario anticipadas dentro de las limitaciones económicas de esa época.

Los programas y datos necesitan estar en el almacenamiento principal para ser ejecutados o para poder hacer referencia de ellos.

Los programas o datos que no se necesitan de inmediato pueden guardarse en el almacenamiento secundario hasta que se necesiten, y en ese momento se transfieren al almacenamiento principal para ser ejecutados o hacer referencia a ellos.

Los sistemas con varios niveles de almacenamiento requieren destinar recursos para administrar el movimiento de programas y datos entre niveles

En la década de los 60’s se extiende un nivel más la jerarquía de almacenamiento, con una clara mejora del rendimiento y utilización.

La memoria caché o memoria de alta velocidad es mucho más rápida que el almacenamiento principal. La memoria caché es extremadamente cara, por lo que sólo se utilizan memorias caché relativamente pequeñas.

La memoria caché introduce un nivel adicional de transferencia de información en el sistema, los programas son traspasados de la memoria principal al caché antes de su ejecución.

Page 30: Apuntes B..

29

SISTEMAS OPERATIVOS

Los programas en la memoria caché se ejecutan mucho más rápido que en la memoria principal.

Al utilizar memoria caché se espera que la sobrecarga que supone el traspaso de programas de un nivel de memoria a otro sea mucho menor que la mejora en el rendimiento obtenida por la posibilidad de una ejecución mucho más rápida en la caché.

Estrategias de administración de memoria

Independientemente del esquema de organización hay que decidir las estrategias que se utilizarán para optimizar el rendimiento.

Las estrategias de administración de la memoria están dirigidas a la obtención del mejor uso posible del recurso del almacenamiento principal.

Las “estrategias de administración” deben considerar:

¿cuándo se consigue un nuevo programa para colocar en la memoria ?:

- ¿cuando el sistema lo pide específicamente o se intenta anticiparse a las peticiones ?.

¿dónde se colocará el programa que se ejecutará a continuación ?:

- ¿se prioriza el tiempo de carga o la optimización en el uso del almacenamiento ?.

¿con qué criterio se desplazarán programas ?.

1. Estrategias de obtención. Determinan cuando debe obtenerse la siguiente parte del programa o los datos que se van a transferir del almacenamiento secundario al principal.

Page 31: Apuntes B..

30

SISTEMAS OPERATIVOS

a. por demanda. La siguiente parte del programa o de los datos se transfiere al almacenamiento principal cuando un programa en ejecución hace referencia a ella. Es decir, el usuario solicita la información, hasta ese momento el sistema operativo lo carga en memoria.

b. por anticipado. El sistema operativo aplica funciones probabilísticas para colocar en memoria datos de programa que el usuario podría ocupar. El sistema operativo verifica el comportamiento del usuario, ahorrando tiempo en el acceso, pero desperdiciando espacio.

2. Estrategias de colocación. Tienen que ver con la determinación de la parte de almacenamiento principal donde se colocará un programa entrante.

3. Estrategias de reemplazo. Están relacionadas con la determinación de qué parte del programa o de los datos se debe desalojar para dejar espacio a los programas entrantes.

Asignación de memoria contigua y no contigua

Asignación de memoria contigua. Cada programa tiene que ocupar un único bloque contiguo y sencillo de localidades de memoria.

Asignación de memoria no contigua. Un programa se divide en varios bloques o segmentos que se pueden colocar en el almacenamiento principal, en fragmentos que no necesitan ser adyacentes, por lo que es más compleja pero más eficiente que la asignación contigua.

Page 32: Apuntes B..

31

SISTEMAS OPERATIVOS

Esquemas de Organización del Almacenamiento real

Por organización del almacenamiento se entiende la manera de considerar este almacenamiento:

- ¿se coloca un solo programa de usuario o varios?,

Si se encuentran varios programas de usuario:

o ¿se concede a cada uno la misma cantidad de espacio o se divide el almacenamiento en porciones o “particiones” de diferente tamaño?

o ¿se utilizará un esquema rígido de número y tamaño de particiones o un esquema dinámico y adaptable?

o ¿se requerirá que los trabajos de los usuarios sean diseñados para funcionar en una partición específica o se permitirá que se ejecuten en cualquiera donde quepan?

o ¿se requerirá o no que cada trabajo sea colocado en un bloque contiguo de memoria?

Para resolver estas cuestiones, el sistema operativo puede optar por cualquiera de los siguientes esquemas de organización:

1) Sistemas de usuario único

El usuario tiene un completo control sobre la totalidad del almacenamiento principal. El almacenamiento se divide en porciones que contienen el sistema operativo, el programa del usuario y una porción sin usar.

El programa del usuario podría destruir áreas del S. O. que podrían detener el sistema y producir salidas erróneas. Por ello, el sistema operativo debe estar protegido contra el proceso del usuario por medio de una “registro de límites” incorporado a la cpu, el cual contiene la dirección de la instrucción más utilizada por el sistema operativo, y si se intenta ingresar al sistema operativo la instrucción es interceptada y el proceso finaliza.

Los sistemas de un solo usuario se dedican a un trabajo durante más tiempo del que toma su ejecución. Los trabajos requieren de: “tiempo de instalación”, que es el necesario para preparar el entorno operativo requerido, y de “tiempo de descarga”: el necesario para desmontar el entorno operativo que fue requerido.

Durante la instalación y descarga de los trabajos, a cpu no está ejecutando dichos trabajos requeridos, por lo cual, automatizar la “transición de trabajo a trabajo” reduce la cantidad de tiempo perdido entre trabajos.

Page 33: Apuntes B..

32

SISTEMAS OPERATIVOS

2) Multiprogramación con particiones fijas

Para aprovechar al máximo la multiprogramación, donde varios procesos compiten al mismo tiempo por varios recursos, es necesario que varios trabajos residan al mismo tiempo en el almacenamiento principal del sistema. La multiprogramación con particiones fijas permite el almacenamiento de programas en espacios de memoria perfectamente definidos (bloques de memoria de tamaño fijo).

Con traducción y cargas absolutas. Utilizada en los primeros sistemas de multiprogramación. En cada partición puede haber un solo trabajo. Los trabajos se traducían con compiladores y ensambladores absolutos para ejecutarse solo en una partición específica.

- S.O. decide cuantas particiones hacer en memoria.

- Si un programa estaba listo para ser ejecutado y su partición estaba ocupada, tendría que esperar aunque otras estuvieran libres.

- Provoca un desperdicio de espacio de almacenamiento.

- Dentro de cada partición el sistema operativo asigna la información de modo contiguo o no contiguo.

- Los programas se cargan en una sola participación (para programas muy grandes se requerían particiones muy grandes)

- Un programa no puede utilizar el espacio libre de otra partición.

Con traducción y carga con reubicación. Los compiladores, ensambladores y cargadores con reubicación sirven para producir programas reubicables que se pueden ejecutar en cualquier partición disponible que sea lo bastante grande para contenerlos.

Page 34: Apuntes B..

33

SISTEMAS OPERATIVOS

- Hay una fila única de programas, el S.O. determina las particiones de memoria.

- Los programas pasan a las particiones, la que se encuentre libre.

- Dentro de cada partición la información se guarda de modo contiguo o no contiguo.

- No hay fragmentación de una partición a otra.

- Los programas no están esclavizados a una sola partición.

- No se puede pasar de una partición a otra.

3) Multiprogramación con particiones variables

La multiprogramación con particiones fijas presenta algunos problemas: desperdicio de memoria, desperdicio de tiempo, programas sin ejecutar.

La multiprogramación con particiones variables permite que los trabajos ocupen tanto espacio como necesiten (menor que la totalidad del área de almacenamiento real). En este esquema, no se imponen límites fijos, sino que se da a los trabajos todo el almacenamiento que requieren.

No existe un tamaño fijo de bloque. El espacio que ocupa el programa es el que se le asigna. El sistema operativo tiene la opción de manejar la asignación contigua o no contigua.

- La partición de un proceso es exactamente su tamaño, no hay desperdicio de memoria.- Hay continuidad en la información.- Si la asignación es No contigua, aumenta el tiempo de acceso.- Un programa muy grande puede monopolizar la memoria.

Combinación o condensación de huecos. Proceso de fusionar huecos adyacentes para formar un solo hueco más grande.

Cuando un trabajo termina, el sistema operativo trata de unir todos los espacios libres en uno solo, para tener un espacio suficiente para que pueda entrar otro programa en memoria.

Se utiliza con la finalidad de tener bloques de memoria más grandes que permitan que la información quede contigua. La velocidad de acceso es mayor.

Page 35: Apuntes B..

34

SISTEMAS OPERATIVOS

Compresión o compactación de almacenamiento. Puede ocurrir que las áreas libres o huecos separados distribuidos por todo el almacenamiento principal constituyan una cantidad importante de memoria, la cual podría ser suficiente (el total global disponible) para alojar a procesos encolados en espera de memoria y podría no ser suficiente ningún área libre individual.

La técnica de compresión de memoria, llamada “Recogida de residuos” implica pasar todas las áreas ocupadas del almacenamiento a uno de los extremos de la memoria principal, para dejar un solo agujero grande de memoria libre contigua.

Algunas desventajas de esta técnica de compresión: 1) Consume recursos del sistema, 2) El sistema debe detener todo mientras efectúa la compresión, lo que puede afectar los tiempos de respuesta, y 3) Implica la relocalización (reubicación) de los procesos que se encuentran en la memoria.

Una alta carga de trabajo significa mayor frecuencia de compresión que incrementa el uso de recursos.

4) Multiprogramación con intercambio de almacenamiento

El inconveniente de la multiprogramación con particiones fijas y con particiones variables es que los programas permanecen en memoria hasta que se completan.

La multiprogramación también se puede llevar a la práctica utilizando el intercambio con un solo usuario a la vez en el almacenamiento principal.

1. Solamente un usuario a la vez está en el almacenamiento principal (área de intercambio)

2. El programa se ejecuta hasta que: se obtiene la entrada/salida, se termina su tiempo, termina voluntariamente o sucede un evento extraordinario

3. El área de intercambio para ese usuario se copia al almacenamiento secundario

4. Se transfiere la imagen del almacenamiento principal del siguiente usuario al área de intercambio (se intercambia con el de adentro), y el usuario ejecuta hasta que se intercambia con el de afuera y se carga el siguiente usuario (se intercambia con el de adentro), etc.

Page 36: Apuntes B..

35

SISTEMAS OPERATIVOS

3.2 Organización del almacenamiento virtual

El almacenamiento virtual suele asociarse con la capacidad para obtener acceso a direcciones en un espacio de almacenamiento mucho mayor que el disponible en el almacenamiento primario.

Almacenamiento virtual significa la capacidad de direccionar un espacio de almacenamiento mucho mayor que el disponible en el almacenamiento primario de determinado sistema de computación.

La necesidad de manejar memoria virtual crece dado que el tamaño de la memoria real estaba limitado, los programas eran cada vez más grandes y los procesadores tenían mayor potencia.

Las direcciones generadas por los programas en su ejecución no son, necesariamente, aquellas contenidas en el almacenamiento primario (memoria real), ya que las direcciones virtuales suelen seleccionarse dentro de un número mucho mayor de direcciones que las disponibles dentro del almacenamiento primario.

Evolución de la organización del almacenamiento

La memoria virtual maneja a mayor espacio en memoria que la memoria principal,valiéndose tanto de la memoria en el almacenamiento principal como de una cantidad determinada de almacenamiento secundario.

En la memoria principal el sistema operativo intercambia programas o procesos enteros en particiones de memoria. En la memoria virtual el sistema operativo maneja segmentos y páginas, entre la memoria real y los dispositivos secundarios.

La clave del concepto de memoria (almacenamiento) virtual está en la disociación:

De las direcciones a las que hace referencia un programa.

Page 37: Apuntes B..

36

SISTEMAS OPERATIVOS

De las direcciones disponibles en la memoria real (almacenamiento primario).

Los principales conceptos son los siguientes:

“Direcciones virtuales”: Son las referidas por un proceso en ejecución.

“Direcciones reales”: Son las disponibles dentro del almacenamiento primario.

“Espacio de direcciones virtuales (v)” de un proceso: Es el número de direcciones virtuales a que puede hacer referencia el proceso.

“Espacio de direcciones reales (r)” de un computador: Es el número de direcciones reales disponibles en el ordenador.

Los procesos hacen referencia a direcciones virtuales pero éstas deben ejecutarse en el almacenamiento real:

Las direcciones virtuales deben ser transformadas dentro de las direcciones reales, mientras el proceso está en ejecución.

La traducción de direcciones deberá hacerse rápidamente para no degradar al sistema.

Métodos de implementación de memoria virtual

Los métodos más comunes de implementación son mediante:

Técnicas de “paginación”. Técnicas de “segmentación”. Una combinación de ambas técnicas.

a) Paginación pura

Se refiere al manejo de bloques de tamaño fijo en la memoria virtual y la conversión de éstas páginas a memoria real.

Page 38: Apuntes B..

37

SISTEMAS OPERATIVOS

Para tal conversión, el sistema operativo requiere de 2 elementos: número de página y desplazamiento de la página.

Un proceso puede ejecutarse si su página actual está en el almacenamiento primario. Las páginas se transfieren del almacenamiento virtual al primario en bloques llamados marcos de páginas que tienen el mismo tamaño que las páginas.

Sí hay combinación de huecos dentro de las páginas. El tamaño de página en memoria virtual no es el mismo espacio que en memoria real. Más de una localidad virtual corresponden a una localidad real.

Tabla de Descriptores . Registro en el que el sistema operativo identifica de qué localidad a qué localidad está ubicada cada página.

-Se tiene una organización más completa en el manejo de memoria.

- Si se llena una página, el sistema operativo puede enviar la información a otra página, no necesariamente a la página siguiente.

- Dentro de una página se puede administrar de manera contigua o no contigua.

- Dentro de una página hay N número de programas, por lo que el grado de complejidad es mayor.

- Se pierde tiempo al hacer las conversiones (cada L/E en memoria virtual requiere de conversiones)

b) Segmentación pura

Se refiere al manejo de bloques de tamaño variable en memoria virtual y la conversión de estos segmentos a memoria real.

Se utilizan dos conceptos para tal conversión: número de segmento y desplazamiento dentro del segmento.

El tamaño de los segmentos y el tipo de información de ese segmento lo determinan las políticas del sistema operativo, como por ejemplo:

a) que un solo segmento lo ocupe una sola aplicación.

Page 39: Apuntes B..

38

SISTEMAS OPERATIVOS

b) que el segmento vaya creciendo según las necesidades del programa (recorriendo los demás segmentos, particionando el segmento que va creciendo).

c) que una segmento sea compartido por varios programas.

c) Sistemas de paginación/segmentación

La paginación y la segmentación puras son métodos de manejo de memoria virtual muy efectivos; aunque, la mayoría de los sistemas operativos modernos implantan esquemas combinados, es decir, combinan la paginación (páginas de tamaño fijo) y la segmentación (segmentos de tamaño variable), en “Segmentos paginados”, donde las páginas exigen un tamaño fijo y los segmentos no tienen un número fijo de páginas.

Tales sistemas ofrecen ventajas de ambas técnicas de organización de almacenamiento virtual. Los segmentos tienen, por lo general, un tamaño múltiplo de páginas; no es necesario que todas las páginas de un segmento estén en el almacenamiento primario a la vez, y las páginas que son contiguas en el almacenamiento virtual no son por fuerza contiguas en el almacenamiento real.

VENTAJA. No desperdicia espacios pequeños en memoria real.

DESVENTAJAS. Tiempo de acceso mayor. Proceso de conversión más complejo.

3.3 Administración del almacenamiento virtual

Estrategias de administración del almacenamiento virtual

Las estrategias para la administración de sistemas de almacenamiento virtual condicionan la conducta de los sistemas de almacenamiento virtual que operan según esas estrategias.

1. Estrategias de obtención. Determinan cuándo se debe transferir una página o un segmento del almacenamiento secundario al almacenamiento real.

a. por demanda. Esperan a que un proceso en ejecución haga referencia a una página o segmento antes de traer la página o segmento al almacenamiento primario.

CUÁNDO?

Page 40: Apuntes B..

39

SISTEMAS OPERATIVOS

Este método garantiza que las únicas páginas traídas del almacenamiento principal sean las que en realidad necesita el proceso. La sobrecarga implicada en la decisión de qué páginas traer a almacenamiento principal es mínima.

VENTAJA. No se cargan páginas equivocadas, solo se cargan las páginas requeridas.DESVENTAJA. Espera el proceso en la transferencia de páginas.

b. por anticipado. Intentan determinar por adelantado a cuáles páginas o segmentos hará referencia un proceso.

Hoy día, los diseñadores de sistemas operativos se centran en los métodos para reducir la cantidad de tiempo que la gente debe esperar para recibir los resultados de un computador. La técnica de paginación anticipada promete dar buenos resultados y se denomina a veces “prepaginación”.

En la paginación anticipada, el sistema operativo intenta predecir cuáles páginas necesitará un proceso y entonces carga dichas páginas cuando hay espacio disponible. Si se toman decisiones correctas, se puede reducir considerablemente el tiempo de ejecución total del proceso. Mientras el proceso se ejecuta con sus páginas actuales, el sistema carga nuevas páginas, que estarán disponibles cuando las requiera el proceso.

NOTA: Si la probabilidad de una referencia es alta y hay espacio disponibles, entonces se trae al almacenamiento primario la página o el segmento antes de que se haga la referencia explícita.

2. Estrategias de colocación. Determinan en qué lugar del almacenamiento primario se debe colocar una página o segmento entrante.

NOTA: Esto es trivial, porque una página o segmento entrante se puede ubicar en cualquier marco de página disponible.

3. Estrategias de reemplazo. Sirven para decidir cuál página o segmento se debe desplazar para dejar espacio a una página o segmento entrante cuando está completamente ocupado el almacenamiento primario.

NOTA: Al reemplazar un segmento o página se va con todos sus programas.

Técnicas de reemplazo de página

En los sistemas con paginación es común que estén en uso todos los marcos de página. En este caso, las rutinas de administración de almacenamiento del sistema operativo deben decidir qué página del almacenamiento se debe desplazar para dejar espacio a una página entrante.

Page 41: Apuntes B..

40

SISTEMAS OPERATIVOS

a. Reposición de páginas al azar. Todas las páginas de almacenamiento principal deben tener la misma probabilidad de ser reemplazadas.

b. Primero en entrar, primero en salir. Se escoge aquella que ha estado más tiempo almacenada.

c. Página menos recientemente usada. Selecciona para ser reemplazada la página que no ha sido usada durante el mayor periodo de tiempo.

d. Página menos frecuentemente usada. La página que será reemplazada es aquella que ha sido usada con menos frecuencia o que ha sido referida con menos intensidad.

e. Página no usada recientemente. Las páginas que no han tenido uso reciente, tienen poca probabilidad de ser usadas en un futuro próximo y pueden ser reemplazadas por otras nuevas.

Liberación de página

En una administración del almacenamiento mediante conjuntos de trabajo, los programas indican por referencia explícita cuáles páginas desean utilizar.

Los programas que ya no requieran páginas específicas deberán desechar tales páginas de sus conjuntos de trabajo. Por lo regular, hay un tiempo durante el cual permanecen en el almacenamiento principal las paginas que ya no se requieren.

Cuando es evidente que ya no será necesaria una página, un usuario podría dar una orden de liberación voluntaria de página para liberar el marco de página.

Tamaño de páginas

Un punto importante a considerar en la administración del almacenamiento virtual es el tamaño que deben tener las páginas. Problemas como si el tamaño de las páginas en el sistema deben ser siempre el mismo, o si los tamaños más grandes deben ser múltiplos enteros de los tamaños menores de página, no tienen respuestas universales. No existe una necesidad imperiosa de que todos los sistemas tengan el mismo tamaño de página o en ese caso, un tamaño de página único.

Factores que determinan si una página debe ser grande o pequeña:

Page 42: Apuntes B..

41

SISTEMAS OPERATIVOS

Cuanto menor sea el tamaño de la página, más páginas y marcos de página habrá y mayores tendrán que ser las tablas de páginas.

Con tamaños de páginas grandes, se paginan en el almacenamiento primario grandes cantidades de información a la que quizá nunca se haga referencia.

Dado que las transferencias de entrada/salida desde el disco son relativamente lentas, se desea reducir al mínimo el número de transferencias a que se someta un programa a medida que se ejecuta.

Debido a que las unidades de procedimientos y datos rara vez comprenden un número entero de páginas, los sistemas con paginación experimentan fragmentación interna.

UNIDAD IV

ADMINISTRACIÓN DE DISPOSITIVOS DE ENTRADA/SALIDA

4.1 Dispositivos de entrada/salida

Quizá el aspecto más confuso en el diseño de los sistemas operativos sea la entrada y salida. Dada la amplia variedad de dispositivos y aplicaciones de esos dispositivos, resulta difícil desarrollar una solución general y consistente.

Los dispositivos externos que tienen que hacer funcionar la E/S en los sistemas informáticos pueden clasificarse básicamente en tres categorías:

Dispositivos legibles por los humanos: apropiados para la comunicación con el usuario. Por ejemplo se pueden incluir los terminales de video, que constan de un teclado, una pantalla y, quizás, otros dispositivos como un ratón o una impresora.

Dispositivos legibles por la máquina: adecuados para comunicarse con equipos electrónicos, como discos, unidades de cinta, sensores, controladores e impulsores.

Dispositivos de comunicaciones: apropiados para comunicarse con dispositivos lejanos. Por ejemplo, adaptadores de líneas digitales y módem.

Diferencias entre dispositivos

Page 43: Apuntes B..

42

SISTEMAS OPERATIVOS

Existen grandes diferencias entre las clases de dispositivos y éstas son sustanciales dentro de cada clase.

a) Velocidad de los datos. Puede haber una diferencia de varios órdenes de magnitud en las velocidades de transmisión de datos.

b) Aplicaciones. La utilidad que se le da a un dispositivo tiene una gran influencia en el software y en las políticas del sistema operativo y de apoyo. Por ejemplo, un disco que almacena archivos necesita el soporte de un software de gestión de archivos. En cambio, un disco usado como almacén de páginas de un sistema de memoria virtual dependerá del uso que se haga del hardware y el software de memoria virtual.

El uso que se le dé exige niveles de privilegio y prioridades, por ejemplo, el uso que se le da al CPU.

c) Complejidad del control. Una impresora necesita una interfaz de control relativamente simple. Un disco es mucho más complejo. La lógica del módulo de E/S que controla el dispositivo filtra el efecto de estas diferencias sobre el sistema operativo.

d) Unidad de transferencia. Los datos pueden transmitirse como flujos de bytes o caracteres o en bloques mayores. Por ejemplo, dispositivos de entrada/salida a terminal, dispositivo de entrada/salida a disco.

e) Representación de los datos. En diferentes dispositivos se emplean diferentes esquemas de codificación de datos, incluidas las diferencias en los códigos de caracteres.

f) Condiciones de error. La naturaleza de los errores, la manera en que se informa sobre ellos, sus consecuencias y el rango disponible de respuestas difieren ampliamente de un dispositivo a otro.

4.2 Funciones de la entrada/salida

A medida que los sistemas informáticos han evolucionado, se ha producido una tendencia creciente en la complejidad y satisfacción de cada componente individual. En ningún punto es más evidente que en la función de entrada/salida.

Las etapas de su evolución pueden resumirse como sigue:

1. El procesador controla directamente los dispositivos periféricos.

Page 44: Apuntes B..

43

SISTEMAS OPERATIVOS

2. Se añade un controlador o módulo de entrada/salida programada sin interrupciones. El CPU se aisla de los detalles específicos de las interfaces en dispositivos externos.

3. Se emplean interrupciones. Ahora el procesador no tiene que desperdiciar tiempo esperando a que se realice una operación de entrada/salida, incrementando así la eficiencia.

4. El módulo de entrada/salida recibe el control directo de la memoria a través de DMA (Direct Access Memory). Ahora puede mover un bloque de datos de la memoria o desde la misma sin que intervenga el procesador, excepto al principio y al final de la transferencia.

5. Se mejora el módulo de entrada/salida hasta llegar a ser un procesador separado con un conjunto de instrucciones especializadas para entrada/salida. El CPU ordena al procesador de entrada/salida la ejecución de un programa de E/S en la memoria principal. El procesador de entrada/salida lee y ejecuta estas instrucciones sin intervención del procesador. Esto permite al procesador especificar una secuencia de actividades de e/s e interrumpirla sólo cuando haya terminado la secuencia entera.

6. El módulo de entrada/salida posee su propia memoria local y es, de hecho, un computador independiente. Con esta arquitectura se pueden controlar un gran número de dispositivos de entrada/salida, con una participación mínima del procesador.

A medida que se sigue en esta evolución, una mayor parte de las funciones de entrada/salida se realiza sin la participación del procesador. El procesador central se ve liberado cada vez más de las tareas relacionadas con la entrada/salida, mejorando así el rendimiento.

Objetivos del diseño del servicio de E/S

1) Eficiencia. Es importante porque las operaciones de entrada/salida constituyen a menudo un cuello de botella en los sistemas informáticos. La mayoría de los dispositivos de E/S son extremadamente lentos en comparación con la memoria principal y el procesador. (ver figura de la hoja 1).

Una manera de abordar este problema es el uso de la multiprogramación que permite que algunos procesos esperen en operaciones de entrada/salida mientras otro proceso se está ejecutando.

2) Generalidad. En interés de la simplicidad y la exención de errores, será deseable gestionar todos los dispositivos de manera uniforme. Esta afirmación se aplica tanto a la manera en que los procesos contemplan a los dispositivos de E/S como a la forma en que el sistema operativo gestiona los dispositivos de E/S y las operaciones.

4.3 Planificación de discos

En los últimos 30 años, el crecimiento en la velocidad de los procesadores y la memoria principal ha dejado muy atrás el de los accesos al disco.

La velocidad del procesador y la memoria se va incrementando en dos órdenes de magnitud con respecto al disco. El resultado es que, actualmente, los discos son por lo menos cuatro veces más

Page 45: Apuntes B..

44

SISTEMAS OPERATIVOS

lentos que la memoria principal. De este modo, el rendimiento de los subsistemas de almacenamiento en disco es de una importancia vital y se han realizado muchas investigaciones sobre maneras de mejorar dicho rendimiento.

Parámetros de rendimiento del disco

Los detalles reales de las operaciones de E/S con los discos dependen de los sistemas informáticos, el sistema operativo y la naturaleza del canal de E/S y el hardware controlador del disco.

El siguiente es un típico diagrama de tiempos de la E/S a disco.

Cuando la unidad de disco está operando, el disco gira a una velocidad constante. Para leer o escribir la cabeza debe ponerse en la pista deseada, al comienzo del sector pertinente. Si el sistema es de cabezas móviles, hay que mover la cabeza para elegir la pista. Si el sistema es de cabezas fijas, habrá que seleccionar electrónicamente una de ellas. En un sistema de cabezas móviles, el tiempo que se tarda en ubicar la cabeza en la pista se llama tiempo de búsqueda. En cualquier caso, una vez que se ha seleccionado la pista, el controlador del disco esperará hasta que el sector apropiado se alinee con la cabeza en su rotación. El tiempo que tarda el comienzo del sector en llegar hasta la cabeza se conoce como retardo de giro, o latencia de giro. La suma del tiempo de búsqueda y el retardo de giro es el tiempo de acceso, es decir, el tiempo que se tarda en llegar a la posición de lectura o escritura. Una vez que la cabeza está ubicada, se puede llevar a cabo la operación de lectura o escritura a medida que el sector se mueve bajo la cabeza; esta es la parte de transferencia real de datos de la operación.

Además del tiempo de acceso y del tiempo de transferencia, existen algunos retrasos en las colas que normalmente tienen asociadas una operación de E/S a disco. Cuando un proceso emite una solicitud de E/S, primero debe esperar en una cola a que el dispositivo esté disponible. En ese momento, el dispositivo queda asignado al proceso. Si el dispositivo comparte un único canal de E/S o un conjunto de canales con otras unidades del disco, puede producirse una espera adicional hasta que el canal esté disponible. En ese punto se realizará la búsqueda con que comienza el acceso al disco.

4.4 Acceso Directo a Memoria

Puesto que la mayoría de los datos que maneja el ordenador están antes o después en la memoria RAM, los intercambios entre esta y el resto de elementos son muy frecuentes.  En general este intercambio es conducido por el procesador, pero si se consigue que en determinados casos, la memoria pueda intercambiar datos con otro periférico sin intervención del procesador (por ejemplo un disco o una tarjeta de sonido), se conseguirá un incremento sustancial en el rendimiento del sistema, porque el procesador quedará libre para otras tareas.

El acceso directo a memoria se inventó con el propósito de liberar al CPU de la carga de atender a algunos controladores de dispositivos. Incrementa la velocidad de acceso a los dispositivos y envía información en menos tiempo.

Page 46: Apuntes B..

45

SISTEMAS OPERATIVOS

El Acceso Directo a Memoria (DMA) es un método rápido para transferir datos de forma directa de un dispositivo periférico a la memoria del sistema por medio de circuitería especializada o un microprocesador exclusivo, sin pasar por el procesador central.

Controlador de dispositivo o adaptador. Es la parte electrónica de los periféricos, la cual puede tener la forma de una tarjeta o un circuito integrado a la tarjeta madre de la computadora.

El ADM o DMA es la técnica de transferencia de información/datos que desconecta al proceso durante tal transferencia y deja que el dispositivo periférico maneje la transferencia directamente a la memoria, mejorando la velocidad de la transferencia y haciendo el sistema más eficiente.

4.5 Dispositivos de almacenamiento en disco

Denominamos dispositivos periféricos tanto a unidades a través de las cuales el ordenador se comunica al mundo exterior, como a los sistemas que almacenan o archivan la información, sirviendo de memoria auxiliar de la memoria principal.

Las principales características de estos dispositivos periféricos o unidades de almacenamiento:

a. Gran capacidad de almacenamientob. No se pierde la información al apagarse la computadora, es decir no es volátil.c. Altas velocidades de transferencia de información.d. La información se almacena en el mismo formato como se hace en la memoria principal.e. Para ser procesador por el CPU, los datos se almacenan en la memoria secundaria y luego se

llevan a la memoria principal.

Algunos dispositivos de almacenamiento en disco pueden ser:

Floppy Disco duro Disco duro removible CD-ROM

Page 47: Apuntes B..

46

SISTEMAS OPERATIVOS

CD-R Cintas magnéticas CD-RW DVD Disco magnético-óptico Flash memory Memory Stick Blu-Ray

UNIDAD V

GESTION DE ARCHIVOS

5.1 Archivos y definiciones

Archivos .

Conjunto de datos al cual se le asigna un nombre.

Mecanismo de abstracción que permite almacenar información en un disco y volver a leerla más adelante.

Sistema de Gestión de Archivos

Es aquel conjunto de software del sistema que ofrece a los usuarios y aplicaciones, servicios relativos al empleo de archivos.

La única forma en que un usuario o aplicación puede acceder a los archivos es mediante el Sistema de Gestión de Archivos (File System).

Esto releva al usuario o programador de la necesidad de desarrollar software de propósito específico para cada aplicación y proporciona al sistema un medio de controlar su ventaja más importante.

Objetivos del diseño de un sistema de Gestión de Archivos

Cumplir con las necesidades de gestión de datos y con los requerimientos del usuario.

Page 48: Apuntes B..

47

SISTEMAS OPERATIVOS

Garantizar que los datos de los archivos sean válidos. Optimizar el rendimiento. Ofrecer soporte de entrada/salida para la variedad de tipos de dispositivos de almacenamiento,

y en sistema multiusuarios a los múltiples usuarios. Minimizar o eliminar la posibilidad de pérdida o destrucción de datos. Ofrecer un conjunto estándar de rutinas de interfaz de entrada/salida. Proporcionar soporte de entrada/salida para múltiples usuarios.

Con respecto al primer punto, el cumplimiento de los requisitos del usuario, el alcance de dichos requisitos depende de la variedad de aplicaciones y el entorno en que el sistema va a utilizarse.

En sistemas interactivos de propósito general, deben cumplirse los siguientes requisitos mínimos:

1) Cada usuario debe ser capaz de crear, borrar y cambiar los archivos.2) Cada usuario puede tener acceso controlado a los archivos de los otros usuarios.3) Cada usuario puede controlar qué tipos de acceso estarán permitidos a sus archivos.4) Cada usuario debe poder reestructurar sus archivos de manera adecuada al problema.5) Cada usuario debe ser capaz de mover datos entre los archivos.6) Cada usuario debe ser capaz de guardar una copia de reserva y recuperar sus archivos en el

caso de que hayan sufrido algún daño.7) Cada usuario debe ser capaz de acceder a sus archivos mediante un nombre simbólico.

Estos objetivos y requerimientos deben tenerse en cuenta en todo nuestro estudio de los sistemas de gestión de archivos.

5.2 Jerarquía de datos

El almacenamiento de datos sigue una jerarquía lineal, comenzando con la porción más pequeña y terminando con la más grande.

1. Bits (0’s y 1’s). Unidad básica de almacenamiento.

2. Patrones de bits. Conjunto de bits que representan datos de interés para un sistema de computo. Existen 2n patrones de bits.

3. Bytes o caracteres. Patrones de bits de longitud fija. Bytes de 8 bits. 28 o 256 caracteres.

4. Conjunto de caracteres. Igual llamado código. ASCII (American Standard Code for Information Interchage). EBCDIC (Extended Binary Coded Decimal Interchange Code)

Cuando se habla de archivos, habitualmente se utilizan cuatro términos:

5. Campo. Es el elemento de datos básico. Es un grupo de caracteres. Atributos de información con respecto a una entidad. Un campo individual contiene un valor único, como el apellido de un empleado, una fecha, un nombre, o el valor leído por un sensor.

6. Registro. Es un conjunto de campos relacionados que pueden tratarse como una unidad en algunos programas de aplicación. Por ejemplo, un registro “empleado” contendrá campos tales como nombre, dirección, número de seguridad social, clasificación del trabajo, fecha de contratación, etc.

7. Archivo. Es un conjunto de registros similares. Los usuarios y las aplicaciones tratan al archivo como una entidad única y se refieren a él por un nombre. Los archivos tienen nombres únicos y pueden crearse y borrarse. Las restricciones al control de accesos suelen aplicarse a los archivos. Es decir, es un sistema compartido, el acceso de los usuarios y los programas se garantiza o deniega

Page 49: Apuntes B..

48

SISTEMAS OPERATIVOS

a archivos completos. En sistemas más sofisticados dicho control se aplica a los registros o incluso a los campos. Por ejemplo, el arcjivo de empleados de x compañía.

8. Bases de datos. Nivel más alto de la jerarquía. Es un conjunto de archivos o datos relacionados. Consta de una o más clases de archivos, las relaciones que existen entre los elementos de datos son explícitas y las BD’s están diseñadas para ser usadas por varias aplicaciones.

5.3 Funciones de la gestión de archivos

Debe ser capaz de rastrear toda la información en los archivos de un disco (cuando se borró, se escribió, se modificó, etc.)

Debe ser capaz de proteger a los archivos mediante sus atributos (lectura, escritura, ejecución, ocultos, privados, públicos, compartidos)

Debe ser capaz de asignar y desasignar espacio en discos.

Establecer correlaciones físicas y lógicas entre archivos.

5.4 FAT

El Sistema de Archivos para llevar a cabo sus funciones de administrador de archivos lo hace a través del FAT (File Allocation Table) y el Bloque de Control de Archivos.

FAT . File Allocation Table. Registro que contiene la información de todo el espacio en disco en el dispositivo; permite localizar la información en un disco, espacios vacíos para escritura, etc.

Conoce cuántos bloques de bytes están disponibles en el disco, cuánto espacio está ocupado. El Sistema de Archivos crea la FAT, y está guardada en el disco.

5.5 Bloque de Control de Archivos

Para administrar los archivos, el Sistema de Archivos requiere saber la información más importante de estos.

Bloque de Control de Archivos o Descriptor de Archivos .

Es una estructura de datos con la información que el sistema necesita para administrar los archivos; incluye la información más importante acerca de un archivo como:

Nombre simbólico del archivo Localización el archivo en el almacenamiento secundario Tipo de dispositivo Tipo de archivo (de datos, programa objeto, programa fuente, imagen, sonido, video, mp3) Tratamiento (permanente, temporal) Fecha y hora de creación Fecha de destrucción Fecha y hora de la última modificación Conteo de la actividad de acceso

5.6 Seguridad

Con la introducción de la computadora, se hizo más evidente la necesidad de herramientas automatizadas para proteger archivos y otra información almacenada en las computadoras.

El nombre genérico para la descripción de herramientas diseñadas con el fin de proteger datos y desalentar los hurtos es Seguridad de computadoras.

Page 50: Apuntes B..

49

SISTEMAS OPERATIVOS

Requisitos de seguridad

a) Secreto. Accesible para la lectura solo por las partes autorizadas.b) Integridad. Pueden modificarlo solo las partes autorizadas.c) Disponibilidad. Disponible para las partes autorizadas.

Tipos de amenazas

Al existir un flujo de información desde una fuente (un archivo o un renglón de la memoria principal) a un destino (otro archivo o usuario), se puede presentar alguna de las siguientes amenazas:

Interrupción. Una parte del contenido del sistema se destruye, se torna inutilizable (disponibilidad).

Intercepción. Una parte no autorizada consigue acceder al contenido del sistema (secreto). Modificación. Una parte no autorizada no solo consigue acceder sino que altera en forma

indebida una parte del contenido del sistema (integridad). Fabricación. Una parte no autorizada inserta objetos falsificados en el sistema (integridad).

Causas más comunes en la pérdida de datos

Siniestros: incendios, terremotos, guerras, roedores, inundaciones, etc. Errores de hw o sw: mal funcionamiento de cpu, discos dañados, errores de telecomunicación,

errores de programa, etc. Errores humanos: entrada incorrecta de datos, mal manejo de discos, ejecución incorrecta del

programa, etc.

Amenazas relacionadas con programas

Las amenazas a la seguridad más sofisticadas están representadas por programas que explotan las debilidades en los sistemas computacionales.

Los programas pueden contener dos clases de amenazas:

1. Amenazas de acceso a la información

2. Amenazas al servicios

1. Amenazas de acceso a la información

Estas interpretan o modifican datos a favor de usuarios que no deben tener acceso a ellos.

Entre estas amenazas encontramos las siguientes:

a) Trampa. Punto no documentado secreto en un programa.

b) Caballo de Troya: Rutina no documentada secreta intercalada dentro de un programa útil.

c) Canales secretos: Un medio oculto para permitir a un programa comunicar información.

2. Amenazas al servicio

Explotan defectos de servicio en las computadoras para inhibir el uso por legítimos usuarios.. En estas podemos encontrar las siguientes:

a) Virus: Código en un programa que hace que una copia del mismo se inserte en uno o varios otros programas. Además de la propagación, el virus ejecuta alguna función no deseada.

b) Gusano: Programa que puede viajar de computadora a computadora por conexiones de red, el cual puede contener un virus o una bacteria.

c) Bacteria: Programa que consume recursos del sistema haciendo réplicas de sí mismo.

Page 51: Apuntes B..

50

SISTEMAS OPERATIVOS

5.7 Panorama actual de las vulnerabilidades de software y las amenazas.

http://www.symantec.com/region/mx/enterprisesecurity/content/expert/LAM_4464.html

El lenguaje que utilizamos y la forma de pensar sobre los códigos maliciosos han cambiado significativamente en los últimos años. Las actuales amenazas de códigos maliciosos son generalmente sinónimo de vulnerabilidades de software y viceversa. Si analizamos el panorama actual de las amenazas entenderemos por qué.

Durante los últimos cuatro o cinco años hemos visto un aumento constante en el número de nuevas vulnerabilidades que se informan al pasar de un promedio de 10 semanales en el año de 1999 a 51 en el año 2003. La cifra no está aumentando simplemente porque estemos viendo más productos llenos de fallos, sino por dos razones principales:

Una actitud de divulgación mayor de la información.

Mayor concienciación sobre las vulnerabilidades y mayores esfuerzos por encontrarlas.

Es una espada de doble filo. Aunque tenemos más información disponible para proteger nuestras redes, los atacantes también tienen mayor información a su alcance para lanzar ataques.

Tendencias de las vulnerabilidades

Veamos detalladamente estas vulnerabilidades. Cerca de un 80% de las vulnerabilidades publicadas en el año 2003 fueron clasificadas como blancos de ataques remotos, sin que se presentara prácticamente ninguna variación frente al 81% en el año 2002. Esto es importante porque las vulnerabilidades que son consideradas blancos de ataques remotos casi siempre son clasificadas por lo menos bajo la categoría de moderadamente graves. ¿Por qué? Porque el componente vulnerable puede estar al alcance de un número mayor de atacantes lo que convierte a la vulnerabilidad en algo más que una amenaza.

Los investigadores de la seguridad buscan cada vez más vulnerabilidades que se puedan aprovechar de manera remota debido al gran número de blancos a los que pueden acceder las redes interconectadas. Además, las aplicaciones tienen más funcionalidades de red y, por consiguiente, las vulnerabilidades que están expuestas a ataques remotos siguen obviamente el ejemplo.

Muchas vulnerabilidades también afectan a las aplicaciones Web, lo que favorece la tendencia de vulnerabilidades cada vez más graves. Por ejemplo:

Se produjeron 54 vulnerabilidades en Internet Explorer en el año 2003.

En el transcurso del año 2004 se han documentado 43 vulnerabilidades en Internet Explorer.

Muchas de estas vulnerabilidades se encuentran sin parches por largos periodos de tiempo.

Tendencias de los códigos maliciosos.

Con respecto a los códigos maliciosos, Symantec manifestó que había 4,5 veces más virus y gusanos Win32 durante el primer semestre del año 2004 con relación al mismo periodo del 2003. Para hacer un análisis comparativo de las estadísticas, había 2,5 veces más virus y gusanos Win32 durante el segundo semestre del 2003 frente al mismo periodo del 2002

Las amenazas basadas en Win32 utilizan la Interfase de programación de aplicaciones (API) que simplifica muchas funciones que las aplicaciones modernas requieren. De la misma manera que las personas legítimas que desarrollan software utilizan esta API para escribir aplicaciones, los autores de códigos maliciosos están aprovechando esta interfase para escribir códigos maliciosos más eficaces. Algunos ejemplos de estos códigos son la enumeración de otros equipos en la red local y su intención de propagarse a través del uso compartido de archivos locales.

Page 52: Apuntes B..

51

SISTEMAS OPERATIVOS

Symantec ha señalado algunas tendencias significativas:

Amenazas recientes de alto riesgo como Blaster y Sasser están aprovechando los componentes básicos de Windows.

El tiempo que transcurre desde que se descubre una vulnerabilidad hasta que se publica el código de ataque está disminuyendo.

Nuevos códigos de ataque están aumentando.

Existen investigadores y personas mejor capacitados que realizan ataques en la actualidad.

El uso compartido de códigos entre los atacantes aumenta.

Los atacantes y las amenazas combinadas atacan cada vez más las puertas traseras de otras amenazas.

La mensajería instantánea y las redes P2P son atractivas para los autores de códigos maliciosos por su popularidad y seguridad limitada.

Evidentemente, las nuevas amenazas se están propagando a una velocidad tan asombrosa que ningún mecanismo reactivo de seguridad basado en firmas las puede detener. Además, las amenazas futuras pueden hacer que incluso Slammer parezca lento. Por lo tanto, no debería sorprendernos el hecho de que necesitamos encontrar básicamente nuevas formas de “detener el proyectil”.

Se necesita un cambio de estrategia.

Si queremos ganar esta batalla, debemos cambiar de estrategia. Necesitamos desarrollar nuevas técnicas que puedan controlar estos gusanos de propagación ultrarrápida. Esto no significa que las tecnologías tradicionales basadas en firmas no sean útiles, puesto que son todavía indispensables. Sin embargo, debemos explorar otras posibilidades porque los gusanos más rápidos pueden lograr lo que llamamos “contagio total”, es decir, la infección total de los servidores susceptibles, mucho más rápidamente de lo que los humanos o incluso los sistemas automáticos pueden generar e instalar una firma.

Symantec cree que se necesita una estrategia integral de seguridad que incluya cuatro elementos importantes para proteger el ciberespacio. Primero, un sistema de alerta debe proporcionar alertas tempranas contra las amenazas nuevas e incipientes. Segundo, se deben implementar tecnologías adecuadas para proteger los dispositivos y la información crítica de las aplicaciones. Tercero, se debe diseñar un plan para responder ante un ataque inevitable. Cuarto, se debe establecer un sistema completo para administrar el proceso de protección de la infraestructura.

Esta estrategia aborda la seguridad desde una perspectiva empresarial integral y no desde un punto de vista estrictamente tecnológico o de “productos aislados”·. Por esta razón, es necesario integrar el personal y los procesos relacionados con los sistemas de alerta, protección, respuesta y administración. Veamos detalladamente estos cuatro elementos.

Alertar: La mejor forma de proteger una red de una amenaza es saber sobre la amenaza y la vulnerabilidad que ataca antes de que se produzca un ataque. Un sistema de alerta en el ciberespacio debe producir una alerta temprana contra los ataques que surjan. También debe proporcionar información útil en la toma de decisiones sobre la forma de proteger el entorno del ataque inminente.

Proteger: Las organizaciones han brindado tradicionalmente protección mediante la implantación de productos aislados que funcionan independientemente. Sin embargo, en este método cada producto se debe instalar y actualizar individualmente, lo que genera caos administrativo. Aunque ninguna tecnología aislada puede proteger adecuadamente contra las amenazas complejas actuales, un método integrado de seguridad puede ayudar a eliminar los

Page 53: Apuntes B..

52

SISTEMAS OPERATIVOS

desafíos de los productos aislados y a proporcionar una solución más integral. Este sistema se centra menos en las tecnologías individuales de protección y más en las capas de la arquitectura de los sistemas. Es decir, que la atención se debe centrar en los niveles de gateways, servidores de aplicaciones y estaciones de trabajo, y no en seleccionar un firewall o sensor de intrusos. De esta manera, se crea una solución de “defensa en profundidad” que nos permite administrar el entorno total y no las aplicaciones de seguridad por separado.

Responder: Un plan de respuesta eficaz comienza con un sistema inteligente sobre el ataque, así como medidas preventivas para controlarlo e información detallada sobre la forma de reparar los daños. También es esencial brindar soporte las 24 horas a los productos de seguridad cruciales, como las actualizaciones automáticas de las normas del firewall, las definiciones de virus y las firmas de detección de intrusos.

Administrar: Significa correlacionar rápidamente la información generada por las soluciones de seguridad, simplificarla y dar prioridad a las medidas correctivas necesarias. La administración puede ser un desafío, especialmente en los entornos que tienen productos dispares de múltiples proveedores donde cada dispositivo genera desbordamientos de datos.

Una nueva generación de amenazas

Las amenazas combinadas como Código Rojo y Nimda fueron eficaces porque combinaban las características más devastadoras de los virus, gusanos, caballos de Troya y códigos maliciosos para atacar las vulnerabilidades informáticas y de Internet. (por ejemplo, Nimda utilizó cinco métodos de propagación). Con estos múltiples métodos, las amenazas combinadas pueden inhabilitar sistemas informáticos que emplean únicamente una forma de seguridad en Internet, para propagarse rápidamente y causar daños extendidos.

Usualmente estos ataques ocurrían después de que se identificaba una vulnerabilidad y ese momento que transcurre entre los dos hechos se llama la "ventana de amenazas a las vulnerabilidades". Nimda y Slammer tenían ventanas de amenazas a las vulnerabilidades por muchos meses y le daban mucho tiempo al distribuidor para crear un parche y avisarle al público, lo que reducía el daño posible de la amenaza. En promedio, se producían ataques seis meses después de que se anunciaba públicamente una vulnerabilidad.

Sin embargo, en el caso de un ataque hipotético de Día Cero, los expertos en seguridad anticipan las infecciones que se propagaban en cuestión de minutos o segundos y exigen la intervención humana. Los expertos señalan que el gusano Slammer, apareció en enero, se propagó cientos de veces más rápido que el Código Rojo o Nimda, y su velocidad de infección se duplicó cada 8.5 segundos durante el primer minuto cautivante de su ataque. De hecho, los expertos informáticos de la Universidad de California en San Diego revelaron que después de 10 minutos de su debut, Slammer había infectado a más de 75.000 equipos (hosts) vulnerables. Además, encontraron que las instrucciones del software de Slammer, a 376 bytes, eran un décimo del tamaño de las de Código Rojo; el pequeñísimo tamaño le permitió reproducirse rápidamente y ajustarse a un tipo de "paquete" de red que fue enviado en una dirección a posibles víctimas, un método agresivo diseñado para infectar rápidamente todos los equipos vulnerables y saturar el ancho de banda de Internet.

¿Cuáles son las perspectivas?

Las conclusiones que sacaron los expertos en seguridad de estas amenazas combinadas apuntan a un ataque de Día Cero que ocurrirá cuando un ataque pueda crearse y lanzarse inmediatamente después de descubierta la vulnerabilidad, sin dejar tiempo a los expertos o usuarios informáticos de responder. Este ataque probablemente utilizará "listas negras" dirigidas a máquinas (hosts) y equipos en Internet vulnerables, como enrutadores, en lugar de explorar sin un objetivo específico, como fue el caso del Código Rojo y Nimda. Los investigadores también se han centrado en las amenazas de los gusanos llamados “furtivos" que se esparcen más lentamente, pero de forma casi indetectable. Aunque

Page 54: Apuntes B..

53

SISTEMAS OPERATIVOS

estos gusanos aún permanecen en el campo teórico, han demostrado ser capaces de subvertir más de 10.000,000 equipos de Internet. Aún más alarmante, los investigadores han demostrado cómo estos gusanos pueden ser controlados y actualizados por los atacantes casi indefinidamente. La realidad es difícil de ignorar: A medida que pasamos de las amenazas combinadas a los ataques de Día Cero, podemos esperar trastornos de mayor magnitud y no de corto plazo.

Estrategias de protección

El aumento de esta nueva clase de amenazas en el ciberespacio necesariamente implica un cambio en el perfil del atacante. Olvídese de los programadores amateur o los "jóvenes piratas de macros" cuyos ataques proporcionaban los medios para tener un poco de fama o notoriedad (y quizás unos cuantos números de tarjetas de crédito). Dicen los expertos que los atacantes de Día Cero serán de una generación totalmente diferente, que tendrá mayores conocimientos, será más dedicada y que probablemente no esté relacionada con el crimen organizado u organizaciones terroristas. Entonces, ¿cómo podrán las empresas protegerse de estos atacantes?

Los expertos en seguridad están de acuerdo en que la implementación de las mejores prácticas sigue siendo la mejor forma de minimizar el daño. Es decir, que se minimiza el daño particularmente al eliminar los servicios innecesarios, actualizar los parches e imponer contraseñas fuertes.

Elimine los servicios innecesarios: Las organizaciones deben establecer cuáles servicios realmente requieren para eliminar los que son innecesarios. La eliminación de los servicios innecesarios puede reducir considerablemente la vulnerabilidad del sistema. Por ejemplo, no hay razón de ejecutar un servidor Windows NT con un servidor Web IIS en un equipo de escritorio de un empleado; la eliminación de los IIS de las computadoras de escritorio preventivamente anulará los ataques que están diseñados para aprovechar estas vulnerabilidades.

Actualice los parches: La mayoría de amenazas combinadas se basa en vulnerabilidades conocidas. Actualice los sistemas operativos, aplicaciones y productos de seguridad con los últimos parches de seguridad para sellar muchas puertas abiertas que las amenazas combinadas han usado en el pasado para difundirse.

Imponga contraseñas fuertes: El uso de contraseñas fuertes implementadas a través de la evaluación frecuente y consistente de las vulnerabilidades puede ayudar a reducir el ataque más común: ataques a contraseñas por la fuerza. Las contraseñas deben escogerse al azar y no deben ser nombres o fechas importantes. Una buena contraseña tendrá por lo menos ocho caracteres que incluyan tanto letras como números. Una política que le pide a los usuarios que cambien sus contraseñas con frecuencia, también reduce el riesgo de una violación a los sistemas.

Las empresas que desean ir más allá de las mejores prácticas podrían considerar la implementación de lo que se llama seguridad a fondo. El objetivo de la seguridad a fondo es crear una barrera protectora que es extremadamente difícil y costosa de sortear a través de la combinación de software antivirus, filtrado de contenido, firewall, control de vulnerabilidades y detección de intrusos. Cuando se utilizan todas estas defensas al mismo tiempo, también pueden desacelerar o impedir la propagación de un ataque poniendo el código en cuarentena, alertándolo de su presencia, reparando el daño o bloqueándolo por completo.

Una combinación de las mejores prácticas y la seguridad a fondo proprociona la línea de defensa más fuerte contra los complejos ataques en el ciberespacio de hoy y de mañana. Las empresas también deben usar un método de capas para la seguridad informática mediante la implementación de productos de seguridad en todos los niveles de la red (escritorio, servidor y gateway de Internet). Finalmente y quizás lo más importante, los empleados deben capacitarse con frecuencia en métodos para reconocer y evitar las sofisticadas amenazas en Internet.

Page 55: Apuntes B..

54

SISTEMAS OPERATIVOS

BIBLIOGRAFÍA

10.- BIBLIOGRAFÍA NECESARIA PARA EL DESARROLLO DEL PROGRAMA

10.1. BÁSICA 10.2. COMPLEMENTARIA

Page 56: Apuntes B..

55

SISTEMAS OPERATIVOS

10.- BIBLIOGRAFÍA NECESARIA PARA EL DESARROLLO DEL PROGRAMA

Sistemas operativosHarvey M. DeitelAddison Wesley

Sistemas operativos modernosAndrew S. TanenbaumPrentice Hall Iberoamericana

Administración de Sistemas operativosAndrew S. TanenbaumPrentice Hall Ibeoramericana

Diseño de sistemas operativosAndrew S. TanenbaumPrentice Hall Iberoamericana

Organización de computadorasHamcher / VranesickMcGraw-Hill

Manuales de UNIX, Netware, Windows NT Server

Revistas Internet