Está en la página 1de 87

CURSO DE TÉCNICO EN

Desarrollo de DE
ADMINISTRACIÓN
Aplicaciones Web
SISTEMAS
INFORMÁTICOS EN RED
Desarrollo deDE
IMPLANTACIÓN
Aplicaciones Web
SISTEMAS OPERATIVOS
U.D. 1:Desarrollo
INTRODUCCIÓN
de A
SISTEMAS OPERATIVOS
Aplicaciones Web Y
SU INSTALACIÓN
INDICE

 Introducción a los sistemas operativos


 Arquitectura de un sistema informático
 Evolución de los sistemas operativos
 Estructuras de los sistemas operativos
 Instalación de sistemas operativos y aplicaciones.
Requisitos, versiones y licencias
INTRODUCCIÓN A LOS SISTEMAS OPERATIVOS
 ESTRUCTURA DEL ORDENADOR: Sus componentes y cómo están organizados.
INTRODUCCIÓN A LOS SISTEMAS OPERATIVOS
 TECNOLOGÍA DEL ORDENADOR: cómo se construyen sus componentes

 Lógica Booleana
 Circuitos Combinacionales
 Transistores
 Puertas lógicas
 Circuitos Aritméticos
 Sumadores
 Multiplicadores
 Circuitos Secuenciales.
 Autómatas Finitos

Es la perspectiva del diseñador de ordenadores


INTRODUCCIÓN A LOS SISTEMAS OPERATIVOS
 ARQUITECTURA DEL ORDENADOR: atributos visibles para un programador

 Juego de instrucciones que ofrece la máquina (ISA, Instruction Set Architecture)


 Tipo y formato de datos que es capaz de utilizar el computador
 Número y tamaño de los registros
 Técnicas y mecanismos de E/S
 Técnicas de direccionamiento de la memoria
 Secuencia de funcionamiento: el modo en que se van ejecutando las instrucciones
máquina.

Un aspecto crucial de las computadoras, que está presente en todas ellas menos en
los modelos más simples, es que disponen de más de un nivel de ejecución.
INTRODUCCIÓN A LOS SISTEMAS OPERATIVOS

Ordenador: máquina destinada a procesar datos. Sobre ellos se aplican unas


instrucciones obteniendo después unos resultados (datos/información).

Un ordenador puede resolver problemas mediante instrucciones que les pasa


una persona . Una secuencia ordenada de instrucciones es un programa. Un
conjunto de instrucciones primitivas constituyen un lenguaje, se llama
lenguaje máquina, y es un lenguaje difícil y tedioso para las personas.
INTRODUCCIÓN A LOS SISTEMAS OPERATIVOS
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.
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.
El trabajo del sistema operativo es crear buenas abstracciones para después
implementar y administrar los objetos abstractos entonces creados.
INTRODUCCIÓN A LOS SISTEMAS OPERATIVOS
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.

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.
INTRODUCCIÓN A LOS SISTEMAS OPERATIVOS
El sistema operativo es un administrador de recursos cuya tarea principal es
llevar un registro de qué programa está utilizando qué recursos, de otorgar las
peticiones de recursos, de contabilizar su uso y de mediar las peticiones en
conflicto provenientes de distintos programas y usuarios.

La administración de recursos incluye el multiplexaje (compartir) de recursos en


dos formas distintas: en el tiempo y en el espacio. Cuando un recurso se
multiplexa en el tiempo, los distintos programas o usuarios toman turnos para
utilizarlo: uno de ellos obtiene acceso al recurso, después otro, y así en lo
sucesivo. Por ejemplo, con sólo una CPU y varios programas que desean
ejecutarse en ella, el sistema operativo primero asigna la CPU a un programa y
luego, una vez que se ha ejecutado por el tiempo suficiente, otro programa
obtiene acceso a la CPU, después otro, y en un momento dado el primer
programa vuelve a obtener acceso al recurso. La tarea de determinar cómo
se multiplexa el recurso en el tiempo (quién sigue y durante cuánto tiempo) es
responsabilidad del sistema operativo.
INTRODUCCIÓN A LOS SISTEMAS OPERATIVOS
El otro tipo de multiplexaje es en el espacio. En vez de que los clientes tomen
turnos, cada uno obtiene una parte del recurso. Por ejemplo, normalmente la
memoria principal se divide entre varios programas en ejecución para que cada
uno pueda estar residente al mismo tiempo (por ejemplo, para poder tomar
turnos al utilizar la CPU). Suponiendo que hay suficiente memoria como para
contener varios programas, es más eficiente contener varios programas en
memoria a la vez, en vez de proporcionar a un solo programa toda la memoria,
en especial si sólo necesita una pequeña fracción.
INTRODUCCIÓN A LOS SISTEMAS OPERATIVOS

De ahí surge la necesidad de organizar la estructura de los ordenadores por


niveles. Se tiene que diseñar un conjunto nuevo de instrucciones que sí
entiendan las personas y después traducirlo al lenguaje máquina, o bien , utilizar
estas instrucciones como datos de entrada de un programa en lenguaje máquina
que irá interpretando una a una cada instrucción.
INTRODUCCIÓN A LOS SISTEMAS OPERATIVOS
¿Por qué los niveles?

Una máquina virtual no es más que un programa que traduce e


interpreta el lenguaje del nivel 1. Sería el equivalente a una máquina
física cuyo lenguaje máquina fuera L1.
Aún así el lenguaje L1 no puede ser muy diferente al L0 por lo que
habría que diseñar un tercer conjunto de instrucciones más orientado a
las personas y así pasaríamos a un nivel 2 , con una MV 2, y un lenguaje
L2.

Entre el lenguaje y la máquina virtual existe una relación muy


importante. La máquina define el lenguaje. Los circuitos electrónicos
pueden ejecutar un programa escrito en lenguaje máquina L0. Todos los
demás necesitan intérprete o traductor.
INTRODUCCIÓN A LOS SISTEMAS OPERATIVOS
Al final un programa de nivel alto se ejecutará igualmente gracias a la estructura de la
máquina organizada por niveles.
Los tres niveles más bajos no están diseñados para que sean usados por un
programador ordinario. Su propósito primordial es la ejecución de intérpretes y
traductores que se necesitan para apoyar a los niveles superiores. Los lenguajes
máquina de los niveles 1,2 y 3 son numéricos.
A partir del nivel 4 contienen palabras y abreviaturas que tienen un significado para
las personas. Es el lenguaje ensamblador.
El nivel 5 consta de lenguajes usados por programadores de aplicaciones, llamados
lenguajes de alto nivel.
INTRODUCCIÓN A LOS SISTEMAS OPERATIVOS

Ensambladores. Se llaman ensambladores los programas encargados de traducir los


programas escritos en ensamblador a código binario. Fíjese en que tanto el
programa traductor como el lenguaje se llaman del mismo modo: ensamblador.
Como el lenguaje ensamblador es muy próximo al binario, estos traductores son
programas relativamente sencillos.
INTRODUCCIÓN A LOS SISTEMAS OPERATIVOS

Compiladores. El compilador es un programa que traduce el código de alto nivel a código


binario. Es, por tanto, parecido al ensamblador, pero mucho más complejo, ya que las
diferencias entre los lenguajes de alto nivel y el código binario son muy grandes.
El programa escrito en lenguaje de alto nivel se denomina programa fuente o código
fuente.
El programa traducido a código binario se llama código objeto o código máquina. Por lo
tanto, el compilador se encarga de convertir el programa fuente en un programa objeto.
Una vez que se ha obtenido el programa objeto ya no es necesario volver a realizar la
traducción (o compilación), a menos que se haga alguna modificación en el programa
fuente, en cuyo caso habría que volver a compilarlo.
El programa objeto, una vez generado, puede ejecutarse en la máquina en la que fue
compilado, o en otra de similares características (procesador, sistema operativo, etc.).
Cuando el programa objeto se haya disperso en diferentes archivos (lo que ocurre con
frecuencia cuando el programa es grande o, sencillamente, cuando usa funciones escritas
por terceras personas), puede ser necesario un proceso previo de enlace de los diferentes
módulos. De eso se encarga un programa llamado enlazador o linker, que suele actuar
inmediatamente después del compilador.
INTRODUCCIÓN A LOS SISTEMAS OPERATIVOS

