Está en la página 1de 10

Sistemas Operativos como maquina extendida

La arquitectura (conjunto de instrucciones, organización de


memoria, E/S y estructura de bus) de la mayoría de las
computadoras a nivel de lenguaje máquina es primitiva y
compleja de programar, en especial para la entrada/salida.
Para hacer este punto más concreto, considere la forma en
que se lleva a cabo la E/S de disco flexible mediante los
dispositivos controladores (device controllers) compatibles
NEC PD765 que se utilizan en la mayoría de las
computadoras personales basadas en Intel (a lo largo de este
libro utilizaremos los términos “disco flexible” y “diskette”
indistintamente).
Utilizamos el disco flexible como un ejemplo debido a que, aunque obsoleto, es mucho más simple
que un disco duro moderno. El PD765 tiene 16 comandos, cada uno de los cuales se especifica
mediante la carga de 1 a 9 bytes en un registro de dispositivo. Estos comandos son para leer y
escribir datos, desplazar el brazo del disco y dar formato a las pistas, así como para inicializar,
detectar,
restablecer y recalibrar el dispositivo controlador y las unidades.
Los comandos más básicos son read y write (lectura y escritura), cada uno de los cuales requiere  13
parámetros, empaquetados en 9 bytes. Estos parámetros especifican elementos tales como  la
dirección del bloque de disco a leer, el número de sectores por pista, el modo de grabación  utilizado
en el medio físico, el espacio de separación entre sectores y lo que se debe hacer con una marca de
dirección de datos eliminados. Si el lector no comprende estos tecnicismos, no se preocupe:  ése es
precisamente el punto, pues se trata de algo bastante oscuro. Cuando la operación se completa, el
chip del dispositivo controlador devuelve 23 campos de estado y error, empaquetados en  7 bytes.
Como si esto no fuera suficiente, el programador del disco flexible también debe estar
constantemente
al tanto de si el motor está encendido o apagado. Si el motor está apagado, debe encenderse  (con un
retraso largo de arranque) para que los datos puedan ser leídos o escritos. El motor no se debe dejar
demasiado tiempo encendido porque se desgastará. Por lo tanto, el programador se ve obligado a
lidiar con el problema de elegir entre tener retrasos largos de arranque o desgastar los discos
flexibles (y llegar a perder los datos).
Sin entrar en los detalles reales, debe quedar claro que el programador promedio tal vez no
desee involucrarse demasiado con la programación de los discos flexibles (o de los discos duros,
que son aún más complejos). En vez de ello, lo que desea es una abstracción simple de alto nivel
que se encargue de lidiar con el disco. En el caso de los discos, una abstracción común sería que el
disco contiene una colección de archivos con nombre. Cada archivo puede ser abierto para lectura o
escritura, después puede ser leído o escrito y, por último, cerrado. Los detalles, tales como si la
grabación debe utilizar o no la modulación de frecuencia y cuál es el estado del motor en un
momento dado, no deben aparecer en la abstracción que se presenta al programador de aplicaciones.
La abstracción es la clave para lidiar con la complejidad. Las buenas abstracciones convierten  una
tarea casi imposible en dos tareas manejables. La primera de éstas es definir e implementar las
abstracciones; la segunda, utilizarlas para resolver el problema en cuestión. Una abstracción que
casi cualquier usuario de computadora comprende es el archivo: es una pieza útil de información,
como una fotografía digital, un mensaje de correo electrónico almacenado o una página Web. Es
más fácil lidiar con fotografías, correos electrónicos y páginas Web que con los detalles de los
discos, como en el caso del disco flexible descrito. El trabajo del sistema operativo es crear buenas
abstracciones para después implementar y administrar los objetos abstractos entonces creados. En
este libro hablaremos mucho acerca de las abstracciones, dado que son claves para comprender
los sistemas operativos.
Este punto es tan importante que vale la pena repetirlo en distintas palabras. Con el debido  respeto a
los ingenieros industriales que diseñaron la Macintosh, el hardware es feo. Los procesadores,
memorias, discos y otros dispositivos reales son muy complicados y presentan interfaces
difíciles, enredadas, muy peculiares e inconsistentes para las personas que tienen que
escribir software para utilizarlos. Algunas veces esto se debe a la necesidad de tener compatibilidad
con el hardware anterior; otras, a un deseo de ahorrar dinero, y otras más, a que los diseñadores de
hardware no tienen idea (o no les importa) qué tan grave es el problema que están ocasionando para
el software. Una de las principales tareas del sistema operativo es ocultar el hardware y presentar
a los programas (y a sus programadores) abstracciones agradables, elegantes, simples y
consistentes con las que puedan trabajar. Los sistemas operativos ocultan la parte fea con la parte
hermosa.
Hay que recalcar que los verdaderos clientes del sistema operativo son los programas de
aplicación (a través de los programadores de aplicaciones, desde luego). Son los que tratan
directamente con el sistema operativo y sus abstracciones. En contraste, los usuarios finales tienen
que lidiar con las abstracciones que proporciona la interfaz de usuario, ya sea un shell de línea de
comandos o una interfaz gráfica. Aunque las abstracciones en la interfaz de usuario pueden ser
similares a las que proporciona el sistema operativo, éste no siempre es el caso. Para aclarar este
punto, considere el escritorio normal de Windows y el indicador para comandos orientado a texto.
Ambos son programas que se ejecutan en el sistema operativo Windows y utilizan las abstracciones
que este sistema proporciona, pero ofrecen interfaces de usuario muy distintas. De manera similar,
un usuario de Linux que ejecuta Gnome o KDE ve una interfaz muy distinta a la que ve un usuario
de Linux que trabaja directamente encima del Sistema X Window subyacente (orientado a texto),
pero las abstracciones del sistema operativo subyacente son las mismas en ambos casos. En este
libro estudiaremos detalladamente las abstracciones que se proporcionan a los programas de
aplicación, pero trataremos muy poco acerca de las interfaces de usuario, que es un tema bastante
extenso e importante, pero que sólo está relacionado con la periferia de los sistemas operativos.
Los sistemas operativos realizan dos funciones básicas que no están relacionadas. Uno de ellos, aquí
explicado, es proporcionar a los programadores de aplicaciones (y a los programas de aplicaciones,
naturalmente) un conjunto abstracto de recursos simples, en vez de los complejos conjuntos de
hardware

