Fundamentos de Sistemas Operativos
Fundamentos de Sistemas Operativos
Fundamentos de Sistemas Operativos
SISTEMAS
OPERATIVOS
UNIDAD I
El sistema operativo es el principal programa que se ejecuta en toda computadora de propósito general. Los hay
de todo tipo, desde muy simples hasta terriblemente complejos, y entre más casos de uso hay para el cómputo
en la vida diaria, más variedad habrá en ellos
La diferencia en el uso son sólo –cuando mucho– consecuencias del diseño de un sistema operativo. Más aún,
con el mismo sistema operativo –como pueden constatarlo comparando dos distribuciones de Linux, o incluso la
forma de trabajo de dos usuarios en la misma computadora– es posible tener entornos operativos
completamente disímiles.
La importancia de estudiar este tema radica no sólo en comprender los mecanismos que emplean los sistemas
operativos para cumplir sus tareas sino en entenderlos para evitar los errores más comunes al programar, que
pueden resultar desde un rendimiento deficiente hasta pérdida de información. Como desarrolladores,
comprender el funcionamiento básico de los sistemas operativos y las principales alternativas que ofrecen en
muchos de sus puntos, o saber diseñar algoritmos y procesos que se ajusten mejor al sistema operativo en que
vayan a ejecutarse, puede resultar en una diferencia cualitativa decisiva en el producto final.
Los sistemas de archivos resultan un área de especial interés para administradores de sistemas: ¿cómo
comparar las virtudes y desventajas de tantos sistemas existentes, por qué puede resultar conveniente mezclar
distintos sistemas en el mismo servidor, cómo evitar la corrupción o pérdida de información? Lo que es más,
¿cómo recuperar información de un disco dañado?
En el área de la seguridad informática, la relación resulta obvia. Desde el punto de vista del atacante, si le
interesa localizar vulnerabilidades que permitan elevar su nivel de privilegios, ¿cómo podría lograrlo sin
comprender cómo se engranan los diversos componentes de un sistema?
Del mismo modo, para quien busca defender un sistema (o una red), resulta fundamental comprender cuáles
son los vectores de ataque más comunes y –nuevamente– la relación entre los componentes involucrados para
poder remediar o, mejor aún, prevenir dichos ataques.
Funciones y objetivos del sistema operativo
El sistema operativo es el único programa que interactúa directamente con el hardware de la computadora.
Sus funciones primarias son:
Abstracción Los programas no deben tener que preocuparse de los detalles de acceso a hardware, o de la
configuración particular de una computadora.
Administración de recursos Una sistema de cómputo puede tener a su disposición una gran cantidad de
recursos (memoria, espacio de almacenamiento, tiempo de procesamiento, etc.), y los diferentes procesos
que se ejecuten en él compiten por ellos.
Aislamiento En un sistema multiusuario y multitarea cada proceso y cada usuario no tendrá que
preocuparse por otros que estén usando el mismo sistema —Idealmente, su experiencia será la misma que
si el sistema estuviera exclusivamente dedicado a su atención (aunque fuera un sistema menos poderoso).
Proceso por lotes (batch processing) Los antecedentes a lo que hoy se conoce como sistema operativo pueden
encontrarse en la automatización inicial del procesamiento de diferentes programas, surgida en los primeros
centros de cómputo: cuando en los años cincuenta aparecieron los dispositivos perforadores/lectores de
tarjetas de papel, el tiempo que una computadora estaba improductiva esperando a que estuviera lista una
tarea (como se designaba a una ejecución de cada determinado programa) para poder ejecutarla disminuyó
fuertemente ya que los programadores entregaban su lote de tarjetas perforadas (en inglés, batches) a los
operadores, quienes las alimentaban a los dispositivos lectores, que lo cargaban en memoria en un tiempo
razonable, iniciaban y monitoreaban la ejecución, y producían los resultados.
Una mejora natural a este último punto fue la invención del spool: un mecanismo de entrada/salida que
permitía que una computadora de propósito específico, mucho más económica y limitada, leyera las tarjetas y
las fuera convirtiendo a cinta magnética, un medio mucho más rápido, teniéndola lista para que la
computadora central la cargara cuando terminara con el trabajo anterior. Del mismo modo, la computadora
central guardaba sus resultados en cinta para que equipos especializados la leyeran e imprimieran para el
usuario solicitante.
La palabra spool (bobina) se tomó como acrónimo inverso hacia Simultaneous Peripherial Operations On-Line,
operación simultánea de periféricos en línea.
Sistemas multiprogramados.
A lo largo de su ejecución, un programa normalmente pasa por etapas con muy distintas características:
durante un ciclo fuertemente dedicado al cálculo numérico, el sistema opera limitado por el CPU (CPU-
bound), mientras que al leer o escribir resultados a medios externos (incluso mediante spools) el límite es
impuesto por los dispositivos, esto es, opera limitado por entrada-salida (I-O bound). La programación
multitareas o los sistemas multiprogramados buscaban maximizar el tiempo de uso efectivo del procesador
ejecutando varios procesos al mismo tiempo.
Sistemas de tiempo compartido
El modo de interactuar con las computadoras se modificó drásticamente durante los años sesenta, al
extenderse la multitarea para convertirse en sistemas interactivos y multiusuarios, en buena medida
diferenciados de los anteriores por la aparición de las terminales (primero teletipos seriales, posteriormente
equipos con una pantalla completa como se conocen hasta hoy).
En primer término, la tarea de programación y depuración del código se simplificó fuertemente al poder
hacer el programador directamente cambios y someter el programa a la ejecución inmediata. En segundo
término, la computadora nunca más estaría simplemente esperando a que esté listo un programa: mientras
un programador editaba o compilaba su programa, la computadora seguía calculando lo que otros procesos
requirieran.
¿Y del lado de las computadoras personales?
Si bien la discusión hasta este momento asume una computadora central con operadores dedicados y
múltiples usuarios, en la década de los setenta comenzaron a aparecer las computadoras personales, sistemas
en un inicio verdaderamente reducidos en prestaciones y a un nivel de precios que los ponían al alcance,
primero, de los aficionados entusiastas y, posteriormente, de cualquiera.
Las primeras computadoras personales eran distribuidas sin sistemas operativos o lenguajes de programación;
la interfaz primaria para programarlas era mediante llaves (switches), y para recibir sus resultados, se
utilizaban bancos de LEDs. Claro está, esto requería conocimientos especializados, y las computadoras
personales eran aún vistas sólo como juguetes caros.
La verdadera revolución apareció cuando‚ poco tiempo más tarde, comenzaron a venderse computadoras
personales con salida de video (típicamente por medio de una televisión) y entrada por un teclado. Estas
computadoras popularizaron el lenguaje BASIC, diseñado para usuarios novatos en los sesenta, y para
permitir a los usuarios gestionar sus recursos (unidades de cinta, pantalla posicionable, unidades de disco,
impresoras, modem, etc.) llevaban un software mínimo de sistema —nuevamente, un proto-sistema
operativo.
La Commodore Pet 2001, en el mercado desde 1977, una de las primeras con
intérprete de BASIC (imagen de la Wikipedia: Commodore PET).
La computadora para fines “serios”: la familia PC
Al aparecer las computadoras personales “serias”, orientadas a la oficina más que al hobby, a principios de los
ochenta (particularmente representadas por la IBM PC, 1981), sus sistemas operativos se comenzaron a
diferenciar de los equipos previos al separar el entorno de desarrollo en algún lenguaje de programación del
entorno de ejecución.
El papel principal del sistema operativo ante el usuario era administrar los archivos de las diversas
aplicaciones mediante una sencilla interfaz de línea de comando, y lanzar las aplicaciones que el usuario
seleccionaba.
La PC de IBM fue la primer arquitectura de computadoras personales en desarrollar una amplia familia de
clones, computadoras compatibles diseñadas para trabajar con el mismo sistema operativo, y que
eventualmente capturaron casi 100% del mercado. Prácticamente todas las computadoras de escritorio y
portátiles en el mercado hoy derivan de la arquitectura de la IBM PC.
Hacia mediados de los ochenta comenzaron a aparecer computadoras con interfaces usuario gráficas
(Graphical User Interfaces, textscguis) basadas en el paradigma WIMP (Windows, Icons, Menus, Pointer;
Ventanas, Iconos, Menúes, Apuntador), que permitían la interacción con varios programas al mismo tiempo.
Esto no necesariamente significa que sean sistemas multitarea: por ejemplo, la primer interfaz de MacOS
permitía ver varias ventanas abiertas simultáneamente, pero sólo el proceso activo se ejecutaba.
Esto comenzó, sin embargo, a plantear inevitablemente las necesidades de concurrencia a los programadores.
Los programas ya no tenían acceso directo a la pantalla para manipular a su antojo, sino que a una abstracción
(la ventana) que podía variar sus medidas, y que requería que toda la salida fuera estrictamente mediante las
llamadas a bibliotecas de primitivas gráficas que comenzaron a verse como parte integral del sistema
operativo.
Los sistemas operativos primarios para ambas plataformas fueron respondiendo a las nuevas características
del hardware: en las IBM, la presencia de Microsoft Windows (originalmente un entorno operativo desde su
primera edición en 1985, evolucionando hacia un sistema operativo completo ejecutando sobre una base de
MS-DOS en 1995) se fue haciendo prevalente hasta ser la norma. Windows pasó de ser un sistema
meramente de aplicaciones propias y que operaba únicamente por reemplazo de aplicación activa a ser un
sistema de multitarea cooperativa y, finalmente un sistema que requería protección en hardware (80386) e
implementaba multitarea apropiativa.
A partir del 2003, el núcleo de Windows en más amplio uso fue reemplazado por un desarrollo hecho de
inicio como un sistema operativo completo y ya no como un programa bajo MS-DOS: el núcleo de nueva
tecnología (Windows NT), que, sin romper compatibilidad con los APIs históricos de Windows, ofreció mucho
mayor estabilidad. Por el lado de Apple, la evolución fue muy en paralelo: ante un sistema ya agotado y
obsoleto, el MacOS 9, en 2001 anunció una nueva versión de su sistema operativo que fue en realidad un
relanzamiento completo: MacOS X es un sistema basado en un núcleo Unix BSD, sobre el microkernel Mach.
Dispositivos móviles
En los últimos años, buena parte del desarrollo en el mundo del cómputo se ha volcado hacia el modelo de
cómputo representado, genéricamente, por los dispositivos móviles. Dado el interés que estas plataformas
han despertado, se torna necesario abordar el tema, aunque sea más para anotar similitudes que diferencias
con el resto de los equipos de cómputo. Para hacer esto, sin embargo, es necesario primero abordar la
definición: ¿en qué consiste un dispositivo móvil, cuáles son los límites de su definición, qué fronteras se le
pueden definir? Es difícil encontrar límites claros y duros para lo que este concepto abarca; en el transcurso
de esta sección se abordan las características de las computadoras diseñadas no sólo en el nivel del hardware,
sino de interfaz usuario, para que su propietario las cargue consigo y las convierta en un asistente para sus
actividades cotidianas, para la organización de su vida diaria. Partiendo de esta definición se tiene que un
teléfono inteligente será tratado como dispositivo móvil, pero una computadora portátil no, puesto que su
interfaz es la misma de una computadora estándar.
El iPhone, de Apple,
introdujo la primera
interfaz usuario
multitouch y detonó
la popularidad de los
teléfonos
inteligentes —y con
ello, del cómputo
móvil
Android Diseñado por la compañía Google, basa la mayor parte de su operación en software libre (un núcleo
Linux, máquina virtual Java, y muchas de las bibliotecas de sistema comunes en sistemas Linux), agregando una
capa de servicios propietarios. La estrategia de Google ha sido inversa a la de Apple: en vez de fabricar sus
propios dispositivos, otorga licencias para el uso de este sistema operativo a prácticamente todos los
fabricantes de hardware.
Windows Phone Microsoft ofrece una versión de su sistema operativo, compatible en API con el Windows de
escritorio, pero compilado para procesador ARM.
Symbian Si bien este sistema operativo ya está declarado como oficialmente muerto, su efecto en el desarrollo
temprano del segmento fue fundamental, y no puede ser ignorado. Symbian fue la plataforma principal para
Nokia en su época de gloria, así como para muchos otros fabricantes.
Firefox OS La fundación Mozilla, responsable del navegador Firefox (y heredera del histórico Netscape) está
intentando entrar al mercado móbil con este sistema, basado (al igual que Android) en el núcleo de Linux, pero
orientado a ofrecer una interfaz de programación siguiendo completamente los estándares y lenguajes para
uso en la Web.
Concurrencia
Es una propiedad de los sistemas en la cual los procesos de un cómputo se hacen simultáneamente, y pueden
interactuar entre ellos. Los cálculos (operaciones) pueden ser ejecutados en múltiples procesadores, o
ejecutados en procesadores separados físicamente o virtualmente en distintos hilos de ejecución. Un sin
número de modelos matemáticos han sido desarrollados para cálculos de la concurrencia en general
incluyendo redes de Petri, procesos Calculi, el modelo máquina de accesos random en paralelo, el Modelo
Actor y el Lenguaje Reo.
También concurrente significa algo que se repite cada cierto tiempo en un mismo lugar.
Varios turnos: Se establecen varios turnos. Para hacerlo más claro supongamos que
cada filósofo que puede comer (es su turno) tiene una ficha que después pasa a la
derecha. Si por ejemplo hay 7 comensales podemos poner 3 fichas en posiciones
alternas (entre dos de las fichas quedarían dos filósofos).
Se establecen turnos de tiempo fijo. Por ejemplo cada 5 minutos se pasan las fichas
(y los turnos) a la derecha.
Colas de tenedores: Cuando un filósofo quiere comer se pone en la cola de los dos
tenedores que necesita. Cuando un tenedor está libre lo toma. Cuando toma los dos
tenedores, come y deja libre los tenedores.
Diversas Visto desde el otro lado, cada tenedor sólo puede tener dos filósofos en cola,
soluciones siempre los mismos.
posibles
Resolución de conflictos en colas de tenedores: Cada vez que un filósofo tiene un
tenedor espera un tiempo aleatorio para conseguir el segundo tenedor. Si en ese
tiempo no queda libre el segundo tenedor, suelta el que tiene y vuelve a ponerse en
cola para sus dos tenedores.
Si un filósofo A suelta un tenedor (porque ha comido o porque ha esperado
demasiado tiempo con el tenedor en la mano) pero todavía desea comer, vuelve a
ponerse en cola para ese tenedor. Si el filósofo adyacente B está ya en esa cola de
tenedor (tiene hambre) lo toma y si no vuelve a cogerlo A.
El portero del comedor: Se indica a los filósofos que abandonen la mesa cuando no
tengan hambre y que no regresen a ella hasta que vuelvan a estar hambrientos
(cada filósofo siempre se sienta en la misma silla). La misión del portero es controlar
el número de filósofos en la sala, limitando su número a n-1.
Almacenamiento de la información
La tendencia actual es que la información sea tratada en formato digital, como software, documentos, música,
vídeo y otros formatos. Así pues, se hacen necesarios soportes con gran capacidad de almacenamiento y una
buena gestión, control, organización y administración de esta información, a fin de evitar pérdidas irreparables.
Cada archivo se identifica por su nombre -en Windows puede llegar a tener una longitud de 255 caracteres- y
una extensión que nos informa de qué tipo de archivo se trata.
El sistema de archivos
Ya hemos visto que el sistema operativo proporciona un sistema de archivos que permite manipular, crear,
eliminar, establecer una correspondencia entre archivos y directorios y realizar copias de seguridad de los
archivos. Estos sistemas no cesan de evolucionar para dar respuesta a las nuevas necesidades de capacidad
y seguridad. En la siguiente tabla se muestra una comparativa de sistemas de archivos:
Dispositivos de almacenamiento
Se han desarrollado diferentes dispositivos capaces de almacenar información y diseñados para distintos
propósitos, como pueden ser, por ejemplo, disponer de gran capacidad de almacenamiento, que sean
portátiles, de bajo consumo de energía, de reducidas dimensiones e, incluso, que no lleve partes móviles.
Compartir
Se le denomina compartir a el manejo de toda la información que se comparte Con los sistemas de
almacenamiento como en el distribuir los datos a través de los buses.
La función del bus es la de permitir la conexión lógica entre distintos subsistemas de un sistema digital, enviando
datos entre dispositivos de distintos órdenes: desde dentro de los mismos circuitos integrados, hasta equipos
digitales completos que forman parte de supercomputadoras.
La mayoría de los buses están basados en conductores metálicos por los cuales se trasmiten señales eléctricas
que son enviadas y recibidas con la ayuda de integrados que poseen una interfaz del bus dado y se encargan de
manejar las señales y entregarlas como datos útiles. Las señales digitales que se trasmiten son de datos, de
direcciones o señales de control.
Los buses definen su capacidad de acuerdo a la frecuencia máxima de envío y al ancho de los datos. Por lo
general estos valores son inversamente proporcionales: si se tiene una alta frecuencia, el ancho de datos debe
ser pequeño. Esto se debe a que la interferencia entre las señales (crosstalk) y la dificultad de sincronizarlas,
crecen con la frecuencia, de manera que un bus con pocas señales es menos susceptible a esos problemas y
puede funcionar a alta velocidad.
Todos los buses de computador tienen funciones especiales como las interrupciones y las DMA que permiten
que un dispositivo periférico acceda a una CPU o a la memoria usando el mínimo de recursos.
Existen dos tipos de transferencia en los buses:
Serie: El bus solamente es capaz de transferir los datos bit a bit. Es decir, el bus tiene un único cable que
transmite la información.
Paralelo: El bus permite transferir varios bits simultáneamente, por ejemplo 8 bits.
Aunque en primera instancia parece mucho más eficiente la transferencia en paralelo, esta presenta
inconvenientes:
Las memorias son los dispositivos de almacenamiento de datos e instrucciones en una computadora.
Llamamos sistema de memoria al conjunto de estos dispositivos y los algoritmos de hardware y/o software
de control de los mismos. Diversos dispositivos son capaces almacenar información, lo deseable es que el
procesador tuviese acceso inmediato e ininterrumpido a la memoria, a fin de lograr la mayor velocidad de
procesamiento. Desafortunadamente, memorias de velocidades similares al procesador son muy caras. Por
esta razón la información almacenada se distribuye en forma compleja en una variedad de memorias
diferentes, con características físicas distintas.
NUCLEO DEL
SISTEMA
OPERATIVO
UNIDAD II
Cada parte del sistema operativo está dividido de acuerdo al tipo de funcionalidad y objetivo que tiene, así
también a las áreas del ordenador a las cuales están enfocadas. A continuación la descripción de cada una de
estas.
Gestión de procesos:
Al momento de ejecutar un programa en nuestra computadora, deberá de utilizar procesos para reservar la
utilización de los recursos necesarios para su funcionamiento. Si por ejemplo el usuario ejecuta dos
programas consecutivamente, se crearan una determinada cantidad de procesos que se sumaran a los que
ya se están ejecutando para mantener activo nuestro ordenador.
El orden en que se realizan los procesos es de acuerdo a su prioridad, esto es un ejemplo de planificación de
procesos, lo cual consiste en decidir qué proceso se utilizara en cada instante de tiempo. Entre las
funcionalidades propias de los procesos también se pueden mencionar a los mecanismos de comunicación,
como su nombre lo indica gestiona la comunicación entre distintos procesos. También se tiene a los
mecanismos de sincronización, los cuales permiten el acceso a un recurso por varios procesos de manera
concurrente.
Gestión de la memoria:
La memoria es utilizada por los distintos programas, es decir por el CPU y por los dispositivos de
entrada/salida con los cuales cuenta el ordenador. Acerca de la memoria se puede mencionar que es de fácil
acceso, rápida o bien volátil, también se puede destacar que ante fallas o al apagar la computadora pierde su
información en un tiempo de alrededor de tres minutos.
El sistema operativo se encarga de la correcta utilización de este recurso, pues debe de ser el encargado de
saber que partes están siendo utilizadas y por quien, asignar espacios cuando se requiera, entre otros.
Gestión del almacenamiento secundario:
Es necesario para almacenar y manipular la información que necesita sobrevivir ante cualquier fallo en el
sistema, por ejemplo un cortocircuito o bien un apagón. Es necesario también para alojar temporalmente los
programas que son de un tamaño grande para ser alojados en la memoria volátil.
Sistema de entrada y salida: Esta es una de las principales funciones del sistema operativo pues es el medio
por el cual el usuario va a interactuar con los componentes físicos de la máquina. También se encargara de
gestionar la comunicación entre los dispositivos, controlar los posibles errores y detectar las interrupciones
que se puedan dar. Esta área del sistema operativo hace para el usuario, una PC más simple de manipular.
Sistemas de protección: Se refiere al control de acceso de los programas estableciendo límites de seguridad,
establece quienes pueden tener acceso a determinados recursos estableciendo políticas. Entre otros detalles
este sistema se encarga de que los procesos se ejecuten únicamente dentro de los espacios asignados a este.
Sistema de comunicaciones: Esto se refiere al uso específico de interfaces de red, permitiendo la comunicación
entre distintos sistemas. Las interfaces de red abarcan un gran campo dejando a un lado el sistema operativo,
pues se refiere a la salida y entrada de la computadora hacia el exterior, hacia otras computadoras a través de
distintos medios.
Programa de sistema: Es el software que es agregado al sistema operativo pero no forma parte de este,
haciendo posible la ejecución de programas. Estos proporcionan funcionalidades extras al sistema, por ejemplo
manipulación y modificación de archivos, manipula información del sistema, proporciona soporte a lenguajes de
software entre otros, comunicaciones
Relaciones con el núcleo
EL Núcleo del Sistema Operativo.: todas las operaciones en las que participan procesos son controladas por
la parte del sistema operativo denominada núcleo (nucleus, core o kernel, en inglés). El núcleo normalmente
representa sólo una pequeña parte de lo que por lo general se piensa que es todo el sistema operativo, pero
es tal vez el código que más se utiliza. Por esta razón, el núcleo reside por lo regular en la memoria principal
mientras que otras partes del sistema operativo son cargadas en la memoria principal sólo cuando se
necesitan.
Los núcleos se diseñan para realizar "el mínimo" posible de procesamiento en cada interrupción y dejar que
el resto lo realice el proceso apropiado del sistema, que puede operar mientras el núcleo se habilita para
atender otras interrupciones.
El núcleo de un sistema operativo normalmente contiene el
código necesario para realizar las siguientes funciones:
Manejo de interrupciones.
Creación y destrucción de procesos.
Cambio de estado de los procesos.
Despacho.
Suspensión y reanudación de procesos.
Sincronización de procesos.
Comunicación entre procesos.
Manipulación de los bloques de control de procesos.
Apoyo para las actividades de entrada/salida.
Apoyo para asignación y liberación de memoria.
Apoyo para el sistema de archivos.
Apoyo para el mecanismo de llamada y retorno de un
procedimiento.
Apoyo para ciertas funciones de contabilidad del
sistema.
Núcleo o Kernel y niveles de un Sistema Operativo.
Estados de un proceso
No existente
Existente
Suspendido
Activado
Espera
Preparado
Ejecución
Ejecución
Preparado Espera
Manejador de interrupciones de primer nivel
En principio, una señal es una indicación por la que se altera la secuencia de ejecución. Hay varios tipos de
interrupción, que se clasifican en función de su origen:
La misión del FLIH, está en el núcleo, para dar una respuesta a cualquier tipo de señal que se produce en el
sistema.
Al producirse una señal, la atrapa el Hardware de interrupciones, que como mínimo, salva el contenido del
PC en el PCB del proceso. Además, puede que también salve el resto del entorno volátil (también en el PCB).
También direcciona al FLIH, es decir, pone en el PC la dirección del FLIH.
Despachador SCHEDULER
DISPATCHER Y SCHEDULER
Parámetros de planificación:
• índice de ocupación de C.P.U. (a maximizar)
I = tocup./ (tocup. + tdesocup)
• throughput (a maximizar)
T = nº jobs acabados / t
• turnaround time. Para s. no interactiv. (a
minimizar)
tt = tfinal – tinicio
• waiting time (a minimizar)
wi
= sumatorio tpreparadoi
• reponse time. para s.interactivos (a minimizar)
ri = t1ºrespuesta – tinicio
Implantación de Wait y Signal.
Semáforos:
Su tarea consiste en llevar un registro de las partes de memoria que se estén utilizando y las que no, con el
fin de asignar espacio en memoria a los procesos cuando éstos la necesiten y liberándola cuando terminen,
así como administrar el intercambio entre la memoria principal y el disco.
Los sistemas de administración de memoria se pueden clasificar en dos tipos: los que desplazan los
procesos de la memoria principal al disco y viceversa durante la ejecución y los que no.
El propósito principal de una computadora es el de ejecutar programas, estos programas, junto con la
información que accedan deben de estar en la memoria principal (al menos parcialmente) durante la
ejecución.
Para optimizar el uso del cpu y de la memoria, el sistema operativo debe de tener varios procesos a la vez
en la memoria principal, para lo cual dispone de varias opciones de administración tanto del procesador
como de la memoria. La selección de uno de ellos depende principalmente del diseño del hardware para el
sistema. A continuación se observarán los puntos correspondientes a la administración de la memoria.
Memoria real
La memoria real o principal es en donde son ejecutados los programas y procesos de una computadora y es
el espacio real que existe en memoria para que se ejecuten los procesos. Por lo general esta memoria es de
mayor costo que la memoria secundaria, pero el acceso a la información contenida en ella es de más rápido
acceso. Solo la memoria cache es más rápida que la principal, pero su costo es a su vez mayor.
Memoria virtual
El término memoria virtual se asocia a dos conceptos que normalmente a parecen unidos:
1. el uso de almacenamiento secundario para ofrecer al conjunto de las aplicaciones la ilusión de tener más
memoria RAM de la que realmente hay en el sistema.
2. ofrecer a las aplicaciones la ilusión de que están solas en el sistema, y que por lo tanto, pueden usar el
espacio de direcciones completo
Unidad de manejo de memoria
La unidad de manejo de memoria (mmu) es parte del procesador. Sus funciones son:
• convertir las direcciones lógicas emitidas por los procesos en direcciones físicas.
• comprobar que la conversión se puede realizar. La dirección lógica podría no tener una dirección física
asociada. Por ejemplo, la página correspondiente a una dirección se puede haber trasladado a una zona de
almacenamiento secundario temporalmente.
• comprobar que el proceso que intenta acceder a una cierta dirección de memoria tiene permisos para ello.
Implementación de memoria virtual
Para implementar la memoria virtual, para el sistema es necesario tener un hardware especial de
administración de memoria. Este hardware a menudo se conoce como un MMU (Memory Management
Unit). Sin un MMU, cuando el CPU accede a la RAM, las ubicaciones reales de RAM nunca cambian la
dirección de memoria 123 siempre será la misma dirección física dentro de la RAM.
Fallo de página
La memoria cargada en memoria principal se le denomina memoria residente.
Acceso a Memoria
El acceso a memoria genera la siguiente secuencia de pasos:
• Verificar que el proceso referencia una página correcta dentro de su espacio virtual, ya que no todas las
direcciones dentro de su espacio son válidas.
Algoritmos de remplazo
La necesidad de traer a memoria principal una página en una memoria principal llena, genera la búsqueda de
un frame a remplazar, mediante un algoritmo de remplazo. El mal algoritmo de remplazo puede generar un
impacto significativo de degradación del sistema, y es por esto que los estudiaremos.
Cuando se elige un frame a remplazar (la víctima), este será puesto en memoria swap, y ante un eventual uso
en el futuro, volverá a memoria principal a través de un page fault.
El algoritmo reemplaza la página que lleva más tiempo en memoria principal. Es un algoritmo fácil de
implementar ya que requiere únicamente de una estructura tipo cola, pero remplaza las páginas sin tener en
cuenta las referencias que tuvo.
Segunda Chance
Este algoritmo intenta disminuir la cantidad de fallos de páginas del algoritmo FIFO, teniendo en cuenta las
referencias a las páginas.
Óptimo
En este algoritmo se reemplaza la página que no va a ser usada por el mayor 0periodo de tiempo. Es
imposible de implementar porque requiere conocer a que páginas accederá el proceso.
Si el SO no implementa una estrategia de asignación de memoria, un proceso que requiera mucha memoria
puede hacer colapsar el sistema.
Una forma de asignar frames a procesos podría ser dividir la cantidad de frames del sistema en partes iguales
para cada proceso. Este método puede ser ineficiente ya que no todos los procesos consumen la misma
cantidad de memoria.
Si un proceso utiliza en forma activa una cantidad mayor de frames de los asignados por el sistema, tendrá
un alto porcentaje de fallos de página, dando lugar a que el proceso esté continuamente realizando PF,
pasando más tiempo paginando que ejecutando, lo que se conoce como hiperpaginación. Se degrada
significativamente el rendimiento del sistema.
Políticas de manejo de memoria
Políticas de lectura
El SO debe decidir cuando cargar las páginas en memoria principal. Hay dos alternativas:
• Paginación por demanda: Carga una página en memoria sólo cuando se necesite, al iniciar la ejecución
de un proceso o por fallos de página. Por el principio de localidad de referencias, al llevar un tiempo
suficiente de ejecución, la tasa de fallos de página desciende hasta un nivel aceptable.
• Paginación previa: Se traen a memoria más páginas que las solicitadas. Aprovecha las ventajas de lectura
secuencial de los dispositivos de memoria secundaria (discos duros). Es una política eficaz si luego las
páginas extra son referenciadas.
Política de reemplazo
Cuando la memoria está llena y hay que cargar otra página, el SO debe decidir que página mandar a memoria
secundaria. El objetivo es seleccionar la página que más tarde en referenciarse.
Unidad 3
Sistemas operativos
de Red.
Los Sistemas Operativos de Red más
populares y conocidos son:
En el caso de los Sistemas Operativos de Red se puede decir que son sistemas operativos que pueden
utilizar una o varias aplicaciones desde cualquier otro equipo o equipos de una red. Es por ello que a un
Sistema Operativo de Red, también se le conoce como interlocutor, ya que es el software que corre en un
servidor y permite al servidor administrar datos, usuarios, grupos, seguridad, aplicaciones y otras
funciones de red. Un Sistema Operativo de Red esta diseñado para permitir la compartición de archivos y
el acceso de impresoras, a través de múltiples computadoras en la red, típicamente una LAN (Red de Área
Local), Red Privada u otras redes.
El Administrador de sistema.
Las tareas y responsabilidades de los administradores de sistemas varían dependiendo del tamaño del
sistema informático. En sistemas grandes las tareas de administración pueden dividirse entre varias
personas.
Por otro lado algunos sistemas pequeños tan sólo se necesita un administrador.
El administrador del sistema cumple un papel muy importante en la empresa ya que debe garantizar el
correcto funcionamiento del sistema informático. Además, dada la responsabilidad y el tipo de
información con el que trabaja, el administrador se convierte en una persona de confianza dentro de la
empresa. La descripción exacta del trabajo del administrador del sistema depende frecuentemente de
cada organización. Un administrador del sistema puede encontrarse envuelto en una amplia variedad de
actividades, desde establecer normas para instalar software a configurar los routers.
Sin embargo, hay una serie de tareas que todos los administradores tienen que gestionar:
Los So en red tienen unas características que los definen y los representan. En general, los SO en red se
utilizan con el objetivo de optimizar la utilización de recursos de una pequeña o gran red, y sobretodo para
realizar una gestión centralizada del software y todos los recursos hardware que se pueden gestionar en una
red. En general, un SO en red se instala en un equipo que tendrá un rango superior al resto de equipos de
una red.
Dicho lo anterior, tenemos que tener en cuenta que para la gestión de este tipo de infraestructuras
informáticas aparece la figura del administrador de So de red, figura que no estaba presente en la gestión
de redes de igual a igual, es decir , en grupos de trabajo. Las características que aportan a los SO en red son
las siguientes:
Compartir recursos.
Compartir es el término utilizado para describir los recursos que públicamente están disponibles para
cualquier usuario de la red.
Permitir diferentes usuarios con diferentes niveles de acceso a los recursos.
Coordinación en el acceso a los recursos asegurando que dos usuarios no utilizan el mismo
recurso en el mismo instante.
Gestión de usuarios.
Los sistemas operativos de red permiten al administrador de la red determinar las personas, o grupos
de personas, que tendrán la posibilidad de acceder a los recursos de la red.
Crear permisos de usuario, controlados por el sistema operativo de red, que indican quién
puede utilizar la red.
Asignar o denegar permisos de usuario en la red.
Eliminar usuarios de la lista de usuarios que controla el sistema operativo de red.
¿Qué es una Red?
Una red de computadoras, es un conjunto de equipos o nodos conectados entre sí por medio de
dispositivos físicos que envían y reciben impulsos eléctricos, ondas electromagnéticas o cualquier otro
medio para el transporte de datos, con la finalidad de compartir información, recursos y ofrecer servicios.
Como en todo proceso de comunicación se requiere de un emisor, un mensaje, un medio y un receptor
(Tanenbaum, Redes de Computadoras, 2011). La finalidad principal para la creación de una red de
computadoras es compartir los recursos y la información en la distancia, asegurar la confiabilidad y la
disponibilidad de la información, aumentar la velocidad de transmisión de los datos y reducir el costo
general de estas acciones.
La estructura y el modo de funcionamiento de las redes informáticas actuales están definidos en varios
estándares, siendo el más importante y extendido de todos ellos el modelo TCP/IP basado en el modelo
de referencia OSI. Este último, estructura cada red en siete capas con funciones concretas pero
relacionadas entre sí.
Capas del Modelo OSI
El modelo OSI (por sus siglas en inglés “Open Systems Interconnection”) (Tanenbaum, Redes de
Computadoras, 2011), esta compuesto de 7 capas que establecen un estándar para la conectividad de las
redes. Estas capas son:
1. Física: Es la conexión al medio
(características mecánicas, eléctricas,
ópticas, etc.), transmite y recibe
señales sobre el medio.
2. Enlace de datos: transmisión y
recepción de Unidades de datos,
controla el flujo y controla el acceso al
medio.
3. Red: Direccionamiento, enrutamiento
o encaminamiento y controla la red.
4. Transporte: Comunicación de punto a
punto, ve la secuenciación de las
unidades de datos, verifica que la
información llegue completa y corrige
errores.
5. Sesión: Contiene los mecanismos para
el inicio, fin y conservación de las
conexiones lógicas.
6. Presentación: Realiza las conversiones
de representación de datos y para
interpretar la información
7. Aplicación: realiza las funciones
relacionadas con la finalidad por la
cual se efectúa la comunicación.
Una característica particular de los Sistemas Operativos de Red es que son basados en la arquitectura de
Cliente – Servidor, la cual permite a múltiples clientes compartir sus recursos por la red.
Los Sistemas Operativos de Red se han construido primordialmente siguiendo la arquitectura Cliente –
Servidor. Siendo que existen dos modelos de arquitectura en la cual se fundamentan, estos modelos son:
El modelo de acceso remoto, ofrece a los clientes un acceso transparente a un sistema de archivo
gestionado por un servidor remoto. Hay que recordar que los clientes desconocen la ubicación de los
archivos, por lo que se les da una interfaz para que interactúen con el sistema de archivos remoto, tal
como se muestra en la siguiente figura:
El modelo de carga y descarga, consiste en que el cliente accede a un archivo localmente después de
haberlo descargado del servidor, tal como lo muestra la siguiente figura. Cuando el cliente termina de
modificar o de leer el archivo, lo carga nuevamente en el servidor para que el archivo pueda ser utilizado
por otro cliente. Un ejemplo de este modelo es el servicio de FTP (Tanenbaum & Van Steen, Sistemas
Distribuidos, Principios y Paradigmas, 2008).
Gestión de la red.
Algunos sistemas operativos de red avanzados incluyen herramientas de gestión que ayudan a los
administradores a controlar el comportamiento de la red. Cuando se produce un problema en la red,
estas herramientas de gestión permiten detectar síntomas de la presencia del problema y presentar
estos síntomas en un gráfico o en otro formato.
Actividad 1
Administración de redes
Encargada de detectar, registrar, aislar, notificar y corregir fallas en aquellos equipos que son parte de
la red que presenten algún problema que afecte el buen funcionamiento de la red. Es importante
aclarar que cualquier problema que se presente se verá reflejado como una degradación en los
servicios que ofrece la red. El proceso inicia desde la detección y determinación de síntomas hasta el
registro del problema y su solución.
Administración de la Seguridad (Security Management):
Topología Anillo
En esta topología los datos se transmiten de una computadora a otra hasta que llegan a la
computadora de destino. El cable transfiere una trama de datos completa permitiendo un bit por vez
en el cable. Para enviar datos los computadores tienen que esperar su turno. Esta topología se
conoce como activa ya que la señal es regenerada al pasar por cualquier PC de la topología.
Topología de Bus:
Es fácil de diseñar y de instalar y también es escalable para agregar más estaciones de trabajo o servidores
solo se debe conectar otro cable al dispositivo central o switche.
Otra de las ventajas es que si un cable falla solo se verá afectado el dispositivo que este al otro extremo de
ese cable el resto de la red seguirá funcionando. Haciendo así mas fácil un diagnostico de fallas en la red.
Sin embargo una de las grandes desventajas es su dependencia del dispositivo central sea un switche o un
router. si este dispositivo falla se verá afectada toda la red.
Topología en estrella extendida.
Una topología en estrella extendida se crea mediante el enlace de varias topologías en estrella a un
punto central la desventaja es la misma que la de topología en estrella. Es la topología de red más
utilizada en medianas y grandes organizaciones.
La topología jerárquica impone un orden en la red por medio de agrupamiento de equipos basándose en
la ubicación física en la red.
La desventaja de la topología jerárquica es que si un cable falla puede afectar a los demás host que
necesitan este cable para poder acceder a otros lugares de la red.
Topología de Anillo Doble
La topología de anillo doble tiene el beneficio de proporcionar rutas predecibles para la recuperación
de errores. La topología de anillo doble ofrece mayor confiabilidad que la topología de anillo sencillo ya
que posee dos rutas para que el tráfico fluya. si se presenta una falla los sensores pueden sellar la
sección con fallas y restaurar la conectividad por medio del otro anillo.
Topología en Malla
La topología en malla proporciona redundancia en una red conectando un host con cada uno de los
otros host que se encuentra en la red.
Es una solución muy costosa. Esta topología es implementada cuando no se puede interrumpir las
comunicaciones es muy confiada pero muy compleja y ya desplazada por la topología de estrella o
estrella extendida.
Actividad 2
SISTEMAS OPERATIVOS DISTRIBUIDOS (OSD)
Uno, el hardware. La definición habla de máquinas autónomas, es decir, que pueden operar sin la
supervisión de ninguna otra.
Dos, el software, que debe conseguir que los usuarios del sistema lo vean como una máquina central
convencional única.
Permiten distribuir trabajos, tareas o procesos, entre un conjunto de procesadores. Puede ser que este
conjunto de procesadores esté en un equipo o en diferentes, en este caso es trasparente para el usuario.
Existen dos esquemas básicos de éstos. Un sistema fuertemente acoplado es a es aquel que comparte la
memoria y un reloj global, cuyos tiempos de acceso son similares para todos los procesadores. En un
sistema débilmente acoplado los procesadores no comparten ni memoria ni reloj, ya que cada uno cuenta
con su memoria local.
Los sistemas distribuidos deben de ser muy confiables, ya que si un componente del sistema se compone
otro componente debe de ser capaz de reemplazarlo.
Entre los diferentes Sistemas Operativos distribuidos que existen tenemos los siguientes: Sprite, Solaris-
MC, Mach, Chorus, Spring, Amoeba, Taos, etc.
Características de Sistemas Distribuidos
Trasparencia: La trasparencia total es difícil de lograr. Parcialmente, el concepto de transparencia puede ser
aplicado a varios aspectos de un sistema distribuido.
La transparencia a la ubicación.
La transparencia a la migración.
La transparencia a la replicación.
La transparencia a la concurrencia.
La transparencia al paralelismo.
Flexibilidad: Este aspecto se refiere a la forma en que debe ser construido el sistema operativo. Conviven dos
escuelas de pensamiento que son las del kernel monolítico y las del sistema operativo basado en microkernel.
La primera sostiene que los servicios del sistema deben residir en el sistema operativo y la segunda que es
preciso extraer todos los servicios posibles fuera del núcleo del sistema operativo y disponerlos en procesos de
usuario, logrando un mayor estructura e independencia en los servicios, que pueden residir en máquinas
diferentes. Hoy en día el kernel monolítico domina el mundo de los sistemas operativos, pero parece que el
futuro se impondrá la filosofía microkernel, debido a su mayor flexibilidad.
Fiabilidad: Una de las motivaciones originales para tratar de construir sistemas distribuidos fue el aumento de
la fiabilidad del sistema. En un sistema con cien UCP's el fallo de uno de ellas no tendrá consecuencias graves,
por que su trabajo será realizado por las otras. En un sistema en el que el sistema de ficheros se reparte en
cuatro servidores, cada uno de ellos con una probabilidad de que en un instante dado sea inoperativo de 0.05,
la probabilidad de que el sistema de ficheros completo no sea operativo es de 0.054 = 0.000006.
Escalabilidad: A pesar de los progresos de los últimos años, con sistemas concretos y desarrollados, el diseño
de sistemas operativos distribuidos es un campo aún poco conocido e investigado. Los actuales sistemas
abarcan como máximo unos cientos de máquinas. A medida que la informática se introduce en las actividades
cotidianas y el ordenador se introduce en los hogares, comienzan a perfilarse sistemas de miles de millones de
máquinas.
En cuanto a los componentes o máquinas, es posible tener un único servidor que atienda a cuatro cientos
millones de hispanohablantes, pero más vale repartir su carga de trabajo entre otros servidores a fin de paliar
los efectos de una interrupción del servicio. En cuanto a las tablas, se puede mantener los números de teléfono
de cuatrocientos millones de personas en una sóla máquina. Supongamos un registro de 50 caracteres. El
listado total requiere un almacenamiento de 50 * 4 * 108 = 20 * 109 = 20 Gbytes, que puede soportar incluso
una única unidad de disco. No obstante, concentrar las peticiones en está máquina saturaría no sólo su UCP
sino las líneas de comunicación que salen y entran en el sistema.
Seguridad en los sistemas operativos de redes
Unidad 4
SISTEMAS MULTIPROCESAMIENTO
Los sistemas de Multiprocesamiento
son aquellos que usan más de un procesador, por lo que admiten la ejecución de varios procesos al mismo
tiempo. Aunque los sistemas de monoprocesamiento son más comunes estos sistemas crecen en
importancia ya que permiten incrementar la cantidad de procesos a ejecutar con respecto a los sistemas de
Monoprocesamiento.
Poseen tres ventajas principales:
Mayor Fiabilidad: ya que las funciones pueden ser distribuidas al tener más de un procesador pues al ocurrir
un fallo en un procesador entonces el sistema no se detiene sino que lo hace más lento.
Algunos ejemplos de Sistemas Operativos de multiprocesamiento son: Ubuntu, Debian, Windows XP,
Windows Vista, entre otros.
Los sistemas operativos multitarea, son ideales para usuarios que realizan varias actividades a la vez. En
este artículo, les vamos a describir qué son los sistemas operativos multitarea y para qué son utilizados
alrededor del mundo.
Lo primero que debemos hacer para comprender lo que son los sistemas operativos multitarea, es sin
lugar a dudas, definirlos. El concepto más utilizado y aceptado alrededor del mundo sobre este tipo de
sistemas operativos, es el siguiente:
El sistema operativo multitarea o multiproceso, como también se le conoce, es aquel sistema que permite
al usuario y al equipo, realizar varias operaciones, funciones o ejecuciones de manera concurrente o
simultánea. Lo que los hace especiales, es que debido a la arquitectura de los CPU´s, los equipos están
diseñados para ejecutar una sola tarea por vez, es decir, se necesitarían varias CPU´s para realizar varias
operaciones simultáneamente. Sin embargo, los sistemas operativos multitarea permiten realizar varias
operaciones a la vez, debido a que realizan una operación denominada cambio de contexto, la cual actúa
de la siguiente manera: Quita un proceso del CPU, ingresa uno nuevo, y luego vuelve a ingresar el
proceso que quitó del CPU en una especie de cola de ejecución, sin que el procesador se entere de todo
lo que está pasando, de modo, que pueda realizar varias tareas simultáneas. Es como una especie de
engaño, que permite mejorar el rendimiento de los ordenadores y facilitar el trabajo a los usuarios.
Tipos de sistemas operativos multitarea.
Cooperativos: Estos otorgan a los procesos la facultad de ceder intervalos de trabajo al sistema operativo,
según las necesidades del usuario, son un poco problemáticos, ya que por momentos las ejecuciones se
detienen. En la actualidad son muy poco utilizados.
Preferentes: Estos se encargan de administrar los procesos, repartiendo el uso del CPU, entre los procesos
que estén esperando ser ejecutados.
Real: Estos sistemas sólo se ejecutan en equipos con multiprocesadores, como su nombre lo indica,
permiten ejecutar varias tareas al mismo tiempo, en varios microprocesadores a la vez.
Sistemas Operativos Multiproceso
Las computadoras que tienen mas de un CPU son llamadas multiproceso.
Un sistema operativo multiproceso coordina las operaciones de las computadoras multiprocesadoras. Ya que cada CPU en una
computadora de multiproceso puede estar ejecutando una instrucción, el otro procesador queda liberado para procesar otras
instrucciones simultáneamente.
Al usar una computadora con capacidades de multiproceso incrementamos su velocidad de respuesta y procesos. Casi todas las
computadoras que tienen capacidad de multiproceso ofrecen una gran ventaja.
Los primeros Sistemas Operativos Multiproceso realizaban lo que se conoce como:
•Multiproceso asimétrico: Una CPU principal retiene el control global de la computadora, así como el de los otros procesadores.
Esto fue un primer paso hacia el multiproceso pero no fue la dirección ideal a seguir ya que la CPU principal podía convertirse en un
cuello de botella.
•Multiproceso simétrico: En un sistema multiproceso simétrico, no existe una CPU controladora única. La barrera a vencer al
implementar el multiproceso simétrico es que los Sistema Operativo tienen que ser rediseñados o diseñados desde el principio para
trabajar en u n ambiente multiproceso.
Las extensiones de Unix, que soportan multiproceso asimétrico ya están disponibles y las extensiones simétricas se están haciendo
disponibles.
SISTEMA OPERATIVO MULTIUSUARIO
Permite que dos o más usuarios utilicen sus programas al mismo tiempo. Algunos sistemas operativos
permiten a centenares o millares de usuarios al mismo tiempo.
1) Windows 3.1: Microsoft tomo una decisión, hacer un sistema operativo que tuviera una interfaz gráfica amigable para el
usuario, y como resultado obtuvo Windows. Este sistema muestra íconos en la pantalla que representan diferentes archivos o
programas, a los cuales se puede accesar al darles doble click con el puntero del mouse.
2) Windows NT: Esta versión de Windows se especializa en las redes y servidores. Con este SO se puede interactuar de forma
eficaz entre dos o más computadoras.
3) Mac OS: Las computadoras Macintosh no serían tan populares como lo son si no tuvieran el Mac OS como sistema operativo
de planta. Este sistema operativo es tan amigable para el usuario que cualquier persona puede aprender a usarlo en muy poco
tiempo. Por otro lado, es muy bueno para organizar archivos y usarlos de manera eficaz. Este fue creado por Apple Computer, Inc.
4) UNIX: El sistema operativo UNIX fue creado por los laboratorios Bell
de AT&T en 1969 y es ahora usado como una de las bases para la
supercarretera de la información. Unix es un SO multiusuario y
multitarea, que corre en diferentes computadoras, desde
supercomputadoras, Mainframes, Minicomputadoras, computadoras
personales y estaciones de trabajo. Esto quiere decir que muchos
usuarios puede estar usando una misma computadora por medio de
terminales o usar muchas de ellas.
5) LINUX es un sistema operativo, compatible Unix Dos características
muy peculiares lo diferencian del resto de los sistemas que podemos
encontrar en el mercado, la primera, es que es libre, esto significa que
no tenemos que pagar ningún tipo de licencia a ninguna casa
desarrolladora de software por el uso del mismo, la segunda, es que
el sistema viene acompañado del código fuente. El sistema lo forman
el núcleo del sistema (kernel) mas un gran numero de programa /
librerías que hacen posible su utilización.