Intérpretes. El intérprete es un programa que traduce el código de alto nivel a


código binario pero, a diferencia del compilador, lo hace en tiempo de ejecución.
Es decir, no se hace un proceso previo de traducción de todo el programa fuente
a binario, sino que se va traduciendo y ejecutando instrucción por instrucción.
INTRODUCCIÓN A LOS SISTEMAS OPERATIVOS
Máquina virtuales. El código fuente se compila, detectando los errores
sintácticos, y se genera una especie de ejecutable, con un código máquina
dirigido a una máquina imaginaria, con una CPU imaginaria. A esta especie de
código máquina se le denomina código intermedio, o a veces también lenguaje
intermedio, p-code, o byte-code (según quién nos lo cuente).
Como esa máquina imaginaria no existe, para poder ejecutar ese ejecutable, se
construye un intérprete. Este intérprete es capaz de leer cada una de las
instrucciones de código máquina imaginario y ejecutarlas en la plataforma real.
A este intérprete se le denomina el intérprete de la máquina virtual.
Lenguaje Java de Oracle, Visual Basic.NET y C#, también los sistemas Android se
basan en este enfoque.
.
INTRODUCCIÓN A LOS SISTEMAS OPERATIVOS
La mayoría de las computadoras actuales presentan dos o más niveles de ejecución.
En el nivel menos permisivo, generalmente llamado nivel de usuario, la computadora
ejecuta solamente un subconjunto de las instrucciones máquina, quedando
prohibidas las demás. Además, el acceso a determinados registros, o a partes de esos
registros, y a determinadas zonas del mapa de memoria y de E/S tambien queda
prohibido.
En el nivel más permisivo, denominado nivel de núcleo, la computadora ejecuta todas
sus instrucciones sin ninguna restricción y permite el acceso a todos los registros y
mapas de direcciones.

Se puede decir que la computadora presenta mas de un modelo de programación.


Uno más restrictivo, que permite realizar un conjunto limitado de acciones, y otros
más permisivos que permiten realizar un mayor conjunto de acciones. Uno o varios
bits del registro de estado establecen el nivel en el que está ejecutando la máquina.
Modificando estos bits se cambia de nivel de ejecución.
INTRODUCCIÓN A LOS SISTEMAS OPERATIVOS
Un concepto clave en todos los sistemas operativos es el proceso. Un proceso es en
esencia un programa en ejecución. Cada proceso tiene asociado un espacio de
direcciones, una lista de ubicaciones de memoria que va desde algún mínimo
(generalmente 0) hasta cierto valor máximo, donde el proceso puede leer y escribir
información. El espacio de direcciones contiene el programa ejecutable, los datos del
programa y su pila. También hay asociado a cada proceso un conjunto de recursos,
que comúnmente incluye registros (el contador de programa y el apuntador de pila,
entre ellos), una lista de archivos abiertos, alarmas pendientes, listas de procesos
relacionados y toda la demás información necesaria para ejecutar el programa.
Un proceso suspendido consiste en su espacio de direcciones, que se conoce
comúnmente como imagen de núcleo (en honor de las memorias de núcleo
magnético utilizadas antaño) y su entrada en la tabla de procesos, que guarda el
contenido de sus registros y muchos otros elementos necesarios para reiniciar el
proceso más adelante.
INTRODUCCIÓN A LOS SISTEMAS OPERATIVOS
Las llamadas al sistema de administración de procesos clave son las que se
encargan de la creación y la terminación de los procesos.
Hay otras llamadas al sistema de procesos disponibles para solicitar más
memoria (o liberar la memoria sin utilizar), esperar a que termine un proceso
hijo y superponer su programa con uno distinto. Son las señales de alarma
enviadas por el sistema operativo a un proceso en ejecución. Son
interrupciones de tipo software.
Si un proceso está ejecutando un programa de usuario en modo usuario y
necesita un servicio del sistema, como leer datos de un archivo, tiene que
ejecutar una instrucción de trap para transferir el control al sistema
operativo. Después, el sistema operativo averigua qué es lo que quiere el
proceso llamador, para lo cual inspecciona los parámetros. Luego lleva a cabo
la llamada al sistema y devuelve el control a la instrucción que va después de
la llamada al sistema. Las llamadas al sistema entran al kernel en modo
protegido.
ARQUITECTURA DEL SISTEMA INFORMÁTICO
ARQUITECTURA DEL SISTEMA INFORMÁTICO
Arquitectura Von Neumann: Máquina capaz de ejecutar una serie de
instrucciones elementales (instrucciones máquina) que están almacenadas en
memoria (son leídas y ejecutadas)
ARQUITECTURA DEL SISTEMA INFORMÁTICO
 Los datos y las instrucciones deben introducirse en el sistema y se proporcionan
los resultados mediante: Los sistemas de entrada/salida
 Los módulos de E/S comunican el procesador con el exterior
 Se necesita un sitio para almacenar temporalmente las instrucciones y los datos:
Memoria principal

bits Posiciones
ARQUITECTURA DEL SISTEMA INFORMÁTICO

26
ARQUITECTURA DEL SISTEMA INFORMÁTICO

Un concepto clave en todos los sistemas operativos es el proceso. Un proceso es en


esencia un programa en ejecución. Cada proceso tiene asociado un espacio de
direcciones, una lista de ubicaciones de memoria que va desde algún mínimo
(generalmente 0) hasta cierto valor máximo, donde el proceso puede leer y escribir
información. El espacio de direcciones contiene el programa ejecutable,
los datos del programa y su pila. También hay asociado a cada proceso un conjunto
de recursos, que comúnmente incluye registros (el contador de programa y el
apuntador de pila, entre ellos), una lista de archivos abiertos, alarmas pendientes,
listas de procesos relacionados y toda la demás información necesaria para
ejecutar el programa. En esencia, un proceso es un recipiente que guarda toda la
información necesaria para ejecutar un programa.

Las llamadas al sistema de administración de procesos clave son las que se


encargan de la creación y la terminación de los procesos. Cada computadora tiene
cierta memoria principal que utiliza para mantener los programas en ejecución.
Para evitar que interfieran unos con otros (y con el sistema operativo), se necesita
cierto mecanismo de protección.
ARQUITECTURA DEL SISTEMA INFORMÁTICO
Por lo general, cada proceso tiene cierto conjunto de direcciones que puede
utilizar, que generalmente van desde 0 hasta cierto valor máximo. En el caso más
simple, la máxima cantidad de espacio de direcciones que tiene un proceso es
menor que la memoria principal. Las direcciones son de 32 o 64 bits, con lo cual se
obtiene un espacio de direcciones de o bytes, respectivamente.

Existe una técnica llamada memoria virtual, en la cual el sistema operativo


mantiene una parte del espacio de direcciones en memoria principal y otra parte
en el disco, moviendo pedazos de un lugar a otro según sea necesario. En esencia,
el sistema operativo crea la abstracción de un espacio de direcciones como el
conjunto de direcciones al que puede hacer referencia un proceso. El espacio de
direcciones se desacopla de la memoria física de la máquina, pudiendo ser mayor o
menor que la memoria física
ARQUITECTURA DEL SISTEMA INFORMÁTICO
Es preciso comunicar las distintas partes del computador: Buses
ARQUITECTURA DEL SISTEMA INFORMÁTICO
El procesador o CPU (Central Processing Unit) es el responsable de la lectura y
ejecución de las instrucciones almacenadas en memoria principal:
 Registros: almacenan una secuencia de bits. Dos registros especiales:
 El registro PC (contador de programa) contiene la dirección de la
siguiente instrucción a ejecutar.
 El registro RI (registro de instrucción) almacena la instrucción que se está
ejecutando
 ALU: realiza operaciones elementales sobre los datos:
 Aritméticas
 Lógicas
 La unidad de control se encarga de generar las señales de control para la
ejecución de instrucciones.
INTRODUCCIÓN A LOS SISTEMAS OPERATIVOS

Se denomina procesador o unidad


central de proceso (UCP) al conjunto
de la unidad aritmética y de la
unidad de control.

La memoria principal se construye


