1 Sistemas Operativos. Conceptos iniciales e historia de los sistemas operativos.

 

 Conceptos iniciales e historia de los sistemas operativos












Cuaderno completo con este tema: 




En este curso estudiaremos el nivel de sistema operativo:

Sistema operativo es un gestor de recursos.


Los recursos fundamentales son CPU Memoria y Memoria Secundaria.

El sistema operativo es la capa de soft más baja del sistema. Trabaja directamente sobre el hardware estudiado en Arquitectura.

El SO es un gestor de RECURSOS del sistema.

Un programa en ejecución se denomina PROCESO.

Las dos palabras fundamentales del curso son PROCESOS y RECURSOS.

El SO tiene tres partes fundamentales: gestión de CPU, gestión de Memoria, y gestión de Memoria Secundaria.

La multitarea y el multiusuario motivan muchas de las características de diseño que discutiremos en los sistemas operativos.


BIBLIOGRAFIA


ARPACI-DUSSEAU, Remzi H. y ARPACI-DUSSEAU, Andrea C. Operating Systems: Three Easy Pieces. Madison: Arpaci-Dusseau Books, LLC, 2018. ISBN 978-0-999-77300-6.

TANENBAUM, Andrew S. y BOS, Herbert. Sistemas operativos modernos. 5ª ed. Ciudad de México: Pearson Educación, 2025. ISBN: 978-607-326-013-8.

ARPACI-DUSSEAU, Remzi H. y ARPACI-DUSSEAU, Andrea C. Operating Systems: Three Easy Pieces. v. 1.10. Madison: Arpaci-Dusseau Books, 2024.

KERNIGHAN, Brian W. y PIKE, Rob. El entorno de programación UNIX. Ciudad de México: Prentice Hall, 1987. ISBN: 968-880-071-8.

STALLINGS, William. Sistemas operativos: aspectos internos y principios de diseño. 7ª ed. Madrid: Pearson Educación, 2012. ISBN: 978-84-8322-879-1.

SILBERSCHATZ, Abraham, GALVIN, Peter B. y GAGNE, Greg. Fundamentos de sistemas operativos. 10ª ed. México D.F.: McGraw-Hill, 2019. ISBN: 978-1-119-45633-9.

NUTT, Gary J. Sistemas operativos. 3ª ed. Madrid: Pearson Educación, 2004. ISBN: 978-84-7829-067-3.

PETERSON, James L. y SILBERSCHATZ, Abraham. Sistemas operativos: conceptos fundamentales. 2ª ed. Barcelona: Reverté, 1991. ISBN: 978-84-291-2661-7.

SHAW, Alan C. Diseño de sistemas operativos. 1ª ed. Madrid: Prentice Hall, 1977. ISBN: 978-01-354-2456-7.

KERNIGHAN, Brian W. y PIKE, Rob. El entorno de trabajo Unix. Englewood Cliffs, New Jersey: Prentice-Hall, 1984. ISBN 0-13-937681-X.

KERNIGHAN, Brian W. y RITCHIE, Dennis M. El lenguaje de programación C. 2ª ed. Englewood Cliffs, New Jersey: Prentice Hall, 1988. ISBN 0-13-110362-8.

LOVE, Robert. Linux Kernel Development. 3ª ed. Upper Saddle River, NJ: Addison-Wesley, 2010. ISBN 978-0-672-32946-3.





Temario

  • Generalidades y Evolución  — PROCESOS Y RECURSOS
  • Gestión de CPU — SINCRONIZACION DE PROCESOS CONCURRENTES
  • Gestión de Memoria  — MEMORIA REAL Y VIRTUAL
  • Gestión de Memoria Secundaria — FILE SYSTEMS


Sistemas operativos es una materia que cubre el área de Infraestructura de TI.

La infraestructura de IT son las tecnologías que propician, que permiten, que están detrás de los sistemas de gestión o sistemas de información de una organización.

Es la tecnología (genérica) que está detrás.

Concretamente, la infraestructura de IT abarca:

  • La arquitectura de los sistemas. Los componentes físicos, el hardware. MATERIA ARQUITECTURA DE SISTEMAS.
  • Los sistemas operativos. La capa de software de más bajo nivel, que permite que el hardware anterior funcione como un conjunto de servicios, facilitando así el desarrollo y uso de aplicaciones que van sobre ese hardware. ESTE ES NUESTRO NIVEL.
  • Redes y telecomunicaciones. Proporciona conectividad entre todos los elementos. CURSO DE REDES.
  • Bases de datos y herramientas relacionadas con la gestión de la información. CURSOS Y ELECTIVAS DE BASES DE DATOS.
  • Seguridad de los sistemas, seguridad de todo lo anterior. LA TRATAN EN CADA CURSO Y EVENTUALEMENTE ALGUN CURSO POSTERIOR O ELECTIVO ESPECIFICO. ES UN AREA MUY DINAMICA.

Qué preguntas nos hacemos cuando hablamos de infraestructura ?

  • ¿Qué tecnologías necesitan las empresas en la actualidad para realizar su trabajo?
  • ¿Qué necesito saber sobre estas tecnologías para asegurar que mejoren el desempeño de la empresa? Impacto en la organización, en la ecuación de valor de la empresa.
  • ¿Qué tan probable es que vayan a cambiar estas tecnologías en el futuro?
  • ¿Qué tecnologías y procedimientos se requieren para asegurar que los sistemas sean confiables y seguros ?

En el año 2010, en ESTADOS UNIDOS, en un año, la inversión en infraestructura de IT fue de U$S 1.000.000.000- Esto cuenta hardware, sistemas operativos, BD y redes.

No cuenta capacitación y consultoría, negocio que en el mismo año, mismo lugar, movió U$S 800.000.000.-

En total en 2010, en EEUU, al año U$S 1.800.000.000.-

Estos gastos en infraestructura de IT son entre el 25% y el 50% de los gastos totales en IT de las empresas. Con más énfasis incluso en el sector financiero.










Las eras de la infraestructura



  • MAINFRAMES 60’s -70’s——– una computadora grande, de uso compartido, a través de terminales tontas.
  • PCs standalone  80’s
  • PCs en red 80’s
  • PCs en red, conectada a Internet  90’s
  • Computación en la nube 2000’s


Qué implica el cómputo en la nube?

Esto –cuando se puede usar- implica que mi server está en algún lado, en la nube, y no necesito crear y administrar un datacenter.

Esto nos elimina, o minimiza el “comprar cómputo por las dudas”.


Impulsores de esta evolución

  • Ley de Moore. El poder de cómputo de la CPU se incrementa exponencialmente a lo largo del tiempo.
  • Ley de almacenamiento digital masivo. En 2010, la información nueva, en un año, se estimó era del orden de 1 exabyte (10**18 bytes). Y se estima este número se duplica año a año. Las tecnologías de almacenamiento, aumentan exponencialmente de capacidad y entonces esto no es un problema por el momento.
  • Ley de Metcalfe. Economías de Red. Cuando tenemos negocios sobre redes, el integrante n+1 agrega más valor que el integrante n. Un crecimiento lineal en la cantidad de integrantes, provoca un crecimiento exponencial en el valor de la red.
  • El costo de almacenamiento se abarata en forma exponencial.(nuevas tecnologías)
  • El costo de internet decrece exponencialmente.(economías de red)

Que las empresas se estén adaptando a estas nuevas realidad tiende a la expansión del negocio.

Los estándares son acuerdos en la cadena de valor. Estos desencadenan enormes economías de escala. Y esto repercute positivamente en la ecuación de costos de todos los actores.

Estos son los diferentes jugadores infraestructura. Sistemas operativos es una de las áreas.


Definiciones y conceptos iniciales


Qué es una computadora?

Qué hace una computadora?

Computadora: computa. Procesa datos. Entrada, Proceso, Salida.

Cómo lo hace ?

CPU , Bus, Memoria (Arquitectura Von Neumann).

Unidad Central de Procesamiento. Partes: registros (memorias de trabajo), UAL unidad aritmético lógica (realiza las operaciones), UC unidad de control (gobierna la ejecución del programa).

Bus es un conjunto de cables que conecta la CPU y la Memoria.

En la memoria reside EL programa a ejecutar y los datos que procesa.

Resaltamos “EL PROGRAMA” porque la computadora, a nivel de la arquitectura, es básicamente monotarea. Es decir, ejecuta un sólo programa.


La CPU podría ser multinúcleo, y en tal caso habría un cómputo paralelo, caso que estudiaremos aparte.

El concepto de multitasking y multithreading, los gestiona el S.O. más allá de si hay multinúcleo o no. Pensemos por ejemplo una computadora corriendo miles de procesos con un procesador de 4 núcleos. Claramente la multitarea está manejada mucho más allá de los 4 núcleos a la vez de ejecución. El sistema operativo repartirá la CPU entre los miles de procesos, básicamente atendiéndolos un poco a cada uno.

No se pierde mucho tiempo de CPU así ? No es muy lento ?


Piensen que una CPU de 3 Ghz, está ejecutando 3.000.000.000 de operaciones por segundo. Esto es tan rápido que un procesador común y corriente, por ejemplo un i3 de alrededor de U$S 100.- puede sin problemas ejecutar múltiples programas pasando el control de uno otro, luego de haber ejecutado algunas líneas de cada uno.

Para hacernos una idea histórica, un procesador de 3,58Mhz, como el z80 de 1980 aprox, ejecutaba 3.500.000 operaciones por segundo, con lo cual esto ya le permitía resolver múltiples problemas de cómputo, y físicos en STRs, por ejemplo la inyección de combustible, frenos ABS, airbags, telecontrol de centrales nucleares…

Un proceso es un programa cuando se ejecuta. Un proceso es dinámico mientras que un programa es estático. Múltiples instancias de un mismo programa dan lugar a diferentes procesos.

Un programa es una lista de instrucciones en un lenguaje de programación.

Los lenguajes de programación pueden ser de alto nivel (C++, Java, etc) o de bajo nivel. El más bajo nivel es el código máquina. El assembler es una correspondencia 1 a 1 con el código máquina. El chipset del procesador (si bien Intel utiliza también este término para otros internals) , mejor dicho, el set de instrucciones del procesador, nos indica el conjunto de operaciones que ese assembler soporta.

