Sistemas operativos

Anuncio
Sistemas
operativos
Dolors Royo Vallés
P01/79008/00052
 FUOC • P01/79008/00052
Índice
Introducción............................................................................................... 5
Objetivos ...................................................................................................... 6
1. Definición de sistema operativo ...................................................... 7
2. Visión histórica..................................................................................... 9
2.1. Los primeros sistemas computadores (la primera generación) ......... 9
2.2. La segunda generación ...................................................................... 10
2.3. La tercera generación......................................................................... 12
2.4. De la cuarta generación hasta ahora ................................................. 15
2.5. Tabla resumen ................................................................................... 16
3. Los servicios que ofrece el sistema operativo ............................... 17
3.1. Las llamadas al sistema ...................................................................... 17
3.2. El intérprete de comandos................................................................. 17
Resumen....................................................................................................... 18
Actividades.................................................................................................. 19
Glosario ........................................................................................................ 19
Bibliografía................................................................................................. 20
Sistemas operativos
 FUOC • P01/79008/00052
5
Sistemas operativos
Introducción
Un sistema computador está formado por los siguientes elementos:
• El hardware, que se refiere a la máquina física.
• El software, que se refiere al conjunto de programas que se ejecutan y que
permiten sacar provecho de las prestaciones que ofrece el sistema.
Sin software, el computador es prácticamente un objeto sin ninguna utilidad. El
software permite almacenar información, procesarla y recuperarla. En general,
también permite realizar una serie de actividades muy diversas que justifican la
inversión económica en el sistema computador.
Actualmente, un sistema computador es un sistema complejo que consta de
uno o más procesadores, memoria, reloj, terminales, discos, impresoras, módems, etc. Los dispositivos que contiene son de varios tipos* y tienen un funcionamiento muy variado**. Además, en general hay más de un usuario que
* Magnético, mecánico, láser, etc.
** Compartición, control de errores,
operaciones necesarias para utilizar
el dispositivo, etc.
utiliza a la vez el sistema. Así, si un usuario quiere utilizar el sistema de forma
eficiente y con cierta protección de su información respecto al resto de usuarios, difícilmente lo podrá conseguir sin ningún tipo de ayuda. Es evidente que
tiene que haber alguna forma de conseguir que los usuarios puedan acceder al
sistema sin tener en cuenta la complejidad del hardware.
El problema se ha resuelto poniendo por encima del hardware una capa de
software para gestionar las distintas partes del sistema computador de forma
eficiente y, a la vez, presentar al usuario una máquina virtual mucho más sencilla de comprender y utilizar. Esta capa de software es el llamado software de
sistema, cuya parte más importante es el sistema operativo (SO)*.
En este módulo didáctico nos centramos en la descripción de sistemas monoprocesadores y no tenemos en cuenta en ningún momento los sistemas multiprocesadores.
* Utilizaremos las siglas SO como
abreviatura de sistema operativo.
 FUOC • P01/79008/00052
6
Objetivos
Los objetivos que el estudiante podrá alcanzar son los siguientes:
1. Tener una visión lo más clara posible de lo que es un sistema operativo. A
causa de la complejidad del concepto, formulamos la definición a partir de
la descripción de las funciones que cumple el sistema operativo dentro del
sistema computador, y a partir del proceso evolutivo que han experimentado los sistemas operativos a lo largo de la historia, desde los primeros
computadores hasta nuestros días.
2. Comprender la visión externa del sistema operativo: desde el punto de vista del usuario que utiliza el sistema para consultar, modificar, crear, destruir y almacenar información, y desde el punto de vista del usuario como
programador.
Sistemas operativos
 FUOC • P01/79008/00052