con memoria RAM (Random Access
Memory) y memoria ROM (Read
Only Memory). En ella han de
residir los datos a procesar, el
programa máquina a ejecutar y los
resultados.
INTRODUCCIÓN A LOS SISTEMAS OPERATIVOS

La unidad aritmético-lógica permite


realizar una serie de operaciones
aritméticas y lógicas sobre uno o dos
operandos.

La unidad de control es la que se encarga de hacer funcionar al conjunto, para lo cual


realiza cíclicamente la siguiente secuencia:
 Lee de memoria la siguiente instrucción máquina que forma el programa.
 Interpreta la instrucción leída: aritmética, lógica, de salto, etc.
 Lee, si los hay, los datos de memoria referenciados por la instrucción.
 Ejecuta la instrucción.
 Almacena, si lo hay, el resultado de la instrucción.

La unidad de control tiene asociados una serie de registros, entre los que cabe
destacar: el contador de programa (PC, Program Counter), que indica la dirección de la
siguiente instrucción máquina a ejecutar; el puntero de pila (SP, Stack Pointer), que
INTRODUCCIÓN A LOS SISTEMAS OPERATIVOS

La unidad de control tiene asociados una serie de registros, entre los que cabe
destacar:
 el contador de programa (PC, Program Counter), que indica la dirección de la
siguiente instrucción máquina a ejecutar;
 el puntero de pila (SP, Stack Pointer), que sirve para manejar cómodamente una
pila en memoria principal;
 el registro de instrucción (RI), que permite almacenar —una vez leída de la
memoria principal— la instrucción máquina a ejecutar,
 y el registro de estado (RE), que almacena diversa información producida por la
ejecución de alguna de las últimas instrucciones del programa (bits de estado
aritméticos) e información sobre la forma en que ha de comportarse el computador
(bits de interrupción, modo de ejecución, etc.).
ARQUITECTURA DE UN SISTEMA INFORMÁTICO

Este vídeo explica cómo realiza el sistema informático una suma:


5+11

https://www.youtube.com/watch?v=apM1_35fdRA
EVALUCIÓN DE LOS SISTEMAS OPERATIVOS

EVOLUCIÓN DE LOS SITEMAS OPERATIVOS


Usar un computador no siempre fue tan fácil. Los sistemas operativos surgieron
como una necesidad para poder utilizar máquinas muy complejas en tiempos que
se necesitaba personal muy especializado para poder operarlas. La evolución de
los sistemas operativos estuvo, por lo tanto, muy ligada a las características y
necesidades particulares de las máquinas disponibles. Resulta difícil hablar de los
sistemas operativos sin referirse al mismo tiempo a la evolución del hardware,
pues ambos aspectos han avanzado de la mano durante gran parte de la historia.

La primera máquina a la que se puede llamar un computador digital de propósito


general fue diseñada por el matemático inglés Charles Babbage (1791-1871),
quien diseñó una máquina mecánica digital (digital: capaz de trabajar con dígitos),
conocida como la analytical engine, o máquina de Babbage. Si bien desarrolló
todos los planos, nunca pudo terminar de construirla.
EVALUCIÓN DE LOS SISTEMAS OPERATIVOS
La máquina de Babbage, sin embargo, no tenía ningún tipo de software. La
máquina podía ser "programada" (un concepto nuevo para la época) mediante
tarjetas perforadas, método que ya se usaba para configurar máquinas en la
industria textil. Ada Lovelace, matemática, escribió un conjunto de notas que
describían un procedimiento para calcular una secuencia de números de
Bernoulli usando la máquina de Babbage. Se considera este documento como el
primer programa desarrollado para una máquina computacional, y a Ada
Lovelace como la primera programadora. El lenguaje de programación Ada fue
nombrado en su honor.

Posteriormente al trabajo de Babbage, el desarrollo de máquinas programables


quedó relegado al ámbito de la investigación científica, sin grandes aplicaciones
prácticas. Como ha ocurrido con tantos otros inventos, fue el periodo de la
Segunda Guerra Mundial el que vino a reimpulsar el interés en este tipo de
máquinas.
EVALUCIÓN DE LOS SISTEMAS OPERATIVOS
Se empezaron a desarrollar las primeras máquinas electrónicas, como el Z3 de
Konrad Zuse (1941), y la máquina de Atanasoff-Berry (1942). El flujo de
cómputo de estas máquinas era controlado por switch electrónicos (relay),
construidos mediante tubos de vacío (vacuum tube). Al estar compuestas por
cientos o miles de estos tubos, no era extraño que uno o varios fallaran durante
la operación.
En 1944, un grupo de científicos en Bletchley Park, Inglaterra, entre los que se
encontraba Alan Turing, construyó el computador Colossus, cuyo modelo más
conocido, el Colossus Mark 2, utilizaba 2400 tubos de vacío. Este computador
fue diseñado para una tarea criptográfica particular, y era programable
mediante cintas de papel. Fue importante en el proceso de decriptación del
criptosistema alemán Lorenz.

En 1946, William Mauchley y J. Presper Eckert construyeron, en la Universidad


de Pennsylvania uno de los primeros computadores programables de propósito
general: el ENIAC (Electronic Numerical Integrator and Computer).
EVALUCIÓN DE LOS SISTEMAS OPERATIVOS
Poseía 20000 tubos de vacío, pesaba 27 toneladas, ocupaba 167m2 y consumía
150kW de electricidad. Su dispositivo de entrada era un lector de tarjetas
perforadas y su salida era un perforador de tarjetas (IBM 405). Poseía un clock
de 100kHz, y utilizaba 20 registros de 10 dígitos binarios. No existía un lenguaje
de programación, ni siquiera assembler, de manera que toda la computación
era descrita en las tarjetas perforadas mediante código de máquina.

Estos son los computadores de 1ª generación: 1945-1955 (Tubos de vacío)


EVALUCIÓN DE LOS SISTEMAS OPERATIVOS
La creación de los transistores en los años 1950 revolucionó la construcción de los
dispositivos electrónicos reduciendo drásticamente las tasas de falla respecto al
hardware construido con tubos de vacío y aumentando la velocidad de respuesta. Se
empezaron a construir grandes computadores basados en transistores, conocidas
como mainframes. Debido a su costo de construcción, un computador de este tipo era
solamente accesible para grandes corporaciones, gobiernos y universidades.

Un mainframe ejecuta trabajos, que consisten en el código de un programa, o una


secuencia de programas. Los programas se ingresan mediante tarjetas perforadas y se
escriben en lenguaje assembler.
En 1953, John W. Backus, de IBM, propone una alternativa para hacer más práctica la
descripción de programas en lugar de assembler y desarrolla el FORmula TRANslating
system, conocido como lenguaje FORTRAN, junto con una herramienta para hacer la
traducción hacia assembler llamada compilador.
EVALUCIÓN DE LOS SISTEMAS OPERATIVOS
Un programa escrito en FORTRAN sobre tarjetas perforadas es entregado como input a
un lector de tarjetas. El lector de tarjetas escribe sobre una cinta que se entrega a la
máquina principal, la cual ejecuta las instrucciones, proceso que podía tardar horas
dependiendo de la complejidad del cómputo, y escribe el resultado sobre otra cinta de
salida. La cinta de salida es leída por otro dispositivo capaz de imprimir el contenido de
la cinta a un papel. En ese momento termina la ejecución del trabajo.
Durante el tiempo que un dispositivo está leyendo las tarjetas perforadas, tanto el
dispositivo procesador como el dispositivo de salida no están haciendo ningún trabajo
útil. Dado el costo del equipamiento era poco conveniente tener estas unidades en
espera mientras se traduce una tarjeta perforada a una cinta magnética. Es por esto
que se desarrollaron soluciones como el sistema de procesamiento batch, o
procesamiento por lotes. En este modelo, un programador entrega sus tarjetas
perforadas a un operador (otra persona) que se dedica a ingresar las tarjetas a una
unidad lectora de tarjetas (IBM 1402).
EVALUCIÓN DE LOS SISTEMAS OPERATIVOS
Cuando hay una cantidad suficiente de trabajos, el operador toma la cinta de salida y
la traslada (físicamente) a un dispositivo procesador como el IBM 1401 (3 registros,
word de 6-bit con codificación BCD) o el más poderoso IBM 7094 (7 registros, word de
36-bit, y espacio de direcciones de 15-bit: 32768 words).
El operador carga un primer programa (algo similar a un sistema operativo) que
prepara al computador para leer una serie de trabajos desde la cinta.
Mientras el dispositivo procesador realiza las labores de cómputo, el IBM 1402 podía
seguir leyendo el siguiente conjunto de tarjetas. La salida del dispositivo procesador
iba a una cinta magnética de salida. El operador nuevamente debe tomar esta cinta,
llevarla a un dispositivo impresor (IBM 1403) que transfiera el contenido de la cinta
magnética a papel de manera offline. Esto es, no conectado al dispositivo procesador.

