Juan Carlos Pérez González
UD1. Instalación do software base dun sistema informático.
• Estrutura dun sistema informático.
• Dixitalización da información.
• Concepto de sistema operativo.
• Arquitectura dun sistema operativo.
• Funcións dun sistema operativo.
• Tipos de sistemas operativos.
• Licenzas e tipos de licenzas.
• Consideracións previas á instalación de sistemas operativos libres e propietarios.
• Instalación de sistemas operativos: requisitos, versións e licenzas.
• Instalacións desatendidas.
• Implementación de ficheiros de respostas.
• Interpretación, análise e elaboración de manuais de instalación de sistemas
operativos.
• Actualización de sistemas operativos.
• Ficheiros de inicio de sistemas operativos.
• Rexistro do sistema.
• Actualización e mantemento de controladores de dispositivos.
1. Estructura de un Sistema Informático.
Un sistema informático es un conjunto de elementos (software, hardware y ser humano)
interconectados para el tratamiento de información. El más básico es un ordenador típico. Los
más complejos son las redes, sistemas de procesamiento en paralelo,...
1
Juan Carlos Pérez González
Los elementos que lo forman:
– “hardware” o elementos físicos de carácter electrónico,
– “software” conjunto de programas que permiten al ordenador o computador es una
máquina útil. A su vez los podemos dividir en dos tipos:
• programas de sistema, es el sistema operativo que facilita al resto del software y al
usuario interactuar con la máquina accediendo a sus recursos...
• programas de aplicación, que realizan una acción concreta, p.e., gestión de clientes,
compresión de datos…
Entre el hardware y el software está un software especial, el firmware, generalmente grabado en
memoria no-volátil (ROM, EPROM...) y que establece la lógica de más bajo nivel (lenguaje
maquina o ensamblador) que permite controlar los dispositivos eléctrónicos del computador.
2. Representación digital de la información
Para representar la información utilizamos los sistemas de codificación. En el caso de los
ordenadores esta codificación es binaria (1 y 0), codificación que es la base de lenguaje
utilizado por los computadores. Cualquier información que deseemos representar en un
computador ser en una secuencia de ceros y unos. Ello es así ya que se fundamenta en el
aspecto biestable o conmutador de los componentes electrónicos (5 V o pasa corriente 0 V o no
pasa corriente)
Los datos, materia prima de la información, se clasifican en numéricos y alfabéticos.
• Códigos numéricos
Para facilitar su estudio estableceremos los siguientes conceptos:
Base: número de símbolos que se utilizan para la representación.
Rango de representación: dado el número N de cifras, el rango indica las cantidades
representables en el mismo.
Sistema posicional: el valor de los símbolos varía en función de la posición que ocupen.
Por ejemplo, el sistema decimal, que por obvio no lo analizaremos el número 6308 sería:
6·103 + 3·102+ 0·101 + 8·100 = 6308
Teorema fundamental de la numeración: Este teorema establece la forma general de construir
números en un sistema de numeración posicional.
2
Juan Carlos Pérez González
, número válido en el sistema de numeración.
, base del sistema de numeración. Número de símbolos permitidos en el sistema.
, un símbolo cualquiera de los permitidos en el sistema de numeración.
,: número de dígitos de la parte entera.
, coma fraccionaria. Símbolo utilizado para separar los decimales
,: número de dígitos de la parte decimal.
La fórmula general para construir un número N, con un número finito de decimales, en un sistema
de numeración posicional de base b es la siguiente:
Binario b=2 Decimal b=10 Octal b=8 Hexadecimal b=16
Los sistemas de numeración más utilizados son:
Decimal Octal Binario Hexadecimal
La siguiente tabla establece su equivalencia:
Decimal Binario Octal Hexadecimal
0 0 0 0 0 0 0
1 0 0 0 1 1 1
2 0 0 1 0 2 2
3 0 0 1 1 3 3
4 0 1 0 0 4 4
5 0 1 0 1 5 5
6 0 1 1 0 6 6
7 0 1 1 1 7 7
8 1 0 0 0 1 0 8
9 1 0 0 1 1 1 9
10 1 0 1 0 1 2 A
11 1 0 1 1 1 3 B
12 1 1 0 0 1 4 C
13 1 1 0 1 1 5 D
14 1 1 1 0 1 6 E
15 1 1 1 1 1 7 FTabla 1
3
Juan Carlos Pérez González
El SISTEMA BINARIO utiliza dos dígitos 1 y 0 denominados bit (binary bit).
a. Conversión de decimal en binario y binario a decimal. Hay varias formas, pero todas se
basan en la descomposición de potencias de dos del número decimal en cuestión. Consideremos
el número 54, su conversión en binario sería:
es decir, 54(10 = 110110(2
Otra forma sería establecer la tabla de potencias de 2:
128 64 32 16 8 4 2 1
0 0 1 1 0 1 1 0Tabla 2
Sumando las potencias en base 2 cuyo segunda fila corresponda con el valor 1 resulta 54.
Caso Práctico. Realiza la conversión binaria de los siguientes números decimales:
– 247
– 3129
Caso Práctico. Realiza la conversión de binario en decimal de los siguientes números:
– 1101100111
– 10110001
b. Conversión de una fracción decimal a binario. Para entenderlo mejor realizaremos un
ejemplo de conversión en binario del número 12,125 con tres bits de aproximación.
1. Parte entera: como el caso anterior. Según la tabla resulta 8 + 4, es decir, 1100(2
2. Parte fraccionaria: Multiplicamos la parte decimal por 2
◦ 0,125 · 2 = 0,250 si es inferior a 1 el binario que le corresponde es 0.
◦ 0,250 · 2 = 0,500 según lo anterior el binario también es 0
◦ 0,500 · 2 = 1 como es igual o superior a 1 entonces el binario sería 1.
3. Resultado 12,125(10 = 1100,001(2
4
Juan Carlos Pérez González
Caso Práctico. A continuación realiza la conversión binaria de los siguientes números:
– 247,136
– 31,29
Si observamos detenidamente los casos prácticos vemos que utilizando el sistema binario algunos
números decimales nunca los podremos obtener con exactitud.
c. Conversión de un número binario en decimal. Se aplica el Teorema Fundamental de la
Numeración. Por ejemplo,
11,011 = 1·21+ 1·20 + 0·2-1 + 1·2-2 + 1·2-3 = 2 + 1 + 0 + 0,25 + 0,125 = 3,375
Caso Práctico. Realizar las conversiones a decimal de los números binarios siguientes:
– 11010,110101
– 10011,1001
d. Aritmética binaria. Las cuatro operaciones básicas de matemática en binario son
1. Suma
0 + 0 = 0
0 + 1 = 1
1 + 0 = 1
1 + 1 = 0 con acarreo posterior de 1
Veamos el siguiente ejemplo:
Caso Práctico. Convierte en binario y suma posteriormente los números 56 y 120.
2. Diferencia
0 - 0 = 0
1 – 0 = 1
1 – 1 = 0
0 – 1 = 1 con acarreo o préstamo anterior de 1
5
Juan Carlos Pérez González
Veamos el ejemplo siguiente: 2 2
Si nos fijamos el 1 del minuendo (rojo) se pone a 0 y pasa a ser 2 en el término anterior.
Caso Práctico. Convierte en binario los números decimales 87 y 25 y realiza la resta.
3. Producto
0 x 0 = 0
0 x 1 = 0
1 x 0 = 0
1 x 1 = 1
La operación es bastante sencilla, ver el ejemplo
Caso Práctico. Realiza la siguiente operacion previa conversión a binario 56 x 112,
4. División binaria
0 / 1 = 0
1 / 1 = 0
6
Juan Carlos Pérez González
Caso Práctico. Previa conversión a binario realiza la división 5 / 25 con 4 bits decimales.
El SISTEMA OCTAL utiliza 8 símbolos cuya equivalencia en binario es la siguiente.
Octal 0 1 2 3 4 5 6 7
Binario 0 0 0 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 1 1 0 1 1 1Tabla 3
a. Cambio de decimal a octal. Hay dos formas.
• Igual que en binario realizamos las correspondientes divisiones pero en este caso el divisor
es 8. Con respecto a los decimales se tiene en cuenta la tabla siguiente:
8-1 8-2 8-3 8-4
0,125 0,015625 0,001953125 0,00048828125Tabla 4
Otra sería, más sencilla, primero a binario y luego agrupar las cifras de tres en tres.
a. 323 en binario es 101000011
b. 0,625 en binario
0,625 x 2 = 1,25 → 1
0,25 x 2 = 0,5 → 0
0,5 x 2 = 1 → 1
El número binario resultaría 101 000 011 101 agrupados de tres en tres.
El número octal resultaría 5 0 3 , 5
Caso Práctico. Realiza las siguientes operaciones:
– Convertir los números decimales 236,12 y 362,125 a octal.
– Realiza las operaciones suma y resta en octal.
El cambio de octal a decimal se realiza aplicando el Teorema Fundamental de la Numeración.
7
Juan Carlos Pérez González
Así por ejemplo para pasar el número en octal 7236 podemos:
• 7·83 + 2·82 + 3·81 + 6·80 = 3742
• Pasar a binario y luego a decimal:
111 010 011 110 = 3742
Caso Práctico. Convierte en decimal y binario el siguiente número octal: 743
El SISTEMA HEXADECIMAL o sistema en base 16 utiliza 16 símbolos para representar
cantidades del 0...F.
Hexadecimal 0 1 2 3 4 5 6 7 8 9 A B C D E F
Binario 0 0
0 0
0 0
0 1
0 0
1 0
0 0
1 1
0 1
0 0
0 1
0 1
0 1
1 0
0 1
1 1
1 0
0 0
1 0
0 1
1 0
1 0
1 0
1 1
1 1
0 0
1 1
0 1
1 1
1 0
1 1
1 1 Tabla 5. Conversión de Binario en Hexadecimal
a. Cambio de decimal a hexadecimal. Hay dos formas.
1. Tal como hicimos en binario realizamos las correspondientes divisiones pero en este caso
el divisor es 16.
2. Otra sería pasar primero a binario y luego agrupar las cifras de cuatro en cuatro.
a. 250 en binario es 11111010
b. 0,25 en binario
0,25 x 2 = 0,5 → 0
0,5 x 2 = 1 → 1
0 x 2 = 0 → 0
0 x 2 = 0 → 0
El número binario resultaría 1111 1010 0100 agrupados de cuatro en cuatro.
El número hexadecimal resultaría F A , 4
8
Juan Carlos Pérez González
Caso Práctico. Realiza las siguientes operaciones
– Convertir los números decimales 236,12 y 362,125 a hexadecimal, el primero por la
forma 1 y el segundo por la forma 2.
– Realiza las operaciones suma y resta en hexadecimal.
b. El cambio de hexadecimal a decimal simplemente aplicando el Teorema Fundamental de la
Numeración. Así para pasar el número hexadecimal A2D podemos:
1. 10·162 + 2·161 + D·160 = 2605
2. Pasar a binario y luego a decimal:
1010 0010 1101= 2605
Caso Práctico. Convierte en decimal, octal y binario el siguiente número A3B03
• Representación de números negativos.
Hay cuatro formas básicas de representar los números negativos en binario.
1. Módulo y signo.
Es el más simple. Sus características son:
a. Utiliza el primer bit para indicar el signo: 0 para positivos 1 para negativos.
0100 sería el 4 decimal
1100 sería el -4 decimal
Caso Práctico. Representar el 53 y -53 en binario.
b. Al usar un bit para el signo el rango de representación disminuye en 1 es decir - 2n-1
hasta 2n-1
c. El cero tienen dos representaciones: 100...00 y 00...00 y ello da complicaciones.
d. Esta forma tiene el problema de la suma de que necesitamos comparar el valor absoluto
de cada número para determinar el signo final de la operación.
Otra consideración importante es la extensión del signo. Esta operación es necesaria cuanto
tenemos dos números de m y n bits siendo m>n, y consiste en añadir 0 para que ambos
números tengan el mismo número de bits.
Supongamos que tenemos el número 12 en 8 bits: 00001100 y el número -11 en número binario
de 6 bits 101011. Para operar con ambos números necesitamos añadir dos ceros al segundo
quedando 10001011.
9
Juan Carlos Pérez González
2. Complemento a 1.
a. Igual que el anterior utiliza el bit más a la izquierda para el bit de signo.
b. El número positivo se representa de la misma forma que módulo y signo pero el negativo
se realiza complementando todos sus dígitos, es decir, cambiando unos por cero y
viceversa.
c. El rango de representación, debido al bit de signo, es de - 2n-1 hasta 2n-1
d. El número 0 admite dos posibilidades 0000...0000 y 1111....1111
e. Las sumas y restas resultan sencillas pero si al final hay un acarreo debe sumarse al
final un 1 al resultado.
f. La extensión del signo se limita a repetir el bit de la izquierda. Si es positivo con ceros,
si es negativo con unos.
Caso Práctico. Realiza las siguientes sumas utilizando C-1 (utiliza 9 bits).
– -53 y -23
– -53 y 23
3. Complemento a 2.
a. Igual que el anterior utiliza el bit más a la izquierda para representar el bit de signo.
b. El número positivo se representa de la misma forma que módulo y signo pero el negativo
se realiza complementando todos sus dígitos, es decir, cambiando unos por ceros y viceversa
y al final se le suma 1.
c. El rango de representación es igual al anterior - 2n-1 hasta 2n-1-1
d. El número 0 admite una única representación 0000...0000.
e. Las sumas y restas resultan sencillas despreciando en este caso el acarreo.
f. La extensión del signo se limita a repetir el bit de la izquierda. Si es positivo con ceros,
si es negativo con unos.
Caso Práctico. Realiza las siguientes sumas utilizando C-2 (utiliza 9 bits).
– -53 y -23
– -53 y 23
4. Exceso a M
a. En este sistema los números se incrementan en un valor de M (utilizaremos el más
común 128). Ver los siguientes ejemplos:
10
Juan Carlos Pérez González
-128 se representa como 0 → 0000000
-23 se representa como 105 → 01101001
0 se representa como 128 → 10000000
127 se representa como 255 → 11111111
En la mayoría de los casos se utiliza como M = 2n-1 siendo n es el número de bits empleados
para la representación.
b. El rango de representación es igual al anterior - 2n-1 hasta 2n-1
c. El 0 tiene una única representación 1000...0000
Este sistema es el que se utiliza para la representación de números en coma flotante de la sección
siguiente y última en la representación de los números.
Representación de números reales.
Estableceremos las dos posibilidades: coma fija y coma flotante.
a. Coma fija.
Establece un número fijo de decimales. Por ejemplo en el caso de 16 bits, hay 7 bits para los
decimales, 8 para representar la parte entera entera y 1 para el signo.
Para representar el número 19,32 y -19,32 sería:
– 19,32(10 = 0 00010011,0101000(2
– -19,32(10 = 1 00010011,0101000(2
b. Representación en coma flotante
Para aumentar el rango de valores sin aumentar el número de bits se suele utilizar la codificación
basada en notación científica:
m·2 e
Este sistema recibe el nombre de coma flotante (recordar la tasa de rendimiento o capacidad de
procesamiento MFLOPS). Se dice flotante porque la coma en el código es variable en
función del valor del exponente a diferencia del anterior que era fija.
El sistema de representación en coma flotante tiene dos campos:
– mantisa o m
– exponente o e
A su vez el bit más significativo (más a la izquierda) de la mantisa contiene el signo. La
mantisa se codifica en coma fija (entera o fraccionaria) y el exponente siempre entera. Existen tres
formatos en coma flotante:
Directo signo mantisa exponente
11
Juan Carlos Pérez González
Comparación rápida signo exponente mantisa
Precisión ampliada signo exponente signo mantisa
Expondremos cada caso con tres ejemplos.
• Directo. Supongamos el código de 16 bits, con mantisa de 10 y exponente de 5. Ambos
los representaremos en complemento a 2. Por ejemplo,
0 0101100000 01011 = 0,01011 · 21011 = 0,34375 · 211 = 704(10
1 1010100000 01011 = - 0,34375 · 211 = 704(10 (recuerda mantisa está en C-2)
La representación en coma flotante exige cierto cuidado en su manejo porque un valor puede
tener más de una representación válida. Para evitar esto lo que se hace es normalizar la
representación, es decir, que el primer bit significativo de la mantisa ocupe la posición
inmediatamente a continuación del signo. Así el primer ejemplo resuelto 704, habría que restar
una unidad al exponente (unidad no un bit), es decir de exponente 11 (once) a exponente (10)
s m e
0 1011000000 001010
• Comparación rápìda. Permite realizar comparaciones tal como indica su nombre, rápidas.
Siempre será mayor un número positivo que uno negativo (signo de la mantisa). Si
son del mismo signo será mayor aquel que tengo mayor exponente, y finalmente
compararíamos la mantisa.
• Precisión ampliada. En este caso deberemos trabajar con codificaciones
normalizadas. Ello implica que el pimer bit de la mantisa es siempre el complemento
del signo. Así, no será necesario incluirlo en la codificación pudiendo así ampliarse la
precisión al ampliar o disponer del bit adicional de la mantisa. Se le denomina bit
implícito.
Ejemplo. Representemos en coma flotante los números 704 y -704 con 16 bits, con 5 para el
exponente, 10 bits mantisa, 1 bit de signo y precisión ampliada.
704 → 0 010110000 01011 → normalizamos → 0 10110000 01010
El número negativo se puede obtener de varias maneras. Para no complicar el tema haremos solo
una, la más sencilla, el C-2 del número positivo.
1 01010000 01010
Para ir finalizando dos consideraciones.
12
Juan Carlos Pérez González
La precisión, puede ser:
– simple precisión: la palabra es de 32 bits = 1 bit signo + 8 bits exponente + 23 bits
mantisa
– doble precisión: la palabra es de 64 bits = 1 bit signo + 11 bits exponente + 52 bits
mantisa.
Para fijar las ideas se describirá el sistema IEEE 7541 que es el estándar de artimética en coma
flotante y utiliza ambas precisiones.
– emplea mantisa fraccionaria
– la mantisa se representa en el sistema de módulo y signo
– utiliza el formato de precisión ampliada, valiendo siempre 1 el bit implícito
– la coma se sitúan a la derecha del bit implícito, siendo este la parte entera de la mantisa
– el exponente se representa en exceso a 2n-1 -1. Siendo n los de bits del exponente.
Signo 1 bit Exponente 8 o 11 bits Mantisa 23 o 52 bits
Una forma sencilla, aunque no muy elegante, de calcular un número en IEEE 754 es seguir los
siguientes pasos:
1. Si es + un 0 como bit de signo, si es negativo un 1.
2. Se calcula la potencia inmediatamente inferior en base dos al número y se hace el exceso
a M (127 en simple precisión o 1023 en doble precisión) sumando el número de bits de la
potencia a M.
3. Se calcula la división entre el número propuesto y la potencia obtenida, el resultado lo
pasamos a binario como hicimos al principio de la Unidad. Para obtener la precisión se
rellena con 0.
• Códigos alfanuméricos.
Uno de los aspectos fundamentales de los códigos alfanuméricos es su estandarización. Los
más usuales deben tener las siguientes características:
– representar juego de caracteres:
– letras del alfabeto mayúsculas y minúsculas
– signos de punutación ( , . ? * % …6
– las 10 cifras decimales 0...9
– los caracteres de control o órdenes entre dispositivos NUL, DEL, ESC, LF
– la longitud oscila entre los 6 y 16 bits
– el sistema será de codificación directa
1 Existe applets por Internet que convierte números en base decimal en formato IEEE 754 http://www.zator.com/Cpp/E2_2_4a1.htm
13
Juan Carlos Pérez González
Los más destacados son:
1. FIELDATA: de 6 bits. Es una extensión del código BCD numérico al cual se añaden dos bits,
llamados de zona (columna). Permite 64 caracteres.
2. ASCII: El código ASCII (de American Standard Code for Information Interchange — Código
Estadounidense Estándar para el Intercambio de Información), pronunciado generalmente [áski],
es un código de caracteres basado en el alfabeto latino tal como se usa en inglés moderno y en
otras lenguas occidentales. En los años 60 cuando se creó utilizaba 7 bits que permitía 128
caracteres. se utilizaron 8 bits (mal llamado ASCII extendido) que permite 256 caracteres. El
código ASCII reserva los primeros 32 códigos (numerados del 0 al 31 en decimal) para caracteres
de control códigos no pensados originalmente para representar información imprimible, sino para
controlar dispositivos (como impresoras) que usaban ASCII.
14
Juan Carlos Pérez González
3. UNICODE: es un estándar de codificación de caracteres diseñado para facilitar el tratamiento
informático, transmisión y visualización de textos de múltiples lenguajes y disciplinas técnicas,
(p.e. Braille) además de textos clásicos de lenguas muertas. El término Unicode proviene de los
tres objetivos perseguidos: universalidad, uniformidad y unicidad. Utiliza 16 bits lo que supone
65536 caracteres. La mayoría de los líderes de la industria informática Microsoft, IBM, Apple... lo
han adaptado y es imprescindible para los estándares de Java, XML, JavaScript, CORBA.... Su
incorparación a Internet como estándar en la representación de códigos supuso una disminución
en los costos de uso de caracteres en las aplicaciones cliente servidor. Apareción con los primeros
Windows NT e IE y Netscape en su versión 4,
4. BCD y EBCDIC: BCD significa decimal codificado binario es simplemente codificar los números
del 0...9 en binario agrupando en cuartetos. En la página anterior se incluye la tabla. Existen
variaciones sobre este, código Gray, código Aiken...
EBCDIC (Extended Binary Coded Decimal Interchange Code) es un código estándar de 8 bits
usado por sus computadores mainframe de IBM. Es una extensión del anterior.
• Representaciones redundantes: corrección de errores
Aunque la tasa de errores en la transferencia de datos suele ser baja en los ordenadores existe la
necesidad de establecer algún de corrección de errores. De los varios que hay solo estudiaremos
los más importantes:
• Paridad: Hay dos tipos de bits de paridad: bit de paridad par y bit de paridad impar.
◦ Código de paridad par :El bit de paridad será un 0 si el número total de 1 a transmitir
es par, y un 1 si el número total de 1 es impar.
◦ Código de paridad impar: El bit de paridad será un 1 si el número total de 1 a
transmitir es par y un 0 si el número total de 1 es impar.
Supongamos el siguiente ejemplos: tenemos el carácter original 0111001. Vemos que la trama a
transmitir tiene un número par de unos (4). Al añadir el bit de paridad obtendremos el siguiente
carácter, que es el que se transmitirá a destino:
Si usamos paridad par, ya hay un número par de unos, por tanto se añade un 0, y transmitiremos
00111001
Si se envía el dato y durante la transmisión se produce un único error, el destinatario puede
detectarlo al comprobar la paridad en destino, por ejemplo, se recibe 00110001 en vez de
00111001. Al comprobar el número de unos nos salen 3 (impar), luego se ha producido un error.
Este sistema se mejora si utilizamos paridades longitudinales y transversales donde además de
15
Juan Carlos Pérez González
detectar el error podemos localizarlo.
• CRC: códigos de redundancia cíclica. La comprobación de redundancia cíclica (CRC)
es un tipo de función que recibe un datos de cualquier longitud como entrada y devuelve
un valor de longitud fija como salida. El término suele ser usado para designar tanto a la
función como a su resultado. Pueden ser usadas como suma de verificación para detectar
la alteración de datos durante su transmisión o almacenamiento en hardware con lo que
permite verificar la integridad de los datos pero no para verificar si los datos recibidos o
guardados son correctos.
El algoritmo utilizado por el CRC es el siguiente:
Se añaden r "0" (ceros) a la derecha del mensaje (esto es, se añaden tantos ceros como grado
tenga el polinomio generador). Se divide el polinomio obtenido por el polinomio generador.
Después se añade el resto de la división a la derecha del mensaje original. La elección del
polinomio generador es esencial si queremos detectar la mayoría de los errores que ocurran. Uno
de los polinomios generadores que más se suelen utilizar es el estándar CCITT:
x16 + x12 + x5 + 1.
Una vez recibido el mensaje o antes de almacenarlo se realiza la división por el
polinomio generador siendo que ser divisible y en caso contrario habría un error en la
transmisión y almacenamiento.
• Código Hamming: son códigos correctores que permite detectar errores y corregirlos.
Consiste en añadir un bit de paridad en las posiciones que coincidan con las potencias
de 2. Al enviar el dato de siete bits, este es recibido como un paquete formado por (D6 D5
D4 D3 D2 D1 D0) donde no se reconoce quien es información y/o quien es control. Sin
embargo, con el método se realizan tres grupos de detección y corrección formado por
cuatro bits cada uno, los cuales siempre deben tener paridad par. Estos grupos están
resaltados de gris en la figura 1.7 y forman tres cuartetos agrupados de la siguiente
forma: (I7 I5 I3 C1); (I7 I6 I3 C2); (I7 I6 I5 C4). Ellos sirven tanto para generar, detectar y
16
Juan Carlos Pérez González
corregir datos con distancia uno y dos respectivamente.
Este sistema o similares son utilizados en los discos de paridad en los sistemas RAID-5
y RAID-6
• Compactación de la información
A veces se hace necesario almacenar o trasmitir gran cantidad de información y donde resulta
conveniente reducir su tamaño. Hay dos técnicas fundamentales:
1. lossy que se refiere a ficheros comprimidos con pérdidas. Utilizado en archivos
multimedia, códecs... El objetivo es representar cierta cantidad de información utilizando
una menor cantidad de la misma, siendo imposible una reconstrucción exacta de los datos
originales y siendo esa información perdida no imprescindible. En archivos gráficos
determinados colores que son similares o imágenes no perceptibles suelen omitirse a la
hora de guardar el archivo de forma que reducimos el tamaño. Igual sucede en formatos
de archivo como mp4 en los cuales determinadas frecuencias imperceptbiles al oído
humano no se perciben y como tal no se guarda. Existen códecs predictivos capaces de
reconstruir a partir de la información guardada información que se desestimó en su
momento. Muchos de los códecs de video e imágenes hacen uso del mismo.
2. lossless que se refiere a archivos comprimidos sin pérdidas. Se utiliza
preferentemente en archivos de texto. La compresión sin perdidas es una técnica que
consiste en la garantía de generar un duplicado exacto del flujo de datos de entrada
después de un ciclo de compresión / expansión . Es generalmente implementada usando
uno o dos diferentes tipos de modelos: estático o basado en diccionario. Por ejemplo si
17
Juan Carlos Pérez González
observamos que una palabra o carácter tiene la probabilidad de que aparezca en mayor
grado se representaría con código más sencillos. El algorimo más utilizado y conocido es
el Lempel-Ziv y derivados del que muchos programas como Winzip, Winrar, Gzip... hacen
uso. También formatos multimedia como PNG y WAV lo utilizan.
• Medidas de la información
◦ Byte
◦ Kilobyte = KB
◦ Megabyte = MB
◦ Gigabyte = GB
◦ Terabyte = TB
◦ Petabyte = PB
◦ Exabyte = EB
◦ Zettabyte = ZB
◦ Yottabye = YB
◦ Brontobyte = BB (aún no está reconocido Y tampoco el siguiente GeopByte)
1 Byte = 8 bits o 2 nibble
1 KB = 1.024 Bytes
1 MB = 1.048.576 Bytes
1 GB = 1.073.741.824 Bytes
1 TB = 1.099.511.627.776 Bytes
1 PB = 1.125.899.906.842.624 Bytes
1 EB = 1.152.921.504.606.846.976 Bytes
1 ZB = 1.180.591.620.717.411.303.424 Bytes
1 YB = 1.208.925.819.614.629.174.706.176 Bytes
1 BB = 1.237.940.039.285.380.274.899.124.224 Bytes
3. Concepto de Sistema Operativo
Conjunto de programas que se integran con el hardware para facilitar al usuario el
aprovechamiento de los recursos disponibles. Algunos de sus objetivos principales son:
• Proveer de un ambiente conveniente de trabajo
• Administrar y controlar la ejecución de los programas
• Detección y corrección de errores
• Proveer de una adecuada asignación y distribución de los recursos
18
Juan Carlos Pérez González
4. Arquitectura de un sistema operativo
La arquitectura de un sistema operativo viene determinada por las funciones que realiza este y
que veremos en el apartado siguiente de la UD. Si hay dos funciones que destacan sobre todas es
el control de los procesos a ejecutar y la gestión o administración del sistema de ficheros
que soporta el sistema operativo.
Para estudiar la arquitectura de los sistemas operativos nos centraremos en los dos de mayor
influencia actualmente: los de la familia Windows y en concreto los basados en la arquitectura NT
y los basados en el núcleo de Linux.
1. Arquitectura Windows NT
19
Juan Carlos Pérez González
Los conceptos más importantes que debemos tener en cuenta en la arquitectura NT son:
• HAL (Hardware Abstraction Layer): Es una librería dinámica de funciones (HAL.DLL)
que permiten controlar tareas relacionadas con el hardware:
◦ Gestión del DMA.
◦ Caché de datos e instrucciones.
◦ Errores hardware.
◦ Control de interrupciones.
◦ Gestión de los buses…
◦ Independizra al resto de componentes del sistema operativo de la arquitectura
hardware
• Kernel: Se encarga de la gestión del procesador. Entre sus funciones están:
◦ Cambio del proceso en ejecución.
◦ Sincronización multiprocesador.
◦ Gestión de interrupciones, excepciones y traps.
◦ Ofrece diferentes objetos necesarios en otros ámbitos del sistema operativo
(temporizadores, semáforos, etc.).
◦ Independiza al resto de componentes del sistema operativo de la arquitectura hardware
(en especial del procesador).
• Ejecutivo: Se encarga de:
◦ Realizar las operaciones de E/S
◦ Asignar y retirar zonas de memoria a los procesos
◦ Planificar la ejecución de los procesos, gestionar la caché de E/S
◦ Gestionar el mecanismo de comunicación entre procesos y elementos del sistema
(LPC)
◦ Gestionar objetos software (procesos, operaciones de E/S, permisos, etc.)
◦ Verificar permisos y validar las operaciones a realizar y gestionar el registro del sistema
(elemento que contiene la configuración del sistema operativo).
A los servicios del ejecutivo se accede empleando el NT Native API (en el arranque del
20
Juan Carlos Pérez González
sistema).
• Ventanas y gráficos: Se encarga de:
◦ Gestionar dispositivos apuntadores y de entrada de datos
◦ Dar forma a los datos para presentación en pantalla y gestionar ventanas y gráficos en
pantalla.
Se puede considerar que forma parte del ejecutivo del sistema.
• Subprocesos del sistema: Son subprocesos cuyo código se ejecuta siempre en modo
kernel (protegido). Los subprocesos son la unidad básica que se asigna al procesador.
Entre otras funciones el sistema de subprocesos se encargan de:
◦ Detectar el funcionamiento de los dispositivos E/S
◦ Analizar periódicamente el grado de ocupación de la memoria
◦ Detectar interrupciones, etc...
• NTDLL.DLL: API de funciones que permiten acceder a los servicios del ejecutivo desde
aplicaciones en modo usuario.
• Subsistemas de entorno:
◦ Crean el entorno necesario para ejecutar en Windows NT aplicaciones desarrolladas
para otros sistemas operativos (POSIX, OS/2, Windows 16 bits, Windows 32 bits, etc.).
◦ El subsistema Windows 32 bits está siempre arrancado porque lo precisan muchos
elementos de Windows NT. El resto de subsistemas se arranca sólo si alguna
aplicación lo demanda.
◦ Por cada sistema operativo simulado, existe una o varias librerías (DLLs) que
establecen la relación entre las funciones del sistema operativo simulado y las de
Windows NT (Windows 32 bits).
• Aplicaciones de usuario:
◦ Programas de usuario tales como editores de texto, compiladores, clientes de correo
electrónico, navegadores WEB, etc.
◦ Acceden a los servicios del sistema operativo a través de las librerías de subsistema
de entorno.
• Servicios:
◦ Son procesos que ofrecen algún tipo de servicio a otros procesos locales o remotos.
21
Juan Carlos Pérez González
◦ No registran ninguna actividad mientras no reciban ninguna petición de un cliente.
• Procesos del sistema
◦ Son procesos que forman parte del sistema operativo y que realizan tareas tales como:
autenticación de usuarios, gestión de servicios, administración de sesiones de trabajo
de los usuarios.
2. Arquitectura del sistema Linux
A grandes rasgos se puede diferenciar entre el espacio de usuario y el núcleo o kernel, en un
sistema GNU/Linux:
El núcleo o kernel a su vez tiene la siguiente estructura donde el nombre de los módulos son
autodescriptivos:
22
Juan Carlos Pérez González
Actualmente Linux es un núcleo monolítico híbrido. Los controladores de dispositivos y las
extensiones del núcleo normalmente se ejecutan en un espacio privilegiado conocido como anillo
(ring 0), con acceso exclusivo al hardware, aunque algunos se ejecutan en espacios del usuario.
A diferencia de los núcleos monolíticos tradicionales, los controladores de dispositivos y las
extensiones al núcleo se pueden cargar y descargar fácilmente como módulos cuando se
necesitan. También, a diferencia de los núcleos monolíticos tradicionales, los controladores
pueden ser detenidos momentáneamente por otros procesos bajo ciertas condiciones.
(interrupciones)
Como se observa hay:
– manejador de memoria: que administra el recursos de memoria que deben ocupar los
procesos
– manejador de CPU: o planificador de que procesos acceden al procesador
– manejador de dispositivos: administra la gestión de procesos
– sistema de ficheros: administra el sistema de ficheros del sistema operativo.
5. Funciones de un sistema operativo
El sistema operativo gestiona los siguientes recursos básicos:
• La memoria
• El procesador
• Los dispositivos de entrada/salida
Gestión del sistema de ficheros
Asimismo tiene otras funciones como control de acceso, comunicaciones... aunque solo
veremos en profundidad los cuatro mencionados.
A. Gestión de memoria
El módulo MMU (unidad de administración de memoria) se encarga de la gestión de memoria. Los
requisitos a cumplir en la gestión de la memoria son:
• traducir direcciones memorias lógicas en físicas
23
Juan Carlos Pérez González
• proteger zonas de memorias de distintos procesos del acceso de otros, para ello se
utilizan registros base de memoria y registros límite de ocupación, valores entre los
cuales que ningún otro proceso puede ocupar
• flexibilidad para determinadas zonas sean comunes para más de un proceso y sobre
todo de librerías dinámicas que comparten diferentes procesos
Antes de tratar el gestor de memoria señalar que, en principio, siempre es necesario dividir un
proceso en partes o fases que permitan su paso a memoria (overlay)
La gestión de la memoria se puede llevar a cabo de diferentes formas:
• Particiones estáticas de tamaño igual: el sistema operativo ocupa una posición fija de la
memoria principal y el resto es disponible para los procesos dividida en particiones con
límites fijos. Cualquier proceso, con un tamaño menor o igual que el de la partición, puede
cargarse en cualquier partición libre. El tamaño de las particiones condiciona el tamaño
máximo de los programas. Existe el problema de la fragmentación interna parte de la
memoria de la partición será desperdiciada (no se puede asignar a otro proceso). El uso de
la memoria así es extremadamente ineficiente.
24
Juan Carlos Pérez González
• Particiones estáticas de distinto tamaño: se resuelve en parte el problema de la
fragmentación interna al ser los tamaños de las particiones son diferentes para que se
ajusten a ellos los procesos de similar grado de ocupación de memoria.
• Particiones dinámicas: Al cargar un proceso se le asigna exactamente tanta memoria
como necesita. Resuelve el problema de la fragmentación interna pero aparece el de
fragmentación externa.
25
Juan Carlos Pérez González
Para resolver el problema de la fragmentación se usa la compactación de la memoria de
los partes que se liberaban pero ello origina una sobrecarga de trabajo al procesador.
• Sistema de colegas: es un sistema intermedio a los anteriores que consiste en dividir la
memoria en tamaños lo más próximos posibles a la cantidad solicitada por el
proceso. Cuando queda libre la porción de memoria se fusiona con porción libre más
cercana (ver la figura)
Figura. Sistema de Colegas
Para controlar que espacios de memoria están libres y ocupados se utilizan dos métodos:
- mapa de bits: La memoria se divide en unidades de asignación y a cada unidad de
asignación se le asigna un bit en un mapa de bits. 0 si está ocupado y 1 si está libre.
- listas enlazadas: Se mantiene una lista (estructura de datos) que enlaza los
segmentos de memoria asignados y libres, donde un segmento es un proceso o un hueco
entre dos procesos
• Memoria virtual
El tamaño del programa o proceso, sus datos y su pila podría exceder la cantidad de memoria
física o RAM que se le puede asignar. El sistema mantiene un número de partes del proceso en
memoria y el resto en disco. Hay dos técnicas básicas para llevar a cabo procesos de memoria
virtual: paginación y segmentación.
26
Juan Carlos Pérez González
• Paginación: divide el proceso en páginas (direcciones virtuales) y la memoria en
marcos de página (direcciones físicas) ambas de igual tamaño. La MMU lo que hace
es traducir las direcciones virtuales en físicas y así distribuir las páginas (partes del
proceso) en los correspondientes marcos de página.
Cuando el número de páginas excede a los marcos de página y se solicita una página que no se
encuentra en memoria tiene lugar lo que se conoce como fallo de página. El gestor MMU debe
dejar un marco de página libre para cargar la página solicitada. El control de gestión de las
páginas se facilita por la denominada tabla de páginas que controla las libres y las ocupadas.
• Segmentación: proporciona al proceso espacios de direcciones completamente
independientes (segmentos). La diferencia con respecto a la paginación es que los
segmentos son de tamaño variable pero tiene el problema de la fragmentación externa.
27
Juan Carlos Pérez González
Existe una alternativa, la segmentación-paginada que consiste en dividir el segmento en marcos
de página evitando en parte el problema de la fragmentación externa.
Hay varios algoritmos de gestión que permiten administrar las páginas que deben ser retiradas
para que se carguen otras que son solicitadas. A saber:
• LRU: la menos usada recientemente que es la primera en salir.
• FIFO: la primera en entrar la primera en salir, tiene una variación la de la segunda
oportunidad, solo sale la página si es dos veces referenciada.
• Algoritmo de reloj, si se produce un fallo de página sale la que se está referenciando
mediante una lista circular
Hay algunos más pero estos son los más destacados.
28
Juan Carlos Pérez González
En Linux la gestión de memoria se realiza mediante paginación por demanda en tres niveles
siendo el tamaño de la página de 4 KB. Para gestionar las páginas libres utiliza el sistema de
colegas. El kernel siempre está en memoria nunca se paginará en disco.
En Windows utiliza también paginación por demanda con tamaño de página de 4 KB. En las
versiones Server el núcleo del sistema ocupa sobre 2GB y tampoco se pagina en disco.
B. Gestión de Procesos
Los procesos son una de las abstracciones más importantes que proporcionan los SO ya que
permiten la capacidad de operar (pseudo) concurrentemente, incluso cuando hay sólo una CPU
disponible, dicho de otro modo, convierten una CPU en varias CPU's virtuales.
El proceso se puede definir como un programa en ejecución. Todo el software ejecutable en
la computadora se organiza en varios "procesos secuenciales". Así, un proceso no es mas que
una instancia de un programa en ejecución, incluyendo los valores actuales del contador de
programa, los registros y las variables. En teoría, cada proceso tiene su propia CPU virtual, pero
en la realidad, la CPU real conmuta de un proceso la otro. Esta conmutación rápida de un
proceso la otro se conoce cómo como "multiprogramación".
Varios procesos pueden compartir un solo procesador mediante lo uso de un algoritmo de
planificación para determinar cuándo se debe detener el trabajo en un proceso para dar servicio
la otro. El sistema operativo ofrece una serie de servicios que permiten definir la vida de un
proceso. Esta vida está constituida por las siguientes fases o estados: creación, ejecución y
muerte del proceso.
Hay cuatro eventos principales que provocan la creación de procesos:
1. El arranque del sistema.
2. La ejecución, desde un proceso, de una llamada al sistema para creación de otros
procesos.
3. Una petición de usuario para crear un proceso.
4. El inicio de un trabajo por lotes.
Los procesos que permanecen en segundo plano para manejar ciertas actividades como correo
electrónico, páginas Web, impresiones, etc... se conocen cómo demonios (daemons). En
UNIX/Linux podemos utilizar el programa ps para listar los procesos en ejecución, en Windows
podemos emplear el Administrador de Tareas.
En todos estos casos, para crear un proceso hay que hacer que un proceso existente ejecute una
llamada al sistema de creación de procesos. Esta llamada al sistema indica al SO que cree un
proceso y le indica, directa o indirectamente, que programa debe ejecutarlo.
29
Juan Carlos Pérez González
Figura. Estados de un proceso
En UNIX/Linux sólo hay una llamada al sistema para crear un proceso: fork. Esta llamada crea
un proceso hijo que puede provenir de un proceso padre. Después de fork, los dos procesos
(padre y hijo) tienen la misma imagen de memoria, las mismas cadenas de entorno y los
mismos archivos abiertos.
Por lo contrario, en Windows una sola llamada a una función de Win32 (Createprocess) maneja
la creación de procesos y carga el programa correcto. Esta llamada tiene 10 parámetros, que
incluyen desde el programa a ejecutar, los parámetros de la línea de comando para introducir
datos de ese programa hasta varios atributos de seguridad, bits que controlan si los archivos
abiertos se heredan, información de prioridad, una especificación de la ventana que se va a
crear para el proceso (si se va a crear una) y un apuntador a una estructura donde se devuelve al
proceso que fijo la llamada a la información acerca del proceso recién creado.
Tanto en UNIX como en Windows, una vez que se crea un proceso, el padre y el hijo tienen sus
propios espacios de direcciones distintos.
Los procesos pueden ejecutarse de dos formas: batch e interactiva.
• Un proceso que se ejecuta en modo batch, también llamado background, deberá tomar
sus datos de entrada de un archivo y luego depositar sus resultados en otro archivo.
• Un proceso que se ejecuta en modo interactivo, recibe la información del usuario por un
terminal por lo que contesta que los resultados.
Por lo general, los procesos terminan por uno de los siguientes motivos:
1. Salida normal (voluntaria). La mayoría de los procesos terminan debido la que
concluyeron su trabajo y ejecutan una llamada al sistema para indicar al SO que terminó.
Esta llamada es exit en UNIX y ExitProcess en Windows.
2. Salida por error (voluntaria).
3. Error (involuntaria).
4. Eliminado por otro proceso (involuntaria).
30
Juan Carlos Pérez González
Se puede ejecutar una llamada al sistema que indique al SO que elimine otros procesos. En UNIX
esta llamada es kill. La misma función en Win32 es TerminateProcess.
Para implementar el modelo de procesos, los SO mantiene una tabla llamada tabla de procesos
o bloques de control de procesos BCP con sólo una entrada por cada proceso Esta entrada
contiene información importante acerca del estado del proceso, incluyendo su contador de
programa,apuntador de pila, asignación de memoria, estado de sus archivos abiertos, información
de contabilidad y planificación, y todo lo demás que debe guardarse acerca del proceso cuando
este cambia de estado "en ejecución" a "listo" o "bloqueado", de manera que se pueda reiniciar
posteriormente como se nunca se había detenido. Hay que recalcar que los campos contenidos
en la tabla de procesos varía de un sistema la otro, pero en esta tabla se nos da una idea general
del tipo de información precisa.
Con cada clase de E/S hay una localización asociada llamada vector de interrupción. Esta
localización contiene la dirección del procedimiento del servicio de interrupciones.
De manera resumida, el manejo de interrupciones y la planificación de procesos funciona de
la siguiente manera:
• PASO 1: El dispositivo da la señal de interrupción.
• PASO 2: El procesador finaliza la instrucción en curso.
• PASO 3: El procesador comprueba la interrupción y envía señales de reconocimiento.
• PASO 4: Se guarda el valor de BPC y del CP en la pila.
• PASO 5: Se carga en el PC la dirección de la rutina de tratamiento de interrupción.
31
Juan Carlos Pérez González
En los SO tradicionales, cada proceso tiene un espacio de direcciones y un solo hilo de
control. Con todo, con frecuencia hay situaciones en las que es conveniente tener varios hilos
de control en el incluso espacio de direcciones que se ejecutan en cuasi-paralelo, como se fueran
procesos (casi) separados (excepto polo espacio de direcciones compartido). Se conoce como
cambio de contexto al cambio en el modo de trabajo del procesador.
Los diferentes modos de trabajo son:
– Supervisor.
– Usuario.
La atención de una interrupción conlleva los denominados cambios de contexto tal como se
muestra en la figura
Figura. Cambio de contexto. Se salva el BCP del proceso
• Hilos o Threads
La principal razón de tener hilos es que en muchas aplicaciones se desarrollan varias
actividades a la vez. La justificación de tener procesos es la misma que la de tener hilos. Sólo
32
Juan Carlos Pérez González
que ahora, con los hilos, agregamos la habilidad de las entidades en paralelo de compartir un
espacio de direcciones y todos sus datos entre ellas. Un ejemplo sería , el Word (proceso) con
varios hilos abiertos (documentos)
Un segundo argumento para tener hilos es que, como son mas ligeros que los procesos, son
más fáciles de crear (mas rápido) y destruir. En muchos sistemas, la creación de un hilo es de 10
a 100 veces mas rápida que la de un proceso.
Una tercera razón de tener hilos es también un argumento relacionado que el rendimiento. Los
hilos no producen un aumento en el rendimiento cuando todos ellos están ligados a la CPU, pero
cuando hay una cantidad considerable de cálculos y operaciones de E/S, al tener hilos estas
actividades pueden solaparse, que el que se agiliza la velocidad de la aplicación.
La cuarta y última razón es que los hilos son muy útiles en sistemas con varias CPUs donde,
gracias la ellos, es posible conseguir el verdadero paralelismo o ejecución simultánea (no es lo
mismo que concurrente) de varios hilos.
Cuando un ordenador se multiprograma, con frecuencia tiene varios procesos o hilos que
compiten por la CPU al mismo tiempo. Si sólo tenemos una CPU disponible, hay que decidir
que proceso se va a ejecutar a continuación. La parte del SO que realiza esta decisión se conoce
cómo planificador de procesos y el algoritmo cómo algoritmo de planificación. Muchas de las
cuestiones que se aplican a la planificación de procesos también se aplican a la planificación de
hilos, aunque algunas son distintas. Cuando el kernel administra hilos, por lo general la
planificación se lleva a cabo por hilo, e importa muy poco (o nada) la que proceso pertenece ese
hilo. Dividiremos los algoritmos de planificación atendiendo la tres entornos distintas:
1. Procesamento por lotes. En estos sistemas no hay usuarios que esperen una respuesta
rápida. Por lo tanto, son aceptables los algoritmos no apropiativos. Este método reduce
la conmutación de procesos y por lo tanto, mejora el rendimiento ya que al disminuir el
tiempo de retorno (minimizando el tiempo entre la entrega y la terminación) y mantener
ocupada a CPU todo el tiempo
2. Interactivo. En este entorno es preciso evitar que un proceso “absorba” la CPU y niegue
el servicio a las demás, es un algoritmo apropiativo. Se busca que se responda a las
peticiones con la mayor rapidez posible.
3. De tiempo real. En estos sistemas se busca evitar, sobre todo, la pérdida de datos y evitar
la degradación de la calidad en los sistemas multimedia.
Mencionaremos los algoritmos de planificación más comunes:
• Primero en entrar, primero en ser atendido (FCFS,First-Come, First-Served) o FIFO.
Se trata de un algoritmo "no apropiativo". Con este algoritmo, la CPU se asigna a los
33
Juan Carlos Pérez González
procesos en la orden en la que la solicitan. Ningún proceso se interrumpe.
• El trabajo mas corto primero (SJF, Shortest Job First). También es un algoritmo no
apropiativo, pero en este caso supónse que los tiempo de ejecución se conocen de
antemano. Cuando hay varios trabajos de igual importancia esperando a ser iniciados en la
cola de entrada, el planificador selecciona el trabajo mas corto.
• El menor tiempo restante a continuación (SRTN, Shortest Remaining Time Next). Una
versión del algoritmo del tipo "el trabajo mas corto primero". Con este algoritmo, el
planificador siempre selecciona el proceso cuyo tiempo restante de ejecución sea lo
mas corto. Si el joven trabajo precisa menos tiempo para terminar que el proceso actual,
este se suspende y el joven trabajo se inicia.
• Planificación por turno circular (Round-Robin). A cada proceso se le asigna un
intervalo de tiempo, conocido como quántum, durante lo que se le permite ejecutarse. Si
el proceso segue ejecutándose al final diera tiempo, la CPU es apropiada para dársela la
otro proceso. Si el proceso se bloquea o remata antes de que remate el tiempo, la
conmutación de la CPU se realiza cuándo eso ocurre. El tiempo del quántum es una
cuestión interesante: si es demasiado corto, se producen demasiadas conmutaciones
entre procesos y se reduce la eficiencia de la CPU, pero sí se establece demasiado largo
se pode producir una mala respuesta a las peticiones interactivas cortas. Normalmente, el
quántum tiene una duración de entre 20 y 50 ms.
• Planificación por prioridad. Cada proceso se le asigna una prioridad y el proceso
ejecutable con la prioridad mas alta es lo que se pode ejecutar. Para evitar que los
procesos con alta prioridad se ejecuten de manera indefinida, el planificador puede reducir
la prioridad del proceso actual en ejecución en cada pulso de reloj.
Existen algunos más pero o no son representativos o bien variaciones de los anteriores.
En un sistema de tiempo real (por ejemplo un ordenador de una avión), el tiempo de respuesta
desempeña es esencial. Por lo general, uno o mas dispositivos físicos externos a la computadora
generan estímulos y esta debe reaccionar de manera apropiada la ellos dentro de cierto espacio
de tiempo. El comportamiento en tiempo real se consigue dividiendo el programa en varios
procesos, donde el comportamiento de cada uno de estos es predecible y se conoce de antemano
y tienen un tiempo de vida corto y prioridades diferentes. (por ejemplo no es lo mismo la señal
de falta de combustible que la señal de luces de apagado de cabina).
C. Gestión del Sistema de Ficheros
Los objetivos fundamentales del servidor de archivos son los siguientes:
34
Juan Carlos Pérez González
• Facilitar lo manejo de los dispositivos periféricos. Para eso ofrece una visión lógica
simplificada de los mismos en forma de archivos.
• Proteger a los usuarios, poniendo limitaciones a los archivos que es capaz de
manipular cada usuario.
• Control del espacio disponible en disco
• Mantenimiento de la estructura de directorios y nombre de los archivos.
Los servicios que se engloban en el servidor de archivos son de dos tipos:
• Los servicios dirigidos al manejo de datos.
• Los dirigidos al manejo de los nombres, o directorios.
El servidor de archivos ofrece al usuario una visión lógica de una serie de objetos (archivos y
directorios) identificables por un nombre lógico sobre los que realiza una serie de operaciones.
La visión física incluye los detalles de cómo están almacenados estos objetos en los periféricos
corresponsales.
Los Sistema de archivos (FS, File System) son el conjunto de archivos incluidos en una unidad
de disco. El sistema de archivos está compuesto polos datos de los archivos, así como por toda la
información auxiliar que se requiere (boot, metainformación...).
Los SO soportan varios tipos de archivos:
• Los archivos regulares son los que contienen información del usuario.
• Los directorios son archivos especiales empleados para mantener la estructura del
sistema de archivos y que básicamente contienen las direcciones en disco del cluster o
sectores donde se alberga el archivo.
• Los archivos especiales de caracteres se relacionan con la entrada/salida y se utilizan
para modelar dispositivos de E/S de caracteres, por ejemplo, impresoras.
• Los archivos especiales de bloques se utilizan para modelar discos.
Los directorios son ficheros que contienen información sobre otros ficheros (nombre,
tamaño, ubicación, ...). Las estructuras de directorios más habituales:
Tanto Linux como Windows utilizan un sistema jerárquico. Para indicar la ruta al directorio hay
dos formas:
• ruta absoluta: se indica toda la ruta desde el directorio raíz, por ejemplo, /usr/var/www
en Linux o c:\windows\system\config en Windows
• ruta relativa: se indica la ruta desde el directorio de trabajo o actual, por ejemplo, si
estoy en /usr para acceder a www solo tengo que indicar /var/www
Hay dos directorios especiales: el directorio . o directorio actual y el directorio .. o directorio
padre
35
Juan Carlos Pérez González
Hay varias formas de implementar un sistema de ficheros:
• Asignación contigua: Todos los bloques de un mismo fichero están contiguos. Fácil de
implementar pero presenta fragmentación externa.
• Lista ligada Cada bloque contiene un puntero (no de bloque) al bloque siguiente. Evita la
fragmentación externa pero el acceso a los fichero es lento.
• Asignación de lista ligada e índice es la misma idea que antes, pero los punteros se
almacenan en una estructura aparte (indice) que se almacena en disco, se lee cuando se
usa el sistema de cheros y se escribe de nuevo en disco si se modica, mejora lo anterior
pero el problema el crecimiento de la tabla de índices.
36
Juan Carlos Pérez González
• Asignación de i-nodos A cada fichero se le asigna una estructura de datos llamada nodo-
i, donde se almacenan sus atributos y direcciones de sus bloques. Dicha estructura se
guarda en disco y se lee cuando accedemos al fichero.
El tamaño del bloque lógico (usado por el FS) suele ser múltiplo del tamaño del bloque físico
(usado por el disp. de almacenamiento).
Una vez hechas las particiones las formateamos que consiste en darle un estructura ajustada al
SO que la va a utilizar.
37
Juan Carlos Pérez González
Los sectores del disco se agrupan para formar Clusters que son las unidades mínimas para
grabar un archivo.
• FAT12/FAT16/FAT32
Cada partición formateada en este sistema de archivos tendrá la siguiente estructura:
◦ BOOT (Sector de Arranque): Al formatear un volumen, se crea siempre en el
primero sector del volumen el sector de arranque. En él se encuentra información
acerca del tamaño, de la estructura del volumen y sobre todo del
BOOTSTRAP-LOADER, mediante la cuál se pode arrancar el PC desde lo SO.
◦ FAT (File Allocation Table - Tabla de Asignación de Ficheros): Cada entrada de la
tabla corresponde la un cluster, en cada entrada se indica si el cluster está vacío;
si el cluster está defectuoso; cuál es el cluster siguiente
que tiene parte del archivo; si es o último cluster que tiene información del archivo.
El tamaño de la FAT depende del sistema de archivos empleado:
▪ FAT12 implica que ha direccionado 212 clusters
▪ FAT16 implica que ha la direccionado 216 clusters
▪ FAT32 implica que ha la direccionad 228 clusters
En realidad, FAT32 es un término "erróneo", ya que sólo se utilizan los 28 bits de menor orden de
las direcciones de disco. Así, en la siguiente tabla vemos los tamaños máximos de las particións
dependiendo del tamaño del cluster (no se admiten cluster mayores de 32Kb):
38
Juan Carlos Pérez González
◦ Una o mas copias de la FAT: Normalmente se hacen dos copias idénticas de la
FAT. Si lo SO encuentra un error en la FAT primaria, copia la secundaria para evitar
la pérdida de datos.
◦ El directorio Raíz: La cantidad máxima de entradas en el directorio raíz se limita
ponerlo su tamaño, que se fija en el sector de arranque (32 bytes). El directorio raíz
representa una estructura de datos estática, es decir, que no crece aunque se
vayan guardando madres y archivos o subdirectorios.
◦ Zona de Datos: Es la parte del disco duro en la que se almacenan los datos de un
archivo. Esta zona depende en casi su totalidad de las interrelaciones entre las
estructuras de datos que forman el sistema de archivos del SO, y del camino que
se lleva desde la FAT cara los diferentes sectores de un archivo. Los clusters se
enumeran para poder ser accedidos polo SO.
◦
• HPFS
HPFS acrónimo de High Performance File System (Sistema de Archivos de Altas
Prestaciones), fue creado por Microsoft específicamente para el sistema operativo OS/2 para
mejorar las limitaciones del sistema de archivos FAT. Se caracterizaba por permitir nombres
largos, metadatos e informaciónd de seguridad.
• NTFS
Actualmente está en la versión 6. El sistema Windows Server tiene un sistema más avanzado que
el NTFS pero que lo veremos cuando lleguemos a él.
Las características principales del sistema NTFS son:
39
Juan Carlos Pérez González
◦ 64 bits para direccionar bloques, por lo que el tamaño máximo de la unidad será
de 16 HexaBytes. No se recomienda utilizar NTFS en un volumen de menos de uno
400 MB, debido a la sobrecarga de espacio que
implica NTFS. Esta sobrecarga de espacio se refiere a los archivos de sistema de
NTFS que normalmente utilizan por lo menos 4 MB de espacio de unidad en una
partición de 100 MB.
◦ Operaciones de busca (B-Tree): Log(N) x Tiempo Base (siendo N el número de
archivos existentes). Muy Eficiente.
◦ ACLs: Listas de Control de Acceso a archivos y directorios.
◦ Journaling: Registro de transacciones
◦ Nombres de archivos: 256 caracteres
◦ Compresión individual: compact.exe
◦ Cifrado de archivos (EFS): cipher.exe puede ser Simétricos o Clave Personal o
Asimétricos o Clave Pública
◦ Cuotas de disco a partir de la v5.0
◦ Descriptores de Archivos (Los i-nodos de Linux) de 4 KB.
◦ Se puede hacer la conversión, desde lo Windows y sin pérdida de información,
desde una partición en FAT/FAT32 a NTFS, se emplea el comando: convert Unidad:
/FS:NTFS, pero puede dar lugar a errores
La estructura es la siguiente.
◦ Boot: Sector de arranque.
◦ Superbloque: Describe la estructura del sistema de archivos
◦ Mapas de bits o vectores de bits: Representa el espacio existente en un sistema de
archivos. Incluyen un bit por descriptor de archivo existente; si el recurso está libre, el
valor 0 y si el valor del bit asociado es 1, si está ocupado
◦ Descriptores físicos de archivos: Cada uno ocupa 4 KB. Cuando se crea el sistema
de archivos lo SO habilita un número de descriptores físicos proporcional al tamaño de
la partición. Este tamaño es mucho mayor que los homólogos en UNIX (los i-nodos) lo
que hace que ya en ellos se almacenen datos del archivo,esto optimiza el acceso a los
archivos pequeños al evitar accesos a disco para obtener el descriptor y luego los
datos. Para archivos grandes, el servidor de archivos mantiene una estructura
40
Juan Carlos Pérez González
jerárquica en árbol, donde en cada bloque se almacenan datos y apuntadores al resto
de bloques.
◦ Bloques de datos (Cluster): Estos bloques son asignados a los archivos polo servidor
de archivos a través de los descritores de archivos. El tamaño de este bloque es la
mínima unidad de transferencia que maneja lo SO (cluster).
• exFAT
exFAT (Extended File Allocation Table) es un sistema de archivos especialmente
adaptado para memorias flash. Teóricamente es capaz de gestionar 64 Exabytes.
• LINUX/UNIX. I-nodos
Características:
◦ Características similares a NTFS.
◦ i-nodos: Son los equivalentes de los "descritores físicos de archivos" de NTFS; son
pequeños, 128 bytes por KB el área de Datos y Directorios, no guardan nada del
contenido del archivo, guardan sólo información sobre él.
◦ Cada puntero i-nodo almacena información del archivo (ruta o path, tamaño,
ubicación física). En cuanto a la ubicación es una referencia a un sector del disco
donde están todos y cada una de las referencias a los bloques del archivo
fragmentado. Estos bloques son de un tamaño que se especificó en el momento de la
creación del sistema de archivos, con un tamaño va desde los 512 bytes incluso los 4
kB, lo que asegura un bueno aprovechamiento del espacio libre con archivos de
pequeño tamaño.
41
Juan Carlos Pérez González
• ext4
ext4 es un sistema de archivos con journaling. Es, sin duda, el de más éxito entre las
distribuciones Linux.
◦ ext4 emprega un árbol binario balanceado que optimiza las búsquedas de ficheros.
◦ los tamaños máximos de los archivos y particiones dependen del tamaño del bloque
según la tabla adjunta:
La versión ext4 tiene mejoras de eficiencia en las búsquedas y menor consumo de la CPU y
maneja particiones 1 EXB y archivos de 1 TB
42
Juan Carlos Pérez González
• ReiserFS
ReiserFS, también usado en Linux ofrece funcionalidades como:
◦ Journaling.
◦ Reparticionamiento con el sistema ficheros montado y desmontado. Podemos
aumentar el tamaño del sistema de ficheros mientras lo tenemos montado. Disminuirlo
solo desmontado
◦ Tail packing, un esquema para reducir la fragmentación interna.
◦ Tamaño máximo del sistema de ficheros es de 16 TB
◦ Tiene mejoras frente a ext3 en lo que respecta a recuperación frente a pérdidas de
información.
• UFS
Sistema de ficheros utilizado en equipos UNIX y derivados de BSD (FreeBSD, Solaris...9
• XFS
XFS es un sistema de archivos de 64 bits con journaling de alto rendimiento creado por SGI
(Silicon Graphics Inc.) para su implementación de UNIX llamada IRIX. Puede ser usado también
por Linux. Ç
• JFS
Journaling File System (JFS) es un sistema de arquivos de 64-bit con respaldo de transaccións
creado por IBM.
43
Juan Carlos Pérez González
• ISO 9660
Es el estándar más común utilizados en los CDROM. Un CDROM está constituido por una única
espiral de bits que se dividen en bloques lógicos de 2352 bytes siendo 2048 bytes los que
contienen información.
Cada CDROM comienza con 16 bloques no definidos por el fabricante que puede ser utilizado
para establecer en ellos el autoarrancable. Luego 1 bloque que es un descriptor y que contiene
la información general del CD (identificador del sistema, del cdrom, número de bloques de CD,
claves... y finalmente un directorio raíz que contiene las entradas de los directorios.
Para finalizar comentaremos la gestión del disco duro por parte del SO de forma muy resumida sin
entrar en detalles hardware. Se conoce como tiempo de búsqueda el tiempo que tarda el cabezal
en situarse en la pista adecuada y tiempo de retardo o latencia el tiempo que tarda en situarse
en el primer sector a leer. Evidentemente el primero es mayor que el segundo. El total es el
tiempo de acceso.
Hay varios métodos de planificación de disco de los cuales depende los movimientos de los
cabezales:
• FCFS: Servir los pedidos como vayan llegando.
• SSTF (sort seek time firs): se elige el que genere el menor tiempo de búsqueda
• SCAN: el brazo se mueve de afuera adentro sirviendo los pedidos y luego hace el camino
inverso
• C-SCAN.: igual que el anterior pero cuando llega al final vuelve al principio sin resolver
ningún pedido en el camino inverso. Este y el anterior son los mejores para disco con gran
carga de trabajo.
• C-LOOK.: parecido al anterior pero no va hasta el final sino hasta donde haya pedidos y
luego vuelve al principio
• LOOK: es igual al SCAN pero sin llegar al final.
D. Gestión de la E/S
El gestor de E/S debe controlar el funcionamiento de todos los dispositivos de E/S para
conseguir los siguientes objetivos:
• Facilitar el manejo de los dispositivos periféricos. Para esto debe ofrecer una interface
sencilla, uniforme y fácil de emplear entre los dispositivos, y gestionar los errores que se
pueden producir en el acceso a los mismos.
• Ofrecer mecanismos de protección que impidan a los usuarios acceder sin control a los
dispositivos periféricos.
44
Juan Carlos Pérez González
• Gestionar la compartición multiproceso de los dispositivos en sistemas multitarea: La
organización que se establezca depende del tipo de periférico.
• Sincronización de las demandas de recursos: Los procesos solicitan recursos y se han
de bloquear hasta recibir el recurso pedido. Por otro lado, los periféricos van atendiendo a
diversos procesos, siendo el sistema operativo el encargado de dirigir todo el proceso.
Principios del hardware de E/S
• Dispositivos de E/S: Los dispositivos de E/S se pueden dividir básicamente en dos
categorías:
◦ Dispositivos de bloque: Los dispositivos de bloque almacenan información en
bloques de tamaño fijo, cada uno con su propia dirección. Los tamaños de bloque
comunes varían desde 0,5 KB bytes hasta 32 KB bytes. Todas las transferencias se
realizan en unidades de un o mas bloques completos (consecutivos).
La propiedad esencial de un dispositivo de bloque es que es posible leer o escribir
cada bloque de manera independiente de los demás. Los discos duros, CD-ROM´s y
memorias USB´s son dispositivos de bloque
comunes. Las cintas también se consideran dispositivos de bloque, pero no de acceso
aleatorio.
◦ Dispositivos de carácter: Un dispositivo de carácter envía o acepta flujo de
caracteres, sin importar la estructura del bloque. No es direccionable y no tiene
ninguna operación de busca. Las impresoras, interfaces de red, los ratones y la
mayoría de los demás dispositivos que no son parecidos a los discos se pueden
considerar cómo dispositivos de carácter.
• Controladores de dispositivos. Por lo general, las unidades de E/S consisten en un
componente mecánico y un componente electrónico. El componente electrónico de un
dispositivo se llama controlador del dispositivo o adaptador. En los Pcs, comúnmente
tienen la forma de un chip en la tarjeta principal o una tarjeta de circuito integrado.
• E/S por asignación de memoria. Cada controlador tiene unos cuantos registros de
control y nos buffers de datos que se utiliza para comunicarse con la CPU. Al escribir
en ellos, los SO puede hacer que el dispositivo envíe o acepte datos, se encienda o se
apague, o realice cualquiera otra acción. De todo esto surge la cuestión acerca de cómo
se comunica a CPU que los registros de control y los búferes de datos de los dispositivos.
Existen dos alternativas:
◦ El primero método, a cada registro de control se le asigna un número de puerto de
E/S, un entero de 8 o 16 bits. El conjunto de todos los puertos de E/S forma el espacio
de puertos de E/S y está protegido de manera que los programas de usuario comunes
45
Juan Carlos Pérez González
no puedan utilizarlos (sólo lo SO).
◦ El segundo método es asignarle todos los registros de control un espacio de
memoria. Este sistema se conoce cómo E/S con asignación de memoria (mapped-
memory). Por lo general, las direcciones asignadas se encuentran en la parte superior
del espacio de direcciones.
◦ Acceso directo la memoria (DMA). Que una CPU tenga o no E/S por asignación de
memoria, necesita direccionar los controladores de dispositivos para intercambiar datos
con ellos. La CPU puede solicitar datos de un controlador de E/S un bit a la vez, pero al
hacerlo se desperdicia el tiempo de la CPU, por lo que a menudo se utiliza un
esquema distinto, conocido
como DMA (Acceso Directo la Memoria). El SO sólo puede utilizar DMA se el
hardware tiene un controlador DMA.
◦ Interrupciones
Cuando un dispositivo de E/S remató un trabajo que se le asignó, produce una
interrupción. Para eso, impone una señal en una línea de bus que se le había
asignado. Esta señal es detectada por el chip controlador de interrupciones en la
tarjeta principal, que después decide el que debe hacer. La señal de interrupción hace
que la CPU deje el que está haciendo y empiece atender la interrupción. El número
en las líneas de dirección se utiliza cómo índice en una tabla llamada vector de
interrupciones para obtener un nuevo contador del programa, que apunta al inicio
del procedimiento de servicio de interrupciones correspondiente.
◦ Procesadores E/S: existen una serie de dispositivos, por ejemplo las tarjetas a
gráficas actuales que prácticamente trabajan de forma independiente de la CPU. Una
tarjeta gráfica tiene su propio procesador, su memoria... en resumen es un “ordenador”
en si mismo y solo solicita de la CPU determinadas señales de control.
• Fundamentos del software de E/S. Desde el punto de vista del SO se puede realizar la
E/S de las siguientes formas:
▪ Objetivos del software de E/S. Un concepto clave en el diseño del software de
E/S es la independencia de dispositivos. El que significa es que debe ser posible
escribir programas que puedan acceder la cualquier dispositivo de E/S sin tener
que especificar el dispositivo por adelantado. Un objetivo muy relacionado con
la independencia de los dispositivos es la denominación uniforme. El nombre del
archivo o dispositivo simplemente debe ser una cadena o un entero sin depender
del dispositivo de ninguna forma.
46
Juan Carlos Pérez González
▪ Otra cuestión clave es la de las transferencias síncronas (de bloqueo) contra las
asíncronas (controladas por interrupciones). La mayoría de las operaciones
de E/S son asíncronas: la CPU inicia la transferencia y se va a hacer otra cosa
hasta que llega la interrupción. Los programas de usuario son mucho mas
fáciles de escribir si las operaciones de E/S son de bloqueo: después de una
llamada al sistema read, el programa se suspende de manera automática hasta
que existan datos disponibles en el buffer. Hay tres maneras fundamentalmente
distintas en las que se pueden llevar a cabo la E/S:
• E/S programada. En este caso, todo el trabajo lo hace la CPU.
• E/S controlada por interrupciones. La manera de permitir que la CPU haga
algo mientras espera la que un dispositivo esté listo desde que se le mandó
hacer algo, es utilizando interrupciones. Así y todo se, como por ejemplo,
hablamos de un dispositivo de caracteres, el paso de cada carácter produce
una interrupción.
• E/S mediante lo uso de DMA. Un gran problema en la E/S controlada por
interrupciones es que ocurre una interrupción en cada carácter. Una solución es
utilizare DMA. Aquí la idea es permitiere que el controlador de DMA se
encargue de enviar todos los caracteres y luego avise a la CPU de que la
transferencia fue realizada.
6. Tipos de Sistemas Operativos
POR EL NÚMERO DE USUARIOS:
• Monousuario: son aquellos solo pueden atender a un solo usuario. Son muy simples,
porque todos los dispositivos de entrada, salida y control dependen de la tarea que se esta
utilizando, esto quiere decir, que las instrucciones que se dan, son procesadas de
inmediato. Ejemplo: MS-DOS, Windows 95
• Multiusuario: son 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. Se basan en el fraccionamiento del tiempo (timesharing).
Ejemplos: UNIX, WINDOWS, MAC-OS, etc.
POR EL NÚMERO DE TAREÁS:
• Monotarea:Los sistemas operativos monotarea son más primitivos y sólo pueden manejar
un proceso en cada momento o que solo pueden ejecutar las tareas de una en una. Por
ejemplo cuando la computadora esta imprimiendo un documento, no puede iniciar otro
47
Juan Carlos Pérez González
proceso ni responder a nuevas instrucciones hasta que se termine la impresión.
Ejemplo:MS-DOS
• Multitarea:Es una característica de los sistemas operativos modernos. Permite que varios
procesos sean ejecutados al mismo tiempo compartiendo uno o más procesadores.
Ejemplo: Windows XP-7, LINUX, etc., Mac OS Leopard, etc.
POR EL NÚMERO DE PROCESADORES:
• Monoproceso: aquél que es capaz de manejar solamente un procesador de la
computadora. Ejemplo: MS-DOS y McOS.
• Multiproceso: gestiona más de un procesador, y es capaz de usarlos todos para
distribuir su carga de trabajo. Trabajan de dos formas:
◦ Asimétrico:El sistema operativo selecciona a uno de los procesadores el cual jugará el
papel de procesador maestro y servirá como pivote para distribuir la carga a los demás
procesadores, que reciben el nombre de esclavos.
◦ SIMÉTRICA:Los procesos o partes de ellos (threads) son enviados indistintamente a
cualesquiera de los procesadores disponibles, teniendo, teóricamente, una mejor
distribución y equilibrio en la carga de trabajo bajo este esquema. Ejemplo: UNIX
SOLARIS.
POR TIEMPO:
• Tiempo real: los procesos que se ejecutan en el seno de un sistema operativo de tiempo
real (RTS, Real Time System) requieren tiempos de respuesta muy exigentes (muy bajos).
Dicho de forma más cruda: o los resultados se dan dentro de los márgenes de tiempo
prestablecidos, o las consecuencias son muy trágicas para las personas, para los datos,
etc. Ejemplo: Windows 7
• Tiempo compartido: son sistemas multiusuario pensados desde sus orígenes (Unix) para
ser explotados en modo interactivo o conversacional. En un sistema de tiempo compartido
típico la columna vertebral de la planificación de procesos es el algoritmo RR. Ejemplo:
UNIX.
POR LA FORMA DE OFRECER SUS SERVICIOS:
• De red: sistemas que mantienen a dos o más computadoras unidas a través de algún
medio de comunicación (fisico o no), con el objetivo de poder compartir los diferentes
recursos y la información del sistema. Ejemplo: Windows 98, Linux.
• Distribuidos: permiten distribuir trabajos, tareas o procesos, entre varios procesadores.
48
Juan Carlos Pérez González
Puede ser que los procesadores esté en un equipo o en diferentes, en este caso es
trasparente para el usuario. Ejemplo: Windows Server.
7. Licencias y tipos de Licencias Software
Una licencia de software es una forma de contrato mediante la que el titular de los derechos de
autor establece las condiciones y términos bajo los que el usuario puede utilizar un determinado
programa informático.
Aunque inicialmente las licencias de software se desarrollaron para limitar el uso de los
programas, pueden utilizarse también para garantizar los derechos relativos al software libre. Para
que un determinado programa pueda considerarse software libre, es necesario distribuirlo junto a
una licencia que garantice que se mantienen ciertas libertades.
49
Juan Carlos Pérez González
• De software propietario o privativo: Su licencia reserva la mayoría de los derechos de
modificación, duplicación y redistribución para el titular de los derechos de propiedad
intelectual (el programador o, en ocasiones, el distribuidor).
• De software libre: es aquel que garantiza las cuatro libertades del software (según
Richard Stallman, fundador de la Free Software Foundation):
1. Libertad de usar el programa con cualquier propósito.
2. Libertad para distribuir copias del programa con las que ayudar a otros usuarios.
3. Libertad de estudiar como funciona y modificarlo para adaptarlo a las necesidades
del usuario.
4. Libertad de mejorar el programa y hacer públicas esas mejoras para beneficio de
otros usuarios.
Las libertades 3 y 4 requieren el acceso al código fuente por lo que en ese caso el software libre
debe ser también software de código abierto (open source). La idea que late detrás del open
source es que cuando los usuarios tienen la capacidad necesaria para ello, pueden leer, modificar
y redistribuir el código fuente de un programa, de manera que éste evoluciona, se desarrolla y
mejora.
Entre las distintas licencias de software libre, la más conocida es la GNU GPL (General Public
License o licencia pública general). Un aspecto esencial de los programas GPL es la obligación de
redistribuir bajo la misma licencia cualquier versión modificada de los mismos, a fin de garantizar
que todas las mejoras realizadas reviertan de nuevo a la comunidad libre. También se utiliza el
término "cubierto por copyleft" (en oposición a copyright) como equivalente a "distribuido bajo
GPL".
Según las libertades hay dos tipos de licencias: gratuitas y no gratuitas, que no significan lo
mismo que libres y propietarias (referidas al código y derechos más que a precio).
Existen ciertas matizaciones:
• Adware: es software gratuito cuya financiación se consigue a través de la publicidad que
contienen.
• GPL / GNU / Open Source: son tipos de licencias muy conocidos en el entorno Linux que
consisten básicamente en programas libres de descargar, usar, distribuir e incluso
modificar puesto que se distribuye su código fuente.
• Creative Commons: Es una licencia con base copyright, pero que permite autorizar la
mayoría de derechos que este limita por defecto. Muy uitlizada en Internet por proveer una
base legal sencilla para la divulgación de contenidos.
• Demo: es una demostración del software que permite conocer algunas de sus
características. Muy usada en la industria del videojuego para promoción.
50
Juan Carlos Pérez González
• Shareware: es una versión recortada de un programa comercial que permite comprobar si
cumple con las expectativas. Las limitaciones pueden ser muy diversas. Las principales
licencias comerciales son:
◦ OEM: Las siglas proceden del Original Equipment Manufacturer y generalmente la
venta del software con este tipo de licencia implica que se venda con un equipo
nuevo.
◦ Retail: son las versiones de software destinadas a su venta directa al usuario final.
Podemos instalarla en cualquier equipo sin más limitación que una por equipo.
◦ Licencias por volumen: Tipo de licencia destinada a empresas con un número
determinado de usuarios, en similares condiciones que las OEM pero sin la restricción
de ser para equipos nuevos, Un determinado número de equipos puede utilizar el
mismo código de licencia.
8. Consideraciones previas a la instalación de SO libres e propietarios.
Antes de nada comentar que trataremos exclusivamente de SO en red, es decir, Windows
2010/2012 Server y distribuciones Linux, en las cuales esa característica ya es inherente.
• Windows 2010/2012 Server
◦ Nucleo: NT6.1. Administrador de servidor renovado. Tiene una función de
administración de direcciones IP (IPAM) para la búsqueda, monitoreo, auditoría y
administración del espacio de direcciones IP usados en una red corporativa
◦ Sistemas de archivos: ReFS (Resilient File System) es un nuevo sistema de archivos
en Windows Server 2012 inicialmente previsto para servidores de archivos que mejora
en NTFS. El sistema presenta limitaciones frente a su predecesor, como se detalla más
adelante, pero también novedades en varios campos. Utiliza árboles B+ lo que mejora
la fiabilidad y acceso a los archivos. Permite tamaños de archivos de 16 ExB. Algunas
características de NTFS no son compatibles por ReFS, como los flujos de datos
alternativos, identificadores de objetos, nombres cortos, compresión de archivos,
cifrado a nivel de archivos, transacciones de datos de usuario, archivos dispersos,
enlaces duros, atributos extendidos y cuotas de discos.
◦ Particiones: al menos una primaria y activa donde almacenar el sistema aunque
puede gestionar otras primarias y/o extendidas a las que asigna una letra de
identificación (C:, D:...) y una vez instalado el sistema tiene una herramienta de
administración de discos. Como consejos a seguir, evitar instalar el sistema en una
partición comprimida y sobre todo, instalar el sistema en una partición exclusiva
para él.
51
Juan Carlos Pérez González
• Linux
◦ Particiones. Linux necesita al menos dos particiones: para el sistema y para la
memoria de intercambio o swap. Con respecto a esta última se aconseja que sea entre
el mismo y el doble de tamaño de la memoria RAM del equipo. Con respecto a un
sistema servidor además se aconseja al menos tres particiones: la del sistema, la de
los usuarios /home y la última la del directorio /var.
◦ Gestor de arranque: hay dos LILO y Grub. En la actualidad la última es la más
utilizada. Suele ubicarse en el MBR del disco.
◦ Administrador: root. En Ubuntu está deshabilitado y para ejercer los derechos de
root o del administrador se ejecuta el comando sudo por parte del usuario que se da
de alta durante la instalación.
Fuente: Wikipedia
◦
9. Instalación de sistemas operativos: requisitos, versións e licenzas.
• Windows 2012 Server.
La familia de servidores 2012 dispone de solo tiene cuatro ediciones: Foundation, Essentials,
Standard y Datacenter.
La familia de servidores 2012 dispone de cuatro versiones para la arquitectura x86 e Itanium y
versiones HyperV. Hyper-V es un programa de virtualización basado en un hipervisor para los
sistemas de 64-bits con los procesadores AMD-V o Tecnología de virtualización Intel (el
instrumental de gestión también se puede instalar en sistemas x86).
52
Juan Carlos Pérez González
La configuración del SO dependerá de los roles o funciones (servidor de archivos, servidor web,
servidor DNS, servidor DHCP, servidor de impresión, AD...) a los que se dedicará y ofrecerá a los
usuarios y a las características o prestaciones soportadas (servidor WLAN, de
almacenamiento extraíble...
Para ello existe una instalación básica o Core que es una opción que permite solo la inclusión
de los servicios mínimos del sistema para luego poder configurar a este según su funcionalidad
futura sin que interfieran otros servicios optimizando así los recursos y minimizando su
mantenimiento.
53
Juan Carlos Pérez González
Los modos de licencia durante la instalación son por servidor se refiere a las conexiones
concurrentes al software del servidor, mientras por dispositivo o usuario se aplica al dispositivo
o usuario sin importar a qué servidor se acceda.
• Linux
Linux es un SO multiplataforma, multiproceso, multitarea y multusuario. Es de libre distribución,
GPL, es decir, cualquiera puede copiarlo, cambiarlo y distribuirlo sin restringir lo anteror, GNU. En
realidad Linux solo hacía referencia al núcleo o kernel, es decir, la parte que gestionaba el
hardware que añadiéndole los proyectos GNU (compiladores, shells, escritorios y aplicaciones en
general) hablamos del SO GNU/Linux.
Generalmente la fase inestable o en desarrollo suele denominarse con númer impar 1.1, 1.3.,... y
las fases estable con número par 1.2., 1.4.,...
Linux respeta las especificaciones POSIX (Portable Operating System Inteface) que es un API
para sistemas UNIX que permite que el código fuente del SO sea fácil de llevar de una plataforma
a otra. Citar también otras implementaciones libres de UNIX como FreeBSD, OpenBSD y NetBSD.
Otro aspecto son las distribuciones que no son más que una recopilación de programas y
ficheros incluyendo la última versión estable del núcleo. La mayoría se consiguen en Internet.
Actualmente existen alrededor de 300. Citaremos algunas:
• Red Hat- Fedora. Utiliza el formato de software empaquetado RPM. La compañia ha
dejado el proyecto Fedora centrándose en el Red Hat Enterprise. De esta derivó una
muy influyente hoy en día Centos.
• Debian es la única no-comercial que no depende de ninguna empresa. El formato de
software empaquetado es DEB. A partir de está surgieron gran número de
distribuciones.
• SUSE de origen alemán con enfoque más comercial y con un instalador muy intuititvo.
Actualmente pertenece a NOVELL lo que originó su orientación hacia el campo
54
Juan Carlos Pérez González
empresarial. Se basa en el formato RPM
• Ubuntu es la distribución de más influencia en la actualidad con varias versiones entre
las que destacan Ubuntu Desktop Edition hacia el campo doméstico y Ubuntu Server
hacia el campo empresarial. Se basa en Debian.
Citar un proyecto gallego Trisquel GNU/Linux desarrollado por la Uvigo..
Los entornos gráficos de Linux más importantes son KDE y GNOME. Ambos se apoyan sobre un
software de gestión de ventanas llamadas X Window, que funciona basándose en un sistema
cliente-servidor. Primero se carga el gestor y luego el entorno gráfico. Gnome es el entorno de
escritorio oficial del proyecto GNU y se basa en la biblioteca de entorno gráficos GPL con licencia
libre, el gestor de archivos se denomina Nautilus. KDE está basado en entorno gráfico de las
plataformas UNIX utiliza la biblioteca de controles gráficos Qt. El gestor de archivos se llama
Konqueror.
Pero el sistema más simple y potente de gestión de Linux es mediante la shell o línea de
comandos, preferentemente bash, aunque hay otros c-shell, korn-sell o sh.
Finalmente tomaremos Ubuntu con entorno gráfico como referencia para establecer los requisitos
mínimos y recomendados:
– Procesador: 700 Mhz (mínimo) y 1,5 Ghz (recomendada)
– Memoria RAM 512 MB (mínimo) y 1024 MB (recomendada)
– Tarjeta gráfica 1024x768 (mínimo) y gráfica 3D compatible OpenGL
– Disco duro 8 GB (mínimo), tarjeta de red y de sonido.
Figura. Alguna de las distribuciones Linux
55
Juan Carlos Pérez González
10. Instalaciones desatendidas
Podemos considerar instalaciones desatendidas como aquellas en las cuales el usuario no
introduce ningún datos durante la instalación del sistema. Este tipo son muy útiles para el
administrador de sistemas que tiene que instalar SO en un número relativamente grande equipos
clientes.
No solo permite instalaciones de SO sino de cualquier tipo de software en equipos remotos de
forma transparente para el usuario final, de manera que pueda seguir trabajando de forma
normal mientras nosotros estamos instalando una nueva aplicación de gestión o una actualización
del lector de documentos PDF, por ejemplo. De esta manera tendremos los equipos de nuestra
red correctamente actualizados sin necesidad de tener que realizar desplazamientos
innecesarios o en el caso de equipos que no respondan y tengamos que instalar desde cero,
evitar en envío de los equipos a las oficinas centrales.
Generalmente las instalaciones en dichos equipos se realizan a través de la red. Para ello los
equipos deben ser PXE que es una opción firmware que permite bootear o arrancar a los equipos
desde la red.. Este método de carga puede ser usado por enrutadores, estaciones de trabajo
sin disco y computadoes manejados centralmente (clientes ligeros de empresas, aulas,
bibliotecas...
El software inicial se carga desde un servidor en la red; para las redes del TCP/IP esto es
generalmente hecho usando TFTP. El servidor del cual se carga el software inicial es
generalmente encontrado por broadcasting o multicasting o una solicitud DHCP.
En nuestro primeras instalaciones desatendidas utilizaremos la creación de ISO para realizar las
primeras, en Windows tenemos la herramientas Windows LITE y en Linux tenemos la web
installinux.com escoges la distro de linux que quieres (hay 7) luego te da varias opciones y
después bajas el archivo ISO.
11. Implementación del fichero de respuestas
Antes de llevar a cabo las instalaciones desatendidas tenemos que mencionar un elemento
importante: el fichero de respuestas. Este fichero contiene aquellos datos o información que en
una situación habitual suele ser el usuario el que los introduzca durante la instalación de forma
manual vía teclado o vía ratón eligiendo determinadas opciones.
Hay varias formas de construirlos. La forma más cómoda es utilizar software de creación
instalaciones desatendidas. También pueden crearse manualmente en un archivo. En Windows
se denomina unattend.txt.
El problema del fichero de respuestas es que introduciría los mismos datos en todos los
equipos. Eso puede mejorar utilizando la herramientas sysprep.exe
56
Juan Carlos Pérez González
12. Interpretación, análise e elaboración de manuais de instalación de SO.
Este apartado se estudiará a través de las indicaciones de las prácticas propuestas.
13. Actualización de sistemas operativos
Las empresas de software, en concreto Microsoft y las distribucion de Linux, comerciales o no,
aconsejan la actualización periódica desde sus sitios Web para corregir errores o bugs
descubiertos (Microsoft los denomina con el eufemismo actualizaciones de seguridad) o también
añadir nuevas funcionalidades. De todas formas los errores o bugs son inherentes al desarrollo
del software ya que este es codificado por humanos y estos evidentemente se equivocan.
• En Windows Server 2012:
Panel de Control → Actualizaciones automáticas se verá la pantalla siguiente en la que se
aprecian:
– notificar antes de descargar
– descargar automáticamente y notificar
– descargar automáticamente en una determinada fecha y hora.
Si no quieres realizarlas automáticamente puede en el panel de inicio hacerlo de forma manual
Windows Update
• En Windows Server 2008:
Administrar Servidor → Panel de Control → Windows Update → Cambiar Configur. se verá
la pantalla siguiente que es autodescriptiva
57
Juan Carlos Pérez González
En Linux2 hay dos formas de hacerlo:
– línea de comandos con las órdenes como root (administrador)
localhost@servidorprueba# apt-get update && apt-get upgrade -y (o podemos usar aptitude)
Para automatizar podemos incluir estos comandos en un fichero bash y luego incluimos el mismo
en el crontab.
– entorno gráfico en Ubuntu por ejemplo
Sistema → Gestor de Actualizaciones
2 Usaremos Distribuciones Derivadas de Debian como Ubuntu o la propia Debian
58
Juan Carlos Pérez González
14. Ficheros de inicio de sistemas operativos.
Arranque arquitectura NT (Server). En las siguientes imágenes veremos como el sistema
Windows basado en la arquitectura NT inicia y carga el sistema
59
Juan Carlos Pérez González
60
Juan Carlos Pérez González
En el caso de GNULinux y a modo de resumen hay 6 etapas del proceso de arranque
61
Juan Carlos Pérez González
1. BIOS (Sistema Básico de Entrada y Salida)
• Realiza algunas revisiones de integridad al sistema, busca y carga el boot loader bien
floppy, cdromo o disco duro en este caso en la MBR.
2. MBR o Master Boot Recor
• Está localizado en el primer sector de un disco arrancable. Casi siempre /dev/hda, o
/dev/sda.
• El tamaño en bytes del MBR ronda los 512 o menos. Tiene 3 componentes: 1) Información
primaria del boot loader en sus primeros 446 bytes, 2) Información de la tabla de partición
en los siguientes 64 bytes, y 3) Revisión de validación del MBR en los últimos 2 bytes.
• Contiene información acerca de GRUB (o LILO en los sistemas antiguos).
3. GRUB ( Grand Unified Bootloader)
• Si tenemos varios kernels instalados en nuestro sistema, podemos seleccionar cuál de
ellos deseamos ejecutar. Si tenemos varios sistemas operativos instalados, casi siempre
GRUB muestra un menú por varios segundos, si no presionamos alguna tecla, este carga
la imagen del kernel establecida por defecto en el fichero de configuración de GRUB.
• El fichero de configuración de GRUB es /boot/grub/grub.conf o /boot/grub/grub.cfg
(/etc/grub.conf es un enlace a este). Contiene el kernel y la imagen initrd los cuales se
carga y ejecutan.
4. Kernel
• El Kernel monta el sistema de archivos raiz como lo especifica "root=" en el fichero de
configuración de GRUB.
• Ejecuta el programa /sbin/init. Como es el primer programa en ser ejecutado por el Kernel,
tiene el identificador de proceso (PID) número 1.
• initrd es utilizado por el kernel como un sistema de archivos raiz temporal hasta que el
kernel es cargado y el sistema de archivos real es montado. Además contiene
controladores necesarios compilados dentro de sí, lo que ayuda a accesar las particiones
de los discos y cualquier otro hardware.
5. Init
• Init consulta al fichero /etc/inittab (Debian, Ubuntu y distros derivadas este fichero no
existe porque utilizan algo llamado upstart) para decidir el runlevel a ejecutar.
• Init identifica el initlevel por defecto desde /etc/inittab y utiliza esto para cargar todos los
programas apropiados.
62
Juan Carlos Pérez González
• Podemos cambiar el runlevel por defecto a 0 o 6. Comúnmente el runlevel por defecto es 3
o 5.
6. Runlevel programs
• Cuando el sistema está arrancando, podemos ver los servicios iniciando. Por ejemplo:
"Starting sendmail .... OK". Estos son los programas del runlevel.
• Dependiendo de la configuración de init por defecto, el sistema ejecutará los programas
desde un de los siguientes directorios, según sea el caso:
• Bajo los directorios /etc/rc.d/rc*.d/, podemos ver programas cuyos nombres comienzan con
S y K.
• Los programas que comienzan con S (startup ) son usados durante el arraque.
• Los programas que comienzan con K son utilizados durante el apagado. K de "kill".
• Hay números justo después de las letras S y K en los nombres de los programas. Esos son
la secuencia numérica en la que son iniciados o terminados.
15. Registros del sistema
Nos centraremos en el registro de Windows. En la figura observamos las claves, que son
semejantes a directorios ya que contienen otras claves o carpetas y son las siguientes:
63
Juan Carlos Pérez González
• HKEY_CLASSES_ROOT: contiene configuraciones que afectan a todo el sistema. Si hay
múltiples usuarios registrados en el sistema, cualquier cambio en ésta Clave afectaría a
cada usuario. Sus configuraciones incluyen información acerca de los tipos de archivos y
la extensión de sus archivos. También contiene información acerca de OLE (Object
Linking and Embedding). Esto permite crear un objeto en un programa, como una gráfica
en Microsoft Excel y colocarla en otro programa como Microsoft Word.
• HKEY_CURRENT_USER: es más bien un icono que una Clave, tiene que ver con la
carpeta de la Clave USERS de quien esté usando la computadora. Contiene información
más detallada de la configuración del usuario actual.
• HKEY_LOCAL_MACHINE: mantiene un registro e información de todo lo que se haya
instalado en la computadora. Es una base de datos maestra con la información de cómo
usar cada programa o dispositivo y la configuración de cada componente. Contiene
la configuración completa de todo el sistema.
• HKEY_USERS: tiene la información acerca de cómo Windows y cada programa
individual del sistema está personalizado para cada usuario. Mantiene un registro de
absolutamente todo, desde el fondo de pantalla preferido hasta la página de inicio del
Explorador de Internet. La mayoría de la computadoras tienen un solo usuario para lo cual
sus configuraciones estarán en la carpeta default. Si por otra parte, hay varios usuarios
registrados en la computadora, cada uno de ellos tendrá su propia carpeta conteniendo
sus preferencias de configuración.
• HKEY_CURRENT_CONFIG: ésta Clave tiene que ver con la información de la Clave
MACHINE, en lo que tiene que ver con la configuración de pantalla (resolución, color, etc.),
también cuál de las impresoras instaladas es la impresora de inicio. Mantiene el registro
de la configuración actual.
Los tipos de datos son:
• REG_DWORD: es una doble palabra. Es un valor sencillo representado por una cadena de
1 a 8 dígitos visualizados en formato hexadecimal
• REG_SZ: cadenas de texto de longitud fija
• REG_EXPAND_SZ: como REG_SZ, excepto que contiene una o más variables que han
sido resueltas por un servicio del sistema operativo o por una aplicación (Un ejemplo de un
valor de este tipo es %SystemRoot%\system32, donde %SystemRoot% es el directorio de
instalación de Windows)
• REG_BINARY: cadena de dígitos binarios
• REG_MULTI_SZ: entrada de datos que está compuesta por cadenas de texto múltiple. Las
cadenas están separadas por comas o espacios
64
Juan Carlos Pérez González
• REG_FULL_RESOURCE_DESCRIPTOR: guarda información sobre los componentes HW
y sus controladores
16. Actualización y mantenimiento de controladores de dispositivos.
Un controlador es un programa el cual controla un dispositivo, así como una impresora, tarjeta
de video, tarjeta de sonido, etc. El teclado y el ratón por ejemplo son instalados automáticamente
porque estos controladores ya existen en Windows. Otros dispositivos como un modem o una
tarjeta de red y sobre todo tarjetas gráficas pueden requerir un controlador o un programa
específico del fabricante para poder controlar el dispositivo.
Es difícil encontrar un controlador cuando no sabes el nombre o modelo del dispositivo.
Teniendo uno de los dos, te facilita la búsqueda. Por ejemplo, si digitas SM56 en una página de
búsqueda así como Google, sale la compañía Motorola, cual ha fabricado este modem. Si no
tienes el modelo o nombre de la compañía, puedes fijarte en el dispositivo físicamente para ver si
encuentras información sobre el dispositivo.
Con esta información, podemos buscar en el Internet, o ir directamente a la página del fabricante
para descargar el controlador. Algunos dispositivos son integrados en la placa base y a veces no
es posible no ver un modelo. Puedes buscar información sobre la tarjeta madre y visitar la página
del fabricante. Finalmente también puedes instalar el dispositivo en una versión superior de SO o
bien en Linux para obtener información sobre el dispositivo.
En el Administrador de Dispositivos se pueden ver las propiedades del dispositivo, puedes ir a la
pestaña detalles y ver el Id. de instancia de dispositivo o Identificadores de hardware. Una
vez obtenida esa información vamos a buscar el fabricante de ese dispositivo en Internet.
65
Juan Carlos Pérez González
Los controladores pueden ser desde 1 solo archivo hasta cientos. Algunos traen su propio
instalador, cual se encarga de instalar el controlador y aplicaciones para controlar el dispositivo.
Los archivos de controladores son distribuidos con extensión .inf cuales contienen
información sobre el dispositivo y su uso. Cuando Windows da la opción de buscar el controlador
actualizado del dispositivo, lo primero que hace es buscar el archivo de información. Despues se
copiarán más archivos con extensiones .VXD, .SYS, .CAT y muchas extensiones más.
Para finalizar los controladores pueden ser actualizados si los fabricantes codifican versiones que
mejoran el rendimiento y funcionalidades del dispositivo. Suelen descargarse de Internet de la web
del fabricante.
66
Juan Carlos Pérez González
Referencias
• Wikipedia
• Apuntes Sistemas Operativos IES San Clemente
• Estructura y Tecnología de Computadores. Apuntes UNED
• Fundamentos y Arquitectura de Computadores Apuntes UPM
67
Recommended