7
Sistemas operativos
1. Definición de sistema operativo
En la figura siguiente se muestra un esquema general del sistema computador:
Figura 1
La capa inferior corresponde al hardware del computador. Por encima de ésta
encontramos el sistema operativo. Es muy difícil dar una definición exacta y
precisa del término sistema operativo; generalmente se define a partir de las
funciones que desarrolla. Básicamente son las dos funciones que presentamos
a continuación:
1) Gestión eficiente de los recursos del sistema
El SO controla el acceso eficiente a los recursos del computador: la memoria
principal, el tiempo de la unidad central del proceso (UCP) y los dispositivos.
Es decir, el SO se encarga principalmente de trabajos de protección y de utilización eficiente del sistema.
En general, en un sistema computador tenemos muchos programas que se ejecutan al mismo tiempo. Son programas que pueden pertenecer a uno o a varios usuarios, los cuales compiten por los diferentes recursos del sistema. El
sistema operativo reparte el tiempo de UCP entre los diferentes programas y
consigue una ejecución concurrente, protege el acceso a la memoria* y coordina el acceso a los dispositivos compartidos (discos, memoria) y a lo no compartidos (impresora).
2) Presentación a los usuarios de una máquina virtual mucho más sencilla de utilizar
El sistema operativo proporciona un entorno de trabajo al usuario y a los programas de aplicación que permite utilizar el computador (ejecutar programas)
* El SO protege el acceso a memoria
entre diferentes usuarios y entre
usuarios y el mismo SO.
 FUOC • P01/79008/00052
8
de forma más fácil e intuitiva. Desde este punto de vista, el sistema operativo
proporciona al usuario una máquina virtual mucho más fácil de entender y
utilizar por el hecho de que oculta la complejidad del hardware.
Lectura de un fichero
Por ejemplo, si no existiera el sistema operativo en el momento de leer un fichero, el usuario
necesitaría comprender y ocuparse de los detalles técnicos del disco: poner en funcionamiento el motor, recalibrar los cabezales, posicionarlos (la pista, la cara, el sector), leer y apagar el
motor. El sistema operativo nos permite hacer esta lectura de datos de un fichero con una
operación mucho más sencilla e intuitiva: con la operación read (nombre_fichero, pos,
reg) se indica que se quiere leer del fichero nombre_fichero, el registro reg, que está en
la posición pos.
Por encima del núcleo del sistema operativo tenemos el software de sistema, que
consta del intérprete de comandos (shell), compiladores, editores y, en general,
programas que facilitan la comunicación entre el sistema operativo y el usuario.
Finalmente, por encima del software de sistema tenemos el software de aplicación. Una parte de este software la utiliza el usuario sobre todo para resolver problemas específicos. En este nivel encontramos hojas de cálculo, procesadores de
texto, juegos de vídeo, etc.
Sistemas operativos
9
 FUOC • P01/79008/00052
Sistemas operativos
2. Visión histórica
Para entender bien qué es un sistema operativo y para qué sirve, es importante
analizar con detalle su evolución. A continuación explicamos cómo han ido evolucionando los sistemas operativos desde las versiones más primitivas (monitores
residentes y sistemas operativos por lotes), pasando por los sistemas operativos
multiprogramados y con tiempo compartido, hasta los sistemas operativos distribuidos y los sistemas operativos en red.
No es fácil separar el desarrollo de la arquitectura de los computadores de la evolución de los sistemas operativos, esencialmente porque los sistemas operativos
han evolucionado en función de los cambios tecnológicos intentando sacar el
mayor provecho de las nuevas tecnologías. Éstas, a sus vez, han dado soluciones
a muchos problemas que han ido surgiendo en los sistemas operativos.
2.1. Los primeros sistemas computadores (la primera generación)
Al principio sólo estaba el hardware del computador. La tecnología utilizada en
la construcción de los primeros computadores eran las válvulas de vacío, que
obligaban a fabricar unos aparatos monstruosamente grandes.
El ENIAC,…
… Electronic Numerical Integrator and
Computer (computador e integrador
numérico electrónico), pesaba aproximadamente 30 toneladas, ocupaba
150 m2 y tenía una potencia
de 150 kilovatios.
Estos primeros computadores se utilizaban para efectuar cálculos matemáticos
en cuestiones militares. Por ejemplo, para calcular trayectorias balísticas y tablas de senos y cosenos. La velocidad de
operación se medía en milisegundos.
Los dispositivos que había eran cintas de papel y tarjetas perforadas. El programa se escribía en lenguaje máquina, se cargaba
manualmente en la memoria y se ejecutaba. El resultado se almacenaba en cinta de papel o en tarjetas perforadas.
Modelo de tarjeta perforada.
10
 FUOC • P01/79008/00052
