Contextualización y aproximación al objeto de estudio de investigación cualit...
Diseño de Sistemas Operativos
1. 1
DISEÑO DE
SISTEMAS OPERATIVOS
ING. ÁNGEL CAFFA
Facultad de Ingeniería
Universidad ORT
2. Temario
2
Generalidades de Sistemas Operativos
Generalidades is a Design Digital Content &
de S.O. Contents mall developed by Guild Design Inc.
Gestión de procesos
Gestión de is a Design Digital Content & ontents
procesos mall developed by Guild Design Inc.
Memoria
Memoria Contents mall developed by Guild
Design Inc.
3. Temario
3
Disco
Disco is a Design Digital Content &
Contents mall developed by Guild Design Inc.
Conceptos de Seguridad
Conceptos Contents mall developed by Guild
de Seguridad Design Inc.
4. Bibliografía
4
Sistemas Operativos. Deitel.
Sistemas Operativos. Peterson.
Sistemas Operativos Modernos. Tanenbaum.
Conceptos de Sistemas Operativos. Silberchatz-otros.
The Logical Design of Operating Systems. Bic-Shaw.
El Entorno de Programación Unix. Kernighan-Pike.
Sistemas Operativos, diseño e implementación. Tanenbaum.
5. Aprobación del curso
5
2 Parciales y 1 obligatorio.
Pruebas sin material.
El segundo parcial abarca todos los temas.
Preguntas teóricas, ejercicios, problemas, situaciones
reales.
Ganancia de curso.
Aprobación del curso.
Examen individual, solo preguntas letra, solos.
6. Horarios
6
Grupo Matutino
Grupo Nocturno
Cada semana se ven los mismos temas con los dos
grupos (recuperación).
7. Cronograma
7
Comienzo: Lunes 15 de Marzo.
Lectura obligatorio.
Preparación primer parcial (simulacro y corrección).
Primer parcial.
Resultados primer parcial, muestra.
Entrega obligatorio.
Preparación segundo parcial.
Segundo parcial.
Defensas obligatorio.
Resultados segundo parcial y obligatorio, muestra.
Consulta examen.
Examen.
Resultados examen, muestra.
8. El curso dentro de la formación de
un informático
Arquitectura Sistemas
de sistemas operativos Redes Prog. B.D. ...
Administración de sistemas Programación en un
bajo un sistema operativo lenguaje determinado
determinado
Configuración de redes
Diseño y configuración de
bajo un conjunto determinado
Sistemas, servicio técnico
de protocolos.
... 8
9. El curso dentro de la formación de
9
un informático
Se trata de una asignatura básica, general, al
igual que el resto de las marcadas en el bloque.
Sirve de base para comprender aspectos técnicos
concretos (pasados, presentes y muchas veces
futuros).
Marca la diferencia con los técnicos.
10. Enfoque del curso
10
Se trata de temas clásicos dentro de la
informática.
Los sistemas operativos actuales, cumplen con los
modelos teóricos que se ven en el curso.
Las variantes se ven en los estudios de caso.
11. Enfoque del curso
11
Sistema operativo = Software para gestión de los
recursos del sistema
Recursos críticos = CPU, memoria y disco
Gestión de CPU Gestión de memoria
Gestión de disco
Gestión de otros recursos del sistema
13. Repaso de conceptos básicos
13
Componentes de un sistema informático: hardware,
software y gente.
El hardware proporciona la capacidad bruta de
cómputo, abarca todas las componentes tangibles del
sistema.
El software abarca los programas y datos (no tangibles).
Sistema informático = conjunto de recursos.
Sistemas abiertos. Esta tendencia implica componentes
compatibles a nivel de hardware, software,
comunicaciones, etc.
14. Repaso de conceptos básicos
14
Componentes de un sistema informático: hardware,
software y gente.
El hardware proporciona la capacidad bruta de
cómputo, abarca todas las componentes tangibles del
sistema.
El software abarca los programas y datos (no tangibles).
Sistema informático = conjunto de recursos.
Sistemas abiertos. Esta tendencia implica componentes
compatibles a nivel de hardware, software,
comunicaciones, etc.
15. Recursos
15
Son los componentes del sistema. El conjunto de
recursos constituye la capacidad bruta de cómputo
para el sistema.
Ejemplos de recursos: (Micro) procesador, memoria,
disco, unidad de CD, impresora, scanner, lector de
barras, mouse, teclado, etc.
16. Definición de sistema operativo
16
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.
17. Definición de SO
17
Desglosando lo anterior, el SO:
Está compuesto por programas.
Trata el hardware como un conjunto de recursos.
Puede reconocer diferentes usuarios.
Administra los recursos.
Permite acceso a recursos.
Proporciona a usuarios una interfaz para interactuar con el
sistema y sus recursos.
Proporciona a otros programas una interfaz para interactuar
con el sistema y sus recursos.
Arbitra el acceso a recursos.
Proporciona mecanismos de seguridad.
18. Además...
18
El sistema operativo es de alguna forma el nexo
entre el hardware y el software.
El sistema operativo brinda al usuario un ambiente
de trabajo (más cómodo que tener que resolver cada
vez los problemas de bajo nivel, etc.).
El sistema operativo asigna (y por lo tanto arbitra)
los recursos del sistema.
19. Analogía
19
Hardware = automóvil.
Sistema operativo = conductor.
El automóvil no funciona sin el conductor.
Distintos conductores logran funcionamientos
diferentes para el mismo auto.
El auto consta de un conjunto de recursos que
constituyen su capacidad bruta de funcionamiento.
El motor, la dirección, el sistema de frenos, el sistema
eléctrico, etc., son los recursos.
20. Primer esquema de capas
20
Programas
Sistema
Hardware
USUARIO
=
Recursos
Operativo
21. Evolución de los SO
21
1822 – Charles Babbage idea una máquina diferencial
mecánica que calculaba polinomios de grado <= 6 sobre Z.
Totalmente diseñada, no se pudo construir.
1830 – Charles Babbage diseña una máquina analítica
mecánica. No se pudo construir por la complejidad de sus
piezas. Aparece conceptos de: almacenamiento en tarjetas,
almacenamiento en variables (memoria), almacenamiento de
un conjunto de operaciones (programa).
1896 – Primera computadora real. Censo USA, tarjetas
perforadas, primer sistema de codificación. Horelitz, que
luego fundaría IBM.
22. Primera generación
22
Décadas de 1940 y 1950.
A válvula (necesidad de refrigeración), muy lentas,
cuartos enteros.
Los programas se introducían bit a bit con interruptores
mecánicos, luego pasaban a la computadora vía tarjetas
perforadas.
Los resultados se expresaban a través de leds.
ENIAC – Cálculo trayectorias balísticas, 1800 válvulas de
vacío, 32 bits de memoria, una suma en 0,2 ms.
23. Primera generación
23
1951 – ENIAC I, primera computadora para uso comercial.
Programas perforados en tarjetas, pero aún no habían
nada parecido a un sistema operativo.
1953 – Aparece el primer sistema operativo. Escrito por
General Motors para la IBM 701.
La necesidad original era de un programa que gestionara
la E/S. Además, este SO, cuando un programa finalizaba,
una rutina saltaba el flujo de ejecución al programa
siguiente. Era monotarea.
Denominados sistemas de procesamiento por lotes de
secuencia única.
24. Segunda generación: 1955-65
24
Hardware: sustitución de válvulas por transistores.
Primeras máquinas fabricadas en serie.
El que fabrica la computadora ya no es el usuario.
Muy grandes, cuartos especiales, temperatura.
Job sequencing: Al finalizar un trabajo se lanza otro en
forma automática, sin necesidad de monitoreo ni
intervención del operador.
Se gana en eficiencia de uso del sistema al aparecer los
sistemas de procesamiento por lotes (batch).
25. Sistemas de proceso por lotes (batch).
25
Antes, la forma de utilizar los sistemas era:
Se escribe el programa en papel.
Se perfora el programa en tarjetas, con una máquina
especial.
Se ponen todas las tarjetas en la computadora para la
ejecución.
Por ejemplo, si se precisa el compilador Fortran, o alguna
biblioteca, se incluyen también esas tarjetas.
26. Sistemas de proceso por lotes
26
Con los sistemas batch:
Se pasan varios programas de tarjeta a una cinta (con una
computadora que haga eso eficientemente).
La cinta resultado es la entrada de otra computadora (que realiza
cálculos eficientemente), que es donde corren los programas.
La salida de esa ejecución se envía a una cinta, y otra máquina
manda la salida a la impresora.
Un sistema operativo de esta época era, por ejemplo, el Fortran
Monitor System.
Los usuarios no están en el centro de cómputos mientras se ejecutan
sus programas. Los programas debían esperar, y si ocurrían errores
(incluso sintácticos), había que repetir todo este proceso tan lento.
27. Sistemas de proceso por lotes
27
Aparece el concepto de buffering: consiste en solapar las
operaciones de entrada/salida con la computación del
proceso.
Así, se aprovecha mejor la CPU.
En hardware, la innovación que posibilitó el buffering fue que
los procesadores tienen registros e instrucciones propios para
la comunicación entre CPU y canales controladores de
entrada/salida.
El proceso en ejecución solicita una operación de E/S (que es
lenta). El controlador la hace, y mientras ese proceso sigue,
hasta que, vía una interrupción, el controlador avisa que
terminó.
Esta es una primera forma de multitarea.
28. Sistemas de proceso por lotes
28
Estos dispositivos periféricos (algunos realizan la E/S
por interrupciones):
Lectoras de tarjetas.
Perforadoras de tarjetas.
Impresoras.
Unidades de cinta.
Unidades de disco.
El desafío era usar estos recursos eficientemente, y en
particular el recurso procesador al interactuar con ellos.
En definitiva es importante no tener procesador ocioso.
29. Multiprogramación
29
Cuando una tarea utilizaba el procesador, otras
podían usar los dispositivos de E/S.
La mejor forma de usar el tiempo de CPU, es que, en
un momento dado, el sistema ejecute no una tarea,
sino un conjunto de tareas.
En esto se basa el concepto de multiprogramación:
varias tareas se encuentran simultáneamente en
memoria principal, y el procesador se conmuta de
una tarea a otra buscando su avance a medida que
requieren uso de los dispositivos periféricos.
30. Tercera generación: 1965-70
30
Innovación en hardware: aparecen circuitos integrados (a
baja escala).
Aparece la primer minicomputadora: PDP-8 (antecesoras
de las Digital VAX).
Aparece la familia de computadoras de IBM, System/360
(1964). 16 Kb. RAM, 300.000 ops./seg. Primera serie que
busca unificar máquinas científicas y comerciales. Costo del
orden del millón de dólares.
La siguió la serie 370 y luego 4300 y 30X0.
Hardware compatible dentro y entre las series IBM (no así
en las PDP por ejemplo).
31. OS/360
31
El IBM 360, tiene un sistema operativo, OS/360.
Sistema operativo muy grande, millones de instrucciones
Assembler, muchos bugs.
Se arreglaban algunos bugs y surgían otros.
Aparecen algunas ideas de ingeniería de software, al
tratarse lo relativo al desarrollo de programas grandes.
Multiprogramación:
Mientras un proceso espera E/S, otro toma la CPU.
Memoria dividida en áreas, asignadas a diferentes procesos.
Mecanismos de protección de memoria.
32. Spooling
32
Las computadoras de la tercera generación tenían
almacenamiento secundario, no volátil, basado en:
Cintas: acceso secuencial, se agregan datos al final.
Discos: acceso aleatorio, se puede modificar un archivo “por la
mitad”.
Así, siempre que se termina de ejecutar un trabajo, el
SO puede cargar uno nuevo del disco y comenzar a
ejecutarlo.
También esto permite spooling, para el manejo de colas
de impresión, y para la salida.
Spool=Simultaneous peripheral operation on line.
33. Spooling
33
Si un proceso va a imprimir, no manda directamente
a la impresora sino a un archivo.
Luego se imprime desde dicho archivo.
Si varios procesos producen salidas a impresora,
entonces todos sacan su salida a disco, y luego de ahí
a la impresora.
Aparece la cola de impresión.
Así, se comienza a aprovechar mejor un recurso caro
como lo es la CPU, al liberarlo de atender
dispositivos lentos.
34. Tiempo compartido
34
Aún no se trabajaba de la forma más eficiente.
Los programas entregaban las tarjetas al operador, si
había errores de compilación, había que cambiar algunas
tarjetas y reiniciar el proceso.
Surgen las máquinas de tiempo compartido (time sharing).
Varios usuarios utilizan al mismo tiempo la computadora, en
principio compitiendo (más que compartiendo) por sus
recursos.
Así, los sistemas operativos podían atender a varios
usuarios interactivos, que se comunican con el computador
a través de terminales en línea.
35. Tiempo compartido
35
Un gran número de usuarios pueden trabajar simultáneamente en forma
interactiva.
De alguna forma, se ofrece a cada usuario la ilusión de que dispone de
el sistema para él.
Los sistemas de tiempo compartido de los años 60, trabajaban también en
modo de proceso por lotes y con aplicaciones de tiempo real.
Los sistemas de tiempo real dan respuestas en tiempos mínimos
preestablecidos. Ejemplo: sensores de estabilidad en un avión.
En general son usados por debajo de su capacidad, a fin de asegurar
esos tiempos mínimos, y eso explica su alto costo.
En los sistemas de tiempo real, la multiprogramación debe ser controlada
de acuerdo a restricciones de tiempo y prioridades.
36. Tiempo compartido
36
En 1961 aparece el CTSS, sistema operativo time sharing,
desarrollado por el MIT. También el TSS de IBM. TSS=Time
Shared System.
Otros sistemas de tiempo compartido:
Multics del MIT, sucesor de CTSS, antecedente de Unix. Primer SO que
intentó escribirse en un LP de alto nivel (PL/I).
CP/CMS, antecesor del VM de IBM.
Todos estos eran sistemas de tiempo compartido, permitían
compartir programas y datos, y mostraron el valor de la
computación interactiva en los ambientes de desarrollo de
programas.
El tiempo de retorno (tiempo entre introducción de una tarea y
recepción de su resultado) bajó a segundos.
37. Tiempo compartido
37
El usuario podía introducir programas, compilarlos,
corregir errores (sintácticos), recompilar hasta librarlo
de errores, ejecutarlo, depurarlo (errores semánticos)
hasta producir la versión final.
Esta modalidad de proceso de desarrollo es muy
similar a la actual. Notar como se llega a la misma
gracias a los progresos en los sistemas operativos.
Los sistemas operativos comienzan a ser vistos como
ambientes de trabajo.
38. Multiprogramación
38
Estos sistemas permitían trabajar con varios procesos
simultáneos en ejecución.
El procesador va turnando la ejecución de partes de
cada uno.
El cambio de un proceso a otro se logra gracias a
las interrupciones.
Aparecen los mecanismos de protección de memoria
de modo de que coexistan varios procesos en
ejecución.
39. Memoria virtual
39
El concepto de memoria virtual ya estaba presente en
TSS, Multics y CP/CMS.
Así, los programas pueden usar más memoria de la que
físicamente el sistema proporciona.
Esto se logra combinando memoria RAM y disco.
Así, los programadores dejaron de preocuparse por los
procedimientos y trucos para que un programa entrara
completamente en memoria, concentrándose en el
problema en sí.
40. Ingeniería de software
40
Los programas en general, y los sistemas operativos en
particular, comenzaron a resolver situaciones cada vez más
complejas.
Así, crecieron en tamaño y complejidad.
Comenzaron a aparecer versiones que corregían errores
de otras versiones, y en ellas aparecían nuevos.
La necesidad de producir software confiable, fácil de
mantener, comprensible, etc. dieron origen a la ingeniería
de software.
Con esta disciplina se reconoce que todo software es
producto de un proceso de desarrollo.
41. Proceso de desarrollo de software
41
Controlando la calidad en el proceso de desarrollo, se
logra dar calidad al producto del mismo.
Aparecen técnicas de project management aplicadas a
los proyectos de desarrollo de software.
En general, se agregan herramientas para lograr un PDS
estructurado, predecible, disciplinado.
De alguna manera se sentaron bases firmes para el
desarrollo de programas grandes, y en particular,
sistemas operativos más complejos.
42. Origen de Unix
42
En 1969, fracasa el proyecto Multics de Bell y General
Electric.
Multics = Miltiplexed Information Computer Service.
Se trataba de un ambicioso proyecto de sistema operativo
grande, multitarea y multiusuario.
Primera vez que se intentó usar un LP de alto nivel en la
codificación de un SO (PL/I).
En Bell, Thompson y Ritchie escribieron, sobre una PDP-7 un
juego llamado Space Travel.
Para éste, Thompson escribió un ambiente de trabajo para
esa computadora, llamado Unics (U por Uniplexed).
43. Origen de Unix
43
Luego, se pasó a una versión de 16 Kb. sobre un
PDP-11.
Luego se desarrollaron el lenguaje B (Thompson) y el
lenguaje C (Ritchie).
Luego se reescribió gran parte del Unix en C.
Con un fuente abierto, y adoptado primero en
ambientes académicos y luego también comerciales,
Unix inició su expansión.
44. Los años 70
44
Predominaron los sistemas de tiempo compartido con
múltiples modos de operación: procesamiento por lotes,
tiempo compartido y tiempo real.
Los computadores personales estaban en la etapa inicial
de su desarrollo, que vendría de la mano del desarrollo de
los microprocesadores.
Ya habían productos comerciales sólidos. Entonces, surgió
el problema de comunicar sistemas.
Aparecieron protocolos estándares de comunicación:
TCP/IP (Depto. de Defensa de USA), Ethernet (Xerox).
Comenzaron a surgir los primeros problemas de
seguridad. Aparece la criptografía, etc.
Todo esto se traduce en nuevas necesidades para los
sistemas operativos.
45. Cuarta generación: 1980-90 y
45
actualidad
En hardware, se logra la integración de transistores en alta y
gran escala.
Aparecen los PCs. Son similares a los minicomputadores en
estructura y conceptos, pero más pequeños y más baratos.
fines 60’s – Apple con CP/M. (CP = Control Program).
Diskettes.
80-81: IBM lanza el primer PC. Procesador Intel 8086.
Sistema operativo DOS de Microsoft.
DOS = Disk Operating System.
1970 – Xerox. Antecedentes de manejo a través de íconos.
Luego Mac OS (Apple), OS/2 (IBM) y Windows (Microsoft).
46. Redes
46
Idea: Compartir recursos.
Una red es un conjunto de computadoras autónomas interconectadas.
Se lograron redes cuya potencia de cómputo es comparable a las de los
mainframes que predominaron en los años 1970s.
Ventajas frente a los mainframes:
Ambos comparten recursos.
En la red no se compite por los recursos críticos CPU y memoria.
Permiten administración centralizada.
La red implica una inversión escalable.
Sistemas operativos distribuidos: trabajan sobre una red, pero ocultan al
usuario la presencia de la misma. Para el usuario es transparente en qué
sistema de la red se ejecutan sus órdenes, eso lo resuelve el sistema
operativo.
47. Redes
47
Con las redes aparecieron nuevas herramientas de
comunicación.
Aparecen redes de área local y de área extensa,
resultantes de la interconexión de las primeras.
Aparece la red Internet (70’s).
Crecen los requerimientos de los sistemas operativos
en cuanto a dar soporte a múltiples usuarios, permitir
el uso de redes y permitir los niveles de seguridad y
auditoría necesarios.
48. Redes
48
Con el desarrollo de las redes aparecen nuevas
posibilidades y problemas:
Publicación de bases de datos.
Distribución de bases de datos.
Protección de accesos.
Auditoría de accesos.
Ataques (hackers).
Aplicaciones de red.
Herramientas de publicación y de comunicación.
Aplicaciones cliente/servidor.
Transmisión de datos en tiempo real (imágenes, etc.)
Comunicación entre distintas plataformas.
49. Los desafíos en arquitectura y sistemas
49
operativos
Conectividad
Sistemas abiertos.
Paralelismo.
Sistemas distribuidos.
Mejoramiento de la interfaz con el usuario.
50. Sistemas operativos de los últimos años
50
La familia Microsoft:
MS-DOS
Windows 3.X
Windows 95/98/ME
Windows NT / 2000 / XP
La familia Unix:
Unix SVR4, Unix BSD, Solaris, AIX, SCO Unix, HP Ux, Irix,
Linux.
Otros: OS/2, Mac, VM, etc.
51. Clasificaciones
51
Proceso o tarea: es un programa en ejecución.
Sistema operativo:
Monotarea: sólo permite un proceso en ejecución a la vez.
Multitarea: permite la ejecución simultánea de varios procesos.
Sistema operativo:
Monousuario: no reconoce la existencia de diferentes usuarios.
Multiusuario: reconoce la existencia de diferentes usuarios y
arbitra el acceso de los mismos a los recursos del sistema.
52. El núcleo o kernel
52
Sus funciones principales:
Schedullingde procesos
Manejo de memoria
Gestión de file systems
53. Control de lectura
53
A esta altura ya debe haber leído los capítulos 1
y 2 de Deitel o sus equivalentes en los otros textos.
54. Recursos
54
Son los componentes del sistema. El conjunto de
recursos constituye la capacidad bruta de cómputo
para el sistema.
Ejemplos de recursos: (Micro) procesador, memoria,
disco, unidad de CD, impresora, scanner, lector de
barras, mouse, teclado, etc.
55. Definición de sistema operativo
55
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.
56. Definición de SO
56
Desglosando lo anterior, el SO:
Está compuesto por programas.
Trata el hardware como un conjunto de recursos.
Puede reconocer diferentes usuarios.
Administra los recursos.
Permite acceso a recursos.
Proporciona a usuarios una interfaz para interactuar con el
sistema y sus recursos.
Proporciona a otros programas una interfaz para interactuar
con el sistema y sus recursos.
Arbitra el acceso a recursos.
Proporciona mecanismos de seguridad.
57. Además...
57
El sistema operativo es de alguna forma el nexo
entre el hardware y el software.
El sistema operativo brinda al usuario un ambiente
de trabajo (más cómodo que tener que resolver cada
vez los problemas de bajo nivel, etc.).
El sistema operativo asigna (y por lo tanto arbitra)
los recursos del sistema.
58. Analogía
58
Hardware = automóvil.
Sistema operativo = conductor.
El automóvil no funciona sin el conductor.
Distintos conductores logran funcionamientos
diferentes para el mismo auto.
El auto consta de un conjunto de recursos que
constituyen su capacidad bruta de funcionamiento.
El motor, la dirección, el sistema de frenos, el sistema
eléctrico, etc., son los recursos.
59. Primer esquema de capas
59
Programas
Sistema
Hardware
USUARIO
=
Recursos
Operativo
60. Evolución de los SO
60
1822 – Charles Babbage idea una máquina diferencial
mecánica que calculaba polinomios de grado <= 6 sobre Z.
Totalmente diseñada, no se pudo construir.
1830 – Charles Babbage diseña una máquina analítica
mecánica. No se pudo construir por la complejidad de sus
piezas. Aparece conceptos de: almacenamiento en tarjetas,
almacenamiento en variables (memoria), almacenamiento de
un conjunto de operaciones (programa).
1896 – Primera computadora real. Censo USA, tarjetas
perforadas, primer sistema de codificación. Horelitz, que
luego fundaría IBM.
61. Primera generación
61
Décadas de 1940 y 1950.
A válvula (necesidad de refrigeración), muy lentas,
cuartos enteros.
Los programas se introducían bit a bit con interruptores
mecánicos, luego pasaban a la computadora vía tarjetas
perforadas.
Los resultados se expresaban a través de leds.
ENIAC – Cálculo trayectorias balísticas, 1800 válvulas de
vacío, 32 bits de memoria, una suma en 0,2 ms.
62. Primera generación
62
1951 – ENIAC I, primera computadora para uso comercial.
Programas perforados en tarjetas, pero aún no habían
nada parecido a un sistema operativo.
1953 – Aparece el primer sistema operativo. Escrito por
General Motors para la IBM 701.
La necesidad original era de un programa que gestionara
la E/S. Además, este SO, cuando un programa finalizaba,
una rutina saltaba el flujo de ejecución al programa
siguiente. Era monotarea.
Denominados sistemas de procesamiento por lotes de
secuencia única.
63. Segunda generación: 1955-65
63
Hardware: sustitución de válvulas por transistores.
Primeras máquinas fabricadas en serie.
El que fabrica la computadora ya no es el usuario.
Muy grandes, cuartos especiales, temperatura.
Job sequencing: Al finalizar un trabajo se lanza otro en
forma automática, sin necesidad de monitoreo ni
intervención del operador.
Se gana en eficiencia de uso del sistema al aparecer los
sistemas de procesamiento por lotes (batch).
64. Sistemas de proceso por lotes (batch).
64
Antes, la forma de utilizar los sistemas era:
Se escribe el programa en papel.
Se perfora el programa en tarjetas, con una máquina
especial.
Se ponen todas las tarjetas en la computadora para la
ejecución.
Por ejemplo, si se precisa el compilador Fortran, o alguna
biblioteca, se incluyen también esas tarjetas.
65. Sistemas de proceso por lotes
65
Con los sistemas batch:
Se pasan varios programas de tarjeta a una cinta (con una
computadora que haga eso eficientemente).
La cinta resultado es la entrada de otra computadora (que realiza
cálculos eficientemente), que es donde corren los programas.
La salida de esa ejecución se envía a una cinta, y otra máquina
manda la salida a la impresora.
Un sistema operativo de esta época era, por ejemplo, el Fortran
Monitor System.
Los usuarios no están en el centro de cómputos mientras se ejecutan
sus programas. Los programas debían esperar, y si ocurrían errores
(incluso sintácticos), había que repetir todo este proceso tan lento.
66. Sistemas de proceso por lotes
66
Aparece el concepto de buffering: consiste en solapar las
operaciones de entrada/salida con la computación del
proceso.
Así, se aprovecha mejor la CPU.
En hardware, la innovación que posibilitó el buffering fue que
los procesadores tienen registros e instrucciones propios para
la comunicación entre CPU y canales controladores de
entrada/salida.
El proceso en ejecución solicita una operación de E/S (que es
lenta). El controlador la hace, y mientras ese proceso sigue,
hasta que, vía una interrupción, el controlador avisa que
terminó.
Esta es una primera forma de multitarea.
67. Sistemas de proceso por lotes
67
Estos dispositivos periféricos (algunos realizan la E/S
por interrupciones):
Lectoras de tarjetas.
Perforadoras de tarjetas.
Impresoras.
Unidades de cinta.
Unidades de disco.
El desafío era usar estos recursos eficientemente, y en
particular el recurso procesador al interactuar con ellos.
En definitiva es importante no tener procesador ocioso.
68. Multiprogramación
68
Cuando una tarea utilizaba el procesador, otras
podían usar los dispositivos de E/S.
La mejor forma de usar el tiempo de CPU, es que, en
un momento dado, el sistema ejecute no una tarea,
sino un conjunto de tareas.
En esto se basa el concepto de multiprogramación:
varias tareas se encuentran simultáneamente en
memoria principal, y el procesador se conmuta de
una tarea a otra buscando su avance a medida que
requieren uso de los dispositivos periféricos.
69. Tercera generación: 1965-70
69
Innovación en hardware: aparecen circuitos integrados (a
baja escala).
Aparece la primer minicomputadora: PDP-8 (antecesoras
de las Digital VAX).
Aparece la familia de computadoras de IBM, System/360
(1964). 16 Kb. RAM, 300.000 ops./seg. Primera serie que
busca unificar máquinas científicas y comerciales. Costo del
orden del millón de dólares.
La siguió la serie 370 y luego 4300 y 30X0.
Hardware compatible dentro y entre las series IBM (no así
en las PDP por ejemplo).
70. OS/360
70
El IBM 360, tiene un sistema operativo, OS/360.
Sistema operativo muy grande, millones de instrucciones
Assembler, muchos bugs.
Se arreglaban algunos bugs y surgían otros.
Aparecen algunas ideas de ingeniería de software, al
tratarse lo relativo al desarrollo de programas grandes.
Multiprogramación:
Mientras un proceso espera E/S, otro toma la CPU.
Memoria dividida en áreas, asignadas a diferentes procesos.
Mecanismos de protección de memoria.
71. Spooling
71
Las computadoras de la tercera generación tenían
almacenamiento secundario, no volátil, basado en:
Cintas: acceso secuencial, se agregan datos al final.
Discos: acceso aleatorio, se puede modificar un archivo “por la
mitad”.
Así, siempre que se termina de ejecutar un trabajo, el
SO puede cargar uno nuevo del disco y comenzar a
ejecutarlo.
También esto permite spooling, para el manejo de colas
de impresión, y para la salida.
Spool=Simultaneous peripheral operation on line.
72. Spooling
72
Si un proceso va a imprimir, no manda directamente
a la impresora sino a un archivo.
Luego se imprime desde dicho archivo.
Si varios procesos producen salidas a impresora,
entonces todos sacan su salida a disco, y luego de ahí
a la impresora.
Aparece la cola de impresión.
Así, se comienza a aprovechar mejor un recurso caro
como lo es la CPU, al liberarlo de atender
dispositivos lentos.
73. Tiempo compartido
73
Aún no se trabajaba de la forma más eficiente.
Los programas entregaban las tarjetas al operador, si
había errores de compilación, había que cambiar algunas
tarjetas y reiniciar el proceso.
Surgen las máquinas de tiempo compartido (time sharing).
Varios usuarios utilizan al mismo tiempo la computadora, en
principio compitiendo (más que compartiendo) por sus
recursos.
Así, los sistemas operativos podían atender a varios
usuarios interactivos, que se comunican con el computador
a través de terminales en línea.
74. Tiempo compartido
74
Un gran número de usuarios pueden trabajar simultáneamente en forma
interactiva.
De alguna forma, se ofrece a cada usuario la ilusión de que dispone de
el sistema para él.
Los sistemas de tiempo compartido de los años 60, trabajaban también en
modo de proceso por lotes y con aplicaciones de tiempo real.
Los sistemas de tiempo real dan respuestas en tiempos mínimos
preestablecidos. Ejemplo: sensores de estabilidad en un avión.
En general son usados por debajo de su capacidad, a fin de asegurar
esos tiempos mínimos, y eso explica su alto costo.
En los sistemas de tiempo real, la multiprogramación debe ser controlada
de acuerdo a restricciones de tiempo y prioridades.
75. Tiempo compartido
75
En 1961 aparece el CTSS, sistema operativo time sharing,
desarrollado por el MIT. También el TSS de IBM. TSS=Time
Shared System.
Otros sistemas de tiempo compartido:
Multics del MIT, sucesor de CTSS, antecedente de Unix. Primer SO que
intentó escribirse en un LP de alto nivel (PL/I).
CP/CMS, antecesor del VM de IBM.
Todos estos eran sistemas de tiempo compartido, permitían
compartir programas y datos, y mostraron el valor de la
computación interactiva en los ambientes de desarrollo de
programas.
El tiempo de retorno (tiempo entre introducción de una tarea y
recepción de su resultado) bajó a segundos.
76. Tiempo compartido
76
El usuario podía introducir programas, compilarlos,
corregir errores (sintácticos), recompilar hasta librarlo
de errores, ejecutarlo, depurarlo (errores semánticos)
hasta producir la versión final.
Esta modalidad de proceso de desarrollo es muy
similar a la actual. Notar como se llega a la misma
gracias a los progresos en los sistemas operativos.
Los sistemas operativos comienzan a ser vistos como
ambientes de trabajo.
77. Multiprogramación
77
Estos sistemas permitían trabajar con varios procesos
simultáneos en ejecución.
El procesador va turnando la ejecución de partes de
cada uno.
El cambio de un proceso a otro se logra gracias a
las interrupciones.
Aparecen los mecanismos de protección de memoria
de modo de que coexistan varios procesos en
ejecución.
78. Memoria virtual
78
El concepto de memoria virtual ya estaba presente en
TSS, Multics y CP/CMS.
Así, los programas pueden usar más memoria de la que
físicamente el sistema proporciona.
Esto se logra combinando memoria RAM y disco.
Así, los programadores dejaron de preocuparse por los
procedimientos y trucos para que un programa entrara
completamente en memoria, concentrándose en el
problema en sí.
79. Ingeniería de software
79
Los programas en general, y los sistemas operativos en
particular, comenzaron a resolver situaciones cada vez más
complejas.
Así, crecieron en tamaño y complejidad.
Comenzaron a aparecer versiones que corregían errores
de otras versiones, y en ellas aparecían nuevos.
La necesidad de producir software confiable, fácil de
mantener, comprensible, etc. dieron origen a la ingeniería
de software.
Con esta disciplina se reconoce que todo software es
producto de un proceso de desarrollo.
80. Proceso de desarrollo de software
80
Controlando la calidad en el proceso de desarrollo, se
logra dar calidad al producto del mismo.
Aparecen técnicas de project management aplicadas a
los proyectos de desarrollo de software.
En general, se agregan herramientas para lograr un PDS
estructurado, predecible, disciplinado.
De alguna manera se sentaron bases firmes para el
desarrollo de programas grandes, y en particular,
sistemas operativos más complejos.
81. Origen de Unix
81
En 1969, fracasa el proyecto Multics de Bell y General
Electric.
Multics = Miltiplexed Information Computer Service.
Se trataba de un ambicioso proyecto de sistema operativo
grande, multitarea y multiusuario.
Primera vez que se intentó usar un LP de alto nivel en la
codificación de un SO (PL/I).
En Bell, Thompson y Ritchie escribieron, sobre una PDP-7 un
juego llamado Space Travel.
Para éste, Thompson escribió un ambiente de trabajo para
esa computadora, llamado Unics (U por Uniplexed).
82. Origen de Unix
82
Luego, se pasó a una versión de 16 Kb. sobre un
PDP-11.
Luego se desarrollaron el lenguaje B (Thompson) y el
lenguaje C (Ritchie).
Luego se reescribió gran parte del Unix en C.
Con un fuente abierto, y adoptado primero en
ambientes académicos y luego también comerciales,
Unix inició su expansión.
83. Los años 70
83
Predominaron los sistemas de tiempo compartido con
múltiples modos de operación: procesamiento por lotes,
tiempo compartido y tiempo real.
Los computadores personales estaban en la etapa inicial
de su desarrollo, que vendría de la mano del desarrollo de
los microprocesadores.
Ya habían productos comerciales sólidos. Entonces, surgió
el problema de comunicar sistemas.
Aparecieron protocolos estándares de comunicación:
TCP/IP (Depto. de Defensa de USA), Ethernet (Xerox).
Comenzaron a surgir los primeros problemas de
seguridad. Aparece la criptografía, etc.
Todo esto se traduce en nuevas necesidades para los
sistemas operativos.
84. Cuarta generación: 1980-90 y
84
actualidad
En hardware, se logra la integración de transistores en alta y
gran escala.
Aparecen los PCs. Son similares a los minicomputadores en
estructura y conceptos, pero más pequeños y más baratos.
fines 60’s – Apple con CP/M. (CP = Control Program).
Diskettes.
80-81: IBM lanza el primer PC. Procesador Intel 8086.
Sistema operativo DOS de Microsoft.
DOS = Disk Operating System.
1970 – Xerox. Antecedentes de manejo a través de íconos.
Luego Mac OS (Apple), OS/2 (IBM) y Windows (Microsoft).
85. Redes
85
Idea: Compartir recursos.
Una red es un conjunto de computadoras autónomas interconectadas.
Se lograron redes cuya potencia de cómputo es comparable a las de los
mainframes que predominaron en los años 1970s.
Ventajas frente a los mainframes:
Ambos comparten recursos.
En la red no se compite por los recursos críticos CPU y memoria.
Permiten administración centralizada.
La red implica una inversión escalable.
Sistemas operativos distribuidos: trabajan sobre una red, pero ocultan al
usuario la presencia de la misma. Para el usuario es transparente en qué
sistema de la red se ejecutan sus órdenes, eso lo resuelve el sistema
operativo.
86. Redes
86
Con las redes aparecieron nuevas herramientas de
comunicación.
Aparecen redes de área local y de área extensa,
resultantes de la interconexión de las primeras.
Aparece la red Internet (70’s).
Crecen los requerimientos de los sistemas operativos
en cuanto a dar soporte a múltiples usuarios, permitir
el uso de redes y permitir los niveles de seguridad y
auditoría necesarios.
87. Redes
87
Con el desarrollo de las redes aparecen nuevas
posibilidades y problemas:
Publicación de bases de datos.
Distribución de bases de datos.
Protección de accesos.
Auditoría de accesos.
Ataques (hackers).
Aplicaciones de red.
Herramientas de publicación y de comunicación.
Aplicaciones cliente/servidor.
Transmisión de datos en tiempo real (imágenes, etc.)
Comunicación entre distintas plataformas.
88. Los desafíos en arquitectura y sistemas
88
operativos
Conectividad
Sistemas abiertos.
Paralelismo.
Sistemas distribuidos.
Mejoramiento de la interfaz con el usuario.
89. Sistemas operativos de los últimos años
89
La familia Microsoft:
MS-DOS
Windows 3.X
Windows 95/98/ME
Windows NT / 2000 / XP
La familia Unix:
Unix SVR4, Unix BSD, Solaris, AIX, SCO Unix, HP Ux, Irix,
Linux.
Otros: OS/2, Mac, VM, etc.
90. Clasificaciones
90
Proceso o tarea: es un programa en ejecución.
Sistema operativo:
Monotarea: sólo permite un proceso en ejecución a la vez.
Multitarea: permite la ejecución simultánea de varios procesos.
Sistema operativo:
Monousuario: no reconoce la existencia de diferentes usuarios.
Multiusuario: reconoce la existencia de diferentes usuarios y
arbitra el acceso de los mismos a los recursos del sistema.
91. El núcleo o kernel
91
Sus funciones principales:
Schedullingde procesos
Manejo de memoria
Gestión de file systems
92. Control de lectura
92
A esta altura ya debe haber leído los capítulos 1
y 2 de Deitel o sus equivalentes en los otros textos.