Los lenguajes pueden ser compilados o interpretados, y en ambos casos se traduce el código de alto nivel en código máquina. En el primer caso se hace todo de una vez, en el segundo se hace línea por línea.

Cuando el sistema operativo permite la ejecución simultánea de múltiples procesos, se dice es MULTITAREA. Estos procesos se llaman procesos CONCURRENTES.


La multitarea no es entonces una consecuencia de la arquitectura, sino principalmente del nivel de sistema operativo. Podríamos decir que es una ilusión que provee el sistema operativo.


El sistema informático, a nivel de su arquitectura, podemos asimilarlo a un conjunto de RECURSOS.

Qué es un recurso ? Refiere a un elemento del hardware, que tiene una potencialidad de cómputo. Esa capacidad bruta de cómputo, se transforma en capacidad neta, cuando el sistema operativo propicia el uso de dicho dispositivo. Por ejemplo por contar con el conjunto de drivers adecuado.

En definitiva, en nuestro curso, trabajaremos con PROCESOS accediendo a RECURSOS.

Esos son los dos conceptos fundamentales del curso.

Qué es lo interesante ? Tenemos recursos compartidos, y tenemos procesos concurrentes, simultáneos, que quieren accederlos.

Es el sistema operativo quien permite y arbitra dicho acceso.

Por ejemplo, una situación de arbitraje, puede ser cuando el sistema recibe peticiones de impresión de dos procesos, a la vez, sobre la misma impresora. El sistema decide quien pasa y quien espera, y luego de la espera también habilita.

En definitiva, el Sistema Operativo es un GESTOR DE RECURSOS del sistema informático.

(primera definición, simple).

Un sistema operativo multiusuario reconoce diferentes potestades y derechos de acceso a diferentes usuarios. Esto también lo gestiona el SO.


La característica de “modernos” de los SO viene por el lado de la multitarea y el multiusuario.

Diferentes recursos tendrán diferentes formas de compartir. Por ejemplo una conexión de red, no se usa en forma exclusiva, trabajan sobre ella múltiples procesos. Otros recursos son “one time”, por ejemplo el airbag de un auto. Estos dos tipos de recursos (one time y los totalmente compartibles), no plantean grandes problemas a los procesos concurrentes. El desafío pasa por los recursos como una impresora, una unidad para respaldos, disco, etc. que deben usarse uno por vez.

Así por ejemplo, encontramos la cola de impresión, que es arbitrada por el SO.

Un RSR es un recurso serialmente reusable, es decir, un recurso que puedo usar muchas veces, un proceso por vez. Por ejemplo una impresora.

Aquí va a aparecer un primer PROBLEMA DE SINCRONIZACION que es el problema de la mutua exclusión. Múltiples procesos accediendo a la vez a un RSR.

Este es problema de la mutua exclusión será un primer problema a analizar.

Otro problema de sincronización de procesos, interesante para nosotros. Cuando tenemos múltiples procesos, pero en dos categorías: algunos colocan en un área de memoria (buffer) y otros toman de la misma, en orden; llamaremos a esta forma de sincronización PROBLEMA DEL PRODUCTOR CONSUMIDOR.

Se da por ejemplo cuando descargamos un video. La descarga es el productor y el player es el consumidor.

Otro problema interesante. Cuando tenemos procesos que acceden a un área en común en modo lectura y otros procesos que acceden a dicha área en modo escritura. Este será el problema de los lectores y escritores.


Por ejemplo, cuando tenemos un archivo compartido en la red, y hay procesos que acceden para leerlo y otros para modificarlo.

También tendremos problemas relacionados con la asignación de múltiples recursos, todos de un mismo tipo. Un ejemplo será el problema de los filósofos.

En éste, 5 filósofos están sentados en una mesa, circular, y cada uno tiene un palito para comer arroz tanto a su derecha como a su izquierda. Precisa 2, pero cada uno lo comparte con el vecino. Los programaremos de forma de sincronizarlos para que todos puedan comer.

Aparecerá un fenómeno llamado DEADLOCK, donde todos los procesos quedan trancados.

Supongamos tenemos estos códigos:

P1

1 Pedir Impresora 1

2 Pedir Impresora 2

3 Imprimir

P2

1’ Pedir impresora 2

2’ Pedir impresora 1


3’ Imprimir

Supongamos que tenemos la mala suerte de que se ejecutan así:

1 1’ 2 2’ …

Queda Proceso 1 esperando por impresora 2 y proceso 2 esperando por impresora 1.

Cada uno tiene lo que el otro precisa y no devuelve lo que aún no usó…

Ahí ocurre un deadlock.

El deadlock es un error de programación.

También habrá otro fenómeno similar, llamado APLAZAMIENTO INDEFINIDO, donde sin estar trancados, nadie accede a nada. Por ejemplo si un proceso de alta prioridad acapara un recurso.


Van surgiendo entonces, muy por arriba, problemas de sincronización de procesos concurrentes, que trataremos en el curso:

  • Mutua exclusión
  • Productor Consumidor
  • Lectores Escritores
  • Filósofos comensales
  • Deadlock
  • Aplazamiento indefinido

Vamos a trabajarlos con diferentes herramientas:

  • Sincronización por busy waiting. Usaremos whiles que desperdician cómputo para que los procesos se esperen.
  • Semáforos. Eficiente y de bajo nivel.
  • Soluciones a nivel del Lenguaje de Programación: regiones críticas condicionales y monitores. Problemáticas.
  • LP específico para concurrencia: lenguaje ADA.
  • Otras alternativas.

Una parte de nuestro curso consistirá en tomar esta matriz de problemas/herramientas, y analizar todos los casos.

Utilizaremos el concepto AMPLIO de computadora. Esto es, que cualquier máquina que tenga entrada, proceso y salida, es computadora.


Esto abarca:

  • PCs
  • Notebooks
  • Servers
  • Celulares
  • Smart TVs
  • STRs: sistemas de tiempo real.

Los sistemas de tiempo real son computadoras con un fin específico. Por ejemplo el módulo inteligente de un sistema de aire acondicionado. O el de una heladera. O el sistemas de airbags de un auto. Etc. Cumplen la definición de computadora. Tienen arquitectura de computadora (cpu, bus y memoria). VAN A TENER un nivel de sistema operativo al igual que una computadora.

El nivel de software de un STR es, al igual que un sistema operativo, un gestor de recursos. También nos interesa su análisis, que tiene algunas particularidades, derivadas de la necesidad de responder a tiempo a determinados eventos.

En una computadora tradicional, el objetivo del SO va a ser maximizar el uso del hardware.

En un STR, el objetivo del SO va a ser minimizar los tiempos de respuesta.

Vamos a tener sistemas operativos genéricos: Windows, Linux, etc; sistemas operativos para tiempo real, por ejemplo RT Linux, Android y vamos a tener sistemas específicos para gestión de recursos, como son los módulos de software de cualquier STR.

Los 3 escenarios entonces son: Muy genérico, para el sistema operativo. Genérico pero con asuntos particulares contemplados SOTR, totalmente específico STR.

Los sistemas informáticos tienen 3 componentes: Hardware, software y gente.

Siempre es interesante contemplar los 3 puntos de vista.



Ejercicio entre todos

“La seguridad informática desde estos 3 puntos de vista”.

Seguridad: que acceda el que realmente puede, y que el que no puede, no acceda.

Seguridad desde el punto de vista del hardware:

Ej.: Tesoro.txt dentro de una computadora cuyo admin no lo sé.

¿cómo se lo roban?

Josefina: me llevo el disco duro…

Elisa: fuerza bruta o ingeniería social…

Voy con un live cd (o un disco de instalación) o dvd o usb pendrive, booteo del live cd, soy admin, monto el disco y me llevo el archivo…

Ya que esto es posible, entonces ningún sistema es seguro ?

Esto no es cierto… porque tenés que llegar a la computadora, FISICAMENTE.

Por esto es que los servers están en el centro de cómputos!


ESA ES LA SEGURIDAD FISICA, A NIVEL DE HARDWARE.

Seguridad a nivel del software….

Usuarios, contraseñas, programas, derechos, permisos, firewalls, antivirus, etc etc Todo lo que implique configuración de software también está incluido. La idea es no sólo conectar, funcionar, sino también asegurar.

También la encriptación de archivos.

Seguridad a nivel de la gente…..

Alguien con potestades pero falta de conocimiento rompiendo todo… (safety)

El punto central es la llamada INGENIERIA SOCIAL… atacamos al sistema por el lado más débil, el usuario. Muchas veces este es el primer paso para un ataque más sofisticado… ya que es más fácil atacar desde adentro al sistema.

KEVIN MITNICK es el que acuñó el término.

The art of deception

The art of intrusion (2005 aprox…, español)

Cómo nos defendemos de la Ingeniería Social ?

CAPACITACION!


Todo esto nos mostró un asunto (la seguridad, que además nos interesa en sí) desde las tres ópticas: hardware, software y gente.

  • Definición de Sistema Operativo:
    • Un sistema operativo es un conjunto de programas que administran los recursos del sistema, proporcionando y arbitrando el acceso a los mismos por parte de los usuarios del sistema.
  • El SO es software de bajo nivel. A veces en Assembler, a veces en lenguajes que permiten el bajo nivel, típicamente C.
  • El hardware es visto como un conjunto de recursos.
  • Los usuarios aparecen a través de las cuentas de usuario y proceso de autenticación. Esto conlleva un conjunto de derechos de acceso. El SO los arbitra.
  • La parte central del SO se denomina núcleo o kernel. Y es donde se gestionan los recursos.
  • El SO provee a los usuarios acceso a los recursos del sistema. Lo hace a través de un programa llamado SHELL. Los shells pueden ser orientados a comandos o gráficos  (GUIs).
  • Si SO provee a los Programas, acceso a los recursos del sistema. Lo hace a través de las llamadas al sistema, system calls.
  • Los SOs modernos, son multitarea y multiusuario.
  • La multitarea es una ilusión.
  • La administración de los recursos, todos, y la gestión de situaciones de arbitraje en caso de conflicto, está a cargo del SO.
  • Como el SO es el nivel inmediato encima del hardware, naturalmente tiene una enorme responsabilidad con respecto a la seguridad.
  • El SO constituye un nexo entre el hardware y el software.
  • El SO brinda un Entorno o Ambiente de Trabajo. Esto es, que un conjunto de herramientas usuales, también son parte del SO: compiladores, debuggers, editores, asistentes de respaldos, antivirus, firewalls, etc.