Sistemas operativos
En esta primera época se consideraba que no había sistema operativo y que el
usuario interaccionaba directamente con el computador. Evidentemente, la
programación de la máquina era muy poco productiva tanto para el usuario
como para el hardware. El proceso de introducción de programas, que era largo
y complicado, hacía inviable la ejecución de programas medianos o grandes
en este entorno.
2.2. La segunda generación
La aparición del transistor en la década de 1950 permitió construir computadores mucho menores y mucho más fiables, de modo que ya se podían fabricar
con la idea de venderlos. Eran máquinas muy caras y sólo estaban al alcance
de grandes corporaciones, instituciones como el ejército, universidades y gobiernos. La velocidad de las operaciones se calculaba en microsegundos.
Paralelamente, constatamos los siguientes sucesos:
Primer transistor de puntas de contacto (1958).
a) Aparecen nuevos dispositivos de entrada/salida: los lectores de tarjetas
perforadas y las impresoras.
Las tarjetas y las cintas
perforadas…
… se utilizaban para programar los computadores y para recibir los resultados de sus cálculos mediante máquinas lectoras-perforadoras
de tarjetas.
b) También se inventan nuevos dispositivos de almacenamiento: las unidades de disco y las cintas magnéticas.
c) Se desarrolla el primer software, que incluye ensambladores, lenguajes de
programación*, cargadores, montadores, librerías de funciones matemáticas y
rutinas estándar de entrada/salida de los diferentes dispositivos que pueden
utilizar los programas**.
Con este nuevo entorno se mejora considerablemente el proceso de programación y ejecución de programas respecto de la etapa inicial. En esta etapa, el
proceso tiene lugar siguiendo los pasos que exponemos a continuación:
* Algol, Cobol, Fortran
** Impresoras, monitores y tarjetas
perforadas.
 FUOC • P01/79008/00052
11
Sistemas operativos
1) Los programas se escriben en lenguajes ensambladores o de alto nivel; una
vez creados se denominan código fuente.
2) Los programas se traducen de forma automática mediante los compiladores/traductores a lenguaje máquina:
• Si hay errores de sintaxis se tiene que repetir el proceso desde el principio.
• Si no hay errores sintácticos, el código objeto producido a partir del código
fuente por el programa traductor/compilador se puede cargar en memoria
y ejecutar.
3) Otro programa, el cargador, automatiza el proceso de cargar el programa
en la memoria para ejecutarlo.
4) Después de transferir el control al programa cargado por medios manuales
o automáticos, empieza la ejecución del programa.
Una vez cargado en la memoria, el programa se puede reejecutar con diferentes datos, y los resultados se sacan por la impresora o en cinta de papel. Si se
detectan errores en tiempo de ejecución, es posible determinar dónde se han
producido haciendo un volcado de la memoria y de los registros del computador o bien utilizando el programa depurador.
En este sistema, las rutinas de entrada/salida, junto con el programa cargador, se
pueden considerar una primera versión muy rudimentaria del sistema operativo.
Los traductores de lenguaje de alto nivel, los editores y los depuradores son programas del sistema que se incluyen en los diferentes servicios que ofrece el sistema operativo, pero generalmente se considera que no forman parte del mismo.
Pese a todas estas mejoras, el modo de operación continuaba siendo poco eficaz a causa de las distintas operaciones manuales que convenía efectuar, que
comportaban una utilización baja de los recursos del sistema. Puesto que el
coste económico del sistema computador era elevado, no es extraño que se
buscasen formas de aprovechar el tiempo perdido y aumentar la utilización de
los recursos del sistema para eliminar los tiempos muertos generados por las
operaciones manuales.
El primer objetivo fue autorizar al máximo todas las operaciones mediante el
uso de hardware. Sin embargo, pese a la automatización de estas operaciones y
a la mejora de los dispositivos*, la velocidad de las operaciones de entrada/salida de datos continuaba siendo demasiado lenta en comparación con la velocidad del procesador y la de la memoria.
Puesto que no era posible reducir el coste temporal de las operaciones de entrada/salida, se intentó al menos efectuarlas el mínimo número posible de veces. La idea era agrupar los trabajos de forma que las operaciones auxiliares
sólo se hiciesen una vez por todos los trabajos del grupo. Este sistema se denomina sistema por lotes (sistema batch).
* Utilización de cintas en lugar
de tarjetas perforadas.
 FUOC • P01/79008/00052