¿Qué es un controlador o Drivers?


Es difícil proporcionar una única definición precisa para el término driver. En el sentido más
fundamental, un controlador es un componente de software que permite al sistema operativo y un
dispositivo comunicarse entre sí.
Por ejemplo, supongamos que una aplicación debe leer algunos datos de un dispositivo. La
aplicación llama a una función implementada por el sistema operativo y el sistema operativo llama
a una función implementada por el controlador. El controlador, escrito por la misma empresa que
diseñó y fabricó el dispositivo, sabe cómo comunicarse con el hardware del dispositivo para obtener
los datos. Una vez que el controlador obtiene los datos del dispositivo, devuelve los datos al sistema
operativo, que lo devuelve a la aplicación.

¿Qué es el firmware?
Por definición, se conoce como firmware o Soporte Lógico Inalterable a un programa informático
que establece la lógica de más bajo nivel de un dispositivo. Muy ligado a la electrónica del mismo,
se encarga de interactuar con el hardware (la parte física y material) y controlar los circuitos para
que ejecuten las instrucciones externas de manera correcta.
Traducido a un lenguaje más llano, el firmware sería un tipo específico de software (conjunto de
programas) que se encuentra integrado en una o más piezas del hardware del equipo y que se
encarga de manejar este mismo. Su importancia es capital y se considera uno de los tres pilares
dentro de un esquema de diseño electrónico, de ahí que venga preinstalado de fábrica.
La primera aparición del término fue en 1967, en la revista ‘Datamation’. Acuñado por Ascher
Opler se deriva de la frase “software firme, fijo o sólido”. En principio, se refería a una pequeña
zona de la Memoria RAM especializada encargada de definir e implementar un conjunto de
instrucciones del computador. Después se ampliaría para incluir cualquier tipo de micro código
inserto en la Memoria ROM.
Los dispositivos que llevan firmware

El ejemplo más clásico cuando hablamos de firmware son: el BIOS o la UEFI de un ordenador,


encargadas de que se inicie de manera correcta tras hacer una comprobación de todo el hardware del
equipo, es decir, discos duros, memoria, placa base o tarjeta gráfica. Pero encontrarás firmware en
casi todo que te rodea, como en:

 El mando de la televisión, sin duda, uno de los dispositivos que más se usan a lo largo del