Objetivos del sistema operativo:


  • Uso eficiente del hardware, maximizar el cómputo con el hardware disponible.
  • Lograr un entorno de trabajo para el sistema, donde se trabaje con comodidad.
  • Si es un sistema de tiempo real, responder a tiempo.
  • Proporcionar abstracciones útiles para el nivel de programación.
  • Proporcionar un marco para que el usuario ejecute aplicaciones.
La historia nos va a mostrar que los SO fueron concebidos más pensando en facilitar el trabajo de los desarrolladores que en el usuario final.

También hay un foco importante en el desempeño global del sistema más que en un aplicativo en particular.

Evolución de los sistemas operativos

1822 1830 Máquinas de Babbage.

Diseñada. Imposibilidad de fabricarla con las tecnologías de la época.

Fabricada en nuestros tiempos, museos.

Este video tiene una demo del funcionamiento

https://www.youtube.com/watch?v=MjkcrmQDd0c



Basada en engranajes.

Mecánica.

  • Entrada
  • Salida
  • Operación
  • Evaluaba polinomios
  • Variables
  • Abstracción de la memoria por medio de uso de variables
  • Programa
  • Pretendía ser usada para producción de tablas con cálculos, por ejemplo las tablas de logaritmos.

1896- Máquina de Hollerith. Tabuladora. Antecesor de IBM.

Link interesante https://www.youtube.com/watch?v=Bu6jWpBRrkg

Un poco dejó sentadas las bases de la computación hasta los años 70’s. En ella estaba la característica de la ESCASA MEMORIA.

Al tener poca memoria, los datos no pueden ser almacenados e interrogar la BD, por ejemplo. En lugar de ello, hay que “verlos pasar” y extraer conclusiones: contar, contar selectivamente, etc.

Esta máquina de Hollerith era eléctrica. Refiere a un conjunto de máquinas.

El censo de EEUU fue uno de los problemas en 1890’s que motivó esta tecnología.


Aparecen las tarjetas perforadas, los censores perforaban las mismas en función de las respuestas de la gente, y la máquina las procesaba.

La PRIMERA GENERACION, con máquinas computadoras eléctricas funcionando con válvulas de vacío, data de 1940’s.

Alan Turing como uno de los teóricos destacados, en particular en el estudio de qué problemas son computables y cuáles no.

John Von Neumann como matemático autor de la descripción de la Arquitectura Von Neumann que abstrae el funcionamiento de las computadoras.

Arquitectura Von Neumann sobre la máquina EDSAC:

https://www.youtube.com/watch?v=Ml3-kVYLNr8





El problema de crackear la máquina enigma:

https://www.youtube.com/watch?v=d2NWPG2gB_A

https://www.youtube.com/watch?v=kj_7Jc1mS9k





El ENIAC, 1944, es el gran exponente de esta generación.

De alguna forma aparece aquí la informática moderna.


Al final de la primera generación, en 1953, aparece el primer SISTEMA OPERATIVO.

El contexto es que la industria tenía una gran necesidad de procesar datos!

El sistema operativo aparece como un programa que, al correr sobre él el resto de los programas, permitía abstraer la ENTRADA/SALIDA, es decir, la interacción con los diferentes dispositivos.

Surge desde la programación! Este programa resuelve de una vez y para el resto, la E/S, siendo el SO una suerte de colección de drivers.

Así, se sitúa, el SO, entre el hardware y el resto de los programas.

Enseguida, aparece el interés por explotar más el hardware. Por ello, el sistema operativo asume el rol de ejecutar cada programa, y se organizan en una lista de ejecución. De ese modo no dependemos del operador. Este ya no ordena la ejecución individual de las tarjetas de un programa, sino que proporciona a la computadora una secuencia de grupos de tarjetas, correspondientes a los demás programas.

Este metaprograma, el sistema operativo, pasa a gobernar la ejecución secuencial, batch, del resto.


Esta computación de muy escasa memoria predominó hasta los años 70s, el foco era ver pasar datos y extraer totales, subtotales, totales selectivos, y listados con agrupaciones de datos que cumplieran ciertas condiciones. No guardamos, no interrogamos de forma interactiva, etc.


Hay una visión muy industrial de la computadora, es una máquina más en la empresa. Sólo que su particularidad es procesar datos. Y esto trajo un interés en maximizar su uso. Ese hardware que era tan caro, había que usarlo lo más posible!


La idea casi obsesiva de maximizar el uso de la computadora.

El sistema operativo, como gestor de todos los elementos de la máquina, es quien fue el encargado de esa optimización.

Este primer sistema operativo es monotarea. Sin embargo aparece una primer multitarea lineal…….. BATCH: ejecutar una lista de programas. Procesamiento por lotes de secuencia única.

El hardware predominante al final de la primera generación eran válvulas de vacío para el almacenamiento de datos, tarjetas para la entrada de datos e impresoras para la salida.

Las válvulas de vacío consumían mucha electricidad, tenían una corta vida útil, generaban errores con sus fallos.

Hay una mejora tecnológica enorme con la llegada de los transistores. COMIENZA LA SEGUNDA GENERACIÓN. 1955 1965

Esto permite guardar datos en menos tiempo, con menos calor, menor tasa de falla, etc. Las computadoras, aún de cuartos especiales, ya eran más pequeñas.

Máquinas fabricadas en serie. El jugador es IBM. Aparecen otros. La característica al inicio de la generación es el job sequencing, batch, es decir ejecutar varios programas uno tras otro, bajo el control del sistema operativo.

Aparecen las unidades de cinta. Con lo cual el sistema operativo pudo implementar el trabajo batch con mucha más eficiencia, usando subcomputadoras.

El batch de la primera generación consistía en tomar una lista de trabajos que venía dada por una lista de conjuntos de tarjetas, de los programas a ejecutar, e irla ejecutando secuencialmente, y sacando los resultados por la impresora.

Este esquema sería: Tarjeta —-CPU —— Impresora

En la segunda generación, al aparecer las cintas magnéticas como medio “rápido” de soporte, , pasamos a:


Una subcomputadora de entrada pasa los datos de tarjetas a cintas, luego la computadora principal pasa los datos de cinta a cinta, y una subcomputadora de salida pasa los datos de cinta a impresora.


De esta forma la computadora principal, trabaja desde y hacia cinta, y de esta forma la CPU trabajaba lo más rápido que podía.

Notar como es el sistema operativo el que amalgama todo esté trabajo. Empieza a consolidar ese rol de software que facilita el uso de todos los recursos.

De a poco va ganando funcionalidades.

Aparece, también en esta generación, la gestión de interrupciones, como revolución en la arquitectura.

Una arquitectura sin interrupciones, debía interrogar (polling) a sus dispositivos en busca de si tenían algo para decir. Esto desperdicia muchos ciclos de reloj. Con las interrupciones, la CPU se desentiende hasta que le avisan los dispositivos. Esto es mucho más eficiente.

La CPU es interrumpida por cada dispositivo. En función del número de interrupción, el sistema operativo busca un código (el handler) y lo ejecuta.

Aparecen los primeros discos duros. Más rápidos que las cintas, aunque no de gran capacidad, pero con una característica novedosa: permitían la lectoescritura on line en cualquier punto del disco (no secuencial como la cinta).

En el disco duro, los archivos pueden crecer todos, no sólo el último.

Consecuencia de todo esto se empezó a optimizar el cómputo, superponiendo dos programas.

Ejecutamos dos procesos “a la vez”, hay un “titular” que tiene la CPU y cuando tiene que hacer una operación de entrada/salida, o sea, esperar por una interrupción, el sistema operativo toma el control, y ejecuta en un poco del programa “suplente”. Cuando el titular está listo, avisa, por medio de una interrupción, y el sistema le devuelve el control.


Esto nos permitía eliminar ciclos muertos de CPU. La CPU quedaba ociosa mientras el primer proceso esperaba por su interrupción. De esta forma la aprovechamos completamente.

Se le llama buffering a esta técnica. Es una multitarea rudimentaria.

Por qué se hace? Somos buenos con el usuario y queremos darle la posibilidad de ejecutar dos procesos a la vez? NO. Se hace para optimizar el uso de CPU y sin embargo, una consecuencia de ello, es que el usuario pueda ejecutar dos procesos a la vez.

Si me permiten la digresión, el ponerle sistema operativo a las cosas, hace que el hardware de aproveche al máximo. Así, el sistema operativo en un auto híbrido, es el responsable de maximizar las baterías.

El buffering motivó la multitarea.

En la medida que la arquitectura proporcionó (sobre todo ya en tercera generación) más memoria, entonces en lugar de 2 tareas, se pudo ejecutar n tareas simultáneamente. Este concepto fundamental, gobernado por el sistema operativo, es la multitarea.

Desde el momento que el procesador, por medio de las interrupciones, gobierna al resto de los dispositivos, aparecen las arquitecturas fuertemente centralizadas en el procesador y la memoria, siendo los demás dispositivo, llamados periféricos.

Todo el hardware: lectoras de tarjeta, discos, impresoras, etc se va subordinando a la CPU.

El desafío es utilizar todos estos recursos eficientemente. El sistema operativo ejecuta con tal fin. A su cómputo, se le llama OVERHEAD. Esto significa que es un cómputo administrativo, implica una pérdida de recursos en dicha ejecución.


Sin embargo, la misma, se justifica, por la optimización global conseguida.

El cómputo del sistema operativo, no es cómputo en sí mismo en cuanto a la utilidad, pues no es lo que queríamos hacer con la computadora, pero es un precio a pagar, razonable, para la optimización del uso del hardware que el sistema operativo permite.

(En informática ninguna acción es gratis, y las monedas con las que pagamos son tiempo y espacio, relacionadas en general con CPU y memoria respectivamente).

El desafío para el SO es lograr un uso eficiente de todos los recursos del hardware.

Aparece al final de la segunda generación, la multiprogramación. Esto es ejecutar concurrentemente un conjunto de procesos, los cuales están todos alojados en RAM. Cuando uno hace una entrada/salida o cuando ha pasado cierto tiempo, pasamos el control al siguiente, y así, circular y sucesivamente.

Este uso global de la computadora maximiza, o busca maximizar el funcionamiento, el reparto de los recursos, el desempeño…