12
Sistemas operativos
Un ejemplo de su funcionamiento sería el siguiente: agrupando en un lote todos
los programas escritos en lenguaje de alto nivel Fortran, sólo se tiene que cargar
una vez el compilador de Fortran, y los trabajos que se realizan dentro del lote se
pueden procesar uno detrás de otro con un secuenciamiento automático. Para
que sea posible este secuenciamiento automático, se tiene que poder indicar al sistema operativo al menos cuándo empieza y cuándo finaliza un programa dentro
del lote. En este punto, conviene introducir el concepto de lenguaje de control
de trabajos (JCL)*. Con este lenguaje se podía indicar al sistema operativo el inicio y la finalización de un trabajo, dar órdenes de carga y ejecución y solicitar cier-
* Las siglas JCL provienen de la
abreviatura de la expresión inglesa
Job Control Language.
tos recursos del computador (tiempo de UCP, cantidad de memoria, etc.)
Pese a esta automatización, la UCP continuaba parada durante mucho tiempo.
El problema principal era la diferencia de velocidades entre la UCP y los dispositivos: las UCP en este período eran lentas, pero los lectores de tarjetas todavía
lo eran más. Por tanto, la UCP estaba mucho tiempo parada esperando que finalizase una operación de entrada/salida. Para intentar reducir al máximo estas
diferentes velocidades de trabajo, apareció el trabajo fuera de línea (off-line).
Con este sistema se intentaban encabalgar las operaciones de entrada/salida con
la ejecución de programas. Mientras los programas escritos en tarjetas se leían y
se pasaban a cinta en una máquina, en otra máquina se podían ir ejecutando
otros programas que ya se habían cargado anteriormente en otra unidad de cinta.
Posteriormente se idearon otras técnicas de solapamiento como el almacenamiento en memoria intermedia (buffering), que consiste en encabalgar las
operaciones de entrada/salida de un programa con las operaciones de cálculo
del mismo programa.
La aparición del disco proporcionó una nueva técnica de trabajo: la gestión
de colas (spooling), que permitía encabalgar las operaciones de entrada/salida
de diferentes trabajos mientras se ejecutaban otras operaciones.
2.3. La tercera generación
La tercera generación de computadores surge a mediados de los años sesenta
y tecnológicamente se basa en los circuitos integrados. Estas nuevas máquinas
son mucho más pequeñas que las de la segunda generación, y también son
mucho más rápidas. La velocidad de proceso se medía en nanosegundos.
Circuito integrado.
La serie IBM 360
El primer grupo de computadores
con circuitos integrados fue el compuesto por los de la serie 360
de IBM.
 FUOC • P01/79008/00052
