1. ¿Que es un Sistema Operativo?
1.1. Proporcionan a los programadores de aplicaciones (y los programas de aplicaciones) un conjunto abstractos de recursos simples.
1.2. Es el software que controla y administra el hardware en una computadora, así mismo proporciona una base para desarrollo más simple al programador.
1.3. Tareas principales de los Sistemas Operativos:
1.3.1. Llevar registro de que programa esta utilizando que recursos
1.3.2. Otorga las peticiones de recursos
1.3.3. Contabilizar se uso de recursos
1.3.4. Medir las peticiones en conflicto provenientes de distintos programas y usuarios
2. Historia de los Sistemas Operativos
2.1. Primera generación (1945-1955) Tubos al vacio
2.1.1. La programación se realizaba exclusivamente en lenguaje maquina o circuitos eléctronicos mediante la conexión de miles de cables a tableros de conexiones
2.1.2. Leguajes de programación o el concepto de Sistema Operativo eran desconocidos
2.1.3. En esta etapa se hace la introducción de las tarjetas perforadas
2.2. Segunda generación (1955-1965) Transistores y sistemas de procesamiento por lotes
2.2.1. Maquinas conocidas como Mainframes
2.2.2. Sistema de procesamiento por lotes
2.2.3. Las tarjetas de control primitivas fueron las precursoras de los Shells e intérpretes de línea de comandos modernos
2.2.4. En gran parte se programaron en FORTRAN y lenguaje ensamblador
2.3. Tercera generación (1965-1980) circuitos integrados y multiprogramación
2.3.1. IBM introduce la linea de computadoras System/360, las primeras en utilizar circuitos integrados (ICs)
2.3.2. Multiprogramación
2.3.3. Ken Thompson se encontró una pequeña minicomputadora PDP-7, se dipuso a escribir una versión simple de MULTICS para un solo usuario. Más adelante, este trabajo se convirtio en el sistema operativo UNIX
2.3.4. El deseo de una version de producción gratuita de MINIX llevó a un estudiante finlandés, llamado Linus Torvalds a escribir LINUX
2.4. Cuarta generación (1980 a la fecha) las computadoras personales
2.4.1. Circuitos LSI
2.4.2. Intel presentó el microprocesadores 8080 en 1974 (la primera CPU de 8 bits de proposito general)
2.4.3. Gary Kildall pierde trato con IBM, a lo cual Bill Gates ofrece un paquete con DOS/BASIC llamadolo MS-DOS
2.4.4. Interfaz Gráfica de Usuario (GUI), completa con ventanas, iconos, menus y raton. Investigadores de Xerox PARC adaptaron estas ideas y las incorporaron.
2.4.5. Steve Jobs contruye Apple con un GUI. Lisa proyecto fracaso y Apple Macintosh fue un enorme exito por ser muy amigable al usuario
2.4.6. Microsoft produjo un sistema basado en GUI llamado Windows.
3. Tipos de Sistemas Operativos
3.1. Sistemas operativos de mainframe
3.1.1. En el extremo superior están los sistemas operativos para las mainframes, las computadoras del tamaño de un cuarto completo que aún se encuentran en los principales centros de datos corporativos.
3.2. Sistemas operativso de servidores
3.2.1. Se ejecutan en servidores, que son computadoras personales muy grandes, estaciones de trabajo o incluso mainframes.
3.3. Sistemas operativos de multiprocesadores
3.3.1. estos sistemas se conocen como computadoras en paralelo, multicomputadoras o multiprocesadores. Necesitan sistemas operativos especiales, pero a menudo son variaciones de los sistemas operativos de servidores con características especiales para la comunicación, conectividad y consistencia.
3.4. Sistemas operativos de computadoras personales
3.5. Sistemas operativos de computadoras de bolsillo
3.5.1. Una computadora de bolsillo o PDA (Personal Digital Assitant, Asistente personal digital) es una computadora que cabe en los bolsillos y realiza una pequeña variedad de funciones,
3.6. Sistemas operativos integrados
3.6.1. operan en las computadoras que controlan dispositivos que no se consideran generalmente como computadoras, ya que no aceptan software instalado por el usuario.
3.7. Sistemas operativos de nodos sensores
3.7.1. Estos nodos son pequeñas computadoras que se comunican entre sí con una estación base, mediante el uso de comunicación inalámbrica.
3.8. Sistemas operativos en tiempo real
3.8.1. Estos sistemas se caracterizan por tener el tiempo como un parámetro clave.
3.9. Sistemas operativos de tarjetas inteligentes
3.9.1. Los sistemas operativos más pequeños operan en las tarjetas inteligentes, que son dispositivos del tamaño de una tarjeta de crédito que contienen un chip de CPU.
4. Conceptos de los Sistemas Operativos
4.1. Procesos
4.1.1. Un proceso es en esencia un programa en ejecución.
4.2. Espacios de dirección
4.2.1. la administración y protección de la memoria principal de la computadora.
4.3. Archivos
4.3.1. Para proveer un lugar en donde se puedan mantener los archivos, la mayoría de los sistemas operativos tienen el concepto de un directorio como una manera de agrupar archivos.
4.4. Entrada/salida
4.4.1. Todas las computadoras tienen dispositivos físicos para adquirir entrada y producir salida.
4.5. Protección
4.5.1. Las computadoras contienen grandes cantidades de información que los usuarios comúnmente desean proteger y mantener de manera confidencial. Una de ellas es proteger el sistema de los intrusos no deseados, tanto humanos como no humanos (por ejemplo, virus).
4.6. Shell
4.6.1. la interfaz principal entre un usuario sentado en su terminal y el sistema operativo, a menos que el usuario esté usando una interfaz gráfica de usuario.
5. Llamadas al Sistema
5.1. Llamadas al sistema disponibles en la interfaz:
5.1.1. Los sistemas operativos tienen llamadas al sistema para leer archivos
5.1.2. UNIX tiene una llamada al sistema conocida como read con tres parámetros: uno para especificar el archivo, uno para decir en dónde se van a colocar los datos y uno para indicar cuantos bytes se deben leer
5.2. Realizar una llamada al sistema es como realizar un tipo especial de llamada a un procedimiento, sólo que las llamadas al sistema entran al kernel y las llamadas a procedimientos no.
5.3. Llamadas al sistema para la administración de procesos
5.4. Llamadas al sistema para la administración de archivos
5.5. Llamadas al sistema para la administración de directorios
6. Estructura de un Sistema Operativo
6.1. Sistemas monolíticos
6.1.1. En este diseño, que hasta ahora se considera como la organización más común, todo el sistema operativo se ejecuta como un solo programa en modo kernel.
6.1.2. Esta organización sugiere una estructura básica para el sistema operativo:
6.1.2.1. Un programa principal que invoca el procedimiento de servicio solicitado
6.1.2.2. Un conjunto de procedimientos de servicio que llevan a cabo las llamadas al sistema
6.1.2.3. Un conjunto de procedimientos utilitarios que ayudan a los procedimientos de servicio
6.2. Sistemas de capas
6.2.1. Es organizar el sistema operativo como una jerarquía de capas, cada una construida encima de la que tiene abajo
6.2.2. El sistema THE era un sistema simple de procesamiento por lotes para una computadora holandesa, la Electrologica X8, que tenía 32K de palabras de 27 bits
6.2.2.1. El Sistema tenía seis capas:
6.2.2.1.1. El nivel 0 se encargaba de la asignación del procesador, de cambiar entre un proceso y otro cuando ocurrían interrupciones o expiraban los temporizadores.
6.2.2.1.2. La capa 1 se encargaba de la administración de la memoria.
6.2.2.1.3. La capa 2 se encargaba de la comunicación entre cada proceso y la consola del operador (es decir, el usuario).
6.2.2.1.4. La capa 3 se encargaba de administrar los dispositivos de E/S y de guardar en búferes los flujos de información dirigidos para y desde ellos.
6.2.2.1.5. La capa 4 era en donde se encontraban los programas de usuario.
6.2.2.1.6. La capa 5 es donde se encontraba el proceso operador del sistema
6.3. Microkernels
6.3.1. La idea básica detrás del diseño de microkernel es lograr una alta confiabilidad al dividir el sistema operativo en módulos pequeños y bien definidos, sólo uno de los cuales (el microkernel) se ejecuta en modo kernel y el resto se ejecuta como procesos de usuario ordinarios, sin poder relativamente.
6.4. Modelo cliente-servidor
6.4.1. Para obtener un servicio, un proceso cliente construye un mensaje indicando lo que desea y lo envía al servicio apropiado. Después el servicio hace el trabajo y envía de vuelta la respuesta.
6.5. Máquinas virtuales
6.5.1. VM/370
6.5.1.1. Un sistema de tiempo compartido proporciona:
6.5.1.1.1. Multiprogramación
6.5.1.1.2. Una máquina extendida con una interfaz más conveniente que el hardware por sí solo.
6.5.2. La máquina virtual de Java
6.5.2.1. El compilador de Java produce código para la JVM, que a su vez típicamente se ejecuta mediante un software intérprete de JVM.
6.6. Exokernels
6.6.1. Su trabajo es asignar recursos a las máquinas virtuales y después comprobar los intentos de utilizarlos, para asegurar que ninguna máquina trate de usar los recursos de otra.
7. Revisión del hardware de la computadora
7.1. Procesadores: obtiene las instrucciones de la memoria y las ejecuta
7.1.1. Algunos registros especiales que estan visibles para el programador:
7.1.1.1. Contador de programa (Program counter)
7.1.1.2. Apuntador de Pila (Stack pointer)
7.1.1.3. PSW (Program Status Word)
7.1.2. La mayoria de los CPU tienen dos modos
7.1.2.1. Modo Kernel (S.O.)
7.1.2.2. Modo Usuario (Programas de usuario)
7.1.3. Llamada al sistema (system call): procedimiento que tiene la propiedad adicional de cambiar de modo usuario a modo kernel
7.1.4. Multihilamiento o hiperhilamiento: lo que hace es permitir que la CPU contenga el estado de dos hilos de ejecución distintos y luego alterne entre uno y otro con una escala de tiempo en nanosegundos.
7.2. Memoria: segundo componente más importante en cualquier computadora
7.2.1. Una común jerarquía de memoria:
7.2.1.1. Registros
7.2.1.2. Memoria de caché
7.2.1.3. Memoria principal
7.2.1.4. Disco magnetico
7.2.1.5. Cinta magnetica
7.2.2. Tipos de memoria
7.2.2.1. RAM (Random Access Memory, Memoria de Acceso Aleatorio)
7.2.2.2. ROM (Read Only Memory, Memoria de sólo lectura)
7.2.2.3. EEPROM (Electrically Erasable PROM, PROM eléctricamente borrable)
7.2.2.4. Flash
7.2.2.5. CMOS
7.3. Discos: Un disco consiste en uno o más platos que giran. Un brazo mecánico, con un punto de giro colocado en una esquina, se mueve sobre los platos de manera similar al brazo de la aguja en un viejo tocadiscos.
7.4. Cintas: La última capa de la jerarquía en la memoria es la cinta magnética. Este medio se utiliza con frecuencia como respaldo para el almacenamiento en disco y para contener conjuntos de datos muy extensos.
7.5. Dispositivos E/S: Estos también deben de interactuar mucho con el Sistema Operativo.
7.6. Bus
7.6.1. ISA (Industry Standard Architecture, Arquitectura estándar de la industria)
7.6.2. PCI (Peripheral Component Interconnect, Interconexión de componentes periféricos)
7.6.2.1. Las nuevas computadoras están saliendo al mercado con una versión actualizad del bus PCI, conocida como PCI Express.
7.6.3. IDE sirve para conectar dispositivos periféricos tales como discos y CD-ROM al sistema.
7.6.4. USB (Universal Serial Bus; Bus serial universal) se inventó para conectar a la computadora todos los dispositivos de E/S lentos, como el teclado y el ratón.
7.6.5. SCSI (Small Computer System Interface, Interfaz para sistemas de cómputo pequeños) es un bus de alto rendimiento, diseñado para discos, escáneres y otros dispositivos veloces que necesitan de un ancho de banda considerable.
7.6.6. IEEE 1394 es un bus de bits enserie, pero está diseñado para transferencias empaquetadas de hasta 100 MB/seg., lo que lo hace conveniente para conectar a una computadora cámaras de video digitales y dispositivos multimedia similares.
7.7. Arranque de la computadora
7.7.1. BIOS (Basic Input Output System, Sistema básico de entrada y salida) contiene software de E/S de bajo nivel, incluyendo procedimientos para leer el teclado, escribir en la pantalla y realizar operaciones de E/S de disco, entre otras cosas.
7.7.2. Primero hace pruebas para ver cuánta RAM hay instalada y si el teclado junto con otros dispositivos básicos están instalados y responden en forma correcta.