Se logra gracias a: CPU más rápidas, memorias más grandes y más rápidas, hardware con manejo de interrupciones, y además un sistema operativo lidiando con todo lo anterior.

En general, y es un ciclo que se cumple hasta hoy: la arquitectura proporciona mejoras, el sistema operativo las capitaliza y esto deja atrás a la arquitectura anterior.

Con los circuitos integrados aparece la TERCERA GENERACION de computadoras.

Años 1965-1970 aprox. Hasta 1980’s


En esta los grandes exponentes son los mainframes, grandes computadoras cuyos recursos podían ser compartidos.

 Le mejora en el hardware propició un cambio genial!: apareció, al final de la tercera generación, la COMPUTACION INTERACTIVA, o sea, monitores, teclados en terminales, el hecho de dar una orden y obtener el resultado en segundos. Este fue un cambio enorme.

Ahora, con esto, se opera interactivamente la computadora.

La tecnología que propició esta tercera generación son los circuitos integrados, las plaquetas, que simplificaron la conexión de componentes, así como eliminaron tantos cables. Máquinas más chicas, ya del tamaño de una heladera (minicomputadoras). Menos calor, refrigeración por flujo de aire. Más CPU, más memoria, más capacidad de cómputo, y nuevos problemas a resolver.

En la tercera generación hay dos etapas bien diferenciadas: computación batch (proceso por lotes) y computación interactiva.

Notemos que esta enorme evolución de una a otra, viene dada por el sistema operativo. Al propiciar el multitasking, se pudo pasar a esta segunda forma de trabajo.

En 1964 , el IBM 360 es un exponente claro de la primera etapa de esta generación.

16Kb RAM, 0,3Mhz. Computación por procesamiento de datos con escasa memoria. Costo del orden del millón de dólares.

(equivale a 8 millones de hoy).


La computación estaba al alcance de las empresas MUY GRANDES.

Las digital PDP8- PDP11 (Antecesoras de las Vax) eran también de la época.

El sistema operativo del IBM 360 era el OS 360. Enorme sistema operativo monolítico, multitarea, con capacidad de proceso batch, protección de memoria en la multitarea, aparece los spool Etc. LLENO DE BUGS.

En los 60’s ocurrió la CRISIS DEL SOFTWARE! Se usaban técnicas artesanales, de “programming in the small” intentando escalarlas a software más complejo, que la mejor arquitectura comenzaba a tolerar. Una mezcla perversa de malas prácticas de todo tipo en nuestra industria nos llevó a malos tiempos de entrega, horribles productos, proyectos enormes fracasando.

De la crisis del software nace…………………………la ingeniería de software. Que es tratar el desarrollo de software como un asunto de ingeniería, con procesos bien definidos, documentación, cronogramas, milestones, contratos serios, técnicas de documentación del esfuerzo de desarrollo y posterior predicción del mismo, etc. Incorporación en general de un enfoque orientado a la calidad, certificaciones.



Aparece el spooling. Esto es interponer entre la CPU y un dispositivo lento, un dispositivo intermedio. Por ejemplo la impresión a disco y de ahí a la impresora. Se logra mayor velocidad al desligar la CPU del tal disposivo lento. La CPU seguirá con otro programa del multitasking, y alguna tarea del multitasking también, toma del archivo y va mandando a la impresora.

Lo puede hacer gracias al multitasking y a la gestión de interrupciones.

  • Spool=Simultaneous peripheral operation on line.

Aparecen entonces las colas de impresión y nuevamente el sistema operativo, gracias a su gestión, permite que se aproveche mejor la arquitectura.

PARA LA SEGUNDA MITAD DE ESTA GENERACION, aparecen al fin las máquinas de tiempo compartido.

Implican un cambio drástico en la forma de  usar la máquina. Tenemos usuarios interactivos, detrás de una terminal tonta, consistente de monitor y teclado. Da órdenes y recibe resultados en segundos.

Computadora hay una sola, pero múltiples terminales. Estas son tontas, en cuanto a que no computan, sino que mandan computar a la computadora, y ésta les da la respuesta, y éstas la exhiben.

Acá no hay red, hay un mainframe con múltiples terminales, llamadas terminales tontas por no tener cómputo propio, y llamadas terminales en línea por su constante comunicación con el sistema.

Los mainframes dominaron el escenario informático hasta los 90s… Fueron sustituidos por los servicios en red (se precisó servers, protocolos, red, máquinas cliente, etc).


Cómo funciona el tiempo compartido: cada proceso de diferentes usuarios recibe un poco de procesador, en ronda (round robin) y con criterios para pasar al siguiente.

Criterios……. Ha pasado cierto tiempo (timeout) y le toca a otro, O, se puso a hacer una operación de entrada/salida. En cualquiera de esos dos eventos, me quitan el CPU y se le da a otro proceso. En definitiva, se comparte la CPU gracias a la gestión del sistema operativo, la cual da la ilusión de estar en un sistema único.

El mainframe más famoso? AS400 de IBM…

https://es.wikipedia.org/wiki/AS/400

A esta altura de los años 70’s encontramos tres tipos de computadoras:

  • Tiempo compartido
  • Batch
  • Computadoras embebidas en sistemas de tiempos real (ej estabilización de un avión)

Noten: MISMO HARDWARE, diferente SO = diferentes usos. Radicalmente diferentes.

Los sistemas operativos son genéricos y están orientados a MAXIMIZAR EL USO DEL HARDWARE, incluso sacrificando desempeño individual de algunos programas.

Los sistemas de tiempo real son específicos y están orientados a MINIMIZAR EL TIEMPO DE RESPUESTA, incluso cortando tareas no esenciales.

El primer sistema de tiempo compartido 1961 CTSS (time sharing system)


Los sistemas de tiempo compartido permiten en los mainframes el COMPARTIR RECURSOS.

Sin embargo, también se da una competencia por los recursos críticos: CPU y memoria.

Si un usuario ejecuta algún cómputo muy pesado, perturba al resto.

La computación de tiempo compartido es un factor determinante, dado por el sistema operativo, en el cual ahora se propone una forma de trabajo interactiva, con usuarios que están en terminales online usando la máquina.

PARA LA SEGUNDA MITAD DE ESTA GENERACION, aparecen al fin las máquinas de tiempo compartido.

Implican un cambio drástico en la forma de  usar la máquina. Tenemos usuarios interactivos, detrás de una terminal tonta, consistente de monitor y teclado. Da órdenes y recibe resultados en segundos.

La computadora central que tiene colgadas todas estas terminales, se llama mainframe. Esta tercera generación es la época de los mainframes.

Computadora hay una sola, pero múltiples terminales. Estas son tontas, en cuanto a que no computan, sino que mandan computar a la computadora, y ésta les da la respuesta, y éstas la exhiben.

Acá no hay red, hay un mainframe con múltiples terminales, llamadas terminales tontas por no tener cómputo propio, y llamadas terminales en línea por su constante comunicación con el sistema.

Los mainframes dominaron el escenario informático hasta los 90s… Fueron sustituidos por los servicios en red (se precisó servers, protocolos, red, máquinas cliente, etc).


Cómo funciona el tiempo compartido: cada proceso de diferentes usuarios recibe un poco de procesador, en ronda (round robin) y con criterios para pasar al siguiente.

El tiempo compartido se basa en el multitasking.

Cada proceso toma el procesador en el momento que el sistema operativo se lo indica.

Aquí tenemos un rol central del SO en lo que es la implementación del multitasking.

Criterios para quitarle la CPU a un proceso……. Ha pasado cierto tiempo (timeout) y le toca a otro, O, el proceso se puso a hacer una operación de entrada/salida. En cualquiera de esos dos eventos, le quitan el CPU y se le da a otro proceso. En definitiva, se comparte la CPU gracias a la gestión del sistema operativo, la cual da la ilusión de estar en un sistema único.

El mainframe más famoso? AS400 de IBM…

https://es.wikipedia.org/wiki/AS/400

A esta altura de los años 70’s encontramos tres tipos de configuración de computadoras que tenían arquitecturas similares, e incluso la misma arquitectura:

  • Tiempo compartido
  • Batch
  • Computadoras embebidas en sistemas de tiempos real (ej estabilización de un avión)

Noten: MISMO HARDWARE, diferente SO = diferentes usos. Radicalmente diferentes.

Los sistemas operativos son genéricos y están orientados a MAXIMIZAR EL USO DEL HARDWARE, incluso sacrificando desempeño individual de algunos programas.


Los sistemas de tiempo real son específicos y están orientados a MINIMIZAR EL TIEMPO DE RESPUESTA, incluso cortando tareas no esenciales.

El primer sistema de tiempo de tiempo compartido 1961 CTSS (time sharing system)

Los sistemas de tiempo compartido permiten en los mainframes el COMPARTIR RECURSOS.

Está toda la capacidad de cómputo a disposición de todos los usuarios! Esto es bueno y malo!

Sin embargo, también se da una competencia por los recursos críticos: CPU y memoria. Son los recursos más apropiables del sistema, no son recursos RSR, lo vamos a estudiar.

Si un usuario ejecuta algún cómputo muy pesado, perturba al resto.

Los sistemas de tiempo compartido, son sistemas operativos multitarea, multiusuario, donde los diferentes usuarios trabajan de a varios a la vez, a partir de terminales tontas interactivas.

Interactivas porque tienen Monitor, Teclado, … tontas porque no tienen CPU.

El mainframe con n terminales, no es una red, es una computadora con n puestos de trabajo.

Esto constituyó un enorme desafío para los desarrolladores. Hay una cambio radical en la concepción del trabajo BATCH vs el trabajo en un STC. Esto afecta la forma de programar y operar.

Aparece el fracasado proyecto MULTICS, que guarda relación con Unix.

El protagonista de esta tercera generación es el MAINFRAME. Los mainframes dominan el cómputo empresarial hasta los 90s, donde son desplazados por las redes.


Los mainframes podían trabajar como STR, sistema Batch o como Sistema de Tiempo Compartido. Llamadas minicomputadoras, por ser del tamaño de una heladera y ya no cuartos enteros.

Computadoras muy potentes, que comparten recursos entre usuarios online. Estos usuarios comparten y también COMPITEN por los recursos. Si un usuario acapara cómputo, por ejemplo ejecutando algo pesado, entonces perjudica el funcionamiento del resto.