13
Otro aspecto muy importante de esta nueva generación es el hecho de que se
introducen mecanismos nuevos: interrupciones, protección, búsqueda de una
concurrencia máxima de operación, etc. Paralelamente, se desarrollaron el
hardware y el software que dieron lugar a los siguientes elementos:
• Periféricos más rápidos y efectivos.
• Terminales remotos (con los que se puede acceder a bancos de datos, actualizar cuentas corrientes, etc.)
• Softwares de base adaptados al usuario que se caracterizaban por la elaboración
de lenguajes universales, pensados para que los pudiesen utilizar diferentes
computadores con características de hardware muy diversas. Se estandarizaron
los lenguajes de alto nivel ya existentes (Fortran, Algol, Cobol, PL/1) y aparecieron otros, como el Basic y el Pascal.
Una de las técnicas más innovadoras de esta generación es la multiprogramación, que permite encabalgar la ejecución de varios programas.
La ejecución de programas en computadores de segunda generación
En los computadores de la segunda generación, la ejecución de los programas era totalmente
secuencial. Cuando un programa se detenía para esperar la finalización de una operación
de entrada/salida (de una unidad de cinta o de cualquier otro dispositivo), la unidad central de proceso (UCP) sencillamente se detenía y esperaba que la operación de entrada/salida
acabase. En el caso de programas científicos, en los que domina el cálculo de operaciones en
punto flotante (los cuales se efectúan en la UCP) y las operaciones de entrada/salida son poco
frecuentes, este sistema de trabajo ya era lo bastante eficiente.
Con la aparición de computadores de menor tamaño y más fiables gracias a las
nuevas tecnologías y a la posibilidad de incrementar la producción de computadores, los costes de fabricación se redujeron. De esta forma nació un sector informático comercial muy importante. Los computadores se pusieron al alcance de
empresas medianamente grandes y empezó el uso comercial de la informática.
En el procesamiento de datos comerciales, el tiempo de espera a causa de operaciones de entrada/salida puede suponer el 90% del tiempo total de ejecución. Así pues, conviene introducir mejoras para conseguir reducir el tiempo
de respuesta de estas operaciones. La solución será la introducción de la programación concurrente.
Durante la ejecución de un programa, generalmente podemos distinguir entre
fases de cálculo intensivo y fases en las que se efectúan operaciones de entrada/salida de forma intensiva. Esto se ilustra en la figura 2, donde las fases de
cálculo intensivo se indican mediante rectángulos grises y las de entrada/salida, con rectángulos blancos. La ejecución secuencial de dos programas se
muestra en el punto a. Para simplificarlo, supondremos que los programas tienen un comportamiento idéntico.
Como se puede deducir de la figura 2, durante la ejecución secuencial de los dos
programas se supone que o bien la UCP o bien los dispositivos están inactivos en
algún momento, incluso cuando el flujo de trabajos que esperan para ser ejecuta-
Sistemas operativos
 FUOC • P01/79008/00052
14
dos no está vacío. Una forma de solucionar estos problema es asignar cualquier
otra tarea a la UCP o a los dispositivos de entrada/salida cuando, por algún motivo, están inactivos. Si es posible ejecutar los programas de forma concurrente, estos pueden proporcionar trabajo tanto a la UCP como a los dispositivos en
cualquier instante durante la ejecución de los dos programas.
En el punto b de la figura 2 se muestra un posible escenario de la ejecución concurrente de los dos programas. El procesador empieza ejecutando el primer proceso, el proceso A, y cuando éste lleva a cabo una operación de entrada/salida,
el procesador, en lugar de quedarse inactivo, pasa a ejecutar el segundo proceso, el proceso B, que se supone que se encuentra en memoria esperando para
ser ejecutado. Cuando este segundo proceso acaba o hace una operación de entrada/salida, el procesador ejecuta el primer proceso A. El proceso continúa alternando la ejecución de los dos procesos hasta que ambos finalizan.
Figura 2
Como se puede observar en la figura 2, con la ejecución concurrente o multiprogramada se puede incrementar considerablemente el rendimiento del
computador: el tiempo de ejecución de los dos programas se reduce de 10 unidades en la ejecución secuencial a 6 unidades en la ejecución concurrente, y
la utilización del sistema en este segundo caso es de un cien por cien. El ejemplo, aunque muy representativo, no es real, ya que generalmente la distribución de las fases de cálculo y programación son más variables, de forma que
no siempre se consigue que el procesador y los dispositivos estén activos.
Para aumentar la utilización de los recursos del sistema computador, los sistemas multiprogramados permiten la ejecución concurrente de más de dos programas, de los cuales se dice que están compitiendo por los recursos del
sistema. El número de programas que están activamente en competencia por
los recursos del sistema determina el grado de multiprogramación.
Sistemas operativos
15
 FUOC • P01/79008/00052