Estamos en la 2ª generación de computadores: 1955-1965 (Transistores y sistemas


batch)
EVALUCIÓN DE LOS SISTEMAS OPERATIVOS
En los años 1960s, los mainframes de IBM (International Business Machines
Corporation), requerían cada uno un software y periféricos distintos para
funcionar, ya que las instrucciones no eran compatibles. Un programa hecho para
un modelo debía ser reescrito ante la introducción de un nuevo modelo de
hardware.
La compañía decide unificar el hardware bajo una familia llamada System/360.
Ésta fue la primera línea importante basada en la nueva tecnología de circuitos
integrados capaz de integrar grandes cantidades de pequeños transistores, lo que
proporcionaba una enorme ventaja precio/rendimiento respecto a los transistores
tradicionales.
EVALUCIÓN DE LOS SISTEMAS OPERATIVOS
La idea de tener una línea de hardware mutuamente compatible y de propósito
general requería un sistema capaz de funcionar en todos los modelos. Este sistema
fue el OS/360. El software resultante resultó enormemente grande (millones de
líneas de assembler) y complejo de desarrollar, con numerosos bugs, en tiempos
en que la ingeniería de software no se desarrollaba como disciplina aún.
A pesar de todos sus defectos, OS/360 fue ampliamente usado, e introdujo
algunas ideas clave en los sistemas computacionales. Sistemas como el IBM 7094
eran máquinas que procesaban un trabajo simultáneamente. Si alguna instrucción
de ese trabajo requería una lectura de cinta, o alguna operación de I/O, la CPU
debía esperar sin hacer nada (idle) hasta que la operación terminase.

La solución fue dividir el espacio de memoria en regiones, y asignar un espacio


distinto a cada trabajo. Se introdujo un mecanismo que permitiera que, cada vez
que un trabajo estuviese esperando una operación de I/O, el sistema permitiera
que otro trabajo pudiese ocupar la CPU. De esta manera, si hay suficiente trabajos
en la memoria, sería posible mantener a la CPU trabajando casi el 100% del
tiempo. Este mecanismo fue un enorme avance que ocupamos hasta el día de hoy,
y se llama multiprogramación.
EVALUCIÓN DE LOS SISTEMAS OPERATIVOS
Implementar multiprogramación requiere que cada trabajo pueda funcionar de
manera aislada de los demás. Se agregó en el hardware el mecanismo necesario
para proveer esta protección y evitar que un trabajo malicioso pudiese leer o
escribir en memoria asignada a otro trabajo.
Una segunda característica introducida fue la
integración de los periféricos como el lector de
tarjetas, y la automatización de la lectura. De
esta manera, una vez que un trabajo terminaba
su ejecución, el sistema operativo podía leer el
siguiente trabajo que estuviera disponible y
cargarlo en la partición libre. Esta técnica se
conoce como spooling (Simultaneous
Peripheral Operation On Line). Ya no se
necesitaba un dispositivo separado, y un
operador que trasladara cintas.
EVALUCIÓN DE LOS SISTEMAS OPERATIVOS
Timesharing o tiempo compartido para múltiples usuarios
Hasta el momento todo el avance había apuntado a mejorar los sistemas de
procesamiento por lotes (batch). El programador entrega sus tarjetas, y espera
hasta obtener un resultado. Por supuesto, los programadores también cometían
errores y, una vez entregado el programa, debían esperar algunas horas hasta
recibir el output que indicara que su código había fallado y porqué.
Medio día perdido antes de corregir el error y reenviar el trabajo. No había ningún
tipo de interactividad con el sistema. Dada la cantidad de usuarios que deseaban
utilizar el computador, asignar horas para que cada usuario interactuara
directamente y de manera individual con el computador era tremendamente
ineficiente, pues el computador pasaba la mayor parte del tiempo idle mientras el
usuario ingresaba código. El modelo batch seguía siendo superior.
EVALUCIÓN DE LOS SISTEMAS OPERATIVOS
Construir un sistema de timesharing era inviable en los computadores previos a esta
época, ya que se requería almacenar el estado de un proceso y recuperar el estado
del proceso siguiente (esto se llama cambio de contexto) lo que podía ser costoso en
tiempo. Sin embargo, la tecnología de esos años ya había evolucionado para permitir
que este método fuera viable. Los sistemas consultaban alternadamente a cada
terminal si éste tenía un comando que ejecutar, lo que se conoce como polling. Un
problema, aún no resuelto en estos sistemas, era que si un usuario enviaba un
trabajo largo de tipo CPU-bound (una compilación, un cálculo matricial, ordenar
miles de registros, …), los demás usuarios tendrían que esperar hasta que este
proceso terminara antes de obtener su espacio (slice) de tiempo. Este problema
sería resuelto en los sistema posteriores con la introducción del multitasking
expropiativo (preemptive multitasking) o multitarea.
EVALUCIÓN DE LOS SISTEMAS OPERATIVOS
El primer sistema de propósito general que permitía timesharing fue CTSS
(Compatible Time Sharing System), desarrollado en MIT en 1961 sobre un IBM 7094.
Si bien el problema de protección de datos entre usuarios no estaba resuelto y los
usuarios debían tener cuidado de no alterar el trabajo de otros, CTSS introdujo un
tipo de interactividad que no había sido posible anteriormente.

Ante las posibilidades que prometía el timesharing MIT, Bell Labs, y General Electric,
deciden crear un sistema que soporte cientos de usuarios. De la misma manera que
múltiples casas podían tener acceso a la red eléctrica, en este sistema múltiples
usuarios tendrían acceso a tiempo de cómputo (en la actualidad esto se llamaría
"Computing Time as a Service") con tan solo conectarse a este mainframe (una nube
de cómputo). El sistema fue bautizado como MULTICS (MULTiplexed Information and
Computing Service).
EVALUCIÓN DE LOS SISTEMAS OPERATIVOS
MULTICS tuvo un éxito parcial. Además de ser escrito en PL/I, un lenguaje poco
popular y con un compilador deficiente, el proyecto resultó ser sumamente
ambicioso para la época (como la máquina de Babbage) y demasiado complejo, lo
que demoró el desarrollo al punto que Bell Labs y General Electric abandonaron el
proyecto. MIT persistió y el sistema eventualmente fue terminado.

El desarrollo de la tecnología de transistores en circuitos integrados cada vez más


pequeños y confiables permitió que se construyeran computadores más pequeños
tanto o más poderosos que los de la época. Se les llamó minicomputadores y uno de
los más famosos fue el PDP-1 (Programmed Data Processor) de la compañía DEC
(Digital Equipment Corporation), competidora de IBM y que fue comprada por
Compaq (luego HP) en 1998. El DEC PDP-1 usaba words de 18-bit y soportaba 4096
words, con ciclos de acceso a memoria de 5.35 usec. DEC construyó modelos
sucesivos de la línea PDP, no compatibles entre sí, hasta el PDP-16.
EVOLUCIÓN DE LOS SISTEMAS OPERATIVOS
En Bell Labs, 1969, Ken Thompson y Dennis Ritchie (1941-2011), dos de los
científicos que habían trabajado en MULTICS decidieron desarrollar una versión
"reducida" de MULTICS para un PDP-7 que no estaba siendo usado. Esta versión
tendría un diseño mucho más simple y en sus inicios soportaba solamente a un
usuario (uni-task) en contraposición a MULTICS que era multi-task. Este trabajo fue
bautizado como UNICS por UNIplexed Information and Computing Service como un
juego de palabras respecto a MULTICS, y finalmente simplificado como UNIX.

