TAREA 1.
INTRODUCCIÓN A LOS SISTEMAS OPERATIVOS.
- ¿Cuáles son las principales funciones de un sistema operativo?
R. Las Funciones más importantes son:
Ø Gestiona los recursos del ordenador en sus niveles más bajos.
Ø Dispone de una interfase (elemento que hace posible la fácil comunicación usuario maquina) liberando al usuario del conocimiento del hardware.
Ø "GUI" (Interfase Grafica de Usuario), permitiendo al usuario interactuar con el hardware de una forma sencilla y rápida.
-Sobre el SO funcionan el resto de programas y aplicaciones del software.
2.¿Qué diferencia existe entre un mandato y una llamada al sistema?
R. Un mandato es una orden dirigida al sistema operativo por medio del usuario. En cambio una llamada al sistema es el procedimiento en el cual los programas, apoyados en el sistema operativo, acceden a los recursos que necesitan.
- ¿Cómo se solicita una llamada al sistema operativo?
R. La forma en que se realiza una llamada al sistema consiste en colocar una serie de parámetros en un lugar específico (como los registros del procesador), para después ejecutar una instrucción del lenguaje máquina del procesador denominada trap (en castellano, trampa). La ejecución de esta instrucción máquina hace que el hardware guarde el contador de programa y la palabra de estado del procesador (PSW, Processor Status Word) en un lugar seguro de la memoria, cargándose un nuevo contador de programa y una nueva PSW. Este nuevo contador de programa contiene una dirección de memoria donde reside una parte (un programa) del sistema operativo, el cual se encarga de llevar a cabo el servicio solicitado. Cuando el sistema operativo finaliza el servicio, coloca un código de estado en un registro para indicar si hubo éxito o fracaso, y ejecuta una instrucción return from trap, esta instrucción provoca que el hardware restituya el contador de programa y la PSW del programa que realizó la llamada al sistema, prosiguiéndose así su ejecución.
4. ¿Cómo indica POSIX en un programa C el tipo de error que se ha producido en una llamada al sistema? ¿y Win32?
R. En caso de error: Las llamadas al sistema devuelven -1 ó NULL (si la función devuelve tipo puntero) Deben siempre comprobar después de una llamada si todo es correcto, para ello Linux proporciona una variable errno y una función perror():
5. ¿Cuál de las siguientes técnicas hardware tiene mayor influencia en la construcción de un sistema operativo? Razone su respuesta
A.- Microprogramación del procesador
B.- Cache de la memoria principal
C.- DMA
D.- RISC
6.¿El intérprete de mandatos de UNIX es interno o externo? Razone su respuesta con un ejemplo.
R. El intérprete de mandatos es, sin lugar a duda, el programa Unix por excelencia. A diferencia del resto de utilidades del sistema operativo, las cuales se limitan a una tarea concreta, el intérprete acerca al usuario todas las posibilidades del sistema, convirtiéndose en la interfaz entre el usuario y el nivel de llamadas al sistema, por lo cual pienso que es un interprete de comandos interno. No obstante, será un intérprete perfectamente útil para usuarios sin requerimientos avanzados.
Los intérpretes del sistema Unix se han caracterizado desde sus orígenes por una gran versatilidad y unos sólidos principios de diseño, ofreciendo al usuario un control completo sobre los programas que ejecuta. Este control va desde las simples redirecciones de entrada-salida hasta la posibilidad de realizar sofisticados programas.
7.¿Dónde es más compleja una llamada al sistema, en un sistema operativo monolítico o en uno por capas?
R. En un sistema operativo por capas, ya que la llamada tiene que pasar por muchos mas procedimientos que la simple monolítica.
8.¿Qué tipo de sistema operativo es más fácil de modificar, uno monolítico o uno por capas? ¿Cuál es más eficiente?
R. Debido a la modularidad, los SO de estructura monolítica son más fáciles de cambiar y modificar. Sin embargo, los sistemas operativos por capas son más eficientes, ya que el intérprete de comandos asimila los mandatos, y luego de ellos haber pasado por cada uno de los niveles la orden habrá sido completado.
9. ¿Debe ser un sistema operativo multitarea de tiempo compartido? ¿Y viceversa? Razone su respuesta.
R. En realidad, los sistemas operativos de tiempo compartido o time sharing se caracterizan además de realizar n tareas a la vez, dar servicio a n cantidad de usuarios, por lo cual el SO deberá conmutar los recursos entre los distintos procesos.
Los SO multitareas pueden y deben ser de tiempo compartido, siempre y cuando sean fáciles de entender y operar, seguros y lo suficientemente eficientes como para satisfacer las necesidades de todos los usuarios en el momento.
10-¿Qué ventajas considera que tiene escribir un sistema operativo utilizando un lenguaje de alto nivel?
R. Independientemente de la complejidad del lenguaje, pienso que un SO debe ser escrito en un lenguaje de programación avanzado, ya que las necesidades, las demandas y la diversidad de aplicaciones de de un SO son cada vez mayores, y por tal razón, al momento de programar uno, deben ser aprovechadas las ventajas que ofrece un lenguaje de programación avanzado como por ejemplo una mayor cantidad de funciones, creo también que las plataformas de programación, mientras mas avanzadas sean son mas tolerantes con las tan diversas y siempre cambiantes instrucciones de los programadores y los futuros usuarios.
11-Liste cinco servicios que un sistema operativo presta. Explique cómo cada uno ofrece comodidad a los usuarios, y también en que casos sería imposible que programas en el nivel de usuario proporcionen estos servicios.
R. cinco servicios que presta un sistema operativo son:
- Un Sistema Operativo Distribuido tiene que sincronizar los procesos que se están ejecutando en diferentes computadoras cuando estas tratan de accesar concurrentemente un recurso compartido, por ejemplo: un directorio.
- El recurso compartido debe ser accesado por un proceso a la vez, a esto se le conoce como mutua exclusión.
- Cuando se tiene acceso concurrentemente a un recurso compartido por diversas peticiones no coordinadas de usuarios, estas deben de seriabilizarse para asegurar la integridad del recurso.
- Los procesos deben solicitar recursos locales o remotos y posteriormente liberados en cualquier orden que puede ser no conocido.
- Si la ausencia de asignación de recursos de los procesos no se controla se puede presentar un " Dead Lock " (Candado muerto o recurso bloqueado) que degrade al sistema.