Las terminales tontas no tienen CPU. Si yo hago 2+2 en la terminal, ésta le manda a la CPU, “dice que 2+2”… entonces la CPU hace el cálculo 2+2=4, y le pasa a la terminal “decile que 4”.

Hay una sola computadora y ésta es compartida y competida por todos.

Aparece como consecuencia, la computación interactiva, esto es usuarios frente a monitores y teclados, que dan órdenes a la computadora y reciben respuesta en segundos.

El multitasking, esa ilusión que provee el sistema operativo, da soporte a esta forma simultánea de atender los procesos de usuarios diferentes y también de atender los procesos concurrentes en los sistemas de tiempo real.

El tiempo de ejecución, en el batch, era grande, porque había que entregar el trabajo a realizar al operador y este ejecutaba. Ahora la ejecución ocurre de forma instantánea prácticamente.

El proceso de codificación, y extracción de errores, se modernizó gracias a la computación interactiva.

El sistema operativo, nucleando a las herramientas que dan soporte a esta forma de trabajar, se transforma en un Ambiente de trabajo.


Esto lo consolida aún más como herramienta.

La multiprogramación, al haber memorias más grandes, soporta más procesos, y ataca entonces más problemas y da soporte a todo esto.

Aparece la memoria virtual, como respuesta desde el sistema operativo a la escasez de memoria RAM. Destinamos un poco de disco a que se comporte como RAM y el SO administra estar ilusión.

Esta ilusión de la memoria virtual, permite que la computadora se comporte como si tuviera más RAM que la que tiene. El faltante lo administra el SO desde el disco. Esto permite ejecutar programas grandes, más grandes, incluso más grandes que la memoria RAM.

Estos sistemas operativos del final de la tercera generación comienzan a tener la influencia de la ingeniería de software: documentados, planificados, modularizados, escritos en lenguaje de alto nivel, etc.

Origen de Unix

Unix es la última gran revolución en torno a los sistemas operativos.

Sienta las bases de los sistemas operativos modernos.

Linux es un Unix. Android y IOS son Linux.

En 1969 fracasa el proyecto MULTICS entre Bell Labs y GE

Este pretendía dar computación a través de terminales, a toda una ciudad.


Muy ambicioso proyecto, fracasa.

Escrito en el lenguaje de Alto Nivel PL/1. Esto es muy importante para la claridad, la mantenibilidad, etc.

Fracasó.

En los Bell Labs, Thompson y Ritchie, estaban programando un juego, Space Travel sobre una pdp7. Para ello desarrollaron un ambiente de trabajo, el que llamaron UNICS.

https://www.youtube.com/watch?v=rMCsKxx2VKc



youtube.com/watch?v=fh-rqto7MKE&t=184s&pp=ygUcZnVuY2lvbmFtaWVudG8gZGUgdW4gdW5peCB2MNIHCQnFCgGHKiGM7w%3D%3D

Funcionamiento de Unix V0 (en el video)

Uniplexed Computer System

Este nombre es un chiste respecto a Multics. Donde decían Multiplexed Computer System.

Desde aquí evolucionó el sistema operativo.

Lo migran a una versión de 16Kb sobre una PDP11

Se desarrollan los lenguajes B y C. Se reescribe Unix en C.

Así, tenemos un sistema operativo tan portable como su compilador.

Desde acá Unix se expande en dos dimensiones: Ambientes académicos, el referente es BSD (Berkeley Standard Distribution) y Ambientes comerciales (System V).

Este sistema operativo era ideal para los mainframes. Proporcionaba características multitarea y multiusuario. Su file sytem permitía asignar permisos y dueños.

Más asuntos de los 70s además de la aparición de Unix.

Aparece el protocolo Ethernet, la red ARPANET, los protocolos TCP/IP. Se dan las bases para el desarrollo posterior de la computación en red.

Aparecen los primeros problemas de seguridad, hackers, encriptación, herramientas de comunicación, email, transferencia de archivos, etc.


El sistema operativo dando soporte a todo eso, como un ambiente de trabajo.

Un PDP 11:

https://www.youtube.com/watch?v=XV-7J5y1TQc

https://www.youtube.com/watch?v=tWOfN9p5E8k




Con la cuarta generación llega el PC.

https://es.wikipedia.org/wiki/IBM_PC

3,56 Mhz Procesador Intel 8086 luego 8088… Máquina de 16 bits.

256 Kb RAM

Si tenía disco duro era del orden de los 10 Mb

El procesador era un MICROPROCESADOR, y las computadoras, se decían MICROCOMPUTADORAS, al referirnos ya a máquinas que no eran del tamaño de una heladera, sino algo que se ponía sobre el escritorio.

El primer microprocesador fue el P4004 de Intel, para una calculadora.

En los 80s el procesador z80 fue muy popular. Era de 8 bits, y dio origen a muchas computadoras domésticas en los años 80s.

Por ejemplo el ZX Spectrum, 16Kb ROM, 48 Kb RAM, cargaba los programas en cintas de casete, y desplegaba video en un TV común. En estas computadoras algo muy interesante es que el propio lenguaje Basic hacía las veces de sistema operativo, pues tenía integrados comandos de procesamiento de archivos. Por ejemplo la carga.

En el IBM PC surge el MS DOS de la empresa Microsoft.

El PC era una integración de varias tecnologías:

Intel……………… Procesador

Fabricantes varios……… Memorias

Fabricantes varios……… Discos

Placa madre, tarjeta video, sonido, …. Electrónica relativamente simple, de la cual IBM era un integrador.

Usaba un bus de tecnología ISA.

El PC rápidamente fue clonado.

El SO fue la parte más jugosa, por las licencias.

Microsoft despegó al influjo del PC.

IBM contraatacó con el IBM PS/2, jugada orientada a protocolos de arquitectura Micro Channel, cerrada, con férreas políticas anti clone, que hizo que el mercado la rechazara.

Toda esta computación de escritorio, sin las redes, no constituía un avance frente a lo logrado con los mainframes, que tenían mayor poder de cómputo y la posibilidad de compartir recursos.

Sin embargo los PCs sin redes no podían desplazar a los mainframes. Se requirió de PCs+Redes para igualar y superar el producto de la tercera generación, los mainframes.

Una red es un conjunto de computadoras autónomas interconectadas.

Autónomas implica CPU y memoria propias.

Interconectadas porque existe algún medio que les permite el intercambio de datos.

Las redes permiten compartir recursos de cómputo. Esa es su razón de ser.

Los PCs en red logran igualar la potencia de cómputo de los mainframes. Este es un gran logro que se consolida en los 90’s.

Ventajas:

  1. Técnica: en la red y en el mainframe se comparten recursos. Pero en el mainframe se compite por los recursos vitales CPU y memoria. En la red estos permanecen exclusivos de cada máquina.
  2. Económica: La red es escalable, mientras que en el mainframe la potencia de cómputo (la cantidad de puestos, de terminales tontas) debe comprarse toda junta.

Si tenemos una empresa que comienza y tiene 10 empleados, que si todo va bien serán 100 y si todo va muy bien serán 500. Qué capacidad compro ? Con el mainframe capaz que tengo que arrancar con 100… en cambio con la red, arranco gastando por 10, y veo gradualmente.

  • Financiera: Lo anterior tiene una consecuencia financiera, por dos razones: la primera porque yo gasto dinero de inversión de los dueños, en los 10 primeros pcs del ejemplo anterior, pero luego, los otros, los compro con dinero generado por el propio negocio. La segunda razón, estrictamente financiera, es que cuanto más tarde pueda hacer un gasto, mejor.

Además como la tecnología avanza agresivamente, el “comprar cómputo por las dudas” es carísimo. Y el comprar “cómputo de menos” si luego tengo que comprar de nuevo, también es carísimo.

Entonces, el gran hecho de la cuarta generación fue el desplazar los mainframes y tomaron su lugar las redes de computadoras.

También aparece el concepto de SO distribuido, como un SO que trabaja sobre la red y oculta su presencia, haciendo que ese conjunto de máquinas se comporten como un todo.

Hay dos operaciones en torno a esto:

Virtualización: una arquitectura se comporte como un conjunto de máquinas físicas, cada una con su sistema operativo. Ej VM Ware

Clusterización: un conjunto de máquinas simples se unen bajo una sola vista lógica. Y lo hacen gracias a algún sistema operativo para clusterización.

Esto da la base también para computación en la nube, etc.

Los servicios de computación en la nube, como por ejemplo computación a demanda, regulada en tiempo real, son consecuencia de todo lo anterior.

Aclaración: Los SO que permiten trabajar sobre la red se llaman SO de red, por ejemplo Linux, Windows 10, Windows Server 2019, etc.  Los sistemas operativos distribuidos permiten trabajar sobre la red, pero ocultando la presencia de la misma, y se presentan como si fuera una sola máquina. Las herramientas de clusterización actuales en gran medida cumplen con esta definición.

Aparecen nuevas herramientas de comunicación con las redes.

Aparecen los desafíos de seguridad, derivados de la conectividad. Ej Hackers.

Aparece la necesidad de auditar.

El auditor sale a detectar sin proporcionar una barrera.

Cuando se auditan se revisar los…. LOGS, que son registros de transacciones de cualquier tipo.

Aparecen también las herramientas Cliente/Servidor.

Esto implica herramientas que se desarrollan partidas en 3: el core, en el servidor, los aspectos de interfaz en el cliente, y el protocolo de comunicación, en la comunicación entre ambos.

Las herramientas cli/serv buscan optimizar el tráfico en la red, que claramente si fuera, todos contra todos, sería más ineficiente.

Aparecen nuevas posibilidades de herramientas de comunicación, de transmisión de datos, la necesidad de comunicar entornos o plataformas diferentes, etc.

Un uso más intensivo de las redes implica el cómputo en la nube. Implica una serie de tecnologías para abstraer las redes y así comportarse las máquinas o conjuntos de máquinas en forma abstracta, manifestándose como servicios que vemos a través de la red.

