Sunteți pe pagina 1din 32

REPUBLICA BOLIVARIANA DE VENEZUELA

MINISTERIO DEL PODER POPULAR PARA LA DEFENSA


UNIVERSIDAD NACIONAL EXPERIMENTAL DE LAS FUERZAS ARMADAS
NUCLE CARACAS; SEDE CHUAO
SECCION I; TURNO NOCTURNO; INGENIERIA EN SISTEMAS
CATEDRA: GERENCIA DE LA INFORMATICA
PROFESOR: PEDRO FERNANDEZ


SISTEMAS OPERATIVOS (ADMINISTRACION Y CONTROL)




AUTOR:




Caracas, 10 de abril de 2014





















INTRODUCCION




















Qu es un sistema operativo?

A pesar de que todos nosotros usamos sistemas operativos casi a diario,
es difcil definir qu es un sistema operativo. En parte, esto se debe a que los
sistemas operativos realizan dos funciones diferentes.
Proveer una mquina virtual, es decir, un ambiente en el cual el usuario
pueda ejecutar programas de manera conveniente, protegindolo de los detalles y
complejidades del hardware.
Administrar eficientemente los recursos del computador.
El sistema operativo como mquina virtual
Un computador se compone de uno o ms procesadores o CPUs,
memoria principal o RAM, memoria secundaria (discos), tarjetas de expansin
(tarjetas de red, modems y otros), monitor, teclado, mouse y otros dispositivos. O
sea, es un sistema complejo. Escribir programas que hagan uso correcto de todos
estos componentes no es una tarea trivial. Peor an si hablamos de uso ptimo. Si
cada programador tuviera que preocuparse de, por ejemplo, cmo funciona el
disco duro del computador, teniendo adems siempre presentes todas las posibles
cosas que podran fallar, entonces a la fecha se habra escrito una cantidad
bastante reducida de programas.
Es mucho ms fcil decir `escriba lo apuntado por este puntero al final del
archivo "datos"', que
Poner en determinados registros del controlador de disco la direccin que
se quiere escribir, el nmero de bytes que se desea escribir, la posicin de
memoria donde est la informacin a escribir, el sentido de la operacin (lectura o
escritura), amn de otros parmetros; Decir al controlador que efectu la
operacin.
Esperar decidir qu hacer si el controlador se demora ms de lo esperado
(cunto es "lo esperado"?).
Interpretar el resultado de la operacin (una serie de bits).
Reintentar si algo anduvo mal, etc.
Adems, habra que reescribir el programa si se instala un disco diferente
o se desea ejecutar el programa en otra mquina.
Hace muchos aos que qued claro que era necesario encontrar algn
medio para aislar a los programadores de las complejidades del hardware. Esa es
precisamente una de las tareas del sistema operativo, que puede verse como una
capa de software que maneja todas las partes del sistema, y hace de intermediario
entre el hardware y los programas del usuario. El sistema operativo presenta, de
esta manera, una interfaz o mquina virtual que es ms fcil de entender y de
programar que la mquina "pura". Adems, para una misma familia de mquinas,
aunque tengan componentes diferentes (por ejemplo, monitores de distinta
resolucin o discos duros de diversos fabricantes), la mquina virtual puede ser
idntica: el programador ve exactamente la misma interfaz.
El sistema operativo como administrador de recursos
La otra tarea de un sistema operativo consiste en administrar los recursos
de un computador cuando hay dos o ms programas que ejecutan
simultneamente y requieren usar el mismo recurso (como tiempo de CPU,
memoria o impresora).
Adems, en un sistema multiusuario, suele ser necesario o conveniente
compartir, adems de dispositivos fsicos, informacin. Al mismo tiempo, debe
tenerse en cuenta consideraciones de seguridad: por ejemplo, la informacin
confidencial slo debe ser accesada por usuarios autorizados, un usuario
cualquiera no debiera ser capaz de sobrescribir reas crticas del sistema, etc. (En
este caso, un usuario puede ser una persona, un programa, u otro computador).
En resumen, el sistema operativo debe llevar la cuenta acerca de quin est
usando qu recursos; otorgar recursos a quienes los solicitan (siempre que el
solicitante tenga derechos adecuados sobre el recurso); y arbitrar en caso de
solicitudes conflictivas.

Recursos administrados por un sistema operativo
Los recursos administrados por un sistema operativo son:
Tiempo del procesador.
Memoria Principal.
Dispositivos Perifricos.
Software.
Tiempo del procesador.
El recurso ms importante en el sistema de computacin es el procesador
central. Sin acceso al CPU. Los programas no pueden ejecutarse. La estrategia
ms simple para asignar este recurso sera asignarlo a un trabajo de usuario hasta
que finalice. Esta estrategia es usada en muchos computadores. Sin embargo la
mayora de los programas gastan ms de la mitad de su tiempo esperando que
terminen operaciones de Entrada/Salida. Esto nos lleva a tratar de compartir el
tiempo del CPU entre varios usuarios, lo cual implica un mecanismo ms complejo
que nos permita utilizar eficientemente el tiempo del procesador y explotar el
paralelismo existente con las operaciones de Entrada/Salida.
Memoria Principal
Un segundo recurso que es escaso en la mayora de los computadores es
la memoria principal. Un programa se puede ejecutar solamente si tiene asignada
la memoria fsica que necesita, ya que el procesador accesa las instrucciones y
los datos que se encuentran en esa memoria fsica. Si el sistema operativo
soporta la ejecucin simultnea de varios trabajos entonces la memoria est
compartida entre esos varios trabajos. En estos casos el S.O. debe asignar
eficientemente la memoria a esos trabajos, evitando desperdicios.
El objetivo principal de los diferentes esquemas de administracin de
memoria (que se estudiarn en detalle aqu), es la reduccin del desperdicio que
ocurre como consecuencia de los diferentes tamaos de los programas de
usuario. La mayora de estos esquemas son complejos y generan un overhead
(tiempo durante el cual el CPU procesa al S.O.) considerable, siendo muy difcil
cuantitativamente la contribucin de estos esquemas a la eficiencia general del
sistema.
Dispositivos Perifricos
La mayora de los dispositivos perifricos se asignan a un solo usuario, no
se comparten entre varios usuarios. Esta situacin puede ser muy ineficiente en el
caso de algunos dispositivos tales como la impresora, si el trabajo al que fuese
asignado este dispositivo tuviese un tiempo largo de ejecucin. Por otra parte, los
dispositivos de acceso directo son compartidos entre los usuarios a travs del
sistema de archivos y pueden ocurrir demoras derivadas del uso compartido que
pudieran ser intolerables en un momento dado.
La asignacin de los dispositivos a los usuarios tiene implicaciones muy
fuertes en la eficiencia y comportamiento del sistema de computacin. Dado que la
mayora de los equipos incluye una sola impresora, los sistemas operativos
incluyen normalmente un sistema de SPOOLING (operaciones perifricas
simultneas en lnea) que evita las ineficiencias que se generaran si este
dispositivo fuese asignado a un trabajo por vez. Sin embargo, en computadores
pequeos, el overhead ocasionado por el spooler sera intolerable y pudiera ser tal
vez ms efectivo abortar y recomenzar algn trabajo.
Por otra parte el uso no controlado de los dispositivos por parte de los
usuarios puede ocasionar "trancas". El sistema pudiera llegar a estar procesando
varios trabajos que se encuentren simultneamente trancados (Deadlock) sin
realizar ningn tipo de trabajo til.
Software
Los recursos de software de un sistema de computacin, consisten en las
funciones disponibles al usuario con el objeto de administrar datos y controlar la
ejecucin de programas. Entre estos recursos se encuentran los servicios de
administracin de archivos, los despachadores, libreras del sistema y rutinas de
utilidad.
El mtodo ms utilizado para permitir a varios usuarios compartir un
recurso de software, es haciendo este recurso de software reentrante. La
utilizacin de software reentrante, evita tener en la memoria varias copias de ese
software, situacin que sera muy ineficiente. En computadores pequeos puede
ser imposible la implementacin de programas reentrantes.
Evolucin de los sistemas operativos
Los sistemas operativos y la arquitectura de computadores han
evolucionado de manera interrelacionada: para facilitar el uso de los
computadores, se desarrollaron los sistemas operativos. Al construir y usar los
sistemas operativos, se hace obvio que ciertos cambios en la arquitectura los
simplificara. Por eso, es conveniente echar una mirada a la historia.
La primera generacin (1945-1955): tubos de vaco
Lo cierto es que el primer computador digital fue diseado por el
matemtico ingls Charles Babbage hace cerca de siglo y medio. Era un
computador totalmente mecnico, que Babbage nunca pudo construir,
principalmente debido a que la tecnologa de la poca no era capaz de producir
las piezas con la precisin requerida.
Despus de eso, poco se hizo hasta la segunda guerra: alrededor de 1940
se construyeron las primeras mquinas calculadoras usando tubos de vaco. Estas
mquinas de varias toneladas de peso eran diseadas, construidas, programadas
y operadas por el mismo grupo de personas. No haba ni lenguajes de
programacin, ni compiladores; mucho menos sistema operativo. Cada programa
se escriba en lenguaje de mquina, usando tableros con enchufes e interruptores
y tena que manejar todo el sistema (lo que era factible gracias a que el
programador era el mismo que dise y construy la mquina). Con el tiempo se
introdujeron las tarjetas perforadas, para reemplazar al tablero, pero el sistema era
esencialmente el mismo.

La segunda generacin (1955-1965): transistores y procesamiento
por lotes
La introduccin de los transistores permiti aumentar sustancialmente la
confiabilidad de los computadores, lo que a su vez hizo factible construir mquinas
comerciales. Por primera vez hubo una separacin entre diseadores,
constructores, y programadores.
La aparicin de los primeros compiladores (de FORTRAN) facilit la
programacin, a costa de hacer mucho ms compleja la operacin de los
computadores. Por ejemplo, para probar un programa en FORTRAN recin
escrito, el programador deba esperar su turno, y:
Cargar compilador de FORTRAN, tpicamente desde una cinta magntica.
Poner el alto de tarjetas perforadas correspondientes al programa
FORTRAN y correr el compilador.
El compilador genera cdigo en assembler, as que hay que cargar ahora
el ensamblador para traducirlo a lenguaje de mquina. Este paso requiere poner
otra cinta con el ensamblador. Ejecutar el ensamblador, para generar el programa
ejecutable.
Ejecutar el programa
Si hay errores en cualquiera de estos pasos, el programador deba
corregir el programa y comenzar todo de nuevo. Obviamente, mientras el
programador pona cintas y tarjetas, y mientras se devanaba los sesos para
descubrir por qu el programa no funciona, la CPU de millones de dlares de
costo se mantena completamente ociosa. Ms que rpido, se idearon
mecanismos para mantener a la CPU siempre ocupada. El primero fue separar el
rol de programador del rol de operador. Un operador profesional demoraba menos
en montar y desmontar cintas, y poda acumular lotes de trabajos con
requerimientos similares: por ejemplo, si se acumula la compilacin de varios
programas FORTRAN, entonces el compilador de FORTRAN se carga una sola
vez para todos los trabajos.
An as, en la transicin de un trabajo a otro la CPU se mantena
desocupada. Aparecieron entonces los monitores residentes, que fueron los
precursores de los sistemas operativos. Un monitor residente es un pequeo
programa que est siempre en la memoria del computador, desde que ste se
enciende. Cuando un programa termina, se devuelve el control al monitor
residente, quien inmediatamente selecciona otro programa para ejecutar. Ahora
los programadores, en vez de decirle al operador qu programa cargar, deban
informrselo al monitor (mediante tarjetas de control especiales):
$JOB
$FTN
Programa FORTRAN
$LOAD
$RUN
Datos para el programa
$END
Esto se conoce como procesamiento por lotes: el programador deja su alto
de tarjetas, y despus vuelve a retirar la salida que se emite por la impresora (y
que puede ser nada ms que la notificacin de que el programa tena un error de
sintaxis).
La tercera generacin (1965-1980): circuitos integrados y
multiprogramacin
El procesamiento por lotes evita que la CPU tenga que esperar tareas
ejecutadas por lentos seres humanos. Pero ahora el cuello de botella se traslad a
los dispositivos mecnicos (impresoras, lectoras de tarjetas y de cinta),
intrnsecamente ms lentos que que las CPUs electrnicas. Para resolver esto,
aparece, dentro de la tercera generacin de computadores, la multiprogramacin:
varios trabajos se mantienen permanentemente en memoria; cuando uno de ellos
tiene que esperar que una operacin (como grabar un registro en cinta) se
complete, la CPU contina con la ejecucin de otro trabajo. Si se mantiene un
nmero suficiente de trabajos en la memoria, entonces la CPU puede estar
siempre ocupada.
Pero el sistema sigue siendo esencialmente un sistema de procesamiento
por lotes; los programadores no interactan en lnea con el computador, los
tiempos de respuesta desde que se deja un trabajo para ejecucin hasta conocer
el resultado son demasiado grandes. (En cabio, los computadores de primera
generacin eran interactivos!) De ah nace el concepto de tiempo compartido que
es una variante de la multiprogramacin en la cual una CPU atiende
simultneamente los requerimientos de varios usuarios conectados en lnea a
travs de terminales. Ya que los usuarios humanos demoran bastante entre la
emisin de un comando y otro, una sola CPU es capaz de atender, literalmente, a
cientos de ellos simultneamente (bueno, en realidad, uno despus de otro, pero
los usuarios tienen la ilusin de la simultaneidad). Al mismo tiempo, cuando no hay
ningn comando que ejecutar proveniente de un usuario interactivo, la CPU puede
cambiar a algn trabajo por lote.
La cuarta generacin (1980- ): computadores personales
Con el advenimiento de la integracin a gran escala, que permiti
concentrar en un solo chip miles, y luego millones de transistores, naci la era de
la computacin personal. Los conceptos utilizados para fabricar los sistemas
operativos de la tercera generacin de computadores siguen siendo, en general,
adecuados para la cuarta generacin. Algunas diferencias destacables:
Dado los decrecientes costos de las CPUs, ya no es nada de grave que un
procesador est desocupado.
La creciente capacidad de las CPUs permite el desarrollo de interfaces
grficas; buena parte del cdigo de los sistemas operativos de hoy es para
manejar la interfaz con el usuario.
Los sistemas paralelos (un computador con varias CPUs), requieren
sistemas operativos capaces de asignar trabajos a los distintos procesadores.
Las redes de computadores y sistemas distribuidos abren nuevas
posibilidades e imponen nuevas obligaciones a los sistemas operativos.
Apoyo del hardware
Interrupciones: la base de los sistemas operativos modernos
Un computador moderno se compone de una CPU (a veces ms de una) y
una serie de controladores de dispositivos, conectados a travs de un bus comn
a la memoria. Cada controlador est a cargo de un tipo especfico de dispositivo.
Cuando se enciende el computador, se ejecuta automticamente un
pequeo programa, cuya nica tarea es cargar el sistema operativo en la
memoria, y entregarle el control (ejecutarlo). El sistema operativo hace las
inicializaciones del caso, y luego simplemente espera a que algn evento ocurra.
La ocurrencia de un evento es, por lo general, sealizada por una interrupcin de
software o hardware. Los controladores de dispositivo pueden gatillar una
interrupcin en cualquier momento, enviando una seal a la CPU a travs del bus
del sistema. Las interrupciones de software son gatilladas por procesos, por la va
de ejecutar una instruccin especial que se conoce como llamada al sistema.
Ejemplos de eventos que gatillan interrupciones: terminacin de una
operacin de I/O, llamadas al sistema, divisin por cero, alarmas del reloj. Para
cada tipo de interrupcin, debe existir una rutina que la atienda: el servidor de la
interrupcin.


Cuando la CPU es interrumpida:
La CPU deja de hacer lo que estaba haciendo, que puede haber sido
nada, (si simplemente estaba esperando), o la ejecucin de un proceso.
Determina el tipo de interrupcin.
Ejecuta el servidor de interrupcin correspondiente.
Contina lo que fue interrumpido.
Ms en detalle, una forma de hacer todo esto es la siguiente: Dado que
existe una cantidad limitada (y reducida) de tipos de interrupciones posibles, se
usa una tabla con las direcciones de los servidores de cada interrupcin,
tpicamente en las primersimas posiciones de la memoria. Esta tabla se conoce
como vector de interrupciones. As por ejemplo, si las direcciones ocupan 4 bytes,
la direccin del servidor de la interrupcin i se guarda en los 4 bytes a partir de la
posicin 4i de la memoria.
Cuando ocurre una interrupcin:
1a. La CPU debe memorizar lo que estaba haciendo para continuarlo
despus: se guarda el PC (y posiblemente otros registros) en el stack del sistema.
1b.Se deshabilitan las interrupciones para que la CPU no sea interrumpida
mientras atiende una interrupcin (situacin que podra generar caos).
2. Se determina la direccin del servidor de la interrupcin.
3. Se transfiere el control a esa direccin.
4. La rutina que atiende la interrupcin debe finalizar con una instruccin
IRET, que restablece el estado que la CPU tena cuando fue interrumpida, usando
los datos almacenados en el stack.
Esquemas ms sofisticados enmascaran (deshabilitan selectivamente) las
interrupciones en vez de deshabilitarlas totalmente (punto 1b), de manera que una
interrupcin de alta prioridad SI pueda interrumpir a la CPU cuando est
atendiendo una de menor prioridad.
Todos los sistemas operativos modernos se basan en interrupciones
(interrupt driven). Si no hay procesos que ejecutar, ni dispositivos ni usuarios que
atender, el sistema operativo no hace nada: se "sienta" a esperar que algo pase.
Cuando algo pasa, se sealiza una interrupcin, y el sistema operativo entra en
actividad (o sea, los servidores de interrupcin son parte del sistema operativo).
Ejemplo: multiprogramacin (timesharing.
El sistema operativo inicializa el timer o reloj en una tajada de tiempo, y lo
echa a andar.
El sistema operativo entrega el control a un proceso.
El proceso ejecuta.
Concluido el tiempo prefijado, el timer provoca una interrupcin.
El manejador de interrupciones del timer (que es parte del sistema
operativo), guarda la informacin del proceso interrumpido necesaria para poder
reanudarlo despus.
Se repite el ciclo, escogiendo ahora otro proceso.
Se puede obtener multiprogramacin sin interrupciones? Windows 3.x
versus Windows 95: cooperative versus preemptive multitasking.
Otro ejemplo: manejo de dispositivos de I/O
Para comenzar una operacin de I/O, el sistema operativo escribe los
registros del caso en el controlador del dispositivo. A su vez, el controlador
determina qu hacer mirando el contenido de esos registros. Por ejemplo, si se
trata de una solicitud de lectura, inicia la transferencia de datos desde el
dispositivo hacia la memoria. Cuando finaliza la transferencia, el controlador le
avisa a la CPU a travs de una interrupcin. Esto permite que la CPU, en vez de
esperar que la transferencia termine (lo que sera I/O sincrnico), en el intertanto
puede realizar otra tarea (I/O asincrnico). Una secuencia tpica:
El proceso que est ejecutando en la CPU solicita una operacin de I/O,
mediante una llamada al sistema.
El sistema operativo suspende el proceso, ponindolo en la cola de
procesos suspendidos, y comienza la operacin de I/O.
El sistema operativo escoge otro proceso para que siga ejecutando en la
CPU.
Cuando la operacin de I/O se completa, el control vuelve al sistema
operativo gracias a que el controlador del dispositivo provoc una interrupcin.
El sistema operativo, determina, segn la interrupcin y sus tablas
internas, que el proceso que haba sido suspendido ahora puede reanudarse, as
que lo pone en la cola de procesos listos para ejecutar.
El sistema operativo reanuda ese, o tal vez otro proceso de la cola de
procesos listos.
Proteccin
En los primeros computadores el operador tena el control completo del
sistema. Con el tiempo, se fueron desarrollando los sistemas operativos, y parte
del control se traspas a ellos. Adems, para mejorar la utilizacin del sistema, se
comenz primero a manejar varios programas en memoria en forma simultnea, y
luego a atender simultneamente a varios usuarios. Pero el remedio trajo su
propia enfermedad, ya que un programa poda por error o por mala intencin de su
creador, modificar datos de otros programas, o peor an, modificar el propio
sistema operativo, lo que poda botar todo el sistema. En general, un programa
puede alterar el normal funcionamiento del sistema de las siguientes formas:
Ejecutando una instruccin de I/O ilegal (por ejemplo, que borre todos los
archivos del disco).
Sobrescribiendo reas de la memoria que pertenecen al sistema
operativo.
No devolviendo el control de la CPU al sistema operativo.
Para evitar esto, es indispensable el apoyo del hardware, a travs de los
siguientes mecanismos.
Operacin dual
Para asegurar una operacin adecuada, se debe proteger al sistema
operativo y todos los programas del malfuncionamiento de cualquier otro
programa. Para eso, el hardware debe proveer al menos dos modos de operacin.
Modo usuario.
Modo sistema (o privilegiado, protegido o supervisor).
El bit de modo indica el modo de operacin actual. Cuando se enciende el
computador y se carga el sistema operativo, se comienza en modo sistema. El
sistema operativo siempre cambia a modo usuario antes de pasar el control a un
proceso de usuario. Cuando ocurre una interrupcin, el hardware siempre cambia
a modo sistema. De esta manera, el sistema operativo siempre ejecuta en modo
sistema. Cul es la gracia? Que hay ciertas operaciones crticas que slo pueden
ser ejecutadas en modo sistema.
Proteccin de I/O
Para prevenir que un usuario ejecute instrucciones de I/O que puedan
provocar dao, la solucin es simple: las instrucciones de I/O slo pueden
ejecutarse en modo sistema. As los usuarios no pueden ejecutar I/O
directamente, sino que deben hacerlo a travs del sistema, quien puede filtrar lo
que sea del caso.
Para que este mecanismo de proteccin sea completo, hay que
asegurarse que los programas de usuario no puedan obtener acceso a la CPU en
modo sistema. Por ejemplo, un programa de usuario podra poner una direccin
que apunte a una rutina propia en el vector de interrupciones. As, cuando se
produzca la interrupcin, el hardware cambiara a modo sistema, y pasara el
control a la rutina del usuario. O, tambin, el programa de usuario podra reescribir
el servidor de la interrupcin. Se requiere entonces...

Proteccin de memoria
No slo hay que proteger el vector de interrupciones y las rutinas
servidoras, sino que, en general, queremos proteger las reas de memoria
utilizadas por el sistema operativo y por otros programas. Esto lo vamos a ver con
ms detalle ms adelante, pero una forma es usando dos registros: base y lmite,
que establecen el rango de direcciones de memoria que el programa puede
accesar legalmente.
Para que esto funcione, hay que comparar cada direccin accesada por
un programa en modo usuario con estos dos registros. Si la direccin est fuera
del rango, se genera una interrupcin que es atendida por el sistema operativo,
quien aborta el programa (usualmente con un lacnico mensaje "segmentation
fault"). Esta comparacin puede parecer cara, pero teniendo presente que se hace
en hardware, no lo es tanto. Obviamente, el programa usuario no debe poder
modificar estos registros: las instrucciones que los modifican son instrucciones
protegidas.
Proteccin de CPU
Lo nico que falta, es asegurarse que el sistema operativo mantenga el
control del buque, o sea, hay que prevenir, por ejemplo, que un programa entre en
un ciclo infinito y nunca devuelva el control al sistema operativo. Esto se logra con
un timer, tal como vimos en el ejemplo de multiprogramacin.
Instrucciones privilegiadas
Instruccin para cambiar a modo protegido
Instrucciones para modificar registros de administracin de memoria (por
ej., base y lmite)
Instruccin para manejar el timer
Instruccin para deshabilitar interrupciones
Instrucciones para hacer I/O
Entonces, cmo hace I/O un programa de usuario, si slo el sistema
operativo puede hacerlo? El programa le pide al sistema operativo que lo haga por
l. Tal solicitud se conoce como llamada al sistema, que en la mayora de los
sistemas operativos se hace por medio de una interrupcin de software o trap a
una ubicacin especfica del vector de interrupciones. Ejemplo hipottico,
(parecido a MSDOS), para borrar un archivo:
Poner en registro A el cdigo de la operacin: 41h = borrar archivo
Poner puntero al nombre del archivo en registro B
INT 21h (generar interrupcin de software)
Como la llamada es a travs de una interrupcin, se hace lo de siempre:
cambiar a modo protegido, y pasar control a la direccin en la posicin 4*21h del
vector de interrupciones, o sea, a la rutina que maneja las llamadas al sistema (o
tal vez, la rutina que maneja las llamadas que tienen que ver con archivos; puede
que otras clases de llamadas sean atendidas por medio de otras interrupciones).
Dicha rutina examina el registro A para determinar qu operacin debe ejecutar, y
despus determina el nombre del archivo a travs del registro B. En seguida,
decide si la operacin es vlida: puede que el archivo no exista o pertenezca a
otro usuario; segn eso, borra el archivo o "patalea" de alguna manera.
Cuando uno hace esto en un lenguaje de alto nivel, como C, simplemente
escribe:
char* Nombre = "Datos";
remove(Nombre);
El compilador de C es quien se encarga de traducir esto a una llamada al
sistema, ocultando el detalle de la interfaz con el sistema operativo.
En resumen: los sistemas operativos modernos se apoyan ampliamente
en el hardware. Las necesidades recin vistas (interrupciones, instrucciones
privilegiadas, proteccin de memoria) fueron impuestas a los diseadores de
hardware por los requerimientos de multiprogramacin de los sistemas operativos.
Por eso dijimos que la historia de los sistemas operativos est interrelacionada
con la historia de la arquitectura de computadores.

Conceptos claves que afectan el diseo de un S.O.
Relocalizacin
Relocalizar un conjunto de instrucciones y/o datos consiste en asignarle,
para su ejecucin, un conjunto de de direcciones de memoria independientes del
proceso de traduccin. Un programa puede ser traducido relativo a cierta direccin
y cargado en memoria para su ejecucin en otra direccin. El proceso de
relocalizacin comprende todas las actividades necesarias para la ejecucin de
este programa en el nuevo conjunto de direcciones. La relocalizacin puede
efectuarse en tiempos diversos:
a) En tiempo de enlace por un cargador/enlazador.
b) En tiempo de carga por un cargador relocalizador.
c) En tiempo de ejecucin.
Reentrancia
Se dice que un programa es reentrante cuando una sola copia de ese
programa puede ser simultneamente utilizada por varios usuarios. La reentrancia
requiere que cada programa deba estar compuesto de dos partes:
1) Una parte o segmento, el cual contiene las instrucciones del programa y
debe ser "pura" (no debe modificarse a si misma) ya que es compartida.
2) Una segunda parte que contiene los datos que si pueden ser
modificados por el programa.
Interrupciones
Una Interrupcin es un mecanismo del hardware que obliga al CPU a
suspender su actividad para atender un evento externo. Este mecanismo fue
desarrollado como un medio para incrementar la eficiencia del procesador. El
objetivo de su desarrollo est ligado a la simultaneidad de las actividades del CPU
y las operaciones de entrada/salida, ya que se necesitaba un mecanismo a travs
del cual pudiera indicarse al cpu la finalizacin de estas actividades. Otro motivo
de su desarrollo fue la creacin de un mecanismo para manejar ciertas
condiciones internas tales como: divisin por cero, overflow, cdigos de operacin
invlidos, condiciones de reloj, etc.
Canales y Procesadores de E/S
El concepto de canal ha existido por muchos aos. Un canal es un
procesador especial que ejecuta unos programas particulares llamados programas
de canal. Usualmente son costosos, por lo que existen normalmente un nmero
limitado en los sistemas de computacin. El objetivo de los programas de canal es
realizar operaciones de entrada/salida. Los programas de canal normalmente
comparten la memoria principal con los programas de usuario.
Existen normalmente dos tipos de canales:
Multiplexores: Est orientado a la transmisiones carcter por carcter, por
lo que se utiliza con dispositivos de baja velocidad.
Selectores: permite la transmisin de bloques de informacin entre la
memoria y los dispositivos, por lo que se usa asociado a dispositivos de alta
velocidad.
Buffering
Un buffer es un rea de memoria principal utilizada para almacenar datos
durante las operaciones de entrada y salida. Por ejemplo durante una entrada los
datos son colocados en el buffer por el canal al terminar la transferencia, esos
datos pueden ser accesados por el procesador.
Si se usa un solo buffer el proceso se lleva a cabo de la forma siguiente: el
canal deposita datos en el buffer, el procesador los procesa, y asi sucesivamente.
El procesador no puede comenzar a procesar los datos hasta que el canal termine
de depositarlos en el buffer.

El uso de dos buffer permite superponer actividades las actividades de
procesamiento y entrada/salida. Mientras el canal deposita datos en el buffer, el
procesador procesa los datos depositados en el otra buffer. Cuando el procesador
termina con los datos del primer buffer, comienza a procesar los datos del
segundo y simultneamente el canal deposita datos en el primer buffer, esta
tcnica es mejor conocida como doble buffering.
Proteccin de la memoria principal
En los sistemas multiusuario es necesario utilizar un mecanismo de
proteccin de las reas de memoria para prevenir que un usuario accese el
conjunto de direcciones de otro usuario o del sistema operativo. Estos
mecanismos se basan en la limitacin del rango de direcciones que un programa
puede referenciar. Por ejemplo, si un programa utiliza direcciones contiguas de
memoria, pudieran utilizarse un par de registros que delimitarn el lmite inferior y
superior del rango de direcciones usado por el programa. Si el programa tratara de
accesar direcciones superiores o inferiores al rango de direcciones delimitado por
el par de registros se producira una interrupcin de hardware.
Pudieran tambin utilizarse claves de proteccin asociadas a reas de
memoria; un programa solo pudiera accesar las reas de memoria que tuviesen
claves de proteccin iguales a las del programa.
Relojes
Un sistema de computacin puede tener varios relojes. El reloj intervalo
timer (reloj para medir intervalos de tiempo) se utiliza para prevenir que un usuario
monopolice el CPU. Despus de un perodo de tiempo este reloj genera una
interrupcin y el procesador puede as ser asignado a otro trabajo. Pueden existir
tambin otros relojes para llevar la cuenta de la fecha y hora y otros fines.



Direccionamiento de Base y desplazamiento

En la medida que crecieron las capacidades de memoria de los
computadores, las arquitecturas tuvieron que ser modificadas para poder
acomodar rangos muy grandes de direcciones. Un computador que puede accesar
16 MB requerira un campo de direccin de 24 bits, lo que implicara instrucciones
de mquina muy grandes, sobre todo en caso de instrucciones de varios
operandos.
Para solucionar este problema la mayora de las arquitecturas incluyen
algn tipo de direccionamiento de base y desplazamiento bajo el cual, un nmero
(desplazamiento) es sumado al contenido de algn registro (registro base) para
generar una direccin de memoria.
Este esquema tiene adems la ventaja de hacer a los programas
independientes del lugar de memoria donde son cargados, lo que es muy valioso
en sistemas de multiprogramacin donde los programas son cargados cada vez
en un lugar diferente.
Estado de problema, Estado Supervisor, Instrucciones Privilegiadas
Los sistemas de computacin tienen normalmente varios estados de
ejecucin que son utilizados para incrementar la seguridad del sistema.
Normalmente existe un estado de problema y uno o varios estados de supervisor.
Se dice que un procesador se encuentra en estado de problema cuando procesa
las instrucciones que forman el sistema operativo.
Cuando un procesador se encuentra en un estado particular solo puede
ejecutar un subconjunto del conjunto de instrucciones. Un usuario que se
encuentre en estado de problema no puede ejecutar ciertas instrucciones, ya que
si al usuario se le permitiese la ejecucin de este tipo de instrucciones, pudiera
realizar acciones que afecten la seguridad del sistema o modificar informacin
confidencial perteneciente a otro usuario. Las instrucciones que inician la
ejecucin de programas de cana, las instrucciones que modifican los relojes, las
instrucciones que manipulan ciertos registros del CPU, etc., son ejemplos de
instrucciones que no pueden ejecutarse en estado de problema, son instrucciones
llamadas privilegiadas que solo pueden ejecutarse en estado supervisor, sea,
cuando se ejecuta el sistema operativo.
El sistema operativo es considerado como el usuario ms confiable, por lo
cual realiza su ejecucin en estado de supervisor bajo el cual puede ejecutar todo
el conjunto de instrucciones del equipo. En algunos sistemas se utilizan ms de
dos estados.
Es interesante hacer notar que el nmero de instrucciones privilegiadas
(instrucciones que solo pueden ejecutarse en estado supervisor) se han
incrementado con la evolucin de la arquitectura de hardware lo que indica que las
nuevas generaciones de arquitecturas han incorporado al hardware, ms y ms
funciones que antes eran realizadas por el sistema operativo. Algunos
microcomputadores tienen en hardware la totalidad del sistema operativo.
Spooling
En un sistema que utilice spooling (operaciones perifricas simultneas en
lnea) un dispositivo de alta velocidad (disco) se interpone entre un programa en
ejecucin y un dispositivo de baja velocidad que est siendo utilizado por el
programa. Por ejemplo, en lugar de imprimir lneas directamente a la impresora,
las lneas se graban a disco, lo que permite al programa terminar ms rpido y que
el impresor pueda ser compartido eficientemente entre varios usuarios. Cuando
exista disponibilidad fsica del impresor las lneas pueden leerse del disco e
imprimirse.

Microprogramacin (Firmware) Unidades de control micro
programables
El concepto de microprogramacin es generalmente atribuido al profesor
Maurice Wilkes, el cual en 1.951 present los conceptos que forman la base de las
tcnicas actuales de microprogramacin.

En los aos 60 cuando apareci la IBM 360, la microprogramacin fue
utilizada en gran escala. Durante los aos 60, los fabricantes de computadores
utilizaron la microprogramacin para la implementacin del conjunto de
instrucciones. A comienzos de los 70, apareci la microprogramacin dinmica, la
cual permite que nuevos microprogramas sean cargados fcilmente en la memoria
de la unidad de control, donde son ejecutados.
La microprogramacin envuelve la programacin de las instrucciones de
mquina. Los microprogramas residen en una unidad de control donde son
ejecutados. Los microprogramas estn formados por microinstrucciones que son
an ms elementales que las instrucciones de lenguaje de mquina. Cada
instruccin en lenguaje de mquina se implementa a travs de un microprograma.
El uso de esta tcnica implica que la memoria en donde residen los
microprogramas sea mucho ms rpida que la memoria principal.
La microprogramacin se relaciona con los sistemas operativos, porque en
los sistemas operativos existen secuencias de instrucciones que se ejecutan
frecuentemente. La implementacin microprograma de esta secuencia de
instrucciones, mejora notablemente el comportamiento de un sistema de
computacin, reduce los costos de desarrollo y mejora la seguridad del sistema
(ya que el microprograma no puede ser violentado por los programas de usuario);
el inconveniente, quizs, es la limitaciones a la hora de realizar modificaciones.
Emulacin
Es una tcnica bajo la cual una mquina se comporta como si fuese otra.
El conjunto de instrucciones de la mquina emulada es microprogramada en la
mquina husped. De esta manera los programas objeto de la mquina emulada
corren en la mquina husped.



Lenguajes de Programar S.O.
Durante mucho tiempo los sistemas operativos fueron implementados en
lenguaje ensamblador. En los ltimos aos se han diseado e implementado
varios lenguajes para implementar sistemas operativos.
La mayora de los lenguajes de programar sistemas operativos son ms
eficientes que el lenguaje ensamblador. Sin embargo usualmente se necesita el
uso de lenguaje ensamblador para implementar ciertas funciones. La utilizacin de
lenguajes de programacin de sistemas ha reducido el tiempo necesario para
programar un S.O., ya que se estima que las funciones que deben implementarse
en lenguaje ensamblador (pulida), solo representan el 1% del esfuerzo de
programacin necesario. Un ejemplo de un lenguaje de programacin de sistemas
es el C, con el que se elabor casi en su totalidad el S.O. UNIX.
Componentes del Sistema Operativo.
Gestin de procesos
Un proceso es simplemente, un programa en ejecucin que necesita
recursos para realizar su tarea: tiempo de CPU, memoria, archivos y dispositivos
de E/S. El SO es el responsable de:
Crear y destruir procesos
Parar y reanudar procesos
Ofrecer mecanismos para que los procesos puedan comunicarse y se
sincronicen
La gestin de procesos podra ser similar al trabajo de oficina. Se puede
tener una lista de tareas a realizar y a estas fijarles prioridades alta, media, baja
por ejemplo. Debemos comenzar haciendo las tareas de prioridad alta primero y
cuando se terminen seguir con las de prioridad media y despus las de baja. Una
vez realizada la tarea se tacha. Esto puede traer un problema que las tareas de
baja prioridad pueden que nunca lleguen a ejecutarse. y permanezcan en la lista
para siempre. Para solucionar esto, se puede asignar alta prioridad a las tareas
ms antiguas.
Gestin de la memoria principal
La memoria es una gran tabla de palabras o bytes que se referencian
cada una mediante una direccin nica. Este almacn de datos de rpido acceso
es compartido por la CPU y los dispositivos de E/S, es voltil y pierde su contenido
ante fallos del sistema. El SO es el responsable de:
Conocer qu partes de la memoria estn siendo utilizadas y por quin
Decidir qu procesos se cargarn en memoria cuando haya espacio
disponible
Asignar y reclamar espacio de memoria cuando sea necesario
Gestin del almacenamiento secundario
Un sistema de almacenamiento secundario es necesario, ya que la
memoria principal (almacenamiento primario) es voltil y adems muy pequea
para almacenar todos los programas y datos. Tambin es necesario mantener los
datos que no convenga mantener en la memoria principal. El SO se encarga de:
Planificar los discos.
Gestionar el espacio libre.
Asignar el almacenamiento.
Verificar que los datos se guarden en orden
El sistema de entrada y salida
Consiste en un sistema de almacenamiento temporal (cach), una interfaz
de manejadores de dispositivos y otra para dispositivos concretos. El sistema
operativo debe gestionar el almacenamiento temporal de E/S y servir las
interrupciones de los dispositivos de E/S.

Sistema de archivos
Los archivos son colecciones de informacin relacionada, definidas por
sus creadores. stos almacenan programas (en cdigo fuente y objeto) y datos
tales como imgenes, textos, informacin de bases de datos, etc. El SO es
responsable de:
Construir y eliminar archivos y directorios.
Ofrecer funciones para manipular archivos y directorios.
Establecer la correspondencia entre archivos y unidades de
almacenamiento.
Realizar copias de seguridad de archivos.
Existen diferentes sistemas de archivos, es decir, existen diferentes
formas de organizar la informacin que se almacena en las memorias
(normalmente discos) de los ordenadores. Por ejemplo, existen los sistemas de
archivos FAT, FAT32, ext3, NTFS, XFS, etc.
Desde el punto de vista del usuario estas diferencias pueden parecer
insignificantes a primera vista, sin embargo, existen diferencias muy importantes.
Por ejemplo, los sistemas de ficheros FAT32 y NTFS, que se utilizan
fundamentalmente en sistemas operativos de Microsoft, tienen una gran diferencia
para un usuario que utilice una base de datos con bastante informacin ya que el
tamao mximo de un fichero con un sistema de archivos FAT32 est limitado a 4
gigabytes, sin embargo, en un sistema NTFS el tamao es considerablemente
mayor.
Sistemas de proteccin
Mecanismo que controla el acceso de los programas o los usuarios a los
recursos del sistema. El SO se encarga de:
Distinguir entre uso autorizado y no autorizado.
Especificar los controles de seguridad a realizar.
Forzar el uso de estos mecanismos de proteccin.
Sistema de comunicaciones
Para mantener las comunicaciones con otros sistemas es necesario poder
controlar el envo y recepcin de informacin a travs de las interfaces de red.
Tambin hay que crear y mantener puntos de comunicacin que sirvan a las
aplicaciones para enviar y recibir informacin, y crear y mantener conexiones
virtuales entre aplicaciones que estn ejecutndose localmente y otras que lo
hacen remotamente.
Programas de sistemas
Son aplicaciones de utilidad que se suministran con el SO pero no forman
parte de l. Ofrecen un entorno til para el desarrollo y ejecucin de programas,
siendo algunas de las tareas que realizan:
Manipulacin y modificacin de archivos.
Informacin del estado del sistema.
Soporte a lenguajes de programacin.
Comunicaciones.
Gestor de recursos
Como gestor de recursos, el sistema operativo administra:
La unidad central de procesamiento (donde est alojado el
microprocesador).
Los dispositivos de entrada y salida.
La memoria principal (o de acceso directo).
Los discos (o memoria secundaria).
Los procesos (o programas en ejecucin).
Y en general todos los recursos del sistema.
Clasificacin
Administracin de tareas
Monotarea: Solamente permite ejecutar un proceso (aparte de los
procesos del propio SO) en un momento dado. Una vez que empieza a ejecutar un
proceso, continuar hacindolo hasta su finalizacin y/o interrupcin.
Multitarea: Es capaz de ejecutar varios procesos al mismo tiempo. Este
tipo de SO. normalmente asigna los recursos disponibles (CPU, memoria,
perifricos) de forma alternada a los procesos que los solicitan, de manera que el
usuario percibe que todos funcionan a la vez, de forma concurrente.
Administracin de usuarios
Monousuario: Slo permite ejecutar los programas de un usuario al mismo
tiempo.
Multiusuario: Permite que varios usuarios ejecuten simultneamente sus
programas, accediendo a la vez a los recursos de la computadora. Normalmente
estos sistemas operativos utilizan mtodos de proteccin de datos, de manera que
un programa no pueda usar o cambiar los datos de otro usuario.
Manejo de recursos
Centralizado: Permite usar los recursos de una sola computadora.
Distribuido: Permite utilizar los recursos (memoria, CPU, disco,
perifricos...) de ms de una computadora al mismo tiempo.
Ejemplos de sistemas operativos
Microsoft Windows.
Mac OS X.
GNU/Linux.
Unix.
Solaris.
FreeBSD.
OpenBSD.
Google Chrome OS.
Debian.
Ubuntu.
Mandriva.
Sabayon.
Fedora.
Linpus Linux.
Haiku (BeOS).
Ejemplos de sistemas operativos para dispositivos mviles.
Android.
iOS.
Bada.
BlackBerry OS.
BlackBerry 10.
Windows P.hone.
Symbian O.S.
HP webOS.
Firefox OS.
Ubuntu Phone OS.

CONCLUSION






















BIBLIOGRAFIA
-Cfr., entre otros: Tanenbaum, A. (1992) Modern Operating Systems,
Englewood Cliffs: Prentice-Hall; Haldar, S. y Aravind, A. A. (2010) Operating
Systems, Pearson Education India, pp. 12 y ss.; Turner, R. W. (1986) Operating
Systems: design and implementation, MacMillan.
-Cisco Systems (1992). cisco.com (ed.): Fundamentos de UNIX
(certificacin). Consultado el 10 de febrero de 2010.
-Washington Post - Debut de Windows 95 (en ingls).
-toastytech.com (ed.): BeOS 5.0 Personal Edition (en ingls) (2010).
Consultado el 10 de febrero de 2010.

S-ar putea să vă placă și