La aparición de la multiprogramación permite desarrollar sistemas con múltiples usuarios conectados simultáneamente mediante terminales a un sistema
computador. En este caso, el sistema multiprogramado puro no es muy eficiente, ya que, tal y como hemos explicado anteriormente, la UCP deja de ejecutar un programa y pasa a ejecutar otro que esté pendiente de ejecución
siempre que el programa que se está ejecutando haga una operación de entrada/salida o bien cuando finaliza. A causa de este funcionamiento, el tiempo de
respuesta que tiene un usuario que está conectado interactivamente puede ser
considerablemente grande.
Para solucionar este problema se propone un nuevo mecanismo llamado tiempo
compartido, con el cual los diferentes programas que están compitiendo por los recursos del sistema, entre los cuales está la UCP, tienen asignada la UCP durante
un periodo de tiempo limitado, llamado quantum. De esta forma, cuando un programa deja de ejecutarse, libera la UCP por alguno de los siguientes tres motivos:
1) Porque el programa finaliza.
2) Porque el programa realiza una operación de entrada/salida.
3) Porque ha pasado un cuanto de tiempo en ejecución.
El quantum de tiempo es lo bastante pequeño como para que los programas de los
diferentes usuarios que están conectados al sistema progresen concurrentemente
y cada usuario tenga la impresión de que es el único que utiliza el sistema.
2.4. De la cuarta generación hasta ahora
Con la aparición de la integración a gran escala (LSI/VLSI) se inicia la era de
los computadores personales (1974), a los cuales se aplican todos los mecanismos desarrollados hasta el momento (tanto de hardware como de software). Seguramente, la aportación más importante de esta nueva generación son las
redes de computadores (Internet e intranet).
El interior del procesador
80486 de Intel
Los microprocesadores actuales se
fabrican con técnicas de integración
a una escala muy grande (VLSI).
Surgen los sistemas operativos en red y los distribuidos, que permiten utilizar recursos de máquinas remotas (discos, UCP, software, etc.) con diferentes
niveles de abstracción.
Sistemas operativos
16
 FUOC • P01/79008/00052
Sistemas operativos
También se introduce el concepto de sistema operativo en tiempo real referido
a los sistemas que han procesado muchos datos, que generalmente se obtienen
del exterior (sensores), en un tiempo limitado y en un periodo determinado. Es
importante darse cuenta de que estos sistemas operativos se centran en conseguir
un tiempo de respuesta efectivo, mientras que la utilización adecuada de recursos
(gestión eficiente de la memoria) y la perspectiva del usuario quedan en un segun-
Los sistemas operativos
en tiempo real…
… se utilizan en entornos industriales, en equipos de conmutación telefónica, en control de
vuelo en aviones y en simulaciones en tiempo real.
do plano.
A partir de este momento y hasta nuestros días, los computadores se utilizan
en cualquier ámbito: los usuarios en sus casas (computadores personales), las
pequeñas y grandes empresas (software de gestión), las corporaciones, las universidades y los centros de investigación (supercomputadores y multicomputadores). En general, hay una explosión de recursos: nuevos dispositivos cada
vez más avanzados (impresoras láser, módems, etc.) y UCP cada vez más rápidas (1.000 MHz), sistemas con más memoria (megabytes) y discos con más capacidad (gigabytes).
Hay que señalar que según qué utilización se haga del sistema computador, interesa que el sistema operativo proporcione herramientas específicas a los usuarios
que lo van a utilizar. Así pues, se tienen que conseguir los siguientes objetivos:
• Los sistemas en red o los distribuidos tienen que desarrollar gestores de
comunicación eficientes.
• Los sistemas multiprogramados/multiusuario se tienen que centrar en
conseguir tiempos de respuesta aceptables.
• Interesa que los sistemas en tiempo real sean lo más sencillos posible para
procesar datos del exterior a la mayor velocidad posible.
2.5. Tabla resumen
En la siguiente tabla presentamos una recopilación de las características más
destacadas de cada generación de computadores:
Figura 3
Generación
1.ª
1925-1957
Tecnología
Tipo de programación
Velocidad de operación
Válvulas de vacío
Lenguaje binario
o máquina
Milisegundos
2.ª
Transistores
1958-1964
Memoria de ferrita
3.ª
1964-1974
4.ª
1974-
Circuitos
integrados
Sistemas
con multiprogramación
Cintas de papel
Tarjetas perforadas
Lectores de tarjetas
Fortran, Cobol, Pascal
Ensambladores/
montadores
Dispositivos
Microsegundos
Impresoras
Unidades de disco
Nanosegundos
Ámbito de uso
Militar
Grandes
corporaciones
Gobiernos
Universidades
Periféricos más
rápidos y efectivos
Empresas
medianas
Redes
Doméstico
LSI/VLSI
Memoria
de semiconductores
o burbujas
Interconexión con bases
de memoria
 FUOC • P01/79008/00052