Los desafíos en torno a Sistemas Operativos

  • Conectividad———– Seguridad. Logramos alta conectividad de todos los componentes. Necesitamos garantizar seguridad.
  • Sistemas abiertos————- La dicotomía que plantean las familias incompatibles de herramientas, por ejemplo Win/Linux, plantea problemas de uso que podrían considerarse para futuras soluciones.
  • Paralelismo ————- Las arquitecturas nos entregan multiprocesador, multinúcleo, etc y sin embargo desde el SO aún no se puede gestionar en forma automática esa concurrencia. Se necesita que el programador indica exhaustivamente qué hacer.
  • Sistemas distribuidos———–Grandes progresos basados en clusterización y virtualización. Se va hacia los servidores virtuales, sistemas virtuales que esconden la red subyacente y por tanto cumplen con la definición de SO distribuido.
  • Mejoramiento de la interfaz con el usuario. Hitos en la comunicación con el usuario: 60’s interfaces de comandos, 80’s interfaces gráficas GUIs, 00’s interfaces táctiles. Sin embargo todo esto podría ser poco para manejar computadoras cada vez más potentes.

Discusión en clase: el problema de 2038: https://es.wikipedia.org/wiki/Problema_del_a%C3%B1o_2038


Las familias de sistemas operativos

https://es.wikipedia.org/wiki/Unix

https://upload.wikimedia.org/wikipedia/commons/7/77/Unix_history-simple.svg

https://androidemulador.com/diferencias-entre-android-linux-y-linux/#:~:text=Android%20utiliza%20el%20n%C3%BAcleo%20Linux,comenzar%20con%20lo%20que%20no

Android utiliza el núcleo de Linux pero no hay una compatibilidad total, ya que está la posibilidad de modificación del núcleo.

IOS deriva de MacOS que deriva de Unix.

Windows……….. y los sistemas operativos de Microsoft.

https://es.wikipedia.org/wiki/MS-DOS

EL MS DOS es un sistema operativo monotarea, monousuario, creado para el IBM PC en 1981.

Basado en una interfaz de comandos, evolucionó a la par del PC.

Versiones:

  • PC DOS 1.0 fue la primera versión – Liberado en 1981 como complemento al IBM-PC. Primera versión de DOS. Soporta 16 KiB (¿??) de memoria RAM, disquetes de 5,25 pulgadas de una sola cara de 160 KiB. 22 órdenes. Permite archivos con extensión .com y .exe. Incorpora el intérprete de órdenes COMMAND.COM.

El kibibyte (símbolo KiB) es una unidad de información utilizada como un múltiplo del byte. Equivale a 210 bytes

  • PC DOS 1.1 – Corregidos muchos errores, soporta disquetes de doble densidad 5,25 – Primera versión liberada con el nombre MS-DOS.
  • MS-DOS 2.0 – Complemento del IBM XT liberado en 1985. Más del doble de nuevas órdenes, soporte de disco duro (alrededor de 5 MB).
  • PC DOS 2.1 – Complemento del IBM PCjr. Añadidas algunas mejoras.

Disquetes de instalación de MS-DOS 5.0

  • MS-DOS 2.11 – Añadido soporte para otros idiomas y soporte LAN.
  • MS-DOS 3.2 – Añadida capacidad para disquetes de 3,5 pulgadas y 720 KiB.
  • PC DOS 3.3 – Añadido soporte para el ordenador PS/2 de IBM y los nuevos disquetes de 3,5 pulgadas de alta capacidad (1.44 MB). Nuevas páginas de código de caracteres internacionales añadidas, con soporte para 17 países.
  • MS-DOS 3.3 – Capacidad para crear particiones de disco superiores a 32 MB. Soporte de 4 puertos serie (antes solo 2). Incorporación de la orden «Files» para poder abrir hasta 255 archivos simultáneamente.
  • MS-DOS 4.0 – Generado con el código fuente de IBM no con el de Microsoft.
  • PC DOS 4.0 – Agregado DOS Shell, algunas mejoras y arreglos.
  • MS-DOS 4.01 – Versión para corregir algún error.
  • MS-DOS 5.0 – Implementado en 1991, incluyendo más características de administración de memoria y herramientas para soporte de macros, mejora del intérprete de órdenes o shell.

Disquetes de instalación de MS-DOS 6.22

  • MS-DOS 6.0 – Liberado en 1993, incluye soporte para Microsoft Windows, utilidades como Defrag (desfragmentación del disco), DoubleSpace (compresión de archivos), MSBackup (copias de seguridad), MSAV (Microsoft Anti-Virus), MemMaker, etc.
  • MS-DOS 6.2 – Versión para corregir errores.
  • MS-DOS 6.21 – Eliminado el soporte de compresión de disco DoubleSpace.
  • PC DOS 6.3 – Liberado en abril de 1995.
  • MS-DOS 6.22 – Última versión distribuida por separado. Incluido DriveSpace para sustituir a DoubleSpace.
  • PC DOS 7.0 – Añade Stacker para reemplazar a DoubleSpace.
  • MS-DOS 7.0 – Distribuido junto con Windows 95. Incluye soporte para nombres de archivos largos (hasta ahora habían tenido la restricción del 8+3).
  • MS-DOS 7.1 – Integrado en Windows 95 OSR2 y posteriormente en Windows 98 y 98 SE. Soporta sistemas de archivos FAT32.
  • MS-DOS 8.0 – Integrado en Windows ME. Pese a que en un inicio no existiera separación entre los dos sistemas operativos, actualizaciones posteriores lo permitieron.

La evolución de WINDOWS como entorno gráfico para PCs.

https://www.campusmvp.es/recursos/post/La-evolucion-de-Windows-de-Windows-1-a-Windows-10.aspx

La evolución de Windows, de Windows 1 a Windows 10


Vamos a recorrer los últimos 30 años de Windows, comenzando como es natural en Windows 1 hasta llegar a Windows 10. Empezamos:

Windows 1 (1985)

Aunque fue anunciado en 1983 por Bill Gates, su lanzamiento no se produjo hasta dos años más tarde, concretamente el 20 de noviembre de 1985. Se popularizó gracias a su interfaz gráfica basada en ventanas que le da su nombre.

Entre sus características de escritorio destacaban el manejo de archivos MS-DOS, calendario, bloc de notas, calculadora y reloj.

YA DESDE ESTA VERSIÓN SE PLANTEA UN MULTITASKING. MUY PRIMITIVO, PUES TRABAJA SOBRE DOS Y ESTE ES MONOTAREA. PERO EL HECHO DE TENER VARIAS VENTANAS IMPLICÓ LA POSIBILIDAD DE EJECUCIÓN EN CIERTO MODO CONCURRENTE.

Windows 2 (1987)

Dos años más tarde (9/12/1987) Microsoft lanza Windows 2.0 con iconos de escritorio, memoria ampliada, mejores gráficos y la posibilidad de superponer ventanas, controlar el diseño de la pantalla y usar atajos con el teclado para acelerar el trabajo.

Constituyó la primera plataforma de Windows para aplicaciones hoy en día tan comunes como Word o Excel.

Windows 3 (1990)

El 22 de mayo de 1990 aparece Windows 3.0, la primera versión que alcanzó éxito comercial, con varios millones de ventas en el primer año.  Se introdujeron cambios en la interfaz de usuario importantes, además de mejorar la explotación de la capacidad de gestión de la memoria de los procesadores.

El Administrador de Programas y el Administrador de Archivos hicieron su primera aparición en esta versión, junto con el panel de control rediseñado y algunos juegos como el Solitario, Corazones y Buscaminas. ¿Quién no ha jugado alguna vez al mítico solitario?

WINDOWS 3.11 ES SU VERSIÓN MÁS CONOCIDA.

WINDOWS FOR WORKGROUPS ES UNA VERSIÓN DERIVADA DE LA 3.X CON CAPACIDAD PARA TRABAJAR EN RED LOCAL. DRIVES COMPARTIDOS, RECURSOS COMPARTIDOS, ETC.

Windows NT (1993) HITO MUY IMPORTANTE

Aunque la gente de marketing de Microsoft intenta convencer al mundo de que NT significa New Technology, lo cierto es que las siglas NT provienen del nombre en clave que tenía el proyecto cuando estaba en fase de desarrollo N-Ten. El proyecto final vio la luz el 27 de julio de 1993.

ESTE ES EL PRIMER SISTEMA OPERATIVO DE MICROSOFT QUE ES MULTITAREA Y MULTIUSUARIO.

Para llevar a cabo este desarrollo desde cero, se asociaron IBM con Microsoft. Construyeron un SO de 32bits multitarea, multihilo, multiprocesamiento, multiusuario con un núcleo híbrido y una capa de hardware de abstracción para facilitar la portabilidad entre plataformas.

ALGO QUE NO TIENE ES EL MULTISESION CONCURRENTE, QUE ES HABITUAL EN LOS UNIX/LINUX, PERO ESTO MUESTRA LA IDEA DE COMPUTADORA QUE MICROSOFT TENIA: COMPUTADORAS PERSONALES POTENTES, CONECTADAS A SERVIDORES POTENTES Y DE LOS DOS LADOS CONCURRENCIA, DEL LADO DEL SERVER MÚLTIPLES SERVICIOS. PERO SIEMPRE UN USUARIO POR MÁQUINA EN LA SESIÓN.

Windows 95 (1994)

WINDOWS 95 NO ES EL SUCESOR DE NT SINO QUE ES PARA MÁQUINAS DOMÉSTICAS.

Un año y mes después, el 24 de julio de 1994, Microsoft lanzó Windows 95. Llevaron a cabo una campaña publicitaria sin precedentes que incluía la canción de los Rolling Stones «Start me up«. Los detractores de Windows no desaprovecharon la oportunidad de mofarse indicando que la letra de la canción decía «…you make a grown man cry…», pero no esto no evitó que en solo 5 semanas se vendieran 7 millones de copias ¡todo un récord!

Windows 95 estaba más orientado al consumidor, poseía una interfaz de usuario completamente nueva y características que hoy nos resultan muy familiares, pero que entonces constituyeron algo revolucionario, como por ejemplo el botón de Inicio, la Barra de Tareas, el Área de Notificaciones (recordemos que era la época del módem, fax,…), etc.

Windows 98 (1998)

VER TEMA PROBLEMA NETSCAPE-MICROSOFT CON EL JUICIO ANTIMONOPOLIO.

El 25 de junio de 1998 ve la luz la primera versión diseñada específicamente para el consumidor. Se introducen una serie de mejoras en la interfaz de usuario a través del paquete de actualizaciones de escritorio de Windows de Internet Explorer 4. Por ejemplo, la posibilidad de minimizar una ventana con un simple clic en el icono de la barra de herramientas, los botones de navegación hacia «Adelante» y «Regresar», etc..

