Algo de Sist
Algo de Sist
Algo de Sist
Juan P. Benito
Ciclos formativos
Sistemas informáticos Monousuario y Multiusuario
ÍNDICE
1 CONCEPTOS.......................................................................................................................................................2
2 INTRODUCCIÓN...............................................................................................................................................2
5 SISTEMAS DE CODIFICACIÓN.....................................................................................................................6
5.1 TIPOS DE CÓDIGO..................................................................................................................................... 6
5.1.1 Representación por medio de números...................................................................................................7
5.1.1.1 El código decimal............................................................................................................................................8
5.1.1.2 Sistema binario................................................................................................................................................8
5.1.1.3 Código octal.....................................................................................................................................................9
5.1.1.4 Código hexadecimal......................................................................................................................................10
5.1.1.5 Cambios de base de numeración....................................................................................................................10
5.1.1.6 Trabajo con números decimales....................................................................................................................11
5.1.1.7 Representación de números reales.................................................................................................................11
5.1.1.8 Razones para el uso del sistema binario........................................................................................................12
5.1.2 Representación alfanumérica...............................................................................................................13
5.1.2.1 Código ASCII................................................................................................................................................13
5.1.2.2 Código EBCDIC............................................................................................................................................14
6 MEDIDA DE LA INFORMACIÓN................................................................................................................14
7 SOFTWARE.......................................................................................................................................................15
7.1 TIPOS DE SOFTWARE.............................................................................................................................. 16
7.1.1 Según el público al que va dirigido...................................................................................................16
7.1.2 Según su relación con el sistema..........................................................................................................17
7.2 CARACTERÍSTICAS DEL SOFTWARE.......................................................................................................... 18
7.3 NORMATIVA LEGAL............................................................................................................................... 19
7.3.1 Desde el punto de vista comercial........................................................................................................19
8 ORGANIZACIÓN DE INFORMACIÓN EN LAS UNIDADES DE ALMACENAMIENTO..................19
1 CONCEPTOS
Información: Comunicación o adquisición de conocimientos que permiten ampliar o precisar los que
se poseen sobre una materia determinada. Podría entenderse que si no se consigue alguna de las
dos finalidades señaladas, no habría información, pero es prácticamente imposible que no concurra
alguna de ellas cuando un ser humano se encuentra ante una exposición de conocimientos. Para
que la información sea la adecuada se tendrán que cumplir unos cuantos requisitos: precisión,
significatividad, etc., que se expondrán más adelante.
2 INTRODUCCIÓN
La lógica se define como aquélla representación del conocimiento y/o del formalismo racional
originalmente desarrollada por matemáticos para formalizar el razonamiento matemático.
- Datos: son los valores numéricos, o bien caracteres, medidas multidimensionales, tales como
vectores, matrices,...
- La información: como tal, es un conjunto de datos relacionados por alguna estructura o alguna
relación de tipo sintáctico. En general, se la considera un subconjunto dentro de los datos.
- El conocimiento: constituido por elementos de información con ciertos significados
semánticos y se le suele considerar un subconjunto de la información
- La inteligencia: conjunto específico de la información capaz de interpretar y gestionar otra. Es
el subconjunto más interior del espacio total de datos.
Desde el punto de vista operativo y temporal, los ordenadores nacieron como herramientas que
servían para el procesamiento de datos, como los primitivos procesadores que trabajaban con tarjetas
perforadas mediante las que se les introducían datos e instrucciones, y producían datos procesados
también en forma de tarjetas que se clasificaban para la siguiente fase. Fueron relativamente
frecuentes en grandes corporaciones y centros de cálculo como el MIT (Massachussets Institute of
Technology).
A medida que los datos se iban haciendo más y más complejos, mezclándose estructuras y añadiendo
otras nuevas, apareció la necesidad de diseñar métodos para el procesado de la información, por lo que
nacieron los primeros programas y aplicaciones informáticas, medianamente complejos, en lenguajes
como el lenguaje máquina o el ensamblador. En la actualidad, la complejidad que existe en las bases
de datos y conocimientos impone una tendencia hacia el desarrollo y fabricación de sistemas expertos
para ciertas áreas específicas, como es el caso de la educación, la legislación, la sanidad, etc.
Las líneas de trabajo para un futuro a medio plazo se encaminan hacia la consecución de la
inteligencia artificial, conocida como AI (Artificial Intelligence), en la que los sistemas no sólo son
capaces de aprender sino de elegir el método más adecuado para hacerlo.
Así, el ordenador permite la recepción de datos entrantes, que se procesan según indican las
instrucciones que posee el sistema. Por último, proporciona unos datos de salida que son los
resultados.
La palabra datos proviene del latín datum (plural data) que significa “lo que se da”, en el sentido de
“lo que acontece”. El diccionario de la Real Academia de la Lengua Española dice que los datos son:
“antecedentes necesarios para llegar al conocimiento exacto de una cosa o para deducir las
consecuencias legítimas de un hecho”.
Los datos suelen ser magnitudes numéricas directamente medidas o captadas, pero también pueden ser
nombres o conjuntos de símbolos; o valores cualitativos; o fahses enteras, premisas, imágenes,
sonidos, colores, etc.
Los datos, como la información, se representa mediante secuencias de símbolos. Por ejemplo, en
nuestra vida diaria representamos las palabras mediante letras tomadas de nuestro alfabeto. Éste es
simplemente uno entre los muchos alfabetos existentes. En base a un alfabeto cualquiera que
establecemos por un acuerdo cultural, podemos representar cualquier información compuesta de
palabras y cantidades numéricas, y así el que lee entenderá al que escribe.
Desde un punto de vista más operativo, un dato consiste en una información que ha sido preparada,
frecuentemente en un formato particular, para un propósito específico. En el ámbito de la informática
tiene tres acepciones diferentes.
En un programa informático, los datos pueden distinguirse de las instrucciones. Por ejemplo, en el
código fuente las declaraciones de datos son diferentes de las declaraciones ejecutables. Así, en el
momento de la ejecución, el espacio de almacenamiento se divide entre los datos -ya sean constantes
o variables- y las instrucciones. Y los archivos de datos se distinguen de los archivos de programa.
Por último, y de manera más general, se usa la palabra dato para separarla cada vez más de otros
aspectos de los programas modernos como la voz, el texto o la imagen. Este uso enfoca sobre la
naturaleza altamente formateada de los datos en las aplicaciones tradicionales destinadas al proceso de
datos, como concepto opuesto a estructuras más libres como el texto en lenguaje natural, las
comunicaciones de voz y las imágenes visuales, muy típicas de aplicaciones en entorno visual y/o
multimedia.
Se pueden considerar tres tipos de datos, según el punto del proceso en el que se encuentren:
- Datos de entrada: son los que llegan al ordenador a través de alguno de los periféricos de
entrada, tales como el teclado, lectores, etc.; o bien llegan desde unidades de
almacenamiento, como son los discos. A veces este concepto se confunde con captura de
datos -actividad de introducción de datos, casi siempre automatizada, en el que la recepción
de los datos tiene una importancia secundaria-, y con la preparación de los datos -labor que
supone preparar los datos para su entrada en el sistema, formateándolos o codificándolos-.
- Datos intermedios: son los resultados que se van produciendo y que no forman parte de la
salida porque no se especificó de esa manera en el diseño del programa.
- Datos de salida: Son los datos resultados del procesamiento de los datos de entrada y de los
intermedios. La forma de obtenerlos para su análisis es por medio de un periférico de salida,
como son las pantallas o las impresoras; o bien almacenarlos.
Para poder llevar a cabo este trabajo, el ordenador deberá contar con un intérprete, es decir, un sistema
fijo y consistente que permita pasar un número o un carácter a un valor en bytes. Una vez que el
ordenador ha utilizado ese valor para el procesamiento y ha obtenido un resultado -en bytes-, deberá
usar el intérprete de nuevo, pero de manera inversa, para pasar esos bytes a una representación
habitual para el operador. El proceso por el cual se pasa de un lenguaje máquina a un lenguaje
comprensible por un usuario, o por otra máquina, se le conoce como traducción.
Este proceso consiste en tomar los datos tal como los maneja la máquina y, mediante una traducción
previa de los mismos, convertirlos en datos legibles por el operador del sistema con la finalidad de
plasmarlos en un medio que permita su lectura.
El periférico más utilizado para la representación de datos es el monitor, seguido por la impresora.
La representación concluirá, la mayor de las veces, con una salida de naturaleza muy similar a los
datos con los que se trabaja desde el principio. Por ejemplo, si un usuario está manejando gráficos con
un programa de diseño, lo más habitual es concluir con un gráfico en la pantalla o en la impresora. Si
se trabaja con datos numéricos, o textos, o documentos, ocurre de manera similar. Es decir, la
naturaleza de los datos de entrada y de salida suele ser la misma.
En otras ocasiones ocurrirá de manera diferente, pues un usuario puede introducir números en un
ordenador y obtener una salida textual o gráfica.
Se trata de un proceso por el cual un mensaje -tal como un texto o un gráfico- se protege para que las
personas que no estén autorizadas a recibirlo no puedan acceder a la información que contiene. Esta
actividad se denomina criptografía, y la ciencia que la estudia y la desarrolla se denomina criptología.
Al mensaje original se le da el nombre de mensaje plano o texto plano, mientras que al mensaje
convertido se le conoce como clave o cifra, texto cifrado o código.
En su forma más simple, el remitente y el destinatario poseen copias idénticas de una clave secreta, y
además poseen un algoritmo o procedimiento matemático para generar secuencias pseudoaleatorias de
bits que representan el mensaje. En una primera fase, el remitente utiliza ese algoritmo para aplicarlo
a su mensaje y concluir en el documento cifrado. El remitente, aplicando la misma clave y el mismo
algoritmo, realiza el procedimiento inverso y recrea el documento original.
Otro sistema alternativo es el del sistema del libro de claves, por el cual el remitente y el destinatario
poseen copias de una tabla de sustitución secreta., la cual se mecaniza por su inclusión en un sistema
informático que permite la traducción de mensajes con rapidez.
4 INFORMACIÓN
Comunicación o adquisición de conocimientos que permiten ampliar o precisar los que se poseen
sobre una materia determinada (tal como se indicó en el apartado Conceptos).
La información que se procesa puede ser superflúa o incompleta, o poco clara, o demasiado
voluminosa, o llegar demasiado tarde para ser utilizada. Una “buena” información tiene que reunir las
siguientes cualidades:
- Integridad: La información debe ser completa. En la mayoría de los casos es inalcanzable una
integridad del 100%; pero siempre conviene que sea lo más completa posible. La integridad
no debe provocar que la información contenga cosas superfluas o redundantes, es decir, no
hay que caer en el exceso de información.
- Significatividad: La información debe ser clara y relevante, de tal modo que su recepción sea
fácil y rápida. Para ello, se puede acompañar dicha información con ayudas gráficas,
visuales, auditivas o de otro tipo.
5 SISTEMAS DE CODIFICACIÓN
Un alfabeto no es más que un conjunto, fijado por acuerdo cultural, de símbolos elementales en base a
los cuales se forma la información.
La acción de codificar, es decir la codificación, se puede definir como el proceso por el cual se
transforma una información simbólica -el alfabeto fuente- en otra distinta -el alfabeto destino-, sin
pérdida de información.
La primera fase se denomina codificación, mientras que la segunda fase se llama decodificación. Los
programas que permiten realizar cada fase se conocen como codificador y decodificador,
respectivamente, y pueden ser funcionales en forma hardware o software. Estas herramientas suelen
consistir en un procedimiento de tipo algorítmico. Cuando existe un aparato que realiza estas tareas se
le llama codificador-decodificador o, abreviadamente, y en el argot informático, por codec.
No confundir estos términos con los que se aplican para referirse al lenguaje con el que se escriben
algunos programas, como es el caso del código máquina y el código fuente.
Conviene hacer un inciso y refrescar los distintos tipos de caracteres que se pueden encontrar en los
componentes lógicos de los sistemas informáticos. Estos caracteres incluyen los alfanuméricos
ingleses, los especiales y los caracteres de operación, incluidos todos ellos en los denominados
caracteres gráficos. Por otro lado se encuentran los caracteres de control. Desde el punto de vista de la
pantalla, se distinguen unos de otros porque los caracteres gráficos dejan algún tipo de marca impresa
en la pantalla o un espacio en blanco, mientras que los caracteres de control producen un efecto
particular.
Normalmente, como se verá en el siguiente apartado, el valor de una cifra dependerá de los dígitos
que contiene, repetidos o no, y de la posición que ocupan. Es decir, los sistemas numéricos de
representación se basan en la posición de los dígitos en el seno de una cifra.
Es decir, un número X estará formado por un conjunto de dígitos, del siguiente modo:
X = xk xk-1….x1 x0 x-1…x–j
El subíndice indica la posición. Según este subíndice, cada posición tiene un peso que se conoce por
ser potencia de la base de numeración. Llamando b a la base de numeración, se tiene la siguiente
fórmula general para obtener el valor decimal de un número en cualquier base b:
-j
X= xi b x k b
i k k 1 0 1 j
i=k
x bk 1
x 0 b x b1
x j b
A partir de aquí, para obtener un nuevo sistema de numeración, solamente hay que elegir una base b,
cumpliéndose, además, que los coeficientes (los dígitos que forman el número en una base b)
cumplen:
0 ≤ Xi < b
Para indicar que un número está en una base numérica concreta, se termina el número con un
paréntesis o un corchete que contiene la base. También se usa un sufijo. Por ejemplo, el número 2041
en código octal, se podría poner como:
2041(8
o, q 8 175q
h 16 7Dh
d 10 123d
2041q
Consiste en representar cantidades por medio de cadenas de cifras, en los cuales los dígitos varían
entre 0 y 9, ambos inclusive. Se piensa que es el método más natural y primitivo de cuantificación y
representación dado que nuestros antepasados podían ayudarse de los dedos para proceder a las
cuentas.
La introducción del 0 y, por lo tanto, la extensión hacia los números negativos fue obra de los
hindúes, en una época contemporánea a la de Cristo. Los árabes, que tras la invasión de la península
ibérica trajeron su cultura, introdujeron en el mundo occidental esa numeración con algunos avances
debidos a sus propios pensadores.
Los números, dentro de una cifra, están ubicados en una posición. Esa posición les asocia con una
cantidad que es potencia de 10. Por ejemplo, 1234 en base 10 quiere decir:
Lo que se ha comentado hasta ahora del sistema decimal se puede resumir diciendo que es un sistema
de numeración posicional, como ya se adelantó, lo que quiere decir que el valor de una cifra depende
de la posición en la que se encuentre.
Cuando los símbolos a codificar (alfabeto A 1) son transcritos a secuencias de un alfabeto (alfabeto A 2)
que sólo tiene dos símbolos, diremos que tenemos un sistema de codificación binaria. Estos sistemas
son especialmente importantes en informática, pues son los que se usan habitualmente. El motivo para
usar un alfabeto de tan sólo dos símbolos es de tipo técnico, como ya se verá.
En este caso, la base del sistema es el número 2. Funciona por tanto igual que el decimal, pero las
potencias de cada cifra son potencias de base 2. De esta forma, el sistema de base 2 o código binario
requiere sólo 2 dígitos diferentes, el 0 y el 1.
5 0101
6 0110
7 0111
8 1000
9 1001
Como se puede ver en esta tabla, y dado que 2 elevado a 3 (2 3 = 8) llega hasta 8, para representar los
primeros 10 números decimales, necesitaremos 10 cifras con cuatro posiciones. Así, el 9 requiere un
23 y además un 1, de ahí que se represente binariamente por 1001.
Para pasar de un número decimal a un número binario sólo se procede a la división del decimal por el
número 2 tantas veces como sea posible. El binario será entonces la secuencia de 0 y 1 que se leen
desde el último cociente y su resto hacia el primer resto. Por ejemplo, el número 87, en binario, sería:
Entonces, el número binario, empezando por el último cociente y tomando los restos, sería:
1010111
Por contra, para pasar de un número binario a otro decimal, lo que se debe hacer es multiplicar cada
dígito del binario por la potencia de 2 correspondiente a su posición y sumar todos los resultados. Así,
con el ejemplo anterior, el resultado sería:
1 x 20 + 1 x 2 1 + 1 x 2 2 + 0 x 2 3 + 1 x 2 4 + 0 x 2 5 + 1 x 2 6
es decir,
1 x 1 + 1 x 2 + 1 x 4 + 0 x 8 + 1 x 16 + 0 x 32 + 1 x 64, o sea,
1 + 2 + 4 + 0 + 16 + 0 + 64, lo que da 87
Se trata de un código que funciona exactamente igual que el decimal o que el binario, pero la base de
su numeración es el número 8.
Así, los dígitos que emplea son los que se encuentran entre el 0 y el 7. Los procedimientos para pasar
de decimal a octal, y viceversa, son idénticos a los descritos para el caso binario. Por lo demás, sólo
queda resaltar que es la base para el cálculo de bytes en el diseño de memorias, transferencia de datos,
direccionamientos, etc.
2054
4 x 80 + 5 x 81 + 0 x 82 + 2 x 83,, es decir,
La base de esta numeración es el número 16. Aquí se plantea un problema, ¿cómo representar los
números que superan al 9 en la representación del código hexadecimal?
Por convenio, se ha establecido que los dígitos de la base que superen al 9 se representarán por medio
de letras del alfabeto, consideradas por orden desde la letra A para el 10, es decir, los dígitos 10, 11,
12, 13,...; se representan por las letras A, B, C, D,...
es decir, A5B8
Para pasar de una base m a otra base n, se procede como sigue: primero se pasa de base m a base 10
(método conocido) y luego de base 10 a base n (también conocido).
En ocasiones para pasar de una base m a otra base n no es necesario hacer lo que se acaba de indicar,
sino que se puede usar un método más simple. Para explicar esto, conviene presentar el concepto de
correspondencia entre sistemas: cualquier base de numeración que sea potencia de otra base, como
ocurre entre las bases 2, 8 y 16, tienen una correspondencia. De este modo, por ejemplo, podemos:
- Representar cada dígito octal en forma de una combinación de tres dígitos binarios
- Representar cada dígito hexadecimal como cuatro dígitos binarios
De este modo, cuando estemos convirtiendo un número expresado en una base a otra base que sea
potencia de la primera, podemos usar la propiedad que se acaba de citar. Haciendo un pequeño
esfuerzo de imaginación inversa, se puede pasar de la base mayor a la menor sin problemas, tal como
se muestra en estos ejemplos en los que se pasan los números en base 8 y 16 a números en base 2:
3 7 6 (8
011 111 110
B 3 E 6 (16
1011 0011 1110 0110
Para representar los números fraccionarios se usa el mismo sistema de trabajo que para los enteros. Lo
único a considerar es que el método se extiende para exponentes menores que cero. Por ejemplo, para
representar un número decimal en base 2 en representación en base 10, sería:
0,1011(2 = 12-1 + 02-2 + 12-3 + 12-4 = 11/2 + 01/4 + 11/8 + 11/16 = 0,6875(10
Este es un ejemplo de paso de binario a decimal. Para pasar de decimal a binario, por ejemplo, pues a
cualquier base sería igual, pero cambiando el 2 por la base correspondiente, lo que hacemos es
multiplicar la fracción decimal repetidamente por la base del nuevo sistema. Los números a la
izquierda de la coma en los resultados parciales se escriben como parte del resultado final binario, y se
extraen de la operación dejando siempre un cero en su lugar. El proceso se repite hasta que en la parte
decimal de un resultado parcial aparece sólo el dígito 0. Por ejemplo:
0,6875(10=0,1011(2
Cuando un número tenga parte entera y parte fraccionaria, para cambiarlo de base cambiaremos por
separado la parte entera y la parte fraccionaria, cada una de ellas con el método correspondiente.
Existen dos opciones, según cómo se quiera representar la existencia de un signo negativo o no:
- Representación en coma fija: Se parte de un número fijo de bits para representar la parte
entera del número, y otro número fijo de bits para representar la parte fraccionaria. Esos
números fijos de bits tienen que llegar de un convenio o consenso entre los miembros de la
comunidad científica y/o técnica. También habrá que reservar un bit para el signo del
número.
Un ejemplo, si disponemos de un byte para representar cada número real, podría ser el
siguiente: 1 bit de signo, cuatro bits para la parte entera y tres para la parte fraccionaria.
38,4=384·10-1=0,384·102=3,84·101=3840·10-2…
y como se puede ver, no existe una representación única de la forma N=M·b E. En realidad,
existen infinitas. Siempre se elige una de las dos primeras mostradas: mantisa entera sin
ceros a la derecha o mantisa fraccionaria sin ceros tras el punto (son los dos modos
normalizados que se usan).
Si se dispone de n bits en total para representar el número, reservaremos p bits para la
mantisa y q bits para el exponente (n = p + q).
Por ejemplo, si se dispone de 16 bits para cada número y se usan 6 para el exponente
(uno de ellos para el signo del exponente) y 10 para la mantisa (uno de ellos también para el
signo de la mantisa) y se quiere representar el número -3,5 (10, se haría:
–3,5(10= –11,1(2= –0,111·1010
como se ve, lo primero que se hace es pasar el número a binario, y luego se obtiene una de
las dos representaciones normalizadas. En este caso se ha supuesto que se trabaja con
mantisa fraccionaria sin ceros tras el punto. La representación de este número sería la
siguiente:
Como ya se ha comentado, el sistema con el que trabajan los ordenadores es el sistema binario. Las
razones para ello son las siguientes:
+
0 0 0 0
0 1 1 0
1 0 1 0
1 1 10 1
La circuitería que “recuerda” estas tablas es simple; la circuitería que “recordara” las
tablas para, por ejemplo base 10, tendría que ser forzosamente voluminosa y cara de
construir.
- Existen un gran número de dispositivos biestables (con 2 estados) que se pueden emplear
para almacenar información codificada en binario. Se trata de disponer de una variable física
en la que podamos distinguir dos valores de referencia suficientemente diferenciados como
para evitar estados ambiguos. Por ejemplo:
Debido a que el ordenador no sólo maneja datos de índole numérica, sino además de tipo carácter, y
en mayor medida, según avanzan las generaciones de PC´s, se hace necesario diseñar un código
binario que represente las letras del alfabeto y otros caracteres necesarios, con la finalidad de poder
representar nombres de ficheros, caracteres especiales, signos monetarios, mayúsculas, flechas de
dirección, etc.
Por fuerza se debe de tratar de un código binario dado que el ordenador no tiene otra manera de
trabajar dada su arquitectura actual.
Su nombre resulta el acrónimo de American Standard Code for Information Interchange, es decir, se
trata de un código estándar para el intercambio de información y fue diseñado en 1963.
En total está formado por 256 caracteres, que se suelen presentar en formato tabla y se publican en la
mayoría de los libros de informática, sobre todo los de edición o los dedicados a diseño gráfico.
La mayoría de los caracteres que figuran en la tabla ASCII son imprimibles por el ordenador, pero
pueden presentarse excepciones debido a que en algunos equipos, algunos códigos de ASCII
representan procedimientos de función. En general se puede afirmar que siempre los 128 primeros
caracteres serán imprimibles. Entre estos cabe destacar:
Cada letra y cada carácter tiene asignado un código que varía de entre 1 a 3 cifras. por ejemplo, la
letra H tiene asignado el código 72. Dado que el ordenador trabaja con bytes, es decir, código binario
agrupado en 8 dígitos, es decir, en octetos, su codificación binaria será:
01001000
Hay que tener en cuenta que cuando se procede a las divisiones sucesivas entre 2 para averiguar los 0
y 1 que forman el byte, podría ocurrir que se acabara la división antes de reunir los 8 dígitos, por lo
que entonces se rellena por la izquierda con 0 hasta llegar al octeto.
El sistema de codificación maneja los mismos caracteres gráficos, pero asigna grupos de 8 bits
diferentes que en el ASCII, por lo que la codificación resultará diferente.
6 MEDIDA DE LA INFORMACIÓN
Se trata de un sistema diseñado para estimar la cantidad de información manejada por un sistema
informático, por un programa o por un determinado procedimiento. Para ello se definen los siguientes
términos:
- Bit: Un elemento biestable (con dos posibles estados) en el que se diferencian dos valores, es
decir, es una variable binaria. A efectos de representación, escribiremos los dos posibles
valores de la variable binaria como 0 y 1. De esta forma, el valor tomado en un instante dado
por la variable binanria vendrá dado por un dígito binario que valdrá 0 o 1.
Como el término dígito binario es algo largo de escribir, se abrevia con la palabra bit,
que proviene de la contracción de la expresión inglesa BInary digiT, que además, en inglés,
significa “trocito”.
Podemos codificar cualquier alfabeto de partida en binario, o sea mediante bits. Cuantos
más símbolos contenga el alfabeto más número de bits nos harán falta para codificarlo, pero,
en definitiva, no hay información que no podamos codificar en binario. La prueba es que
hoy en día tanto la información visual como la auditiva de alta fidelidad se codifica en
binario.
- Byte: Como el bit es una unidad de medida muy pequeña, es costumbre usar unidades de
magnitud superior. Un bytes es un conjunto de 8 bits. Así, en lugar de decir que un mensaje
tiene 32 bits, podemos decir que tiene 4 bytes.
Un byte puede almacenar 8 dígitos binarios, es decir, dos dígitos hexadecimales. El
número de valores posibles que se pueden almacenar es de 28=256.
Los bits de un byte se numeran de derecha a izquierda del 0 al 7, es decir, se
corresponden con los exponentes de las potencias de base 2. La agrupación de los 4 bits
(superiores o inferiores) de un byte se llama nibble. Por tanto, un byte contiene 2 nibbles. El
que corresponde a los bits 0 a 3 se llama nibble inferior, y el de los bits 4 a 7 se llama nibble
superior.
El nibble es una unidad de trabajo mucho más cómoda que el bit, ya que en cada nibble
se almacena un dígito hexadecimal.
- Carácter: Es la unidad de información a nivel de lenguaje humano. Un carácter es, de hecho,
cualquier símbolo del alfabeto. Constituye una buena medida de información en términos
directamente aplicables a textos. Podemos clasificar los caracteres en:
-- alfabéticos: letras y algún que otro carácter asimilado
-- numéricos: los dígitos numéricos del 0 al 9
-- especiales: todos los restantes (letras de alfabetos extranjeros, letras griegas, signos de
puntuación, signos monetarios, signos de operaciones aritméticas, etc).
Utilizando el byte como unidad de medida, el esquema o la tabla de medición para la capacidad de los
distintos dispositivos de almacenamiento o de memoria, RAM, discos duros, etc., quedará:
7 SOFTWARE
Se trata de un término genérico para referirse a aquellos componentes de un sistema informático que
son intangibles, es decir, que no tienen presencia física. Se usa comúnmente para referirse a los
componentes no físicos de un ordenador y a las formas simbólicas y ejecutables de un programa.
Una distinción cabe en esta terminología. Se denomina software de sistemas a una componente
esencial del hardware y que tiene como misión proporcionar funcionamiento global al sistema
informático. Su entidad suele ser mínima, aunque cada vez se implementa más software de sistemas, y
suele ser proporcionado por el propio fabricante de placas, microprocesadores y ordenadores.
Se llama software de aplicación, o simplemente aplicación, a aquel software o programa que tiene
como objetivo suplir procesos y procedimientos en el seno de una organización, y que normalmente
ha sido diseñado para ello. Los suelen proporcionar empresas creadoras de software y los venden
como software producto o paquetes informáticos, según su entidad.
Entre las tareas típicas de un software están: mover, es decir, trasladar los datos o la información a la
memoria interna del ordenador o sacarla de ahí para llevarla a los distintos periféricos; calcular, o
hacer operaciones matemáticas de todo tipo; y comparar, y, consecuentemente, ordenar información.
No existen criterios unánimes o convenidos para proceder a una clasificación del software que existe
actualmente. Pueden insinuarse diversos criterios, agrupados en dos.
- Aplicaciones de encargo: Se trata de una aplicación que una empresa encarga a otra
desarrolladora de software con el objetivo de suplir una tarea o procedimiento concretos
dentro de su organización. Se les llama así, por que en el contrato se suele especificar que el
pago importante de dicho contrato se efectuará una vez que el cliente haya recibido el
programa en su sistema informático y se haya comprobado su correcto funcionamiento.
- Software llave en mano: Son aquellos programas que se dirigen a una amplia capa de
población e, incluso, suelen venir previamente instalados en los ordenadores que se sirven a
sus compradores. Se llaman “llave en mano” debido a que están terminados en el momento
en el que el consumidor se interesa por él y lo adquiere, probablemente siguiendo una
analogía relacionada con la compra y venta de pisos y propiedades inmobiliarias.
- Programas generalistas: De carácter general y que tienen una amplia difusión, pudiendo ser
utilizados por distintas clases de clientes y para distintas actividades, como es el caso de los
procesadores de texto, hojas de cálculo, bases de datos,...
- Programas de aplicación vertical o sectorial: Paquetes que suelen dirigirse a profesionales o
pymes que los incluyen dentro de sus procedimientos. Por ejemplo, un programa para
gestionar los pacientes de una consulta médica, una aplicación que lleva un parque de
propiedades inmobiliarias y la contabilidad de las mismas, para administradores de fincas,
etc.
- Programas de aplicación horizontal o funcional: Dirigidos a un público muy amplio y que este
puede adaptar a sus circunstancias o trabajar con él tal como está. Es el caso de un programa
de contabilidad, o un programa para llevar una videoteca.
Por la utilidad que el diverso software tiene para el usuario, se puede clasificar en:
- Programas de cálculo, que normalmente serán hojas de cálculo, y que servirán para proceder
a cálculos medianamente complejos, contabilidades más informales, presupuestos,...
También existen programas de tratamiento estadístico de la información, programas de
cálculo propiamente dicho, matemáticas escolares, gráficos de funciones matemáticas, etc.
- Aplicaciones de texto, que normalmente consistirán en procesadores de texto y que sirven
para elaborar documentos de extensión indefinida. Estos pueden ir desde lo más sencillo,
como el propio editor del DOS, hasta procesadores de texto complejos, que diseñan páginas,
diseñan textos, etc. Los programas que sirven para maquetar páginas, tales como los que se
utilizan para el diseño de las páginas de los periódicos y revistas, pueden incluirse también
aquí, a pesar de compartir características con los de aplicación al diseño.
- Aplicaciones de diseño: Distinguiendo entre el diseño industrial, como es el caso de las
diversas herramientas CAD, el diseño electrónico, el diseño publicitario, el diseño
periodístico o el diseño gráfico.
- Paquetes gráficos: Compartiendo muchas de las características de los del apartado anterior,
se destacan de estos por las importantes aplicaciones en el desarrollo de aplicaciones
multimedia, así como en el diseño de páginas WEB para Internet.
- Programas de bases de datos: que permiten el mantenimiento y gestión de información.
Existen dos grandes apartados en esta modalidad del software, las bases de datos clásicas o
basadas en datos, y las bases de datos documentales, capaces de gestionar información de
documentos. Actualmente existen también bases de datos de sonidos, de imágenes y de
películas o de trozos de las mismas.
Además hay una clasificación por área de aplicación o del sector económico al que se dirige. Es el
caso de los programas industriales, comerciales, para el hogar, científicas, sanitarias, educativas, etc.
Todas las clasificaciones anteriores consideran el punto de vista de los usuarios que van a aplicar esos
paquetes. Otra clasificación, desde otro punto de vista, es la que se ciñe a la gestión del sistema
informático. Así, podemos clasificar el software en:
- Sistemas operativos: Es el encargado del control de las diferentes unidades del hardware, así
como de la manipulación física de la información dentro del sistema informático. El motivo
de su existencia es proporcionar a los sistemas un núcleo común que les permita hacer esas
tareas -como grabar en un disquete, mover una dirección de memoria, ordenar información,
formatear una unidad de almacenamiento, gestionar los periféricos- dado que si cada
aplicación tuviera que implementar esas utilidades, los sistemas resultarían redundantes y las
aplicaciones muy caras.
- Programas de utilidad o programas de propósito general: Su objetivo es ayudar a los
usuarios en tareas relacionadas con el manejo o manipulación de la información, tales como
pasar información de un disquete a otro, a un disco duro y viceversa, herramientas para el
desarrollo de ciertas aplicaciones, programas de clasificación, programas para la impresión
de la información, programas para reestructurar la información en los dispositivos de
memoria masiva, para listar información, etc.
- Programas de aplicación: programas que le permiten hacer al usuario determinadas tareas y
procedimientos externos al propio sistema, como es el caso de los procesadores de textos,
programas de contabilidad, etc.
Un resumen de lo explicado hasta aquí sobre los diferentes tipos de software, se puede consultar en la
siguiente tabla:
Se distinguen varias según los autores, ya sean españoles o extranjeros, y entre ellos. No obstante una
lista sencilla de las características del software podría ser la siguiente:
habla de nuestra era como la segunda revolución industrial, revolución ocasionada por la
aparición y desarrollo de la informática.
Resulta un extremo oído en diversos medios en muchas ocasiones, que la informática es
uno de los factores socioeconómicos que más destrucción de empleo provoca, debido a que
aspectos de ciertos trabajos como la automatización, la robótica, y la administración, sin el
desarrollo de la informática no serían posibles.
- Multifunción: El software, sobre todo el software generalista y de administración y gestión
general puede utilizarse en diferentes tareas, de forma que cubre diversos espectros de
desempeño con lo que distintos trabajadores pueden apoyarse en el mismo software para
llevar a cabo su labor. Es el caso de los procesadores de texto que son útiles a escritores,
periodistas, profesores, alumnos, personal de la administración de cuadros bajos y medios,
técnicos, profesionales, etc.
- Confiabilidad: El grado de confianza que nos ofrece el software y, como medida, el tiempo
que va a tardar éste en producir un fallo. Igual que la confiabilidad de un coche depende de
su diseño, de lo bien ensamblado que esté y de cuánto tiempo tardan en fallar sus
componentes, la confiabilidad del software depende sólo de la corrección del diseño y de su
aplicación.
Una definición de confiabilidad es que un programa debe ajustarse a las especificaciones,
nunca debe producir resultados incorrectos con independencia de la entrada, nunca debe
permitir su corrupción, debe reaccionar de manera significativa y útil en las situaciones
inesperadas, y sólo debe fallar por completo cuando sea imposible seguir avanzando. En
resumen, un sistema es confiable en la medida en que proporciona los servicios que los
usuarios esperan de él. Y según los usuarios van adquiriendo experiencia, el principal
criterio para valorar los programas por los usuarios es la confiabilidad, por encima de la
eficiencia.
Para ser confiable el software debe partir de unas especificaciones ajustadas a la función
que debe desempeñar, cada una de las partes del diseño debe ser una función bien definida y
demostrable, debe provenir de una transformación correcta de la notación del diseño a un
lenguaje de programación, su documentación debe describir de forma correcta las
características del sistema, y el software debe incorporar mecanismos de evolución.
- Flexibilidad: En la medida en que deben adaptarse mejor a futuras variaciones en
componentes del hardware y a las posteriores versiones de los software con los que tiene que
interconectar. Esta flexibilidad se gana cuando el diseño es el correcto y cuando la
modularidad del programa está demostrada.
- Atractivo: Si un software no es atractivo, los usuarios no se acercarán a él impidiendo su
manejo, difusión y prueba. La amigabilidad de la que se hablaba en el punto referente a la
facilidad de uso y de aprendizaje es esencial. Así la relación entre el usuario y el programa
debe ser interactiva por medio de una interfaz -aspecto de la pantalla que facilita la
comunicación entre el programa y el usuario- intuitiva y muy amigable, aunque la carga
gráfica sea elevada.
Casi toda ella tendente a proteger a los ciudadanos de la difusión y consulta, por parte de entes o
personas privados, de la información masiva que se maneja gracias a la informática. Así nació la
LORTAD, o Ley Orgánica de Regulación y Tratamiento Automático de Datos, aprobada en 1992. En
esta ley se tratan los siguientes puntos:
- Cuales son los principios de la protección de datos: pertenencia de los datos, la exactitud de
los mismos y su uso conforme al objetivo para el que se solicitaron
- Regulación y protección jurídica de los datos de carácter personal
- Derechos de las personas a los que se les ha solicitado datos
- Disposiciones referentes a la información de carácter público
Por otro lado, la legislación europea también afecta a la normativa de nuestro país, en tanto que se
mantiene acorde con la Constitución vigente. Así, España se ve sujeta a los diferentes convenios
elaborados y aprobados por el Consejo de Europa referentes a la regulación del tratamiento de los
datos, los cuales fueron ratificados por nuestro país en enero de 1984. Además, se encuentran las
directivas europeas sobre derechos de autor, patentes y marcas, duración de los derechos, normas de
reproducción, cánones, etc., directivas que entraron en vigor a partir de noviembre de 1987.
El software que nos podemos encontrar básicamente se ajustará a uno de los tres siguientes grupos:
- Software de dominio público o Freeware: Software en el cual sólo hay que pagar el
soporte sobre el cual se halla. Esto no quiere decir necesariamente que sean malos
programas, pues a veces pueden equipararse a los comerciales.
- Shareware: Se ha de pagar el precio prefijado por el autor en caso de que el software se
vaya a utilizar con frecuencia para fines profesionales.
- Software comercial: La relación entre el software y el usuario está sujeta a un contrato que
especificará detalladamente qué es lo que el “propietario” del softwkare puede y no puede
hacer con él.
Como se ha visto en el tema anterior (ver esquema que se dio allí), los discos duros se construyen con
varios -suelen ser unos seis- discos montados sobre plataformas rígidas denominadas platters. Estos
discos se colocan unos encima de otros, dejando un espacio intermedio, e insertados en un mismo eje.
Cada uno de los seis discos tiene dos caras susceptibles de recibir información, siendo una de ellas la
cara 0 y la otra la cara 1, para el primer disco. Sucesivamente para el segundo disco, es decir, caras 2
y 3. Así hasta llegar a las últimas caras 10 y 11.
Asimismo, cada cara de un disco se divide en sectores circulares desde el eje, denominados sectores, y
en pistas o coronas concéntricas, que se van numerando desde la pista 0, la más exterior, de uno en
uno, hasta la última pista, la más cercana al eje. Cada pista se divide en segmentos o sectores de igual
superficie, denominados sectores, y que tienen, por lo tanto, la misma capacidad.
Cada una de estas coronas o pistas se puede prolongar pasando, de manera imaginaria, por las mismas
pistas de los otros discos del disco duro. A esta figura imaginaria se le llama cilindro y,
evidentemente, un disco duro tiene tantos cilindros como pistas, y, a la vez, cada cilindro tiene 12
caras, caso de tratarse de un disco duro de 6 discos.
Cada sector de una pista se divide a su vez en una serie de unidades de almacenamiento, a las cuales
se hace referencia por sus espacios iniciales denominadas clusters. Dependiendo del fabricante de
discos, estas unidades de almacenamiento son diferentes.
Cada unidad de almacenamiento se estructura de forma similar. El sistema informático tiene un área
en el comienzo del disco duro donde se guardan, sobre todo, dos tipos de información, el boot y la
FAT. La boot, o bota en inglés, contiene un programita no removible desde el exterior -a no ser que se
formatee el disco- que se llama bootstrap -aunque a veces se carga directamente desde la BIOS sin
usar el disco duro como intermediario-. Este programa se encarga de cargar otros programas más
largos que generalmente consisten en programas del DOS. El término proviene del Barón de
Munchausen, que en una de sus historias presumía de que se encontraba atrapado en un pantano en el
cual se hundía y se le ocurrió unir los cordones de sus botas para sacarse a sí mismo de allí.
La FAT o File Allocation Table es la tabla que organiza los ficheros, directorios y subdirectorios en el
disco duro. Es decir, “recuerda” dónde está cada uno de ellos en el disco y cuando se pide una
dirección o referencia para la búsqueda de información, es la FAT quién proporciona los contactos.
Algunos virus sienten especial apetito por estos dos espacios de memoria del disco duro y son
especialmente “virulentos”, pues un daño en el boot impide la carga de los programas gestores del
sistema operativo, y un error o un borrado de la FAT impide la localización de la información en el
disco, incluida aquí, también la del sistema operativo. En esos dos casos, la forma de proceder es
eliminar el virus y formatear el disco duro -casi siempre- perdiendo la información contenida en él.
Esta pregunta podría tratarse en cualquiera de los tres capítulos que se han explicado hasta aquí. El
motivo por el que se trata en este punto de la unidad didáctica 3 es porque ya se tiene conocimientos
sobre sistemas informáticos en la medida adecuada para apreciar convenientemente el tipo de trabajo
que se va a desarrollar en un puesto de administrador de sistemas informáticos.
Para dejarlo descrito lo mejor posible, se va a agrupar la información en cuatro aspectos: competencia,
capacidades, funcionalidades e integración en la empresa.
Implantar, explotar y mantener los sistemas informáticos en que se apoya la gestión y administración
de las empresa, prestando soporte a los usuarios finales.
En la actualidad, los sistemas informáticos de que se acaba de hablar son, fundamentalmente, redes
locales, de carácter pequeño y mediano. También se aplica a sistemas multiusuario, aunque en menor
medida.
.:::.
.::::::-'``'::::.
.:::'',,cd$$$$$$$bc,`.
::::,$$$$$$$$$$$$$$$$$,`.
:::'z$$$$$$$$$$$$$$$$$$$$c,
.:::'z$$$$$$$$$$$$$$$$$P"" _`.
::::'z$$$$$$$$$$$$$$$$$",d$$$$$c,.
::::: P".,,. "$$$$$$$$$$$$P" ,c,`$,`
.::::::,c$$$$$$$$$$$$$$$$$$P J$",c$$.`.
:::::::,$P" ,`?$$$$$$$$$$$$,,,c$$$$$$L<.
::::::: d$. ,$$$b,"$$$$$$$$$$$$$$$$$$$$$.$
:::::::: $$$cccccccd$$$$$$$$$$$$$$$$$$$$$$$`:
:::::::: $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$,::
::::::::'J`$$$$$$$$$$$$$$$$"$$,$$$$$$?$$$$$$F::.
.:::::::::'$,"$$$$$$$$$$$$$$$$$P??"""",,$$$$$$F:::
::::::::::: ?$$`$$$$$$$$$$$PF"" ,,<<CC>'J$$$$$P'::::
.:::::::::::::."$h"$$$$$$$$$hc.-?????'' ,d$$$$$$'::::::
::::::::::::::::::<L"$$$$$$$$$$$$$cccccc$$$$$$$F':::::::
.:::::::::::::::::::::: ?$$$$$$$$$$$$$$$$$$$$$$$'.:::::::::
:::::::::::::::::::::::::: "?$$$$$$$$$$$$$$$$$P"::::::::::::
.::::::::::::::::::::::::::::?$ccc,`"??$$$$$$$P":::::::::::::::
.::::::::::::::::::::::::::::::$$$$$$$$$$ccciicc$$`::::::::::::::
:::::` ::::::::::::::::::::::::?$$$$$$$$$$$$$$$$$$ :::::::::::::::
:::' :::::::::::::::::::::::::?$$$$$$$$$$$$$$$$$$'::::::::::::::::
::: .::::::::::::::::::::::::::?$$$$$$$$$$$$$$$$$P:::::::::::::::::
::' :::::::::::::::::::::::::::?$$$$$$$$$$$$$$$$$F:::::::::::::::::
' ::::::::::::::::::'`.,,,.```'?$$$$$$$$$$$$$$$$$'::::::::::::::::
:::::::::::::::',zd$$$$$$$$$,`\"$$$$$$$$$$$$$$$P.:::::::::::::::
:::::::::::::'zc$$$$$$$$$$$$$$$c`\`?$$$$$$$$$$$P'::::::::::::::'
:::::::::::::'z$$$$$$$$$$$$$$$$$$$$c`! ?$$$$$$$$$F,<`::::::::::'
:::::::::::::'z$$$$$$$$$$$$$$$$$$$$$$$$c`!>"?$$$$$$:$,! .:::::''
:::::::::::::,$$$$$$$$$$$$$$$$$$$$$$$$$$b,`!!`"$$$$:$$`!'c,``
:::::::::::::J$$$$$$$$$$$$$$$$$$$$$$$$$$$$b,<!!,??$c$$F!!'$$c
::::::::::::'J$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$b`<!!!!?"",!! $$$b'c,
::::::::::::,$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$c,cc,``<!`,z$$$$L`CC,
::::::::::::J$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$"<!(?$$$$$$'CCC>
:::::::::::'J$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$F<!!!!`?$$$$ CCCC
::::::::::'J$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$P"""??$$$$,!!!!! $$$$.CCCC
::::::::::,$$$$$$$$$$$$$$$$$$$$"z$$$$$P",cCCCCCCc,"?$,`!!! $$$F<CC<C
:::::::::'J$$$$$$$$$$$$$$$$$$$"f$$$P'cCCCCCCCCCCCCC>,?b,`<!?$P,CCCc,
::::::::: J$$$$$$$$$$$$$$$$$$"J$P"cCCCCCCCCCCCCCCCCCCCc"?$c$"<CCCCCC>.
::::::::'J$$$$$$$$$$$$$$$$$$P4F,cCCCCCCCCCCCCCCCCCCCCCCCc`",<CCCCCCCCC,
:::::::'J$$$$$$$$$$$$$$$$$$" cCCCCCCCCCCCCCCCCCCCCCCCCCCCc'CCCCCCCCCCC>,
:::::::,$$$$$$$$$$$$$$$$$$',CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC>>
::::::'J$$$$$$$$$$$$$$$$$F,CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC>,CC.
:::::'J$$$$$$$$$$$$$$$$$$,CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC>',CCC;
:::::,$$$$$$$$$$$$$$$$$$'CCCCCCCCCCCCCCCCCCCCCCCCCCCC>CCCCC><CCCCC',CCCC&
:::: $$$$$$$$$$$$$$$$$$'<CCCCC><CCCCCCCCCCCCCCCCCCCCC CCCCCCC>',<CC
::: d$$$$$$$$$$$$$$$$$F<CCCCCC C,CCCCCCCCCCCCCCCCCCC CCCC",`',<CCCC'
:: $$$$$$$$$$$$$$P?$$$ CCCCCC'<><CCCCCCCCCCCCCCCCC>,'<C>',cCCCCC>',c
:'d$$$$$$$$$$$$$$$$c, `CCCCCC,C CCCCCCCCCCCCCCC>>'<C,ccCCCC"C.,c$$$$- ,c$$
',$$$$$$$$$$$$$$$$$$$$$c,`C>'< ,`''',,,,ccccccCCCCCCCCCCCCCC',$$$$Czd$$$$$
,$$$$$$$$$$$$$$$$$$$$$$$$$c,<CCCCCCCCCCCCCCCCCCCCCCCCCCCCC>,d$$$$$$$$$$$$$
J$$$$$$$$$$$$$$$$$$$$$$$$$$$$c,`<CCCCCCCCCCCCCCCCCCCCCCC>',$$$$$$$$$$$$$$$
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$c,`<CCCCCCCCCCCCCCCCCCC -$$$$$$$$$$$$$$$$$
?$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$b,<CCCCCCCCCCCCCCC' `?$$$$$$$$$$$$$$$
:."?$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$c.<CCCCCCCCCC' `?$$$$$$$$$$$$$
::::."?$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$b,`<CCCCCC "$$$$$$$$$$$$
::::::::.`"?$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$b,`<CC `?$$$$$$$F
::::::::::::::`"??$$$$$$$$$$$$$$$$$$$$$$$$$$$$$c "??"
:::::::::::::::::::,c`""$$$$$$$$$$$$$$$$$$$$$$$$$c,
:::::::::::::::::'cCCCCCcc`"??$$$$$$$$$$$$$$$$$$$$$$c,
Ciclos formativos – 1º
Sistemas Informáticos Monousuario y Multiusuario
1 CONCEPTOS BÁSICOS....................................................................................................................................3
2 SISTEMA OPERATIVO....................................................................................................................................3
2.2 HISTORIA................................................................................................................................................. 4
2.2.1 Primera generación (1945–1955)..........................................................................................................4
2.2.2 Segunda generación (1955–1968)..........................................................................................................5
2.2.3 Tercera generación (1968–1981)...........................................................................................................6
2.2.4 Cuarta generación (1981-2000).............................................................................................................7
2.3 COMPONENTES TÍPICOS DE UN SISTEMA OPERATIVO..................................................................................7
2.3.1 Programas de utilidad............................................................................................................................7
2.3.2 Programas de aplicación........................................................................................................................7
2.3.3 Programas de facilidad...........................................................................................................................8
2.3.4 Programas de control.............................................................................................................................8
2.4 TIPOS DE SISTEMAS OPERATIVOS............................................................................................................ 10
2.4.1 Por su estructura organizativa.............................................................................................................10
2.4.2 Por el tratamiento del hardware..........................................................................................................11
2.4.2.1 Clásicos.......................................................................................................................................................... 12
2.4.2.2 Máquinas virtuales.........................................................................................................................................12
2.4.2.3 Servidores virtuales......................................................................................................................................12
2.4.2.4 Sistemas operativos de red............................................................................................................................12
2.4.3 Por su tecnología de construcción.......................................................................................................13
2.4.3.1 Monoprogramación........................................................................................................................................13
2.4.3.2 Multiprogramación........................................................................................................................................13
2.4.3.3 Multiproceso..................................................................................................................................................14
2.4.4 Por su relación con el usuario..............................................................................................................14
2.4.4.1 Sistemas BATCH o secuenciales o por lotes.................................................................................................14
2.4.4.2 Sistema Interactivo........................................................................................................................................15
2.4.4.3 Sistema de tiempo compartido......................................................................................................................15
2.4.4.4 Sistemas de tiempo real.................................................................................................................................16
2.4.4.5 Sistemas operativos distribuidos...................................................................................................................17
2.4.4.6 Por el número de usuarios.............................................................................................................................17
3 SISTEMAS OPERATIVOS MÁS USUALES................................................................................................18
3.1 CP/M.................................................................................................................................................... 18
3.2 PICK.................................................................................................................................................... 18
3.3 OASIS.................................................................................................................................................. 18
3.4 MS-DOS............................................................................................................................................... 18
3.5 OS/2..................................................................................................................................................... 19
3.6 UNIX..................................................................................................................................................... 20
3.7 LINUX................................................................................................................................................. 20
3.8 WINDOS 3.X, 95 Y 98............................................................................................................................. 20
3.9 WINDOWS NT....................................................................................................................................... 21
3.10 APPLE.................................................................................................................................................. 21
4 SEGURIDAD EN LOS SISTEMAS OPERATIVOS.....................................................................................22
4.1 SEGURIDAD LÓGICA............................................................................................................................... 22
4.1.1 Control de Usuarios..............................................................................................................................22
4.1.2 Protección de los Recursos...................................................................................................................22
4.2 REQUISITOS DE SEGURIDAD EN LOS FICHEROS........................................................................................23
4.3 SEGURIDAD EN LA TRANSMISIÓN DE DATOS........................................................................................... 23
4.4 SISTEMAS TOLERANTES A FALLOS........................................................................................................... 23
5 FUTURO DE LOS SISTEMAS OPERATIVOS............................................................................................23
5.1 PRINCIPIOS DE DESARROLLO FUTURO...................................................................................................... 24
5.2 TENDENCIAS DEL MERCADO.................................................................................................................. 25
5.2.1 Windows Me e Internet por Televisión.................................................................................................25
5.2.2 Apple y NeXT........................................................................................................................................25
5.2.3 Perspectivas de los Sistemas Operativos..............................................................................................26
1 CONCEPTOS BÁSICOS
Aplicaciones informáticas: Conjunto de programas que tienen un trabajo definido, casi siempre en
apoyo de las demandas del usuario. Suele estar constituido por otros subprogramas y pueden ser de
muy diversa envergadura. Aquí se incluirían los paquetes de ofimática, un software orientado a la
seguridad del sistema, un programa para la audición y visión de ficheros multimedia, etc.
Se llaman aplicaciones porque sus tareas están muy definidas y son poco modificables por parte del
usuario, de modo que éste no puede alterar su forma de trabajo ni su orientación original.
Fabricantes de software: Son empresas que tiene como objetivo único o fundamental construir
aplicaciones informáticas. Estas empresas elaboran el programa a medida –de acuerdo con el
usuario y sus necesidades- o llave en mano –comercializados en tiendas-.
Proceso: Se define como la unidad de trabajo que se ejecuta en el microprocesador. Es normal que al
iniciar una tarea, como por ejemplo, abrir un programa de procesador de textos, se lancen varios
cientos de procesos que tienen que ser terminados por la CPU.
También proceso es sinónimo de tarea, ya que cuando se dice que un sistema es capaz de gestionar
varios procesos simultáneamente, quiere decirse capaz de gestionar varias tareas a la vez.
También se suele denominar proceso a una unidad de trabajo lanzada por la ejecución de un
programa, es decir, es casi sinónimo de instrucción, aunque una instrucción puede contener, dentro
de sí, varios procesos.
A los efectos de esta unidad, un proceso es una unidad de ejecución dentro de la CPU.
Sistema operativo: Se trata de un grupo de programas que gestiona los recursos del ordenador y
coordina la ejecución de los programas, así como mantener las relaciones adecuadas entre la CPU,
las memorias, los dispositivos, los periféricos, y entre estos y los programas de aplicación.
Software: Es el conjunto de los programas informáticos necesarios para que el sistema informático
pueda llevar a cabo las tareas que se esperan de él. Se divide en dos grupos: los programas del
sistema -que manejan los procesos y recursos lógicos de funcionamiento del ordenador-, y los de
aplicación -destinados a cubrir los deseos de los usuarios-. Los sistemas operativos se incluyen
ampliamente en el primer grupo y sólo parcialmente en el segundo.
Tarea: Es una actividad requerida por una aplicación o por el usuario, casi siempre entendida de
manera temática, es decir, suele tratarse de algún trabajo que el usuario ve que se puede demandar
al sistema o que éste le proporciona: apertura de un programa de correo, guardar un fichero de
texto, enviar un documento a impresora, abrir un programa de tratamiento de sonidos, etc. Suele
estar constituida por varios procesos, de forma que el microprocesador tiene que gestionar todos
ellos antes de que la tarea esté concluida.
2 SISTEMA OPERATIVO
Como se ha visto, un sistema operativo es un tipo de software, es decir, forma parte de la parte lógica
del sistema, que es, sobre todo, un software de sistema, ya que tiene la función de cooperar con el
usuario para que este se comunique eficazmente con el hardware y el software de aplicación. En los
últimos tiempos, aparte de este objetivo principal, se ha agregado otro secundario, como es el de
apartar a los usuarios, en la medida de lo posible, de las instrucciones máquina del equipo.
Al utilizar un sistema informático se requieren de él recursos, como por ejemplo, procesos de trasvase
de información, gestión de memorias, controladores, etc. Para obtener un sistema eficiente, es
necesario que la gestión de esos recursos sea la óptima, por lo que se necesita de un programa como el
sistema operativo. Esa eficiencia se pretende también para la gestión de los periféricos de entrada y de
salida -impresoras, teclados, punteros,...-, y también para los dispositivos de entrada y de salida
-discos, cintas,...-.
Además, el usuario de un sistema no se contentará sólo con usar éste per se, sino que querrá ejecutar
otros programas de aplicación, que es lo que justifica, al fin y al cabo, el invento de los equipos
informáticos. El sistema operativo gestiona, de la manera más eficiente y eficaz posible, las relaciones
entre esos programas y todo el sistema. Es decir, es un controlador lógico de todo el proceso y flujo
de información, así como de la ejecución de dichos programas.
Esta materia se va a tratar con más profundidad en el tema siguiente, por lo que se van a dar
descripciones generales. Sólo conviene recordar que un sistema operativo crea un entorno de trabajo,
entorno gracias al cual el usuario puede “moverse” dentro del sistema, operar en él, y, por supuesto,
enmarcar el funcionamiento de los programas de aplicación, facilitando su ejecución, y haciéndola lo
más fiable y rápida posible:
- El sistema operativo tendrá una función de ayuda o colaboración con las tareas destinadas a
la programación, como manejo y ejecución de programas, gestión de la información y manejo
de ficheros, operaciones de escritura y lectura, operaciones de entrada y salida para el sistema y
detección de posibles fallos en la ejecución de los programas o en el funcionamiento del
sistema.
- La gestión más eficiente de los recursos del sistema, como la asignación de memorias, compartición
de la CPU, dispositivos de entrada y de salida, seguridad, interpretar lenguajes de control,
protección de datos y ficheros, gestionar las interrupciones, etc.
- Hacer de intérprete con el usuario, proporcionándole una interfaz amigable y cómoda para la
intermediación de órdenes y solicitudes, así como proporcionar métodos y procedimientos en un
lenguaje asequible, alejado de los lenguajes de bajo nivel.
2.2 Historia
Dado que los primeros ordenadores, muy voluminosos debido al elevado número de componentes
mecánicos y eléctricos de que disponían, funcionaban por lectura de tarjetas que estaban perforadas
según un código de posicionamiento que se traducía posteriormente a código máquina, no necesitaban
sistema operativo. El sistema funcionaba al ritmo que le marcaba el operario que introducía las
tarjetas y que, más tarde, se encargaba de extraer las tarjetas resultado, que se leían en el lector
correspondiente. Este operario tenía un tiempo determinado de trabajo asignado para él y para esa
tarea, lo que hacía del tiempo de uso del sistema un recurso escaso y, por lo tanto -debido a la escasez
de equipos-, caro. En este modo de trabajo -denominado modo de puerta abierta-, el equipo podía
estar la mayor parte del tiempo inactivo esperando las decisiones del operario o del programador. O
dejar el trabajo inconcluso porque se había agotado el tiempo asignado para ese operario y esa tarea.
En esta época no existían los sistemas operativos. Pues las máquinas estaban basadas en la utilización
de la tecnología de las válvulas o tubos de vacío que hacía que los ordenadores fuesen enormes. El
usuario tenía que hacer todos los programas en código binario o bien como una ristra de papel con
perforaciones. Las máquinas eran de un enorme coste.
Se toma el año 1945 como límite inferior debido a que es el año convenido como el de la aparición de
la informática, por coincidir con el de la aparición de las primeras máquinas automáticas para el
desarrollo de ciertas tareas.
Aparecen los transistores que hacen que las máquinas se reduzcan de tamaño, facilitando la creación
de los sistemas operativos.
El siguiente paso fue idear un breve código de señales que permitiera al intérprete que pasaba la
posición de las perforaciones a código máquina saber cuándo comenzaba una tarea y cuándo
finalizaba. Así nació el JCL -del inglés Job Control Language o Lenguaje de control de tareas-. La
necesidad de esa interpretación condujo al diseño de ese sistema operativo.
Aparecen los lenguajes de bajo nivel –assembler-. En esta época se estandariza el código para una
mayor divulgación. Aparece un “embrión” de programa, dando lugar al IOCS -Sistema de Control de
Entrada/Salida, de Input/Output Control System-.
Aparecen los lenguajes de alto nivel que tenían que cargar un compilador que convertía el lenguaje en
ensamblador –assembler- de la máquina en la que se compilaba.
Más tarde se crea un sistema operativo formado a partir de ciertos componentes estructurados por
niveles, según su posicionamiento en los niveles de memoria. Así, tenía el intérprete de fichas de
control en el nivel más bajo de la memoria. En el segundo nivel se encontraban los programas que
compartimentaban y secuenciaban las diferentes tareas. En el tercer nivel se ubicaban los gestores de
los dispositivos de entrada y de salida. Por último, en el cuarto nivel, en el superior, estaban el
cargador, las rutinas y la gestión de las interrupciones. Estos cuatro niveles se cargaban en los
primeros 64 Kb. de memoria.
- El estado superusuario: que permite ejecutar las instrucciones sin pararse a valorarlas (las
instrucciones que sólo se pueden ejecutar de este modo se llaman privilegiadas.
- Estado usuario: Se restringe el uso de las instrucciones.
Cuando se necesita una tarea con carácter restrictivo se necesita una orden privilegiada que sólo se
puede dar en modo superusuario; para esto está el gestor de interrupciones, con dos tipos de trabajo:
interrupciones hardware e interrupciones software. Además empiezan a aparecer más periféricos como
las unidades de cinta magnética y una mejora notable de las impresoras.
Dado que esta estructura mejoraba la gestión de la memoria y la hacía más eficiente, pero al mismo
tiempo restaba memoria de uso, se pasó a grabar la información de las fichas a cintas magnéticas. De
esa manera se esperaba reducir el tiempo dedicado a la lectura de datos. Una vez se metían todos los
datos en cinta, se les asignaban los procesos a seguir con ellos, formando un paquete de información
que ocupaba un sector de cinta. Si sobraba cinta, que era lo más frecuente, se insertaban más paquetes
con la finalidad de optimizar tiempos de uso del sistema y acelerar el tiempo de absorción de
información. Sin embargo se empeoró en una cosa: hacía falta una gestión más especializada de los
dispositivos de entrada y de salida.
Posteriormente se implementó el sistema con dispositivos que permitían carga y descarga a cinta
desde el propio ordenador principal, así como el uso de terminales u ordenadores independientes que
preparaban los procesos que se incluyen en la cinta para su trabajo en el principal. Por este método, el
sistema solicita una ficha al monitor que se lo pasa al sistema en forma de imagen. Para ello usa la
misma rutina que con las lectores de fichas, pero ahora gestiona un lector de cintas. Con ello nació lo
que se denomina independencia de dispositivos, lo que es posible si el sistema operativo interpreta
qué dispositivo lógico leer y cómo hacerlo (Figuras 5.1 y 5.2).
Había ordenadores especializados para multitud de cosas concretas, una especie de selva de equipos y
de incompatibilidades. IBM resolvió este problema y creó un software compatible para ordenadores
de propósito general, dando lugar a las familias de ordenadores: la primera fue la 360, luego la 370, la
4330, la 3080 y la 3090. La 360 utiliza los circuitos integrados LSI – de Large Scale Integration-.
Aparecen también las unidades de disco, especialmente la denominada unidad de disco duro. Ahora se
utiliza el disco para realizar la función del buffer. Este sistema denominado spooling consiste en que
el sistema operativo almacena en un fichero virtual, denominado spool, los ficheros o datos que se
destinan a impresión, formando en ese fichero una “cola” de espera. Posteriormente se introdujeron
unos parámetros que servían para alterar la prioridad de impresión para cada fichero y para indicar las
copias a realizar de cada fichero.
Dado que los sistemas evolucionaron muy deprisa en los años 70 y 80, con microprocesadores muy
potentes y capaces, se produjeron periodos de inactividad de la CPU o bien su infrautilización. Para
solucionarlo se ideó la compartición, por la que varios usuarios podían usar simultáneamente la CPU
gracias a las facilidades de la multiprogramación y de la planificación de la CPU.
Aparecen los sistemas de tiempo compartido, que suponían volver a interactuar con el sistema, y los
sistemas de tiempo real, que funcionan con una serie de sensores que dan una respuesta inmediata.
Se utilizan circuitos integrados VLSI –de Very Large Scale Integration- con una enorme potencia.
Aparecen los microprocesadores, fundamento de los ordenadores -como las antiguas estaciones de
trabajo, pero ahora a nivel personal-, y los grandes desarrollos basados en algunas características:
- Conectividad: que permite una gran libertad de comunicación pero hace que aparezcan
problemas en la seguridad. Se trata de la tecnología que más tarde evolucionaría en la
denominada Plug & Play, aplicada con éxito en sistemas operativos de entorno Windows y
en los construidos por Sun Microsystems utilizando Java como lenguaje base.
- Conformación: Los de red, en los que se gestiona un conjunto de ordenadores clientes
relacionados con un ordenador llamado servidor; y los distribuidos, que son transparentes
para el usuario.
- Tratamiento de hardware: como la máquina virtual o división del hardware en porciones
virtuales para dar a un ordenador uo para varios usuarios independientes.
Son los programas que incluye el sistema operativo y que le sirven para realizar todas sus funciones.
Se dividen en cuatro tipos:
Son los programas destinados a gestionar algunos elementos del sistema realizando labores de carácter
repetitivo, tales como la clasificación de ficheros, localización y evitado de errores, protección de
archivos, etc. Suelen ser fabricados por los fabricantes de los ordenadores y, en la época actual, suelen
estar hechos por los fabricantes de los sistemas operativos.
Existen dos tipos dentro de este apartado: los programas que se encargan de la organización del
sistema, permitiendo gestionar las librerías de los programas y proporcionando la protección de la
información, y los organizadores de archivos, manteniendo su integridad, el orden y la información.
Su objetivo es resolver las situaciones que se le plantean al usuario. A este fin existen aplicaciones
desarrolladas dentro del propio sistema operativo, y otras diseñadas por otras empresas que se
incorporan como un apoyo al sistema operativo. Existen dos grupos, los programas de gestión y los de
cálculo. Los primeros son los que se destinan al manejo de un gran volumen de datos con operaciones
sencillas de clasificado, ordenamiento, extracción, escritura, etc., y procesos de cálculo muy simples
-manejo de ficheros de datos de gestión empresarial, impresión de bancos de datos,...-. Por ese motivo
requieren gran espacio de almacenamiento y necesitan poca memoria RAM para su ejecución, aunque
una dosis alta de gestión de periféricos.
Los programas de cálculo son los encargados de aplicar funciones algebraicas, matemáticas y
científicas sobre un banco de datos, por lo que necesitan rapidez de cálculo, y por lo tanto de
microprocesador, requieren un poco más de memoria RAM que los anteriores, y poca gestión de
periféricos. Se incluirían aquí los programas relativos al uso defunciones que requieren coprocesador
matemático, más conocidos como X87 en los antiguos microprocesadores -iteraciones matemáticas,
resolución de ecuaciones, gestión de coma flotante,...-.
Forman parte del sistema operativo con la finalidad de proporcionar al usuario un modo de gestionar y
preparar los parámetros de funcionamiento de los programas de aplicación. Lo normal es encontrarse
con estos programas insertos en el sistema operativo y, como el resto del sistema, estarán escritos en
lenguajes de alto nivel, es decir, alejados del código máquina. Dentro de ellos existen tres grupos, los
intérpretes, los gestores de librerías y los editores.
Los intérpretes traducen el lenguaje que maneja el usuario desde su interfaz, lenguaje de alto nivel,
próximo al lenguaje natural -eso sí, en inglés,- al lenguaje de bao nivel, es decir, próximo al del
sistema o código máquina. Es normal incluir aquí el conjunto de programas que pasan el lenguaje de
alto nivel de programación al de bajo nivel de la máquina, es decir, los compiladores y los programas
intérpretes propiamente dichos. No obstante, en la actualidad, estos programas de compilación,
depuración e intérpretes no se encuentran incluidos en los sistemas operativos estándar que se
distribuyen generalmente. También suelen meterse en este saco los programas preprocesadores y los
programas ensambladores, aunque también están fuera de la órbita del sistema operativo.
Los gestores de librerías tienen como misión gestionar las aplicaciones que se van incorporando al
sistema por parte del usuario. Para ello colaboran en la instalación de los programas, los desinstalan
total o parcialmente y los organizan dentro del sistema. Las librerías se pueden definir como aquellas
partes del programa, que forman parte de su colección, y que están disponibles para su uso dentro de
un entorno determinado. Una librería típica podría contener compiladores, programas de utilidades, de
operaciones matemáticas, etc. Normalmente para su uso sólo se necesita referirla para que se
incorpore a un programa de usuario. Según el nivel de proximidad con el programador, las librerías
pueden clasificarse en librerías fuente -que contiene los códigos fuente de su programa tal como los
creó el programador originalmente-, librerías objeto -que son módulos ya compilados dentro de los
distintos lenguajes-, y librerías ejecutables -ya en código máquina conteniendo los módulos ya
compilados, depurados y linkados (enlazados) para su uso inmediato-.
Los programas editores son los que proporcionan a los usuarios un medio para poder escribir textos,
ficheros y programas, permitiendo correcciones, grabaciones y recuperaciones. Las facilidades que
proporciona el editor son muy limitadas y su misión consiste en el soporte textual sin llegar a la
sofisticación de los procesadores de texto.
Son los programas que tienen como finalidad la mejor gestión de los recursos del sistema por parte de
los programas y por parte del usuario. Proporcionan mejores recursos en cada momento, facilitan el
acceso ordenado a los recursos disponibles y evitan bloqueos en el funcionamiento de los procesos.
Suelen disponer de módulos que tratan la gestión de las distintas áreas del sistema, como es el caso
del hardware, el software y las tareas que se están realizando:
- En cuanto a hardware gestiona las memorias, direccionamientos, la CPU con sus distintos
elementos y las rutinas que dirigen los trasvases de información de entrada y salida.
- La gestión de software maneja las relaciones entre los módulos del sistema operativo, entre
estos módulos y las aplicaciones con sus librerías y facilita el transporte entre los registros
de memoria y los periféricos.
- La gestión de tareas permite la asignación de memoria a cada tarea, las ordena por prioridades,
gestiona su funcionamiento, aunque se estén llevando a cabo varias a la vez, y permite la
comunicación entre el sistema y el usuario.
hasta que el archivo se cierra, bien por el programa que lo estaba ejecutando o por el propio
sistema operativo.
- Acceso a los archivos: existen diversas maneras de acceder a un archivo: Secuencialmente, al
azar, etc. Este grupo de programas se encarga de transformar las direcciones lógicas que
figuran en el programa en ejecución,en las correspondientes direcciones físicas sobre el
soporte donde están o van a ser grabados los datos.
PROGRAMA DE GESTIÓN DE TRABAJO. MONITOR O JOB-CONTROL
Son los encargados de la preparación de los programas de usuario para su ejecución o
relanzamiento, así cómo de la asignación de periféricos. Sus funciones son las siguientes:
- Preparación de programas: transfiere los programas del usuario desde la biblioteca imagen de
memoria a la memoria central de la computadora a partir de una determinada dirección y por
medio de un programa que se denomina “cargador”.
- Asignación de periféricos: en un programa no se especifica el periférico concreto que se va a
utilizar, sino que solicita una impresora, un disco... Este grupo de programas de asignación
transforma las asignaciones simbólicas en físicas y concretas de cada periférico.
- Almacenamiento de identificativos de archivos: existen unos identificativos internos que son
unos bloques de información especial que van grabados al comienzo de cada archivo para
dar información sobre el mismo. Estos programas de almacenamiento de identificativos son
los encargados de identificar y controlar los archivos del usuario a través de estos bloques de
información.
- Relanzamiento de programas: hay veces, que durante la ejecución de un programa, se produce
interrupciones fortuitas que causan la parada del proceso que se estaba ejecutando.
- Este grupo de programas se encarga de establecer un punto de control en el momento de la
interrupción para que se pueda reproducir el estado que tenía el proceso en el momento de la
parada. Para ello, se establece el posicionamiento de cada archivo en el punto de trabajo en
que estaba, los valores de cada registro, el valor del aumentador, etc... hasta conseguir el
mismo estado en el que estaba la ejecución del programa en el momento de la interrupción.
Una vez solucionada la causa de la parada se pone en funcionamiento nuevamente el
proceso.
PROGRAMAS DE GESTIÓN DE MEMORIA.
Su misión es la de asignar, y controlar el almacenamiento en la memoria interna y externa de la
computadora, de dos maneras:
- Gestión de la memoria central: existen multitud de métodos de asignación de memoria central
o interna según se trate de un sistema operativo monoprogramado o multiprogramado. Los
programas que controlan y gestionan la memoria interna asignan espacios que deben ocupar
los programas y datos estableciendo zonas de seguridad para que no se produzcan colisiones.
- Gestión de memoria secundaria: tienen como misión hacer ver al usuario el tratamiento de la
información almacenada en la memoria externa, desde el punto de vista lógico, ocultándole
la realidad física. Un sistema puede mantener en un mismo instante un gran número de
procesos, por ello será necesario la existencia de una serie de programas en el sistema
operativo que nos aseguren el correcto funcionamiento del almacenamiento secundario.
Se suelen clasificar por diversos criterios. Su estructura interna, atendiendo a la organización de sus
funciones internas, relaciones entre los módulos y su conexión de salida con el exterior. Se dividen en
monolíticos, jerárquicos, virtuales y servidores.
Es decir, por la manera que gestiona y manipula los componentes físicos que se encuentran en el
propio equipo o en otros equipos remotos.
2.4.2.1 Clásicos
Tratan los componentes del sistemas como tales, sin un tratamiento especial. Para ello detectan su
instalación por medio de señales, basándose en un sistema Plug&Play. Su misión es sacar el máximo
rendimiento a los constituyentes del sistema.
Se trata de sistemas operativos que simulan la existencia de hardware. Es decir, hacen aparecer varios
medios de trabajo aunque sólo exista un único equipo físico.
La ventaja que ofrece esta estructura es que varios usuarios pueden usar el mismo microprocesador, a
la vez, y utilizando diferentes sistemas operativos. Es como si cada usuario “creyera” estar utilizando
su propio equipo, sus propios recursos de memoria, con sus periféricos, dispositivos de entrada, etc.
En este caso, el núcleo del sistema se denomina monitor de la máquina virtual y se ubica en la
máquina por medio de la multiprogramación, dando lugar a un nivel superior de la estructura donde se
“crean” las distintas maquinas virtuales, a imagen y semejanza de la máquina física.
Debido a que cada función va a gozar de autonomía plena y su única relación con el resto del sistema
va a ser a través del gestor de recursos del sistema operativo incluido en ese nivel superior, se pueden
distribuir las tareas de manera independiente entre sí.
De esta forma cuando un usuario solicita que se lleve a cabo un proceso, el sistema operativo lo envía
al nivel del servidor, que lo interpreta y gestiona, enviando las órdenes correspondientes a los niveles
inferiores. Estos tratan el procedimiento y devuelven al servidor virtual un resultado, que éste se
encarga de hacer llegar al usuario.
Son aquellos sistemas que mantienen a dos o más ordenadores unidos por medio de algún sistema de
comunicación -físico o no-, con el objetivo primordial de poder compartir los diferentes recursos y la
información del sistema.
El primer sistema operativo de red estaba enfocado a equipos con un procesador Motorola 68000,
pasando posteriormente a procesadores Intel como Novell Netware.
Los sistemas operativos de red mas ampliamente usados son: Novell Netware, Personal Netware,
LAN Manager, Windows NT Server, UNIX, LANtastic. En la actualidad, de todos ellos, el que más
se está instalando para pequeñas y medianas empresas, así como para entidades docentes y ámbito
doméstico es Windows NT.
2.4.3.1 Monoprogramación
La más anticuada, puesto que se utilizaba en los sistemas operativos que no prevén una posible
compartición de recursos entre programas o entre usuarios. Es decir, idónea para usuarios que realizan
operaciones rutinarias y lineales o que tienen operaciones regulares de entrada y salida de dispositivos
o de periféricos.
Tiene una ventaja que consiste en que la asignación de recursos a un usuario y a una tarea permite la
concentración sobre un determinado trabajo y una mayor velocidad de éste. La desventaja es que el
rendimiento del equipo baja dado que se establece una lista de espera de usuarios o de tareas,
permitiendo la entrada de uno u otro según las prioridades que tengan asignadas en el sistema.
2.4.3.2 Multiprogramación
La técnica más generalizada para tratar estos aspectos en los sistemas operativos es la de la
multiprogramación, que permite usar de manera más rápida y eficiente el microprocesador, aporta
diversos marcos de memoria para distintos programas y posibilita alternar y simultanear trabajos
realizados por diferentes programas. Al mismo tiempo gestiona mejor la memoria dejando más
memoria para la ejecución de los programas y aporta mecanismos de protección de las diversas
memorias existentes.
Esto presenta, a veces, un problema. El acceso de varios programas a un mismo recurso o a un mismo
módulo y/o posición de memoria puede llegar a producir interbloqueos. Para evitar estos fallos se
deben diseñar procedimientos que asignen la capacidad de la CPU y de la memoria, por ejemplo,
estableciendo alguna interrupción en uno de los programas -lo que se decide según una tabla de
prioridades establecida en el sistema operativo según parámetros de funcionamiento y periféricos de
uso-, permitiendo al otro programa, el prioritario, terminar su operación o el uso de un periférico.
La multiprogramación también aporta algún problema. Por ejemplo, si antes se producía un error
sólamente afectaba al programa ejecutado en ese instante, pero en cambio, ahora, puede afectar a
todos los programas en proceso. Para que esto no suceda y el núcleo detecte los errores de programa
existe tres tipos de protección: protección de E/S, protección de memoria y protección de CPU.
El ordenador debe permitir al sistema operativo tener el control del sistema pero no al usuario, por lo
tanto tiene que diferenciar los dos casos: modo usuario y modo supervisor. Cada rutina que llega al
ordenador diferenciará con un bit adicional (1, para el modo supervisor y 0, para el modo usuario).
-En general, los sistemas de multiprogramación se caracterizan por tener múltiples programas
activos compitiendo por los recursos del sistema: procesador, memoria, dispositivos
periféricos.
2.4.3.3 Multiproceso
Es cuando el sistema de separar CPUs físicas o virtuales y encarga en cada una de ellas un único
proceso. Si existen varias CPUs para una única memoria central, se denomina multiproceso acoplado.
Si se trata de varias memorias dentro de la memoria central y a cada memoria se le asigna una CPU,
se le da el nombre de multiproceso independiente.
Se trata de un esquema bastante típico de grandes sistemas, donde a veces el usuario pierde
protagonismo ante procesos rutinarios que no requieren una vigilancia expresa o donde el factor
tiempo no es esencial. Es el caso de las impresiones masivas que se llevan a cabo en organismos
públicos y grandes corporaciones, o bien la extracción de copias de seguridad que se llevan a cabo
regularmente en los grandes sistemas.
Trabajan señalando el usuario una serie de tareas concatenadas que se realizan sucesivamente en el
ordenador. Este sistema aprovechan al 100% la CPU, pues el usuario decide cómo es esa secuencia
para obtener ese aprovechamiento. Es bueno económicamente pero con una desventaja grande e
importante, la falta de interactividad. La tecnología presente es la monoprogramación.
Los sistemas operativos por lotes, procesan una gran cantidad de trabajos con poca o ninguna
interacción entre los usuarios y los programas en ejecución. Se reúnen todos los trabajos comunes
para realizarlos al mismo tiempo, evitando la espera de dos o más trabajos como sucede en el
procesamiento en serie. Estos sistemas son de los más tradicionales y antiguos, y fueron introducidos
alrededor de 1956 para aumentar la capacidad de procesamiento de los programas.
Cuando estos sistemas están bien planeados, pueden tener un tiempo de ejecución muy alto, porque el
procesador está mejor utilizado y los sistemas operativos pueden ser simples, debido a la
secuenciabilidad de la ejecución de los trabajos.
Algunos ejemplos de sistemas operativos batch más conocidos son el SCOPE, del DC6600, el cual
está orientado a procesamiento científico pesado, y el EXEC II para el UNIVAC 1107, orientado a
procesamiento académico.
Algunas otras características con que cuentan los sistemas operativos por lotes son:
- Requiere que el programa, datos y órdenes al sistema sean remitidos todos juntos en forma de
lote.
- Permiten poca o ninguna interacción usuario/programa en ejecución.
- Mayor potencial de utilización de recursos que procesamiento serial simple en sistemas
multiusuarios.
- No conveniente para desarrollo de programas por bajo tiempo de retorno y depuración fuera
de línea.
- Conveniente para programas de largos tiempos de ejecución (ej, análisis estadísticos, nóminas
de personal, etc.).
- Se encuentra en muchos computadores personales combinados con procesamiento serial.
- Planificación del procesador sencilla, típicamente procesados en orden de llegada.
U.D. 6 - Sistemas Operativos, funcionamiento y gestión, pág. 35 de 15
1º Ciclos - Sistemas Operativos Multiusuario y en Red
Juan P. Benito
- Planificación de memoria sencilla, generalmente se divide en dos: parte residente del sistema
operativo y programas transitorios.
- No requieren gestión crítica de dispositivos en el tiempo.
- Suelen proporcionar gestión sencilla de manejo de archivos: se requiere poca protección y
ningún control de concurrencia para el acceso.
En este tipo de sistema operativo no se aprovecha la CPU totalmente, pues el ordenador trabaja según
las peticiones que el usuario va lanzando a cada momento. Es típico de equipos domésticos o
personales.
CPU TERMINAL
Se define como el proceso por el cual se mantienen recursos con diferentes atributos de acceso para
grupos de trabajo separados. El trabajo de los usuarios es interactivo en cuanto a la CPU se refiere, de
manera que los usuarios no aprecian que existan otros usuarios sino que el sistema está en exclusiva a
su disposición.
Permiten la simulación de que el sistema y sus recursos son todos para cada usuario. El usuario hace
una petición a la computadora, esta la procesa tan pronto como le es posible, y la respuesta aparecerá
en la terminal del usuario.
Los principales recursos del sistema, el procesador, la memoria, dispositivos de E/S, son
continuamente utilizados entre los diversos usuarios, dando a cada usuario la ilusión de que tiene el
sistema dedicado para sí mismo. Esto trae como consecuencia una gran carga de trabajo al sistema
operativo, principalmente en la administración de memoria principal y secundaria.
Las características más importantes de los sistemas operativos de tiempo compartido son:
- Programas se ejecutan con prioridad rotatoria que se incrementa con la espera y disminuye
después de concedido el servicio.
- Evitan monopolización del sistema asignando tiempos de procesador (time slot).
- Gestión de memoria proporciona protección a programas residentes.
- Gestión de archivo debe proporcionar protección y control de acceso debido a que pueden
existir múltiples usuarios accediendo a un mismo archivo.
CPU Terminales
Son los sistemas que controlan algún proceso, donde continuadamente hay sensores que dan
información de cómo se encuentra la CPU. Son sistemas informáticos donde los requerimientos de
tiempo son fundamentales, casi siempre tratándose de tareas relacionadas con la seguridad en los
edificios –alarmas, robos, incendios-, control medioambiental –museos-, sistemas de control de tráfico
aéreo, etc.
Los sistemas operativos de tiempo real son aquellos en los cuales no tiene importancia el usuario, sino
los procesos. Por lo general, están subutilizados sus recursos con la finalidad de prestar atención a los
procesos en el momento que lo requieran. Se utilizan en entornos donde son procesados un gran
número de sucesos o eventos.
Muchos sistemas operativos de tiempo real son construidos para aplicaciones muy específicas como
control de tráfico aéreo, bolsas de valores, control de refinerías, control de laminadores. También en el
ramo automovilístico y de la electrónica de consumo, las aplicaciones de tiempo real están creciendo
muy rápidamente. Otros campos de aplicación de los sistemas operativos de tiempo real son los
siguientes:
- Control de trenes
- Telecomunicaciones
- Sistemas de fabricación integrada
- Producción y distribución de energía eléctrica
- Control de edificios
- Sistemas multimedia
Algunos ejemplos de sistemas operativos de tiempo real son: VxWorks, Solaris, Lyns OS y Spectra.
Los sistemas operativos de tiempo real, cuentan con las siguientes características:
- Se dan en entornos en donde deben ser aceptados y procesados gran cantidad de sucesos, la
mayoría externos al sistema computacional, en breve tiempo o dentro de ciertos plazos.
- Se utilizan en control industrial, conmutación telefónica, control de vuelo, simulaciones en
tiempo real., aplicaciones militares, etc.
- Objetivo es proporcionar rápidos tiempos de respuesta.
- Procesa ráfagas de miles de interrupciones por segundo sin perder un solo suceso.
- Proceso se activa tras ocurrencia de suceso, mediante interrupción.
U.D. 6 - Sistemas Operativos, funcionamiento y gestión, pág. 37 de 15
1º Ciclos - Sistemas Operativos Multiusuario y en Red
Juan P. Benito
Permiten distribuir trabajos, tareas o procesos, entre un conjunto de procesadores. Puede ser que este
conjunto de procesadores esté en un equipo o en diferentes, en este caso es transparente para el
usuario. Existen dos esquemas básicos de éstos. Un sistema fuertemente acoplado es a es aquel que
comparte la memoria y un reloj global, cuyos tiempos de acceso son similares para todos los
procesadores. En un sistema débilmente acoplado los procesadores no comparten ni memoria ni reloj,
ya que cada uno cuenta con su memoria local.
Los sistemas distribuidos deben de ser muy confiables, ya que si un componente del sistema se
compone otro componente debe de ser capaz de reemplazarlo.
Entre los diferentes sistemas operativos distribuidos que existen tenemos los siguientes: Sprite,
Solaris-MC, Mach, Chorus, Spring, Amoeba, Taos, etc.
Es todo lo contrario a monousuario; y en esta categoría se encuentran todos los sistemas que
cumplen simultáneamente las necesidades de dos o más usuarios, que comparten mismos
recursos. Este tipo de sistemas se emplean especialmente en redes. En otras palabras
consiste en el fraccionamiento del tiempo -timesharing-.
3.1 CP/M
Comienza su desarrollado Intel y después fue terminado y comercializado por la flamante compañía
Digital Research. Este sistema operativo es monousuario e independiente del hardware, basado en
microprocesadores de 8 bits (Intel 8080, 8085 y Z-80), tubo gran cantidad de programas disponibles
para él, al hacerse muy famoso, como inconveniente, de cara al usuario poco experto, era su difícil
aprendizaje.
3.2 PICK
Desarrollado por Don Nelson y Dick Pick, para microprocesadores 68000 de Motorola. Luego sería
utilizado por IBM en XT e IBM 4300. Se trata de un S.O potente, muy rápido y eficaz en la gestión
de bases de datos, así como fácil de utilizar.
3.3 OASIS
Creado por la firma norteamericana Phase One para el microprocesador de 8 bits Z-80 A. Hoy es apto
tanto para ordenadores de 8 como de 16 bits en desarrollo mono y multiusuario, es un S.O muy fácil
de utilizar que ofrece buenas prestaciones.
3.4 MS-DOS
Se trata de un sistema operativo monousuario, es decir, sólo permite trabajar en un puesto. Fue creado
en 1981 por Microsoft por encargo de IBM para instalarlo en su nueva línea de PCs. Así, las siglas
MS-DOS hacen referencia a su fabricante, MicroSoft, y al sistema operativo -Disk Operating System-.
Su aceptación por parte de los usuarios y algunas de las utilidades que se han ido incorporando le han
hecho responsable de la escasa diversificación que existe en este mercado, pues lo ha acaparado casi
en exclusividad. Algunos autores lo consideran directamente responsable de la rápida extensión y
consumo de PCs en todo el mundo.
Las modificaciones en el sistema han provocado la aparición de sucesivas versiones. Si los cambios
no son importantes, se reflejan en la cifra de las centésimas del número de versión, si es importante se
reflejan en la de las décimas o en la de las unidades (ver Tabla 5.2)
La evolución del entorno operativo Windows, ahora sistema operativo, que incluye al propio DOS,
implica que las remodelaciones del DOS aparezcan enmascaradas en Windows, con lo que las
versiones del DOS han dejado de numerarse.
Sin embargo, precisamente para aprovechar su estela, posteriormente han aparecido otros sistemas
operativos similares, como es el caso de DR-DOS, programa realizado por Digital Research
compatible con MS-DOS. Su versión más extendida fue la DR-DOS 6.0 aparecida en 1991. Dado que
en la actualidad Digital Research fue absorbida por Novell, aparecerán nuevos sistemas operativos
orientados a redes y con la marca de Novell.
Otro es el PC-DOS, muy similar al MS-DOS, desarrollado por Microsoft por encargo de IBM para
sus máquinas. La relación entre estas empresas se rompió en 1991 al negarse Microsoft a seguir
desarrollando para IBM el siguiente sistema denominado OS/2.
3.5 OS/2
Fue introducido en 1.987 para equipos 286 al reconocer IBM y Microsoft la necesidad de explotar las
posibilidades de multitarea de la nueva CPU y aplicar un entorno gráfico fácil y agradable para el
usuario. Aunque por diferencia de opiniones y desconfianza de IBM hacia Microsoft, que ya estaba
desarrollando su Windows, la sociedad no prosperó, pero IBM siguió con el proyecto, hasta llegar a
ofrecer su OS/2, sistema operativo multitarea y monousuario compatible con MS-DOS. OS/2 gestiona
excelentemente, a su nivel, la memoria virtual y, para obtener mayor rapidez de proceso trabaja sobre
la base de un procesador para cada usuario, que al incorporarse a una red local simula operar como
multiusuario. Dispone de un entorno gráfico agradable, pero pese a todo, la aceptación del público no
fue la esperada, quizás por la falta de aplicaciones para el mismo.
Fue desarrollado por IBM para sus máquinas utilizando sus propios desarrolladores y consultoras
externas. La crisis de IBM en los comienzo de los 90 le ha dejado casi fuera del mercado.
3.6 Unix
Desarrollado en los laboratorios Bell de AT&T por Dennis Ritchie y aparecido en el 1.984, siendo
considerado desde un principio como el sistema operativo del futuro, sobre todo por los acuerdos
alcanzados entre su fabricante e IBM. Trabaja en tiempo compartido y se trata de un sistema
multitarea y multiusuario escrito íntegramente en el lenguaje de programación C, lo cual lo hace de
fácil lectura y explotación en distintos tipos de equipos y plataformas, desde PCs hasta
supercomputadoras Cray, por ello su uso está reservado prácticamente a las máquinas más potentes
dentro de la gama de equipos medios bajos, con gran capacidad de memoria y velocidad de
tratamiento.
Su explotación a través de menús es algo complicada, por lo que sólo suele ser manejado por
profesionales. Una variante de este sistema operativo es el denominado XENIX, pensado para el
microprocesador 386, siendo las últimas versiones de éste compatibles con su homólogo Unix.
Se caracteriza por trabajar en modo comando, como los anteriores, y sus necesidades de memoria son
amplias, si bien en los últimos años, y para recuperar cuota de mercado, están apareciendo versiones
de UNIX de Santa Cruz Operation y de Berkeley con una interfaz gráfica aceptablemente buena.
Los procesos los planifica utilizando un algoritmo de asignación de números a cada tarea. La memoria
la organiza utilizando ficheros de intercambio y memorias virtuales paginadas según lo solicite el
usuario.
3.7 LINUX
Una variante del UNIX iniciado por Linus Thorvald, finlandés, y desarrollado por una activa
comunidad de programadores alrededor del mundo que colaboran a través de Internet. Thorvald,
además de iniciarlo, se rodeó de un selecto equipo de colaboradores “virtuales” que cumplieron con la
tarea de recibir todas las librerías y los programas que conforman Linux y coordinarlo hasta construir
el sistema.
Además de ser un sistema operativo bastante robusto y confiable, Linux tiene la particularidad de ser
parte del Free Software Movement (movimiento del software libre), por lo que es gratis y su código es
abierto, es decir que se puede modificar y redistribuirlo de nuevo. Lo que lo ha convertido en el
sistema operativo preferido por los programadores y por la comunidad informática alternativa.
Además es multitarea, multiproceso y multiusuario, como inconveniente cabe decir que es un poco
complicado su manejo para usuarios poco avanzados, pero ese tema se ha resuelto porque poco a poco
se van creando entornos gráficos programados para evitarlo, como Mandrake, Debian, Gnome, KDE,
etc. Estamos ante uno de los sistemas operativos del futuro, su auge en los últimos años ha dado que
pensar a Microsoft, dado que en estabilidad, velocidad, fiabilidad y precio ha colocado el listón en un
lugar elevado.
Se trata de un sistema operativo de carácter visual en cuanto a sus interfaces, que proporciona
multitarea y multipuesto para la versión 3.11.Para su trabajo óptimo requiere del uso de la memoria
extendida de procesadores 386 y superiores.
Permite conexión con otro ordenador y soporta una utilidad que permite conocer a los usuarios las
conexiones que hay en los dispositivos compartidos. El administrador del sistema, siempre para 3.11,
puede establecer parámetros de seguridad permitiendo lectura, escritura y operatividad global. Las
protecciones de acceso se aseguran por medio de contraseñas.
Tiene utilidades de comunicación con módem, fax y correo electrónico. Permite a un usuario extraer
una parte del documento de un usuario para incorporarlo en el propio. Además da la posibilidad de
enviar mensajes en tiempo real a otros usuarios, aunque también en modo diferido.
Este sistema se ha ido completando paulatinamente con la incorporación de nuevos gestores de red,
incorporación de objetos, gestión de ficheros, comunicaciones e Internet en las sucesivas versiones de
Windows 95 y Windows 98.
XP salió a mediados del año 2002. Consiste en un sistema operativo que reúne las características de
Windows Millenium y de Windows NT (ver apartado siguiente), al menos por lo que a estabilidad y
seguridad se refiere. Su interfaz ha cambiado respecto a la tradicional, aunque aún soporta esta última.
Permite la creación de usuarios y su seguridad por medio de contraseñas. Soporta un enlace rápido a
Internet, la gestión de red y de utilidades es más intuitiva, la gestión de la memoria, de las
interrupciones y de los errores evita los bloqueos del equipo y, por último, permite la actualización de
software y de hardware en caliente, es decir, sin desconectar el equipo o reiniciarlo. Como añadido
cabe destacar que permite la acción remota desde un equipo a otro gracias a la utilidad de mensajería
conocida como Messenger.
3.9 Windows NT
Se trata de un sistema operativo de red, trabajando a 32 bits reales, que permite multitarea,
multiproceso, y portabilidad. También permite el trabajo en monopuesto.
Se construye desde un núcleo y varios subsistemas distintos, algunos de los cuales pueden trabajar
bajo OS/2, o MS-DOS de 16 bits. Su lenguaje de construcción es el C y C++.
Soporta una utilidad denominada seguimiento de transacciones, de forma que si el sistema falla, al
arrancar comienza donde se interrumpió. Tiene un sistema de procesamiento simétrico, diseñado por
Microsoft, por el cual puede repartir los recursos de manera equilibrada según las necesidades.
La gestión de la memoria se lleva a cabo por un sistema de memoria plana, es decir, al prescindir del
paginado habitual, le permite proceder con más rapidez en el proceso de gestión de gráficos.
3.10 Apple
Apple, para sus primeros ordenadores MacIntosh, creó uno de los primeros sistemas operativos de
carácter gráfico, utilizando iconos similares a los que se utilizaban por entonces en los primeros
prototipos de lenguajes orientados a objetos. Desde entonces, los primeros GEM, perdido tras su
competencia con Microsoft y sus problemas de compatibilidad con otros sistemas, ha desarrollado
otros sistemas para sus máquinas con completa compatibilidad con otros del mercado, como es el caso
de Windows.
- SISTEMA 7: Desarrollado por Apple para su equipo Macintosh, con el que se proporciona al
usuario una solución de trabajo completa y de fácil manejo. Este sistema operativo trabaja
sobre procesadores de 32 bits.
- MAC OS 8.x: La más importante actualización del sistema, sus ventajas son su rapidez, y la
capacidad para trabajar con tecnologías multimedia, además grandes y nuevas herramientas
para navegar por Internet, está diseñado para poder utilizarse en todos los modelos de 68040
y los Power PC compatibles, este sistema operativo es monousuario y multitarea.
Es el aspecto del sistema operativo que se cuida de que los distintos componentes del sistema
informático mantengan su integridad y que no se vean ante manipulaciones involuntarias o ilegales.
Se puede hablar de dos ámbitos relacionados con la seguridad:
- Seguridad externa: La seguridad externa trata de garantizar que los recursos estén protegidos,
esto es, que no se acceda a ellos sin permiso. Es, pues, una seguridad contra agentes
externos. Se tiende a proteger el elemento más importante: la información.
- Seguridad interna o lógica: En el ordenador se tienen posibilidades de conexión y éstas deben
ser controladas. Los mecanismos de control que configuran la llamada seguridad interna o
lógica son:
Denominado también conexión o nivel de acceso, sólo permite conectarse a usuarios que están
registrados. Es un software interno del sistema operativo que lee el usuario -user name- y su clave –
password-, controlando si existe o no para permitirle o no el acceso. Mientras no se está dado de alta
no se permite la conexión.
En cualquier caso, estos sistemas de seguridad crean un estado de privilegio, admitiendo sólo ciertas
operaciones. Así se restringen los derechos de cada usuario.
Disponibilidad de ficheros
Deben adaptarse las copias de seguridad que se efectúan de los ficheros (back-up) con los períodos de
actualización de los mismos. Por ejemplo, si se dispone de un fichero que se actualiza cada siete
días, sus copias de seguridad deberán realizarse con igual periodicidad para asegurar la correcta
recuperación del fichero.
Para evitar que la información sea fácilmente accesible se plantean técnicas de criptografía.
Asimismo, para simplificar el trabajo y ahorrar memoria se opta por la compactación de los datos.
Los sistemas tolerantes a fallos son aquellos sistemas que permiten la recuperación de la información
en caso de que se produzcan fallos. Dicha información no quedará afectada por el fallo. La solución
suele ser duplicar recursos -CPU, memoria o discos-.
Las operaciones se hacen simultáneamente sobre el recurso duplicado. De esta manera, si falla algo de
hardware, la información del duplicado correcto no se verá afectada.
En ocasiones se crea una doble CPU para que, si falla una de ellas, se pueda seguir trabajando en el
sistema con la que continúa funcionando de forma correcta.
Los sistemas operativos siguen evolucionando. La principal tendencia de los sistemas operativos en
cuanto a organización de trabajo es convertirse en sistemas operativos distribuidos, de los cuales se ha
hablado un poco más arriba.
No hay que confundir un sistema operativo de red con un sistema operativo distribuido. En un sistema
operativo de red las computadoras están interconectadas por medios de comunicación: software y
hardware. En este tipo de red los usuarios saben donde están ejecutando su trabajo y guardando su
información. En cambio en los sistemas operativos distribuidos existe un software que distribuye las
tareas de los usuarios sobre una red de computadoras y para los usuarios es transparente donde
realizan sus tareas y guardan su información.
Actualmente, hay solamente dos paradigmas fundamentales del sistema operativo: el intérprete de la
línea de comando -UNIX, DOS-, y la interfaz gráfica -MacIntosh OS, OS/2, Windows 98 y
posteriores-, aunque esto no es del todo así, pues la inclusión de Linux, gráfico o no, y la dotación de
interfaz gráfica para UNIX cambian sensiblemente el cuadro expuesto.
La generación siguiente de sistemas operativos utilizará las nuevas tecnologías como la programación
orientada a objetos -OOP-, y nueva tecnología de hardware -SDRAM y los microprocesadores densos
y baratos-, para crear un ambiente que beneficie a los programadores -con modularidad y la
abstracción crecientes- así como a los usuarios -proporcionándoles una interna, constante y
gráficamente orientada interfaz-. Los sistemas operativos futuros también se adaptarán fácilmente a
las preferencias cambiantes del usuario y a las tecnologías futuras -tales como sistemas de realidad
virtual-
Existen cuatro principios dominantes que deben regir en el diseño de sistemas operativos futuros:
Abstracción
El principio de la abstracción es que un nivel del ambiente de software no debe necesitar "saber"
los detalles sobre la implementación en otros niveles. Por ejemplo, un programador no debe
requerir saber qué clase de procesador será usado cuando se ejecute su programa, y un usuario
de correo electrónico no debe requerir de conocimientos de los protocolos de red.
Robustez y gestión de errores
Ninguna acción del usuario debe hacer que el sistema se comporte en una extraña o ilógica manera.
Debe ser imposible que cualquier programa interrumpa el funcionamiento de otros programas, o
del equipo. Es decir sin importar las acciones y las decisiones del usuario y del programador, la
computadora nunca debe "colapsarse". Además, cualquier acontecimiento inesperado se debe
manejar de una manera práctica. Los problemas que el sistema operativo no puede solucionar se
deben señalar al usuario de una manera clara, como un "cuadro de diálogo" por ejemplo, y se
deben explicar de una manera no técnica -utilizar un lenguage dependiendo del módulo de
programación-. El sistema debe enumerar claramente las opciones de las cuales el usuario debe
elegir.
Estandarización
Un sistema operativo bien diseñado debe ser estandardizado de una manera tal que se adapte y siga
siendo útil indefinidamente. Debe crecer en a la par con la tecnología informática, la
visualización, y tecnologías de interacción, y preferencias del usuario. La naturaleza modular
del sistema operativo del mañana será tal que algunas piezas del sistema serán continuamente
modificadas y puestas al día reflejar estos cambios. Para que estas características sean posibles,
el sistema requerirá: un conjunto muy bien definido de los estándares públicos disponibles -para
la comunicación entre las capas y los objetos-, que este conjunto de estándares se desarrolle con
un cierto plazo de tiempo pero que siga siendo claro y conciso, y que los estándares no cambien
tan rápidamente como para causar problemas de compatibilidad o altos costos de cambio de
hardware.
Diseño para facilidad de empleo y desarrollo de software
Muy intuitivo, con áreas determinadas por funciones y procedimientos de trabajo, mensajes claros
y coherentemente agrupados, de forma que los costos derivados de la formación a los usuarios
sea mínimo.
El diseño será hecho con modularidad y estandardización inherentes. Debido a estos buenos
principios del diseño, el sistema operativo del mañana no será difícilmente de implementar.
Estas mismas cualidades facilitarán el trabajo de los programadores también, en cuanto a la
mayoría de los proyectos de desarrollo necesitarán sólamente ensamblar objetos de alto nivel.
Esos módulos que deben escribir para sí mismos serán reutilizables y fácilmente adaptables a
las necesidades de cada programador.
La televisión por computadora ya funciona, y es una de las cuestiones que resultará de máximo interés
durante los años de reinado del actual Windows. Lugares como WebTV (http://www.webtv.com)
ofrecen ya navegación a través de Internet con la televisión, y amplias posibilidades en el entorno
audiovisual mundial. No hace falta tener computadora, y tampoco se necesita un software especial. Lo
que sí hace falta es un aparato de conexión que une la línea telefónica con la televisión del usuario.
Los servicios como WebTV multiplican la utilidad de una televisión convencional permitiendo a
cualquier persona navegar instantáneamente por la red con un sencillo control remoto, pero además
los creadores del concepto anuncian que la fusión de las dos plataformas (receptor de televisión y PC)
será una revolución en todos los hogares del mundo.
Todo esto no tendría prácticamente nada que ver con este tema sobre tendencias de mercado de
sistemas operativos si no fuera porque Microsoft, que ya posee su propia cadena de televisión, ha
anunciado que tiene intención de comprar el servicio WebTV para convertir en receptores de
televisión equipos dotados con Memphis y Millenium (Windows 98 y Windows Me) y Windows NT
5.0. Este futuro pasa tanto por la telecarga que ya ofrece Canal Satélite como por la programación a la
carta y la "navegación televisiva" que pretende ofrecer Microsoft al usuario. Dentro de un tiempo sólo
necesitaremos un aparato que englobará las funciones de la actual televisión y de los PC.
Nadie puede predecir cómo va a ser el nuevo milenio, pero es claro que los ordenadores e Internet
jugarán un importante papel en nuestras vidas. La combinación de Macintosh e Internet ofrecerá más
posibilidades que nadie, particularmente en diseño gráfico, edición de video, publicación de páginas
Web y en el desarrollo de software.
Apple Computers liberó hace unas semanas a más de 10000 programadores una versión beta del
nuevo entorno –pues no es exactamente un sistema- operativo que tiene como nombre clave
Rhapsody, con la intención de que los programadores conozcan y desarrollen aplicaciones para este
nuevo sistema operativo. Rhapsody será inicialmente lanzado en un selecto mercado de despachos de
diseñadores, videoedición y servidores de Internet que necesitan la más alta eficiencia y en una línea
de productos que incluyen los modelos Power Macintosh 8500, 8600, 9500 y 9600.
Rhapsody es un sistema diseñado para ser el sistema operativo del futuro: rápido, moderno, altamente
estable. Algunas de sus características son:
- Un poderoso entorno con multitareas, memoria protegida con integradas capacidades para el
simétrico multiprocesamiento.
- Las ventajas del Mac-OS junto con la integrada y madura tecnología de comunicaciones y una
profunda integración de Java.
- La tecnología de QuickTime Media Layer será optimizada para Rhapsody, proveyendo a los
usuarios con un rico y ventajoso entorno para la creación y reproducción de multimedia.
- Rhapsody combina la larga tradición de facilidad de uso y el real Plug & Play establecida por
Apple, y el entorno kernel de NeXT. Preservará el familiar "míralo y siéntelo" de la actual
interfase Mac-OS.
- La parte medular de la arquitectura de Rhapsody es ser nativo al procesador PowerPC.
Diseñado para usarse en la mayoría de aplicaciones del Mac-OS, también la mayoría de las
extensiones del sistema trabajarán sin modificaciones. Esta compatibilidad será proveída en
una implementación del Mac-OS, que incluyen los procesadores 68K y los Power PC, no
será una "emulación" para las 68K según ingenieros de Apple, se integrará un nuevo código
U.D. 6 - Sistemas Operativos, funcionamiento y gestión, pág. 46 de 15
1º Ciclos - Sistemas Operativos Multiusuario y en Red
Juan P. Benito
que aprovechará al poderoso procesador PowerPC desarrollado por IBM, Motorola y Apple,
que se encuentra ya en su cuarta generación a velocidades de 500 y 850 Mhz.
Los ingenieros de Apple tienen planeado integrar estrechamente a Java en Rhapsody, con las librerías
de Java y la Java Virtual Machine (VM) dando a Apple el liderazgo en el desarrollo de Java. Una
moderna implementación de Mac, microkernel, desarrollado por la Universidad Carnegie Mellon, es
una nueva generación de entrada y salida de dispositivos (IO), administrador de archivos, intercambio
entre aplicaciones y redes. Apple desarrolla un nuevo dispositivo que sustituirá al actual SCSI: el
WireFire que transfiere 4MB por segundo.
Desde los inicios de las computadoras modernas, la tecnología del hardware ha progresado más
rápidamente que el software que la acompaña. Por ejemplo, existen ordenadores que poseen un
hardware con un funcionamiento veloz e increíble, pero el software -sistema operativo- que estas
máquinas poseen es tan pobre que son extremadamente difíciles de programar. Debido al estado
inmaduro de estos sistemas operativos, estas computadoras funcionan sólamente en una fracción
pequeña de su velocidad máxima mientras que trabajan bajo cargas de trabajo típicas.
Con la llegada de los nuevos Sistemas Operativos el hardware se aprovechará al máximo y se reducirá
esa brecha de sincronía que existe entre el hardware y el software que lo controla. Con estos sistemas
operativos se llegará a concretar lo que se llama la quinta generación de computadoras, que pretende
multiplicar la velocidad, disponer procesamientos paralelos, diseñar una arquitectura de hardware-
software muy superior y utilizar el lenguaje natural.
La renovación que aportarán los sistemas operativos es múltiple. Ya no viene determinada únicamente
por la introducción de cambios material o de hardware, sino por la combinación de novedades en el
material y en la programación.
El tipo de trabajo propio que realizarán el hardware y software de la quinta generación, no sólo en el
tratamiento de datos, sino en la adquisición de información y, a partir de los materiales y estructuras
de que dispone, en la elaboración de conocimientos, es decir, en la elaboración inteligente del saber.
Es decir se anuncia el aprovechamiento de la computadora para adquirir conocimientos
artificialmente, a través de las máquinas. A partir de esto, estas ya no solo aportarán fuerza o
habilidad, sino que también proveerán al hombre de un conocimiento del mundo.
1 CONCEPTOS PREVIOS 3
3 PROCESOS 4
3.1 CARACTERÍSTICAS 4
3.2 ATRIBUTOS 5
3.3 TIPOS DE PROCESOS 5
3.4 DIFERENCIA ENTRE PROCESO, PROGRAMA E HILO 6
4 PLANIFICACIÓN 6
4.1 PARÁMETROS DE SEGUIMIENTO DE LOS PROCESOS 7
4.2 TERMINACIÓN DE UN PROCESO 7
4.3 SUSPENSIÓN DE UN PROCESO 8
4.4 GESTIÓN Y CONTROL DE LOS PROCESOS 8
4.4.1 Cambio de contexto 9
4.5 CICLO DE PLANIFICACIÓN 9
4.6 PLANIFICACIÓN SIN PLANIFICACIÓN Y MEMORIA ILIMITADA 9
4.7 CUASIPLANIFICACIÓN CON MEMORIA LIMITADA 10
4.8 SINCRONIZACIÓN 11
4.9 EXCLUSIÓN MUTUA 12
4.9.1 Métodos de software12
4.9.1.1 Algoritmos elementales de exclusión mutua 12
4.9.1.2 Algoritmo de Dekker 13
4.9.1.3 Algoritmo de Petterson 13
4.9.1.4 Algoritmo de Dijkstra o del semáforo 14
4.9.1.5 Algoritmo de Camport o de la tienda 14
4.9.2 Mecanismos de hardware 14
4.9.2.1 Interrupción permitida/interrupción no permitida 14
4.9.2.2 Comparar y asignar 15
4.9.2.3 Variable de control 15
4.10 ALGORITMOS GENERALES DE PLANIFICACIÓN DE LA CPU 15
4.10.1 Método FIFO o FCFS 15
4.10.2 Método Round-Robin 16
4.10.3 Por el proceso más corto 16
4.10.4 Por el proceso más corto y el resto 17
4.10.5 Prioridad multicola 17
4.10.6 Por tiempo de espera y de ejecución 17
5 INTERBLOQUEOS 18
5.1 SOLUCIONES AL INTERBLOQUEO 18
5.1.1 Prevención del interbloqueo 18
5.1.2 Eliminación del interbloqueo 19
ÍNDICE ALFABÉTICO DE CONCEPTOS 20
1 CONCEPTOS PREVIOS
Procesador: Es la principal parte operativa de un computador, que gobierna el sistema y lleva a cabo
las principales operaciones aritméticas y lógicas. está constituido por una Unidad Aritméticológica
y una Unidad de Control. Se une mediante un bus a la memoria central, o RAM, para formar el
tándem memoria/procesador de la máquina de Von Newman.
Proceso: Cuasisinónimo de tarea, se define como un flujo de actividad unitario. Una actividad que
realiza un procesador. Está determinado por su código -conjunto ordenado de instrucciones que
definen las acciones que el proceso debe llevar a cabo-, su espacio de trabajo -o conjunto de
valores de datos que el proceso puede leer, escribir y manipular-, y por su descriptor de proceso
-parámetro que define la situación actual de los recursos que están a disposición del proceso-.
Interrupción: Es una señal dirigida al procesador indicando que un suceso asíncrono -un evento que
está fuera del ritmo previsto de trabajos o tareas del ordenador- ha ocurrido. Así la actual secuencia
de instrucciones se ha interrumpido mientras una secuencia apropiada para esa interrupción ha
comenzado en su lugar. Esto puede tener lugar en la transferencia de información a un
periférico, sucesos voluntarios dentro de un proceso -cuando un proceso está necesitando los
servicios de un sistema operativo-, sucesos involuntarios dentro de un proceso -cuando se entra
en una acción no definida o prohibida se producirá una interrupción y una llamada al supervisor-,
acciones por medio de operadores -si estos tienen la intención de comunicar con el supervisor-, y
por interrupciones del temporizador -que lo hace para garantizar que el supervisor podrá
enterarse de la situación de los distintos procesos-.
Así, de una manera grosera podría hacerse una primera aproximación a las tareas de un sistema
operativo desde dos vertientes: asistencia a la programación y gestión del sistema. Desde el punto de
vista de la primera función, las tareas de un sistema operativo se pueden resumir en:
- Informar sobre el estado de uso del mismo, usuarios, tareas, tiempos, recursos,...
- Dar inicio a los procesos y mantenerlos hasta que acaben
- Interpretar los lenguajes de control
- Protección de la estructura de la información ante usos inadecuados: detectar y corregir
errores, protección de datos, de programas
- Asignación y separación de recursos: CPU, memoria, dispositivos de entrada y salida,...
- Gestionar las interrupciones
- Interactuar con el usuario
3 PROCESOS
Como se ha visto más arriba, un proceso es cualquier actividad que realiza un procesador. Dado que
un ordenador puede llevar a cabo distintos procesos simultáneamente, el procesador debe contemplar
la posibilidad de ser compartido, lo que se consigue aplicando un algoritmo de planificación.
3.1 Características
- Concurrencia: Que es la progresión de dos o más procesos que trabajan en paralelo, pero de
forma dependiente. Esta es la situación más típica en los sistema actuales. Por ejemplo,
mientras se realizan las operaciones necesarias para la selección e inserción de los campos
para preparar las etiquetas que servirán para enviar las facturas de una sucursal bancaria,
pueden irse leyendo los datos relativos a vencimiento de talones o preparar listados de riesgo
por clientes (ver Figura 6.2). Si la relación es de paralelismo pero independiente, se
denomina una relación de convivencia
- Competencia: O situación que se plantea cuando dos o más procesos deben utilizar los
mismos recursos físicos o lógicos. Esto ocurre por que no es posible que dos procesos
actúen usando el mismo recurso
- Cooperación: Lo que ocurre cuando dos procesos que se están ejecutando son
interdependientes, es decir, para que lleguen a un resultado, se necesitan mutuamente
- Jerarquía: Es la relación que se establece entre procesos que son interdependientes en mayor
o menor grado, estableciéndose familias de procesos. Cuando un proceso necesita crear
otros, al previo se le denomina proceso padre y al nuevo se le llama proceso hijo. Las
normas de estado de los procesos en su creación o suspensión las dicta el sistema operativo
- Estado: Es el grado de uso de la CPU. Existen tres niveles: en ejecución -está usando la
CPU-, preparado -la usaría si la CPU estuviera disponible-, y suspendido -esperando a que
algún suceso le “despierte” y recupere el grado de ejecución o preparado-. Dentro de los
suspendidos se pueden hacer dos grupos, los suspendidos listo -preparados para activarse- y
suspendidos bloqueados -interrumpidos indefinidamente-. Es el sistema operativo el que
realiza los cambios de estado cuando están disponibles.
3.2 Atributos
Son las circunstancias que debe conocer un sistema operativo sobre un proceso para decidir sobre él:
- Nombre: Es la referencia que se debe conocer de un atributo para que otro proceso, o el
sistema operativo, puedan “llamarle”
- Estado actual: Su situación en ese instante. Si un proceso pasa de un estado de actividad a
uno de suspensión, sus parámetros se guardan en su bloque de control de procesos
- Prioridad: Virtud de los procesos por la que se determina cuál de ellos accederá con
preferencia a la CPU antes que otro. Una de las técnicas que se usan en la asignación de
prioridades es la llamada de envejecimiento. Trata de aumentar la prioridad de aquellos
procesos que llevan más tiempo en lista de espera, con lo que se evita que un proceso no se
active nunca o que quede obsoleto.
Su gestión consiste en asignarle a cada proceso un cualificador que determine la atención
que va a recibir del sistema, teniendo en cuenta que las prioridades pueden ser asignadas
directamente por el sistema operativo -las internas, las más frecuentes- o por el usuario o
administrador -las externas, muy raras-. A su vez dentro de estas prioridades pueden ser
estáticas o dinámicas:
-- Estáticas: Las que no cambian durante la ejecución del proceso. Siempre el proceso va a
tener la misma prioridad. Son fáciles de implementar y sobrecarga menos el sistema,
porque el procesador no tiene que dedicar tiempo a administrar prioridades.
-- Dinámicas: Son las que responden a cambios, pues al proceso se le da una prioridad
inicial que en principio será de duración corta para después pasar a ajustarse a un mejor
valor.
- Derechos: O los distintos grados de acceso a los diferentes recursos del sistema. Es
especialmente útil cuando se trata de recursos compartibles
Son diferentes según las características y/o atributos que poseen. Siguiendo el criterio de la utilización
de la memoria, los procesos pueden ser:
- Proceso residente: Se trata de aquel proceso que durante su estado de activado tiene que estar
cargado en la memoria
- Proceso intercambiable: Como aquel proceso que está en estado de espera y del cual se toma
su proceso tratado por la CPU y se incluye en un fichero del sistema, con lo que se deja
liberada la porción de memoria correspondiente
- Procesos reutilizables: O programas que pueden usar varios usuarios ya que están codificados
con variables genéricas y los usuarios sólo tienen que introducir los valores correspondientes
a la posición delas variables en el código. Tiene la ventaja de que se carga en memoria una
sóla vez y se usa varias veces inicializando adecuadamente las variables
- Procesos reentrantes: Procesos cuyas instrucciones son invariantes, con lo que pueden usarse
de nuevo sin tener que cargarse otra vez. Están estructurados separando lógicamente los
segmentos de datos y de código, con lo que dos instancias del mismo proceso pueden
compartir el mismo código
- Proceso de excepciones: Circunstancias que se pueden presentar en un proceso ocasionadas
por un suceso que se ha presentado pero que no debería haber tenido lugar, con lo que el
sistema tratará de eludirlo. Es lo que se denomina comúnmente un error.
La idea clave es que un proceso es una actividad de cierto tiempo, y es frecuente que un programa esté
constituido por varios procesos –pudiendo ser centenares-, teniendo en cuenta dos conceptos: las
interrupciones y el cambio de contexto.
Interrupción sería la indicación al sistema de que hay otra actividad pendiente y consiste en que el
procesador atiende una interrupción y decide en función de unos criterios preestablecidos cambiar de
proceso. Para reanudar el trabajo por donde nos hemos quedado hay que guardar la información de lo
que se estaba haciendo y liberar parte de la memoria para la nueva actividad, al hacer este cambio de
contexto el procesador deberá anotar todos los datos importantes que había antes de la interrupción
para poder reanudar más tarde la actividad.
Por otro lado un proceso puede a su vez estar formado por varias tareas o hilos que pueden ejecutarse
en modo concurrente. La unidad mínima ejecutable es la tarea o hilo.
* Los procesos tienen asignados diferentes secciones de memoria mientras que los hilos no.
* A los procesos se les asignan recursos mientras que los hilos disponen de los recursos
asignados al proceso.
* A la hora de planificar, se pueden planificar los hilos de un mismo proceso.
4 PLANIFICACIÓN
Las tareas que están acumuladas en el spool del sistema operativo, para el caso de un sistema
multiproceso, no son procesos propiamente dichos, pues no han sido activados aún. Para poder
activarse deben formar parte de la planificación del procesador. Así, la planificación a largo plazo del
sistema operativo indica qué trabajo se va a convertir en proceso y en qué momento ocurre.
Por otro lado, la planificación a corto plazo señala qué proceso instalado en la cola pasa a estado de
ejecución. Para que no se produzcan retardos ni cuellos de botella la rutina que hace esta labor en el
sistema operativo tiene que trabajar de manera muy rápida, y que no gaste ni mucho tiempo ni mucho
espacio en la CPU.
En algunos sistemas, sobre todo los que no trabajan por lotes, existe una planificación intermedia.
Este mecanismo envía los procesos bloqueados en la CPU a un medio de almacenamiento externo con
el objetivo de liberar memoria. Posteriormente, el sistema operativo los incluirá en la memoria
principal.
Por todo ello, se concluye que el microprocesador dispondrá de dos contadores de tiempo al menos.
Uno para controlar la unidad central, que coincidirá con el tiempo de reloj, y otro que controla el
tiempo que lleva cada proceso utilizando el microprocesador.
U.D. 6 - Sistemas Operativos, funcionamiento y gestión, pág. 55 de 15
1º Ciclos - Sistemas Operativos Multiusuario y en Red
Juan P. Benito
- Buscar una cierta equidad en el reparto de tiempo de la CPU para los distintos procesos,
evitando que alguno sea postergado indefinidamente
- Conseguir la máxima capacidad de ejecución manteniendo el mayor número de usuarios
interactivos
- Predecir los límites y capacidad del hardware y del propio sistema operativo
- Mantener un equilibrio en el uso de recursos y en la respuesta derivada de su uso
- Discriminar procesos dando prioridad a los que consumen recursos claves y los de un
comportamiento mejor
Los recursos del sistema que van siendo utilizados y cómo se utilizan son contabilizados por el propio
sistema en los sistemas multiprogramados. Para recursos tales como los procesadores que están
dedicados en su integridad a un proceso individual para un gran número de intervalos cortos de
tiempo, la medida apropiada está por el informe del tiempo real en el que empieza y acaba cada
intervalo de tiempo, con lo que se consigue la longitud del intervalo. La acumulación de todos ellos a
lo largo de la vida completa el proceso proporciona el tiempo de procesador requerido.
Los parámetros de tiempo que se suelen usar para la ejecución de los algoritmos de planificación son:
- Tiempo de servicio: o tiempo que tarda el sistema por concluir el mandato que se le ha
solicitado. Es el caso de escribir el mandato DIR del DOS y recibir la lista de ficheros y
directorios.
- El tiempo de espera: o tiempo que pasa entre la finalización de una operación y el comienzo
de la siguiente
T = t (tiempo del propio proceso) + E (espera debida a la CPU)
- Índice de aprovechamiento: o el cociente entre el tiempo teórico de ejecución del proceso (t)
y el tiempo de servicio (T)
I=t/T
Las razones por las que se termina un proceso por parte del sistema operativo son:
- Normal: El proceso ejecuta llamada al servicio del sistema operativo que notifica su
terminación normal.
- Por tiempo excedido: Una tarea tiene asignada la CPU, ejecuta el tiempo máximo y le es
requisada la CPU, es excluida, y pasa a la cola para competir por la nueva asignación.
- Violación de limites: Un proceso trata de acceder a una posición de memoria a la que no le
está permitido acceder.
- No memoria disponible: El proceso necesita más memoria de la que el sistema puede
proporcionar.
- Error de protección: El proceso intenta utilizar un recurso o archivo que no le está permitido
utilizar, o trata de utilizarlo de forma incorrecta.
- Error aritmético: Si el proceso intenta hacer un cálculo prohibido, como la división por cero, o
trata de acceder a un número mayor del que el hardware acepta.
- Tiempo máximo de espera de recurso: El proceso ha esperado más alla del tiempo máximo
especificado para que se produzca cierto suceso.
- Fallo de dispositivo de E/S: Se produce un error en una operación de E/S.
- Instrucción no valida: El proceso intenta ejecutar una instrucción inexistente, lo que sucede a
menudo como resultado de un salto para ejecutar datos en la zona de datos.
- Intento de acceso a una instrucción privilegiada: El proceso intenta utilizar una instrucción
reservada para el sistema operativo.
- Finalización del padre: Cuando un proceso padre finaliza, el sistema operativo puede
diseñarse para teminar automáticamente con todos sus descendientes.
- Mal uso de los datos: Un elemento de dato no está inicializado o es de un tipo equivocado.
- Intervención del operador o del sistema operativo: Por alguna razón el operador o el sistema
operativo termina con un proceso, como por ejemplo en el caso de un interbloqueo (ver más
adelante).
- Solicitud del padre: Un proceso padre tiene normalmente autoridad para terminar con
cualquiera de sus hijos.
Se define proceso suspendido como aquel que tiene las características siguientes:
- Intercambio: Liberar memoria principal para otro proceso que está listo para ejecutarse.
- Suspensión por parte del sistema operativo por sospechar que el proceso es causante de
problemas.
- Solicitud del usuario: Un usuario puede querer suspender la ejecución de un proceso con fines
de depuración o en conexión con el uso de un recurso.
- Por tiempo: aplicable a procesos que se ejecutan a intervalos. Puede ser suspendido mientras
espera el siguiente intervalo de tiempo.
- Solicitud del proceso padre: Un proceso padre puede suspender la ejecución de un hijo para
examinar el proceso suspendido o para coordinar la actividad de varios descendientes.
El sistema operativo necesita conocer, en todo momento, qué procesos se están ejecutando, cuáles van
a entrar, los que se tienen que activar a corto plazo, y los que acaban de terminar y los resultados que
han producido.
Para poder hacer esto, el sistema operativo construye y mantiene dos tablas estructuradas en base a
registros con información dividida en dos grandes bloques:
- El SCB: o Bloque de Control del Sistema. Es la forma que tiene el sistema operativo de
controlar lo que está haciendo, qué datos está manejando y cómo lo está haciendo. Lo
normal es que el SCB contenga:
-- Lista de procesos en curso.
U.D. 6 - Sistemas Operativos, funcionamiento y gestión, pág. 57 de 15
1º Ciclos - Sistemas Operativos Multiusuario y en Red
Juan P. Benito
Para cambiar la CPU de un proceso a otro se requiere guardar el estado anterior y cargar el estado
nuevo para el proceso, procedimiento conocido como cambio de contexto.
El tiempo de cambio de contexto es un gasto más y depende de la máquina, con lo que los tiempos de
cambio de contexto dependen en gran medida del apoyo del hardware.
Que es el caso que se plantea cuando los procesos llegan al umbral de la CPU y entran en ella sin
ninguna traba, compartiendo desde ese momento el uso del microprocesador con los procesos que ya
estaban en memoria.
Para conocer la compartición de recursos se define lo que se denomina adelanto de la CPU, o tiempo
que dedica la CPU a cada uno de los procesos con los que trabaja. De tal forma que si en el
microprocesador se están cursando cuatro procesos simultáneamente, el adelanto de la CPU para cada
proceso será la cuarta parte del tiempo transcurrido de reloj para la CPU. Hay que tener en cuenta,
para este modelo, que los procesos, una vez se colocan en la “cola”, entran en ejecución, es decir,
eliminando de los cálculos de tiempo los derivados de la entrada y salida, en memoria y en CPU no
existe tiempo de retardo. O sea, no existe una planificación al respecto.
Sirva como ejemplo el siguiente conjunto de procesos. Se trata de seis de ellos que entran en la CPU
en distintos momentos y con diferentes tiempos de ejecución. La Tabla 7.1 muestra esos dos atributos
para cada uno de los seis procesos. La Tabla 7.2 muestra la Tabla 7.1 añadiendo tres columnas: la
hora de inicio -hora a la que realmente empieza cada proceso-, la hora final -hora a la que acaba-, y el
tiempo de retorno -tiempo que transcurre desde que el proceso entra en la CPU hasta que sale de ella-.
Para elaborar esta segunda tabla se supone que los procesos siguen un esquema de tráfico simple que
se llama FIFO -first in first out, es decir, primero que entra, primero que sale-.
Tabla 7.2 - Momento de inicio, de acabado, y tiempo de retorno para esos 6 procesos
en un esquema de trabajo tipo FIFO
Sin embargo, en un sistema multiprogramado, donde además no existe un límite de memoria para la
ejecución de los distintos procesos, en el que como se ha comentado antes, una vez que los procesos
entran en la CPU comparten el tiempo de que dispone ésta, la secuencia de los procesos y sus tiempos
de acabado y retorno, quedarían como se muestra en la Figura 7.1.
En este caso, a pesar del título, sí existe una planificación, aunque se trate de un sistema muy
elemental. Para poder aplicarlo habrá que conocer el tiempo de ejecución de cada proceso, la prioridad
asignada a cada uno, memoria que consumen o que necesitan, etc.
Disponer de todos estos datos es imprescindible para poder aplicarle un algoritmo a la cola de
procesos y decidir, a medida que transcurren las operaciones, qué proceso entra y cuál se queda fuera.
Por ejemplo, supongamos que tenemos 6 procesos, con los datos de orden, hora de llegada, tiempo de
CPU, memoria que consumen y prioridad asignada (ver Tabla 7.3)
Una vez que los procesos se instalan en la cola de entrada del procesador, la elección de uno u otro
dependerá de la prioridad que tengan asignada. Los tiempos de entrada ya no coincidirán con los
inicialmente previstos y los de ejecución variarán también (ver Tabla 7.4).
En la primera columna de esta tabla aparecen instantes de tiempo transcurrido, aunque se han señalado
algunos concretos -por ejemplo, el instante 1,77 que se corresponde con la finalización del proceso 1.
En la segunda columna se ha indicado el tiempo de CPU que consume cada proceso. Y en la columna
3 aparece el orden del proceso y, entre paréntesis, el tiempo que aún le queda por funcionar dentro de
la CPU. En este caso, se señalan en negrita y subrayado los procesos que terminan o que acaban de
incorporarse a la ejecución.
4.8 Sincronización
Existen relaciones entre los procesos de forma que hasta que uno de ellos no ha acabado, otro no
puede comenzar. Para que un conjunto de procesos funcione adecuadamente muchas veces será
necesario sincronizar sus actividades para garantizar que ciertos procesos terminan antes de que
comiencen otros.
Para poder hacer esto, el sistema recurre al envío de señales. Un proceso permanece en espera de
recibir ciertas señales, por lo que está suspendido. Cuando las señales llegan, se pone en estado de
ejecución. Es corriente que entre los procesos implicados se produzca una relación de cooperación
para la ejecución de tareas comunes y una relación de competencia por el uso de recursos
compartidos.
Proceso Pi Proceso Pj
Y1 = X Y2 = X
Y1 = X + 1 Y2 = Y2 + 1
X=Y X = Y2
Ejecución (X = 0)
Y1 = X Y2 = X
Y1 = X + 1 Y2 = X + 1
X = Y1 X = Y2
Conclusión: X = 1, valor incorrecto para Pj
Con lo que el sistema operativo utilizará una variable especial intermedia para que la información
común a ambos procesos sea bloqueada en P i mientras la utiliza el primer proceso -si es que éste es el
que tiene la prioridad- mientras el proceso P j espera. Más tarde éste recibe el valor de X y se ejecuta
proporcionando el verdadero valor de X para ese proceso, que será igual a 2.
Para evitar la concurrencia de los procesos y optimizar el uso de la CPU aprovechando los tiempos
muertos o momentos valle, se ideó el método de la exclusión mutua, para el caso de sistemas
multiprogramados.
Cuando dos procesos se encuentran compartiendo una variable, se crean conflictos dado que el valor
de la variable cambiará según el proceso que la utilice. Por ello se hace necesario asegurarse de que
los dos procesos nunca van a ejecutar su sección crítica -es decir, aquella parte de sus instrucciones
que utilizan esa variable compartida- al mismo tiempo. Así se evitan riesgos de error, colisiones,
esperas y no estar sujeto a la dependencia de la velocidad de los procesos ni del número de
procesadores.
Se trata de inventar una variable que sirva para todos los procesos relacionados y que recoge un valor
en función de la posibilidad de que un proceso entre en ejecución de su sección crítica. Cuando el
proceso se ha ejecutado, devuelve a esa variable un valor que permitirá a la CPU dejar paso libre para
que otro proceso entre en ejecución.
Esto tiene la desventaja de que se realiza el paso de unos procesos a otros sin tener en cuenta ni las
prioridades ni la conveniencia de trabajo eficiente del sistema. Además, si el primer proceso sufriera
una interrupción, el resto de los procesos no podrían disponer de las variables compartidas o no
podrían actuar conforma a la variable que gobierna todo el proceso.
Para evitar este problema se inventaron una serie de variables, tantas como procesos concurrentes, que
se adjudican a los procesos, una a uno, que servirá para que cada proceso señale, en esa variable, a la
CPU que se encuentra ejecutando su sección crítica. Así, cada proceso consulta las variables de los
demás procesos para “estimar” la conveniencia de entrar en ejecución de la sección crítica o no.
Sin embargo, las prioridades de este método no están claras y pueden producirse cuellos de botella o
infrautilizaciones de la CPU.
Se trata de la primera solución conocida de tipo software para resolver la concurrencia de procesos.
Matemáticamente está basado en interpolaciones lineales sucesivas y búsquedas binarias capaces de
encontrar el cero de una función que cambia de signo en un intervalo dado.
Es un algoritmo de espera activa, es decir, cuando las instrucciones de un proceso van preguntando
cada vez a la CPU si el proceso que se está ejecutando en paralelo y que tiene una región crítica a
terminado ya o tiene que seguir esperando. Como ejemplo de un algoritmo de Dekker, sería el
siguiente, considerando los subíndices i y j como diferentes procesos:
<RUTINA>
INICIALIZA ACTIVO (i) = V
MIENTRAS ACTIVO (j) = V <NADA>
SI TURNO = j ACTIVO (i) = F
MIENTRAS TURNO = j <NADA>
ACTIVO (i) = V
END
TURNO = j
ACTIVO (i) = F
Si bien existe la posibilidad de que se entre en un bucle sin fin, por que podría pasar que:
ACTIVO (i) = V
ACTIVO (j) = V
<RUTINA>
INICIALIZA ACTIVO (i) = V
TURNO = j
MIENTRAS ACTIVO (j) = V y TURNO = j <NADA>
END
ACTIVO (i) = F
Se trata de un método diseñado por E. W. Dijkstra en 1959 para tratamiento gráfico y que tenía como
objetivo encontrar el camino más corto entre un vértice y los restantes, dentro de los llamados gráficos
ponderados, o gráficos que llevan asociada a cada arista -línea que une dos vértices- una cantidad
representativa de un concepto. Por ejemplo, un gráfico de rutas de viaje, donde cada arista une dos
puntos geográficos y lleva asociado un costo de viaje.
Consta de dos operaciones que trabajan coordinadamente: señal y espera. Estas señales actúan sobre
una variables que por la función que realiza se llama semáforo. Esta variable, que es compartida, toma
valores enteros no negativos. Si se da el caso de que toma sólo los valores 0 y 1 entonces a la variable
se la llama semáforo binario. Los valores que toma la variable es el número de procesos que pueden
entrar a la vez en su sección crítica. El pseudocódigo para este algoritmo sería el siguiente:
<SEMÁFORO-ENTRAR>
INICIALIZA SEMAFORO = VALOR
SI SEMAFORO > 0 SEMAFORO = SEMAFORO - 1
SECCIÓN CRÍTICA
SI NO <ESPERA>
<SEMÁFORO-SALIR>
SI SEMAFORO <= 0 SEMAFORO = SEMAFORO + 1
DESBLOQUEAR SIGUIENTE PROCESO
SI NO SEMAFORO = SEMAFORO + 1
FIN
(si SEMAFORO fuese igual a 0, entonces no admitiría más procesos en sección crítica)
Si se añade una entidad denominada cola de espera, se evitará que algún proceso entre en una
dinámica de espera indefinida.
Se trata, como ocurre en algunas tiendas, de proporcionar a cada proceso un número de “cliente”,
dando entrada en la sección crítica a aquél que tenga el número más bajo, y así sucesivamente. Sin
embargo, además de presentarse problemas de infrautilización de la CPU, puede darse el caso de que
dos procesos tengan acceso al mismo número, con lo que se crearía el mismo conflicto que se quiere
evitar.
Para evitar el caso de que los métodos de software fallen, lo que podría ocurrir cuando se presenta un
fallo de programación -lo cual no es infrecuente si se tiene en cuenta que el lenguaje de algunos de
estos algoritmos será el ensamblador-, se diseñaron mecanismos de hardware, normalmente
codificados en lenguaje de bajo nivel y decodificados directamente por la CPU.
Viene a actuar respecto a los procedimientos de la CPU como si se tratase de un interruptor. Cuando
la CPU recibe desde un proceso la instrucción interrupción deshabilitada -DI, del inglés disable
interrupt, la CPU queda bloqueada e ignora las interrupciones y ejecuta en exclusiva las instrucciones
del proceso que se la mandó. Es decir, este mandato detiene todos los procesos, aunque no tengan
secciones críticas con respecto del proceso emisor. Cuando el proceso ha terminado de ejecutarse debe
volver a habilitarla porque si no el procesador permanecería en un bucle dado que estaría
continuamente ejecutando el proceso emisor.
En un sistema multiproceso, la llegada de la instrucción de bloqueo a una parte del sistema no influye
en las otras partes del sistema que están procesando, con lo que no se tiene una garantía de coherencia
en los resultados obtenidos.
Su mecanismo de trabajo es similar al método software del semáforo, pero implantado a nivel
hardware. Utiliza un bit de acceso para cada zona de datos definida -zonas que sufren de concurrencia
de procesos y que su actualización afecta a los resultados de cada proceso-, de tal manera que cuando
el valor de ese bit es 1, la zona se bloquea y sólo puede utilizarla el proceso actual. Si el valor es 0,
permite la entrada y actualiza el bit a 1 para que ningún otro proceso pueda acceder a esa zona.
Es bastante común el uso de este mecanismo en sistemas multitarea y multiusuario. Se suele usar
cuando pueden presentarse muchas situaciones de conflicto.
Trata de controlar cuando un proceso quiere actualizar una variable en conflicto -caso de una variable
compartida- y averiguar si otro proceso anterior lo había hecho previamente. En el caso de que haya
sido así, el proceso actual lo intentará hasta que el sistema le permita a ello y proseguir con su
ejecución. Para ello, este mecanismo compara el valor que tenía la variable conflictiva al empezar la
sección crítica y si no es el adecuado, lo intercambia por su inicialización.
Es un buen método cuando se trata de sistemas en los que no se prevé gran número de conflictos.
FCFS es lo que se conoce como “primero en llegar, primero en ser servido” –del inglés First Come
First Served-, equivalente al método FIFO, que se llama así por ser las siglas del término inglés First
In First Out, es decir, el primero en entrar será el primero en salir. Un sinónimo para este método es el
de la queue list, o lista donde los añadidos se colocan al final de la lista, y las remociones se producen
al principio.
Es decir, se atenderá por la CPU al primer proceso que llega. El resto de los procesos pasan a la cola
de espera donde permanecen en un estricto orden de llegada. Suele utilizarse en sistemas donde el
costo del servicio es más alto que el costo producido por las congestiones.
El inconveniente más serio es que es impredecible, puesto que no se sabe qué procesos están llegando
a la CPU. Además los usuarios esperan que los tiempos de respuesta sean muy similares para procesos
parecidos, lo cual no se garantiza con es método, afectando en mayor medida a los procesos breves,
sobre todo si van detrás de algún procesos largo. Por otro lado, este método es no apropiativo, es
decir, el proceso permanece usando la CPU mientras no ha terminado.
Por este método se define un intervalo de tiempo idéntico –denominado quantum- para todos los
procesos de la cola, la cual se se trata de manera circular.
Es decir, a cada proceso se le asigna un tiempo de uso de la CPU. Si ese tiempo se acaba, aunque el
proceso no haya terminado, éste es dirigido a la cola -al final- y otro proceso pasa a ejecutarse. Parece
obvio que si los tiempos asignados son muy cortos, el proceso se hará más lento dado que las rutinas
de activación y desactivación, así como las instalaciones en cola, se harán muy frecuentes.
Una variante más sofisticada es la cola de retroalimentación -del inglés feedback queue- que se usa
sobre todo en sistemas multiusuario. Por esta variante, un proceso se ejecuta hasta que acaba su
intervalo de tiempo asignado, o hasta que comienza a transferir datos a un periférico o hasta que
ocurre alguna interrupción generada por otro proceso. Si el proceso queda inacabado, se le asigna más
tiempo que la vez anterior y se le dirige al final de la cola. Lo mismo ocurre si había iniciado una
transferencia con un periférico llevándole al principio de la cola.
Se trata del método SJF -del inglés Short Jobs First, es decir, primero los procesos más cortos-. Por
este método se eligen de la cola los procesos más cortos y se les asigna máxima prioridad para el uso
de la CPU.
Tiene la ventaja de que aprovecha más eficientemente el tiempo de uso de la CPU, y prioriza los
procesos más cortos, lo que conduce a que en una unidad o intervalo de tiempo, se acaben mayor
número de procesos.
Las desventajas vienen de que no se sabe bien cómo asigna las prioridades y cómo asigna los tiempos
de uso de la CPU a cada proceso, dado que la CPU no quedará libre hasta acabar el proceso en
cuestión. Por otro lado, la reasignación de prioridades por tiempos puede ser dinámica, en función del
uso detectado de la CPU.
Como el método FIFO, este es no apropiativo, es decir, el proceso permanece usando la CPU hasta
que termina.
Este método compara el tiempo de ejecución que le queda al proceso que está utilizando la CPU con
el tiempo que necesita el proceso que se encuentra el primero en la cola de espera, que será el más
corto de los que están en dicha cola. Si el tiempo del que está en la cola es menor, quita de la CPU el
proceso en curso y deja libre la CPU para el que viene de la cola. En resumen, se trata de un método
apropiativo, pues quita CPU para dársela a otro proceso.
La eficiencia del uso de la CPU es mayor, pero el sistema operativo tiene que guardar los estados y
tiempos de los procesos que salen momentáneamente de la CPU, lo que origina mayor capacidad de
almacenamiento y mayor número de desplazamientos, que también consumen recursos y tiempo.
El sistema operativo analiza los procesos, sus tiempos de ejecución y sus prioridades, construyendo
varias colas de espera. Cada cola puede llevar un método diferente de gestión según la prioridad de la
misma, o bien ser atendida por un método FIFO o circularmente.
Los sistemas operativos que operan según estas características se denominan sistemas operativos de
propósito general y son capaces de soportar varios trabajos interactivos con el usuario, normalmente
tantos como procesos batch o procesos compilados para trabajar secuencialmente según su opción de
ejecución.
Aquí la prioridad la establecen dos parámetros: el tiempo de espera en la cola y el tiempo estimado de
ejecución del proceso.
4.10.7 Mixtos
El más común es el que supone la mezcla de un criterio Round-Robin con un criterio multicola.
Según esto, un sistema asigna tiempos de la CPU mediante diversas colas que se establecen según su
nivel de prioridad. Si un proceso pasa de una cola a la CPU y no acaba en el tiempo que se le ha
asignado, se le dirige para el resto de su ejecución a la cola siguiente. Si, tras su siguiente ejecución,
no ha acabado, entonces se le pasa a la sucesiva. La última cola está gestionada por un método FIFO.
Este sistema sigue dando prioridad a los procesos que son más cortos.
5 INTERBLOQUEOS
Es una situación que se plantea cuando dos procesos activos compiten por recursos del sistema y uno
de los procesos no consigue los suficientes y entra en estado de espera. Cuando este estado de espera
es indefinido se denomina situación de interbloqueo -deadlock-.
El proceso P requiere los recursos X e Y y los necesita en ese orden y, simultáneamente, el proceso Q
necesita los recursos Y y X y los necesita en ese orden. P adquiere X y, a la vez, Q toma Y. Llegado
un momento ninguno de los procesos puede progresar dado que va a requerir recursos que posee el
otro proceso. Su solución sólo puede venir del exterior y es una situación típica de sistemas
multiprogramados.
Se entiende aquí por recurso tanto dispositivos hardware -caso de cintas, algún periférico- como
software -información en módulos de memoria, contenido de un array-.
- Exclusión mutua: cuando algún proceso necesita control exclusivo sobre un recurso, forma
no compartible, y lo acapara, impidiendo que otro proceso lo pueda utilizar
- Espera y retención: situación que se da cuando un proceso que retiene un recurso lo mantiene
hasta que pueda utilizar otro
- No apropiación: un recurso permanece en propiedad de un proceso y no se le puede quitar
hasta que lo haya utilizado; es decir, las prioridades tienen una escasa validez
- Espera circular: existe un conjunto de procesos en el que se da la circunstancia de que un
proceso retiene uno o más recursos que necesita el siguiente proceso
La solución más radical es eliminar los procesos que han ocasionado el interbloqueo, lo que se conoce
como reanudación. Otras soluciones pueden ser establecer protocolos para evitarlos, asignar
prioridades o mantener informado al sistema y al usuario de los estados de procesamiento.
En general existen dos grandes tipos de soluciones, las soluciones preventivas y las de tratamiento o
médicas, es decir, las que se aplican una vez que el interbloqueo ha tenido lugar.
Lo más eficaz en este caso es evitar que alguna de las condiciones que da lugar al interbloqueo no
ocurra. Para ello las vemos una por una:
- Exclusión mutua: Resulta complicado ya que existen recursos que no se pueden compartir,
como es el caso de los dispositivos de entrada y de salida -las cintas y las impresoras, por
ejemplo-, con lo que se tiene que recurrir a una compartición virtual con el uso del
denominado spooler.
- Espera y retención: Se evita si el sistema operativo hace que cada proceso, antes de entrar en
ejecución, muestre los recursos que va a utilizar declarándolos en el Lenguaje de Control de
Tareas -JCL, de Job Control Language-. El JCL es un lenguaje que se utiliza para elaborar
“macros” que contienen la secuencia de comandos que se van a ejecutar cuando un programa
entra en estado operativo. Si el sistema operativo comprueba que todos los recursos
declarados están disponibles, le permitirá la ejecución. Si no, le pondrá en estado de
preparado hasta que se liberen esos recursos.
Una desventaja es que los recursos tienen una baja utilización dado que algunos de los
recursos que se usarán al final de la ejecución de un proceso no se utilizarán hasta entonces
permaneciendo libres. Además se pueden discriminar procesos postergando algunos en el
tiempo más de lo debido.
- No apropiación: El sistema operativo estudia si un proceso solicita un recurso que no está
disponible y, en ese caso, lo mantendrá en estado preparado liberando los recursos que
previamente tenía asignados. Este método puede postergar indefinidamente algunos
procesos y puede desechar trabajo que ya ha sido realizado.
- Espera circular: El programador deberá especificar en cada proceso el orden en el que va a
solicitar los recursos, estableciendo así una prioridad de los mismas para cada proceso. De
tal manera que si un proceso está utilizando el recurso situado en el orden 3 -por ejemplo, un
fichero- y quiere usar un recurso situado en primer lugar -por ejemplo, una cinta-, el proceso
liberará los restantes recursos y se colocará en el primer lugar del orden de uso. Para ir
pasando de un lugar al inferior deben irse liberando los recursos superiores.
Como se ha visto en los puntos anteriores, pude ocurrir que la aplicación de medidas para prevenir el
interbloqueo dé lugar a una baja utilización de los recursos. Para evitar esta circunstancia es
conveniente que el sistema y el usuario dispongan de información sobre cómo se van a solicitar más
recursos y en qué orden.
Un primer método consiste en preparar procedimientos de detección, como por ejemplo algún
algoritmo ad hoc que se ejecute periódicamente auscultando al sistema. La frecuencia dependerá del
sistema, de su complejidad y de las posibilidades de que se presente el interbloqueo.
—A— Planificación, 6
a corto plazo, 6
Algoritmo a largo plazo, 6
por el proceso más corto y el tiempo, 17 algoritmos, 12
por tiempo de espera y de ejecución, 17 cuasi, con memoria limitada, 10
prioridad multicola, 17 intermedia, 6
Algoritmo de Camport, 14 objetivos, 7
Algoritmo de Dekker, 13 sin planificación, 9
Algoritmo de Dijkstra, 14 Procesador, 3
Algoritmo de Petterson, 14 Proceso, 3, 4
Algoritmo de planificación batch o compilado, 17
cola de retroalimentación, 16 cambio de contexto, 9
método Round-Robin, 16 colas de, 9
por el camino más corto, 16 competencia, 4
Algoritmo del semáforo, 14 concurrencia, 4
Algoritmos cooperación, 4
elementales, 13 de excepciones, 6
mixtos, 17 derechos, 5
Algoritmos de planificación estado, 5
FIFO, 15 intercambiable, 5
jerarquía, 4
no apropiación, 19
—C— no apropiativo, 16
Comparar y asignar, 15 nombre, 5
Concurrencia prioridad, 5
soluciones de hardware, 15 reentrante, 6
CPU, 9 residente, 5
adelanto de la, 9 reutilizable, 5
sección crítica, 13
suspensión de un, 8
—E— terminación de un, 7
Equidad, 7 tiempo de procesador, 7
Error, 3 Programa, 6
Espera circular, 19
Exclusión mutua, 12 —R—
Ráfagas, 9
—F— Recurso, 18
FIFO, 10 Recursos
compartibles, 18
—H—
—S—
Hilo, 6
SCB, 9
Sincronización, 11
—I— Sistema
Interbloqueo índice de aprovechamiento, 7
eliminación, 19 recursos, 7
prevención, 18 tiempo de espera, 7
Interbloqueos, 18 tiempo de servicio, 7
Interrupción, 3, 6 Sistema operativo, 3, 4, 5
Interrupción permitida/interrupción no permitida, 15 tareas, 4
Sistemas operativos
de propósito general, 17
—L— SJF, 16
Lenguaje de control de tareas, 19 Spool, 6
—P— —V—
PCB, 9 Variable compartida, 12
Variable de control, 15
U.D. 6 - Sistemas Operativos, funcionamiento y gestión, pág. 69 de 15
1º Ciclos – ASI - SIMM
Juan P. Benito
ÍNDICE
ÍNDICE
1 CONCEPTOS BÁSICOS
2 GESTIÓN DE LA MEMORIA
2.1 ASIGNACIÓN EN SISTEMAS MONOPROGRAMADOS
2.1.1 Técnica de swapping
2.2 ASIGNACIÓN EN SISTEMAS MULTIPROGRAMADOS
2.2.1 Particiones contiguas fijas
2.2.1.1 Mecanismos de asignación de memoria
2.2.1.2 Entrada y salida de procesos
2.2.1.3 Reasignación
2.2.2 Particiones contiguas variables
2.2.2.1 Algoritmos de planificación
2.2.2.2 Compactación como solución a la fragmentación
2.2.3 Ventajas e inconvenientes de las particiones contiguas de memoria
2.2.4 Paginación
2.2.4.1 Procedimiento de trabajo
2.2.5 Segmentación
2.2.5.1 Tabla de segmentos
2.2.6 Sistemas mixtos de partición discreta
2.2.6.1 Técnica del recubrimiento
2.2.6.2 Técnica de la memoria virtual
ÍNDICE ALFABÉTICO
1 CONCEPTOS BÁSICOS
Memoria: Un dispositivo o medio de almacenamiento que puede retener información para su posterior
recuperación. Este término se usa como sinónimo de almacenamiento, aunque su uso más
frecuente es el que se refiere al almacenamiento interno de un computador que puede ser
direccionado directamente por medio de instrucciones operativas. Es decir, es un conjunto de
palabras o bytes, cada uno con una dirección asociada.
Tiempo de acceso: Es el tiempo que lleva recuperar una unidad de información, por ejemplo un byte,
desde un almacenamiento de memoria, es decir, es el tiempo que consume proceder a una
ejecución de lectura o de escritura. Se mide en nanosegundos si se trata de memoria principal, o de
segundos cuando se trata de un dispositivo en cinta. También se le conoce como velocidad de
acceso a la memoria.
Ciclo de memoria: o simplemente ciclo, es un intervalo de tiempo que lleva que un conjunto de
sucesos esté completado. Referido a la memoria, es el tiempo que transcurre entre dos accesos
consecutivos. Se suele usar como parámetro indicador de la potencia de un ordenador.
Direccionamiento de memoria: Para que el sistema operativo sepa a qué parte de la memoria debe
cargar un programa o proceso, esta memoria debe estar particionada y referenciada en cada uno de
sus límites, por intervalos, de manera que cada uno de ellos sea único. Para eso la memoria se
divide en bloques de 64 Kb., con lo que cada posición se identifica con dos números (ver Figura
7.1).
Página de memoria: Se define como la unidad de intercambio que se establece entre la memoria y el
intercambiador de memoria -swapping- implementado en un sistema de paginación. El número de
palabras o de bytes que incorpora una página es fijo para un sistema dado, pero es siempre
múltiplo de 2.
2 GESTIÓN DE LA MEMORIA
A menor memoria física, mayor será el número de accesos físicos que deberán hacerse para obtener
datos de los discos de memoria. Debido a esto, se tiende a usar memorias físicas grandes con el
objetivo de ahorrar tiempo de acceso a discos.
Dado que la memoria de los procesadores y la memoria principal suelen ser las más caras de
implementar en los sistemas, y las que a veces presentan una alta infrautilización, se hace necesario
realizar una buena gestión de la memoria para optimizar su uso.
Para el caso de gestionar dentro de un nivel dado de jerarquía, el sistema operativo controlará que
fracción de ese nivel se va a destinar a cada proceso. Es decir, el gestor es el software del sistema, y
este concepto se refiere también a la gestión de espacio en el dispositivo de intercambio.
Esta gestión se puede resumir en tres tareas: asignar memorias físicas de capacidad limitada a los
diversos procesos que se han activado y se van a ejecutar, retirar memoria a los procesos que se han
desactivado y ya no se ejecutan, y debe facilitar el aislamiento y protección de las zonas de memoria.
- Determinar la manera en que se asigna la memoria: cómo se debe dar, a qué proceso y en qué
orden
- Determinar cómo se retira la memoria: qué procesos han de abandonar la memoria, cuándo lo
hacen y en qué orden
- Llevar un control de las zonas de memoria que están asignadas y que están libres
- Proteger y aislar los espacios de memoria, facilitando la sincronización entre los procesos
Figura 7.1 Cuadro esquemático de la gestión de la memoria según los distintos sistemas
S. Monoprogramados Swapping
Particiones Particiones fijas
Gestión Sistemas contiguas Particiones variables
multiprogramados Particiones Paginación
discretas Segmentación
Una primera aproximación es la denominada “máquina desnuda”, que es un sistema donde no hay
sistema operativo y no hay gestor de memoria, por lo que quien lleva la cuenta es el propio
programador. Suele tratarse de pequeños microprocesadores, dedicados a una sola cosa.
Ligeramente más sofisticado consiste en dividir la memoria en dos amplios segmentos. En el primero
se ubicará la parte del sistema operativo que ha de residir en memoria de manera permanente -es el
caso de la parte del sistema operativo que se denomina monitor residente o supervisor permanente-. El
segundo segmento se reserva para los procesos de los usuarios. La parte de sistema operativo que no
es el supervisor permanente se pasa a la zona de procesos. Algunos sistemas, si el sistema operativo
ocupa un espacio ajustado, dejan el resto liberado a la zona de procesos.
La elección de dónde se debe ubicar el sistema operativo vendrá dada según dónde se encuentra el
vector de interrupciones, pues lo normal es situarlo junto a ese vector, en la parte alta o baja de la
memoria, mientras que en otros casos, en pocos, se prefiere separarlos.
Cuando se carga en memoria un proceso se verifica que las direcciones que necesita estén entre los
límites que marcan la zona de usuario. Si resultan fuera de límites -por encima o por debajo- el
sistema operativo provoca una interrupción y el proceso no termina cargándose en memoria. Este
límite viene señalado por hardware, o se utiliza un registro base donde se graba la dirección
correspondiente al nacimiento de la zona de usuario, o el sistema operativo -o parte de él- se graba en
memoria de sólo lectura, o bien se utilizan bits de protección como si se tratase de banderas para
determinar los accesos.
De cualquier modo, el límite de protección del sistema operativo es muy estático y difícil de
modificar, con lo que el tamaño asignado suele ser poco variable. Para cambiar ese tamaño de
memoria asignada, en vez de cargar los procesos de manera contigua al sistema operativo, se cargan
empezando desde el límite superior, con lo que si el sistema operativo necesita -en algún momento
puntual- de un margen extra de memoria, puede acceder a ella por encima de su límite.
Figura 7.2
Asignación de memoria en monoprogramación y posibilidades de gestión
Usuario
Usuario límit
Usuario e
S. O. residente S. O. residente S. O. residente
Es un método de asignación y retirada de memoria que pretende eliminar los tiempos de gestión de
entrada y salida de procesos en las distintas zonas. Estos tiempos pueden ser elevados y el consumo
y/o desperdicio de CPU importante. Para ello se crea una memoria intermedia o memoria de retorno
-backing memory- a la que se trasladan los procesos que ya no necesitan memoria -porque se hayan
suspendido-, dejándolos allí hasta que su suspensión sea definitiva, o bien hasta que sean necesarios
de nuevo con lo que el sistema operativo los localiza en la memoria de retorno y los vuelve a incluir
en memoria principal. Este dispositivo intermedio se denomina dispositivo de intercambio.
Un artificio para reducir el tiempo de intercambio es agilizar los tiempos de ida y vuelta de los
procesos. Para ello se incorpora otra memoria intermedia, como una memoria buffer, de manera que a
una de ellas se dirigen los procesos que salen y a la otra los procesos que entran (ver Figura 7.3).
Las características de esta técnica se pueden resumir como: la memoria de usuario se usa
alternativamente por distintos programas, y los programas o procesos son cargados o extraídos de la
memoria según tengan o pierdan CPU. Este sistema será tanto más rentable cuánto mayor sean los
tiempos de ejecución de usuario, y cuánto menor sean los tiempos de intercambio.
En este caso lo que se hace es partir la memoria en varias áreas, y a cada una de las cuales se le asigna
un proceso o una parte de un proceso. Si todas las secciones de un proceso o programa se cargan en la
misma área se denomina asignación contigua. En caso contrario se llama asignación discreta o no
contigua.
La asignación contigua se divide a su vez en otros dos procedimientos de gestión de memoria, las
asignaciones por particiones fijas, y por particiones variables.
La asignación discreta o no contigua contiene dos procedimientos que se van a ver: la paginación y la
segmentación.
Conviene mencionar dos conceptos: la fragmentación interna de la memoria, aquélla en la que existen
huecos en la memoria porque los procesos asignados a ciertas particiones no las ocupan en su
totalidad, quedando pequeñas áreas de memoria sin utilizar; y fragmentación externa, como aquélla en
la que los procesos no pueden entrar en un hueco de memoria por que el tamaño qe requiere es
superior.
Se trata de dividir la memoria desde el momento en el que se inicia el sistema. Para ello se define un
tamaño que suele coincidir con el de los procesos que el sistema utiliza con más frecuencia.
Por tanto, el número de particiones dependerá del tamaño de la memoria y del número de procesos
que se estime que van a ejecutarse simultáneamente. Este número de procesos simultáneos es lo que
se conoce como grado de multiprogramación. Para hacer esto correctamente se deberá llevar -al
menos durante un tiempo representativo- una estadística del tamaño y número de procesos más
frecuentes en el sistema.
Para garantizar que un proceso no se va a meter en el área de memoria reservada para otro, originando
conflictos o ausencias de lectura y escritura, se delimitan las áreas utilizando dos mecanismos: dos
registros límites –direcciones inferior y superior a un área en la que sólo puede entrar el usuario o
servicio propietario de ese proceso-, y registro base y tamaño –sabiendo el registro sobre el que se
calcula y el cupo de memoria que necesita, se produce la reserva de memoria-.
El sistema construye una tabla denominada tabla de descripción de particiones –denominada PDT, de
Partition Description Table, (ver Tabla 7.1)- que resume las particiones, su número, el tamaño y el
estado en que se encuentra -asignada o libre-. Cuando un proceso es activado el sistema operativo
intenta asignar una partición de la memoria que esté libre y sea de tamaño suficiente, lo que determina
consultando la tabla. Si encuentra la partición, y está libre, la cambia a asignada y carga en ella el
proceso o programa. Además graba esta circunstancia, es decir, el número de la partición en que se
encuentra el proceso, en el bloque de control de proceso -PCB- del proceso en cuestión. La secuencia
es alrevés para la descarga de programas de la memoria.
Cuando se trabaja en sistemas multiprogramados es frecuente que aparezcan situaciones en las que
hay que trabajar con multitud de procesos simultáneamente, con lo que muchos procesos requieren
U.D. 7 - Sistemas Operativos, gestión de memoria, pág. 74 de 14
1º Ciclos – ASI - SIMM
Juan P. Benito
Para hacer este reparto y decidir qué procesos entran y cuándo lo hacen, se trabaja con una alternativa:
trabajar con una cola o bien en multicola. En el primer caso, se adjudica a un proceso una partición de
memoria que es de tamaño igual o superior a la que necesita, o de otro modo se adjudica a cada
proceso la partición que mejor se adapte a él. Para hacer este reparto de particiones caben dos
posibilidades: analizar la mejor de las que quedan disponibles, o bien elegir la primera libre que mejor
se adapta al proceso.
Cuando se trabaja en multicola es frecuente que cada partición lleve asociada una cola de procesos,
colas que se gestionan independientemente, entrando los procesos en las colas de las particiones según
el tamaño de memoria requerido. Para entrar en la cola se eligen los procesos por su tamaño.
Como se ha comentado, cada usuario o programa es asignado a una lista de partición de memoria
según sus requerimientos de memoria. Así se encontrarán particiones sobradas y particiones
sobrecargadas. Para evitar esto se pueden seguir varias tácticas:
- Una manera de tramitar los procesos es descargar procesos que tienen requerimientos menos
rígidos o con capacidades pequeñas de trabajo y se pasan a una cola de espera, dejando su
partición libre para otros procesos más prioritarios.
- También cabe la posibilidad de establecer una lista de espera única. El algoritmo que gestione
esta cola única será el responsable de su optimización. Por ejemplo, el empleo de un
algoritmo FIFO dejaría porciones de memoria sin utilizar. Un algoritmo mejor sería el de
asignar un proceso a una partición según el tamaño de memoria requerido que mejor se
adapte al hueco existente.
- Otra posibilidad es retirar procesos que están suspendidos para dejar paso a otros. El proceso
retirado se elige según su prioridad, el tiempo que lleva en memoria, huecos disponibles,
tamaño de otros procesos, etc. Este método se denomina de carga dinámica.
- Otra alternativa se presenta cuando la asignación de tamaño de partición de memoria a los
procesos es fija o variable. Si es fija, se ahorra trabajo de búsqueda. Si es variable, al
proceso inicial pueden acompañar otros para optimizar la partición.
2.2.1.3 Reasignación
Se trata de pasar las direcciones que ha establecido el programador a las direcciones de memoria que
realmente utiliza el ordenador. Esta reasignación puede darse en tres momentos diferentes: en el
momento de carga, en el momento de la compilación o en el momento de la ejecución:
- Otro modo de trabajo es el que se llama de reasignación dinámica, el cual traduce las
direcciones programadas en físicas en el momento de la ejecución. Para ello se necesita la
ayuda de hardware específico. Se busca un espacio de hardware que será el traductor de
direcciones. Este espacio toma las direcciones pedidas por los procesos desde la CPU y les
añade la dirección del registro borde o frontera. Así, si el registro base -RB- se encuentra en
la dirección 1250 y la CPU solicita una dirección 350 -dirección lógica, que tiene que ser
menor que el límite superior de direcciones lógicas para ese proceso-, la partición real de
trabajo comenzará en la dirección 1250 + 350 = 1600 (ver Figura 7.4). Gracias a este
mecanismo, los procesos que se están ejecutando se pueden interrumpir momentáneamente y
pasarlos a otras particiones con lo que se utiliza y gestiona mejor la memoria principal.
Para evitar algunos de los inconvenientes de la partición contigua fija se crea el de las particiones
variables. Para ello, el sistema mantiene una tabla de particiones de memoria asignada y libre y, cada
vez que un proceso o programa termina, procede a la reasignación de las particiones entre los
procesos. Es decir, el reparto de particiones no es permanente.
Así, se crean las particiones según el tamaño que requieren los procesos que entran, procedimiento
que tiene dos topes: hasta que se acaba la memoria o hasta que la partición que queda no da cobertura
a ninguno de los procesos solicitantes. Según salen los procesos de la memoria las particiones se van
rediseñando para dar entrada a los procesos que van a entrar. Cada programa ocupa la memoria que
estrictamente necesita. Una conclusión es que no existe un número límite para las particiones de
memoria dado que dependerán de los procesos solicitantes (ver la Tabla 7.1). La asignación de
particiones se realiza por dos métodos o algoritmos: el FF -first fit, o el primer hueco disponible es el
que condiciona qué proceso pasa a memoria-, y el BF -best fit, donde el primer proceso es el que
marca el hueco de memoria a asignarle-. Además existen procedimientos de compactación de la
memoria en el sentido de evitar fragmentos y en el sentido de encontrar los huecos disponibles
mejores.
Primer ajuste: el proceso se coloca en el primer hueco donde quepa, pero rompe los bloques
mayores e impide que entren los procesos de mayor tamaño.
Mejor ajuste: donde mejor quepa, dejando menos sitio, aunque crea fragmentos muy pequeños,
por lo que no se pueden utilizar. Es el peor algoritmo de todos.
Siguiente ajuste: como el primero pero empezando desde el último hueco que se asignó, es decir,
busca el primer hueco tras la anterior asignación, ubicando donde encuentra un hueco suficiente.
Sin embargo, si entran procesos y se van colocando uno tras otro, pero más tarde dejan de usarse
y sus huecos quedan libres, los siguientes se siguen asignando posteriormente, rompiendo el
espacio grande.
Peor ajuste: en el que más sitio haya, en el hueco más grande. Es el mejor, el más simple, el más
rápido y el que mejor resultados da. Siempre intenta ocupar los procesos al principio y deja los
huecos grandes al final.
Cuando se tiene que ejecutar un proceso o programa que requiere una memoria de 3,5 Kb. y sólo
queda un hueco de memoria de 3,6 Kb., se ejecutará pero quedará un hueco más pequeño de 0,1 Kb,
que no se podrá utilizar, presumiblemente, para la ejecución de otros procesos. Hay que añadir a esto
que, además de sobrar memoria no disponible, hay que anotar la partición ocupada y el hueco
sobrante en la tabla de particiones de memoria aumentando así el proceso de gestión.
Debido a las sucesivas asignaciones de memoria y las retiradas correspondientes, aparecen bastantes
huecos de memoria de reducido tamaño que los hacen poco viables desde el punto de vista práctico, es
decir, son inútiles, aunque existen y consumen un recurso de sistema para su gestión. Para evitar la
fragmentación extensiva se recurre a un procedimiento que se denomina compactación. Este método
lo que pretende es reunir varios huecos pequeños en uno mayor que sí sea utilizable por uno o varios
procesos (ver Figura 7.6). Sólo es posible si se realiza una reasignación dinámica durante la ejecución
del proceso, tomando como referencias de las particiones los registros límite y registros base.
Figura 7.6
Método de compactación de memoria dejando los procesos en la zona superior
2000 2000 2000
1750 250 Kb 1750 250 Kb 1850 P4 = 150 Kb
1600 P4 = 150 Kb 1600 P4 = 150 Kb 1600 P3 = 250 Kb
1300 300 Kb 1350 P3 = 250 Kb 1450 P2 = 150 Kb
1050 P3 = 250 Kb 1200 P2 = 150 Kb 1350 P1 = 100 Kb
900 P2 = 150 Kb 900 300 Kb 250 Kb
700 200 Kb 700 200 Kb 300 Kb
600 P1 = 100 Kb 600 P1 = 100 Kb 600 200 Kb
S.O. Residente S.O. Residente S.O. Residente
Uno de los aspectos en el diseño de la compactación es saber cuándo se debe de realizar, existiendo 3
posibilidades:
- Cuando haya un porcentaje de la utilización de la memoria alto, por ejemplo el 80%, pero el
problema es que se desea compactar cuando no haya procesos que quieran acceder al
sistema, por el tiempo que lleva.
- Cuando hay procesos esperando para entrar en memoria, pero el problema es que el sistema
debe estar continuamente comprobando si algún proceso está esperando.
- Cada tiempo determinado, por ejemplo cada minuto, pero el problema es determinar el
tiempo.
Las particiones contiguas de tamaño fijo supone la forma más sencilla de particionar la memoria en
sistemas multiprogramados, y sobre todo es útil cuando conocemos el tamaño y los atributos de la
mayoría de los procesos que ocurren en el sistema. Tiene el inconveniente de que resultan poco
adecuadas para estructuras de información que requieran un crecimiento dinámico. Si llega un
programa de cierto tamaño de memoria y no entra, habrá que inicializar de nuevo el sistema y volver a
particionar la memoria.
Otro aspecto importante respecto de las particiones fijas es la fragmentación de la pila de memoria,
que conlleva desaprovechamientos de energía sensibles. Existen dos tipos de fragmentación: la interna
-cuando un proceso no llega a ocupar la partición que le han asignado-, y externa -cuando alguna
U.D. 7 - Sistemas Operativos, gestión de memoria, pág. 77 de 14
1º Ciclos – ASI - SIMM
Juan P. Benito
partición queda sin utilizarse porque los procesos que quedan requieren mayor memoria-. A mayor
diferencia entre el tamaño medio de las particiones y el tamaño medio de la memoria requerida por los
procesos, mayor será el grado de fragmentación, tanto interna como externa.
Para evitar la fragmentación es por lo que se ideó el método de las particiones contiguas. Sin
embargo, la dificultad aumenta pues será necesario adecuar algoritmos de selección. A mayor eficacia
en los algoritmos, mayor necesidad de programación y de consumo de recursos por el sistema.
Las soluciones que se plantean para solucionar las deficiencias de las particiones contiguas son las
denominadas particiones discretas, que son de dos tipos: paginación y segmentación.
Asignar a los procesos particiones de memoria de longitud variable pero limitados, estableciendo un
tamaño mínimo de 2i, y un tamaño de bloque máximo de 2 m. Es decir, cada bloque que asigna se
encuentra entre esos dos tamaños pero siempre en potencia de dos: 2 i 2k 2m.
Cuando un proceso pide una partición de tamaño B, el sistema operativo busca un bloque de tamaño
2i libre tal que 2i-1 < B 2i, siempre el bloque libre que más se adapte a él. Si no hay libre, divide 2 i+1,
en 2 bloques de tamaño 2i, uno se queda libre y otro se asigna. Si no hay 2 i+1 se divide en uno más
superior. Por ejemplo:
1.- Se parte de un bloque de 1 Mb. Aparece un Proceso1 que requiere 45 Kb. Se toma el bloque
de 1 Mb y se divide en dos de 512 Kb, uno queda libre y se divide el otro en dos de 256,
uno queda libre y el otro se divide en dos de 128, uno queda libre y el otro se divide en dos
de 64 Kb, los divido y queda uno de 32 Kb pero no satisface los de 45 Kb, entonces me
quedo en 64 Kb y se lo asigno al proceso 1.
Ahora llega el Proceso 2 que pide 110 Kb, como cabe en el bloque de 128 Kb se lo asigna.
Luego llega Pr3 de 160 Kb, le tengo que asignar 256 Kb y como hay uno libre se lo asigno.
Llega Pr4 de 95 Kb, tengo que buscar un hueco de 128 Kb, no hay, sólo quedan de 64 Kb y de
512 Kb, entonces divido el de 512 en dos de 256, uno lo dejo libre y el otro lo divido en dos
de 128 y se lo asigno a uno.
Termina Pr3 y libero memoria.
Termina Pr2 y libero memoria.
Llega el Proceso5 y pide 80 Kb le tengo que dar un bloque de 128, tengo uno libre y se lo
asigno.
Termina Pr1 y como su hueco compañero está libre lo fusiono con el de al lado en uno de 128.
El resto de los procesos van acabando y se van fusionando con el resto de los compañeros,
hasta que al final se vuelve al 1Mb.
Este algoritmo presenta un grado de multiprogramación variable, lo que pasa es que asigna en bloques
de ciertos tamaños. Tiene fragmentación interna y fragmentación externa.
2.2.4 Paginación
Consiste en dividir la memoria física en unas áreas denominadas marcos -frames- y la división de la
memoria derivada de los procesos, es decir, la memoria lógica, en áreas llamadas páginas -pages-.
Así, la página es la unidad de intercambio de información entre la memoria y la memoria de
intercambio -ver swapping-, siendo el reflejo de los marcos de memoria en la de intercambio las
llamadas páginas.
Así, de esta manera se elimina la fragmentación externa, dado que la memoria del proceso se divide
en páginas y se les asignan tantos marcos libres como necesiten. Si hay suficientes para dar cobertura
a su número de páginas, entonces el proceso se ejecutará. En ese momento el sistema operativo creará
un mapa o tabla de páginas llamado tabla de páginas, parecida a la de la tabla de particiones, aunque
relaciona marcos y páginas derivadas de la memoria de los procesos. El tamaño de las páginas lo da el
hardware pero suele ser múltiplo de 2. Los marcos de página no tienen por qué ser contiguos.
Las páginas se protegen de funciones indeseables asociando a cada página unos bits, que indican
validez cuando se trata de entradas del programa, e indican invalidez frente a otra llamada ajena.
Cuando la CPU requiere la carga de un proceso que tiene un tamaño P, el sistema operativo debe
asignarle N marcos de página. El número N se calcula dividiendo el tamaño de la memoria requerida
por el proceso, P, entre el tamaño de las páginas y se le aproxima al entero superior más próximo,
dado que siempre debe asignar el mismo tamaño o algo sobrante. Por ejemplo, si el tamaño de la
memoria del proceso se calcula en 100 Kb. y el tamaño de la página fuera de 16 Kb., al hacer la
división y aproximar al entero superior se llega a que se necesitarán 7 marcos de página.
Existe la pega de que el último marco de página no se va a utilizar totalmente, con lo que se produce
una fragmentación interna que siempre será menor que el tamaño de una página. Una vez que el
sistema operativo ha decidido los marcos de página, crea la tabla de páginas para ese proceso que
emparejará 7 marcos de página con 7 páginas de memoria de proceso.
De esta manera cualquier dirección emitida por la CPU tiene dos parámetros: el número de página, p,
y el tamaño, t. La tabla refiere cada página y cada marco con su dirección de memoria real, aunque
este tipo de trabajo requiere la aplicación de un hardware adecuado. Una vez que el sistema operativo
ha determinado cuáles son p y t, consulta la tabla de páginas de memoria y localiza el marco de
página y, una vez determinado éste, conoce la dirección real de memoria que lo refiere. Sin embargo,
al aumentar el número de consultas a memoria, se incrementa sensiblemente el tiempo de ejecución y,
además, no se ha conseguido eliminar la fragmentación interna.
Además, el sistema operativo puede introducir las entradas de la tabla de páginas de memoria y
cargarlas en una memoria rápida -como es el caso de la memoria caché-. De esa manera el sistema
operativo se asegura de que las páginas que necesita el proceso en ejecución, y sólo esas páginas, se
mantienen preparadas y con una referencia y direccionamientos muy rápidos, disminuyendo el
consumo de tiempo de memoria. Hay que tener en cuenta que mientras la memoria principal puede
funcionar con un acceso de cerca de 500 ns., la memoria caché funciona a cerca de 10 ns., evitándose,
por otro lado, una de las llamadas a direccionamiento, con lo que pasamos de consumir 510 ns. frente
a los 1000 ns. si no se encuentra en caché.
Otra posibilidad es la de compartir páginas de memoria entre programas de usuario, aunque una parte
del código debe ser común, ahorrándose memoria y no se carga el código cada vez que un proceso lo
exige. Por contra, exige mecanismos de protección de memoria más evolucionados, como los bits de
protección -donde las entradas usadas por el proceso se determinan con un bit de validez, marcándose
el resto con un bit de invalidez por si se presentan errores de direccionamiento-, restricciones de
lectura, de escritura, de lectura/escritura,...
2.2.5 Segmentación
El usuario va a compartimentar los programas en subunidades o módulos que son de tamaño variable
y a los cuales se refiere por su nombre. Esta estructuración lógica se denomina por segmentos, siendo
cada módulo un segmento. Los segmentos no tienen por qué ser del mismo tamaño -al contrario de lo
que pasaba con las páginas-, ni ser contiguos, aunque sí lo debe ser la información que contienen.
Para referirse a cada módulo estos se numeran. De esta forma cada dirección sobre un módulo se
puede dar con dos parámetros: segmento y desplazamiento. Los segmentos y el direccionamiento los
define el compilador y marca, para cada segmento, una dirección origen relativa con valor 0.
Para llevar a cabo la protección frente a funciones no permitidas el sistema se apoya en el registro
base y el registro límite, acompañando a cada segmento de unos bits que indican los derechos de
acceso. Hay que tener en cuenta que los segmentos se pueden compartir entre programas y usuarios.
No obstante, al ser los segmentos de tamaño variable se evita la fragmentación interna, pero no del
todo la externa, que sólo se puede reducir al máximo empleando algoritmos de planificación de
segmentos.
Más tarde será necesario un hardware especial que traslade esas referencias lógicas, base y límite, a
sus correspondientes direcciones físicas. Para gestionar la memoria lo mejor posible se mantiene la
tabla de segmentos en la memoria principal mientras que la parte de la tabla a la que más referencias
se espera hacer se guarda en la memoria caché.
A veces se recurre a procedimientos de gestión combinados, sobre todo útiles cuando se trata de
cargar un programa que ocupa más que la propia memoria. Estos sistemas se han venido desarrollando
desde comienzo de los años 60.
Así se utiliza la paginación segmentada, que consiste en segmentar la tabla de páginas; o bien se usa
la segmentación paginada, que trata de fijar los segmentos como múltiplos de las páginas.
Las ventajas de este tipo de operaciones son varias: aprovechar mejor la memoria física ya que se
puede tener cargada en ella sólo la parte del programa que la necesita -lo que aumenta el carácter de
multiprogramado del sistema-, se puede ejecutar un programa que requiera más memoria que la física
disponible, y se hacen necesarias menos operaciones de disco para la parte del programa que se va a
cargar a la memoria, ahorrando tiempo al disminuir los tránsitos de entrada y salida.
Dado que los programas tienen partes que no necesitan ejecutarse de manera paralela -como cuando
aparecen bifurcaciones, subrutinas,...-, cuando una parte de un programa llama a otra, ésta se carga en
el espacio de memoria que tenía asignada la primera, con el consiguiente ahorro de memoria. A la
parte del programa que siempre va a estar cargada en memoria se le llama raíz, y al resto se le
denomina secciones independientes.
Por ejemplo, el sistema operativo sabe que su límite superior de memoria asignada estará en 1000,
tomando cifras desde un origen relativo de 0 asociado a la dirección de memoria de la raíz del
programa. La forma de organizar estas direcciones entre las secciones independientes y la raíz la lleva
a cabo el enlazador. Se sabe que el límite superior tendrá como cota la que marca o necesita la rama
más larga del árbol de niveles del programa en cuestión.
Dentro de esta técnica existe una variante que se llama carga dinámica que consiste en que sólo va a
cargar en memoria la subrutina solicitada cuando sea llamada por el programa raíz por medio de la
correspondiente instrucción -caso de un PERFORM o de un CALL-.
Está basada en la anterior. Trata de cargar en memoria sólo lo que sea estrictamente necesario para su
funcionamiento correcto. Así, el sistema tiene que decidir cuándo cargar las secciones del programa
-de forma anticipada o sirviendo a las solicitudes-, dónde cargar cada sección -en el primero
disponible o en el segmento de memoria que se revele como el más adecuado-, y si existe
reemplazamiento -es decir, si se sustituye alguna porción de memoria por una sección nueva.
utilizando algún algoritmo implementado al efecto-.
Según la primera de las opciones, el sistema cargará una página cuando ésta sea llamada siguiendo un
procedimiento similar a una técnica swapping o de intercambio de memoria. Así, al solicitarse una
página determinada, el sistema operativo consulta la tabla de páginas y al localizarla la marca con un
bit de válido y carga la parte correspondiente del programa en memoria. También debe ser capaz el
sistema de solucionar los casos en que se haga referencia a una página que no está cargada en
memoria, o bien cuando el hardware detecta un error de dirección, tratado por el sistema operativo
como si la página no existiera.
memoria. Para solucionarlo el sistema operativo saca de la memoria la página menos usada -página
víctima- y la carga en una memoria más lenta, por ejemplo en disco guardando lo que el programa
haya escrito en memoria mientras tanto. Después actualiza la tabla de páginas, puesto que habrá un
elemento menos. Después sustituye a la víctima cargando la nueva página en memoria. Y por último
vuelve a actualizar la tabla de páginas pues habrá un elemento nuevo.
Parece de sentido común que si un programa necesita, para su ejecución, cargar varias páginas en
memoria, y alguna de ellas debe ser sustituida, es conveniente elegir a la que se hará referencia por el
sistema con mayor posterioridad.
Los algoritmos más usados para gestionar el ir y venir de las páginas a la memoria para asignarlas a
los diferentes marcos, son:
ÍNDICE ALFABÉTICO
—A— —C—
Algoritmo Compilación, 7
BF, 7
de localidad, 13
de planificación, 7
—D—
FF, 7 Dispositivo de intercambio, 2, 4
FIFO, 6
frecuencia de faltas de página, 13
LFU, 13
—E—
LRU, 13 Enlazador, 12
SO, 13
Algortimo
por el conjunto de trabajo, 13
—M—
Memoria, 2
asignación, 4
asignación de, 3
buffer de, 4
ciclo de, 2
compactación de la, 8, 9
gestión de, 3
gestión de la, 3
marcos de, 10
mecanismos de asignación. Véase Memoria,
asignación
página de, 2
paginación, 10
páginas de, 10
particiones contiguas, 4
particiones discretas, 5
particiones fijas, 5
particiones variables de, 7
principal, 2
reasignación, 6
reasignación dinámica de, 7
reasignación estática de, 7
recubrimiento de, 12
registro base, 7
segmentación de la, 11
segmento de, 11
tabla de descripción de particiones, 5
tabla de páginas de. Véase Memoria, tabla de
particiones
tabla de particiones de, 7
tiempo de acceso a, 2
virtual, técnica de la, 12
—P—
Páginas
protección de, 10
PCB. Véase Proceso, bloque de control de
Proceso
bloque de control de, 5
Procesos
carga dinámica de, 6
cola de, 6
entrada en memoria de, 6
multicola de, 6
—S—
Segmentos
tabla de, 11
Sistema operativo
supervisor, 3
Subrutina, 12
Swapping. Véase Dispositivo de retorno, Véase
Dispositivo de intercambio
Ciclos formativos – 1º
Sistemas Informáticos Monousuario y Multiusuario
ÍNDICE
ÍNDICE 1
1 CONCEPTOS BÁSICOS 2
2 SISTEMA DE E/S 3
3 CONEXIÓN DE PERIFÉRICOS 3
4 DISPOSITIVOS DE E/S4
4.1 SOPORTES DE ALMACENAMIENTO 4
4.2 SOPORTES DE INTERFAZ 5
4.3 SOPORTES DE TRANSMISIÓN DE DATOS 5
5 CONTROLADORES DE DISPOSITIVOS 5
5.1 PUERTOS DE E/S 6
6 MEDIOS DE TRANSMISIÓN DE INFORMACIÓN 6
6.1 LOS ACCESOS DIRECTOS A MEMORIA6
6.1.1 Procedimiento 7
6.2 CANALES DE E/S 7
6.2.1 Procedimiento de un canal 7
6.2.2 Clases de canales 8
6.2.2.1 Canales selectores 8
6.2.2.2 Canales multiplexores 8
7 GESTIÓN DE LAS E/S 8
8 SOFTWARE DE E/S 9
8.1 GESTORES DE INTERRUPCIONES 9
8.2 GESTORES DE DISPOSITIVOS O DRIVERS 9
8.3 SOFTWARE INDEPENDIENTE DEL DISPOSITIVO 10
8.4 SOFTWARE DE USUARIO 10
9 SEGURIDAD 10
9.1 SEGURIDAD INTERNA 11
9.2 SEGURIDAD A NIVEL DE FICHEROS 11
9.3 SEGURIDAD EN LA TRANSMISIÓN DE INFORMACIÓN 12
9.4 SEGURIDAD DE GRANDES SISTEMAS 12
ÍNDICE ALFABÉTICO 13
1 CONCEPTOS BÁSICOS
Bus: Se trata de una conexión entre dos componentes de un sistema informático. Gráficamente sería
un cable o un canal de conexión. Lo habitual es que sea externo, pero puede unir dos elementos de
un mismo componente, como es el caso de dos registros de la CPU. Por medio de él, se transmite
información entre componentes, y la velocidad en que se haga dependerá de su anchura de banda –
amplitud que permite la transmisión simultánea de caracteres-, aunque lo normal es que se trabaje
con 32 bits.
Controladores: Un subsistema que gobierna las funciones de aparatos conectados al sistema, pero
generalmente sin cambiar la información que pasa por él. Los aparatos conectados son, casi
siempre, periféricos o canales de comunicación. Una de sus funciones puede ser cambiar el
formato de la información para su transmisión o grabación.
Dispositivo: Se trata de un modo de señalar todo componente del ordenador que va a conectarse con
el núcleo del sistema por medio de conectores o buses. Pueden ser internos -disco duro- y externos
-un terminal o una impresora-. Comprenden el propio dispositivo, las interfaces, los controladores
y los puertos.
Errores: Se trata de la aparición de una circunstancia inesperada que comporta pérdida de información
o interrupción en su transmisión. La prevención, detección y corrección de errores es una parte
esencial en el software que acompaña a la transmisión, manipulación y almacenamiento de la
información en un sistema informático. En el caso de la transferencia de información, se trata de
comprobar si la información que se recibe es idéntica a la que se transmitió originalmente. Si no es
así, habrá que corregirla o repetir la operación.
Información: Se entiende por tal aquéllo que aporta un significado y completa o modifica el
conocimiento que se tiene sobre algún aspecto concreto. Esa información, desde el punto de vista
informático, consiste en un conjunto de bits, bytes o hexadecimales, pues la operatividad de un
sistema informático funciona de manera digital, es decir, basada en dos estados, o, en 0s y 1s.
Interrupción E/S: Es un mecanismo a nivel hardware que pretende sincronizar la CPU con los sucesos
derivados de los dispositivos que son asíncronos. Por este método, el sistema obliga a la CPU a
parar su proceso y a tratar una rutina de E/S. Cuando ha terminado, devuelve a la CPU al proceso
que estaba llevando. Un contador de programa implementado a nivel hardware controla el punto
del proceso de la CPU donde se produjo la interrupción para poder volver a él más tarde.
Periférico: Cualquier aparato, incluidos los almacenamientos intermedios y los equipos de entrada y
salida de información, que se conecta en y a un sistema informático.
Puerto: O puerto de entrada y salida -I/O port-, es un punto de conexión con una serie de circuitos de
control que permiten a los dispositivos de entrada y salida ser conectados con un bus interno que
conduce al microprocesador. Suele ser posible conmutarlo como de entrada o de salida y suele
estar conectado a un adaptador de interfaz del periférico.
2 SISTEMA DE E/S
Se entiende por tal el conjunto de elementos hardware y software que van a permitir al núcleo del
ordenador, es decir, al microprocesador, comunicarse con otros dispositivos del sistema y con el
exterior. Desde el punto de vista del hardware consta de: conexiones con la CPU o los buses de
conexión, el interfaz del periférico, los controladores, y los canales.
Desde el punto de vista del software se trata de una parte del sistema operativo que esconda las
particularidades del hardware al usuario que le proporcione a éste un interfaz cómodo.
3 CONEXIÓN DE PERIFÉRICOS
Se trata de elementos hardware que establecen una conexión entre el periférico y la CPU, con dos
elementos básicos: las líneas de dirección -que señalan la dirección de los dispositivos- y las líneas de
control -que establecen parámetros de control de los dispositivos-.
-Bus único: Con lo que el microprocesador, cuando establece un mandato, lo dirige por igual a
la memoria y a los periféricos. En esta técnica, que se le denomina mapeado de la memoria,
los registros de control de los aparatos periféricos se presentan al procesador como palabras
en memoria cuyo contenido puede ser escrito y leído usando las técnicas habituales de la
memoria principal.
- Bus de E/S: Los buses de memoria y de periféricos existen separadamente y no interfieren
entre sí. Normalmente todos los periféricos de carácter similar se unen a un controlador
único que deriva posteriormente hacia uno u otro periférico -es la filosofía de la arquitectura
en paralelo para los periféricos-, con la finalidad de ahorrar tiempo de gestión a la CPU.
Esto se complementa con los denominados DMAs que ahorran tiempo de CPU pues
eliminan al procesador de las tareas intermedias y los dispositivos acceden directamente a la
memoria.
- En serie: Donde cada canal tiene asignado una conexión fija a un grupo de periféricos
determinado. Así, para conectar con un periférico hay que hacerlo a través de su canal y, en
caso de que este canal esté ocupado por otro periférico, hay que esperar. Es decir, se
establecen prioridades.
- En red: Cada canal se conecta con todos los periféricos lo que permite transferencias
alternativas, es decir, si un canal está ocupado, se transmite por otro. En este caso se produce
un reparto del canal entre los distintos periféricos. Si este reparto es circular y equitativo, se
dice que es un canal multiplexor (ver el apartado 6.2.2.2), si retiene el canal hasta que acaba,
se dice que es un canal selector (ver apartado 6.2.2.1).
4 DISPOSITIVOS DE E/S
Son las componentes del sistema que se encargan de traducir y transferir la información hacia otros
componentes del equipo, en general hacia el exterior -y desde él-. Cambian la forma en que la
información se presenta, pasando las señales eléctricas a magnéticas y mecánicas, y al revés.
El sistema operativo se encarga de que gestionar ese tráfico y traducción de señales, posibilitando que
sean compartibles entre los usuarios. Además hace que las distintas características físicas que están
asociadas a la información no afecten negativamente a los usuarios.
Según el criterio que se estime, se pueden hacer dos grandes grupos de dispositivos : por la función
que hacen en el sistema, y por la manera de transferir la información.
Permiten el almacenamiento masivo de información, para poder ser usada más tarde. Gestionan y
estructuran ese almacenamiento. El ejemplo más extendido es el DOS. Existen distintas derivaciones:
Transmiten y reciben la información bit a bit. Su velocidad se mide en baudios -bits por segundo-. Es
frecuente en sistemas de trabajo multimedia y en los canales de transmisión de información.
Por la forma en que se conectan al equipo, los terminales se pueden clasificar en dos grupos: locales y
remotos.
Aunque la gama de terminales es muy amplia, los más usuales son los terminales RS 232. Este tipo de
terminal emite una señal de disposición para recibir datos. El sistema operativo es el que se encarga de
variar el estado del terminal entre receptor y emisor.
Son los dispositivos que permiten conectar ordenadores con las terminales, o bien conectar
ordenadores entre sí. Por la forma en que se realiza la transmisión existen tres clases:
- Simplex: Cuando sólo se permite la transmisión en una dirección, es decir, siempre el emisor
y el receptor son los mismos
- Half duplex: Permiten la transmisión en los dos sentidos, entre dos puntos, aunque no
simultáneamente
- Full duplex: Es como el anterior, pero permite que la comunicación se lleve a cabo
simultáneamente. Como consecuencia, las líneas de comunicación son dobles, por lo que la
instalación se encarece sensiblemente
5 CONTROLADORES DE DISPOSITIVOS
Las unidades de entrada y de salida tienen una parte física y mecánica que es el dispositivo
propiamente dicho y otra parte que es de carácter electrónico que actúa como intermediario entre el
sistema y el dispositivo. Ese componente intermedio se llama controlador. Consiste en una tarjeta de
circuitos impresos que tiene una salida donde se inserta un cable que comunica con el dispositivo.
Varios de estos cables se unen en un bus que conecta con el sistema o bien van en buses
independientes, dependiendo de la magnitud del sistema.
Un controlador se puede dividir en tres apartados: interfaz con el bus, el controlador propiamente
dicho y el interfaz con el usuario.
La utilidad que tiene separar un periférico del controlador es la posibilidad que se puede presentar de
conectar varios periféricos del mismo tipo a una salida o entrada únicas. Así, mientras un periférico
está operando, los otros periféricos aceptan operaciones de entrada y de salida. El ejemplo más clásico
es el de las impresoras conectadas a un controlador por medio de un derivador.
Un puerto de E/S es un parte intermedia de un controlador que se compone de una batería de registros
dedicados a tareas específicas. Las clases de registros más usuales son los registros de entrada,
registros de salida, registros de estado y registros de órdenes.
Los registros de entrada y salida guardan los datos a transmitir hasta que la CPU o el dispositivo están
en estado de recepción. Esto ocurre porque las velocidades de la CPU y de los dispositivos es muy
diferente, de manera que cuando un puerto está a punto de enviar datos, la CPU podría estar ocupada
con un conjunto de procesos y el puerto deberá esperar una interrupción para dar paso a su
información.
Los registros de órdenes son los encargados de transmitir los mandatos de entrada y de salida entre un
dispositivo y la CPU.
Asimismo el puerto suele estar conectado a un adaptador de interfaz del periférico. Este adaptador
lleva en un lado conexiones compatibles con el puerto de entrada/salida, mientras en el otro lleva
varios componentes de interfaces, lo que permite la conexión de varios periféricos.
Son los caminos por los que se va a pasar la información entre los distintos dispositivos del sistema y
la unidad central de procesos. Se dividen en dos grandes grupos: los DMA y los canales.
También conocidos como DMA -Direct Memory Acces- son dispositivos que permiten la transferencia
directa entre la memoria y los periféricos, o al revés, sin necesidad de establecer ningún canal de
intercambio. Es decir, los procesos de entrada/salida usan la memoria de la CPU mientras un proceso
se está ejecutando. Se compone de varios elementos de hardware, como son:
- Registro de direcciones: es el que guarda la dirección de memoria desde la cual o hacia la cual
se va a producir la transmisión
- Registro contador: es el encargado de almacenar el dato referente al tamaño de la información
que se va a trasmitir
- Bloque de control: es el encargado de regular el funcionamiento de este subsistema
- Registro de modo: guarda un bit que señala si la operación es de lectura o de escritura
6.1.1 Procedimiento
El microprocesador indica al DMA correspondiente sobre la inminencia de una transmisión. Para ello
le facilitará los datos oportunos, como la dirección de memoria, el tamaño del bloque, un identificador
del periférico y el sentido de la trasferencia -de los dos que hay-.
Una vez pasada esta fase, el DMA prepara la transferencia sin necesidad de acudir de nuevo a la CPU.
Sólo acude a él de nuevo para solicitar al microprocesador el bus conveniente para cada acceso de
memoria. Cuando la transferencia se ha completado la DMA informa de tal hecho a la CPU tras haber
provocado el sistema una interrupción.
Las transferencias de información pueden tener lugar por tres métodos: por ráfagas -cuando el DMA
controla de forma exclusiva al bus hasta la finalización de la transmisión-, por ciclos -cuando el DMA
toma el control del bus por espacio de un ciclo y envía una palabra cada vez-, y de forma transparente
-se aprovecha el espacio de tiempo que la CPU pueda estar libre con respecto al bus en cuestión-. La
existencia de estos tres métodos tiene como finalidad la de optimizar, en la medida de lo posible, los
tiempos de transferencia.
Realmente consta de un microprocesador con capacidad para ejecutar sus propios procesos e
instrucciones -programas de canal, los cuales están almacenados en la memoria del microprocesador
principal-. Su finalidad es liberar a la CPU de esas instrucciones de entrada/salida, con lo que ésta
puede seguir ejecutando sus programas mientras el microprocesador del canal trabaja en paralelo.
Asimismo dispone de una serie de instrucciones que le permiten manejar los controladores y los
periféricos a los que está conectado. A su vez cada instrucción posee una serie de comandos que
implican, cada uno, una determinada operación de entrada y de salida. También posee un registro de
estado que contiene un contador y un indicador de la situación en la que se encuentra la operación que
está realizando.
- El canal es activado mediante una instrucción emitida por la CPU. Cuando ocurre esto, el
registro de estado del canal se inicializa y se le transmite al canal la dirección de memoria de
la primera instrucción a ejecutar. Asimismo se le transmite al canal la dirección o
identificador del periférico al cual se le va a hacer la transferencia
- El canal hace un diagnóstico del periférico para comprobar en qué estado se encuentra y
estimar si la transmisión es posible
Normalmente se dividen según la forma de realizar la transferencia de la información. Así existen los
canales selectores y los multiplexores.
Son los encargados de poner en contacto los dispositivos de E/S más veloces con la CPU, aunque sólo
puede conectar con un dispositivo a un tiempo.
Trabaja en un modo similar al de ráfagas, es decir, organiza la actividad como si de una cola se
tratase, de manera que se dedica a la transmisión de un bloque de información desde o hacia un
periférico y no comienza el trabajo con un segundo periférico hasta que no ha terminado con el
primero.
Son los encargados de poner en contacto los dispositivos de E/S más lentos con la CPU, pudiendo
trabajar con varios dispositivos simultáneamente.
Trabajan en modo de transmisión similar al multiplex o por ciclos, es decir, el canal realiza una
exploración de estado de los periféricos y de ellos toma un carácter de cada periférico de entrada y
envía un carácter a cada uno de los de salida. Repitiendo esta secuencia por ciclos hasta que termine
con todas las operaciones previstas de entrada y salida. Los caracteres viajan simultáneamente.
Suelen existir dos tipos de dispositivos, un multiplexor que organiza la información para transmitirla,
y un demultiplexor, que organiza la información para ser recibida.
El sistema requiere comunicación continua e inmediata entre sus componentes, el micro, los
dispositivos y, en suma, con el exterior. Este tráfico de información ralentiza otras operaciones que
son importantes, como procesos, cálculos, gestiones de memoria, etc. Así, ante la gestión de la
información en el sistema, se encuentran varios problemas:
hardware tiene que utilizar señales eléctricas para regular el tráfico de la información y para
indicar los momentos de la transferencia.
- Velocidad: La velocidad de la CPU y la memoria va a ser distinta de la velocidad de los
dispositivos de E/S. Mientras los dispositivos más lentos los controla directamente la CPU,
los más rápidos se tratan con técnicas de acceso directo a memoria.
- Formato: el formato de la información es diferente en el microprocesador y los dispositivos de
entrada y salida. Por lo tanto hay que llevar a efecto una conversión que se podrá hacer por
dos métodos: conversión en serie y conversión en paralelo.
8 SOFTWARE DE E/S
Como se comentaba en el apartado 2, el software de E/S tiene dos objetivos: enmascarar las
complejidades que se puedan derivar del hardware y proporcionar al usuario un interfaz de fácil uso.
- Lógico: Es un conjunto de módulos o procesos del sistema operativo que trata la información
de manera independiente a las características físicas de los dispositivos
- Físico: Módulos, procesos o tablas que tratan la información según las características de los
dispositivos. Es lo que se conoce habitualmente como drivers -conductores- de E/S. Este
conjunto de tablas internas es específico para cada uno de los dispositivos.
La ventaja de esta estructura primaria o inicial del sistema operativo es que se dispone de un elemento
software común para todos los dispositivos -por ejemplo, los discos del sistema-, mientras que se
dispone de un elemento software específico para cada dispositivo -drivers-. De esta forma, se pueden
hacer modificaciones en los drivers sin que la parte que afecta al usuario sea cambiada.
Son importantes varios aspectos a tener en cuenta en el diseño de un sistema gestor de E/S: la
universalidad -es decir, que el software de E/S sea independiente de los dispositivos para poder
aplicarlo a cualquiera-, la seguridad -el control de los errores que se deberá hacer lo más cercano al
hardware que sea posible-, y diferenciado -separando la gestión de los dispositivos periféricos de un
sólo usuario de los de uso compartido-. Atendiendo a estos aspectos, el software se estructura en
cuatro niveles o estructura secundaria: gestores de interrupciones, gestores de dispositivos,
independiente del dispositivo y software de usuario.
Es el núcleo más interno de esta estructura. Cuando se presenta una interrupción el gestor de
dispositivos, el conductor o driver, queda suspendido o bloqueado. Cuando la interrupción se ha
solventado, el driver queda libre para seguir con su proceso.
Cuando se presenta una interrupción se emite inmediatamente una orden que tiene por finalidad grabar
los registros del proceso que se está ejecutando. Posteriormente se llama a una rutina del sistema
operativo que diagnostica y cura los errores o peticiones que provocan la interrupción y, después,
devuelve el control al proceso.
Se trata de un proceso intermedio que consiste en verificar que las solicitudes del software son las
correctas para poder darles tránsito. Por lo corriente cada gestor o driver se hace cargo de un
dispositivo o de un grupo de ellos que sean de la misma clase.
Al recibir una solicitud el driver comprueba el estado de los dispositivos y en el caso de que estos no
se encuentren libres la almacena en una lista de espera. Para el caso de un CD-ROM, al recibir la
petición de lectura de un segmento, comprobará primero en qué posición se encuentra la cabeza
lectora, después la movilizará y la situará correctamente, leerá los grupos de reconocimiento y
procederá a la lectura, devolviendo la información solicitada.
Este software pretende agrupar en sus procesos aquellas funciones que son comunes para todos los
dispositivos y las muestra en forma de interfaz de usuario uniforme y compacto, a pesar de pequeñas
diferencias que puedan detectarse en los dispositivos. Aquí se incluyen la información sobre la
situación de los dispositivos, la asignación y desasignación de los mismos, su protección, el
establecimiento del tamaño de los bloques de información, información y gestión de errores, etc.
Se trata de aquella parte del sistema operativo, o bien programas independientes, que el usuario
maneja por medio de programas enlazados a ellos. Es el caso de las bibliotecas del sistema operativo.
También los procedimientos a nivel usuario, como es el caso de las colas de impresión propio de
sistamas multitarea o multiprograma.
9 SEGURIDAD
Por seguridad se entiende cualquier prevención o protección contra tres supuestos: frente al acceso no
autorizado a la información, alteración no autorizada e intencionada de información, y alteración no
autorizada de la misma. Por tanto trata situaciones intencionadas o no que tienen que ver con la
manipulación de información sensible e importante.
Hay dos niveles de seguridad: seguridad externa -tiende a proteger la información y los recursos del
sistema frente a agentes externos-, y la seguridad interna -que vigila que los componentes y los
procesos del sistema se encuentran en un estado de integridad adecuados-.
- Control de los usuarios. Normalmente lo diseña el administrador del sistema. Suele consistir
en una palabra clave que permite el acceso al sistema a usuarios que están registrados como
tales. Para ello el sistema operativo ofrece la entrada de un nombre de usuario -user name- y
una palabra clave -password-. Si no coinciden con las que tiene almacenadas no dará el
acceso. El segundo nivel para este mecanismo es permitir sólo un número limitado de
intentos, sobrepasado el cual se interrumpe la conexión. Es decir, este mecanismo de
seguridad se basa en establecer una graduación de privilegios. Puede hacerse a nivel de
sistema, a nivel directorio y a nivel de ficheros.
- Protección de recursos: Normalmente quien lleva este control es la propia CPU. Para los tres
recursos básicos sería de la siguiente manera:
-- Procesador: Un reloj interno evita que un único proceso tiranice la CPU y postergue al
resto. Un ejemplo de seguridad es la implantación de algoritmos de planificación de la
CPU
-- Memoria: El uso de registros bandera o marcadores, incluyendo en ellos bits de estado,
que señalan qué segmento de memoria está ocupado y cuál no, para evitar incursiones
de procesos en áreas de memoria asignadas a otros procesos.
-- Periféricos y dispositivos de E/S: Para ello se apoya en el uso de drivers o conductores,
que regulan el tráfico de información desde o hacia los periféricos, evitando que, por
ejemplo, se puedan leer dos ficheros de un disco simultáneamente.
Consiste en codificar la información manejada y transmitida por una terminal al sistema central. Para
ello se usa la criptografía. Además, se suele acompañar la codificación con un procedimiento de
compresión de datos para ocupar menos memoria de proceso y almacenaje y para abreviar la
transmisión.
Para proceder a la codificación el emisor utiliza un algoritmo, el cual estará basado, generalmente, en
la teoría estadística, de probabilidades y la de los números primos. Este algoritmo, utilizado
inversamente, es el que posibilita al receptor a descifrar la información.
Se trata de construir los sistemas para que, en caso de ocurrencia de un fallo o error, la información
que se está procesando o que está almacenada no se verá alterada o perdida.
Para ello, lo que se hace es construir sistemas con los recursos importantes duplicados, de manera que
cuando se procesa una información se hace simultáneamente en los dos subsistema idénticos, con lo
que los procesos que transcurren en el paralelo no se verá afectada por un fallo en su gemelo.
ÍNDICE ALFABÉTICO
—A— —E—
Accesos directos a memoria, 6 E/S
Ancho de banda, 2 hardware de, 3
software de, 3, 9
Entrada/Salida
—B— operación de, 2
Baudios, 5 Errores, 2
Bus, 2
—F—
—C— Fichero, 4
Canal, 7
clases de, 8 —I—
demultiplexor, 8
funciones, 7 Información, 2
multiplexor, 3, 8 cambio de formato de la, 9
procedimiento, 7 Interrupción E/S, 2
selector, 3, 8
Cinta magnética, 4
Controlador, 2, 5
—N—
Criptografía, 12 Nombre de usuario, 11
—D— —P—
Disco, 4 Palabra clave, 11
tiempo de búsqueda, 5 Periférico, 2
tiempo de latencia, 5 Puerto, 2, 6
tiempo de transformación, 5
Dispositivo, 2
conexión por bus E/S, 3
—R—
conexión por bus único, 3 Registro, 4
Dispositivos
de bloque, 4
de carácter, 4 —S—
velocidad de los, 9 Seguridad, 10
Dispositivos de E/S, 4 externa, 10
DMA, 3, 7, 8. Véase Accesos directos a memoria. interna, 11
Véase Accesos directos a memoria Sincronización, 9
componentes, 6 Soportes
procedimiento, 7 de almacenamiento, 4
de interfaz, 4
de transmisión, 4
Ciclos formativos
Sistemas informáticos multiusuario y en red
ÍNDICE
ÍNDICE 1
1 CONCEPTOS2
2 DOS2
4 CARACTERÍSTICAS GENERALES 4
5 GESTIÓN DE LA MEMORIA5
6 ESTRUCTURA DE LA INFORMACIÓN 7
7 INTERFAZ DE USUARIO 7
7.1 CARGA DEL INTERFAZ8
8 ÓRDENES DEL DOS 9
8.1 CARACTERES ESPECIALES 9
8.2 SINTAXIS DE LAS ÓRDENES 10
8.3 CLASES DE ÓRDENES 10
9 TRABAJO CON DISPOSITIVOS 11
9.1 REDIRECCIONAMIENTO CON DISPOSITIVOS 11
10 ÓRDENES BÁSICAS DEL MS-DOS 13
ÍNDICE ANALÍTICO 15
1 CONCEPTOS
Monousuario: Calificativo que se asocia con sistemas informáticos que sólo permiten el acceso al
ordenador a través de un único terminal, es decir, no permite que dos usuarios, desde dos puestos
diferentes, accedan al mismo ordenador. El ejemplo de sistema operativo más característico de
estos sistemas es el MS-DOS.
Memoria RAM: de Memoria de Acceso Aleatorio -Random Access Memory-. Se trata de la memoria
principal del sistema informático. Está constituida por módulos de memoria con capacidad
múltiplo de 2 -actualmente está en el orden de las 16 a 64 Mb- y entre sus características cabe
destacar que es volátil -es decir, su contenido se pierde cuando se interrumpe la alimentación de
energía-, y que es de lectura y escritura -es decir, puede ser modificable tantas veces como sea
necesario-. La RAM se distribuye en registros o direcciones, con la particularidad de que siempre
toma las direcciones más bajas.
Memoria ROM: de Memoria de sólo lectura -Read-Only Memory-. La memoria ROM es una pastilla
-dispositivo- que contiene módulos de memoria estable, en forma de registros, y en una cantidad
limitada. Es no volátil y de sólo lectura, es decir, no se puede modificar. Se construye durante su
fabricación siguiendo un modelo o máscara diseñado por el fabricante. En este tipo de memoria se
incluyen rutinas de arranque del ordenador, de comunicaciones con los dispositivos del sistema,
tarjetas de red,... Sus direcciones están definidas de antemano y no cambian nunca.
2 DOS
Se trata de un acrónimo, marca registrada, para denominar a un sistema operativo de disco - disk
Operating System-. El DOS original fue escrito por IBM para sus computadores de la serie 700 y fue,
por lo tanto, uno de los primeros fabricantes de medios y grandes sistemas en ofrecer un sistema
operativo general. Fue introducido después de la corta vida que tuvieron los primitivos OS -Sistema
Operativo presentado por IBM para sus máquinas de la serie 360-.
El que se llame DOS es debido a que se diseñó para gestionar la información directamente sobre el
disco -ya sea disco duro o flexible-, con lo que la mayoría de sus mandatos tenían que ver con estas
tareas. Pero además, el DOS se encarga de la gestión de los periféricos y de las órdenes internas del
sistema, proporcionando información al usuario sobre la marcha de esos procesos o sobre la aparición
de interrupciones y errores. Para ello el sistema operativo de disco dispone de unos archivos de
órdenes y archivos del sistema, así como de las correspondientes rutinas.
Antes de conocer como han evolucionado los sistemas operativos de disco, queda hacer una breve
reseña del sistema operativo más extendido anteriormente. Se trata del CP/M. Un sistema operativo
-sus siglas son marca registrada- para sistemas basados en microprocesadores que sólo soporta un
usuario en un mismo momento -es decir, se trata de un sistema operativo monousuario y monotarea-.
A pesar de tratarse de un sistema muy primitivo, creado por los fabricantes de los microprocesadores
y los sistemas, estaba provisto de mantenimiento de archivos, utilidades para el conocimiento y la
actualización de los contenidos de la memoria, y tenía la posibilidad de acceder a un compilador y a
un ensamblador.
El MS-DOS fue creado en 1981 fruto de un acuerdo entre IBM y Microsoft para dotar a los
ordenadores del primero -los iniciales PC- de un sistema operativo más versátil y utilizable por el
público. Además se trataba de una mejora hardware -procesos a 16 bits- que requería un sistema
operativo más moderno y potente que los anteriores. Nacía así la versión MS-DOS 1.00. El éxito
conjunto, tanto de la venta de PCs como de este sistema operativo, hizo que se generalizara y
acaparara prácticamente el mercado.
A mediados de los años 80 la compañía norteamericana Digital Research crea el sistema DR-DOS ,
añadiendo algunas mejoras y modificaciones. Llega a originar cierta competencia con MS-DOS,
aunque de escasa entidad. Su máximo nivel es el DR-DOS 6.00 que apareció en 1991 -contemporáneo
de MS-DOS 5.00-. En 1992 la empresa fue adquirida por Novell pero como división de ésta siguió
desarrollando el sistema operativo. Por estas fechas lanza al mercado su Novell DOS 7.00, derivado
de los anteriores DR-DOS, como sistema operativo para redes Novell.
Otro sistema operativo de la época es el PC-DOS, muy parecido al MS-DOS, y nombre genérico de
los sistemas operativos desarrollados por IBM para sus equipos. Este sistema se fue desarrollando
desde 1991 cuando Microsoft e IBM rompieron su alianza estratégica y decidieron trabajar por
separado.
El derivado del PC-DOS fue el IBM-DOS que llegó hasta la versión 6.00 sobre el año 1993. Su
estructura era muy similar a la del MS-DOS pero variaban los programas complementarios, como las
utilidades y el antivirus.
El OS/2, causa de la ruptura de IBM y Microsoft dado que el segundo no quiso participar en su
desarrollo, es un sistema operativo híbrido entre el MS-DOS y el XENIX -sistema operativo que es
capaz de emular en un ordenador un sistema multipuesto y multitarea-. OS/2 es un sistema
monopuesto y además es multitarea.
MS-DOS
Versión Año Características
1.00 1981 Primer Sistema Operativo de Disco. Destinado sobre
todo a gestión de información en discos
1.10 y 1.25 1982 Trabaja con discos de doble cara
2.00 y 2.01 1983 Admite trabajo con subdirectorios sin limitación y
símbolos internacionales
2.11 1983 Es capaz de detectar errores y de corregirlos
2.25 1983 Admite el uso de caracteres extendidos
3.00 1984 Puede usar discos de 5,25 pulgadas y alta densidad (1,2
Mb.), pudiendo trabajar con discos duros de mayor
capacidad (por entonces se trata de discos de 1-2 Mb. en
80086
3.10 1984 Puede trabajar con varios terminales emulando una red
3.20 1986 Admite discos de 3,5 pulgadas y densidad (720 Kb).
3.30 1987 Añade nuevos comandos (trabajo con nuevos discos
duros y capacidades: 20 Mb), emulación de red,
gestiona hasta 4 puertos de comunicaciones y maneja
discos de 3,5 pulgadas y alta densidad (1,44 Mb.).
Asignaciones virtuales de memoria
4.00 y 4.01 1988 Trabaja con discos duros de capacidad elevada (40 Mb)
5.00 1991 Nueva gestión de la memoria RAM y caché
6.00 1993 Añade algunas utilidades, como el antivirus, duplicador
del espacio, defragmentador, gestor de memoria,
backup, chequeo del sistema,... Gestiona CDs
6.20 1995 Añade a lo anterior gestionar particiones de hasta 2 Gb
6.22 1995 Gestiona particiones de tamaño hasta 4 Gb
7.00 > 1995 Sin límite de tamaño en las particiones. Adelgazado y
sin entidad independiente, pues se inserta en W-95 y W-
98, respetando su núcleo, fundamentalmente
4 CARACTERÍSTICAS GENERALES
Entre las características del DOS, centrándonos en el MS-DOS, se pueden destacar las siguientes:
5 GESTIÓN DE LA MEMORIA
Para tener una idea clara de como se maneja la memoria por parte del MS-DOS, conviene repasar el
mapa de la memoria principal o RAM del sistema (ver Figura 9.1), haciendo hincapié en las cuatro
áreas de memoria: convencional, superior, expandida y extendida.
La memoria convencional está constituida por módulos de memoria RAM hasta que cubre una
capacidad de 640 Kb. Esta es la memoria que van a usar los diferentes programas de aplicación y de
utilidad, con lo que se llega a la conclusión siguiente: a más cantidad de memoria convencional, más
espacio para la ejecución de esos programas y por lo tanto más rapidez en su manejo. Sin embargo,
esos 640 Kb. no están libres, pues algunas de las rutinas del MS-DOS se cargan en sus direcciones
más bajas, ocupando un espacio de la misma:
- Los primeros 2-4 Kb. están reservados para el sistema operativo, donde va a guardar la tabla
de interrupciones, características de arranque y funcionamiento, etc.; indispensable para la
gestión básica del sistema
- Las siguientes 44 Kb. están ocupadas por las rutinas que constituyen el núcleo o kernel del
DOS, con dos ficheros de carácter oculto, como son el IO.SYS y el MSDOS.SYS
- Le sigue una pila pequeña de memoria, de tamaño variable, donde se cargan las
especificaciones dadas al sistema mediante las órdenes declaradas en el fichero denominado
CONFIG.SYS (ver siguiente tema), tales como el número de ficheros a tratar
simultáneamente -FILES-, los buffers de memoria,...
- Otra zona de área variable donde se cargan los controladores de dispositivos declarados en el
fichero CONFIG.SYS mediante la declaración DEVICE. Esta memoria siempre estará
ocupada por defecto, pues al instalar el MS-DOS el software autoinstala controladores como
el HIMEM.SYS, el ANSI.SYS y el EMM386.SYS. Para eliminarlos hay que eliminar del
CONFIG.SYS esos controladores por defecto y volver a iniciar el sistema informático
- Una zona de un tamaño aproximado de 3 Kb. que es donde se va a cargar el programa del
DOS que se encarga de procesar e interpretar las ordenes del DOS, denominado
COMMAND.COM. Va en una zona superior porque al arrancar el sistema, primero se leen
las opciones de configuración del fichero CONFIG.SYS y más tarde se carga el
COMMAND.COM
- Otra zona de tamaño variable, sobre los 20 Kb. aproximadamente, donde se cargan los
programas que van a permanecer activos permanentemente en memoria, tales como los que
instala el MS-DOS por defecto -DOSKEY y KEYBSP (este último no hace falta instalarlo si
convine el trabajo con un teclado de tipo anglosajón)-, o como los que instala el usuario a
través del fichero de configuración AUTOEXEC.BAT -como es el caso de un programa
antivirus con opción “sentinel”-.
- Una pila de memoria libre, de unos 600 Kb. aproximadamente, que sirve para la ejecución de
programas de aplicación y de utilidad
La memoria superior es la memoria RAM restante hasta cubrir 1 Mb., es decir, hasta llegar a los
primeros 1.024 Kbytes. O sea, la memoria superior abarca 384 Kb. En esta memoria se suelen ubicar
todos los procesos resultantes de las rutinas de inicialización y configuración del sistema, programas o
procesos que se guardan, habitualmente, en la memoria ROM del sistema. Las tres más importantes
son:
- Memoria para la ROM BIOS: O Sistema básico de entradas y salidas -de Basic Input/Output
System- son las rutinas básicas que sirven para gestionar las operaciones de entrada y salida
del sistema informático con respecto a sus dispositivos. Esta BIOS suele ser llamada
normalmente por el sistema operativo, aunque en ocasiones la pueden llamar los programas
de aplicación, aunque eso pueda acarrear problemas de compatibilidad
- Memoria de vídeo: Son módulos de RAM que almacenan los atributos, características y
caracteres de los objetos que aparecen en la pantalla de la terminal. En la actualidad, las
tarjetas de vídeo incorporan su propia RAM, que además está integrada en la placa base del
ordenador y es modificable por el usuario desde el teclado (suele estar entre 2 y 4 Mb.)
- Extensiones ROM: Son algunas rutinas almacenadas en registros de memoria ROM y que se
utilizan para gestionar algunos de los dispositivos del sistema
La memoria expandida está constituida por módulos de memoria con direcciones que no se pueden
referir de manera directa. Se denomina así por las primitivas tarjetas de expansión de memoria que
controlan, con su propio software, la partición de la misma. La manera en que funcionaban se resume
en: cuando el micro necesita poner en ejecución un proceso que se encuentra en la memoria extendida,
primero crea un marco de página de memoria física de 64 Kb. en el área de memoria superior, por
ejemplo, entre los 832 Kb. y los 896 Kb., en ese marco carga el marco de página lógico del proceso
que se encuentra en la expandida. Se pueden cargar en el marco físico tantos lógicos como necesite el
microprocesador -con el límite de 64 Kb.-, leyéndose de esa manera toda la memoria expandida que
sea necesario. En la actualidad, los modernos equipos tipo Pentium no gestionan memoria expandida.
La memoria extendida se define como aquella parte de la memoria cuyas direcciones son superiores
a los 1.024 Kb. La administración por el DOS de este tipo de memoria se lleva a cabo por un
dispositivo virtual del DOS denominado HIMEM.SYS. Este organizador de extendida utiliza las
especificaciones de memoria extendida -XMS, de Extended Memory Specification- o protocolos para
la gestión de direcciones en la memoria extendida, de tal manera que dos procesos no utilicen las
mismas direcciones de memoria. Esta memoria sólo la pueden utilizar los programas de aplicación y
de utilidad que vienen implementados para ello, por lo que si no es así, conviene más reconvertir esta
memoria en otro tipo para su mejor aprovechamiento.
La memoria alta o HMA- de High Memory Area- la constituyen los primeros 64 Kb. de la memoria
extendida, es decir, está situada entre los 1.024 Kb. y los 1.088 Kb. A ella se puede acceder desde el
microprocesador en modo real de funcionamiento. El organizador de memoria alta es el dispositivo
HIMEM.SYS, el cual se declara en el CONFIG.SYS. Su principal utilidad es cargar en ella una parte
del sistema operativo que es necesario que permanezca residente, con lo que liberamos memoria
convencional para el uso de utilidades y aplicaciones.
La memoria shadow -de sombra, en inglés- es una parte de la memoria extendida a la que se
traspasan las rutinas de la BIOS que se encuentran incorporadas a pastillas ROM. La memoria ROM
transcurre a 8 o 16 bits y es más lenta que la RAM, de ahí su utilidad. Pueden utilizar 128, 256 y 384
Kb. de memoria y hacen una copia de las rutinas BIOS del sistema y/o de las rutinas BIOS de una
tarjeta de vídeo. Sin embargo, a diferencia de las anteriores, no se puede establecer desde el sistema
operativo, sino que se configura por medio de unos interruptores que se encuentran en la placa base
del ordenador o por medio del setup del sistema.
6 ESTRUCTURA DE LA INFORMACIÓN
En cualquier disco se pueden apreciar dos niveles de estructuración básicos: el nivel físico y el nivel
lógico. El primero es la estructura que le da el fabricante en el proceso de elaboración. Es decir, es la
estructura que tiene el dispositivo de almacenamiento cuando se adquiere. Esta estructura divide al
disco en caras -hay varios discos en un montaje de un disco duro-, pistas -cilindros al tratarse de un
disco duro- y sectores. La intersección de un sector y una pista se denomina segmento. Uno o varios
segmentos constituyen un cluster.
La estructura lógica es la que se construye cuando se le da un formato al disco. Esta tarea proporciona
al disco cuatro elementos fundamentales para la gestión posterior de la información: el sector de
arranque, el directorio raíz, la tabla de localización de ficheros y el área de datos.
- El sector de arranque se ubica en el primer segmento del disco y ocupa 512 b. -que es el
tamaño de un segmento del disco-. En el caso del disco duro, este sector contiene un
pequeño programa que carga el DOS en memoria de manera automática cuando se enciende
el ordenador. Además alberga información referente a la estructura física del disco, como el
número de caras, sectores, capacidad del disco, datos sobre etiqueta, etc.
- La tabla de localización de ficheros -más conocida como FAT, del inglés Files Allocation
Table- guarda todas las referencias a los diferentes clusters, y segmentos, de información. Su
utilidad deriva de que al almacenar esta información se puede tener acceso directo a un
fichero, o a sus diversas particiones, sin necesidad de leer los ficheros previos, con lo que se
agiliza la localización de la información. La forma en que se referencia la información es
mediante el uso de los clusters, dado que el sistema operativo no reconoce sectores ni pistas.
Los clusters son, entonces, las unidades lógicas de almacenamiento.
- El directorio raíz se crea inmediatamente detrás de la FAT y puede ocupar varios segmentos.
Está constituido por unos registros con cuatro campos. La longitud de un registro es de 32
bits. y contienen información sobre la fecha en que se creó un fichero o directorio, la hora,
su extensión y los atributos del fichero -lectura, lectura y escritura, y oculto.
- Área de datos o zona de datos es el resto del espacio del disco, el cual está disponible para
albergar información. Viene a representar el 95 % de la capacidad del disco una vez que éste
se ha formateado.
7 INTERFAZ DE USUARIO
La interfaz, como se ha comentado en unidades anteriores, es la parte del software que permite la
interacción con el usuario, es decir, es lo que el usuario “aprecia” en la pantalla de su terminal como
parte externa del sistema. En esta fase de interacción es donde el usuario puede introducir información
o dejarse interrogar por el sistema.
Existen dos modos clásicos de presentar un interfaz al usuario: en modo pantalla de texto y en modo
gráfico. El primer modo es el que va a utilizar el DOS fundamentalmente -aunque alguna utilidad
tiene un modo más gráfico que el resto-, mientras que el segundo modo es el que se asocia con los
entornos “windows”.
Una vez que el sistema operativo se ha cargado en la memoria principal del ordenador, lo que incluye
dejar en ciertos segmentos de la RAM ciertos procesos permanentes del MS-DOS -como es el caso
del COMMAND.COM-, entonces se procede a la lectura y procesado de los ficheros de
configuración: CONFIG.SYS y AUTOEXEC.BAT, lo cual se hace automáticamente. El primero
contiene información referente a la configuración física del sistema y del entorno inmediato: códigos
de país, dispositivos, controladores, ficheros, etc. El fichero AUTOEXEC.BAT señala aquellos
procesos que se ponen en marcha cada vez que se activa el sistema operativo. Tanto el anterior como
éste, son ficheros que el usuario puede modificar según sus preferencias de trabajo con el sistema.
Cuando el sistema ha terminado de cargar todos los procesos de configuración y de entorno, aparece
una pantalla de fondo negro con un símbolo C:\>. Este símbolo se denomina símbolo del DOS o
indicador de comandos. Es decir, el sistema operativo advierte que se encuentra a la espera de recibir
algún comando por parte del usuario. Este símbolo indica la unidad en la que se encuentra el usuario.
En el ejemplo se este párrafo, el usuario se encuentra en la unidad C, es decir, se encuentra en el disco
duro denominado así por el sistema. Este símbolo es modificable por el usuario, dado que el que
aparece es el del sistema operativo por defecto. Para el caso de modificarlo para la sesión en curso, el
usuario tecleará el comando PROMPT seguido de un símbolo y del texto que quiera que aparezca
cada vez que el sistema está en espera -recién arrancado, por ejemplo-.
deberemos teclear
C:\>PROMPT I.E.S. Islas Filipinas$_Hoy es $d, y son las $t$_Espero un comando, $P$G
Son los procesos que el usuario quiere demandar del sistema operativo y este pone en marcha cuando
se introducen por medio de la interfaz. Así, para el caso del MS-DOS, con un interfaz tipo texto, una
orden es una palabra que representa el proceso a ejecutar. Esta palabra, siempre en inglés, se escribe
inmediatamente después del PROMPT que se ha descrito en el apartado anterior. Para que la orden
tenga eficacia debe seguirse de la pulsión de la tecla ENTER ().
Las órdenes del MS-DOS también son conocidas como mandatos o como comandos del MS-DOS.
Dentro de la zona de caracteres generales se encuentran varias teclas que tienen una función especial
que no se corresponde con la función clásica en una máquina de escribir corriente:
- Tecla ENTER (): Probablemente la más importante del teclado. Pulsada tras haber escrito
una orden del DOS indica al sistema que pase a su procesado y conclusión. También sirve
de manera similar en muchos programas de aplicación, o en los procesadores de texto como
fin de párrafo,... También se la conoce como tecla INTRO o tecla RETURN.
- Tecla CONTROL o CTRL: Puede venir señalada de las dos maneras en el teclado. Es junto
con la tecla del siguiente punto, una tecla sin entidad propia y tiene utilidad cuando es
pulsada simultáneamente a otra tecla. En este caso proporciona un carácter especial del
teclado o da acceso a una función
- Tecla ALT: Como la anterior, se trata de una tecla que no tiene entidad propia. Suele pulsarse
en combinación con otra para proporcionar un carácter especial o dar acceso a una función.
En combinación con CONTROL y la tecla SUPR -situada en la zona intermedia del teclado
o en la zona numérica- produce un proceso de reinicio del ordenador -como si éste acabara
de encenderse-. En combinación con la tecla CONTROL y la tecla ºª\ proporciona el carácter
\ -que se verá que es útil para establecer rutas de acceso a directorios o comandos-.
Además la tecla ALT junto con una combinación de números -de hasta 3 dígitos, más
concretamente, números situados entre el 1 y el 255- da como resultado un carácter ASCII
que tiene por código la clave numérica. Por ejemplo, la combinación de la tecla ALT y la
pulsión de los números 2, 3 y 0 da como resultado el carácter µ (nu).
- Tecla ALTGR: Esta tecla, pulsada simultáneamente con teclas que muestran más de dos
caracteres proporciona, como resultado, el tercero de esos caracteres. Por ejemplo, pulsando
la tecla ALTGR y la tecla correspondiente al número 3 de la fila superior de la zona de
caracteres generales -alfabéticos- se obtiene como resultado el carácter # (almohadilla). Esta
tecla se puede sustituir por la pulsión simultánea de las teclas CONTROL y ALT.
- Teclas de función: Son las señaladas en la parte superior de la casi totalidad de los teclados.
Suelen llevar la letra F seguida de un número que da el orden de la función. Suelen tener una
función asociada -pequeña macro que realiza un proceso compuesto de otros más simples-, y
serán útiles en algunos programas como el editor del MS-DOS.
- Otros caracteres: Es el caso de la barra /, que asociada a ciertas órdenes implica que ésta se
ejecute con ciertas condiciones marcadas por los parámetros que se escriban después de la
barra. El signo ?, que se usa como comodín para un carácter que se desconoce. La
combinación de estos dos caracteres inmediatamente detrás de un comando del MS-DOS
indica al sistema que proporcione información sobre ese comando -lo que se entiende
habitualmente como una ayuda acerca de esa orden-. Otro carácter es el *, que sirve como
comodín de un grupo de caracteres que se desconocen. La barra vertical | suele tener como
objeto la partición de la información de salida por terminal en varias pantallas para dar
tiempo al usuario a leerlas. Otro carácter es >, que sirve para direccionar la salida de
información hacia uno u otro dispositivo -por ejemplo, a terminal, o a impresora-; y su
contrario, < -que establece una dirección de entrada-. Por último, el carácter % sirve de
comodín en la escritura de ficheros programa -ficheros BAT del MS-DOS- para representar
el nombre de un objeto.
Se entiende por sintaxis un modelo de escritura de los comandos del MS-DOS, modelo que se debe
seguir si se quiere que la orden produzca el efecto deseado. Es decir, es el formato de la orden.
Las órdenes del MS-DOS se escriben en la pantalla inmediatamente detrás del símbolo del PROMPT.
Para escribirlas se pulsan las teclas del teclado hasta conseguir la sintaxis adecuada. Si se producen
errores se pueden corregir con la tecla “borrar carácter anterior” () -situada sobre la tecla ENTER
()-, con la tecla “borrar carácter siguiente” (SUPR), con las teclas de desplazamiento (, ), con
las teclas “ir al principio de la línea” (INICIO), e “ir al final de la línea” (FIN). No existe distinción,
en MS-DOS, entre mayúsculas o minúsculas, y la longitud máxima es de 127 caracteres.
Cualquier orden del MS-DOS está constituida por dos partes: la orden propiamente dicha, y los
parámetros de condición; aunque hay unas pocas órdenes que no llevan asociadas parámetros de
funcionamiento.
Los parámetros implican el funcionamiento de la orden con ciertas condiciones, y suelen ser
optativos por que MS-DOS implica unas condiciones por defecto para cada orden. Los parámetros de
las órdenes son de dos clases, los parámetros fijos -son los que se escriben detrás del carácter /
después de la orden-, y los parámetros variables -los nombres de ficheros sobre los que se va a
ejecutar la orden, la unidad de trabajo, la ruta de acceso, etc.-. En el caso de que los parámetros sean
opcionales figurarán en el formato encerrados entre corchetes -por ejemplo [unidad-. Hay una regla
que implica que se debe dejar un espacio en blanco entre la orden y los parámetros y entre éstos.
Se clasifican por su grado de intimidad dentro del sistema operativo. En este caso del MS-DOS se
clasifican en internas y externas:
- Órdenes internas: Son las que se incluyen dentro del COMMAND.COM. Como este
programa intérprete de órdenes se encuentra residente en la memoria principal, significa que
las órdenes que contiene se pueden ejecutar en cualquier momento por el sistema sin
necesidad de Si buscamos estas órdenes en el directorio de MS-DOS, como comandos
listados, no aparecerán. A su vez se dividen en:
-- Órdenes de procesos BAT: son las que habitualmente se suelen incluir en este tipo de
microprogramas de MS-DOS, o ficheros por lotes: son BREAK, BUFFERS, CALL,
CLS, COUNTRY, ECHO, FILES, FOR, GOTO, PAUSE, etc.
-- Órdenes referidas a directorios: relacionadas con la estructuración de la información y
su localización: CHDIR (CD).., MKDIR, RMDIR,...
-- Órdenes referidas a ficheros: son aquellas que permiten la manipulación de ficheros:
copiar, trasladar, fusionar, borrar,... Son: COPY, DELETE, DIR, ERASE,
UNDELETE, XCOPY,...
-- Órdenes varias: suelen estar dedicadas al entorno, como son: BREAK, PATH -estas
suelen aparecer con frecuencia también en los procesos BAT-, CHKDSK, VOL,
DATE, LABEL, PROMPT, TIME, VER,...
- Órdenes externas: Son aquellos programas que lleva asociados MS-DOS y que se pueden ver
al hacer un DIR del directorio del MS-DOS. Suelen llevar como terminación EXE o COM.
Así, están:
-- Externas de discos: DISKCOMP, DISKCOPY, FORMAT,...
-- Externas de ficheros: ATTRIB, COMP, MIRROR, TREE,...
-- Externas de Utilidades: ASSIGN, BACKUP, DEBUG, HELP, MORE, RESTORE,...
-- Externas de configuración: APPEND, DOSKEY, KEYBSP,...
Hay algunas órdenes que en las últimas versiones de MS-DOS, aquéllas que acompañan a los
entornos Windows, 95 y 98,no aparecen en “plantilla”, como es el caso de ASSIGN, BACKUP,
LINK, MIRROR, TREE,...
MS-DOS trabaja con 5 tipos distintos de dispositivos, asociados generalmente a periféricos. Estos
dispositivos se controlan desde los dos ficheros ocultos que incorpora el sistema en su instalación:
MSDOS.SYS e IO.SYS. MS-DOS nombra a esos dispositivos con sus correspondientes etiquetas y
esos nombres no pueden usarse para ficheros, para otros dispositivos, o para procesos BAT,..., es
decir, se trata de palabras reservadas del sistema operativo. Estos dispositivos son:
- Dispositivos CON: Se nombra en plural, dado que el MS-DOS incluye aquí el monitor y el
teclado. Esto lo hace el MS-DOS gracias a la exclusión mutua que presentan estos
dispositivos por su dirección de trabajo, pues el teclado introduce, mientras que el monitor
extrae. CON proviene de la palabra inglesa console.
- LPTs: Línea de impresoras -del inglés Line PrinTer-. Con esto el MS-DOS entiende todos los
puertos que trabajan en modo paralelo, asociados generalmente a impresoras. MS-DOS
distingue tres: LPT1, LPT2 y LPT3. Normalmente el de trabajo será el puerto LPT1, aunque
a veces se indique la impresora con la clave PRN-.
- COMs: Donde se incluyen los puertos en serie, donde se suelen conectar los módem, escáner
y ratones. MS-DOS gestiona hasta 4 puertos serie, desde COM1 hasta COM4. Normalmente
el de trabajo habitual será el COM1 para el ratón.
- AUX: Se trata de un dispositivo auxiliar, de transmisión en serie y asíncrono
- Dispositivo NUL: Se usa muy rara vez y el sistema operativo lo interpreta como un
dispositivo virtual donde se envían temporalmente informaciones en espera de ser
redireccionadas posteriormente. Se usa en algunas ocasiones en los ficheros BAT.
Se trata de conducir los resultados de un proceso ejecutado por el sistema operativo hacia un
dispositivo de entrada o de salida. Se podrá direccionar el resultado de la orden DIR hacia una
impresora o bien guardarlo en un fichero de tipo texto.
- Redireccionamiento de salida: Se usa el carácter >, seguido del nombre del dispositivo hacia
donde quiero dirigir la salida del proceso, o bien seguido del nombre del fichero donde se
quiere guardar ese resultado. Si el fichero ya existe lo reescribirá. Por ejemplo, si se escribe
la orden DIR en el directorio raíz, C:\>, el resultado será el conjunto de directorios y
ficheros que allí se encuentran. Si se direcciona
Lo mismo se puede hacer con cualquier orden del MS-DOS que proporcione una salida:
creará un fichero con esos datos. Si el fichero ya existe -si no se ha borrado el fichero que se
usó en la orden anterior-, entonces el fichero conten.txt pasa a contener el resultado de la
orden CHKDSK.
Si el contenido del fichero primitivo no se quiere perder, entonces hay que hacer un
redireccionamiento de salida con el símbolo >>, con lo que la información proporcionada
por el segundo comando se agregará al final del fichero. Así, el fichero conten.txt pasará a
contener la información del directorio y la información del CHKDSK -si el fichero no
existe, lo creará, como hacía >-.
- Redireccionamiento de entrada: Que indica al MS-DOS que los datos de entrada debe
tomarlos desde el dispositivo que se indica o bien desde el fichero señalado. Las órdenes
más habituales en este proceso son SORT -que ordena los datos de entrada-, MORE
-fracciona el contenido en pantallas para visualizarlos más cómodamente-, y FIND -que
sirve para localizar unos caracteres dentro de la información de entrada-. Estos comandos se
conocen como filtros del MS-DOS. Para hacer este direccionamiento con filtros se usa el
carácter | (ALT + 124), tal como se describe a continuación:
-- SORT: Este comando ordena la salida del proceso previo, utilizándolo como entrada,
y proporcionando la misma salida pero ordenada ascendentemente. Si se quiere
ordenar descendentemente se debe indicar con el parámetro /R. Si en vez de ordenar
por el primer carácter se quiere ordenar por el segundo o el quinto, se usará el
parámetro /2 ó /5. Por ejemplo, al ejecutar la orden
DIR | SORT
DIR | MORE
el resultado del proceso será un fichero de texto, que se mostrará por pantalla y que
contiene todas las líneas del fichero AGENDA que contienen la palabra González.
4.096 Mb
Memoria
máxima
386
486
Memoria
extendida
16 Mb
Memoria
máxima
286
Residentes, AUTOEXEC.BAT
COMMAND.COM Memoria
convencional
Dispositivos de CONFIG.SYS
Parte del CONFIG.SYS
Núcleo de MS-DOS: IO.SYS y
MSDOS.SYS
Tabla de interrupciones y
características de arranque
ÍNDICE ANALÍTICO
—A— monousuario, 2
—F—
FAT, 7
—M—
Memoria
alta, 6
convencional, 5
de vídeo, 6
expandida, 6
RAM, 2
ROM, 2, 5
shadow, 6
superior, 5
MS-DOS
AUTOEXEC.BAT, 8
caracteres especiales, 9
COMMAND.COM, 8
CONFIG.SYS, 8
órdenes, 9
órdenes básicas, 13
órdenes, externas, 11
órdenes, internas, 10
órdenes, parámetros, 10
órdenes, sintaxis, 10
palabras reservadas, 11
redireccionamiento de entrada, 12
redireccionamiento de salida, 11
—O—
OS, 2
OS/2, 3
—S—
Sector de arranque, 7
Sistema operativo, 2
monopuesto, 4
monotarea, 4
Ciclos formativos
Sistemas Monousuario y Multiusuario
ÍNDICE
ÍNDICE 1
1 CONCEPTOS BÁSICOS 2
2 INSTALACIÓN 2
2.1 INSTALACIÓN REACTUALIZANDO VERSIONES PREVIAS 2
2.2 INSTALACIÓN NUEVA 3
2.2.1 Formateado de los discos duros 4
2.2.1.1 Formateo a bajo nivel 4
2.2.1.2 Formateo a alto nivel 4
2.2.2 Tabla de particiones 5
3 VARIABLES DE ENTORNO 5
1 CONCEPTOS BÁSICOS
Variable: Se trata de un elemento de un sistema operativo que puede tomar diferentes valores según
cuáles sean las necesidades de instalación, configuración y funcionamiento del sistema.
Configuración: Es el acto de preparar un programa, proceso o aplicación para su uso según las
necesidades y requerimientos del usuario, o bien para el uso para el que ha sido diseñado. Para
proceder a ello se definen unas variables o parámetros de entorno a los cuales se les da los valores
más adecuados para conseguir ese fin.
2 INSTALACIÓN
Existen dos posibilidades en cuanto a la instalación del DOS en un equipo informático: que este
sistema operativo ya estuviera instalado previamente en él, o bien que el disco duro esté limpio, es
decir, que no contenga ninguna información ni ningún programa instalado en él. Se va a proceder a
describir la instalación para estos dos escenarios.
En este caso se trata de instalar el sistema operativo de una versión existiendo la misma u otra anterior
en el disco duro del sistema.
Una vez introducido el fichero INSTALAR.EXE aparece en la pantalla del ordenador el asistente de
instalación que ofrece la posibilidad de actualizar la versión anterior o proceder a una instalación
nueva. Para este caso se pulsaría la opción de actualización. Esto supone que los ficheros que el MS-
DOS ya tiene instalados por la versión antigua y que son coincidentes con los que se encuentran en
los disquetes no se van a instalar, con lo que el proceso de instalación se verá considerablemente
reducido en cuanto a tiempo de sistema.
Una vez que estas modificaciones han sido realizadas, indica al usuario que la instalación ha sido
completada. Sin embargo, para que la nueva instalación tenga efecto y opere eficientemente, el
asistente señala la obligatoriedad de arrancar de nuevo el sistema -resetearlo, en argot- para que éste
lea los nuevos parámetros en los ficheros por lotes que se han mencionado antes.
Las copias impresas de estos ficheros, así como un disquete de sistema del equipo, deberá incluirse en
el expediente de vida de la máquina para mantener un seguimiento del sistema y de sus circunstancias
de trabajo. Este expediente incluirá copias de las facturas de compra y albaranes de recepción, datos
de los proveedores, actualizaciones de hardware del equipo con documentos similares, numeración del
equipo en la empresa, “propietario”, tipo de trabajo al que se le dedica, horas previstas de actividad,
sistemas operativos con sus instalaciones y actualizaciones, actualizaciones de software con los datos
relativos a condiciones de trabajo, modificaciones que implican estas aplicaciones en los ficheros
CONFIG.SYS y AUTOEXEC.BAT, averías, reparaciones, etc.
Se va a tomar como base un escenario en el que el equipo informático acaba de llegar del fabricante -o
del distribuidor- sin manipulaciones previas. Esto quiere decir que pueden darse dos circunstancias:
que el fabricante haya procedido a un formateo del disco duro para que llegue listo para soportar la
instalación de software, o bien que el disco duro llegue tal como salió de su fabricante, es decir,
limpio de cualquier estructura.
Para hacer más completa la descripción de la instalación se va a partir del supuesto de que el disco
duro del ordenador no tiene ningún tipo de formateo, excepto el que viene de fábrica. A este respecto
es conveniente señalar que los discos duros pueden tener dos tipos de formateos: formateos a bajo
nivel y a alto nivel. La secuencia de trabajo sería la que sigue: formateo a bajo nivel, establecer la
tabla de particiones, y, por último, el formateo a alto nivel.
Consiste en darle estructura magnética a las caras de los discos que componen el disco duro. Es decir,
se trata de estructurar la capa magnética del disco de manera que se dispongan los sectores en las
diferentes pistas y se coloquen sus marcas de identificación inscribiendo un valor de magnetización
por defecto en todos los bytes de cada sector -normalmente se inscribe el valor F6 en cada byte de los
sectores-. De esta manera el programa que formatea comprueba si existen defectos físicos en los
discos. Si los encuentra, entonces marca en la FAT -tabla de localización de ficheros- la localización
del cluster y le señala como defectuoso para impedir su uso. Para realizar el formateo a bajo nivel se
pueden usar utilidades incluidas en paquetes como PCTools DeLuxe -HFORMAT y HDINIT-, las
correspondientes de NORTON; o el comando DEBUG de MS-DOS.
Para ello se teclea DEBUG inmediatamente detrás del prompt. Aparecerá un guión en el margen
izquierdo de la pantalla manteniendo una espera para la introducción de los comandos o parámetros
requeridos. En ese guión se tecleará
G=C800:5
que se utiliza para la mayoría de las controladoras MFM y SCSI. De esta manera se activa la BIOS de
la controladora y se inicia el formateo a bajo nivel siguiendo las instrucciones del programa. Suele
preguntar el nombre de la unidad de disco, el factor de intercalado -es el número de sectores que se
intercalan entre dos sectores lógicos consecutivos-, el número de cilindros y de cabezales, etc.
Si el comando que se escribe en el guión no inicia el formateo a bajo nivel -se puede probar con
G=C800:6 o G=C800:CCC- habrá que contactar con el fabricante del disco duro para que proporcione
la asistencia adecuada. Es normal que cada controladora de disco duro acompañe un manual o
información suficiente para este tipo de situaciones.
Si se procede a un formateo de bajo nivel sobre un disco duro que ya ha sido formateado previamente
por el fabricante se corre el riesgo de perder la estructura original y adquirir una estructura nueva que
sea difícilmente reconocible por el sistema operativo, o producir fallos de estructuración en el disco.
El formateo a alto nivel pone toda la información necesaria sobre los clusters del disco duro y las
características del disco en el sector 0, tiene que tener inicializadas a 0 todas las posiciones de los
clusters en la FAT, cumplimenta la FAT y poner a 0 la información del directorio raíz. Es decir,
prepara el disco para recibir información y tenerla perfectamente localizada. Es normal que además de
formatear se pretenda que el disco duro posea el sistema operativo en su formato básico. Para ello se
deberán incluir en el sector 0 el registro de carga, situar los ficheros ocultos del MS-DOS al principio
de la zona de datos y copiar en el disco el COMMAND.COM -el intérprete de comandos-. Cuando se
hace un formateo a alto nivel del disco duro no se borra la información que contiene, sino que se
borran las referencias que al respecto existen en la FAT y las del directorio raíz. Este tipo de formateo
se lleva a cabo con la orden FORMAT del MS-DOS.
El formateo a alto nivel será necesario siempre que se haya realizado un formateo a bajo nivel, para
adecuar la estructura magnética del disco y establecer la tabla de localización de sectores para ubicar y
referenciar posteriormente la información.
Normalmente, tras el formateo a bajo nivel hay que fijar la tabla de particiones del disco. Para ello se
utiliza el comando FDISK del MS-DOS. Este comando permite dividir el disco duro en varias
particiones. Esas particiones tendrán un tamaño máximo. En versiones anteriores a la 6.22 el MS-
DOS no puede gestionar particiones de tamaño superior a 2 Gb. En la versión 6.22 las particiones
pueden alcanzar un tamaño de hasta 4 Gb. En la versión 7.0 no existe límite de tamaño para las
particiones.
Al ejecutar FDISK aparece un menú con cuatro opciones que permite establecer el número de
particiones en el disco duro, cuál de ellas será la primaria y cuáles serán las alternativas, y el tamaño
de las mismas. Si se trabaja a FAT-16 -lo cual es lo más corriente en la mayoría de los ordenadores- el
disco duro se divide en segmentos de un tamaño de 32 Kb. Si se hace a FAT-32 se divide el disco en
segmentos de 4 Kb. En el primer caso se gana en rapidez dado que el número de segmentos a localizar
es menor. Sin embargo, se desperdicia espacio puesto que si se quiere guardar un fichero que tiene un
tamaño de 2 Kb. éste se ubica en un segmento de 32 Kb. no aprovechando el resto del espacio
disponible. Por contra, con una FAT-32 el número de segmentos aumenta considerablemente por lo
que la localización de los mismos se hace más lenta. Sin embargo, el aprovechamiento del espacio es
óptimo.
Para el caso de que se quiera aprovechar el disco duro para ejecutar programas que trabajan con dos
sistemas operativos -sería el caso de programas que necesitan un entorno DOS y programas en
entorno DOS y programas en entorno windows-, sería necesario realizar dos particiones en el disco
duro, con el tamaño que se estime adecuado para cada una de ellas. A cada partición se le asigna una
letra representativa de esa unidad -para ese caso serían dos unidades de disco duro, C y D-.
Posteriormente habría que proceder al formateo a alto nivel de cada una de las unidades. Por último se
procedería a la instalación del sistema operativo elegido para cada partición.
3 VARIABLES DE ENTORNO
Como se vio en conceptos básicos, se trata de establecer los parámetros -sus valores y estado de uso-
de funcionamiento y de configuración del MS-DOS, los cuales servirán para controlar el
funcionamiento de algunos archivos y programas, así como para controlar la apariencia y el
funcionamiento del propio sistema operativo.
Para ello se utiliza un comando -SET- con diferentes parámetros. El comando SET define, crea o
elimina las variables de entorno de MS-DOS. Su lugar de uso es en los ficheros por lotes
CONFIG.SYS y AUTOEXEC.BAT. Para el caso de que el usuario no recuerde como están
establecidas sus variables de entorno, se puede ejecutar el comando SET sin parámetros de uso sobre
la variable a analizar.
Entre las variables de entorno del DOS se encuentran: APPEND, COMSPEC, CONFIG,
MSDOSDATA, PATH, PROMPT, TEMP:
Son ficheros que almacenan parámetros de funcionamiento y de configuración, de forma que cada vez
que se conecta el equipo y se carga el sistema operativo, éste se configura según los deseos del
usuario. Para eso, al arrancar el sistema los ficheros BAT -también denominados ficheros por lotes-
nombrados como CONFIG.SYS y AUTOEXEC.BAT se ejecutan colocando en activo los parámetros
de configuración que almacenan.
4.1 CONFIG.SYS
Se trata de un fichero que se ejecuta al arranque del MS-DOS, una vez que se han cargado los
archivos ocultos del sistema y antes de que se cargue el COMMAND.COM. Indica qué dispositivos
tiene el sistema y/o cómo se quiere que funcionen, la memoria RAM disponible y cómo se va a usar,
y los caracteres que van a aparecer en el uso del teclado y del monitor. Para el caso de que no exista
este fichero en la raíz del ordenador cuando el sistema lo busca, el MS-DOS asume los valores de los
parámetros por defecto. Como el resto de los ficheros BAT se construye con un editor de texto -por
ejemplo, el EDIT o el EDLIN del MS-DOS- sin formatos, es decir, en código ASCII (ver siguiente
unidad).
Las órdenes que incorpora son exclusivas de este fichero y no se pueden ejecutar desde el prompt del
sistema, a excepción de tres de ellas: BREAK, REM y SET. Además este fichero puede incluir
comandos que son exclusivos para él y que tienen que ver con configuraciones múltiples del sistema,
como es el caso de INCLUDE, MENUCOLOR, MENUDEFAULT, MENUITEM (ver Tabla 10.1).
Tabla 10.1 - Listado de comandos que forman parte del CONFIG.SYS y una breve descripción
Comando Función
BREAK Activar o desactivar la función de la combinación de teclas CTRL+C
BUFFERS Establece el número de memorias intermedias para lectura y escritura de discos
COUNTRY Define formatos para fecha, hora, moneda y separadores decimales
DEVICE Instala el controlador -o driver- del dispositivo que se especifica
DEVICEHIGH Ídem, pero lo instala en el área de memoria superior
DOS Carga parte del DOS en el área de memoria superior
DRIVPARM Define parámetros de dispositivos anulando las originales del fabricante
FCBS Indica el número de archivos que pueden abrirse simultáneamente usando FCB
FILES Indica cuántos archivos pueden abrirse a la vez y a los cuales puede llamar el DOS
INSTALL Ejecuta ciertos comandos del DOS
LASTDRIVE Establece el número máximo de unidades a las que tener acceso
MENUCOLOR Fija el color del fondo para el menú de configuración
MENUDEFAUL Define opción por defecto para el menú de configuración
T
MENUITEM Define cada elemento del menú de opciones de configuración
NUMLOCK Especifica si el teclado numérico (BOLQ NUM) está inicialmente activo o no
REM Permite introducir comentarios en el fichero, o bien anular comandos
SET Estable el valor que van a tener las variables de entorno
SHELL Señala el intérprete de comandos que se usará. Por defecto COMMAND.COM
STACKS Señala la memoria reservada para el procesamiento de las interrupciones hardware
SUBMENU Define los elementos del menú que presentarán otro juego de opciones
Además aparecen caracteres especiales como ; (punto y coma) que al principio de una línea señala a
ésta como un comentario y no se ejecutará. El carácter ?, escrito antes del signo =, indica a MS-DOS
que antes de ejecutarse una opción deberá pedirse confirmación al usuario. Por otro lado, los
dispositivos -o sus controladores- instalables en el CONFIG.SYS son los que aparecen en la Tabla
10.2.
Fichero Función
ANSI.SYS Carga las secuencias de escape ANSI para control de funciones gráficas y de
movimientos del cursor
DISPLAY.SYS Carga las páginas de códigos para el monitor
DRIVER.SYS Controla unidades de disco externas
EMM386.SYS Emula la existencia de una memoria expandida usada a partir de la extendida, y
proporciona acceso a la parte de memoria superior
HIMEM.SYS Permite el acceso a la memoria extendida y a la memoria alta (HMA)
PRINTER.SYS Soporta las páginas de código para los puertos paralelo (LPT1, LPT2 y LPT3)
RAMDRIVE.SYS Permite utilizar parte de la memoria RAM como disco RAM o virtual
SMARTDRV.SYS Crea memoria caché para el disco duro, usando para ello memoria extendida
VDISK.SYS Permite el uso de parte de la memoria RAM como disco virtual o disco RAM
A continuación se incluyen algunas tablas que proporcionan información sobre los valores más
adecuados para algunos de los parámetros del CONFIG.SYS.
Tabla 10.6 - Tamaños mínimo y máximos para SMARTDRV según la memoria extendida
Tabla 10.7 - Memoria RAM ocupada por la instalación de ciertos comandos del CONFIG.SYS
La memoria RAM es la que utilizan todos los programas para ejecutarse. esto implica que a mayor
memoria RAM libre, mayor velocidad en el procesamiento de los programas. En este sentido se va a
buscar siempre, como objetivo, que se libere la mayor cantidad posible de memoria convencional.
Esto que parece fácil de decir, es algo más complicado y puede presentar variantes según el uso que se
le vaya a dar al equipo informático.
- No es conveniente instalar un disco RAM a no ser que sea necesario. Destinar esa memoria
RAM a caché -por medio de los comandos SMARTDRV y FASTOPEN- incrementa la
velocidad del sistema. Convendrá instalar un disco RAM siempre que se disponga de
memoria RAM de sobra, o por que no se disponga de disco duro o éste sea muy pequeño o
éste esté muy saturado, o bien porque se ejecuten aplicaciones que utilicen un elevado
número de archivos temporales
- No es conveniente instalar un emulador de memoria expandida -EMM386- a no ser que
existan programas que la utilicen expresamente
- Si se dispone de poca memoria RAM no es conveniente la instalación de muchos
controladores y dispositivos, pues aunque no se usen, la memoria RAM queda consumida.
Sería mejor concentrar todos los recursos de mejora en un sólo aspecto
En general se pueden presentar dos grandes casos: por un lado el uso de aplicaciones o programas que
funcionan en entorno DOS, con lo que nos interesará liberar memoria convencional y acelerar el
sistema en la medida de lo posible. Por otro lado, el uso de programas en entorno Windows, con lo
que interesará liberar la mayor cantidad de memoria expandida posible.
De manera manual las fases se resumen en los siguientes cuatro pasos: activar el controlador de
memoria extendida y de memoria alta, cargar el DOS en la memoria alta, crear los bloques de
memoria superior -más conocidos como UMB-, y cargar los controladores de dispositivos en la
memoria superior.
A partir de la versión 6.20 de MS-DOS es posible construir el CONFIG.SYS. para que sirva para
proporcionar varias configuraciones posibles del sistema seleccionándolas desde menús.
Para ello se divide el CONFIG.SYS en bloques de instrucciones. Cada bloque va encabezado por una
etiqueta escrita con mayúsculas y encerrada entre corchetes, etiqueta que hace las veces del nombre de
la configuración -como el nombre de una subrutina o subprograma-. Existen dos tipos de bloques.
bloques de órdenes, y bloques de menús.
Los bloques de menús están encabezados por la palabra MENU entre corchetes. Las órdenes serán del
tipo MENUITEM, indicando las distintas opciones del menú de configuración.
[MENU
MENUITEM = COMPILACOBOL, para compilación de cobol
MENUITEM = NORMAL, trabajo corriente
MENUCOLOR = 15, 1
MENUDEFAULT = NORMAL, 20
Es decir, se trata de un menú que da a elegir una configuración para trabajar con compilaciones de
programas COBOL o trabajar en modo normal. El fondo del menú será de color azul (1), mientras que
las letras serán de color blanco (15). En el caso de que pasen 20 segundos sin elegir opción, el sistema
asumirá por defecto la segunda opción.
Los bloques de órdenes están encabezados por la misma palabra que figura en los MENUITEM de los
bloques de menús. Debajo de ellas se inscriben las instrucciones correspondientes a esa configuración
[COMPILACOBOL
FILES = 40
BUFFERS = 20
DEVICE = C:\DOS\RAMDRIVE.SYS
[NORMAL
FILES = 25
BUFFERS = 10
Hay ocasiones en que algunas de las variables y sus valores son comunes para distintos escenarios de
configuración. En ese caso lo que se hace es crear un bloque común, o COMMON, etiquetado con esa
palabra, y en el que se van a incluir las variables y sus valores comunes para cualquier parte del
CONFIG.SYS. Por otro lado, si lo que se quiere es que se incluyan los parámetros de un bloque en
otro, se utilizará el comando INCLUDE seguido del nombre del bloque al que se quiere referenciar:
[MENU
MENUITEM = WINDOWS
MENUITEM = RED
MENUITEM = CAD
[COMMON
FILES = 40
BUFFERS = 20
[WINDOWS
DEVICE = C:\WINDOWS\HIMEN.SYS
[RED
INCLUDE = WINDOWS
DOS = HIGH
[CAD
DEVICE = C:\DOS\MOUSE.SYS
4.2 AUTOEXEC.BAT
Se trata de un fichero por lotes que debe situarse en el directorio raíz del sistema. El MS-DOS, cuando
arranca, leerá este fichero y lo ejecutará en último lugar de su secuencia de arranque. Para el caso de
que este fichero no exista, el DOS ejecuta los tres comandos básicos DATE, TIME y VER, y pasa el
control al usuario mostrando el prompt del sistema.
Este fichero se encargará de establecer multitud de variables que van a establecer el modo de trabajo
de DOS y van a permitir que se ejecuten ciertos programas (ver Tabla 10.8)
Comando Función
ASSIGN Asigna una letra de unidad a otra unidad diferente
DATE Visualiza y modifica la fecha del sistema
DOSKEY Activa un buffer de teclado para almacenar las últimas líneas de comandos
DOSSHELL Activa un intérprete de MS-DOS diferente al COMMAND.COM
ECHO Evita la confirmación por pantalla de los comandos del DOS
FASTOPEN Reduce el tiempo de apertura de los ficheros y directorios más utilizados
GRAFTABL Permite la edición de caracteres gráficos en una tarjeta CGA
GRAPHICS Permite la impresión de una pantalla utilizando el modo gráfico anterior
JOIN Asocia una unidad de disco con una ruta de acceso determinada
KEYB Selecciona un teclado por país determinado
MODE Configura los puertos serie (COM), paralelo (LPT), monitor y teclado
NLSFUNC Carga información específica para un país concreto
PATH Define la ruta de búsqueda de un comando, si no está en el por defecto
PROMPT Cambia el indicador de comandos
SET Define las variables de entorno para su posterior uso por los programas
SHARE Instala software para permitir compartir o bloquear ficheros
SUBST Sustituye una expresión por una ruta de acceso
TIME Visualiza y modifica la hora del sistema
ÍNDICE ALFABÉTICO
—A— Formateado, 4
Formateo
Archivo alto nivel, 4, 5
reservado, 8 bajo nivel, 4
AUTOEXEC.BAT, 3, 5, 6
—I—
—B—
Instalación, 2
BUFFER, 8 actualización, 2
nueva, 3
—C—
—M—
CONFIG.SYS, 3, 5, 6
Configuración, 2 MEM, 9
Controladores, 7 MEMMAKER, 10
Memoria
expandida, 9
—D— extendida, 9
DEBUG, 4 RAM, 9
Disco
RAM, 8 —R—
Disco duro
unidades, 5 RAMDRIVE, 8
Disco RAM, 9
—S—
—E—
SET, 5
Entorno, 2 SMARTDRV, 9
—F— —T—
FAT, 4 Tabla de particiones, 5
-16, 5
-32, 5
FDISK, 5
—V—
Ficheros BAT, 6 Variable, 2
Ficheros por lotes. Véase Ficheros BAT Variables
FORMAT, 5 de entorno, 5
ÍNDICE
ÍNDICE
1 CONCEPTOS BÁSICOS
3 PROGRAMACIÓN
4 SEGURIDAD EN MS-DOS
4.1 ATRIBUTOS DE FICHEROS Y DE DIRECTORIOS
4.2 COPIAS DE SEGURIDAD
4.2.1 Opciones de archivo de especificaciones
4.3 RESTAURACIÓN DE COPIAS DE SEGURIDAD
5 ANTIVIRUS
5.1 MEDIDAS BÁSICAS
5.2 UTILIDAD ANTIVIRUS
ÍNDICE ALFABÉTICO
1 CONCEPTOS BÁSICOS
Programa: Un conjunto de sentencias que pueden dirigirse a y tratarse por un sistema informático para
controlar la conducta de ese sistema en función de unos resultados que se esperan conseguir en
base a unos requerimientos de usuario. Puede ser procedimental, con lo que el programa especifica
el procedimiento que se debe seguir para que el sistema consiga los resultados requeridos. El
programa será no procedimental si especifica los contenidos y márgenes de los resultados a obtener
pero no aclara cómo se debe trabajar para llegar a ellos.
Seguridad: Se define por tal la prevención y protección contra acceso a o destrucción de información
ante usuarios no autorizados o inintencionadamente. Los conceptos de seguridad, privacidad e
integridad están relacionados. Para esta unidad se refiere a modificaciones y pérdidas de
información, así como a la posibilidad de perder el acceso que se tenía a ella. Así, la seguridad
como tal se refiere frente a otros usuarios y a virus informáticos.
Para situarla adecuadamente debe seguirse en todo sistema, sobre todo si son grandes, un
modelo de seguridad, que consiste en la especificación detallada de las características de seguridad
que deben proporcionarse a un sistema: organigramas de acceso, relaciones de permiso y de
prohibición, situaciones que deben reflejarse en un informe de auditoría informática, así como el
establecimiento de un sistema de vigilancia y restauración de seguridad.
Un sistema de vigilancia y restauración contendrá un conjunto de medidas, casi siempre
operativas, con el objetivo de defender un sistema frente a posibles alteraciones de la seguridad.
Debe contener el modo en que se inserta en el modelo de seguridad, así como las relaciones con
los controles físicos y la seguridad del personal. Por ejemplo, determinará la forma en que se
dispondrán las claves de acceso, los criterios para las auditorías de seguridad, acceso del personal,
etc.
Utilidad: Es el programa que forma parte de un sistema informático y proporciona una variedad de
funciones generales orientadas a cubrir necesidades del usuario. Por extensión se denomina
utilidad también a algunos módulos de aplicaciones o de programas que realizan operaciones o
facilidades concretas. Es el caso del programa antivirus de MS-DOS.
En el sistema operativo se aprecia la capacidad de manejo de tres tipos principales de ficheros: los
EXE, los COM y los BAT, aparte de otros relacionados con el sistema como las librerías -DLL-, los
ficheros de texto -TXT-, los del sistema -SYS-, y los de datos -DAT-. Los tres ficheros principales
son los denominados ejecutables por el sistema. Mientras los archivos EXE y COM corresponden con
programas o comandos, los ficheros BAT corresponden con procesos automatizados por y para el
sistema.
Un fichero BAT se denomina también fichero o proceso batch o fichero por lotes o proceso por
lotes. Se construye con el editor de textos del DOS -ya sea EDLIN o EDIT- o bien con cualquier
editor de textos que los almacene en forma sólo texto o ASCII. Las instrucciones que figuran en él se
leerán y se ejecutarán secuencialmente según su posición en el fichero. Esto proporciona la ventaja de
la ejecución automática de esas instrucciones sin intervención directa del usuario.
Por ejemplo, para el caso en que un usuario desee copiar ficheros de texto, que elabora con un
procesador en C:\WINWORD\DOC, en un directorio que se llame \PROYECTO\DOCUS situado en
la unidad D:. Para ello debería teclear
CD C:\WINWORD\DOC
COPY MEMORIA.DOC D:\PROYECTO\DOCUS
D:\PROYECTO\DOCUS
DIR
De esta manera copia el fichero deseado en el directorio de la unidad D destino y situándose luego
en él, ejecuta un DIR para comprobar que se encuentra allí efectivamente. Sin embargo, esas mismas
instrucciones pueden insertarse en un fichero por lotes -al que se le puede llamar COPIA.BAT- para
que se ejecuten a la vez al llamar al fichero y realice el procedimiento automáticamente:
REM COPIA.BAT
CD C:\WINWORD\DOC
COPY %1.DOC D:\PROYECTO\DOCUS
D:\PROYECTO\DOCUS
CLS
DIR
Para ejecutar un fichero BAT basta escribir su nombre sin la extensión. Tienen la particularidad de
que si no se escribe su nombre, como pasa con otros comandos del DOS, no se ejecutan. Por otro
lado, un fichero BAT al que se le cambia la extensión por otra -por caso, TXT- no se ejecutará al
escribir el nombre.
Para proceder a su elaboración, en primer lugar se carga un editor de textos ASCII o un procesador de
textos que tenga la opción de guardar los ficheros en formato “sólo texto”. Por ejemplo, para el caso
del editor del DOS, se procedería de la siguiente forma:
EDIT PPPP.BAT
con lo que se abrirá el editor de textos del DOS con una hoja en blanco y con el nombre del fichero de
trabajo ya determinado: PPPP.BAT. La apertura del fichero para su edición se hace en el directorio en
el que se encuentra el usuario en ese momento.
En la margen izquierda, donde se sitúa el cursor, se escriben las líneas de texto que incluyen los
comandos que se quieren ejecutar de manera automática. Normalmente, por motivos de claridad, se
suele incluir un comando u orden por línea. Asimismo es conveniente incluir comentarios que ayuden
a comprender el funcionamiento y los objetivos de ese fichero por lotes para el caso de que lo consulte
un usuario diferente. Las sentencias, como en cualquier lenguaje procedimental, se pueden clasificar
en: órdenes secuenciales, de bifurcación (IF), órdenes de bucles o repetitivas (FOR), pausas (PAUSE)
y direccionamientos (GO TO).
Además del editor del DOS se puede utilizar el editor de línea denominado EDLIN proporcionado
también dentro de MS-DOS, aunque es menos conveniente que el anterior. En el caso de que no se
quiera utilizar un editor de estas características se puede recurrir a procesadores de textos -tales como
WORD o WORDPERFECT- pero teniendo cuidado en grabar el fichero en formato “sólo texto”.
se obtiene como salida la lista de órdenes almacenadas en el buffer y se dirige a un fichero que se
llamará PPPP.BAT. Sólo queda escribir esas órdenes en la línea del prompt. Cuando estén todas las
que el usuario desea, aplicar el comando DOSKEY tal como se ha detallado y se obtiene un fichero
por lotes que contiene todas esas órdenes. Para vaciar el buffer y proceder a un nuevo llenado se
presionan conjuntamente las teclas ALT+F7.
Para ello lo único que hay que hacer escribir en la línea de órdenes del sistema el nombre del fichero
por lotes pero sin escribir la extensión. Por ejemplo, siguiendo con el ejemplo del punto anterior, sería
PPPP
Además del nombre del fichero habrá que escribir los parámetros que sean necesarios para el
funcionamiento del fichero, así como la ruta deseada de trabajo, directorios, etc. La ejecución puede
interrumpirse en cualquier momento por presión conjunta de las teclas CTRL+C. También usando la
combinación CTRL+BREAK, y si el sistema tiene activada la opción BREAK en el CONFIG.SYS
pedirá confirmación antes de proceder a la interrupción.
En general, dentro de un fichero por lotes, puede usarse cualquier comando que sea propio del MS-
DOS. Sin embargo, existe una serie de instrucciones y parámetros que son exclusivos de este tipo de
ficheros (ver Tabla 12.1).
COMANDOS Descripción
@ Evita que la ejecución de una instrucción ocasione un eco en pantalla
CALL Llama a otro fichero BAT y devuelve a la siguiente línea al terminar éste
CHOICE Permite la aceptación de opciones por parte del sistema desde un fichero BAT
ECHO Activa o desactiva la devolución de los datos por la pantalla
FOR Para repetir aplicaciones de comandos bajo ciertas condiciones
GO TO Desvía la ejecución de comandos a una determinada instrucción
IF Permite la ejecución condicional de comandos
IF ERRORLEVEL Para ejecutar un comando según cuál sea el resultado del comando anterior
IF NOT Se ejecuta un comando si no se cumple una determinada condición
IF EXIST Se ejecuta un comando si existe un determinado fichero en el disco
PAUSE Interrumpe la ejecución del fichero BAT hasta que se pulsa una tecla
REM Anula una instrucción a añade un comentario al fichero
- @: Al comienzo de una línea evita el eco de los comandos que están incluidos en ella
- CALL: Llama a un fichero BAT desde otro. Cuando el segundo fichero BAT ha terminado,
devuelve el control de la ejecución a la siguiente línea del primer fichero BAT. Su formato
es el siguiente:
donde el nombre de archivo debe serlo de un fichero BAT. Los parámetros son los que
requiera el fichero por lotes requerido.
- CHOICE: Permite hacer una selección entre varias de ellas y detiene la ejecución a la espera
de la elección. Su formato es el siguiente:
donde el primer parámetro especifica las teclas permitidas en el símbolo del sistema,
separadas por comas, y entre corchetes (si no se especifica /C, entonces tomará como tecla
por defecto la S); /N evita que aparezca el símbolo del sistema, aunque sí aparecerá el texto
elegido; /S obliga a distinguir entre mayúsculas y minúsculas; /T[:c,nn indica que cuando
pasen nn segundos sin una elección el sistema tomará por defecto la elección c, la cual debe
estar entre las elegidas al inicio del comando CHOICE
- ECHO: Se trata de un comando únicamente aplicable a ficheros BAT. Su misión es impedir
que se presente en pantalla el eco de la ejecución de los comandos que están presentes en el
fichero BAT. Su inclusión suele ser al inicio del fichero BAT para incluir a todos los
comandos de él:
@ECHO OFF
Esta línea evita que todos los comandos que están por debajo de ella se reflejen en la
pantalla mientras se ejecutan. La “arroba” al principio impide que el propio comando ECHO
se muestre en pantalla también.
- FOR: Repite un comando o una secuencia de ellos sobre un conjunto de archivos. El formato
a aplicar sería el siguiente:
o bien, para borrar todos los ficheros que tengan terminaciones OBJ y MAP se haría
o para encontrar un determinado texto en cualquiera de los ficheros de texto que existen en
el directorio raíz se haría de la siguiente manera
CLS
IF “%1” = = “ “ GOTO FIN
IF NOT EXIST %1 GOTO ERROR
COPY %1 a:\ /v
GOTO FIN
:ERROR
ECHO Fichero no encontrado
:FIN
ECHO Fin del proceso
es un fichero por lotes que limpia la pantalla, compara la cadena nombre del fichero con el
carácter nulo y si devuelve verdadero dirige la ejecución a la línea con la etiqueta :FIN,
verifica si existe el fichero y si no existe devuelve un valor verdadero y dirige la ejecución a
la instrucción que comienza con :ERROR, y si las dos condiciones anteriores no se han
cumplido entonces copia el fichero al directorio raíz de A: con verificación. ECHO muestra
en pantalla el texto que le sigue. Aquí se ha explicado también el funcionamiento de IF NOT
y IF EXIST (ver Tabla 12.1)
número el valor que se va a comparar con el código de error emitido por el comando,
resultando verdadero si es el mismo o mayor; y comando la orden del MS-DOS que se
ejecuta.
Tabla 12.2 - Códigos de errores más habituales con los comandos del MS-DOS
FORMAT A: /S
IF ERRORLEVEL 5 GOTO USUARIO
IF ERRORLEVEL 4 GOTO ERROR
IF ERRORLEVEL 3 GOTO USUARIO
ECHO Disco formateado
GOTO FIN
:USUARIO
ECHO Operación cancelada por el usuario
:ERROR
ECHO Se ha producido un error
:FIN
- PAUSE: Se trata de un comando que suspende la ejecución de un fichero BAT hasta que se
pulse una tecla cualquiera por parte del usuario, generando en pantalla un aviso: presione
cualquier tecla para continuar... Se suele usar para establecer pausas en el visionado de las
pantallas, para marcar un tiempo necesario para introducir un disquete en la unidad
correspondiente, etc. A continuación de este comando se puede introducir un comentario, e
incluso un pitido de advertencia; por ejemplo:
ECHO OFF
PAUSE ^G[Alt+7Por favor, inserte el disquete en la unidad A:
DIR A:\ /w
- REM: Ayuda a documentar los procesos BAT introduciendo comentarios, o bien anula la
instrucción que se encuentra tras él en la misma línea
Sólo queda señalar que comandos habituales de ficheros BAT, como es el caso de DATE, TIME y,
sobre todo, PROMPT, ya se han explicado en la unidad didáctica anterior y no necesitan más
comentarios. Existe una tabla de códigos de PROMPT en esa unidad con la sintaxis adecuada para
trabajar con ese comando.
Existen 10 parámetros, los que van desde %0 hasta %9. El primero de ellos representa rutas de
acceso a ficheros, comandos o programas; los otros 9 parámetros sirven para representar los propios
ficheros o comandos.
Se utiliza el doble porcentaje con una letra, es decir, %%L, para señalar una variable de texto que
se escribe en el interior de un fichero por lotes -ya que si se escribiera desde la línea de comandos del
sistema, se escribiría con un sólo porcentaje, %-. Normalmente se usa dentro de las instrucciones FOR
para señalar variables de texto, como es el caso de los nombres de ficheros. Por ejemplo:
busca todos los ficheros que comiencen con INF seguidos de una letra y la terminación TXT y los
muestra en pantalla con un filtro de modo que aparece el contenido que cabe en una pantalla cada vez.
3 PROGRAMACIÓN
Se trata de la creación de pequeños programas para cubrir rutinas o necesidades específicas del
sistema informático. Estos pequeños programas se construyen utilizando el lenguaje ensamblador.
Para la mayoría de las rutinas cortas que se necesitan bastan con seis comandos básicos de
ensamblador (los cuales se muestran y describen en la Tabla 12.3). Más tarde los programas
construidos se depuran y compilan con la utilidad DEBUG de MS-DOS produciendo ficheros con la
terminación COM.
Para proceder a la construcción de estos pequeños programas será necesario conocer las
interrupciones del DOS y de la BIOS (las cuales se muestran en la Tabla 12.4 y en la Tabla 12.5).
Estas interrupciones son las que posibilitan cierta interactividad entre el sistema y el usuario.
Comando Significado
CMP Compara dos valores, pudiendo ser estos números, los contenidos de sendos
registros, o los contenidos de distintas posiciones de memoria
INT Activa una interrupción (ver Tabla 11.4)
JMP Permite el salto a una dirección
JZ Salta a una instrucción si dos valores previos resultan idénticos
JNZ Es el caso opuesto al anterior, es decir, salta si son diferentes
MOV Transfiere un byte a una dirección de memoria
Código Significado
INT 20H Termina un programa, libera la memoria ocupada y devuelve el control al DOS
INT 21H 0 Termina un programa y devuelve el control al DOS. Como INT 20H
Debiendo colocar 2 Salida a la pantalla
en el registro AH el 3/4 Entrada/Salida por el puerto serie
número de la 5 Salida a la impresora
función, siendo las 6 E/S directa a pantalla
más importantes: 7 Entrada directa de carácter sin eco
1/8 Entrada de carácter con/sin eco
9 Visualización de una cadena de caracteres
10 Entrada desde el teclado
12 Borra registro de entrada y procede a una entrada de datos
13 Resetear la unidad de disco
15/16 Abrir/Cerrar fichero
17 Búsqueda del primer fichero
18 Búsqueda del próximo fichero
19/22 Borrar/Crear fichero
20/21 Leer/Escribir en un fichero de acceso secuencial
23 Renombrar un fichero
33/34 Leer/Escribir en un fichero de acceso aleatorio
35 Cálculo del tamaño de un fichero
42/43 Obtener/Fijar la fecha
44/45 Obtener/Fijar la hora
INT 22H Dirección de terminación a la que se manda el control al acabar el programa
INT 23H Es la dirección de la rutina que se ejecuta cuando se pulsa CTRL+BREAK
INT 24H Es la dirección de la rutina que se ejecuta cuando se presentan errores críticos
INT 25H Lectura directa de sectores de disco
INT 26H Escritura directa de sectores de disco
INT 27H Termina un programa y devuelve el control al DOS pero sin sacarlo de memoria.
Es la que usan los programas residentes y los virus informáticos
Con la utilidad DEBUG del MS-DOS se pueden ver los vectores de interrupción. Al salir el
prompt del DEBUG se debe teclear D 0:0 y aparecerán los primeros 128 octetos que se corresponden
con los 32 primeros vectores. Cada vector está representado por 4 octetos: los dos primeros para el
offset, y los dos siguientes indican el segmento. Para salir del prompt de DEBUG basta introducir Q.
Por otra parte, las interrupciones hardware pueden ser de dos tipos: interrupciones internas e
interrupciones externas. Las primeras, también llamadas interrupciones lógicas, son llamadas por el
microprocesador cuando se produce alguna operación incorrecta, como es el caso cuando se produce
una operación que intenta dividir por 0.
Las interrupciones hardware externas son llamadas por los distintos dispositivos periféricos del
sistema. Cada dispositivo tiene acceso a una línea de petición de interrupción diferente (ver Tabla
11.6). Estas líneas se llaman IRQ -del inglés Interrupt Request Line-. Los ordenadores superiores a los
286 tienen 16 IRQ, desde la IRQ0 a la IRQ15. Los dispositivos activan su línea correspondiente
cuando requieren atención por parte del microprocesador.
Antes de comenzar con la programación conviene recordar cómo obtener la ayuda de DEBUG.
Para ello se escribe en el prompt del MS-DOS DEBUG. Aparecerá el prompt de esta utilidad, -.
Detrás se escribe el signo ? y ENTER. Aparecerá un listado de órdenes de DEBUG y una nota sobre
su significado. Para salir de la ayuda se escribe en el prompt Q y ENTER, volviendo al prompt del
MS-DOS.
Como ejemplo de programa en MS-DOS se va a construir una rutina llamada PITIDO.COM que
va a emitir un pitido al escribir su nombre. El pitido se produce cuando el sistema intenta sacar por
pantalla el carácter ASCII 7. Se escribe DEBUG y al aparecer el prompt se escribe a continuación A
100. Esto quiere decir que se van a introducir mandatos en ensamblador a partir de la dirección de
memoria 100, cuyo offset es 0100. Siendo xxxx cualquier cifra dependiendo del desplazamiento con
el que esté trabajando el programa. MOV AH, 2 significa que se traslada el valor 2 en el registro AH,
el cual se corresponde con un valor de la interrupción 21 que se llama más adelante. MOV DL, 7,
cuando se active la interrupción 21, mostrará en pantalla el contenido del registro DL. Al acabar, para
devolver el control al MS-DOS se ejecuta la función 4C (76 en decimal) de la interrupción 21, lo que
se hace colocando el valor 4C en el registro AH y activando la interrupción 21:
A 100
xxxx:0100 MOV AH, 2
xxxx:0102 MOV DL, 7
xxxx:0104 INT 21
xxxx:0106 MOV AH, 4C
xxxx:0108 INT 21
xxxx:010A
Después hay que fijar la longitud del fichero, con lo que se llama a la función CX. Enseguida
aparecerá la raíz CX con cuatro ceros (0000), y dos puntos en la línea siguiente. Es tras esos dos
puntos donde teclearemos el valor hexadecimal A (10 en decimal). Tras esto hay que indicarle a
DEBUG que escriba el fichero en el disco, para lo que se utiliza la función W, que escribe y devuelve
el prompt de DEBUG. Para salir de DEBUG se teclea Q y ENTER:
-R CX
-CX 0000
:A
-W
Escribiendo A bytes
-Q
Tras todo esto, sólo queda teclear en el prompt del directorio por defecto de MS-DOS el comando
PITIDO, con lo que se escuchará un sonido.
U.D. 12 - MSDOS, programación, utilidades, seguridad, pág. 136 de 20
1º Ciclos - Sistemas Operativos Monousuario y Multiusuario
Juan P. Benito
Otra rutina, para guardar el valor de una tecla pulsada, sería la siguiente -TECLA.COM-:
Para este caso, el valor 8 de la interrupción 21 espera la introducción de un carácter por el teclado,
guardando el valor ASCII de la tecla pulsada en el registro AL. En este registro es en el que va a leer
la función ERRORLEVEL de MS-DOS, con lo que se pueden crear opciones en un fichero BAT para
que el usuario elija. Sería así:
@ECHO OFF
:BUCLE
CLS
ECHO Elija opción
ECHO Opción 1
ECHO Opción 2
ECHO Opción 3
TECLA
IF ERRORLEVEL 52 GOTO BUCLE
IF ERRORLEVEL 51 GOTO OP-3
IF ERRORLEVEL 50 GOTO OP-2
IF ERRORLEVEL 49 GOTO OP-1
GOTO BUCLE
:OP-3
ECHO Aquí va la opción 3
GOTO FIN
:OP-2
ECHO Aquí va la opción 2
GOTO FIN
:OP-1
ECHO Aquí va la opción 1
GOTO FIN
:FIN
La rutina TECLA.COM puede variarse para que acepte determinado código de teclas, por ejemplo,
las teclas S o N:
- A 100
xxxx:0100 MOV AH, 8
xxxx:0102 INT 21
xxxx:0104 CMP AL, 53
xxxx:0106 JZ 0116
xxxx:0108 CMP AL, 73
xxxx:010A JZ 0116
xxxx:010C CMP AL, 4E
xxxx:010E JZ 011A
xxxx:0110 CMP AL, 6E
xxxx:0112 JZ 011A
xxxx:0114 JMP 0100
xxxx:0116 MOV AH, 01
xxxx:0118 JMP 011C
xxxx:011A MOV AL, 00
xxxx:011C MOV AH, 4C
xxxx:011E INT 21
xxxx:0120
-N C:\TECLA.COM
R CX
CX 0000
: 20
-W
Escribiendo 0020 bytes
-Q
Los números 53, 73, 4E y 6E son los códigos ASCII (en hexadecimal) de las teclas S, s, N, n,
respectivamente. El programa espera la pulsión de una tecla y compara el valor introducido con
alguno de los anteriores y, en caso de que coincida alguno, devuelve un 1 como ERRORLEVEL -si se
pulsó S o s-, o devuelve un 0 -y se pulsó N o n-. Si no es así, vuelve a empezar de nuevo esperando la
pulsión de una tecla.
4 SEGURIDAD EN MS-DOS
Cuando se crea un fichero DOS MS-DOS le asigna una fecha, una hora -de creación- y un atributo.
Este atributo es el que marca el estado del fichero en términos de seguridad. Cada fichero puede tener
4 atributos y cualquiera de ellos puede estar activado o no. Los atributos son:
Esta medida de seguridad permite hacer desaparecer ficheros ante otros usuarios, aunque
sí mostrará su contenido ante una orden TYPE, o bien se ejecutará si se escribe su nombre y
es ejecutable.
- Atributo de sistema, S: Identifica los ficheros del sistema -del inglés system-, como es el caso
de IO.SYS y MS-DOS.SYS, requeridos por el DOS en el momento del arranque. Cuando
tienen este atributo activado poseen las mismas características que los anteriores, aunque no
se pueden ejecutar aunque se escriba su nombre y sean ejecutables.
- Atributo de sólo lectura, R: Impide que la información de un fichero sea modificable por un
usuario, permitiendo MS-DOS el acceso para leer -del inglés Read only- pero no para
modificar o borrar. Además estos ficheros no se pueden borrar.
- Atributo de archivo, A: Asegura la información pues permite saber cuándo ha sido modificado
el archivo. Siempre que se crea un archivo se le asocia este parámetro con lo que si se deja
desactivado y, más tarde, vuelve a aparecer activado, es que algún otro usuario lo ha
modificado.
Para poder examinar los atributos de un fichero se usa el comando ATTRIB, según:
donde si se escribe este comando sin parámetros se visualizan los archivos y sus parámetros si están
en el directorio activo; nombre-fichero indica de cuál de los ficheros quiero saber información; y los
símbolos son los caracteres que representan cada a los atributos de los ficheros. Si los símbolos van
precedidos del signo - es que se van a desactivar, y si les precede el signo + es que se van a activar.
Si se desean conocer los atributos de los ficheros que están en el directorio activo y en los
subdirectorios de nivel inferior, deberá ejecutarse la orden ATTRIB con el parámetro /s.
Para modificar los atributos se usa la orden ATTRIB con los modificadores correspondientes. Por
ejemplo, al hacer el comando ATTRIB del directorio por defecto se obtiene:
SHR C:\IO.SYS
SHR C:\MS-DOS.SYS
A R C:\COMMAND.COM
ASHR C:\DRVSPAE.BIN
ASHR C:\DBLSPACE.BIN
ASH C:\386SPART.PAR
A C:\CONFIG.SYS
A C:\AUTOEXEC.BAT
Desde aquí, para modificar los atributos de DRVSPACE.BIN asociándole sólo lectura, sería
ATTRIB DRVSPACE.BIN -s -h
ATTRIB *.BIN -s
Para trata el tema de las copias de seguridad MS-DOS dispone de una utilidad que se llama
MSBACKUP. Esta utilidad permite generar una copia de seguridad de todos los ficheros que se
encuentran en el disco duro, o de una parte de ellos. El formato de esta orden sería como sigue:
MSBACKUP [archivo-de-especificaciones
donde [archivo-de-especificaciones indica el fichero donde se señalan las condiciones que deben
cumplir los archivos de los que se va a hacer copia de seguridad.
Por ejemplo, el motivo más frecuente para generar copias de seguridad es salvaguardar la
información para el caso de pérdidas masivas de ella en el disco duro debido a diferentes motivos,
como fallos del disco, borrados accidentales, formateos indebidos, virus informático, etc. Para
solventarlo se suelen hacer copias de seguridad periódicas -en la mayoría de las empresas medianas y
grandes se suelen hacer cada semana, por ejemplo, los viernes- y, para evitar errores, se suelen copiar
los archivos que han sido modificados desde la última copia de seguridad.
Este archivo tiene extensión SET. Si no existe ninguno MSBACKUP utiliza el archivo por defecto
DEFAULT.SET. Las opciones que se permite utilizar en el archivo de especificaciones son: unidades
de las que se va a hacer copia, medio en el que se hará -disquetes, cinta,...-, archivos de los que se
hará la copia, tipo de copia de seguridad a hacer, y opciones del cuadro de diálogo “opciones”. Se
pueden crear hasta 50 archivos de especificaciones. Las opciones serán:
- Opciones de copiar
-- Verificar datos (leer y comparar): En Windows es la opción “Verificar copias”. Esta
opción compara los datos copiados con los originales, aumentando la fiabilidad del
proceso pero incrementando el tiempo del mismo
-- Comprimir datos: Que en Windows es “Comprimir copias”. Es un proceso simultáneo
de compresión para reducir el espacio necesario para la copia
-- Proteger grupos de copias con contraseña: Que en Windows es “Protección con
contraseña”. Solicitará una palabra clave para acceder a copiar, comparar o restaurar
-- Aviso de sobreescritura de disquetes ocupados: “Que en Windows es “Confirmación
antes de sobreescribr disquetes usados”
-- Dar formato a los disquetes siempre: Igual en Windows. Si está activada esta opción
formateará siempre. Si no, sólo lo hará si los disquetes están en mal estado o tienen
errores
-- Usar corrección de errores en disquetes: Que en Windows es “Usar corrección de
errores”. El programa introduce una serie de códigos de errores, o ECC, que permitan
la recuperación de la información ante deterioro de los disquetes. Con esta opción se
ocupa un 10 % más de espacio de disco
-- Conservar catálogos antiguos: Que en Windows es “Guardar catálogos antiguos”.
Catálogos que se generan cada vez que se hace una copia de seguridad utilizando un
Se trata de restaurar los ficheros y directorios de seguridad en el disco duro del sistema. Para ello se
usará la orden RESTORE. Su sintaxis es como se muestra:
donde unidad-1 señala al disco o dispositivo que contiene la copia de seguridad; unidad-2:[archivos
señala el dispositivo donde se van a restaurar los archivos que se especifican. Conviene destacar que
la restauración de archivos implica la reescritura de los archivos que existen en el disco duro.
RESTORE A: C:\DOS\*.EXE
Hay que tener en cuenta que la restauración de un archivo hay que realizarlo en el mismo
directorio del que procedía y, si hay varios disquetes implicados, comenzar siempre por el disquete de
copia número 1 -a no ser que se hayan apuntado en las etiquetas el nombre de los archivos a restaurar
si no se quiere hacer todo el proceso global-. Sólo queda destacar que los archivos ocultos del sistema,
es decir MSDOS.SYS e IO.SYS no se pueden restaurar.
5 ANTIVIRUS
Se puede definir un virus informático como un segmento de código, es decir, un trozo de programa,
que se intercala dentro de otros programas y puede llegara tomar el control efectivo del sistema
operativo. Tienen la capacidad de replicarse e insertarse dentro de otros programas.
La forma en que los virus entran dentro de un sistema informático es por medio de los disquetes
mediante los cuales introducimos información o programas en el equipo, y mediante las
comunicaciones, ya sea vía módem o ya por conexión a Internet.
Los efectos de los virus son diversos. Pueden destruir archivos ejecutables, archivos de texto, la
raíz, la tabla de localización de archivos -FAT-, ralentizan las operaciones, aparecen textos en pantalla
paralizándose la actividad del equipo mientras tanto, aparecen gráficos móviles o manchas en pantalla,
formatean el disco duro, infectan las macros de los programas como las bases de datos y las hojas de
cálculo afectando a toda la aplicación,...
Los que afectan al BOOT o sector 0 del disco duro sustituyen el programa de arranque del DOS
sito en este sector por uno de carga del propio virus. Posteriormente el programa del virus y el de
arranque del DOS original se localizan en sectores marcados como defectuosos en la FAT para que no
puedan ser detectados fácilmente por el usuario.
Los virus que contaminan los ficheros COM -como es el caso del COMMAND.COM-, insertan el
programa del virus al principio o al final de estos ficheros, y sustituyen los primeros 3 bytes del
mismo por la llamada al código del virus. Otras veces, cuando el virus es de cierto tamaño, se oculta
en el interior del código de un fichero oculto y utiliza un fichero COM para hacer una llamada a éste.
Por último, los virus que contaminan los ficheros EXE son los más difíciles de crear y los más
difíciles de eliminar. El virus se instala al final del fichero y realiza los cambios en la cabecera de
manera que la primera instrucción a ejecutar sea una llamada a la carga del propio virus.
Hay una serie de medidas preventivas antes de estudiar las medidas curativas. Estas son:
Los programas antivirus son utilidades, casi siempre en modo gráfico, que permiten la detección de
los virus en un sistema informático, su eliminación, y, en muchos casos, la protección del equipo.
Estos programas suelen tener cuatro tipos de funciones, incorporando una o varias de ellas: detección
-encuentra los virus, los localiza y alerta al usuario sobre ello para que tome medidas-, reparación
-eliminan los virus encontrados dejando los ficheros infectados en su estado original-, protección
-función residente en memoria que paraliza un procedimiento si detecta la entrada de un posible virus
en el sistema y da un mensaje de alarma-, y vacunación -añadiendo un código a los ficheros
ejecutables para que cuando éste se cargue realice una autocomprobación-.
MS-DOS incorpora, a partir de la versión 6.20, un programa antivirus denominado MSAV. Esta
utilidad tiene dos programas fundamentales: SCAN y CLEAN. El programa SCAN analiza el sistema
para detectar virus residentes, o si están presentes en algún programa. CLEAN elimina los virus
encontrados con SAN y proporciona información sobre él.
MSAV [unidad:
donde unidad: es la unidad que MSAV va a analizar. Si no se indica, MSAV buscará los virus en la
unidad actual. Los parámetros que acepta son:
MSAV trabaja en modo pantalla gráfica y permite, entre otras funciones, analizar la unidad
especificada y muestra una estadística sobre ficheros analizados, virus detectados y eliminados; limpia
los ficheros infectados por los virus; y permite algunas opciones como verificar la integridad, crear
nuevos totales de verificación, crear un informe, etc.
Índice alfabético
—#— —G—
@, 5 GO TO, 4
GOTO, 6
—%—
—I—
%, 8
IF, 4, 6
ERRORLEVEL, 7, 12
—A— EXIST, 6
Antivirus NOT, 6
modo residente. Véase Interrupciones
tarjetas, 18 de la BIOS, 9
utilidad, 18 de MS-DOS, 10
ATTRIB, 14 hardware, 10
AUTOEXEC.BAT, 3 IRQ. Véase Interrupciones
hardware
—B—
—M—
BACKUP, 18
BOOT, 17 MSAV, 19
informe, 19
parámetros, 19
—C— MSBACKUP, 15, 17
MSBAKUP, 16
CALL, 5
CHOICE, 5
Código ASCII, 13 —P—
COMMAND.COM, 17
CONFIG.SYS, 3 PAUSE, 4, 8
Copia de seguridad Proceso
catálogos, 16 batch, 2
Copias de seguridad, 15, 18 Programa, 2
COPY, 13 no procedimental, 2
procedimental, 2
PROMPT, 8
—D—
DATE, 8 —R—
DEBUG, 9, 10, 11
DEL, 13 REM, 8
DIR, 13 RESTORE, 16
DOSKEY, 4
—S—
—E— Seguridad, 2
ECHO, 5 modelo de, 2
EDIT, 4 Seguridad.
Editor sistema de vigilancia y
del DOS, 3. Véase EDIT restauración, 2
EDLIN, 4
Ensamblador, 9 —T—
TIME, 8
—F— TYPE, 14
FAT, 17
Fichero —U—
atributos, 13
por lotes. Véase Fichero BAT Utilidad, 2
Fichero BAT, 3
ejecución, 4 —V—
Fichero DOS, 13
FOR, 4, 6 Virus informático, 17