17
Sistemas operativos
3. Los servicios que ofrece el sistema operativo
El sistema operativo ofrece una gran variedad de servicios. Los podemos agrupar en los dos bloques siguientes:
1) Las llamadas al sistema son los servicios más sencillos y permiten hacer peticiones directas al sistema operativo. Las llamadas al sistema son la visión que
tiene un programador de los servicios que puede ofrecer el sistema operativo. En
última instancia, los lenguajes de alto nivel hacen una llamada al sistema.
2) En un nivel más próximo el usuario, el software de sistema ofrece un programa, el llamado intérprete de comandos, gracias al cual el usuario puede
dialogar con el sistema operativo sin necesidad de escribir ningún programa.
3.1. Las llamadas al sistema
Las llamadas al sistema ofrecen las soluciones básicas para utilizar todos
los recursos del sistema de una forma correcta y controlada. Aunque los
diferentes sistemas operativos pueden ofrecer varias llamadas al sistema*,
en general podemos encontrar en todos una semántica equivalente.
* Desde el punto de vista sintáctico.
Las llamadas al sistema se pueden clasificar en: gestión de procesos, señalización
de procesos, gestión de dispositivos de entrada/salida, gestión directa de los recursos del sistema, gestión del sistema de archivos, protecciones y funciones de
tiempo.
3.2. El intérprete de comandos
El intérprete de comandos es un programa encargado de interpretar y de
comunicar al SO lo que quiere hacer el usuario del sistema. Este programa reconoce un conjunto limitado de instrucciones o comandos que,
básicamente, permiten al usuario acceder, modificar, crear y proteger
la información.
En general, los servicios que ofrece el intérprete de comandos están bastante
relacionados con los grupos de llamadas a los sistemas que hemos descrito.
 FUOC • P01/79008/00052
18
Resumen
Los sistemas operativos han ido evolucionando a lo largo de los últimos cincuenta años, orientados hacia dos objetivos principales:
1) Gestionar de forma eficiente los recursos del sistema entre los diferentes
programas que se ejecutan.
2) Proporcionar un entorno que facilite el desarrollo y la ejecución de programas.
Inicialmente se trabajaba con lenguaje máquina, pero la aparición de lenguajes
de alto nivel, compiladores y cargadores ha facilitado el trabajo de programación.
Por un lado, la evolución del hardware (dispositivos cada vez más rápidos) determina en cada momento los métodos de trabajo y las técnicas que se desarrollan.
Inicialmente estaban los sistemas por lotes (batch) y las operaciones fuera de
línea (off-line) que permitían encabalgar operaciones de entrada/salida con operaciones de cálculo. Con la multiprogramación, varios programas se cargan en
memoria y la UCP hace una ejecución concurrente para conseguir estar siempre ocupada. Finalmente, tenemos el tiempo compartido, que hace que varios
usuarios puedan utilizar un computador interactivamente al mismo tiempo.
Otros sistemas operativos incluyen los conceptos en red, distribución de recursos y tiempo real.
Finalmente, se han introducido los servicios que suele ofrecer un sistema operativo: en un nivel bajo están las llamadas al sistema, y en un nivel más alto
tenemos la interpretación de comandos.
Sistemas operativos
 FUOC • P01/79008/00052
