Introduccion

2,360 views

Published on

Introduccion Sistemas de Computacion

Published in: Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,360
On SlideShare
0
From Embeds
0
Number of Embeds
51
Actions
Shares
0
Downloads
85
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

Introduccion

  1. 1. Sistemas de Computación 2007-1 Cecilia Hernández [email_address]
  2. 2. Que veremos hoy? <ul><li>Detalles del curso </li></ul><ul><li>Aspectos importantes acerca SOs </li></ul><ul><li>Qué es un SO (Sistema Operativo)? </li></ul><ul><li>Contenidos </li></ul><ul><li>Objetivos </li></ul><ul><li>Tendencias </li></ul>
  3. 3. Detalles del curso <ul><li>Sitio web: http://www.inf.udec.cl/~sc </li></ul><ul><li>Bibliografía </li></ul><ul><ul><li>Silberschatz, Galvin, Gagne, &quot;Operating System Concepts&quot;, 5th y 6th edition, John Wiley & Sons, Inc (2003) </li></ul></ul><ul><ul><li>Silberschatz, Galvin, Gagne, &quot;Operating System Concepts with Java&quot;, 6th edition, John Wiley & Sons, Inc (2004) </li></ul></ul><ul><ul><li>Andrew Tanenbaum, “Sistemas Operativos Modernos”, Primera Edición, Prentice Hall. 1993. </li></ul></ul><ul><ul><li>Deitel H. M. “Sistemas Operativos”. Segunda Edición, Addison Wesley Iberoamericana. 1993. </li></ul></ul><ul><ul><li>Bovet Daniel P., Sesati Marco, “Understanding the Linux Kernel” (2nd Edition). O'Reilly Media, Inc. 2002 </li></ul></ul><ul><ul><li>Andrew Tanenbaum, “Sistemas Operativos Distribuidos”, Primera Edición, Prentice Hall. 1995 </li></ul></ul>
  4. 4. Evaluación <ul><li>2 Certámenes </li></ul><ul><li>Aprox. 6 Proyectos </li></ul><ul><li>Participación </li></ul><ul><li>Nota Presentación : 0.85*prom certs + 0.15*prom proyectos </li></ul><ul><li>Si Nota Presentación < 4 </li></ul><ul><li>Nota Final = Nota Presentación*0.65 + Examen*0.3 + Nota Participación*0.05 </li></ul><ul><li>Else </li></ul><ul><li>Nota Final = 0.65*prom certs + 0.3*prom proyectos + Nota Participación*0.05 </li></ul>
  5. 5. Reglas del Juego <ul><li>Trabajos en grupos de 2 o 3 personas. </li></ul><ul><li>Penalidad por atraso, 10% por día, sábado y domingo incluídos </li></ul><ul><li>No asistencia a certamen/proyecto/tarea debe ser avalado con certificado médico </li></ul><ul><li>La no entrega de tarea o proyecto tiene como consecuencia calidad de NCR </li></ul><ul><li>La copia de un certamen/proyecto/tarea es causal de 1 para los involucrados </li></ul>
  6. 6. Aspectos importantes acerca SO <ul><li>SO: Componente básico de un sistema computacional moderno </li></ul><ul><ul><li>Magia para la mayoría de las personas </li></ul></ul><ul><li>SO: ejemplo de sistema complejo </li></ul><ul><ul><li>Muy grande, muy caro de construir </li></ul></ul><ul><ul><ul><li>Windows NT, XP: por ~10 años, más de 1000 personas involucradas. </li></ul></ul></ul><ul><li>Cómo manejar complejidad? </li></ul><ul><ul><li>Abstracción, modularidad, proceso iterativo </li></ul></ul><ul><ul><li>Int main() { cout<<“ Hola Mundo”<<endl;} </li></ul></ul><ul><ul><ul><li>Requiere ejecución de muchas líneas de código, no visible a programador. </li></ul></ul></ul>
  7. 7. Qué es un SO? <ul><li>SO : software entre Hardware y aplicaciones </li></ul><ul><ul><li>Proporciona abstracción del hardware </li></ul></ul><ul><ul><li>Proporciona protección </li></ul></ul><ul><ul><li>Permite utilizar hardware de millones de maneras </li></ul></ul>emacs SO Hardware g++ Aplicación/Firefox
  8. 8. Objetivos de la clase <ul><li>Perspectiva de los Sistemas Operativos </li></ul><ul><ul><li>Como usuario/programador, como desarrollar aplicaciones </li></ul></ul><ul><ul><li>Como diseñar/implementar un Sistema Operativo </li></ul></ul><ul><li>Aspectos a aprender en esta clase </li></ul><ul><ul><li>Cuáles son las partes de un sistema operativo </li></ul></ul><ul><ul><li>Componentes de SO y su interacción </li></ul></ul><ul><ul><li>Cuáles son las interfaces importantes </li></ul></ul><ul><ul><li>Cuáles son las características/requerimientos de un sistema operativo (se compromenten y varían en el tiempo) </li></ul></ul><ul><ul><li>Políticas y mecanismos </li></ul></ul><ul><ul><li>Cuáles son los algoritmos típicos utilizados </li></ul></ul>
  9. 9. Programa Tentativo <ul><li>Aspectos Generales e Historia </li></ul><ul><li>Administración de Procesos </li></ul><ul><li>Administración de Memoria </li></ul><ul><li>Sistemas de Entrada/Salida </li></ul><ul><li>Sistemas de Archivos </li></ul><ul><li>Protección y Seguridad </li></ul><ul><li>Inroducción a Sistemas Distribuidos </li></ul>
  10. 10. Sistemas Operativos <ul><li>Qué es ? </li></ul><ul><ul><li>Administrador de recursos </li></ul></ul><ul><ul><ul><li>Abstracción </li></ul></ul></ul><ul><ul><ul><li>Desempeño </li></ul></ul></ul><ul><ul><ul><li>Protección </li></ul></ul></ul><ul><ul><li>Soporte usuario/programador </li></ul></ul><ul><ul><ul><li>Abstracción </li></ul></ul></ul><ul><ul><ul><li>Normalmente viene con conjunto de utilitarios </li></ul></ul></ul><ul><ul><li>Todo el software que el usuario no escribió que le permite escribir aplicaciones </li></ul></ul><ul><ul><ul><li>No completamente, programador utiliza editores, compiladores y bibliotecas que no son parte de SO, pero muchas veces vienen con instalaciones estandar </li></ul></ul></ul>
  11. 11. Definición de Sistema Operativo <ul><li>Como administrador de recursos </li></ul><ul><ul><li>Nivel de software que maneja y controla los recursos computacionales y periféricos por el usuario . </li></ul></ul><ul><ul><ul><li>Abstracción de complejidad del hardware. </li></ul></ul></ul><ul><ul><ul><ul><li>Sistema operativo abstrae hardware en recursos lógicos </li></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>CPU -> Procesos, Hebras </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>Memoria -> Memoria virtual, paginación </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>Disco -> Archivos </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>Tarjetas de Red -> sockets </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><li>Control en la ejecución de procesos, protección usuarios, etc. </li></ul></ul></ul></ul><ul><li>Como apoyo en el desarrollo de aplicaciones </li></ul><ul><ul><li>Set de utilitarios y ambientes que ayudan al usuario a crear aplicaciones </li></ul></ul><ul><ul><ul><li>Shells, sistemas gráficos, etc </li></ul></ul></ul>
  12. 12. Estructura Lógica de un Sistema Operativo Servicios para Aplicaciones Servicios independientes del Hardware Servicios dependientes del Hardware Shells Ambientes gráficos Utilitarios Administración de Procesos TCP/IP Sistemas Archivos Drivers Administración de Memoria Interrupciones, Memoria física, TLB, CPUs, dispositivos Control de acceso
  13. 13. Beneficios usando SO <ul><li>Para programadores desarrollando aplicaciones </li></ul><ul><ul><li>Facilidades para programar </li></ul></ul><ul><ul><ul><li>Es mejor usar archivos a tener que lidiar con el disco directamente </li></ul></ul></ul><ul><ul><li>Portabilidad (configuración entre máquinas y arquitecturas) </li></ul></ul><ul><li>Para usuarios </li></ul><ul><ul><li>Seguridad </li></ul></ul><ul><ul><ul><li>Sistema operativo proteje procesos (espacios de memoria independientes). De usuarios, usuario/kernel </li></ul></ul></ul><ul><ul><li>Justicia </li></ul></ul><ul><ul><ul><li>Sistema operativo regula que todos los procesos tengan su oportinidad de ejecución </li></ul></ul></ul><ul><ul><li>Eficiencia </li></ul></ul><ul><ul><ul><li>Muchos usuarios pueden compartir un Computador </li></ul></ul></ul><ul><ul><ul><li>Muchos procesos se ejecutan concurrentemente </li></ul></ul></ul>
  14. 14. Características/requerimientos de un SO <ul><li>Estructura . Como organizar componentes de SO </li></ul><ul><li>Compartir . Como los usuarios comparten los recursos </li></ul><ul><li>Nombres . Como los usuarios o programas nombran los recursos </li></ul><ul><li>Protección . Como los usuarios/programas se protejen entre ellos (usuario/usuario, programa/programa) </li></ul><ul><li>Seguridad . Como se proteje el sistema de ataques. Como se mantiene la integridad del sistema y sus recursos. </li></ul><ul><li>Rendimiento . Como mejorarlo (por qué es lento?) </li></ul><ul><li>Confiabilidad . Y en caso de falla (programa o hardware), que ocurre? </li></ul>
  15. 15. Características/requerimientos de un SO <ul><li>Extensibilidad . Como podemos incorporar nuevas características </li></ul><ul><li>Comunicación . Como los usuarios se comunican con otros usuarios en diferentes computadores </li></ul><ul><li>Concurrencia . Como son creadas y controladas las actividades concurrentes/paralelas </li></ul><ul><li>Escalabilidad . Como reacciona el sistema cuando la carga de trabajo o recursos aumentan </li></ul><ul><li>Persistencia . Como hacer que los datos perduren en el tiempo. </li></ul>
  16. 16. Características/requerimientos de un SO <ul><li>Distribución . Como múltiple computadores interectuan entre sí. </li></ul><ul><li>Contraloría o Monitoreo . Como se lleva la cuenta del uso de recursos. En sistemas comerciales, como cobrar en función de algunos índices (uso disco, velocidad de conexión, tiempo ejecución, etc) </li></ul>
  17. 17. Por qué deben estudiar SO en su carrera? <ul><li>Construir, modificar o administrar un SO o alguno de sus componentes </li></ul><ul><ul><li>Tomando en cuenta el hardware sobre el cual se ejecutan </li></ul></ul><ul><ul><ul><li>Mayor discusión más adelante. </li></ul></ul></ul><ul><li>Entender el desempeño de un SO </li></ul><ul><ul><li>Comportamiento de SO afecta toda el sistema y usuarios que la usan </li></ul></ul><ul><ul><li>Constituye un desafío para entender sistemas complejos </li></ul></ul><ul><ul><li>Midiendo y optimizando desempeño del sistema </li></ul></ul><ul><li>Aplicación en otras áreas </li></ul><ul><ul><li>Ingeniería de software (diseño e implementación de aplicaciones), usando recursos y abstracciones disponibles </li></ul></ul><ul><ul><li>Desarrollo en la construcción de algoritmos </li></ul></ul><ul><li>Más avanzados </li></ul><ul><ul><li>Proponiedo cambios en técnicas, algoritmos que maximicen la facilidad de configuración y utilización, uso de recursos, proposiciones en cambio de arquitectura, construcción de compiladores, mejoras en protección y seguridad, etc </li></ul></ul>
  18. 18. Evolución de SOs <ul><li>Con el inicio de los computadores digitales </li></ul><ul><ul><li>Computadores eran compartidos por programadores quienes manipulaban hw y escribían su propio código para acceso a dispositivos y recopilación de resultados (ejecuciones exitosas o fallidas) </li></ul></ul><ul><ul><li>Posteriormente operador realizada trabajo de cargar y recopilar info en disposivos correspondientes </li></ul></ul><ul><li>Inicios </li></ul><ul><ul><li>Inicio de compartición. Bibliotecas y manejadores de dispositivos </li></ul></ul><ul><ul><li>Sistema operativo era una biblioteca que se linkeaba en un programa. Programa se cargaba completamente en memoria y se ejecutaba. </li></ul></ul><ul><ul><li>Básicamente el sistema operativo era una biblioteca run-time </li></ul></ul>
  19. 19. Evolución de SOs <ul><li>Sistemas batch </li></ul><ul><ul><li>Sistema operativo estaba almacenado en una porción de la memoria </li></ul></ul><ul><ul><li>Cargaba trabajo a ejecutar a memoria usando un lector de tarjeta </li></ul></ul><ul><ul><li>Ejecutaba trabajo e imprimía resultado, contenido de memoria y registros para depuración </li></ul></ul><ul><ul><li>Cargaba próximo trabajo </li></ul></ul><ul><ul><li>Tarjetas de control especificaban al computador que hacer. </li></ul></ul><ul><ul><li>Operadores ordenaban trabajos con requerimientos similares en grupos (batches) y los ejecutaban </li></ul></ul><ul><ul><li>Con este enfoque la CPU pasaba mucho tiempo ociosa </li></ul></ul><ul><ul><ul><li>Diferencias entre dispositivos I/O, mecánicos mucho más lento que electrónicos </li></ul></ul></ul><ul><ul><ul><li>Gap entre velocidad de CPU y dispositivos siempre muy grande </li></ul></ul></ul>
  20. 20. Evolución de SOs <ul><li>Spooling (Simultaneous Peripheral Operation On-Line) </li></ul><ul><ul><li>Con la invensión de Discos más rápidos que lectores de tarjeta y acceso a dispositivos de salida como impresoras </li></ul></ul><ul><ul><li>Sobreponer lectura/escritura a dispositivos de E/S mientras se ejecuta proceso en CPU </li></ul></ul><ul><ul><li>Spool : buffer que mantiene info de entrada o salida de un dispositivo </li></ul></ul><ul><ul><li>Leer de dispositivos de entrada a disco </li></ul></ul><ul><ul><li>Escribir de dispositivos de salida a disco </li></ul></ul><ul><ul><li>Usar CPU mientras se lee y escribe a disco </li></ul></ul><ul><ul><li>Grupo de trabajos pueden ser leídos a disco </li></ul></ul><ul><ul><ul><li>Sistema operativo elige trabajo a ejecutar (planificación) </li></ul></ul></ul><ul><ul><li>Sin embargo, CPU aun sigue ociosa por mucho tiempo cuando programa interactua con periférico </li></ul></ul>
  21. 21. Evolución de SOs <ul><li>Sistemas Multiprogramados </li></ul><ul><ul><li>Para aumentar la utilización del sistema </li></ul></ul><ul><ul><li>Mantiene varios programas cargados en memoria simultáneamente </li></ul></ul><ul><ul><ul><li>Protección es importante </li></ul></ul></ul><ul><ul><li>Mientras un programa espera por I/O otro puede estar ejecutándose </li></ul></ul><ul><ul><li>beneficios por el uso de dispositivos I/O asincrónicos </li></ul></ul><ul><ul><ul><li>necesita saber cuando el disposito termina </li></ul></ul></ul><ul><ul><ul><ul><li>interrupciones </li></ul></ul></ul></ul><ul><ul><ul><ul><li>polling </li></ul></ul></ul></ul><ul><ul><li>Objetivo es optimizar throughput (#trabajos/tiempo) aunque castiga tiempo de respuesta </li></ul></ul>
  22. 22. Evolución de SOs <ul><li>Sistemas de Tiempo Compartido </li></ul><ul><ul><li>Para soportar uso interactivo </li></ul></ul><ul><ul><ul><li>En un principio un servidor para varios terminales </li></ul></ul></ul><ul><ul><li>Cada usuario cree que el sistema esta dedicado a él </li></ul></ul><ul><ul><li>Tiempo de respuesta es preferido a throughput </li></ul></ul><ul><ul><li>Sistema operativo divide el tiempo de CPU entre los usuarios </li></ul></ul><ul><ul><ul><li>Procesos se ejecutan por un pequeño periodo de tiempo o hasta que requieran I/O, entonces el próximo proceso en la lista entra en ejecución </li></ul></ul></ul><ul><ul><li>Usuarios pueden ejecutar procesos interactivos, como editores, depuradores, etc </li></ul></ul><ul><ul><li>Primer sistema: MULTICS ( ~ 1960) </li></ul></ul><ul><ul><li>Protección es importante </li></ul></ul>
  23. 23. Sistemas actuales <ul><li>Sistemas de Escritorio </li></ul><ul><ul><li>Maximización de utilización de CPU no es tan importante como lo es facilidad de uso para el usuario </li></ul></ul><ul><ul><ul><li>Sistemas gráficos (ventanas, menus, etc) </li></ul></ul></ul><ul><ul><li>Seguridad es un aspecto importante, sobretodo ahora que la mayoría de los computadores modernos están conectados en red </li></ul></ul><ul><ul><li>Estaciones de trabajo, son básicamente computadores para ser usados por usuarios, pero poseen hw más poderoso, como buenas tarjetas gráficas y CPUs </li></ul></ul><ul><ul><li>Actualmente computadores de escritorio están incluyendo la tecnología multicore </li></ul></ul>
  24. 24. Sistemas actuales <ul><li>Sistemas Distribuidos </li></ul><ul><ul><li>Sistemas que facilitan el uso de recursos distribuidos geográficamente </li></ul></ul><ul><ul><li>Computadores conectados en red (LAN, WAN) </li></ul></ul><ul><ul><li>Soportan comunicación entre trabajos (procesos) </li></ul></ul><ul><ul><li>Permite la compartición de recursos (hardware, software) </li></ul></ul><ul><ul><ul><li>balance de carga, autentificación y control de acceso </li></ul></ul></ul><ul><ul><li>Permite algo de paralelismo, pero no es el objetivo principal </li></ul></ul><ul><ul><li>Algunos modelos que se usan en el desarrollo de aplicaciones distribuidas </li></ul></ul><ul><ul><ul><li>Sistemas Peer to Peer </li></ul></ul></ul><ul><ul><ul><ul><li>Servidores y clientes. No hay distinción entre el cliente y el servidor, ambos actúan como los dos. Se conocen como peers </li></ul></ul></ul></ul><ul><ul><ul><li>Sistemas Cliente/servidor </li></ul></ul></ul><ul><ul><ul><ul><ul><li>Clientes envian requerimientos que servidores procesan y responden a clientes. </li></ul></ul></ul></ul></ul><ul><ul><ul><li>SO distribuidos </li></ul></ul></ul><ul><ul><ul><ul><li>Proporcionan ilusión que existe un solo SO que controla recursos distribuidos en red. </li></ul></ul></ul></ul>
  25. 25. Sistemas actuales <ul><li>Sistemas basados en clusters </li></ul><ul><ul><li>Compuestos por dos o más sistemas individuales acoplados </li></ul></ul><ul><ul><li>Definición general : computadores comparten almacenamiento y están conectados mediante una LAN con alto ancho de banda </li></ul></ul><ul><ul><li>Tipos </li></ul></ul><ul><ul><ul><li>Asimétricos: uno es el principal y otro monitorea principal y pasa a ser el principal en caso de falla </li></ul></ul></ul><ul><ul><ul><li>Simétricos: dos o más computadores ejecutan las aplicaciones y se monitorean entre ellas </li></ul></ul></ul><ul><li>Sistemas basados en Multiprocesadores </li></ul><ul><ul><li>Mejoran productividad, confiabilidad </li></ul></ul><ul><ul><li>Comúnmente utilizados en aplicaciones científicas </li></ul></ul><ul><ul><li>Computadores paralelos </li></ul></ul><ul><ul><ul><li>SMPs (Symmetric Multi-Processors) </li></ul></ul></ul><ul><ul><ul><li>MPPs (Massively Parallel Processors) </li></ul></ul></ul><ul><ul><ul><li>NOWs (Networks Of Workstations) </li></ul></ul></ul><ul><ul><ul><li>Grid Computacional </li></ul></ul></ul><ul><ul><ul><ul><li>Incluye clusters y almacemamiento distribuido geográficamente </li></ul></ul></ul></ul>
  26. 26. Sistemas actuales <ul><li>Sistemas incrustados </li></ul><ul><ul><li>CPUs baratas presentes en muchos artículos </li></ul></ul><ul><ul><li>Celulares, PDAs, juegos, iPods </li></ul></ul><ul><li>Sistemas Handheld </li></ul><ul><ul><li>PDAs (Personal Digital Assistants) </li></ul></ul><ul><ul><li>Limitados por tamaño </li></ul></ul><ul><ul><ul><li>CPU lenta comparada con PC </li></ul></ul></ul><ul><ul><ul><ul><li>si no requeriría una batería grande </li></ul></ul></ul></ul><ul><ul><ul><li>Pequeña memoria </li></ul></ul></ul><ul><ul><ul><ul><li>La mayoría no implementan memoria virtual </li></ul></ul></ul></ul><ul><ul><li>Usan tecnología como BlueTooth e infrarojo para comunicarse con otros PDAs y PCs </li></ul></ul><ul><ul><li>Comunicación inalámbrica ahora también esta accesible para PDAs </li></ul></ul>
  27. 27. Sistemas actuales <ul><li>Sistemas de tiempo real </li></ul><ul><ul><li>Especialmente diseñados con restricciones de tiempo importantes </li></ul></ul><ul><ul><li>Deben responder a eventos que ocurren con alta precisión de tiempo </li></ul></ul><ul><ul><ul><li>Sistemas computacionales de emergencia </li></ul></ul></ul><ul><ul><ul><li>Control de tráfico aéreo </li></ul></ul></ul><ul><ul><ul><li>Se agrupan de acuerdo a los requerimientos en tiempos de respuesta </li></ul></ul></ul><ul><ul><ul><li>Tipos </li></ul></ul></ul><ul><ul><ul><ul><li>Duros: Con restricciones de tiempo importantes. Algunas características avanzadas de SOs no se encuentran, por ejemplo, memoria virtual normalmente no es implementada. Se usan en sistemas de control industrial y robótica. </li></ul></ul></ul></ul><ul><ul><ul><ul><li>Suaves: Menos restrictivo sólo requiere que procesos no esperen indifinidamente y tengan prioridad sobre otros. </li></ul></ul></ul></ul>
  28. 28. Tendencias en SOs <ul><li>Mejoras tecnológicas avanzan rápidamente </li></ul><ul><li>Código de SOs tiende a cambiar mucho más lentamente que Hardware </li></ul><ul><li>Construcción de sistemas se extiende mucho más allá que el SO </li></ul>
  29. 29. Citas famosas <ul><li>“ I think there is a world market for maybe five computers ” </li></ul><ul><ul><li>Thomas Watson, IBM, 1943 </li></ul></ul><ul><li>“ There is no reason for any individual to have a computer in their home ” </li></ul><ul><ul><li>Ken Olson, Digital, 1977 </li></ul></ul><ul><li>“ 640K ought to be enough for anybody ” </li></ul><ul><ul><li>Bill Gates, 1981 </li></ul></ul>
  30. 30. Citas famosas Scientists from RAND Corporation have created this model to illustrate how a &quot;home computer&quot; could look in the year 2004. However the needed technology will not be economically feasible for the average home. Also the scientists readily admit that the computer will require not yet invented technology to actually work, but 50 years from now scientific progress is expected to solve these problems. With teletype interface and the Fortran language, the computer will be easy to use and only
  31. 31. Tendencia en Desempeño de CPU <ul><li>Desempeño de CPU paró de doblarse cada 18 meses en el 2002 </li></ul>Fuente: David Patterson
  32. 32. Ley de Moore <ul><li>Continúa mejorando la cantidad de transistores por chip </li></ul>
  33. 33. Por qué desempeño crece a menor pendiente? <ul><li>Según la ley de Moore, es posible conseguir más transistores por chip </li></ul><ul><li>Problema con CPUs </li></ul><ul><ul><li>Diseño de chips se está haciendo más complejo </li></ul></ul><ul><ul><li>Tiempos de comunicación se hacen más importantes </li></ul></ul><ul><ul><li>Ruido en los circuitos pasa a ser un factor importante </li></ul></ul><ul><ul><li>Problemas para seguir aumentando la velocidad del reloj (uso de energía y disipación de calor) </li></ul></ul><ul><ul><ul><li>Tecnologías multicore permiten aumentar desempeño a costo de velocidad de reloj </li></ul></ul></ul>
  34. 34. Qué ofrece las empresa ahora?
  35. 35. Qué pasa con la Educación en Computación? “ Given this sea change, how much of the curriculum a nd what fraction of the CS faculty i s oblivious to concurrency? How many algorithms, data structures, languages, compilers, debuggers, operating systems, books, and lectures must change to match the transformation in underlying technology if they are to remain relevant in the 21st century?” David Patterson -- Computer Science Education in the 21st Century Aparece en Communications of the ACM : Documento completo aparece en http://www.inf.udec.cl/~chernand/sc/2007-1/links/p27-patterson.h
  36. 36. Desafío en computación paralela <ul><li>Cómo podemos obtener una aceleración de N en un multiprocesador de N procesadores? </li></ul><ul><ul><li>Software debe ser paralelizable </li></ul></ul><ul><li>Métricas para medir aceleración? </li></ul><ul><ul><li>Latencia: Tiempo para completar una tarea (tambien puede referirse a tiempo de respuesta) </li></ul></ul><ul><ul><li>Throghput (productividad): Razón a la cual tareas son completadas </li></ul></ul>
  37. 37. Un ejemplo de la vida diaria <ul><li>Problema: Producir cachorros </li></ul><ul><li>Se puede paralelizar el problema? </li></ul><ul><ul><li>Latencia : No se puede mejorar </li></ul></ul><ul><ul><ul><li>Cada perrita no puede parir en una semana </li></ul></ul></ul><ul><ul><ul><li>Latencia 2 meses </li></ul></ul></ul><ul><ul><li>Productividad : Si </li></ul></ul><ul><ul><ul><li>10 perritas pueden producir un cachorro por mes </li></ul></ul></ul><ul><ul><ul><li>Productividad : 10/mes </li></ul></ul></ul>
  38. 38. Un ejemplo del área <ul><li>Qué será más importante para una empresa que vende por internet </li></ul><ul><ul><li>Ser capaz de manejar más clientes? </li></ul></ul><ul><ul><li>Hacer que cada transacción se realice más rápido? </li></ul></ul>
  39. 39. Paralelismo en teoría <ul><li>Ley de Amdahl: Predice desempeño total en base a una mejora local. </li></ul><ul><ul><li>En una máquina paralela mejora dada por el número de CPUs </li></ul></ul><ul><ul><ul><li>N : número de procesadores </li></ul></ul></ul><ul><ul><ul><li>F : Factor que no se puede mejorar, en este caso fracción de computación secuencial </li></ul></ul></ul><ul><ul><ul><li>Que significa F = 0 ??? </li></ul></ul></ul>F + (1 - F) / N 1 S =
  40. 40. Ejemplo: Ley de Amdahl Programa ocupa el 70% del tiempo ejecutando código fácilmente paralelizable, y un 30% en código completamente secuencial (no paralelizable). ¿Cúal es la aceleración al ejecutar este programa en un computador paralelo con 2, 3, 4 y 5 CPUs? ¿Cuál es la máxima aceleración posible de alcanzar a través de paralelismo? 3.3 2.3 2.1 1.85 1.54 S inf. 5 4 3 2 N
  41. 41. Evaluación en la práctica <ul><li>Predecir desempeño es difícil porque hay muchas formas de paralelismo </li></ul><ul><ul><li>Múltiple procesadores </li></ul></ul><ul><ul><ul><li>SMP (Symmetric multiprocessors) </li></ul></ul></ul><ul><ul><li>Procesadores multicore </li></ul></ul><ul><ul><li>Procesadores multithreaded </li></ul></ul><ul><ul><li>Clusters </li></ul></ul><ul><li>Ejecución de software permite evaluar experimentalmente </li></ul>
  42. 42. Soporte de la arquitectura para el Sistema Operativo <ul><li>En parte el sistema operativo está sujeto a la arquitectura que lo soporta </li></ul><ul><ul><li>Lista de instrucciones de la CPU (s) </li></ul></ul><ul><ul><li>Controladores como MMU y DMA </li></ul></ul><ul><li>Arquitectura construida para soportar SO </li></ul><ul><ul><li>Reloj </li></ul></ul><ul><ul><li>Intrucción Test and Set (para sincronización atómica) </li></ul></ul><ul><ul><li>Protección de memoria </li></ul></ul><ul><ul><li>Operaciones de control I/O </li></ul></ul><ul><ul><li>Interrupciones y excepciones </li></ul></ul><ul><ul><ul><li>Diferencia entre ellas? </li></ul></ul></ul>
  43. 43. Protección en SO <ul><li>Objetivos </li></ul><ul><ul><li>Evitar que sistema se caiga producto de una aplicación con errores </li></ul></ul><ul><ul><li>Evitar que una aplicación/usuario maliciosa(o) tome el control del sistema (seguridad) </li></ul></ul><ul><ul><li>Proteger datos de usuarios de usuarios y aplicaciones no confiables </li></ul></ul>
  44. 44. Ideas utilizadas en protección <ul><li>Apropiación: entregar a usuarios y aplicaciones lo que puede quitar </li></ul><ul><ul><li>Tiempo CPU (uso de reloj de sistema) </li></ul></ul><ul><li>Interposición: Llevar cuenta de lo que aplicación está usando. En cada acceso verificar acceso es legal </li></ul><ul><ul><li>Estructuras de datos usadas en SO para ello </li></ul></ul><ul><li>Modo protegido/no protegido </li></ul><ul><ul><li>Aplicaciones usuarios ejecutadas en modo no protegido </li></ul></ul><ul><ul><li>SO ejecutadas en modo protegido </li></ul></ul><ul><ul><ul><li>Operaciones de seguridad sólo permitidas en modo protegido </li></ul></ul></ul><ul><ul><li>Como sabe el procesador que una instrucción protegida debe ser ejecutada? </li></ul></ul><ul><ul><ul><li>Arquitectura debe soportar modo kernel y modo usuario </li></ul></ul></ul>
  45. 45. Intrucciones Protegidas <ul><li>Algunas instrucciones son de uso exclusivo del SO </li></ul><ul><ul><li>Directamente accesar dispositivos I/O (discos, tarjetas de red) </li></ul></ul><ul><ul><li>Manipulación de administración de memoria </li></ul></ul><ul><ul><ul><li>punteros a tablas de página, carga a TLBs, etc </li></ul></ul></ul><ul><ul><li>Manipulación de bits de modo </li></ul></ul><ul><ul><ul><li>nivel de interrupción de prioridades </li></ul></ul></ul><ul><li>Cruce de modo usuario a kernel </li></ul><ul><ul><li>Código usuario debe llamar un procedimiento del SO </li></ul></ul><ul><ul><li>SO define una secuencia de llamados a sistema </li></ul></ul>
  46. 46. Arquitectura y SO <ul><li>Frontera entre aplicaciones usuario y sistema (kernel) </li></ul><ul><ul><li>Permite a SO ejecutar instrucciones protegidas </li></ul></ul><ul><ul><li>Aplicaciones entran a modo kernel ejecutando llamadas a sistema </li></ul></ul>
  47. 47. Llamadas a sistema <ul><li>Transición de modo usuario a modo kernel </li></ul><ul><ul><li>Hay una intrucción de llamado a sistema que </li></ul></ul><ul><ul><ul><li>Causa una excepción (a través de una interrupción software) que direcciona a un handler del kernel </li></ul></ul></ul><ul><ul><ul><li>Pasa un parámetro indicando el llamado a sistema que debe invocar </li></ul></ul></ul><ul><ul><ul><li>Guarda el estado del que llama (caller) (registros, bit de modo) para ser restaurados al terminar </li></ul></ul></ul><ul><ul><ul><li>SO verifica los parámetros (punteros) del que llama (caller) </li></ul></ul></ul><ul><ul><ul><li>Debe retornar al modo usuario cuando termine </li></ul></ul></ul>
  48. 48. Ilustración de la transición de modo usuario a kernel Modo usuario Modo kernel Applicación usuario (llamado a sistema req) Llamado a sistema Almacena estado app Manejador llamadas sistema Ejecuta Llamada sistema Restablece estado app, retorna modo usuario continua ejecución
  49. 49. Preguntas <ul><li>Qué pasaría si el SO no salvara el estado de las aplicaciones antes de ejecutar un llamado a sistema? </li></ul><ul><li>Por qué el sistema debe verificar parámetros en los llamados a sistema? </li></ul><ul><li>Qué pasaría si una aplicación de usuario modificara el vector de interrupciones del sistema? </li></ul><ul><li>Cómo el sistema evita que una aplicación lea directamente del disco en lugar de pasar por las verificaciones de control de acceso del sistema de archivos? </li></ul>
  50. 51. Protección de Memoria <ul><li>Problema1. SO debe protejer programas unos de otros. </li></ul><ul><ul><li>Programas de diferentes usuarios. Malintencionados o no. </li></ul></ul><ul><ul><ul><li>Solución: Memoria Virtual, donde cada aplicación tiene su propio espacio de direccionamiento, el cual se mapea a memoria física a medida que la aplicación lo requiera </li></ul></ul></ul><ul><li>Problema2. Kernel debe proteger sus programas y datos </li></ul><ul><ul><li>Solución: Dividir el espacio de direccionamiento en la mitad </li></ul></ul><ul><ul><ul><li>La que corresponde al kernel requiere modo de acceso priviligiado </li></ul></ul></ul><ul><li>TLBs y registro para puntero a tabla de páginas proporcionados por HW </li></ul>
  51. 52. Espacio de direccionamiento en linux
  52. 53. Operación de SO <ul><li>Sistema computacional compuesto por CPU y controladores de dispositivos incluyendo memoria. </li></ul><ul><ul><li>Cada tipo de dispositivo tiene asociado un controlador. </li></ul></ul><ul><ul><li>Controladores funcionan en base a eventos. </li></ul></ul><ul><li>Antes de SO. Programa inicial para empezar (bootstrap program) (en ROM). </li></ul><ul><ul><li>Inicializa todos los aspectos del sistema, Registros de CPU, controladores de dispositivos, contenido de memoria </li></ul></ul><ul><ul><li>Debe cargar SO en memoria para ejecutarlo. </li></ul></ul><ul><li>SO empieza ejecución con algún programa como init (Unix) y luego espera por la ocurrencia de eventos. </li></ul>
  53. 54. Operación de SO <ul><li>Una vez que el kernel esta en ejecución cualquier entrada al kernel ocurre mediante un evento. </li></ul><ul><ul><li>Eventos detienen ejecución actual </li></ul></ul><ul><ul><li>cambia modo a modo kernel. SO llama a manejador de eventos </li></ul></ul><ul><li>Kernel define manejadores para cada tipo de evento </li></ul><ul><ul><li>La arquitectura define los tipos (ejemplos, reloj, interrupciones I/O) </li></ul></ul><ul><ul><li>Cuando el procesador recibe un evento de un tipo </li></ul></ul><ul><ul><ul><li>transfiere el control al manejador de eventos en el SO </li></ul></ul></ul><ul><ul><ul><li>manejador salva estado de proceso actual </li></ul></ul></ul><ul><ul><ul><li>manejador llama a la rutina que atiende evento </li></ul></ul></ul><ul><ul><ul><li>manejador restaura estado del proceso </li></ul></ul></ul>
  54. 55. Interrupciones y Excepciones <ul><li>Eventos en el sistema ocurren a través de interrupciones y excepciones </li></ul><ul><ul><li>Excepciones. Causadas por ejecución de intrucciones de SW </li></ul></ul><ul><ul><ul><li>x86 assembly: instrucción “int” </li></ul></ul></ul><ul><ul><ul><li>falta de página: intento de escribir en una página con permisos de lectura solamente </li></ul></ul></ul><ul><ul><li>Interrupciones. Causadas por dispositivos HW </li></ul></ul><ul><ul><ul><li>reloj (ha pasado el tiempo programado) </li></ul></ul></ul><ul><ul><ul><li>dispositivo termina con I/O (click on mouse, o termino copia de bloque a disco, etc) </li></ul></ul></ul><ul><ul><ul><li>llega un paquete de red </li></ul></ul></ul>
  55. 56. Estructura I/O <ul><li>Secuencia en una operación de I/O </li></ul><ul><ul><li>SO ejecuta intrucciones especiales de I/O o I/O mapeada a memoria </li></ul></ul><ul><ul><li>CPU carga datos en registros de controlador de dispositivo </li></ul></ul><ul><ul><li>Controlador de dispositivo examina datos y determina que acción tomar </li></ul></ul><ul><ul><li>2 posibilidades de acción una vez que empieza I/O </li></ul></ul><ul><ul><ul><li>sincrónica (espera término I/O) </li></ul></ul></ul><ul><ul><ul><li>asincrónica (control transferido a proceso de usuario mientras I/O termina) </li></ul></ul></ul><ul><ul><li>I/O asincrónica (más eficiente uso de recursos) </li></ul></ul><ul><ul><ul><li>dispositivo realiza una operación asincrónica a la CPU </li></ul></ul></ul>
  56. 57. Estructura I/O <ul><li>Dispositivo envía una interrupción a través del bus cuando termina </li></ul><ul><li>En memoria hay una tabla que contiene la lista de direcciones de kernel de rutinas para manejar varios tipos de interrupciones </li></ul><ul><li>CPU se cambia a la dirección indicada por el vector mediante la señal de interrupción </li></ul>
  57. 58. Relojes <ul><li>Como controla el SO que un proceso se acapare la CPU? </li></ul><ul><ul><li>Reloj que genera una interrupción periódicamente </li></ul></ul><ul><ul><li>Antes de ejecutar un proceso, el SO carga el reloj con un tiempo para que luego de expirado se genere una interrupción (quantum) </li></ul></ul><ul><ul><li>Cuando el quantum expira el control es transferido al SO para la ejecución del siguiente proceso (planificación de procesos) </li></ul></ul>
  58. 59. Sincronización <ul><li>Interrupciones pueden ocurrir en cualquier momento </li></ul><ul><ul><li>proceso a ejecutarse puede interferir con proceso que esta siendo ejecutado </li></ul></ul><ul><ul><li>SO debe poder sincronizar procesos concurrentes sanamente </li></ul></ul><ul><li>Sincronización </li></ul><ul><ul><li>debe permitir la ejecución de set de instrucciones que lean-modifiquen-escriban atomicamente (sin ser interrumpida) </li></ul></ul><ul><ul><li>una forma: desabilitando interrumpciones (arquitectura debe soportarlo). No aceptable en un sistema multiprocesador </li></ul></ul><ul><ul><li>otra forma: teniendo una intrucción atómica special que conste de estas tres operaciones (test-and-set) </li></ul></ul>
  59. 60. Preguntas <ul><li>Qué pasaría si el SO no salvara el estado de las aplicaciones antes de ejecutar un llamado a sistema? </li></ul><ul><li>Por qué el sistema debe verificar parámetros en los llamados a sistema? </li></ul><ul><li>Qué pasaría si una aplicación de usuario modificara el vector de interrupciones del sistema? </li></ul><ul><li>Cómo el sistema evita que una aplicación lea directamente del disco en lugar de pasar por las verificaciones de control de acceso del sistema de archivos? </li></ul>

×