La versión original de UNIX, para el PDP-7 y posteriormente para el PDP-11 estaba


escrita en assembler. Fue en este sistema que se decidió reescribirlo en otro
lenguaje de más alto nivel. En 1972, Dennis Ritchie reescribe UNIX en el lenguaje C.
De esta manera UNIX se convirtió en uno de los primeros sistemas operativos
masivos en ser implementado en un lenguaje de mayor nivel que assembler, y el
desarrollo de C continuó estando íntimamente ligado al kernel de UNIX.
EVOLUCIÓN DE LOS SISTEMAS OPERATIVOS
El código fuente de UNIX estaba disponible públicamente lo que permitió a distintas
instituciones y universidades desarrollar su propia versión para sus sistemas, cada
uno inspirado en los mismos principios pero incompatibles entre sí. De estas
versiones, dos de las más importantes que perduraron fueron la versión comercial
de AT&T llamada System V (1983), y la versión de la Universidad de California en
Berkeley, BSD (Berkeley Software Distribution, 1977).
Versiones UNIX

Bajo esta situación no era posible escribir programas que funcionaran


correctamente bajo las distintas versiones de UNIX. Para ello, la IEEE propuso una
interfaz estándar de llamadas al sistema (syscalls) conocida como Portable
Operating System Interface ó POSIX. La X viene del hecho que se tomó la interfaz
existente en UNIX como base para la propuesta. Al implementar POSIX, los sistemas
se hicieron más interoperables. Más aún, otros sistemas operativos no basados en
UNIX también han implementado POSIX.
EVOLUCIÓN DE LOS SISTEMAS OPERATIVOS
En 1983, todas las versiones de UNIX utilizaban licencias comerciales.
En MIT, Richard Stallman inicia el proyecto GNU (GNU is Not UNIX, un acrónimo
recursivo) con el objetivo de desarrollar una versión completamente gratuita y de
código abierto de un sistema "UNIX-like".

Como parte de su proyecto se definió la GNU General Public License, GPL, se publicó
el GNU Manifesto y se desarrollaron múltiples herramientas como gcc (GNU
Compiler Collection), glibc (GNU C Library), coreutils (GNU Core Utilities), binutils
(GNU Binary Utilities), bash (GNU Bash Shell), y el entorno de escritorio GNOME
(originalmente GNU Network Object Model Environment).
Sin embargo el microkernel, denominado GNU Hurd, demoró en ser terminado.

En 1987, Andrew S. Tanenbaum desarrolló un clon de UNIX llamado MINIX con fines
educacionales (POSIX-compliant), un microkernel modular de código abierto con la
capacidad de detectar y reemplazar dinámicamente módulos defectuosos. Todo en
13000 líneas de código.
EVOLUCIÓN DE LOS SISTEMAS OPERATIVOS
En 1991, ante la ausencia de un kernel gratuito de UNIX, y bajo la inspiración de
MINIX, Linus Torvalds desarrolla un clon monolítico "just for fun", al cual llama Linux
e incluye gran parte de las herramientas desarrolladas por el proyecto GNU. Los
puristas suelen denominar al sistema operativo GNU/Linux, pues se trata de un
"kernel Linux con herramientas GNU", de la misma manera que GNU/Hurd sería un
kernel Hurd con herramientas GNU".
EVOLUCIÓN DE LOS SISTEMAS OPERATIVOS
Con el tiempo se desarrollaron múltiples distribuciones de Linux.
Linux distribution timeline

Aquí termina la 3ª generación de computadores: 1965-1980 (Circuitos integrados y


Multiprogramación))
EVOLUCIÓN DE LOS SISTEMAS OPERATIVOS

El desarrollo tecnológico de los circuitos integrados llegó al nivel conocido como


VLSI (Very Large Scale Integration), capaz de integrar hasta 1 millón de transistores
en un chip de 1cm2, lo que permitía hasta 100000 celdas lógicas. Surgieron
sistemas computacionales de uso personal denominados microcomputadores,
que en principio no eran tecnológicamente muy superiores al PDP-11, pero a un
precio notablemente inferior.

En 1974, Intel presenta el chip Intel 8080, una CPU de propósito general de 8-bit
con un clock de 2MHz, sucesora del 4004 y el 8008, los primeros
microprocesadores del mercado. Fue parte del popular MITS Altair 8800, que dió
inicio a la era de los microcomputadores.
EVOLUCIÓN DE LOS SISTEMAS OPERATIVOS
Intel deseaba un sistema operativo propio para el Intel 8080, por lo cual Gary
Kildall construyó un sistema operativo basado en disco (contenido en un floppy
disk de 8") conectado al 8080, y llamado CP/M (Control Program for
Microcomputers).
CP/M era un sistema single-task de 8-bit y capaz de utilizar hasta 64 KB de
memoria. Si bien el sistema fue adoptado por Intel, no le veían mucho futuro a un
sistema operativo residente en disco, y los derechos quedaron en manos de Gary
Kildall quien formó la compañía Digital Research Inc. para desarrollar y vender
CP/M.
Digital Research adaptó CP/M para diversos microcomputadores usando el Intel
8080, pero también para otros microprocesadores de la época como el Zilog Z80,
dominando el mercado durante unos 5 años. En este periodo se desarrollaron
versiones multitasking y de 16-bit. Aplicaciones que surgieron bajo CP/M fueron
WordStar (procesador de texto), dBase (base de datos), Multiplan (planilla de
cálculo), y Turbo Pascal (IDE y compilador para Pascal).
EVOLUCIÓN DE LOS SISTEMAS OPERATIVOS
IBM, por su parte, que había dominado el mercado de los mainframes se estaba
quedando atrás en el nuevo mercado de los microcomputadores y empezó a
desarrollar su propia versión: el IBM Personal Computer (IBM PC) basado en el
Intel 8088 de 16-bit, 4.77MHz de clock, y hasta 256 kB de RAM. En 1980, IBM
contactó a una pequeña compañía de nombre Microsoft fundada por Bill Gates
y Paul Allen en 1975, y conocida por desarrollar un intérprete del lenguaje BASIC
para el popular Altair 8800.
Sin embargo, IBM deseaba un sistema operativo completo, y Bill Gates les sugirió
contactar a Digital Research, que con CP/M era el dominador absoluto de los
sistemas operativos. La negociación con Digital Research fracasó al no llegar a un
NDA (Non-Disclosure Agreement) respecto al IBM PC.
Lo cierto es que IBM regresó con Microsoft para solicitar el desarrollo de un
sistema operativo para su IBM PC. Bill Gates adquirió un clon de CP/M de una
compañía más pequeña aún llamada Seattle Computer Products (SCP). SCP
también se encontraba construyendo un sistema basado en el 8088, y había
desarrollado en 4 meses un clon llamado QDOS (Quick and Dirty Operating
System) que fue renombrado a 86-DOS.
EVOLUCIÓN DE LOS SISTEMAS OPERATIVOS
Microsoft logró un acuerdo con SCP para distribuir, y posteriormente adquirir
todos los derechos sobre 86-DOS llamándolo MicroSoft Disk Operating System
(MS-DOS). Este sistema operativo, junto al intérprete de BASIC fueron ofrecidos
a IBM. Finalmente el IBM PC fue lanzado junto al sistema operativo renombrado
por IBM como PC-DOS. Debido a que, en el fondo, PC-DOS había nacido como un
clon de CP/M y para evitar problemas legales, IBM eventualmente distribuyó su
IBM PC también con CP/M-86. Sin embargo, CP/M-86 había llegado 6 meses
tarde y en ese tiempo la popularidad de PC-DOS creció rápidamente.