19
Actividades
1. ¿Cuáles son las dos funciones principales de un sistema operativo?
2. ¿Qué es la multiprogramación? ¿Cuál es su ventaja principal?
3. ¿El concepto de multiprogramación tiene sentido en sistemas operativos en tiempo real?
¿Por qué? ¿Y el concepto de tiempo compartido? ¿Por qué?
4. En un sistema monousuario, ¿un usuario puede proteger sus datos de alguna manera?
¿Existe el concepto de protección en sistemas monousuario? ¿A qué nivel?
Glosario
almacenamiento en memoria intermedia
Almacenamiento que permite solapar el procesamiento de un trabajo con sus propios trabajos de
entrada/salida.
sin.: buffering
batch
Ver sistema por lotes.
buffering
Ver almacenamiento en memoria intermedia.
gestión de colas
Gestión que permite solapar el proceso de un trabajo con la entrada/salida de otro.
sin.: spooling
sistema por lotes
Forma de utilizar un computador donde la ejecución de los trabajos no es interactiva. La ejecución de los trabajos suele ser secuencial.
sin.: batch
sistema monousuario
Sistema en el cual el tipo de usuario no está definido y, por tanto, los datos que tiene el sistema son accesibles para cualquiera que pueda conectarse.
sistema multiprogramado
Sistema que permite que diferentes procesos compartan el procesador. Cuando un proceso
deja de ejecutarse (al finalizar o al realizar una petición de entrada/salida) el procesador pasa
a ejecutar otro proceso.
sistema multiusuario
Sistema que distingue entre diferentes usuarios (grupos de usuarios) y permite controlar el
acceso a la información por parte de los diferentes grupos de usuarios que se puedan definir.
sistema operativo distribuido
Sistema conectado en red que permite la compartición de recursos. Un usuario no tiene por
qué saber dónde se ejecutan sus procesos o qué recurso concreto de la red está utilizando. El
sistema gestiona todos los recursos de forma trasparente para el usuario.
sistema operativo en tiempo real
Sistema operativo que tiene que ser capaz de reaccionar de forma rápida y segura ante acontecimientos externos en tiempo real.
sistema operativo en red
Sistema que está conectado mediante una red de interconexión. El usuario sabe en todo momento en qué máquina de la red se ejecutan sus procesos.
software de sistema
Software (programas) que permite utilizar y gestionar el computador. Comprende el núcleo
(sistema operativo), los editores, el intérprete de comandos, los compiladores, etc.
spooling
Ver gestión de colas.
tiempo compartido
Sistema en el que varios procesos pueden compartir el procesador. En este caso, un proceso
tiene asignado el procesador por un tiempo máximo (un quantum) si no acaba o realiza una
petición de entrada/salida.
Sistemas operativos
 FUOC • P01/79008/00052
20
trabajo fuera de línea (off-line)
Un dispositivo está fuera de línea si está desconectado del computador y, por tanto, no puede
realizar ningún tipo de transferencia directa. Un trabajo fuera de línea es el que se efectúa en
un dispositivo fuera de línea.
Bibliografía
Bibliografía básica
Milenkovic, M. (1994). Sistemas operativos, conceptos y diseño (2.ª ed., trad. de A. Bautista).
Madrid: McGraw-Hill.
Silberschatz, A.; Peterson, J. (1989). Sistemas operativos: conceptos fundamentales (2.ª ed.,
trad. de E. Morales). Barcelona: Reverté.
Tanembaum, A. (1991). Sistemas operativos: diseño e implementación (trad. de F. Gómez).
México: Prentice-Hall.
Bibliografía complementaria
Taniguchi-Dietrich, P. (1985). La historia de los ordenadores. Barcelona: Eunibar (col. informática básica).
Sistemas operativos
Descargar