02.- unidad 1 sistemas operativos
DESCRIPTION
Información de la unidad 1TRANSCRIPT
Unidad 1
Introducción a los Sistemas Operativos
Encuadre de Unidad
PresentaciónObjetivos
ExpectativasCriterios de Evaluación
Un sistema operativo explota los recursos
hardware de uno o más procesadores para proporcionar un conjunto de servicios a los usuarios del sistema. El sistema operativo también gestiona la memoria secundaria y los dispositivos de E/S (entrada/salida) para sus usuarios. Por tanto, es importante tener algunos conocimientos del hardware subyacente antes de iniciar el estudio de los sistemas operativos.
Presentación
Un sistema operativo hace de intermediario
entre, por un lado, los programas de aplicación, las herramientas y los usuarios, y, por otro, el hardware de una computadora. Para apreciar cómo funciona el sistema operativo y los aspectos de diseño involucrados, se debe tener algún conocimiento de la organización y la arquitectura de las computadoras.
Introducción
Describir la organización básica de sistemas
de computadoras. Proveer una visión global a la estructura de los
sistemas operativos. Ofrecer una visión de conjunto a los diferentes
tipos de ambientes de cómputo. Explorar sistemas operativos propietarios
como de fuente abierta.
Objetivos
Identificar los componentes de los sistemas
operativos, así como el objetivo, la función y las características de diferentes sistemas operativos.
Competencia específica
Que el alumno tenga una visión global de la
arquitectura de las computadoras y el papel que desempeña el Sistema Operativo como administrador de recursos.
Que el alumno comprenda la importancia del estudio de los Sistemas Operativos en el contexto de su carrera.
Que el alumno comprenda la importancia de conocer el software y hardware subyacente a los programas de aplicación.
Expectativas
Actividad % Fech
aEntrega
Asistencia 5%
Investigación.- “Evolución de los S.O.” 15% 20/02 23/02
Investigación.- “Componentes de un S.O.” 15% 25/02 27/02
Práctica No. 1.- “Módulos del Kernel” 25% 27/02 02/03
Avance de Proyecto Integrador 40% 04/03 06/03
Criterios de evaluación
Contenido Temático
1.1 Definición y concepto.1.2 Funciones y características.1.3 Evolución histórica.1.4 Clasificación.1.5 Estructura: niveles o estratos de diseño.1.6 Núcleo.
Definición y concepto
Software – hardware. Es un programa que actúa como intermediario
entre el usuario de una computadora y el hardware subyacente.
Objetivos de un sistema operativo: Ejecutar programar de usuario y facilitar la
resolución de problemas. Establecer un uso conveniente de la computadora. Utilizar el hardware de computadora de una
manera eficiente.
¿Qué es un S.O.?
Un sistema operativo es un programa que controla la
ejecución de aplicaciones y programas y que actúa como interfaz entre las aplicaciones y el hardware de las computadoras. Se puede considerar que un sistema operativo tiene los siguientes tres objetivos: Facilidad de uso. Un sistema operativo facilita el uso de las
computadoras. Eficiencia. Un sistema operativo permite que los recursos de
un sistema de cómputo se puedan utilizar de una manera eficiente.
Capacidad para evolucionar. Un sistema operativo se debe construir de tal forma que se puedan desarrollar, probar e introducir nuevas funciones en el sistema sin interferir con su servicio.
Objetivos
El S.O. como interfaz de usuario/computador
El hardware y software utilizados para proporcionar aplicaciones a los usuarios se pueden ver de forma jerárquica o en capas:
Edite, compile y ejecute el siguiente programa#include <stdio.h>int main() {
printf(“Hello World!\n”);return 0;
}
Minipráctica
El usuario final no se preocupa por los detalles
del hardware subyacente. El usuario final observa un sistema de
cómputo en términos de un conjunto de aplicaciones.
Si un programador tuviera que desarrollar una aplicación considerando todos los aspectos del hardware subyacente, el desarrollo de aplicaciones requeriría de un esfuerzo enorme y sería una labor extremadamente compleja.
Interfaz de Usuario/Computador
Desarrollo de programas.- El sistema
operativo proporciona una variedad de utilidades y servicios, tales como editores y depuradores, para asistir al programador en la creación de los programas de aplicación.
Ejecución de programas.- El sistema operativo proporciona a los programas de aplicación un entorno controlado de acceso a los recursos del procesador, memoria y dispositivos de E/S para la ejecución de sus instrucciones.
Servicios que proporciona un S.O.
Acceso a dispositivos de E/S.- Cada dispositivo de E/S
requiere un conjunto de instrucciones específicos de acuerdo a sus características técnicas. El sistema operativo proporciona una interfaz uniforme que esconde esos detalles de forma que los programadores puedan acceder a dichos dispositivos utilizando librerías estandarizadas de lectura y escritura independientes del hardware subyacente de cada dispositivo.
Acceso controlado a los archivos.- Para el acceso a los archivos, el sistema operativo debe reflejar una comprensión detallada no sólo de la naturaleza del dispositivo de E/S (disco, cinta), sino también de la estructura de los datos contenidos en los archivos del sistema.
Servicios
Acceso al sistema.- Para sistemas compartidos o públicos,
el sistema operativo controla el acceso al sistema completo y a recursos del sistema específicos. La función de acceso debe proporcionar protección a los recursos y a los datos, evitando el uso no autorizado de los usuarios y resolviendo conflictos en el caso de conflicto de recursos.
Detección y respuesta a errores.- Se pueden dar gran variedad de errores durante la ejecución de un sistema de computación. Éstos incluyen errores de hardware internos y externos, tales como un error de memoria o un fallo en un dispositivo; en cada caso, el sistema operativo debe proporcionar una respuesta que elimine la condición de error, suponiendo el menor impacto en las aplicaciones que están en ejecución.
Servicios
El S.O. como gestor de recursos
Un sistema de cómputo representa un conjunto de recursos que se utilizan para el transporte, almacenamiento y procesamiento de la información, así como para llevar a cabo el control de estas funciones.
El sistema operativo se encarga de gestionar estos recursos.
Editar, compilar y ejecutar el programa siguiente#include <stdio.h>int main() {
printf(“Hola Mundo!\n”);fprintf(stderr, “Este es un mensaje de
error\n”);fprintf(stdout, “Hola de nuevo!\n”);return 0;
} Redirigir los flujos de salida estándar y error en la
consola.
Minipráctica
Procesamiento en Serie.- Con los primeros
computadores, desde finales de los años 40 hasta mediados de los 50, el programador interaccionaba directamente con el hardware de las computadoras; no existía ningún sistema operativo. Los programas en código máquina se cargaban a través del dispositivo de entradas (lectores de tarjetas). Si un error provocaba la parada del programa, se encendían avisos para indicar la condición de error. El programador podía entonces examinar los registros del procesador y la memoria principal para determinar la causa del error.
El S.O. como evolución del hardware
Planificación.- La mayoría de las instalaciones utilizaban una plantilla
impresa para reservar tiempo de máquina. Típicamente, un usuario podía solicitar un bloque de tiempo en múltiplos de media hora aproximadamente. Un usuario podía obtener una hora y terminar en 45 minutos; esto implicaba malgastar tiempo de procesamiento del procesador. Por otro lado, el usuario podía tener problemas, si no finalizaba en el tiempo asignado y era forzado a terminar antes de resolver su problema.
Tiempo de configuración.- Un único programa, denominado trabajo, podía implicar la carga en memoria del compilador y del programa en lenguaje de alto nivel (programa en código fuente) y a continuación la carga y el enlace del programa objeto y las funciones comunes. Cada uno de estos pasos podían suponer montar y desmontar cintas o configurar tarjetas. Si ocurría un error, el usuario normalmente tenía que volver al comienzo de la secuencia de configuración. Por tanto, se utilizaba una cantidad considerable de tiempo en configurar el programa que se iba a ejecutar.
Problemas principales
Los primeros sistemas de cómputo eran muy costosos, y por tanto,
era importante maximizar su utilización. El tiempo malgastado en la planificación y configuración de los trabajos era inaceptable.
Para mejorar su utilización, se desarrolló el concepto de sistema operativo en lotes.
La idea central bajo el esquema de procesamiento en lotes sencillo es el uso de una pieza de software denominada monitor. Con este tipo de sistema operativo, el usuario no tiene que acceder directamente a la máquina. En su lugar, el usuario envía un trabajo a través de una tarjeta o cinta al operador del sistema, que crea un sistema por lotes con todos los trabajos enviados y coloca la secuencia de trabajos en el dispositivo de entrada, para que lo utilice el monitor. Cuando un programa fnaliza su procesamiento, devuelve el control al monitor, punto en el cual dicho monitor comienza la carga del programa siguiente.
Sistemas en Lotes sencillos
Estructura del procesamiento
El monitor es un programa residente que controla los recursos del sistema de cómputo.
Al finalizar cada programa de usuario, el monitor toma el control del procesador y ejecuta el siguiente programa de usuario, optimizando así el uso de los recursos del sistema.
Sistemas en Lotes multiprogramados
Aun con los sistemas por lotes, se encontró que el tiempo de uso de un procesador se desperdiciaba dado que las operaciones de E/S son muy lentas comparadas con la velocidad del procesador del sistema.
Supóngase que hay espacio para el sistema
operativo y dos programas de usuario. Cuando un trabajo necesita esperar por la E/S, se puede asignar el procesador al otro trabajo, que probablemente no esté esperando por una operación de E/S.
Multiprogramación
Multiprogramación
Editar, compilar y ejecutar el programa siguiente:#include <stdio.h>int main() {
int x,y;printf(“Escribe dos números:\n”);scanf(“%d %d”, &x, &y);printf(“Los dos números son: (%d,%d)\n”, x, y);return 0;
} Modificar el código para imprimir en pantalla la suma de
los dos números.
Minipráctica
Funciones y características
Un sistema de computadora puede ser dividido en cuatro
componentes: Hardware: provee recursos básicos de computación.
CPU, memoria, dispositivos de E/S. Sistema Operativo: controla y coordina el uso del hardware
entre programas de aplicación y usuarios. Programas de aplicación: define los mecanismos por los
cuáles los recursos del sistema son usados para resolver los problemas de cómputo de los usuarios. Procesadores de texto, compiladores, navegadores de la red,
sistemas de bases de datos, juegos de video. Usuarios.
Personas, dispositivos, otras computadoras.
Estructura de un S.C.
Editar, compilar y ejecutar el siguiente código#include <stdio.h>int main(int argc, char* argv[]) {
printf(“Hola %s\n”, argv[1]);return 0;
} Modificar el código para imprimir dos
argumentos de línea de comandos.
Minipráctica
Funciones
Un sistema operativo provee un ambiente en el cual otros
programas pueden trabajar. Desde el punto de vista de los usuarios, los S.O. cumplen
diferentes funciones: Monousuario (PC)
Facilidad de uso Mainframe (Terminal)
Uso eficiente de los recursos Estaciones de trabajo
Compromiso entre la facilidad de uso y el uso eficiente de los recursos (compartición de recursos)
Dispositivos móviles Facilidad de uso Uso eficiente de los recursos
Desde el punto de vista del usuario
Es el programa directamente involucrado con el
manejo del hardware. Administrador de recursos:
Tiempo de CPU Espacio de Memoria Administración de archivos Administración de dispositivos de E/S
Controlador de recursos Administra de manera eficiente y equitativa los
recursos de cómputo para asegurar que ningún programa se exceda en el uso de los mismos.
Desde el punto de vista del sistema
Editar, compilar y ejecutar el programa siguiente:
#include <stdio.h>int main() {
while (1);return 0;
} A continuación, obtener el identificador de
proceso con la instrucción: ps aux Obtenido el identificador de proceso, eliminarlo
con la instrucción: kill <id>
Mini práctica
Características
Un sistema de cómputo de propósito general
típicamente consiste en uno o más CPUs y una serie de controladores de dispositivos conectados a través de una interfaz común (bus) que provee acceso a la memoria compartida:
Características
Al encender un sistema de cómputo, se requiere un
programa inicial “bootstrap” Este programa inicializa los componentes básicos de la
computadora (registro de CPU, contenido de memoria, controladores de dispositivos)
Posteriormente ubica el núcleo del sistema operativo y lo ejecuta.
El núcleo a su vez, inicializa los servicios del sistema cargandolos (procesos del sistema, demonios de sistema)
Una vez que el sistema operativo y los servicios son cargados, el S.O. queda a la espera de interrupciones de hardware para interactuar con el sistema de cómputo.
Secuencia de inicio
Evolución histórica
La primera computadora digital fue diseñada
por el matemático inglés Charles Babbage (1792-1871).
La “máquina analítica” nunca logró funcionar. El diseño de ésta máquina prevía la necesidad
de uso de software, por lo que Babbage contrató a Ada Lovelace.
El lenguaje de programación Ada lleva su nombre en honor por ser la primera programadora del mundo.
Preludio
A finales de la Segunda Guerra Mundial se requirió la
necesidad de máquinas analíticas que resolvieran con gran precisión y rapidez problemas de balística.
1944 – Colossus, Bletchey Park. Mark I, Harvard. ENIAC, Pennsylvania. En estos primeros días, un solo grupo de personas diseñaban,
construían, programaban, operaban y daban mantenimiento a cada máquina.
Toda la programación se realizaba exclusivamente en lenguaje máquina.
Cálculos numéricos. Tarjetas perforadas.
Primera generación (1945-1955): tubos al vacío
La introducción del transistor a mediados de la
década de 1950 cambió radicalmente el panorama. Los transistores eran mas confiables que los bulbos
de vacío. Mainframes. Lenguaje de programación FORTRAN (cálculos
numéricos) ó ensamblador. Tarjetas perforadas. Operadores que cargaban los programas utilizando
conjuntos de tarjetas perforadas.
Segunda generación (1955-1965): transistores
Se recolectaban lotes de trabajo (tarjetas) en
cintas magnéticas y la cinta magnética se llevaba para su ejecución.
Mejor eficiencia en el uso de mainframes. Aplicaciones para resolver ecuaciones
diferenciales parciales.
Sistemas de procesamiento por lotes
Unificación de arquitecturas de hardware para
la compatibilidad en la ejecución de programas.
Aparición de circuitos integrados. La unificación de arquitecturas obligó a pensar
a un Sistema Operativo como un administrador de recursos que pudiera adaptarse de manera flexible a los requerimientos y características (a menudo muy diferentes) de hardware.
Multiprogramación.
Tercera generación (1965-1980): circuitos integrados
Microcomputadoras CP/M (Control Program for Microcomputers) MS-DOS Interfaz Gráfica de Usuario Apple Macintosh. Windows.
Cuarta generación (1980-): computadoras personales
Clasificación
Sistemas operativos de mainframe
Computadoras de gran capacidad orientadas hacia procesamiento de muchos datos.
Por ende, tienen capacidades muy específicas para E/S.
Los sistemas operativos para mainframes están orientados hacia el procesamiento de muchos trabajos a la vez, de los cuales la mayor parte requiere de muchas operaciones de E/S. Procesamiento por lotes. Procesamiento de
transacciones. Tiempo compartido.
Sistemas operativos de servidores
Computadoras con capacidades muy específicas de E/S y procesamiento compartido.
Servicios a redes (servidor web, bases de datos, servidores de impresión, etc).
Multiprocesamiento y administración eficiente de recursos.
Sistemas operativos de computadoras personales
Monousuario (o multiusuario pero sin ejecución simultánea)
Soporte para aplicaciones de escritorio.
Eficiencia de recursos.
Multitarea
Sistemas operativos para dispositivos móviles.
PDA’s: Palm Desktop, Palm OS.
Sistemas operativos para dispositivos móviles: Tablets. Teléfonos celulares.
Android. Os X Windows mobile/CE
Sistemas operativos integrados
Sistemas operativos para dispositivos limitados y muy específicos en su funcionamiento.
Electrodomésticos.
Sistemas operativos en tiempo real.
Especificaciones de tiempo muy precisas.
Control de procesos industriales.
Estructura
Monolíticos
No hay separación precisa de las funcionalidades a cubrir por el Sistema Operativo respecto a las operaciones de los programas de aplicación.
Por capas
Cada capa del S.O. se encarga de una operación específica y se diseña de acuerdo a su operatividad con el hardware subyacente.
Esta abstracción permite un mejor diseño e implementación de la arquitectura del S.O.
Funciones del núcleo diseminadas a lo largo
de pequeños módulos denominados “microkernels”
Microkernels
En la interfaz de línea de comandos, utilizar la función syslog
para enviar mensajes de error a la bitácora del sistema.#include <stdio.h>#include <syslog.h>int main() {
printf(“Enviando mensajes de logging\n”);openlog(“Syslogging”, LOG_PID | LOG_CONS,
LOG_USER);syslog(LOG_INFO, “Mensaje de usuario %d\n”, 5);closelog();
return 0;}
Minipráctica
En la interfaz del S.O. virtual, identificar los
diferentes compontes que arroja el comando siguiente: dmesg
Minipráctica
Núcleo