Dado que el sistema operativo no era propiedad de IBM, cada constructor podía
obtener una licencia de MS-DOS desde Microsoft para incluirla en su propio
sistema. Esto posicionó a Microsoft como líder en el mercado de los sistemas
operativos, y desplazó definitivamente a CP/M y Digital Research Inc.
EVOLUCIÓN DE LOS SISTEMAS OPERATIVOS
En 1983, IBM lanza el IBM PC/AT, con el chip Intel 80286, de 16-bit, con clock de
6MHz, y con modo de protección para soportar multitasking. MS-DOS continuó
siendo el sistema operativo de preferencia de los consumidores, distribuido
como PC-DOS en las máquinas originales de IBM. Este soporte continuó con la
introducción de los Intel 80386 (32-bit, 12 a 40MHz, 1985) y 80486 (32-bit, 16 a
100MHz, 1989). MS-DOS también evolucionó incorporando características de
UNIX como multitasking y soporte de nombres largos de archivos.
Eventualmente Microsoft produjo su propia implementación de UNIX llamada
Xenix.
EVOLUCIÓN DE LOS SISTEMAS OPERATIVOS
Aún a inicios de los años 1980s, tanto MS-DOS como CP/M-86 seguían
interactuando con el usuario a través de líneas de comando y teclado. Esto
cambiaría debido a una investigación en interacción humano-computador que
venía siendo desarrollada desde los años 1960s por Doug Engelbart (1925-2013)
en el Stanford Research Institute (SRI), quien creó las GUI (Graphical User
Interface) como medio de interactuar con el computador mediante un conjunto
de abstracciones gráficas como ventanas, íconos, menúes, hipertexto, y un
novedoso dispositivo llamado mouse capaz de controlar un puntero en pantalla.
Su trabajo, el sistema NLS (oN-Line System) fue presentado en un evento
histórico que se conoció posteriormente como The Mother of All Demos (vale la
pena verlo con los ojos de 1968), de gran tanta influencia que este tipo de
interfaces .
No sería, hasta el desarrollo del Apple Lisa (1983) y el Apple Macintosh (1984),
los primeros computadores personales en incluir una interfaz gráfica, que las
GUIs se harían populares al acercar el uso del computador al público general.
Apple Macintosh fue ampliamente popular en particular en el ámbito del diseño
gráfico.
EVOLUCIÓN DE LOS SISTEMAS OPERATIVOS
Fuertemente influenciado por el éxito del Apple Macintosh, a inicios de 1980s
Microsoft planeaba un sucesor para MS-DOS que tuviera su propia GUI. Su primer
intento fue un sistema administrador de ventanas llamado Windows 1.0 (1985) que
funcionaba como una aplicación sobre MS-DOS. La versión que consiguió mayor
adopción fue Windows 3.11, para sistemas de 16-bit. Fue en 1995, con el
lanzamiento de Windows 95 y luego Windows 98, que se incorporó código para
aprovechar las nuevas CPU de 32-bit, aun cuando parte del sistema operativo debía
soportar aún aplicaciones de 16-bit por retrocompatibilidad. MS-DOS seguía siendo
usado para iniciar el sistema y como soporte subyacente para aplicaciones
antiguas.
Desde 1987, Microsoft había trabajado en conjunto con IBM para construir un
sistema operativo con GUI. Este sistema se conoció como OS/2, sin embargo nunca
alcanzó gran popularidad ante Macintosh y los mismos Windows 9x.
Eventualmente Microsoft tomó parte del trabajo desarrollado para OS/2 y
reimplementó Windows usando código completamente de 32-bit. Este nuevo
sistema se llamó Windows NT (Windows New Technology), mientras OS/2 fue
eventualmente abandonado por IBM.
EVOLUCIÓN DE LOS SISTEMAS OPERATIVOS
Windows NT fue desarrollado bajo el concepto de portabilidad. Implementó
preemptive multitasking, soporte para múltiples arquitecturas modernas como IA-
32, MIPS y DEC-Alpha, soporte para Windows API y POSIX, e introdujo un nuevo
sistema de archivos, NTFS. La línea de Windows NT continuó con Windows XP,
Windows Vista, Windows 7, Windows 8, y Windows 10. Paralelamente se introdujo
una línea para servidores con Windows 2000, Windows Server 2003, Windows
Server 2008, Windows Server 2012, y Windows Server 2016.