Con Windows 98 se mejoró el reconocimiento de escáneres, ratones, teclados y palancas.

EL PLUG & PLAY ES DE LA EPOCA DE  WINDOWS 95 WINDOWS 98

 

Windows Me (2000) OJO ESTO NO ES WINDOWS 2000

El 14 de septiembre de 2000 sale a la venta el último de la línea de Windows 9x basado en DOS, Windows Millennium Edition, considerado como una de las peores versiones de Windows que ha existido.

A diferencia de W95 y W98 les faltaba el soporte en modo real de DOS. A su favor hay que decir que poseía una característica muy útil, a saber «Restaurar el Sistema» lo cual permitía a los usuarios establecer una configuración estable del sistema anterior al actual.

Windows XP (2001)

Tan solo una año después, el 25 de octubre de 2001, el primer sistema operativo de consumo basado en arquitectura NT, cuyo nombre en clave era Whistler, se puso a la venta con el nombre de XP de eXPeriencie. Resultó ser uno de los más exitosos, en diciembre de 2013 su cuota de mercado alcanzó los 500 millones de ordenadores. Tras 12 años en el mercado ¡12 años!, en abril de 2014 Microsoft dejó de dar soporte.

Windows XP introdujo nuevas características como el uso de una nueva interfaz de manejo más sencillo, la posibilidad de utilizar varias cuentas de usuario a la vez, la capacidad de agrupar aplicaciones similares en la barra de tareas, por solo nombrar unas cuantas. TENÍA UN MUCHO MEJOR MULTITASKING, PRODUCTO DE TENER EL NUCLEO MULTITAREA NATIVO, SIN EL DOS…

Windows Vista (2007)

Nunca habíamos esperado tanto tiempo por un cambio de SO, ¡más de 5 años! A Microsoft le hubiese gustado tenerlo listo para poder hacer caja en la Navidad de 2006, pero tuvo que esperar hasta el 30 de enero de 2007 para lanzarlo mundialmente. Se recuerda como un sistema que llegó tarde, mal y arrastro. Las principales quejas se centraron en las funciones de seguridad, administración de derechos digitales, los requisitos de hardware y el rendimiento y la compatibilidad del software.

A su favor hay que recordar las características por las cuales todo el mundo lo identifica, a saber: la nueva interfaz gráfica que permitía la transparencia en las ventanas, la aplicación Flip-3D que se activaba con la combinación de teclas Win + Tab, y mostrando con un efecto 3D las ventanas que estaban abiertas podías cambiar de una a otra. Además, permitía tener una vista preliminar de las ventanas abiertas, con solo pasar el ratón sobre los botones en la barra de tareas.

SE LO RECUERDA COMO UN GRAN CONSUMIDOR DE RECURSOS, Y POR LO TANTO TENIA FUERTES REQUISITOS PARA LA ARQUITECTURA QUE LE DIERA SOPORTE.

Windows 7 (2009)

Muchos consideran a Windows 7 como el SO que a Windows Vista le gustaría haber sido. De hechos, en sus orígenes fue concebido como una especie de actualización de Windows Vista, lo que permitió mantener cierto grado de compatibilidad con aplicaciones y hardware. En cuanto salió al mercado el 22 de octubre de 2009 comenzó a comerse la cuota de mercado de sus predecesores.

Windows 7 destaca por ofrecer una interfaz rediseñada, una nueva barra de tareas, mejoras importantes en el rendimiento del SO y sobre todo porque W7 marcó el debut de Windows Touch, que permite explorar la web desde pantallas táctiles.

Windows 8 (2012)

El 25 de octubre de 2012 hizo su puesta en escena el polémico Windows 8. Los usuarios se desgarraban las vestiduras… ¡no tenía botón de Inicio! ¿Cómo iban a sobrevivir sin él?

Su interfaz de usuario fue modificada para hacerla más amigable y fácil de usar con la pantallas táctiles, además de poder seguir usando obviamente el teclado y ratón. Es el momento de las Apps cuyos iconos de diferentes tamaños ocupan la pantalla, se pueden agrupar, mostrar notificaciones,… El explorador de archivos ahora deja a solo un clic de ratón, funciones que antes estaban escondidas y como esto podríamos enumerar cientos de nuevas características, pero sabemos que estáis impacientes por llegar al siguiente.

Windows 10 (2015)

Tras tres años de dura travesía por el desierto sin botón de inicio, el 29 de julio de 2015 hace su aparición estelar Windows 10. ¿Y ahora qué?

De todos modos hay una «regla universal» que se viene cumpliendo desde que salió Windows: y es que los usuarios siempre consideran una versión buena y la siguiente mala, alternándolas. Por ejemplo, Windows XP: bueno, pero Windows Vista: malo. Y si te fijas en la lista se ha cumplido siempre. Ahora toca versión buena, así que… tal y como os dijimos al inicio de este artículo, la decisión es tuya 😉

Fecha de publicación: 7 de agosto de 2015

(EL ARTICULO TIENE COMENTARIOS SUBJETIVOS DEL AUTOR, LOS CUALES NO SON NECESARIAMENTE LA OPINION DEL DOCENTE NI DE LOS ESTUDIANTES).

Puntos importantes a marcar. Hay dos ramas de evolución, y este artículo sólo cubre una.

Estas ramas se dan al dar la versión siguiente a Windows 3.11

En la rama doméstica, es todo lo dicho:

Windows 3.11

Windows 95

Windows 98

Windows Me

Windows XP

Windows Vista

Windows 7

Windows 8

Windows 10

Pero, en las versiones PROFESIONALES, es decir, de empresa, la evolución es otra.

Windows NT (la versión 3.51 es de las más conocidas. Luego Windows NT 4.0 es una versión muy estable del producto).

Windows NT venía en dos versiones: WINDOWS NT WORKSTATION (WS) para las computadoras que iban a interactuar contra un server y WINDOWS NT SERVER como sistema operativo para el server. Este sistema operativo está perfectamente a la par de un Unix/Linux.

https://networkencyclopedia.com/novell-directory-services-nds/

https://support.novell.com/techcenter/articles/ana19970401.html Artículo que menciona la forma en que la NDS de Novell fue abarcada por NT.

Windows NT fue sustituido por Windows 2000. Win 2000 ws y win 2000 server.

Windows 2000 workstation, fue sustituido por Windows XP Pro.

Windows 2000 server, fue sustituido por Server 2003.

Aquí hay un timeline específico:

https://www.timetoast.com/timelines/versiones-de-windows-server

WINDOWS Server 2003

Windows Server 2008

Windows Server 2009

Windows Server 2012

Windows Server 2016

Windows Server 2019

https://es.wikipedia.org/wiki/Windows_Server

Qué pasó con los Windows Workstation ?

Son los que está previsto trabajen contra los servers, sin ser las versiones domésticas livianas…

Windows NT workstartion

Windows 2000 ws

Windows XP Pro

Windows Vista Pro

Windows 7

Y desde acá POR SUERTE ! converge con las versiones de usuario final.

Sino, siempre teníamos la dicotomía como usuario final, de qué sistema operativo poner a nuestra máquina, ya que por ejemplo un XP pro era claramente mejor que un XP Home…

Desde Windows 7 en adelante ese dilema ya no se dio!

Hay otros sistemas operativos, como OS/2 VMWare IOs Android…

Fin de todas las versiones de todo lo que anda cerca nuestro!




Algunas características de los sistemas operativos.

MULTITAREA: Un sistema operativo es multitarea si soporta la ejecución concurrente de múltiples procesos. Un proceso es un programa en ejecución.

MULTIUSUARIO: Un SO es multiusuario si reconoce diferentes figuras de usuarios, con diferentes derechos, derechos de acceso a los recursos del sistema. Cada usuario se manifiesta por medio de una cuenta de usuario, la cual constituye un conjunto de derechos. El file system permite (si permite) asignar dueños y permisos a los archivos siendo el elemento fundamental para considerar multiusuario a un SO.

MULTISESION: el SO es multisesión si permite que los usuarios trabajen en sesiones concurrentes. Sea o no en escritorios remotos.

Unix, Linux ———- Multitarea multiusiario multisesión

DOS —- Monotarea Monousuario Monosesión

DOS bajo alguna NDS con permisos en los archivos —– Monotarea Multiusuario Monosesión

Windows XP sobre FAT —- Multitarea Monousuario Monosesión

Windows 10 sobre NTFS —- Multitarea multiusuario Monosesión (salvo algún software específico que se agregue)

Windows NT sobre FAT —- Multitarea multiusuario Monosesión

Windows 10 sobre NTFS contra Windows Server 2019 —- Multitarea Multiusuario Multisesión.

El tema de la multisesión marca grandes diferencias entre el mundo Unix y el mundo Mcsft por tener ambos diferentes visiones del PC de escritorio o de la notebook.

MULTIPROGRAMACIÓN O PSEUDOPARALELISMO

En la multiprogramación ejecutamos varios procesos a la vez por medio del reparto de CPU que realiza el scheduller del sistema operativo.

MULTIPROCESAMIENTO O PARALELISMO PURO

En el multiprocesamiento, los procesos reciben núcleos o procesadores en simultáneo. Es paralelismo real, o mejor dicho, a nivel de la arquitectura.

Clasificación

  • Sistemas operativos por lotes
  • Sistemas operativos de tiempo real
  • Sistemas Operativos de multiprogramación
  • Sistemas Ooperativos de tiempo compartido
  • Sistemas Operativos distribuidos
  • Sistemas Operativos de red
  • Sistemas Operativos Paralelos
  • Por su estructuras: sistemas operativos monoliticos, en estratos, por microkernel, estructura cliente servidor, máquina virtual

Funciones del SO: Interfaz de usuario, herramientas de soporte, administración de tareas, administrador de recursos, administracion de archivos



GESTION DE PROCESOS

Esta es la tarea central en el núcleo de un sistema operativo multitarea.

Abarca la gestión del recurso fundamental, la CPU.

El multinúcleo no hace a la gestión de CPU, pues es manejado explícitamente por el usuario.

El sistema operativo no puede decidir si paralelizar un código sin más…

Miren este caso:

a=x+1

b=y+1

c=a-b

d=c/2

no puedo mandar ese código “así nomás” a 4 núcleos, pues tenemos las siguientes precedencias:

c necesita que a esté terminado