día.
 Los periféricos de tu ordenador, que son en esencia mini ordenadores de propósito
especial.
 El smartphone, en el que el firmware interacciona para que hardware y software se
‘hablen’.
 El Router donde resulta crucial para que la red no se caiga y permita trabajar o disfrutar de
ocio online. 
 En reproductores de música portátiles, que se actualizan para reproducir nuevos
formatos.
 En los Coches, donde se encargan de tareas como la música y la climatización.
 En la lavadora o el lavavajillas, para traducir nuestra selección de modo de
funcionamiento.
 En semáforos y otras señales electrónicas que permiten un tráfico Fluido y sin Accidentes.

¿Por qué es importante mantener el firmware actualizado?


Una de las recomendaciones habituales para mantener los equipos seguros y en buen estado de
funcionamiento es la de actualizar el software. El caso del firmware sería similar: gracias a sus
actualizaciones, los fabricantes pueden corregir bugs que hayan aparecido tras su llegada al
mercado. También pueden añadir nuevas funcionalidades e incluso incrementar el rendimiento de
algunos componentes.
Diferencia entre firmware y drivers
Para los no iniciados pueden parecer similares, al tratarse en ambos casos de software creado para
hacer funcionar un dispositivo, pero nada más lejos de la realidad. La principal diferencia es que el
código del firmware va instalado en un módulo de memoria propio, mientras que el driver forma
parte del sistema operativo del equipo y, por lo tanto, se graba en el disco duro.
Además, el firmware es el nivel de software más bajo que interactúa con el hardware, mientras que
los drivers se ubican en niveles superiores. Para comprenderlo mejor, un driver defectuoso puede
hacer que un teclado o un ratón no se comporten de forma correcta, pero, si falla el firmware, es
probable que el dispositivo no encienda o resulte inoperativo.
¿Qué es un proceso?
Un proceso es un concepto manejado por el sistema operativo que consiste en el conjunto formado
por: Las instrucciones de un programa destinadas a ser ejecutadas por el microprocesador. Su
estado de ejecución en un momento dado, esto es, los valores de los registros de la CPU para dicho
programa.

¿Qué es un archivo?
Un archivo es un contenedor de información. La mayoría de los archivos que se utilizan contienen
información (datos) en un formato determinado: un documento, una hoja de cálculo, un gráfico. El
formato es la disposición de los datos dentro del archivo. El formato del archivo se conoce
como tipo de datos.

Carpetas
Una carpeta es un contenedor de archivos, similar a la carpeta que puede haber en un armario
archivador. De hecho, el Gestor de archivos utiliza un icono de carpeta para representarla. Una
carpeta puede contener otras carpetas, a veces denominadas subcarpetas. Mediante unas y otras se
pueden crear varios tipos de niveles de organización que forman una jerarquía. En otros contextos,
las carpetas son a menudo conocidas como directorios.

Objetos
Como los archivos y las carpetas están representados en el Gestor de archivos en forma de iconos,
el término objeto se utiliza para describir a ambos elementos. Los objetos son elementos
diferenciados del escritorio que se pueden crear y manipular.
En el escritorio, las aplicaciones también se pueden representar como objetos. Por ejemplo, el
Gestor de aplicaciones contiene objetos que representan las aplicaciones disponibles en el sistema.

Rutas
A menudo la ubicación de un archivo se especifica mediante una lista de las carpetas y subcarpetas
que conducen al archivo; esta lista se denomina ruta de acceso.

Estructura de un sistema operativo

Se considera la organización interna del sistema operativo y para ello


debemos observar dos tipos de requisitos:

1. Requisitos del usuario:

-    Sistema fácil de usar y aprender

-    Seguro
-    Rápido

-    Adecuado al uso al que se quiere destinar

1. 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 software del


sistema operativo.

El sistema operativo se divide en partes o niveles, cada uno