Estos son los computadores de 4ª generación: 1980-actualidad (ordenadores


personales)
EVOLUCIÓN DE LOS SISTEMAS OPERATIVOS
Y la 5ª generación: 1990-actualidad (dispositivos móviles)
Hasta 1993, los dispositivos telefónicos móviles no era más que dispositivos de
comunicación que usaban sistemas embebidos, dedicados, para administrar su
hardware. El concepto de utilizar estos dispositivos para realizar actividades más
allá de la telefonía surgió con los dispositivos conocidos como PDA (Personal
Digital Assistant.
Fue en 1997 que la ya extinta compañía Palm, Inc. popularizó los dispositivos
PDA mediante su PalmPilot, y su sistema operativo Palm OS 2.0 como el primer
sistema operativo móvil exitoso.
El éxito de Palm llevó a otros protagonistas de la telefonía móvil como Nokia a
cofundar y posteriormente adquirir completamente a Symbian Ltd.
Symbian OS corría sobre procesadores ARM, una arquitectura RISC. En su mejor
momento, Symbian OS fue el sistema preferido por fabricantes como Samsung,
Motorola, Sony Ericsson, y principalmente Nokia, hasta su abandono paulatino
por Samsung, Sony Ericsson y eventualmente Nokia (que lo reemplazaría por
Windows Phone), lo que lo hizo perder terreno ante la irrupción de iOS y
Android.
EVOLUCIÓN DE LOS SISTEMAS OPERATIVOS

En 2002 la compañía canadiense Research In Motion (RIM) desarrolló su


propia línea de dispositivos móviles conocidos como BlackBerry y su propio
sistema operativo BlackBerry OS (RIM con el tiempo cambiaría su nombre a
BlackBerry Ltd.). BlackBerry OS era un sistema multitasking con soporte para
aplicaciones mediante la plataforma especial para dispositivos embebidos
Java Micro Edition (JavaME). Incluía soporte para WAP, un stack de
protocolos de comunicación para móviles que dejó de ser adoptado cuando
los dispositivos móviles fueron suficientemente poderosos para procesar el
tradicional stack TCP/IP. En 2010, BlackBerry OS fue reemplazado por
BlackBerry 10, un sistema basado en el microkernel de tiempo real (RTOS)
QNX. Desde 2016, los dispositivos producidos por BlackBerry empezaron a
usar Android en lugar de BlackBerry 10.
EVOLUCIÓN DE LOS SISTEMAS OPERATIVOS
El año 2007 ocurrió la entrada de uno de los principales competidores cuando
Apple presentó su iPhone junto con su sistema operativo iOS (originalmente
iPhone OS), basado en Unix-like. Desde el año 2010, con iOS 4, el sistema
añadió soporte de APIs para multitasking por parte de aplicaciones de usuario.
Previamente el multitasking estaba restringido solo a ciertos servicios del
sistema. La disponibilidad del iOS SDK (Software Development Kit) atrajo el
desarrollo de múltiples aplicaciones nativas disponibles desde una tienda online
(App Store), popularizando rápidamente el uso del iPhone y posicionándolo
como uno de los principales competidores.

Meses después del lanzamiento del primer iPhone, un conjunto de compañías


lideradas por Google, incluyendo a HTC, Sony, Dell, Intel, Motorola, Samsung,
LG, Nvidia, entre otros, forman la Open Handset Alliance (OHA). Con el soporte
de OHA, Google lanza en 2008 la primera versión de Android, un sistema
operativo monolítico (UNIX-like) de código abierto basado en el kernel Linux.
EVOLUCIÓN DE LOS SISTEMAS OPERATIVOS
Android inició su desarrollo bajo la compañía Android, Inc. fundada en 2003. El año
2005 Google adquirió Android, Inc. y fue bajo su alero que el equipo de desarrollo
terminó la primera versión Android 1.0. De manera similar a App Store, Android
lanzó el Android Market (más tarde Google Play Store), y el Android SDK para el
desarrollo de aplicaciones (escritas principalmente en Java, y recientemente en
Kotlin) para terceros. El soporte de OHA, integrado por importantes actores del
mercado smartphone fue clave para posicionar a Android como el sistema operativo
dominador en los dispositivos móviles desde el año 2010, con iOS como su único (y
distante) competidor real.

A diferencia de Linux, el kernel de Android no utiliza la tradicional GNU C Library, sino


que utiliza una implementación alternativa de la biblioteca de C desarrollado por
Google, llamada Bionic, la cual posee un menor memory footprint que glibc y fue
diseñado para CPUs funcionando a menor frecuencia de clock (y por lo tanto,
optimizada para menor consumo energético). Bionic, sin embargo, no implementa
toda la interfaz POSIX, haciendo que Android sea Non-POSIX compliant.
ARQUITECTURA DE UN SISTEMA OPERATIVO
ESTRUCTURAS DE UN SISTEMA OPERATIVO

Una vez visto qué aspecto tienen los sistemas operativos por fuera (es decir, la
interfaz con el programador, vamos a dar una mirada al interior. Hay cinco
estructuras distintas que son:
 los sistemas monolíticos
 los sistemas por capas
 las máquinas virtuales
 los sistemas cliente-servidor o microkernels

Éstas no son de ninguna manera las únicas estructuras posibles, pero nos darán
una idea de algunos diseños que se han llevado a la práctica.
ESTRUCTURAS DE UN SISTEMA OPERATIVO
SISTEMA MONOLÍTICO
Este enfoque, que es por mucho la organización más común, bien podría
subtitularse “El Gran Desorden”. La estructura consiste en que no hay
estructura. El sistema operativo se escribe como una colección de
procedimientos, cada uno de los cuales puede invocar a cualquiera de los otros
cuando necesita hacerlo. Cuando se usa esta técnica, cada procedimiento del
sistema tiene una interfaz bien definida en términos de parámetros y
resultados, y cada uno está en libertad de invocar a cualquier otro, si este
último realiza algún cálculo útil que el primero necesita.
ESTRUCTURAS DE UN SISTEMA OPERATIVO

El sistema operativo se ejecuta


como un solo programa en modo
kernel.

SISTEMA MONOLÍTICO
ESTRUCTURAS DE UN SISTEMA OPERATIVO
EL SISTEMA POR CAPAS
Consiste en organizar el sistema operativo como una jerarquía de capas, cada
una construida sobre la que está abajo de ella. El primer sistema que tuvo
esta estructura fue el sistema THE(Technische Hogeschool Eindhoven). El
sistema THE era un sencillo sistema por lotes para una computadora
holandesa,que tenía 32K de palabras de 27 bits.

MULTICS estaba organizado como una serie de anillos concéntricos, en lugar de


capas, siendo los interiores más privilegiados que los exteriores. Cuando un
procedimiento de un anillo exterior quería invocar a uno de un anillo interior, tenía
que emitir el equivalente de una llamada al sistema.
ESTRUCTURAS DE UN SISTEMA OPERATIVO

Tienden a ser menos eficientes


Llamadas entre capas => paso de parámetros
En definitiva cada capa implica un gasto extra
Tendencia: equilibrio, menos capas con más
funcionalidad:
• Ventajas de la modularidad
• Evitan los problemas de definición e
interacción entre capas

SISTEMA POR CAPAS


ESTRUCTURAS DE UN SISTEMA OPERATIVO
MODELO CLIENTE-SERVIDOR o MICROKERNEL

Tradicionalmente todos las capas iban al kernel, pero eso no es necesario. De


hecho, puede tener mucho sentido poner lo menos que sea posible en modo
kernel, debido a que los errores en el kernel pueden paralizar el sistema de
inmediato.
La idea básica detrás del diseño de microkernel es lograr una alta confiabilidad al
dividir el sistema operativo en módulos pequeños y bien definidos, sólo uno de los
cuales (el microkernel) se ejecuta en modo kernel y el resto se ejecuta como
procesos de usuario ordinarios, sin poder relativamente.

Una ligera variación de la idea del microkernel es diferenciar dos clases de


procesos: los servidores, cada uno de los cuales proporciona cierto servicio, y los
clientes, que utilizan estos servicios. Este modelo se conoce como cliente-servidor
ESTRUCTURAS DE UN SISTEMA OPERATIVO

El enfoque usual consiste en implementar la mayor parte de las funciones


del sistema operativo en procesos de usuario.

Para solicitar un servicio, como leer


un bloque de un archivo, un
proceso de usuario (ahora llamado
proceso cliente) envía la solicitud a
un proceso servidor, el cual realiza
el trabajo y devuelve la respuesta.

MICROKERNEL
ESTRUCTURAS DE UN SISTEMA OPERATIVO
 Lo único que el kernel hace es manejar la comunicación entre los
clientes y los servidores.
 Al dividir el sistema operativo en partes, cada una de las cuales sólo
se encarga de una faceta del sistema, como el servicio de archivos, de
procesos, de terminales o de memoria, cada parte puede ser
pequeña y manejable.
 Dado que todos los servidores se ejecutan como procesos en modo
de usuario, y no en modo de kernel, no tienen acceso directo al
hardware. Por tanto, si se activa un error en el servidor de archivos, es
posible que el servicio de archivos se caiga, y normalmente esto no hará
que se caiga toda la máquina.
 Otra ventaja del modelo cliente-servidor es su adaptabilidad para usarse
en sistemas distribuidos . Si un cliente se comunica con un servidor
enviándole mensajes, el cliente no necesita saber si el mensaje será
atendido localmente en su propia máquina o si se envió a través
de la red a un servidor en una máquina remota.
ESTRUCTURAS DE UN SISTEMA OPERATIVO
MAQUINAS VIRTUALES

Mediante software, se proporciona a los programas la emulación de un sistema


que nos interesa reproducir.
El sistema emulado puede ser una máquina, un sistema operativo, una red de
computadores…
El software emulador traduce las peticiones hechas a la máquina virtual en
operaciones sobre la máquina real.
Se pueden ejecutar varias máquinas virtuales al mismo tiempo (ej. mediante
tiempo compartido). Los recursos reales se reparten entre las distintas máquinas.

A diferencia de otros sistemas operativos, estas máquinas virtuales no son


máquinas extendidas, con archivos y otras características; más bien, son copias
exactas del hardware, incluido el modo de kernel/usuario, E/S, interrupciones y
todo lo demás que la máquina real tiene.
ESTRUCTURAS DE UN SISTEMA OPERATIVO

Protección: cada máquina virtual


está aislada de las otras y no pueden
interferirse mutuamente.
Independencia de la plataforma
(ej. Java)
Pervivencia de sistemas antiguos
(ej.emuladores MSDOS)
Experimentación: se puede
desarrollar y ejecutar para un
hardware que no tenemos.
Pero… el rendimiento de la M.V.
puede ser muy lento

MAQUINAS VIRTUALES
INSTALACIÓN DE SISTEMAS OPERATIVOS
Aunque la instalación de los S.O. actuales se realiza normalmente mediante una
serie de pasos guiados por un asistente que incorpora el propio disco de
instalación, es conveniente realizar una planificación.

 Elegir el tipo de sistema que se necesita: cliente o servidor, uso monousuario


o multiusuario, número y tipo de licencia de uso
 Conocer cuáles son las necesidades hardware mínimas para poder instalar el
S.O y mejorarlas en lo mejor posible.
 Decidir si en el espacio de disco se instalarán más de un S.O, en caso
afirmativo gestionar el espacio de partición de disco mediante un programa
gestor de particiones y la configuración adecuada del gestor de arranque de
los sistemas instalados (el orden del arranque dual).
 Debemos de tener todos los dispositivos conectados físicamente al
ordenador, para que el S.O compruebe las compatibilidades e instale los
componentes automáticamente por Plug and play.
INSTALACIÓN DE SISTEMAS OPERATIVOS
En un entorno de red podemos diferenciar dos modos de conexión y de trabajo:

 El software de red que se instala en los servidores (para trabajar como servidor):


proporcionan recursos a los clientes de la red y el software de red del cliente
permite que estos recursos estén disponibles para los equipos clientes. Se
identifican dentro del grupo de ordenadores mediante el concepto de dominio.
Se denominan estaciones de trabajo o terminales los equipos que se conectan al
servidor mediante una arquitectura de red cliente/servidor.

 El software de red que se instala en los clientes (para trabajar como cliente): con
S.O que permiten la conexión mediante identificación a un ordenador cliente que
actúa compartiendo un servicio o recurso. Se denominan estaciones de un grupo
de trabajo o terminales. Las estaciones de trabajo pueden estar coordinadas
entre sí (compartiendo aplicaciones y dispositivos) cuando forman un grupo de
trabajo. El software cliente de red debe instalarse sobre el S.O existente, en
aquellos S.O de equipo que no incluyan funciones propias de red.
APLICACIONES INFORMÁTICAS
 Software de sistema o software base (como pueden ser pueden ser cargadores
de programas, sistemas operativos de estaciones de trabajo o de servidores,
controladores de hardware, utilidades) encargado de proporcionar al usuario el
control del sistemas informático de una forma desatendida con herramientas
interactivas para su correcto mantenimiento. Podemos incluir como caso especial
el software de programación (como son compiladores, ensambladores,
enlazadores, utilidades, etc.) que permiten desarrollar programas y aplicaciones
informáticas utilizando diferentes herramientas y los lenguajes de programación.

 Software de aplicación o programas diseñados para facilitar al usuario la


realización de un determinado tipo de trabajo. Algunos ejemplos de programas
de aplicación son los llamados de propósito general en los que destacan los
paquetes ofimáticos que integran o relacionan los procesadores de textos, hojas
de cálculo, y base de datos o los de propósito específico destinados a resolver
una determinada tarea en el mundo de la gestión como son los ERPs o Sistemas
Integrados de Gestión .
APLICACIONES INFORMÁTICAS DISTRIBUIDAS
Debido al desarrollo de los sistemas informáticos hacia la forma de trabajo en
modelos de red distribuida, basados en diferentes plataformas capaces de conectar
ordenadores entre sí en los que el usuario accede a recursos remotos de la misma
manera en que accede a recursos locales, y por el impulso en mejorar los procesos
en la red de comunicación de área extensa (Wan) o Internet hacia tecnologías
basadas en la llamada Web 3.0 hay que destacar la implantación del software
orientado a la llamada Aplicación distribuida como un programa o conjunto de
programas instalados en diferentes computadoras conectadas en red los cuales
están relacionados o integrados entre sí para realizar una tarea o gestionar un
proceso entre un ordenador cliente y uno servidor.
APLICACIONES INFORMÁTICAS DISTRIBUIDAS
Los componentes que aparecen en estos entornos de trabajo con aplicaciones
distribuidas son:

 El ordenador cliente inicia la comunicación (normalmente mediante un interfaz


gráfico) con el servidor por medio de un protocolo de acceso para demandarle
datos o para que realice tareas determinadas.

 El ordenador servidor dispone de las herramientas adecuadas para procesar las


peticiones, incluso de varios clientes a la vez y enviar la respuesta adecuada.

 El middleware será el interfaz que provee la conectividad entre aplicaciones


mediante una capa de software que protege a los desarrolladores del software de
tener que manejar detalles de bajo nivel de diferentes protocolos de
comunicación, sistemas operativos y otras arquitecturas como las de bases de
datos.
APLICACIONES INFORMÁTICAS DISTRIBUIDAS
Las aplicaciones distribuidas dependen del servicio ofrecido por los servidores:

 Servidores de bases de datos: servidores que gestiona peticiones realizadas por


clientes mediante el lenguaje de consulta (SQL).
 Servidores de transacciones: el proceso cliente llama a funciones que residen en
el servidor de manera que el intercambio a través de la red se realiza en un único
acceso de solicitud y respuesta independiente mente de la aplicación.
 Servidor web: peticiones realizadas mediante el protocolo de comunicación
HTTP.
 Servidores de archivos: permite el acceso remoto a archivos almacenados en un
ordenador servidor. Los protocolos que suele utilizar son SMB, NFS.
LICENCIAS Y TIPOS DE LICENCIAS
Software Libre: puede ser utilizado, copiado, distribuirlo y modificado (cuando el
código fuente disponible) para mejorar el programa o adaptarlo a las necesidades.
Normalmente llevan clausulas en el contrato para que su uso no sea con fines
comerciales. También puede haber programas libres que no pueden ser modificados ni
redistribuidos pero si instalados para uso exclusivo.

Una variante destacable es el llamado software con licencia Open Source iniciative que
detalla claramente la libertad a los usuarios para leer, modificar y redistribuir el código
fuente de un programa; los usuarios lo adaptan a sus necesidades, corrigen sus errores
a una velocidad impresionante, mayor a la aplicada en el desarrollo de software
convencional o cerrado, dando como resultado la producción de un mejor software.
LICENCIAS Y TIPOS DE LICENCIAS
Software propietario o privado: es aquel que sin permiso del propietario queda
prohibida la copia, redistribución o modificación. Para poder usar se suele pedir
permiso a la organización que lo desarrollo. Generalmente para su disponibilidad hay
que pagar bajo unos derechos de autor (un Copyryght). En conclusión, los propietarios
son los que establecen los derechos de uso, distribución, redistribución, copia,
modificación, cesión y en general cualquier otra consideración que se estime necesaria.
Los fabricantes de programas sometidos a este tipo de licencias por lo general ofrecen
servicios de soporte técnico y actualizaciones durante el tiempo de vida del producto,
también regulan el número de copias que pueden ser instaladas e incluso los fines
concretos para los cuales puede ser utilizado.

Software comercial: para su disponibilidad hay que realizar un pago. Puede existir
software libre y propietario de este tipo.

Software de dominio público. El Software con dominio público es software sin


copyright. Se permite uso, copia, modificación o redistribución con o sin fines de lucro.
El autor ha renunciado previamente a los derechos de autor.
LICENCIAS Y TIPOS DE LICENCIAS
 Con Copyleft: es aquel software que dispone de un tipo de copyrihgt creado para el
software libre que no permite agregar normas de uso de las aparecen en la licencia
determinada por el autor original y en las que detalla las condiciones bajo las cuales
garantiza las libertades de uso

 GPL: se la puede considerar como Licencia de software libre con protección heredada.
Su propósito es declarar que el software cubierto por esta licencia es software libre y
protegerlo de intentos de apropiación que restrinjan esas libertades a los usuarios,
impidiendo que este software sea integrado en software propietario. Es la licencia que
acompaña una gran variedad de software que incluye el núcleo del sistema operativo
Linux. Una de las más destacada es Licencia Pública General de GNU (GNU GPL) en la
que autor conserva los derechos de autor (copyright), y permite la redistribución y
modificación bajo términos diseñados para asegurarse de que todas las versiones
modificadas del software permanecen bajo los términos más restrictivos de la propia
licencia.

 DFSG: Las directrices de software libre de Debian son un conjunto de directrices o


criterios que el proyecto Debian utiliza para determinar si una licencia de software es
una licencia de software libre, la que a su vez se utiliza para determinar si algún
software puede incluirse en la distribución principal de Debian.
LICENCIAS Y TIPOS DE LICENCIAS
 BSD: es la licencia de software otorgada principalmente para los sistemas BSD (Berkeley Software
Distribution), un tipo del sistema operativo Unix-like. Es una licencia de software libre permisiva
como la licencia de OpenSSL o la MIT License. Esta licencia tiene menos restricciones en
comparación con otras como la GPL estando muy cercana al dominio público. La licencia BSD al
contrario que la GPL permite el uso del código fuente en software no libre. La versión original ya
se ha revisado y sus variantes son denominadas licencias BSD modificadas.

 Licencias estilo MPL: licencia pública de Mozilla, es una licencia de software libre, de código
abierto y detallada desarrollada y mantenida por la Fundación Mozilla. Se caracteriza por ser un
híbrido de la Licencia BSD modificada y GNU General Public License (GPL) que busca equilibrar los
intereses de los desarrolladores de código abierto y propietario.

 Freeware: programas que permiten la redistribución gratuita pero no la modificación, y que a


veces incluyen su código fuente. Estos programas no son software completamente libres de uso.

 Shareware: es el software disponible con permiso para ser redistribuido, pero su uso está
limitado en tiempo o en funciones (no contienen todas los procesos). Para tener una
disponibilidad completa hay que realizar un pago. Generalmente, el código fuente no se
encuentra disponible.
La mejor forma de aprender es “haciendo”.
Educación y empresas forman un binomio inseparable

También podría gustarte