c necesita que b esté terminado

d necesita que c esté terminado

El óptimo, en multinúcleo sería:

a=x+1 NUCLEO 1

b=y+1 NUCLEO 2

esperar a que a que a y b terminen

c=a-b NUCLEO 1

esperar a que C termine

d=c/2 NUCLEO 1

Este problema, que acá optimizamos manualmente, no puede ser resuelto en forma automática por una computadora.

O sea, no hay forma de que el sistema operativo mande a diferentes núcleos código por el simple hecho de haberlo analizado línea a línea. Ese problema no es computable.

Esto constituye una limitación.

El multinúcleo, el sistema operativo lo gestionará en la medida que el programador lo explicite. Y esto es mucho! Pero no es tanto como una gestión automática por parte del sistema operativo.

La variable que nosotros podemos manejar, nosotros el sistema operativo, en el schedulling es fundamentalmente, a qué proceso le damos el procesador, cuando se lo quitamos, a quién le toca de nuevo, etc.

Un trabajo, es un programa que aún no ha sido ejecutado. Una vez en ejecución, se transforma en un proceso. Tarea y proceso son sinónimos.

La CPU se va a compartir en forma secuencial a lo largo del tiempo por los procesos.

Los procesos que podrían recibir CPU, los llamamos LISTOS. Se alojan todos en memoria, y comienza el SCHEDULLING. (consumen memoria desde este momento)

Se le da la CPU al primero de ellos, que pasa a estar EN EJECUCIÓN.

Entonces, comienza un proceso, el resto se coloca en fila tras él.

Este proceso computa hasta que realiza alguna operación de E/S. Esta operación, implica esperar por una interrupción. Como esta demora “una eternidad”, respecto a la velocidad de CPU, entonces hay que cederle la CPU a otro proceso. Al siguiente de la fila!

Qué pasa con este proceso que venía ejecutando ? Pasa a un estado de espera, el cual llamaremos BLOQUEADO. Ahí no consume CPU porque está esperando una interrupción. Y además él está fuera de la fila de espera.

Ejemplo de E/S: leer de teclado, escribir en pantalla, imprimir, guardar en disco, leer de disco, etc.

También podría pasar, que el proceso no haga ninguna operación de E/S, se pasa haciendo cálculos, cuentas!, en tal caso va a acaparar la CPU, y esto no es deseable. Existe entonces un timeout, que es un tiempo máximo de espera el cual, si se alcanza, se acaba el tiempo para este proceso y le toca a otro. A cuál ? Al siguiente en la fila.

Qué pasa con el proceso al cual se le quitó la CPU por timeout ? No espera ninguna interrupción porque no está haciendo una E/S, simplemente le falta CPU para continuar. Se lo coloca al final de la lista de procesos listos.

Qué pasa cuando un proceso bloqueado, recibe la indicación, por medio de una interrupción, de que la operación por la cual esperaba está lista ? Se lo coloca al final de la fila de listos y queda pronto para continuar el juego de reparto de procesador.

Esos son los 3 estados que describen los procesos.

El tiempo de timeout suele llamarse quantum (cuanto) de tiempo.

Esta forma de repartir la CPU se llama Round Robin (RR).

Es la base de la ilusión de la multitarea.

Luego como política de reparto de CPU la criticaremos, más adelante. No es apta para STR porque puede haber grandes esperas. Pero sí es apta para sistemas de tiempo compartido.

Es lo que utiliza Windows, Linux, etc. Android y IOS tienen una componente de tiempo real sobre este round robin (RR con prioridades).

Muy importante.

La arquitectura, es monotarea, funciona sin enterarse de que estamos ejecutando múltiples tareas. Esta ilusión del multitasking debe garantizar que la arquitectura “no se entere”.

Usaremos la técnica llamada GUARDAR EL CONTEXTO.

Esto es: cada vez que le vamos a quitar la CPU a un proceso (o sea cuando hizo el timeout o hizo E/S) debemos GUARDAR EL CONTEXTO, es decir, guardar una copia de CADA REGISTRO, en memoria.

Cada vez que le vamos a dar la CPU a un proceso, tomamos de memoria lo que había en los registros y lo ponemos en ellos.

De este modo, la arquitectura NO SE ENTERA que estamos cambiando de contexto.

(TODO ESTO SIRVE MUCHÍSIMO PARA EL SIMULADOR DEL OBLIGATORIO)

Los procesos bloqueados estarán marcados como que esperan una interrupción. No integran la fila de ejecución.

Los procesos listos están marcados como que sólo les falta la CPU, e integran la fila de ejecución.

Esta área donde se guardan los registros y otros datos relevantes de cada proceso se llama PROCESS CONTROL BLOCK, PCB. Hay uno por cada proceso y están usualmente encadenados en una lista. Como su cantidad es incierta y variable, no podrían estar en un array, es necesaria una estructura dinámica.

A la operación FUNDAMENTAL de dar CPU a un proceso LISTO, se le llama DESPACHO.

Tenemos como operaciones relevantes sobre procesos:

                COMENZAR. Va al estado LISTO.

                TERMINAR. Se va del estado EN EJECUCION a FIN.

DESPACHO. Va de listo a en ejecución

                BLOQUEO. Va de en ejecución a bloqueado.

                DESPERTAR. Va de bloqueado a listo.

                TIMEOUT. Va de en ejecución a listo.

En un momento dado, el sistema está gestionando N procesos, de los cuales 1 estará en ejecución (tal vez más de uno si hay una ejecución multinúcleo explícita) , varios estarán listos, y varios estarán bloqueados. Los listos van en una fila.

En caso de existir un esquema de prioridades podría ser que algunos procesos se adelanten en la lista.

Un proceso listo tan sólo necesita procesador para ejecutar.

En un momento dado, el sistema está gestionando N procesos, de los cuales 1 estará en ejecución (tal vez más de uno si hay una ejecución multinúcleo explícita) , varios estarán listos, y varios estarán bloqueados. Los listos van en una fila.

N procesos en total

P procesos en ejecución  (p mayor a 1 si hay multinúcleo)

B procesos bloqueados

L procesos listos

Entonces se cumple

N=P+B+L

En caso de existir un esquema de prioridades podría ser que algunos procesos se adelanten en la lista.

Un proceso listo tan sólo necesita procesador para ejecutar.

Las estructuras fundamentales del SO, como gestor de recursos son las listas de PCBs y RCBs.

PCB Process Control Block

RCB Resource Control Block

Son estructuras dinámicas, pues no podemos saber a priori la cantidad de recursos o de procesos que habrá.

Normalmente son listas doblemente enlazadas.

PCB

Es la estructura que caracteriza al proceso frente al SO.

Normalmente tienen:

  • Estado actual.
    • Id del proceso en el sistema. Un número, por ejemplo en Linux se lo llama pid.
    • Puntero al padre.
    • Punteros a los procesos hijos.
    • Prioridad del proceso.
    • Punteros a las zonas de memoria asignadas al proceso.
    • Punteros a los recursos asignados al proceso.
    • Área para salvaguardar registros.
    • SI hay más de una CPU, la CPU en la que se está ejecutando el proceso.

Operaciones sobre procesos:

  • Crear (un proceso)
  •  Destruir
  •  Suspender
  •  Reanudar
  •  Cambiar prioridad
  •  Bloquear
  •  Despertar
  •  Despachar
  • Timeout
  • Bloqueo
  •  Establecer una comunicación entre procesos

Al crear un proceso se lo da de alta en las estructura. Arranca con cero recursos.

Se va guardando la relación entre procesos padres e hijos. De esta forma por ejemplo, si un proceso termina por error, es probable que para evitar inconsistencias, se maten sus procesos hijos. Para no generar procesos huérfanos.

En los RCBs se guarda el id del recurso y determinadas características para su gestión.

Cuando un recurso le es dado a un proceso, esto se registra tanto en el PCB de uno, como en el  RCB del otro.

Cuando un proceso pide un recurso y éste no está disponible, se va a bloquear. Esto se registra en los PCBs y RCBS correspondientes.

Los estados de suspensión son estados para mejor control del sistema operativo. Consiste en suspender momentáneamente algunos procesos y luego reanudarlos. La reanudación es la operación inversa.

Diferencias entre suspensión y bloqueo: El bloqueo es una situación totalmente normal. Por qué bloqueamos  ? Vamos a usar un recurso y está ocupado, lo tiene otro, o simplemente demora. El bloqueo pasa por algo que el propio proceso ejecutó.

La suspensión la decide el SO y utiliza esos estados para recordar  en qué estado estaba antes de la suspensión.

Por qué suspendemos: Suspende el SO por diversas causas:

  • Proceso que está dando un mal funcionamiento.
  • Proceso asociado a un hardware roto.
  • Alta carga del sistema.

Por ejemplo, ante el hardware roto, el sistema operativo detecta esa rotura y suspende los procesos críticos relacionados con esta circunstancia. Se pasa a un modo degradado.

Gestión de interrupciones (drivers) VS gestión de procesos

Lo primero es de más bajo nivel.

Cuando damos un movimiento en el mouse, se ejecutan miles de interrupciones.

Si para ejecutarlas se crearan miles de procesos, entonces esto sería muy ineficiente.

En lugar de ello se ejecutan a bajo nivel en el SO.

Tenemos entonces dos formas de organizar el cómputo en el SO.

Por un lado, procesos, que serían de alto nivel relativo.

Por otro interrupciones, y sus códigos handlers, que serían de bajo nivel relativo.

Ambos sistemas coexisten dentro del sistema operativo.

Podríamos decir que la capa más baja de SO la constituyen la gestión de interrupciones.

Por encima viene la gestión de procesos.

Funciones del núcleo del Sistema Operativo

  • Manejo de interrupciones
  •  Creación y destrucción de procesos
  •  Cambio de estados entre procesos
  •  Despacho
  •  Suspensión y reanudación
  •  Sincronización de procesos
  •  Comunicación entre procesos
  •  Gestión de PCB
  •  Apoyo a actividades de E/S
  •  Asignación y liberación de memoria
  •  Gestión del file system
  •  Mecanismos para llamada y retorno desde procedimientos

Sistemas Operativos.

  Sistemas Operativos Ing. Angel Caffa, MSc. MBA angelcaffa@gmail.com Teoría de Sistemas Operativos  © 2026 by Ing. Angel Caffa is licensed ...