perfectamente definido y con un claro interface (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”:

 
 

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.

Sistema por Capas


consiste en organizar el sistema operativo como una jerarquía de capas, cada una construida sobre la
inmediata inferior. El primer sistema construido de esta manera fue el sistema THE (Technische
Hogeschool Eindhoven), desarrollado en Holanda por E. W. Dijkstra (1968) y sus estudiantes.
• Capa 0: Asignación del procesador y multiprogramación.
En esta capa se proporciona la multiprogramación básica de la CPU, esto quiere decir que trabaja en
la asignación del procesador y también se alteran los procesos cuando se ocurren las interrupciones
o expiran los cronómetros. Dichos sistemas constan de procesos secuénciales, estos se pueden
programar sin importar que varios procesos se estén ejecutando en el mismo procesador.

Capa 1: administración de la memoria y el disco.


Aquí se administra la memoria, al mismo tiempo se asignaba el espacio de memoria principal para
los diversos procesos y un depósito de palabras de 512K en el cual se utilizaba para almacenar
partes de los procesos, en este caso las paginas, ya que no existía un lugar en la memoria principal.
En esta capa no se debe de preocupar que los procesos que estén en memoria o en el deposito, esto
se debe que el software de esta capa se encarga de garantizar que las paginas lleguen a la memoria
cuando fueran necesarias.
Capa 2: comunicación operador - proceso
En esta capa se encarga de la comunicación entre el proceso y la consola de usuario. Arriba de esta
capa, cada proceso tiene su propia consola.
• Capa 3: control de entrada y salida.
En la capa 3 se controlan los dispositivos de E/S y también guarda en buffers los flujos de
información entre los diferentes dispositivos. Por encima de esta capa, los procesos pueden trabajar
con dispositivos específicos de E/S teniendo propiedades adecuadas.
• Capa 4: programas de usuario.
Aquí se localizan los programas de los usuarios, estos no se preocupan por el proceso, memoria,
consola o control de E/S, que se tuvieran que utilizar.
• Capa 5: el operador.
En esta capa se localiza el proceso operador del sistema.

Máquina Virtual
Una máquina virtual (MV) es un programa que se ejecuta en hardware host que brinda un entorno
aislado con su propio sistema operativo (SO) huésped y aplicaciones, independientes del SO host u
otras máquinas virtuales que se ejecutan en el sistema host.

Las máquinas virtuales operan idénticas al hardware físico


Desde la perspectiva del usuario final, la máquina virtual brinda casi la misma experiencia que el
entorno de un solo PC. Los archivos y aplicaciones pueden cargarse, almacenarse, actualizarse y
utilizarse de la misma manera que en un PC físico (es decir, hardware), sin afectar el sistema host u
otras máquinas virtuales. Los recursos físicos del sistema host (como CPU, GPU, memoria y
almacenamiento) se asignan a la máquina virtual por medio de una capa de software llamada
hipervisor. Los dispositivos de hardware virtual que suministra el hipervisor se mapean con el
hardware físico del sistema host (por ejemplo, un disco duro virtual de la máquina virtual se
almacena como archivo en el disco duro host)

No es casual que las máquinas virtuales estén separadas del hardware


Las máquinas virtuales tienen varias aplicaciones prácticas. Dado que separan el entorno operativo
virtual del hardware físico, las máquinas virtuales son útiles para probar aplicaciones
potencialmente maliciosas. Antes de implementar una actualización de SO, los equipos de TI
pueden probar el SO en una máquina virtual para asegurarse de que las aplicaciones empresariales
críticas sigan funcionando con la actualización. Las máquinas virtuales también pueden ser
utilizadas por equipos de desarrolladores para probar nuevas aplicaciones o actualizaciones en un
rango de versiones y sistemas operativos. Si se necesita ejecutar una aplicación antigua que requiere
un SO heredado, se puede usar una máquina virtual para ejecutarla.

Tipos de máquinas virtuales


En general, hay dos tipos de máquinas virtuales: máquinas virtuales de procesos y de sistemas. 
Una máquina virtual de procesos, también conocida como MV de aplicación o entorno de tiempo
de ejecución gestionado (MRE) es una plataforma virtual utilizada para ejecutar un solo proceso
como aplicación en una máquina host. Una vez terminado el proceso, se destruye la máquina
virtual.
Una máquina virtual de sistema brinda un sistema completo, así que funciona como un sistema de
hardware. Cada máquina virtual de sistema puede ejecutar su propio SO y múltiples aplicaciones en
él. Este tipo de sistema requiere el uso de un hipervisor para acceder a los recursos de hardware de
la máquina host.

También podría gustarte