Diseño de Sistemas Operativos Ing. Ángel Caffa

Slides:



Advertisements
Presentaciones similares
IBD Plan 90 y 2003 Clase 10.
Advertisements

ESPECIALISTA EN PSICOLOGÍA CLÍNICA
Algoritmos y Programas
Principios de Computación
ESPECIALISTA EN PSICOLOGÍA CLÍNICA PREPARACIÓN PIR CONVOCATORIA 2008.
Tecnología Multimedia Fundamentos y Aplicaciones
Cuestiones y problemas
Definición Objetivos Funciones de un S.O.
El Computador Introducción a la Tecnología de la Información.
CONTROLES ELÉCTRICOS Y AUTOMATIZACIÓN EE - 621
© 2007 Cisco Systems, Inc. All rights reserved. Traducido en apoyo a la capacitación de Instructores de la Red Proydesa Comunicación por la red Fundamentos.
Introduction to Computers1 Almacenamiento secundario Disco magnético Cinta magnética Disco compacto/óptico Dispositivos de entrada Teclado Ratón (mouse)
Capa de Transporte del modelo OSI
1 Circuitos Digitales II Circuitos Digitales II Fundamentos de Arquitectura de Computadores Información sobre el Curso Semana No.1 Semestre Prof.
Programación Avanzada en Internet
Módulo I: PRINCIPIOS Y CONCEPTOS BÁSICOS DE LA INFORMÁTICA (20%)
Sistema operativo Tema: Maquina virtual Alumnos: Eduar peña
Trascendencia de este curso Curso Introducción a la Computación 1
MI PROGRAMA DE FORMACION
Informática Educativa Bogotá 2011 – Universidad de Santander UDES
Introducción al software
SISTEMA OPERATIVO Un sistema operativo es un programa básico (el más básico y necesario) que controla una computadora. El sistema operativo oculta la complejidad.
Diseño e implementación de un ambiente virtualizado para un Sistema de Administración de Contenidos usando Microsoft SharePoint con cada uno de sus componentes.
SISTEMAS OPERATIVOS DE UNA RED.
Tema 2 Orden de contacto Polinomios de Taylor Teorema de Taylor
1. Nombre cátedra ILUMINACIÓN y CÁMARA I Diseño de Imagen y Sonido Cátedra.
Análisis y Diseño de Sistemas
Direccionamiento de la red: IPv4
Introducción a los SSOO Sebastián Sánchez Prieto.
Elemento Lógico (Software)
SEMANA Introducción.
menú Dispocitivos de salida Presentación Que es informática
LA COMPUTACIÓN.
EL COMPUTADOR.
Informática Conceptos básicos.
Instalar y Preservar los equipos de computo de acuerdo a las recomendaciones de higiene y seguridad del fabricante. Así como el consumo relacional de.
ACTIVIDAD DE APRENDIZAJE DISPOSITIVOS DE ENTRADA Y SALIDA
M.C. Juan Carlos Olivares Rojas
EL COMPUTADOR.
UNIVERSIDAD DE MANAGUA INTRODUCCIÓN A LA INFORMÁTICA I
Introducción a la Informática
ICC243 Sistemas Operativos
Conceptos Básicos de Informática
Computadoras Analógicas Computadoras Digitales
PROCESADORES Hardware y Software.
Operación del Hardware en el manejo de aplicaciones de cómputo
SISTEMAS OPERATIVOS Por Martín Arosemena.
PERIFÉRICOS DE ENTRADA
ESCUELA NORMAL PARA EDUCADORA ‘’PROFR. SERAFIN CONTRERAZ MANZO’’
SISTEMAS OPERATIVOS.
Recursos que requiere un Sistema de Información
Software.
Universidad Nacional Experimental de Guayana
María Camila Restrepo C. Mantener la Operatividad del sistema
SISTEMAS OPERATIVOS Son un conjunto de programas destinados a permitir la comunicación entre el usuario y en computador y gestionar sus recursos.
Las computadoras Centro de bachillerato tecnológico industrial y de servicios N°80 Ing. Cecilio Rigoberto Mukul Vargas.
DEFINISION CLASIFICACION Hardwares. ¿Qué SON LOS HARDWARES? corresponde a todas las partes tangibles de un sistema informático.
COMPONENTES DE UNA COMPUTADORA Informática básica Básicamente, una máquina cuya función es procesar información… …de diferentes tipos: texto, imagen,
Software.
Sistemas Operativos Universidad Politécnica Territorial de Mérida
Definición De Software Y Hardware
ESTRUCTURA DE DATOS CÓDIGO Curso: Estructura de Datos Ing. Hermes Mosquera Angulo Director del curso.
. Ing. Jorge Ospina. Cortes y parciales I corteMartes 1 de Marzo de 2011 II corteMartes 12 de Abril de 2011 III corteMartes 1 de Junio de 2011.
1. Información Información 2. Datos Datos 3. Tipos de dato Tipos de dato 4. Que es un sistema Que es un sistema 5. Que es un computador Que es un computador.
TEMA 2. Organización de la computadora El HADWARE es el conjunto de partes eléctricas y mecánicas es decir los elementos accesibles donde todo lo que.
Tarea de Software y hardware Nombre :Tatiana Apellido: Tangarife Posada Grado: 7°3.
Parcial # 1 La Computadora.
Salir de la presentación
SOFTWARE DE COMPUTADORAS
Estructura y funcionamiento de un sistema de cómputo
Transcripción de la presentación:

