Introducción
En este
cuestionario, se presentará las principales definiciones de un sistema
operativo, las diferencias que existen que pueden existir entre un mandato y
una llamada al sistema, la manera como se solicita una llamada a los diferentes
sistemas operativos, la manera de identificar algunos componentes, las
consideraciones que debemos de tomar a la hora de hacer un sistema operativo.
Los servicios que estos pueden brindar, se puede decir que todas estas ayudan a
tener un sentido más claro de lo que es un sistema operativo.
Cuestionario Nº1
1-¿Cuáles son las principales funciones de
un sistema operativo?
R:. Las
principales funciones de los sistemas operativos son:
¯
Multiacceso
¯
Gestión de Memoria
¯
Secuenciamiento de Trabajos
¯
Control de Procesos
¯
Intérprete de OSCL
¯
Gestión de
Operaciones de Entrada Salida
¯
Gestión de dispositivos y ficheros
¯
Gestión de interrupciones
¯
Control de errores y protección
¯
Contabilidad del sistema
2-¿Qué diferencia existe entre un mandato y una llamada al sistema?
R:. El mecanismo real de comunicación entre los
procesos y el núcleo, el que usan todos los procesos, son las llamadas al
sistema. Un
mandato es un comando que le envías al sistema para que realice una tarea. una
interrupción es una llamada que se le
hace al sistema cuando ocurre una evento
3-¿Cómo se solicita
una llamada al sistema operativo?
R:. Se puede decir que las llamadas al sistema en un
programa de usuario, o son una instrucción
especial o están encubiertas en llamadas a funciones de librería.
A la hora de realizar una
llamada, se tiene que especificar la operación que se desea realizar y es
necesario que se le de los parámetros especiales y pertinentes a esta.
Se puede hacer de tres
formas:
¯
Dejar el valor de dichos parámetros en los registros
del sistema. Puesto que el sistema tiene acceso a los registros puede leerlos
de ahí 11.
¯
Guardar el valor de los parámetros en memoria y meter
en los registros la dirección donde se guardan dichos parámetros.
¯
Utilizar la pila de ejecución del propio Sistema
Operativo, aunque hay máquinas en las que el sistema de protección no permite esto.
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:. La forma de uso de una
llamada al sistema es idéntica a cualquier otra función del lenguaje C. La
mayoría de las llamadas devuelven un valor que suele indicar si la operación se
ha efectuado con éxito o no.
Cuando se produce un error al realizar una llamada al sistema, ésta devuelve el valor
-1. Todo proceso contiene una variable global llamada errno, de manera que cuando
una llamada al sistema termina de forma
satisfactoria, el valor de esta variable permanece inalterado, pero cuando la
llamada falla en errno, se almacena un código de
error.
ERRNO
no da información detallada sobre el error que se ha producido.
Por
otro lado, existe una función, perror(), que
describen los errores que se producen en las llamadas del sistema.
EL API de programación de win32, esta API es
común (con ciertas diferencias mínimas) en todos los sistemas operativos
Windows de 32 bits (Windows 98/NT/2000/XP), e incluye un gran número de
funciones, desde manejo de ficheros y procesos hasta funciones gráficas.
5-¿Cuál de las
siguientes técnicas hardware tiene mayor influencia en la construcción de un
sistema operativo? Razone su respuesta
R:. Las definiciones son:
A.- Microprogramación del procesador:
es un mecanismo, en donde se le especifican todas las funciones que un
procesador pueden hacer
B.- Cache de la memoria principal: Es un tipo de memoria donde se guardan datos que la PC necesita para
trabajar. La memoria principal de la PC (RAM) y la memoria caché son iguales en
muchos aspectos; la diferencia está en el uso que se le da a la caché
C.- DMA: es el controlador el que se encarga directamente de transferir los datos
entre el periférico y la memoria principal, sin requerir intervención alguna
por parte del procesador.
D.- RISC: (reduced instruction
set computer) Computadoras
con un conjunto de instrucciones reducido.
Todas de alguna manera influencian grandemente al sistema operativo,
ya que a la hora de hacer un Sistema operativo hay que tomar en cuenta la
capacidad del procesador, el acceso a memoria y la estructura que tiene un
computador.
6-¿El intérprete de mandatos de UNIX es interno o
externo? Razone su respuesta con un ejemplo
R:. En la
mayoría de las exploraciones en el mundo de UNIX, estará hablando con el
sistema a través del uso de un intérprete de comandos. Un intérprete de comandos es simplemente un
programa que toma la entrada del usuario (p.ej. las
órdenes que teclea) y las traduce a instrucciones.
Cuando se hace una llamada
al sistema operativo se entra en su núcleo, pero hay más programas que no
forman realmente parte del sistema operativo, como linkadores,
compiladores, etc. El intérprete de comandos tampoco pertenece al sistema
operativo pero todos los sistemas operativos están asociados a uno. Cuando un usuario
inicia una sesión, arranca el intérprete de comandos (shell),
que presenta el símbolo ‘>’. Cuando le damos una orden, se crea un proceso
hijo, y al acabar se vuelve al proceso del intérprete de comandos.
La shell
es un intérprete de líneas de comando.
Los comandos tienen la siguiente forma:
cmd opc arg donde:
Cmd: es el nombre del comando (ej: ls)
Opc es la lista de las opciones (ej: -al)
Arg es la lista de los argumentos (ej: /)
7-¿Dónde es más compleja una llamada al sistema, en
un sistema operativo monolítico o en uno por capas?
R:. Las llamadas más complejas se realizan en un sistema operativo en capas, ya que la monolítica usa un parámetro específico como el Syscall. Mientras el encapas se usa un sistema de anillos se tiene que usar en cada uno una apertura, conocida como puerta o trampa, por donde entran las llamadas de capas interior. De manera que estarán mas protegidas las capas internas.
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:. El sistema operativo más fácil
de manejar es uno por capas y a la vez
es más eficiente ya que se dividió el sistema operativo en pequeñas partes que
forman un nivel o capa, de tal forma que cada una de ellas estuviera
perfectamente definida y con un claro interfase con el resto de elementos.
Estas funciones se implementan en módulos, cada uno con sus interfaces y sus
estructuras de datos bien definidas. Luego, los distintos módulos se agrupan en
las distintas capas o niveles.
9-¿Debe ser un sistema operativo multitarea
de tiempo compartido? ¿Y viceversa? Razone su respuesta.
R:. Si debe ser ya que en los
sistemas operativos multitarea de tiempo compartido, cada tarea recibe la
atención del microprocesador durante una fracción de segundo, para poder
mantener el sistema en orden, cada tarea recibe un nivel de prioridad o se
procesa en orden secuencial. Esto le da una ventaja a este tipo de sistema operativo ya que el sentido temporal del usuario es mucho
más lento que la velocidad de procesamiento del ordenador, por lo que las
operaciones de multitareas de tiempo compartido parecen ser simultáneas.
10-¿Qué ventajas considera que tiene
escribir un sistema operativo utilizando un lenguaje de alto nivel?
R:. Unix y la mayor parte de los sistemas q se ejecutan en el, están escrito en lenguaje C y han servido para demostrar que un sistema operativo interactivo no necesariamente es grande y caro, ya sea en equipo o en la cantidad de código, ya que puede utilizarse en minicomputadoras de costo reducido, y el desarrollo inicial de su sistema principal requirió de 2 años hombre. La razón de la creciente popularidad de UNIX reside en que logra combinar facilidad de uso y eficiencia, y en la gran cantidad de ayudas utilerías que tiene para programar. Con UNIX es sencillo obtener comunicación y sincronización entre procesos, lo que en otros sistemas operativos, requiere de programación dedicada y exclusiva en los lenguajes de control lo que incluso en los mas limitados, es virtualmente imposible de lograr.
En general, el sistema UNIX emplea programas especiales (escritos en C) conocidos como manejadores (drivers) para atender a cada familia de los dispositivos de E/S. Los procesos se comunican con los dispositivos mediante llamadas a su manejador. Además, desde el punto de vista de los procesos, los manejadores aparecen como si fueran archivos en los que se lee o escribe, con esto se logra homogeneidad y elegancia en el diseño.
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 un sistema operativo presta son:
1.
Ejecución de programas.
2.
Acceso a dispositivos de E/S.
3.
Acceso controlado a dispositivos.
4.
Accounting o Estadísticas:
¯ Colección de estadísticas
de uso de CPU, rendimiento del sistema.
5.
Detección y respuesta a errores:
¯ Errores de hardware
(ejemplo: error memoria, fallas de dispositivos)
¯ Errores de software
(ejemplo: overflow, fuera de los límites de memoria)