Diseño de Sistemas Operativos Ing. Ángel Caffa Facultad de Ingeniería Universidad ORT

Temario Generalidades de S.O. Gestión de procesos Memoria Generalidades de Sistemas Operativos is a Design Digital Content & Contents mall developed by Guild Design Inc. Gestión de procesos Gestión de procesos is a Design Digital Content & ontents mall developed by Guild Design Inc. Memoria Memoria Contents mall developed by Guild Design Inc.

Conceptos de Seguridad Temario Disco Disco is a Design Digital Content & Contents mall developed by Guild Design Inc. Conceptos de Seguridad Conceptos de Seguridad Contents mall developed by Guild Design Inc.

Bibliografía 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.

Aprobación del curso 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.

Horarios Grupo Matutino Grupo Nocturno Cada semana se ven los mismos temas con los dos grupos (recuperación).

Cronograma 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.

El curso dentro de la formación de un informático Arquitectura de sistemas Sistemas operativos Redes Prog. B.D. ... Administración de sistemas bajo un sistema operativo determinado Programación en un lenguaje determinado Diseño y configuración de Sistemas, servicio técnico Configuración de redes bajo un conjunto determinado de protocolos. ...

El curso dentro de la formación de 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.

Enfoque del curso 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.

Enfoque del curso 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

I - Generalidades de los sistemas operativos

Repaso de conceptos básicos 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.

Repaso de conceptos básicos 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.

Recursos 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.

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.

Definición de SO Desglosando lo anterior, el 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.

Además... 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.

Analogía 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.

Primer esquema de capas Programas Sistema Operativo Hardware = Recursos USUARIO

Evolución de los SO 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.

Primera generación 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.

Primera generación 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.

Segunda generación: 1955-65 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).

Sistemas de proceso por lotes (batch). 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.

Sistemas de proceso por lotes 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.

Sistemas de proceso por lotes 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.

Sistemas de proceso por lotes 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.

Multiprogramación 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.

Tercera generación: 1965-70 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).

OS/360 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.

Spooling 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.

Spooling 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.

Tiempo compartido 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.

Tiempo compartido 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.

Tiempo compartido 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.

Tiempo compartido 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.

Multiprogramación 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.

Memoria virtual 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í.

Ingeniería de software 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.

Proceso de desarrollo de software 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.

Origen de Unix 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).

Origen de Unix 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.

Los años 70 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.

Cuarta generación: 1980-90 y 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).

Redes 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.

Redes 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.

Redes 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.

Los desafíos en arquitectura y sistemas operativos Conectividad Sistemas abiertos. Paralelismo. Sistemas distribuidos. Mejoramiento de la interfaz con el usuario.

Sistemas operativos de los últimos años 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.

Clasificaciones 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. 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.

El núcleo o kernel Sus funciones principales: Schedulling de procesos Manejo de memoria Gestión de file systems

Control de lectura A esta altura ya debe haber leído los capítulos 1 y 2 de Deitel o sus equivalentes en los otros textos.

Recursos 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.

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.

Definición de SO 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.

Además... 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.

Analogía 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.

Primer esquema de capas Programas Sistema Operativo Hardware = Recursos USUARIO

Evolución de los SO 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.

Primera generación 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.

Primera generación 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.

Segunda generación: 1955-65 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).

Sistemas de proceso por lotes (batch). 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.

Sistemas de proceso por lotes 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.

Sistemas de proceso por lotes 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.

Sistemas de proceso por lotes 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.

Multiprogramación 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.

Tercera generación: 1965-70 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).

OS/360 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.

Spooling 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.

Spooling 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.

Tiempo compartido 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.

Tiempo compartido 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.

Tiempo compartido 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.

Tiempo compartido 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.

Multiprogramación 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.

Memoria virtual 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í.

Ingeniería de software 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.

Proceso de desarrollo de software 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.

Origen de Unix 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).

Origen de Unix 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.

Los años 70 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.

Cuarta generación: 1980-90 y 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).

Redes 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.

Redes 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.

Redes 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.

Los desafíos en arquitectura y sistemas operativos Conectividad Sistemas abiertos. Paralelismo. Sistemas distribuidos. Mejoramiento de la interfaz con el usuario.

Sistemas operativos de los últimos años 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.

Clasificaciones 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. 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.

El núcleo o kernel Sus funciones principales: Schedulling de procesos Manejo de memoria Gestión de file systems

Control de lectura A esta altura ya debe haber leído los capítulos 1 y 2 de Deitel o sus equivalentes en los otros textos.