Sistemas operativos

Informática. Computación. Software. Programación. Traductores. Compiladores. Ensamblador. Registros. Programa Debug. Procesos

  • Enviado por: Carlos Amaya
  • Idioma: castellano
  • País: México México
  • 111 páginas
publicidad
publicidad

UNIDAD 1

TRADUCTORES DE BAJO NIVEL

Introducción a los traductores.

Los traductores son un tipo de programas cuya función es convertir el código de un lenguaje en otro. Por ejemplo un compilador, que traduce código fuente en código objeto. Existen distintos tipos de traductores, entre ellos destacan:

  • Ensambladores

  • Preprocesadores

  • Intérpretes

La programación en lenguaje máquina es difícil, por ello se necesitan lenguajes que permitan simplificar este proceso. Los lenguajes de bajo nivel han sido diseñados para este fin.

Estos lenguajes son generalmente dependientes de la máquina, es decir, dependen de un conjunto de instrucciones específicas del ordenador. Un ejemplo de este tipo de lenguajes es el ensamblador. En él, las instrucciones se escriben en códigos alfabéticos conocidos como mnemotécnicos (generalmente, abreviaturas de palabras inglesas).

Las palabras mnemotécnicas son mucho más fáciles de recordar que las secuencias de ceros y unos.

Lenguaje ensamblador.

El lenguaje ensamblador es un tipo de lenguaje de bajo nivel utilizado para escribir programas de computadora, y constituye la representación más directa del código máquina específico para cada arquitectura de computadoras legible por un programador.

Fue usado ampliamente en el pasado para el desarrollo de software, pero actualmente sólo se utiliza en contadas ocasiones, especialmente cuando se requiere la manipulación directa del hardware o se pretenden rendimientos inusuales de los equipos.

Un ensamblador crea código objeto traduciendo instrucciones mnemónicas a códigos operativos, y resolviendo los nombres simbólicos para posiciones de memoria y otras entidades. El uso de referencias simbólicas es una característica básica de los ensambladores, evitando tediosos cálculos y direccionamiento manual luego de cada modificación del programa. La mayoría de los ensambladores también incluyen facilidades para crear macros, a fin de generar series de instrucciones cortas que se ejecutan en tiempo real, en lugar de utilizar subrutinas.

Los ensambladores son por lo general más fáciles de programar que los compiladores de lenguajes de alto nivel, y han estado disponibles desde la década de 1950. Los ensambladores modernos, especialmente para arquitecturas basadas en RISC, como por ejemplo MIPS, SPARC y PA-RISC optimizan las instrucciones para explotar al máximo la eficiencia de segmentación del CPU.

Los ensambladores de alto nivel proveen posibilidades de abstracción que incluyen:

  • Control avanzado de estructuras

  • Procedimientos de alto nivel, declaración de funciones.

  • Tipos de datos que incluyen estructuras, registros, uniones, clases y conjuntos.

  • Sofisticado procesamiento de macros.

Un programa escrito en lenguaje ensamblador consiste en una serie de instrucciones que corresponden al flujo de órdenes ejecutables que pueden ser cargadas en la memoria de una computadora. Por ejemplo, un procesador x86 puede ejecutar la siguiente instrucción binaria como se expresa en código maquina:

  • Binario: 10110000 01100001 (Hexadecimal: 0xb061)

La representación equivalente en ensamblador es más fácil de recordar:

  • mov al, 061h

Esta instrucción significa:

  • Mueva el valor hexadecimal 61 (97 decimal) al registro "al".

El mnemónico "mov" es un código de operación u "opcode", elegido por los diseñadores de la colección de instrucciones para abreviar "move" (mover). El opcode es seguido por una lista de argumentos o parámetros, completando una instrucción de ensamblador típica.

La transformación del lenguaje ensamblador en código máquina la realiza un programa ensamblador, y la traducción inversa la puede efectuar un desensamblador. A diferencia de los lenguajes de alto nivel, aquí hay usualmente una correspondencia 1 a 1 entre las sencillas instrucciones en ensamblador y el lenguaje máquina. Sin embargo, en algunos casos, un ensamblador puede proveer "pseudo instrucciones" que se expanden en un código de máquina más largo a fin de proveer la necesaria funcionalidad. Por ejemplo, para un código máquina condicional como "si X mayor o igual que", un ensamblador puede utilizar una pseudos instrucción al grupo "haga si menor que", y "si = 0" sobre el resultado de la condición anterior. Los ensambladores más completos también proveen un rico lenguaje de macros que se utiliza para generar código más complejo y secuencias de datos.

Cada arquitectura de computadoras tiene su propio lenguaje de máquina, y en consecuencia su propio lenguaje ensamblador. Las computadoras difieren en el tipo y número de operaciones que soportan; también pueden tener diferente cantidad de registros, y distinta representación de los tipos de datos en memoria. Aunque la mayoría de las computadoras son capaces de cumplir esencialmente las mismas funciones, la forma en que lo hacen difiere, y los respectivos lenguajes ensambladores reflejan tal diferencia.

Pueden existir múltiples conjuntos de mnemónicos o sintaxis de ensamblador para un mismo conjunto de instrucciones, instanciados típicamente en diferentes programas ensamblador. En estos casos, la alternativa más popular es la provista por los fabricantes, y usada en los manuales del programa

El proceso de evolución trajo consigo algunas desventajas, que ahora veremos como las ventajas de usar el Lenguaje Ensamblador, respecto a un lenguaje de alto nivel:

  • Velocidad

  • Eficiencia de tamaño

  • Flexibilidad

Por otro lado, al ser un lenguaje más primitivo, el Ensamblador tiene ciertas desventajas respecto a los lenguajes de alto nivel:

  • Tiempo de programación

  • Programas fuente grandes

  • Peligro de afectar recursos inesperadamente

  • Falta de portabilidad

Velocidad

El proceso de traducción que realizan los intérpretes, implica un proceso de cómputo adicional al que el programador quiere realizar. Por ello, nos encontraremos con que un intérprete es siempre más lento que realizar la misma acción en Lenguaje Ensamblador, simplemente porque tiene el costo adicional de estar traduciendo el programa, cada vez que lo ejecutamos.

De ahí nacieron los compiladores, que son mucho más rápidos que los intérpretes, pues hacen la traducción una vez y dejan el código objeto, que ya es Lenguaje de Máquina, y se puede ejecutar muy rápidamente. Aunque el proceso de traducción es más complejo y costoso que el de ensamblar un programa, normalmente podemos despreciarlo, contra las ventajas de codificar el programa más rápidamente.

Sin embargo, la mayor parte de las veces, el código generado por un compilador es menos eficiente que el código equivalente que un programador escribiría. La razón es que el compilador no tiene tanta inteligencia, y requiere ser capaz de crear código genérico, que sirva tanto para un programa como para otro; en cambio, un programador humano puede aprovechar las características específicas del problema, reduciendo la generalidad pero al mismo tiempo, no desperdicia ninguna instrucción, no hace ningún proceso que no sea necesario.

Para darnos una idea, en una PC, y suponiendo que todos son buenos programadores, un programa para ordenar una lista tardará cerca de 20 veces más en Visual Basic (un intérprete), y 2 veces más en C (un compilador), que el equivalente en Ensamblador.

Por ello, cuando es crítica la velocidad del programa, Ensamblador se vuelve un candidato lógico como lenguaje.

Ahora bien, esto no es un absoluto; un programa bien hecho en C puede ser muchas veces más rápido que un programa mal hecho en Ensamblador; sigue siendo sumamente importante la elección apropiada de algoritmos y estructuras de datos. Por ello, se recomienda buscar optimizar primero estos aspectos, en el lenguaje que se desee, y solamente usar Ensamblador cuando se requiere más optimización y no se puede lograr por estos medios.

Tamaño

Por las mismas razones que vimos en el aspecto de velocidad, los compiladores e intérpretes generan más código máquina del necesario; por ello, el programa ejecutable crece. Así, cuando es importante reducir el tamaño del ejecutable, mejorando el uso de la memoria y teniendo también beneficios en velocidad, puede convenir usar el lenguaje Ensamblador. Entre los programas que es crítico el uso mínimo de memoria, tenemos a los virus y manejadores de dispositivos (drivers). Muchos de ellos, por supuesto, están escritos en lenguaje Ensamblador.

Flexibilidad

Las razones anteriores son cuestión de grado: podemos hacer las cosas en otro lenguaje, pero queremos hacerlas más eficientemente. Pero todos los lenguajes de alto nivel tienen limitantes en el control; al hacer abstracciones, limitan su propia capacidad. Es decir, existen tareas que la máquina puede hacer, pero que un lenguaje de alto nivel no permite. Por ejemplo, en Visual Basic no es posible cambiar la resolución del monitor a medio programa; es una limitante, impuesta por la abstracción del GUI Windows. En cambio, en ensamblador es sumamente sencillo, pues tenemos el acceso directo al hardware del monitor.

Tiempo de programación

Al ser de bajo nivel, el Lenguaje Ensamblador requiere más instrucciones para realizar el mismo proceso, en comparación con un lenguaje de alto nivel. Por otro lado, requiere de más cuidado por parte del programador, pues es propenso a que los errores de lógica se reflejen más fuertemente en la ejecución.

Por todo esto, es más lento el desarrollo de programas comparables en Lenguaje Ensamblador que en un lenguaje de alto nivel, pues el programador goza de una menor abstracción.

Programas fuente grandes

Por las mismas razones que aumenta el tiempo, crecen los programas fuentes; simplemente, requerimos más instrucciones primitivas para describir procesos equivalentes. Esto es una desventaja porque dificulta el mantenimiento de los programas, y nuevamente reduce la productividad de los programadores.

Peligro de afectar recursos inesperadamente

Tenemos la ventaja de que todo lo que se puede hacer en la máquina, se puede hacer con el Lenguaje Ensamblador (flexibilidad). El problema es que todo error que podamos cometer, o todo riesgo que podamos tener, podemos tenerlo también en este Lenguaje. Dicho de otra forma, tener mucho poder es útil pero también es peligroso.

En la vida práctica, afortunadamente no ocurre mucho; sin embargo, al programar en este lenguaje verán que es mucho más común que la máquina se "cuelgue", "bloquee" o "se le vaya el avión"; y que se reinicialize. ¿Por qué?, porque con este lenguaje es perfectamente posible (y sencillo) realizar secuencias de instrucciones inválidas, que normalmente no aparecen al usar un lenguaje de alto nivel.

En ciertos casos extremos, puede llegarse a sobrescribir información del CMOS de la máquina (no he visto efectos más riesgosos); pero, si no la conservamos, esto puede causar que dejemos de "ver" el disco duro, junto con toda su información.

Falta de portabilidad

Como ya se mencionó, existe un lenguaje ensamblador para cada máquina; por ello, evidentemente no es una selección apropiada de lenguaje cuando deseamos codificar en una máquina y luego llevar los programas a otros sistemas operativos o modelos de computadoras. Si bien esto es un problema general a todos los lenguajes, es mucho más notorio en ensamblador: yo puedo reutilizar un 90% o más del código que desarrollo en "C", en una PC, al llevarlo a una RS/6000 con UNIX, y lo mismo si después lo llevo a una Macintosh, siempre y cuando esté bien hecho y siga los estándares de "C", y los principios de la programación estructurada. En cambio, si escribimos el programa en Ensamblador de la PC, por bien que lo desarrollemos y muchos estándares que sigamos, tendremos prácticamente que reescribir el 100% del código al llevarlo a UNIX, y otra vez lo mismo al llevarlo a Mac

Modos de direccionamiento

Se les llama modos de direccionamiento a las distintas formas de combinar los operadores según el acceso que se hace a memoria.

Dicho de otra manera, un modo de direccionamiento será una forma de parámetro para las instrucciones. Una instrucción que lleve un parámetro, por lo tanto, usará un modo de direccionamiento, que dependerá de cómo direccionará (accesará) al parámetro; una instrucción de dos parámetros, combinará dos modos de direccionamiento.

  • Modo registro

Usa solamente registros como operadores

Es el más rápido, pues minimiza los recursos necesarios (toda la información fluye dentro del EU del CPU).

  • Modo inmediato

Tiene dos operandos: un registro y una constante que se usa por su valor.

El valor constante no se tiene que buscar en memoria, pues ya se obtuvo al hacer el "fetch" de la instrucción.

Por tanto, es rápido aunque no tanto como el modo registro; requiere ir al BIU por el dato.

  • Modo directo

Uno de los operandos involucra una localidad específica de memoria

El valor constante se tiene que buscar en memoria, en la localidad especificada.

Es más lento que los anteriores, pero es el más rápido para ir a memoria, pues ya "sabe" la localidad, la toma de la instrucción y no la tiene que calcular.

  • Modo indirecto

Se usan los registros SI, DI como apuntadores

El operando indica una localidad de memoria, cuya dirección (sólo la parte desplazamiento) está en SI o DI.

Es más lento que los anteriores, pues tiene que "calcular" la localidad.

  • Modo indexado de base

Formato:

[
BX o BP
+ SI o DI (opcionales)
+ constante (opcional)
]

BX o BP indica una localidad base de la memoria

A partir de BX o BP, se puede tener un desplazamiento variable y uno constante

La diferencia es el segmento sobre el que trabajan por defecto:

BX por defecto en el segmento de datos

BP por defecto en el segmento de pila.

CPU. Componentes principales

La unidad central de proceso (CPU), o algunas veces simplemente procesador, es el componente en un computador digital que interpreta las instrucciones y procesa los datos contenidos en los programas de computador. Los CPU proporcionan la característica fundamental del computador digital, la programabilidad, y son uno de los componentes necesarios encontrados en los computadores de cualquier tiempo, junto con el almacenamiento primario y las facilidades de entrada/salida. Es conocido como microprocesador al CPU que es manufacturado con circuitos integrados. Desde mediados de los años 1970, los microprocesadores de un solo chip han reemplazado casi totalmente todos los otros tipos de CPU, y hoy en día, el término "CPU" es aplicado usualmente a algún tipo de microprocesador.

La frase "unidad central de proceso" es, en términos generales, una descripción de una cierta clase de máquinas de lógica que pueden ejecutar complejos programas de computador. Esta amplia definición puede fácilmente ser aplicada a muchos de los primeros computadores que existieron mucho antes que el término "CPU" estuviera en amplio uso. Sin embargo, el término sí mismo y su acrónimo han estado en uso en la industria del computador por lo menos desde el principio de los años 1960 . La forma, el diseño y la implementación de los CPU ha cambiado dramáticamente desde los primeros ejemplos, pero su operación fundamental ha permanecido bastante similar.

Los primeros CPU fueron diseñados a la medida como parte de un computador más grande, generalmente un computador único en su especie. Sin embargo, este costoso método de diseñar los CPU a la medida, para una aplicación particular, ha desaparecido en gran parte y se ha sustituido por el desarrollo de clases de procesadores baratos y estandardizados adaptados para uno o muchos propósitos. Esta tendencia de estandarización comenzó generalmente en la era de los transistores discretos, mainframes, y minicomputadores, y fue acelerada rápidamente con la popularización del circuito integrado (IC). El IC ha permitido que sean diseñados y fabricados CPUs cada vez más complejos en espacios muy pequeños (en la orden de milímetros). Tanto la miniaturización como la estandarización de los CPU han aumentado la presencia de estos dispositivos digitales en la vida moderna mucho más allá de las aplicaciones limitadas de máquinas de computación dedicadas. Los microprocesadores modernos aparecen en todo, desde automóviles, televisores, neveras, calculadoras, aviones, hasta teléfonos celulares o juguetes para niños.

La unidad central de proceso reside en la placa base o placa madre; una placa de material plástico bastante grande, aunque cada vez mas pequeña, que suele estar situada horizontalmente en la parte inferior de la carcasa de los ordenadores de sobremesa, o verticalmente en el fondo de los de torre. Para verla, es posible que tengamos que desmontar las tarjetas de expansión. Por el lado superior, la placa base contiene diversos componentes electrónicos: circuitos integrados en pastillas ("chips"), condensadores, interruptores, conectores, etc.

La parte inferior de la placa base puede llevar algun componente pero principalmente lleva un circuito impreso, es decir, una red de conexiones eléctricas formadas por delgadas líneas de cobre terminadas por orificios milimetricos. Los componentes situados en uno de los lados de la placa tienen patitas metálicas que atraviesan estos orificios y se conectan soldandolos en la terminación de las líneas de cobre. Realmente en una placa base de un PC hay multiples capas de conexionado generando un esquema de interconexiones relativamente complejo.

Los elementos que podemos distinguir en la  placa base son:

  • El microprocesador : Generalmente es el "chip" más grande de todos, el que realiza la mayor parte de los cálculos y operaciones del ordenador. Sus patas están introducidas por simple presión en un zócalo especial, y a veces es posible sustituirlo por uno más avanzado. En los ordenadores actuales es facil identificarlo porque se encuentra debajo de un ventilador o de un radiador metalico. Esto es debido a la necesidad de una refrigeración para que el microprocesador no se caliente y comience a funcionar fuera del rango de temperatura para lo que se ha diseñado. En la figura anterior es necesario quitar el ventilador y un radiador  para ver el micro. La memoria principal: Esta parte de la memoria se encuentra directamente situada sobre la placa base, pero generalmente es posible ampliarla. En los ordenadores antiguos era preciso insertar los "chips" uno por uno, con el peligro de que se doblaran las patitas. En los modernos, se utilizan bancos de memoria SIP o SIMM, pequeñas tarjetas con los "chips" ya montados que se conectan en zócalos especiales situados sobre la placa base. Las tarjetas SIP tienen patitas independientes, mientras que las SIMM llevan las conexiones sobre una barrita de plástico. Si desea añadir memoria a su ordenador, tenga cuidado de adquirirla del tipo adecuado: si la placa base tiene conectores SIMM, sólo deberá utilizar este tipo de memoria.

  • La memoria caché de segundo nivel (L2) es una memoria muy rápida llamada SRAM (RAM estática) que se coloca entre la  memoria principal y la CPU y que almacena los últimos datos transferidos.   El procesador, como en los casos de caché de disco, primero consulta a dicha memoria intermedia para ver si la información  que busca está allí, en caso afirmativo podemos trabajar con ella sin tener que esperar a la más lenta memoria principal. Dicha memoria solo se usa como caché debido a que su fabricación es muy cara y se emplea en módulos de poca capacidad como 256 ó 512 Kb. No hay que confundir nunca la memoria de segundo nivel con la de primer nivel (L1) que esta  integrada dentro del procesador, y suele ser de menor capacidad 16 ó 32K, aunque evidentemente dispone de un acceso mucho más rápido por parte de la CPU.

  • En micropocesadores como el Pentium II se ha diseñado un encapsulado (SEC)  especial para conectar directamente la cache externa de nivel 2 al procesador, como puede verse en la siguiente figura.

  • Segun se ha ido incementando la densidad de integración ha sido posible incluir en le procesador; como en el caso del pentium III;  caches de nivel 2 de tamños de hasta 512 Kb.

Otros componentes:
 

  • El bus de direcciones y datos: Son conexiones que transmiten información de una parte a otra de la placa. La evolución de los procesadores ha implicado el uso de buses con tamaños crecientes de 8 bits, de 16 bits y de 32 bits. Existen estándares diferentes: ISA, EISA,PCI  y Microcanal. La más utilizada hoy día es bus PCI.
     

  • Conectores de tarjetas de expansión: Una placa base suele contener cierto número de conectores o ranuras que permiten añadir tarjetas de expansión para realizar operaciones especiales, como el control de la pantalla, del disco duro o de la disquetera, generar sonido, etc. Los conectores comunican eléctricamente dichas tarjetas con el bus de datos, y serán más cortas o más largas según el número de bits que transmitan. Al conectar una tarjeta, hay que tener cuidado de introducirla en un conector adecuado.

  • Conectores de dispositivos externos: A veces, los conectores del ratón y del teclado están situados directamente sobre la placa base.

  • El reloj: Es un circuito oscilador basado en un crital de cuarzo que genera una señal periodica a un frecuencia precisa.

  • La batería: Muchos ordenadores llevan una pequeña batería en la placa base, que proporciona al ordenador la energía suficiente para no perder la configuración del sistema y mantener el reloj en marcha, incluso cuando está apagado. Al cabo de algunos años, la batería se agota y es preciso sustituirla.

Registros del microprocesador.

Los registros del procesador se emplean para controlar instrucciones en ejecución, manejar direccionamiento de memoria y proporcionar capacidad aritmética. Los registros son espacios físicos dentro del microprocesador con capacidad de 4 bits hasta 64 bits dependiendo del microprocesador que se emplee. Los registros son direccionables por medio de una viñeta, que es una dirección de memoria. Los bits, por conveniencia, se numeran de derecha a izquierda (15,14,13…. 3,2,1,0), los registros están divididos en seis grupos los cuales tienen un fin especifico. Los registros se dividen en:

  • Registros de segmento

  • Registros de apuntadores de instrucciones

  • Registros apuntadores

  • Registros de propósitos generales

  • Registro índice

  • Registro de bandera.

Registros de segmento.


Un registro de segmento se utiliza para alinear en un limite de párrafo o dicho de otra forma codifica la dirección de inicio de cada segmento y su dirección en un registro de segmento supone cuatro bits 0 a su derecha. Un registro de segmento tiene 16 bits de longitud y facilita un área de memoria para direccionamientos conocidos como el segmento actual. Los registros de segmento son:

  • Registro CS

  • Registro DS

  • Registro SS

  • Registro ES

  • Registro FS y GS

Registro CS.

El DOS almacena la dirección inicial del segmento de código de un programa en el registro CS. Esta dirección de segmento, mas un valor de desplazamiento en el registro de apuntado de instrucción (IP), indica la dirección de una instrucción que es buscada para sí ejecución. Para propósito de programación normal, no e necesita referenciar el registro CS.

Registro DS.

La dirección inicial de un segmento de datos de programa es almacenada en el registro DS. En términos sencillos, esta dirección, mas un valor de desplazamiento en una instrucción, genera una referencia a la localidad de un bytes especifico en el segmento de datos.

Registro SS.

El registro SS permite la colocación en memoria de una pila, para almacenamiento temporal de direcciones y datos. El DOS almacena la dirección de inicio del segmento de pila de un programa en el registro SS. Esta dirección de segmento, más un valor de desplazamiento en el registro del apuntador de la pila (SP), indica la palabra actual en la pila que está siendo direccionada. Para propósitos de programación normal, no se necesita referenciar el registro SS.

Registro ES

Algunas operaciones con cadenas de caracteres (datos de caracteres) utilizan el registro esta de segmento para manejar el direccionamiento de memoria. En este contexto, el registro ES esta asociado con el registro DI (índice).Un programa que requiere el uso del registro ES puede inicializarlo con una dirección apropiada.

Registros FS y GS.


Son registros extra de segmento en los procesadores 80386y posteriores a estos procesadores.

'Sistemas operativos'

Registro Apuntador de instrucciones.

El registro apuntador de instrucciones (IP) de 16 bits contiene el desplazamiento de dirección de la siguiente instrucción que se ejecuta.


El registro IP esta asociado con el registro CS en el sentido de que el IP indica la instrucción actual dentro del segmento de código que se esta ejecutando actualmente.

En el ejemplo siguiente, el registro CS contiene 25A4[0]H y el IP contiene 412H. Para encontrar la siguiente instrucción que será ejecutada el procesados combina las direcciones en el CS y el IP así: Segmento de dirección en el registro CS: 25A40H Desplazamiento de dirección en el registro IP: + 412H Dirección de la siguiente instrucción: 25E52H

Registros apuntadores.

Los registros apuntadores están asociados con el registro SS y permiten al procesador accesar datos en el segmento de pila los registros apuntadores son dos:

  • El registro SP

  • El registro BP

Registro SP.

El apuntador de pila IP de 16 bits esta asociado con el registro SS y proporciona un valor de desplazamiento que se refiere a la palabra actual que esta siendo procesada en la pila.
El ejemplo siguiente el registro SS contiene la dirección de segmento 27B3[0]H y el SP el desplazamiento 312H Para encontrar la palabra actual que esta siendo procesada en la pila el microprocesador combina las direcciones en el SS y el PP:
Dirección de segmento en el registro SS: 27B30H Desplazamiento en el registro SP: + 312H Dirección en la Pila: 27E42H

Registro BP.

El registro BP de 16 bits facilita la referencia de parámetros, los cuales son datos y direcciones

transmitidos vía lapida.

Registros de propósitos generales.


Los registros de propósitos generales AX, BX, CX y DX son los caballos de batalla o las herramientas del sistema. Son los únicos en el sentido de que se puede direccionarlos como una palabra o como una parte de un byte. El ultimo byte de la izquierda es la parte "alta", y el ultimo byte de la derecha es la parte "baja" por ejemplo, el registro CX consta de una parte CH (alta) y una parte CL (baja), y usted puede referirse a cualquier parte por si nombre. Ñas instrucciones siguientes mueven ceros a los registros CX, CH y CL respectivamente.
Mov CX,00
Mov CH,00
Mov CL, 00


Los procesadores 80386 y posteriores permiten el uso de todos registros de propósito general, mas versiones de 32 bits; EAX, EBX y EDCX.

Registros AX.

El registro AX, el acumulador principal, es utilizado para operaciones que implican entrada/salida y la mayor parte de la aritmética. Por ejemplo, las instrucciones para multiplicar, dividir y traducir suponen el uso del AX. También, algunas operaciones generan código más eficientes si se refiere al AX en lugar de los otros registros.

Registro BX.

El BX es conocido como el registro base ya que es el único registro de propósitos generales que pueden ser unos índices para direccionamiento indexado. También es común emplear al BX para cálculos.

Registro CX.

El CX es conocido como el registro contador. Puede contener un valor para controlar el número de veces que un ciclo se repite o un valor para corrimiento de bits, hacia la derecha o hacia la izquierda. El CX también es usado para muchos cálculos.

Registro DX.

El DX es conocido como el registro de datos. Algunas operaciones de entrada/salida requieren su uso, y las operaciones de multiplicación y división con cifras grandes suponen al DX y al AX trabajando juntos. Puede usar los registros de propósitos para suma y resta de cifras de 8, 16, 32 bits.

Registro índice.

Los registros SI y DI están disponibles para direccionamientos indexados y para sumas y restas. Que son la operaciones de punta.

Registro SI.

El registro índice de 16 bits es requerido por algunas operaciones con cadenas (de caracteres). En este contexto, el SI está asociado con el registro DS. Los procesadores 80386 y posteriores permiten el uso de un registro ampliado a 32 bits, el ESI.

Registro DI.

El registro índice destino también es requerido por algunas operaciones con cadenas de caracteres. En este contexto, el Di está asociado con el registro ES. Los procesadores 80386 y posteriores permiten el uso de un registro ampliado a 32 bits, el EDI.

Registro de bandera.

Los registros de banderas sirven parar indicar el estado actual de la maquina y el resultado del procesamiento, Cuando algunas instrucciones piden comparaciones o cálculos aritméticos cambian el estado de las banderas. Las banderas están en el registro de banderas en las siguientes posiciones:
bits 15 14 13 12 11 10 9 8 7 6 5
4 3 2 1

Bandera
Las banderas mas comunes son las siguientes:
OF (Over flow flag, desbordamiento).
Indica el desbordamiento de un bit de orden alto (mas a la izquierda) después de una operación aritmética.
DF (Direction flag, Direccion).
Designa la dirección hacia la izquierda o hacia la derecha para mover o comparar cadenas de caracteres.
IF (Interruption flag, Interrupcion).
Indica que una interrupción externa, como la entrada desde el teclado sea procesada o ignorada.
TF (Trap flag, Trampa).
Examina el efecto de una instrucción sobre los registros y la memoria. Los programas depuradores como DEBUG, activan esta bandera de manera que pueda avanzar en la ejecución de una sola interrupción a un tiempo.
SF (Sign flag, Signo).
Contiene el signo resultante de una operación aritmética (0=positivo y 1= negativo).
ZF (Zero flag, Zero).
Indica el resultado de una operación aritmética o de comparación (0= resultado diferente de cero y 1=resultado igual a cero).
AF (Auxiliary carry flag, Acarreo auxiliar).
Contiene un acarreo externo del bit 3 en un dato de 8 bits, para aritmética especializada
PF (Parity flag, Paridad).
Indica paridad par o impar de una operación en datos de ocho bits de bajo orden (mas a la derecha).
CF (Carry flag, Acarreo).
Contiene el acarreo de orden mas alto (mas a la izquierda) después de una operación aritmética; también lleva el contenido del ultimo bit en una operación de corrimiento o rotación.

Memoria RAM

RAM es el acrónimo inglés de Random Access Memory (memoria de acceso aleatorio). Se trata de una memoria de semiconductor en la que se puede tanto leer como escribir información. Es una memoria volátil, es decir, pierde su contenido al desconectar la energía eléctrica. Se utiliza normalmente como memoria temporal para almacenar resultados intermedios y datos similares no permanentes. Se dicen "de acceso aleatorio" porque los diferentes accesos son independientes entre sí. Por ejemplo, si un disco rígido debe hacer dos accesos consecutivos a sectores alejados físicamente entre sí, se pierde un tiempo en mover la cabeza hasta la pista deseada (o esperar que el sector pase por debajo, si ambos están en la misma pista), tiempo que no se pierde en la RAM.

Su denominación surge en contraposición a las denominadas memorias de acceso secuencial. Debido a que en los comienzos de la computación las memorias principales (o primarias) de los computadores eran siempre de tipo RAM y las memorias secundarias (o masivas) eran de acceso secuencial (cintas o tarjetas perforadas), es frecuente que se hable de memoria RAM para hacer referencia a la memoria principal de un computador.

En estas memorias se accede a cada celda (generalmente se direcciona a nivel de bytes) mediante un cableado interno, es decir, cada byte tiene un camino prefijado para entrar y salir, a diferencia de otros tipos de almacenamiento, en las que hay una cabeza lectograbadora que tiene que ubicarse en la posición deseada antes de leer el dato deseado.

Las RAMs se dividen en estáticas y dinámicas. Una memoria RAM estática mantiene su contenido inalterado mientras esté alimentada. La información contenida en una memoria RAM dinámica se degrada con el tiempo, llegando ésta a desaparecer, a pesar de estar alimentada. Para evitarlo hay que restaurar la información contenida en sus celdas a intervalos regulares, operación denominada refresco.

Las memorias se agrupan en módulos, que se conectan a la placa base del computador. Según los tipos de conectores que lleven los módulos, se clasifican en Módulos SIMM (Single In-line Memory Module), con 30 ó 72 contactos, módulos DIMM (Dual In-line Memory Module), con 168 contactos y módulos RIMM (RAMBUS In-line Memory Module) con 184 contactos.

Memoria ROM

ROM es el acrónimo de Read-Only Memory (memoria de sólo lectura). Es una memoria de semiconductor no destructible, es decir, que no se puede escribir sobre ella, y que conserva intacta la información almacenada, incluso en el caso de interrupción de corriente (memoria no volátil). La ROM suele almacenar la configuración del sistema o el programa de arranque del ordenador.

La memoria de sólo lectura o ROM es utilizada como medio de almacenamiento de datos en los ordenadores. Debido a que no se puede escribir fácilmente, su uso principal reside en la distribución de programas que están estrechamente ligados al soporte físico del ordenador, y que seguramente no necesitarán actualización. Por ejemplo, una tarjeta gráfica puede realizar algunas funciones básicas a través de los programas contenidos en la ROM.

Hay una tendencia a poner cada vez menos programas en la estática ROM, y más en los discos, haciendo los cambios mucho más fáciles. Los ordenadores domésticos a comienzos de los 80 venían con todo su sistema operativo en ROM. No había otra alternativa razonable ya que las unidades de disco eran generalmente opcionales. La actualización a una nueva versión significa usar un soldador o un grupo de interruptores DIP y reemplazar el viejo chip de ROM por uno nuevo. En el año 2000 los sistemas operativos en general ya no van en ROM. Todavía los ordenadores pueden dejar algunos de sus programas en memoria ROM, pero incluso en este caso, es más frecuente que vaya en memoria flash. Los teléfonos móviles y los asistentes personales digitales (PDA) suelen tener programas en memoria ROM (o por lo menos en memoria flash).

Algunas de las consolas de videojuegos que utilizan programas basados en la memoria ROM son la Super Nintendo, la Nintendo 64, la Mega Drive o la Game Boy. Estas memorias ROM, pegadas a cajas de plástico aptas para ser utilizadas e introducidas repetidas veces, son conocidas como cartuchos. Por extensión la palabra ROM puede referirse también a un archivo de datos que contenga una imagen del programa que se distribuye normalmente en memoria ROM, como una copia de un cartucho de videojuego.

Una razón de que todavía se utilice la memoria ROM para almacenar datos es la velocidad ya que los discos son más lentos. Aún más importante, no se puede leer un programa que es necesario para ejecutar un disco desde el propio disco. Por lo tanto, la BIOS, o el sistema de arranque oportuno del ordenador normalmente se encuentran en una memoria ROM.

La memoria RAM normalmente es más rápida de leer que la mayoría de las memorias ROM, por lo tanto el contenido ROM se suele trasvasar normalmente a la memoria RAM cuando se utiliza.

Además de los chips clásicos de memoria ROM Programables por máscara, descritos arriba, hay ROMs llamadas de "sobre todo lectura" (del inglés, Read-Mostly Memory). Ésta puede ser escrita durante su realización, pero además se puede cambiar su contenido después. Algunos ejemplos:

  • Memoria PROM

  • Memoria EPROM

  • Memoria EEPROM

  • Memoria flash

Interrupciones y clasificaciones.

Interrupción (también conocida como interrupción hardware) es una señal recibida por el procesador de un ordenador, indicando que debe "interrumpir" el curso de ejecución actual y pasar a ejecutar código específico para tratar esta situación

Las interrupciones surgen de las necesidades que tienen los dispositivos periféricos de enviar información al procesador principal de un sistema de computación. La primera técnica que se empleó fue que el propio procesador se encargara de sondear (polling) el dispositivo cada cierto tiempo para averiguar si tenía pendiente alguna comunicación para él. Este método presentaba el inconveniente de ser muy ineficiente, ya que el procesador constantemente consumía tiempo en realizar todas las instrucciones de sondeo.

El mecanismo de interrupciones fue la solución que permitió al procesador desentenderse de esta problemática, y delegar en el dispositivo la responsabilidad de comunicarse con el procesador cuando lo necesitaba. El procesador, en este caso, no sondea a ningún dispositivo, sino que queda a la espera de que estos le avisen (le "interrumpan") cuando tengan algo que comunicarle (ya sea un evento, una transferencia de información, una condición de error, etc.).

Funcionamiento del mecanismo de interrupciones

Cada dispositivo que desea comunicarse con el procesador por interrupciones debe tener asignada una línea única capaz de avisar a éste de que le requiere para una operación. Esta línea es la llamada IRQ ("Interrupt ReQuest", petición de interrupción).

Las IRQ son líneas que llegan al controlador de interrupciones, un componente hardware dedicado a la gestión de las interrupciones, y que puede estar integrado en el procesador principal o ser un circuito separado conectado al procesador principal. El controlador de interrupciones debe ser capaz de habilitar o inhibir líneas de interrupción (operación llamada comúnmente enmascarar por la utilización de una máscara), y establecer prioridades entre las distintas interrupciones habilitadas. Cuando varias líneas de petición de interrupción se activan a la vez, el controlador de interrupciones utilizará estas prioridades para escoger la interrupción sobre la que informará al procesador principal. Sin embargo hay interrupciones que no se pueden enmascarar o deshabilitar, las conocidas como interrupciones no enmascarables o NMI.

Un procesador principal (sin controlador de interrupciones integrado) suele tener una única línea de interrupción llamada habitualmente INT. Esta línea es activada por el controlador de interrupciones cuando tiene una interrupción que servir. Al activarse esta línea, el procesador consulta los registros del controlador de interrupciones para averiguar qué IRQ es la que ha de atender. A partir del número de IRQ busca en el vector de interrupciones qué rutina debe llamar para atender una petición del dispositivo asociado a dicha IRQ.

Las rutinas de interrupción generalmente toman un pequeño tiempo de ejecución y la mayoría no pueden ser interrumpidas cuando se están atendiendo, porque al entrar en ellas se almacena el estado de los registros en una pila y si se interrumpen muchas veces, la pila se puede desbordar.

Clasificación de interrupciones:

La BIOS emplea un cierto rango de interrupciones, cada una encargada de una tarea específica:

     INT 10h:     Servicios de Vídeo (texto y gráficos).
     INT 11h:     Informe sobre la configuración del equipo.
     INT 12h:     Informe sobre el tamaño de la memoria convencional.
     INT 13h:     Servicios de disco (muy elementales: pistas, sectores, etc.).
     INT 14h:     Comunicaciones en serie.
     INT 15h:     Funciones casette (PC) y servicios especiales del sistema (AT).
     INT 16h:     Servicios de teclado.
     INT 17h:     Servicios de impresora.
     INT 18h:     Llamar a la ROM del BASIC (sólo máquinas IBM).
     INT 19h:     Reinicialización del sistema.
     INT 1Ah:     Servicios horarios.
     INT 1Fh:     Apunta a la tabla de los caracteres ASCII 128-255 (8x8 puntos).

La mayoría de las interrupciones se invocan solicitando una función determinada (que se indica en el registro AH al llamar) y se limitan a devolver un resultado en ciertos registros, realizando la tarea solicitada. En general, sólo resultan modificados los registros que devuelven algo, aunque BP es corrompido en los servicios de vídeo de las máquinas más obsoletas.

Programa Debug, comandos principales.

DEBUG.EXE es un ejecutable que, hasta 2001, acompañó a todas las versiones de MS-DOS, a partir de la  2.0, y de Windows.  Es sin duda un programa antiguo pero de enorme potencial didáctico para el principiante.  En adelante nos referiremos a él como debug simplemente.

Se trata de una utilidad interactiva de exploración de bajo nivel, pero que también puede utilizarse para ciertas funciones. Por ejemplo, como un tosco traductor de sentencias ensamblador a lenguaje máquina.  Como todos los programas de su tipo, debe utilizarse con cierto cuidado.  En especial si utiliza el comando W [4] (se puede borrar todo un disco duro con un simple comando erróneo).  Para utilizarlo basta invocarlo desde MS-DOS o desde una ventana DOS de Windows.  Aunque en este último caso algunas de sus funcionalidades más interesantes nos estarán vetadas.

Una vez que el programa está en ejecución, el indicador ("prompt") es un guión "-", indicando que el "Shell" espera recibir órdenes.  Para salir basta pulsar una Q.  Como muchos programas de su género, sus comandos empiezan por una letra o combinación de ellas (pueden usarse indistintamente mayúsculas o minúsculas) y ciertos parámetros opcionales (no es imprescindible separar la letra de opción de los parámetros opcionales que siguen).  La opción más sencilla es la interrogación ?, cuyo resultado es una lista resumida de las opciones disponibles:

ensamblar     A [dirección]
comparar      C dirección de intervalo
volcar        D [intervalo]
escribir      E dirección [lista de valores]
llenar        F lista de intervalos
ir            G [=dirección] [direcciones]
hex           H valor1 valor2
entrada       I puerto
cargar        L [dirección] [unidad] [primer_sector] [número]
mover         M dirección de intervalo
nombre        N [nombre_ruta] [lista_argumentos]
salida        O byte de puerto
proceder      P [=dirección] [número]
salir         Q
registrar     R [registrar]
buscar        S lista de intervalos
seguimiento   T [=dirección] [valor]
desensamblar  U [intervalo]
escribir      W [dirección] [unidad] [primer_sector] [número]
asignar memoria expandida              XA [#páginas]
desasignar memoria expandida           XD [identificador]
asignar páginas de memoria expandida   XM [Lpágina] [Ppágina] [identificador]
mostrar estado de la memoria expandida XS

La mayoría de los comandos de debug ejecutan una acción y vuelven al indicador del shell, pero si es un comando largo, como puede ser mostrar un trozo grande de código, puede detenerse pulsando CTRL-Pausa o interrumpirse con CTRL-C para volver al shell.

Una característica poco conocida, es que debug puede aceptar entradas desde un fichero "Script", que puede ser un simple fichero de texto ASCII en el que cada comando esté separado del anterior por un INTRO.  Después del último, que debe ser una "Q" para salir de debug, es conveniente dejar una línea en blanco pulsando INTRO dos veces.  Las líneas pueden contener comentarios.  Cualquier cosa a partir del carácter punto y coma (;) hasta el final de la línea, será ignorado.

Instrucciones aritmeticas y logicas

El microprocesador Z-80 dispone de una unidad aritmética-lógica que le permite realizar una serie de operaciones, tanto aritméticas, como lógicas. Las aritméticas incluyen la suma y resta con o sin acarreo, incremento y decremento de un registro, comparaciones, ajuste decimal, complemento y negación. Las lógicas incluyen las operaciones que se realizan con los operadores "AND", "OR" y "XOR".

Antes de adentrarnos en el estudio de las instrucciones concretas, daremos una serie de definiciones útiles:

SUMA SIN ACARREO:

Consiste en sumar al contenido del registro "A" un número y obtener el resultado en el registro "A". El indicador de acarreo no se tiene en cuenta para esta operación. Su esquema sería:

A ! A+n

SUMA CON ACARREO:

Exactamente igual que la anterior, pero se suma también el indicador de acarreo del registro "F". De esta forma, sepuede incluir en la suma el acarreo procedente de una suma anterior. Su esquema sería:

A ! A+n+CF

RESTA SIN ACARREO:

Consiste en restar un número del contenido del registro "A", y obtener el resultado en este mismo registro. El indicador de acarreo no interviene en la operación. Se consideran números negativos los superiores a 127 (7Fh) de la forma que se explicó en el capítulo relativo a los sistemas de numeración; es decir, el número 255 (FFh) se considera "-1", el 254 (FEh) se considera "-2" y así sucesivamente, hasta 128 (80h) que se considera "-128". El paso de 127 a 128 o viceversa se indica poniendo a "1" el flag de "overflow" (P/V) del registro "F". Su esquema sería:

A ! A-n

RESTA CON ACARREO:

Igual que el anterior, salvo que también se resta el indicador de acarreo (CF) del registro "F". Su esquema sería:

A ! A-n-CF

INCREMENTO:

Consiste en sumar uno al contenido de un registro que se especifica en la instrucción. Su esquema es:

R ! R+1

Donde "R" representa un registro cualquiera de 8 a 16 bits. Si se trata de un registro doble (de 16 bits) se incrementa el registro de orden bajo (por ejemplo, en el "BC" se incrementa "C"), y si ello hace que este pase a valer "0", se incrementa también el de orden alto.

DECREMENTO:

Es la inversa de la anterior, consiste en restar uno al contenido de un registro. Su esquema es:

R ! R-1

Si se trata de un registro doble, se decrementa el de orden bajo y, si esto hace que pase a valer 255 (FFh), se decrementa también el de orden alto.

Si el registro incrementado o decrementado es de 8 bits, resultan afectados los indicadores del registro "F".

COMPARACIONES:

Estas instrucciones permiten comparar el contenido del acumulador con un número. Para ello, se resta el número del contenido del acumulador, pero el resultado no se almacena en ninguna parte, simplemente, se alteran determinados flags del registro "F", lo que nos indica si el número era menor, igual o mayor que el contenido del acumulador. Si era igual, se pone a "1" el flag "Z" (indicador de "cero"). Si el número era mayor, se pone a "1" el flag "S" (indicador de "signo").

AJUSTE DECIMAL:

Esta instrucción realiza un ajuste del contenido del acumulador para que, en vez de estar comprendido entre "00h" y "FFh", lo esté entre "00h" y "99h". Si se produce acarreo, se indica mediante el flag correspondiente. Para realizar esta operación se toma en cuenta el estado de los indicadores de "acarreo" (C) y "semi-acarreo" (H). Su finalidad es la de permitir realizar operaciones en "BCD" (Decimal Codificado en Binario).

COMPLEMENTO:

Consiste en realizar un "complemento a 1" del acumulador, es decir, cambiar los "unos" por "ceros" y los "ceros" por "unos".

NEGACIÓN:

Consiste en realizar un "complemento a 2" del acumulador, es decir, realizar un "complemento a 1" y, luego, sumarle "1". Lo que se obtiene es el "negativo" del número que teníamos en el acumulador. El efecto es el mismo que si restáramos el acumulador de "cero", es decir:

PROCESO DE ENSAMBLAJE.

TASM/MASM.

Es el programa que convierte nuestro listado fuente en código objeto, es decir, lenguaje máquina en el que sólo faltan las referencias a rutinas externas. Permite la obtención de listados de código y de referencias cruzadas (símbolos, etiquetas, variables). En general, bastará con hacer TASM nombre _ programa (se supone la extensión .ASM por defecto). El fichero final tiene extensión OBJ. En general, la sintaxis del TASM y MASM es más o menos equivalente: en el primero se obtiene ayuda con /H y en el segundo con /HELP. Con TASM, cuando se va a obtener la versión definitiva del programa, o si éste es corto -o el ordenador rápido- merece la pena utilizar el parámetro /m3, con objeto de que de dos/tres pasadas y optimize más el código. Por su lado, MASM presenta estadísticas adicionales si se indica /v y se puede cambiar con /Btamaño el nº de Kb de memoria que destina al fichero fuente, entre 1 y 63. La sintaxis es (tanto para TASM como MASM):

TASM fichero_fuente, fichero_listado, fichero_referencias_cruzadas

Se puede omitir el fichero de listado y el de referencias cruzadas. Cuando se emplea MASM 6.X, para ensamblar los listados de este libro hay que indicar la opción /Zm para mantener la compatibilidad con las versiones anteriores del ensamblador, siendo además obligatorio indicar la extensión; como se genera directamente el fichero EXE hay que indicar /c si se desea evitar esto (si no se quiere que linke). La sintaxis quedaría:

ML /Zm fihero_fuente.asm

A continuación se listan los parámetros comunes a TASM 2.0 (y posterior) y MASM 4.0/5.0 (NO la 6.X):

/a y /s

Seleccionan un orden alfabético o secuencial de los segmentos.

/c

Genera un listado de referencias cruzadas en un fichero de extensión CRF listo para ser procesado por CREF (MASM) añadiendo además números de línea al listado, o bien incluye el listado de referencias cruzadas directamente dentro del listado del programa (caso de TASM). Las referencias cruzadas son un listado de todos los símbolos del programa, indicando los números de línea del mismo en que son definidos y referenciados.

/D

De la manera /Dsímbolo[=valor] permite crear el símbolo indicado, cuya presencia puede comprobarse en el programa con una directiva IF (es útil para definir externamente un símbolo que indique que el programa está en fase de depuración, de cara a ensamblar cierto código adicional). Aunque /d (en minúsculas) es un obsoleto parámetro de MASM para obtener un listado de la primera pasada del ensamblador, MASM 4.0 es capaz de darse cuenta de que se pretende definir un símbolo con /d a menos que se indique solo /d.

/e

Emula las instrucciones de punto flotante del 80x87, apoyándose en una librería al efecto.

/Iruta

Permite indicar el directorio donde el ensamblador debe de buscar los ficheros indicados en el programa fuente con INCLUDE.

/l[a]

Con /l se genera un listado de ensamblaje y con /la un listado expandido.

/m

Con /m se indica el nivel de preservación del sentido de mayúsculas y minúsculas en los símbolos: /ml hace que se consideres diferentes mayúsculas de minúsculas en todos los símbolos, /mx sólo con los símbolos globales y /mu hace que se mayusculicen todos los símbolos globales. Al ensamblar módulos para usar desde lenguaje C hay que indicar por lo menos /mx. En MASM 6.X se emplea /Cx en lugar de /mx, /Cp en lugar de /ml y /Cu en vez de /mu.

/n

Suprime las tablas de símbolos en el listado.

/p

Verifica que el código generado para el modo protegido es correcto (al emplear la directiva para generar instrucciones de modo protegido).

/t

Suprime los mensajes si el ensamblaje es correcto.

/w

Indica el nivel de advertencias: /w0 ninguna, /w1 sólo las serias y /w2 sólo consejos.

/X

Lista las condiciones falsas (ensamblaje condicional).

/z

Visualiza la línea del error y no sólo el número de la misma.

/Zi

Genera información simbólica para los depuradores de código.

/Zd

Incluye sólo la información del número de línea.

TLINK/LINK.

El montador o linkador permite combinar varios módulos objeto, realizando las conexiones entre ellos y, finalmente, los convierte en módulo ejecutable de tipo EXE (empleando el ML de MASM 6.X se obtiene directamente el fichero EXE ya que invoca automáticamente al linkador). El linkador permite el uso de librerías de funciones y rutinas. TLINK, a diferencia de LINK, permite generar un fichero de tipo COM directamente de un OBJ si se indica el parámetro /t, lo que agiliza aún más el proceso. Puede obtenerse ayuda ejecutándolo sin parámetros. Los parámetros de TLINK son sensibles a mayúsculas y minúsculas, por lo que /T no es lo mismo que /t. Con LINK se obtiene ayuda indicando /HELP. Aunque los parámetros de uno y otro son bastante distintos, la sintaxis genérica de ambos es:

TLINK fich_obj(s), fich_exe, fich_map, fich_libreria, fich_def

     Los ficheros no necesarios se pueden omitir (o indicar NUL): para linkar el fichero prog1.obj y el prog2.obj con la librería math.lib generando PROG1.EXE basta con ejecutar TLINK prog1+prog2,,,math. Alternativamente se puede indicar TLINK @fichero para que tome los parámetros del fichero de texto FICHERO, en el caso de que estos sean demasiados y sea incómodo teclearlos cada vez que se linka. Los ficheros de texto de extensión MAP contienen información útil para el programador sobre la distribución de memoria de los segmentos.

Diferencias entre COM y EXE.

Antes de que el COMMAND.COM pase el control al programa que se pretende ejecutar, se crea un bloque de 256 bytes llamado PSP (Program Segment Prefix). En él aparecen datos tales como la dirección de retorno al dos cuando finalice el programa, la dirección de retorno en caso de Ctrl-Break y en caso de errores críticos. Además de la cantidad de memoria disponible y los posibles parámetros suministrados del programa. Cuando el programa toma el control, DS y ES apuntan al PSP. Tipos de programas:

     En los de tipo COM:
          - CS apunta al PSP e IP=100h (el programa empieza tras el PSP).
          - SS apunta al PSP y SP toma la dirección más alta dentro del segmento del PSP.

     En los de tipo EXE:
          - CS e IP toman los valores del punto de arranque del programa (directiva END etiqueta).
          - SS apunta al segmento de pila y SP = tamaño de la pila definida.

     Si el programa es COM podemos terminarlo con la interrupción 20h (INT 20h), o simplemente con un RET si la pila no está desequilibrada (apunta a un INT 20h que hay en la posición 0 del PSP); otra manera de acabar es por medio de la función 4Ch del sistema (disponible desde el DOS 2.0) que acaba cualquier programa sin problemas y sin ningún tipo de requerimientos adicionales, tanto COM como EXE.

     Los programas de tipo COM se cargan en memoria tal y como están en disco, entregándoseles el control. Los de tipo EXE, que pueden llegar a manejar múltiples segmentos de código de hasta 64 Kb, se almacenan en disco «semiensamblados». En realidad, al ser cargados en memoria, el DOS tiene que realizar la última fase de montaje, calculando las direcciones de memoria absolutas. Por ello, estos programas tienen un formato especial en disco, generado por los ensambladores y compiladores, y su imagen en memoria no se corresponde realmente con lo que está grabado en el disco, aunque esto al usuario no le importe. Por ello, no se extrañe el lector de haber visto alguna vez ficheros EXE de más de 640 Kb: evidentemente, no se cargan enteros en memoria aunque lo parezca. Los programas COM no hacen referencias a datos o direcciones separados más de 64 Kb, por lo que todos los saltos y desplazamientos son relativos a los registros de segmento (no se cambia CS ni DS) con lo que no es necesaria la fase de «montaje». No obstante, un programa COM puede hacer lo que le de la gana con los registros de segmento y acceder a más de 64 Kb de memoria, por cuenta y riesgo del programador. En general, la programación en ensamblador está hoy en día relegada a pequeños programas residentes, controladores de dispositivos o rutinas de apoyo a programas hechos en otros lenguajes, por lo que no es estrictamente necesario trabajar con programas EXE realizados en ensamblador. Salvo excepciones, la mayoría de los programas desarrollados en este libro serán de tipo COM ya que los EXE ocuparían algo más, aunque el ensamblador da algo más de comodidad al programador en los mismos.


El siguiente ejemplo escribe una cadena en pantalla llamando a uno de los servicios estándar de impresión del DOS (función 9 de INT 21h):

cr EQU 13 ; constante de retorno de carro

lf EQU 10 ; constante de salto de línea

programa SEGMENT ; segmento común a CS, DS, ES, SS.

ASSUME CS:programa, DS:programa

ORG 100h ; programa de tipo COM

inicio: LEA DX,texto ; dirección de texto a imprimir

MOV AH,9 ; función de impresión

INT 21h ; llamar al DOS

INT 20h ; volver al sistema operativo

texto DB cr,lf,"Grupo Universitario de Informática.",cr,lf,"$"

programa ENDS ; fin del segmento

END inicio ; fin del programa y punto de inicio

Olvidándonos de los comentarios que comienzan por «;», en las primeras lineas las directivas EQU definen dos constantes para el preprocesador del compilador: cr=13 y lf=10. El programa, de tipo COM, consta de un único segmento. La directiva ASSUME indica que, por defecto, las instrucciones máquina se ensamblarán para el registro CS en este segmento (lo más lógico, por otra parte); también conviene asumir el registro DS, de lo contrario, si hubiera que acceder a una variable, el ensamblador añadiría el prefijo del segmento CS a la instrucción al no estar seguro de que DS apunta a los datos, consumiendo más memoria. Se pueden añadir los demás registros de segmento en el ASSUME, aunque es redundante. El ORG 100h es obligatorio en programas COM, ya que estos programas serán cargados en memoria en la posición CS:100h. Al final, la dirección del texto a imprimir se coloca en DS:DX (CS=DS=ES=SS en un programa COM recién ejecutado) y se llama al DOS. El carácter '$' delimita la cadena a imprimir, lo cual es una herencia del CP/M (sería más interesante que fuera el 0 el delimitador) por razones históricas. Se acaba el programa con INT 20h. El punto de arranque es indicado con la directiva END, aunque en realidad en los programas COM el punto indicado (en el ejemplo, «inicio») debe estar forzosamente al principio del programa. Obsérvese que no se genera código hasta llegar a la línea «inicio:», todo lo anterior son directivas.


EJEMPLO DE PROGRAMA DE TIPO EXE.

Los programas EXE (listado al final de esta sección) requieren algo más de elaboración. En primer lugar, es necesario definir una pila y reservar espacio para la misma. Al contrario que los programas COM (cuya pila se sitúa al final del segmento compartido también con el código y los datos) esta característica obliga a definir un tamaño prudente en función de las necesidades del programa. Téngase en cuenta que en la pila se almacenan las direcciones de retorno de las subrutinas y al llamar a una función de la BIOS la pila es usada con intensidad. En general, con medio kilobyte basta para programas tan sencillos como el del ejemplo, e incluso para otros mucho más complejos. El límite máximo está en 64 Kb. El segmento de pila se nombra siempre STACK y con el TLINK de Borland es necesario indicar también la clase 'STACK'.

Como se ve, son definidos por separado el segmento de código, pila y datos, lo que también ayuda a estructurar más el programa. El segmento de código se define como procedimiento FAR, entre otras razones para que el ensamblador ensamble el RET del final (con el que se vuelve al DOS) como un RETF. La directiva ASSUME asocia cada registro de segmento con su correspondiente segmento. Como puede observarse al principio del programa, es necesario preparar «a mano» la dirección de retorno al sistema. El PUSH DS del principio coloca el segmento del PSP en la pila; el XOR AX,AX coloca un cero en AX (esta instrucción gasta un byte menos que MOV AX,0) y el PUSH AX mete ese 0 en la pila. Con ello, al volver al DOS con RET (RETF en realidad) el control pasará a DS:0, esto es, a la primera instrucción del PSP (INT 20h). Aunque pueda parecer un tanto lioso, es un juego de niños y estas tres instrucciones consecutivas (PUSH DS / XOR AX,AX / PUSH AX) son la manera de empezar de cientos de programas EXE, que después acaban con RET. En general, a partir del DOS 2.0 es más aconsejable terminar el programa con la función 4Ch del DOS, que no requiere que CS apunte al PSP ni precisa de preparación alguna en la pila y además permite retornar un código de ERRORLEVEL en AL: en los programas futuros esto se hará con bastante frecuencia.



También debe observarse cómo se inicializa DS, ya que en los programas EXE por defecto no apunta a los datos. Ahora puede preguntarse el lector, por curiosidad, ¿qué valdrá «datos»?: datos tiene un valor relativo asignado por el ensamblador; cuando el programa sea cargado en memoria, en el proceso de montaje y en función de cuál sea la primera posición de memoria libre, se le asignará un valor determinado por el montador del sistema operativo.

cr EQU 13

lf EQU 10

; Segmento de datos

datos SEGMENT

texto DB cr,lf,"Texto a imprimir",cr,lf,"$"

datos ENDS

; Segmento de pila

pila SEGMENT STACK 'STACK' ; poner STACK es obligatorio

DB 128 dup ('pila') ; reservados 512 bytes

pila ENDS

; Segmento de código

codigo SEGMENT

ejemplo PROC FAR

ASSUME CS:codigo, DS:datos, SS:pila

; poner dirección de retorno al DOS en la pila:

PUSH DS ; segmento del PSP

XOR AX,AX ; AX = 0

PUSH AX ; desplazamiento 0 al PSP

; direccionar segmento de datos con DS

MOV AX,datos ; AX = dirección del segmento de datos

MOV DS,AX ; inicializar DS

; escribir texto

LEA DX,texto ; DS:DX = dirección del texto

MOV AH,9

INT 21h

; volver al DOS

RET ; en realidad, RETF (PROC FAR)

ejemplo ENDP

codigo ENDS ; fin del código

END ejemplo ; punto de arranque del programa

Macros y bibliotecas de macros

Las macros son grupos de instrucciones que tienen un seguimiento cronológico usadas para economizar tareas; una macro no es más que un conjunto de expresiones (instrucciones) tales como "borrar archivo", "añadir registro", etc., y que se almacenan en una ubicación especial (por ejemplo en Microsoft Access observamos que hay una zona para crear macros, una macro en Access trabajando para una base de datos podría ser un archivo que al llamarse desde otra instrucción: borrara los registros de un cliente o accionista, luego borrara ciertos registros en otras tablas, extraera su información de un log, entre otras cosas.

Con el fin de evitar al programador la tediosa repetición de partes idénticas de un programa, los ensambladores y compiladores cuentan con macroprocesadores que permiten definir una abreviatura para representar una parte de un programa y utilizar esa abreviatura cuantas veces sea necesario. Para utilizar una macro, primero hay que declararla. En la declaración se establece el nombre que se le dará a la macro y el conjunto de instrucciones que representará.

El programador escribirá el nombre de la macro en cada uno de los lugares donde se requiera la aplicación de las instrucciones por ella representadas. La declaración se realiza una sola vez, pero la utilización o invocación a la macro (macrollamada) puede hacerse cuantas veces sea necesario. La utilización de macros posibilita la reducción del tamaño del código fuente, aunque el código objeto tiende a ser mayor que cuando se utilizan funciones.

Es tan común el empleo de macroinstrucciones que se les considera como una extensión de los lenguajes. De manera similar se considera al procesador de macroinstrucciones o macroprocesador como una extensión del ensamblador o compilador utilizado. El macroprocesador se encarga, en una primera pasada, de registrar todas las declaraciones de macros y de rastrear el programa fuente para detectar todas las macrollamadas. En cada lugar donde encuentre una macro llamada, el macroprocesador hará la sustitución por las instrucciones correspondientes. A este proceso de sustitución se le denomina expansión de la macro. El macroprocesador elabora dos tablas para el manejo de las macros.

Sintaxis de una macro

Las partes que componen a una macro son:

    • Declaración de la macro

    • código de la macro

    • Directiva de terminación de la macro

La declaración de la macro se lleva a cabo de la siguiente forma:

NombreMacro MACRO [parametro1, parametro2...]

Aunque se tiene la funcionalidad de los parametros es posible crear una macro que no los necesite.

La directiva de terminación de la macro es: ENDM

Un ejemplo de macro, para colocar el cursor en alguna posición determinada de la pantalla es:

Posicion MACRO Fila, Columna
PUSH AX
PUSH BX
PUSH DX
MOV AH, 02H
MOV DH, Fila
MOV DL, Columna
MOV BH, 0
INT 10H
POP DX
POP BX
POP AX
ENDM

Para utilizar una macro solo es necesario llamarla por su nombre, como si fuera una instrucción mas del ensamblador, ya no son necesarias las directivas como en el caso de los procedimientos. Ejemplo:

Posicion 8, 6

Bibliotecas de macros

Una de las facilidades que ofrece el uso de las macros es la creación de bibliotecas, las cuales son grupos de macros que pueden ser incluidas en un programa desde un archivo diferente.

La creación de estas bibliotecas es muy sencilla, unicamente tenemos que escribir un archivo con todas las macros que se necesitarán y guardarlo como archivo de texto.

Para llamar a estas macros solo es necesario utilizar la instrucción Include NombreDelArchivo, en la parte de nuestro programa donde escribiriamos normalmente las macros, esto es, al principio de nuestro programa (antes de la declaración del modelo de memoria).

Suponiendo que se guardó el archivo de las macros con el nombre de MACROS.TXT la instrucción Include se utilizaría de la siguiente forma:

;Inicio del programa
Include MACROS.TXT
.MODEL SMALL
.DATA
;Aqui van los datos
.CODE
Inicio:
;Aqui se inserta el código del programa
.STACK
;Se define la pila
End Inicio
;Termina nuestro programa

UNIDAD 2

TRADUCTORES DE ALTO NIVEL

Son los que traducen instrucciones de lenguajes de programación de alto nivel al código binario del lenguaje de la máquina.

Compiladores

En el caso de que el lenguaje fuente sea un lenguaje de programación de alto nivel y el objeto sea un lenguaje de bajo nivel (ensamblador o código de máquina), a dicho traductor se le denomina compilador. Un ensamblador es un compilador cuyo lenguaje fuente es el lenguaje ensamblador. Un intérprete no genera un programa equivalente, sino que toma una sentencia del programa fuente en un lenguaje de alto nivel y la traduce al código equivalente y al mismo tiempo lo ejecuta. Históricamente, con la escasez de memoria de los primeros ordenadores, se puso de moda el uso de intérpretes frente a los compiladores, pues el programa fuente sin traducir y el intérprete juntos daban una ocupación de memoria menor que la resultante de los compiladores. Por ello los primeros ordenadores personales iban siempre acompañados de un intérprete de BASIC (Spectrum, Commodore VIC-20, PC XT de IBM, etc.). La mejor información sobre los errores por parte del compilador así como una mayor velocidad de ejecución del código resultante hizo que poco a poco se impusieran los compiladores. Hoy en día, y con el problema de la memoria prácticamente resuelto, se puede hablar de un gran predominio de los compiladores frente a los intérpretes, aunque intérpretes como los incluidos en los navegadores de Internet para interpretar el código JVM de Java son la gran excepción.
Ventajas de compilar frente a interpretar:

    • Se compila una vez, se ejecuta n veces.

    • En bucles, la compilación genera código equivalente al bucle, pero interpretándolo se traduce tantas veces una línea como veces se repite el bucle.

    • El compilador tiene una visión global del programa, por lo que la información de mensajes de error es mas detallada.

    • Ventajas del intérprete frente al compilador:

    • Un intérprete necesita menos memoria que un compilador. En principio eran más abundantes dado que los ordenadores tenían poca memoria.

    • Permiten una mayor interactividad con el código en tiempo de desarrollo.

Un compilador no es un programa que funciona de manera aislada, sino que necesita de otros programas para conseguir su objetivo: obtener un programa ejecutable a partir de un programa fuente en un lenguaje de alto nivel. Algunos de esos programas son el preprocesador, el linker, el depurador y el ensamblador. El preprocesador se ocupa (dependiendo del lenguaje) de incluir ficheros, expandir macros, eliminar comentarios, y otras tareas similares. El linker se encarga de construir el fichero ejecutable añadiendo al fichero objeto generado por el compilador las cabeceras necesarias y las funciones de librería utilizadas por el programa fuente. El depurador permite, si el compilador ha generado adecuadamente el programa objeto, seguir paso a paso la ejecución de un programa. Finalmente, muchos compiladores, en vez de generar código objeto, generan un programa en lenguaje ensamblador que debe después convertirse en un ejecutable mediante un programa ensamblador.

Clasificación de Compiladores

El programa compilador traduce las instrucciones en un lenguaje de alto nivel a instrucciones que la computadora puede interpretar y ejecutar. Para cada lenguaje de programación se requiere un compilador separado. El compilador traduce todo el programa antes de ejecutarlo. Los compiladores son, pues, programas de traducción insertados en la memoria por el sistema operativo para convertir programas de cómputo en pulsaciones electrónicas ejecutables (lenguaje de máquina). Los compiladores pueden ser de:

  • una sola pasada: examina el código fuente una vez, generando el código o programa objeto.

  • pasadas múltiples: requieren pasos intermedios para producir un código en otro lenguaje, y una pasada final para producir y optimizar el código producido durante los pasos anteriores.

  • Optimación: lee un código fuente, lo analiza y descubre errores potenciales sin ejecutar el programa.

  • Compiladores incrementales: generan un código objeto instrucción por instrucción (en vez de hacerlo para todo el programa) cuando el usuario teclea cada orden individual. El otro tipo de compiladores requiere que todos los enunciados o instrucciones se compilen conjuntamente.

  • Ensamblador: el lenguaje fuente es lenguaje ensamblador y posee una estructura sencilla.

  • Compilador cruzado: se genera código en lenguaje objeto para una máquina diferente de la que se está utilizando para compilar. Es perfectamente normal construir un compilador de Pascal que genere código para MS-DOS y que el compilador funcione en Linux y se haya escrito en C++.

  • Compilador con montador: compilador que compila distintos módulos de forma independiente y después es capaz de enlazarlos.

  • Autocompilador: compilador que está escrito en el mismo lenguaje que va a compilar. Evidentemente, no se puede ejecutar la primera vez. Sirve para hacer ampliaciones al lenguaje, mejorar el código generado, etc.

  • Metacompilador: es sinónimo de compilador de compiladores y se refiere a un programa que recibe como entrada las especificaciones del lenguaje para el que se desea obtener un compilador y genera como salida el compilador para ese lenguaje. El desarrollo de los metacompiladores se encuentra con la dificultad de unir la generación de código con la parte de análisis. Lo que sí se han desarrollado son generadores de analizadores léxicos y sintácticos. Por ejemplo, los conocidos:
    LEX: generador de analizadores léxicos generador de analizadores YACC: sintácticos
    desarrollados para UNIX. Los inconvenientes que tienen son que los analizadores que generan no son muy eficientes.

  • Descompilador: es un programa que acepta como entrada código máquina y lo traduce a un lenguaje de alto nivel, realizando el proceso inverso a la compilación.

Funciones de un compilador

A grandes rasgos un compilador es un programa que lee un programa escrito es un lenguaje, el lenguaje fuente, y lo traduce a un programa equivalente en otro lenguaje, el lenguaje objeto. Como parte importante de este proceso de traducción, el compilador informa a su usuario de la presencia de errores en el programa fuente.
A primera vista, la diversidad de compiladores puede parecer abrumadora. Hay miles de lenguajes fuente, desde los lenguajes de programación tradicionales, como FORTRAN o Pascal, hasta los lenguajes especializados que han surgido virtualmente en todas las áreas de aplicación de la informática. Los lenguajes objeto son igualmente variados; un lenguaje objeto puede ser otro lenguaje de programación o el lenguaje de máquina de cualquier computador entre un microprocesador y un supercomputador. A pesar de existir una aparente complejidad por la clasificación de los compiladores, como se vio en el tema anterior, las tareas básicas que debe realizar cualquier compilador son esencialmente las mismas. Al comprender tales tareas, se pueden construir compiladores para una gran diversidad de lenguajes fuente y máquinas objeto utilizando las mismas técnicas básicas.
Nuestro conocimiento sobre cómo organizar y escribir compiladores ha aumentado mucho desde que comenzaron a aparecer
los primeros compiladores a principios de los años cincuenta. Es difícil dar una fecha exacta de la aparición del primer compilador, porque en un principio gran parte del trabajo de experimentación y aplicación se realizó de manera independiente por varios grupos. Gran parte de los primeros trabajos de compilación estaba relacionada con la traducción de fórmulas aritméticas a código de máquina.

En la década de 1950, se consideró a los compiladores como programas notablemente difíciles de escribir. EL primer compilador de FORTRAN, por ejemplo, necesitó para su implantación de 18 años de trabajo en grupo (Backus y otros [1975]). Desde entonces, se han descubierto técnicas sistemáticas para manejar muchas de las importantes tareas que surgen en la compilación. También se han desarrollado buenos lenguajes de implantación, entornos de programación y herramientas de software. Con estos avances, puede hacerse un compilador real incluso como proyecto de estudio en un curso de un semestre sobre diseño sobre de compiladores.

Partes en las que trabaja un compilador

Conceptualmente un compilador opera en fases. Cada una de las cuales transforma el programa fuente de una representación en otra. En la figura 3 se muestra una descomposición típica de un compilador. En la práctica se pueden agripar fases y las representaciones intermedias entres las fases agrupadas no necesitan ser construidas explícitamente.

Programa fuente

'Sistemas operativos'

Programa objeto


Fases de un compilador.


Las tres primeras fases, que forman la mayor parte de la porción de análisis de un compilador se analizan en la sección IX. Otras dos actividades, la administración de la tabla se símbolos y el manejo de errores, se muestran en interacción con las seis fases de análisis léxico, análisis sintáctico, análisis semántico, generación de código intermedio, optimación de código y generación de código. De modo informal, también se llamarán "fases" al administrador de la tabla de símbolos y al manejador de errores.

Administrador de la tabla de símbolos

Una función esencial de un compilador es registrar los identificadores utilizados en el programa fuente y reunir información sobre los distintos atributos de cada identificador. Estos atributos pueden proporcionar información sobre la memoria asignada a un identificador, su tipo, su ámbito (la parte del programa donde tiene validez) y, en el caso de nombres de procedimientos, cosas como el número y tipos de sus argumentos, el método de pasar cada argumento (por ejemplo, por referencia) y el tipo que devuelve, si los hay.
Una tabla de símbolos es una estructura de datos que contiene un registro por cada identificador, con los campos para los atributos del identificador. La estructura de datos permite encontrar rápidamente el registro de cada identificador y almacenar o consultar rápidamente datos en un registro. Cuando el analizador léxico detecta un indentificador en el programa fuente, el identificador se introduce en la tabla de símbolos. Sin embargo, normalmente los atributos de un identificador no se pueden determinar durante el análisis léxico. Por ejemplo, en una declaración en Pascal como var posición, inicial, velocidad : real.


El tipo real no se conoce cuando el analizador léxico encuentra posición, inicial y velocidad.
Las fases restantes introducen información sobre los identificadores en la tabla de símbolos y después la utilizan de varias formas. Por ejemplo, cuando se está haciendo el análisis semántico y la generación de código intermedio, se necesita saber cuáles son los tipos de los identificadores, para poder comprobar si el programa fuente los usa de una forma válida y así poder generar las operaciones apropiadas con ellos. El generador de código, por lo general, introduce y utiliza información detallada sobre la memoria asignada a los identificadores.

Detección e información de errores


Cada frase puede encontrar errores. Sin embargo, después de detectar un error. Cada fase debe tratar de alguna forma ese error, para poder continuar la compilación, permitiendo la detección de más errores en el programa fuente. Un compilador que se detiene cuando encuentra el primer error, no resulta tan útil como debiera.
Las fases de análisis sintáctico y semántico por lo general manejan una gran proporción de los errores detectables por el compilador. La fase léxica puede detectar errores donde los caracteres restantes de la entrada no forman ningún componente léxico del lenguaje. Los errores donde la cadena de componentes léxicos violan las reglas de estructura (sintaxis) del lenguaje son determinados por la fase del análisis sintáctico.

Durante el análisis semántico el compilador intenta detectar construcciones que tengan la estructura sintáctica correcta, pero que no tengan significado para la operación implicada, por ejemplo, si se intenta sumar dos identificadores. Uno de los cuales es el nombre de una matriz, y el otro, el nombre de un procedimiento.

Forma de examinar de un compilador

En la compilación hay dos partes: Análisis y Síntesis. La parte del análisis divide al programa fuente en sus elementos componentes y crea una representación intermedia. De las dos partes, la síntesis es la que requiere la técnica más especializada.
Durante el análisis se determina las operaciones que implica el programa fuente y se registra en una estructura jerárquica llamada árbol. A menudo, se usa una clase especial de árbol llamado árbol sintáctico, donde cada nodo representa una operación y los hijos de un nodo son los argumentos de la operación. Por ejemplo, en la figura 5 se muestra un árbol sintáctico para una proposición de asignación.

'Sistemas operativos'

Intérpretes

Los intérpretes realizan la traducción y ejecución de forma simultanea, es decir, un intérprete lee el código fuente y lo va ejecutando al mismo tiempo.

'Sistemas operativos'

Las diferencias entre un compilador y un intérprete básicamente son:

  • Un programa compilado puede funcionar por si solo mientras que un código traducido por un intérprete no puede funcionar sin éste.

  • Un programa traducido por un intérprete puede ser ejecutado en cualquier máquina ya que, cada vez que se ejecuta el intérprete, tiene que compilarlo.

  • Un archivo compilado es mucho más rápido que uno interpretado


UNIDAD 3

SISTEMAS OPERATIVOS

Definición de sistema operativo.

Un sistema operativo (SO) es un conjunto de programas destinados a permitir la comunicación del usuario con un ordenador y gestionar sus recursos de manera eficiente. Comienza a trabajar cuando se enciende el ordenador, y gestiona el hardware de la máquina desde los niveles más básicos.

Un sistema operativo se puede encontrar normalmente en la mayoría de los aparatos electrónicos que podamos utilizar sin necesidad de estar conectados a un ordenador y que utilicen microprocesadores para funcionar, ya que gracias a estos podemos entender la máquina y que ésta cumpla con sus funciones (teléfonos móviles, reproductores de DVD, autoradios... y computadoras)

Funciones Básicas

'Sistemas operativos'

Tipos de Sistemas Operativos.

Una forma de clasificación de los sistemas operativos se basa en el número de usuarios que el sistema puede atender al mismo tiempo.

Así, tenemos sistemas de una sola tarea o trabajo, los cuales pueden atender solo un trabajo (y por lo tanto un solo usuario) a la vez.

Un sistema de multiprogramación permite que se ejecuten varios trabajos al mismo tiempo. El sistema operativo se encarga de intercambiar la atención del procesador entre los programas en ejecución y las funciones de apoyo propias.

Un sistema de multiprocesamiento difiere del sistema de multiprogramación por el hecho de trabajar con varios procesadores a la vez.

Otra forma de clasificar a los sistemas operativos toma en cuente el tipo de acceso que proporcionan al usuario. En este caso, se tienen: sistemas de procesamiento por lotes (batch processing), donde un trabajo se define como una secuencia de instrucciones de control almacenadas en algún dispositivo para que el sistema operativo pueda leer y ejecutar una serie de trabajos, limitando la intervención del operador solo al montaje de cintas y discos. Por otra parte se tienen los sistemas de tiempo compartido (multiusuario) que proporcionan acceso interactivo o conversacional a varios usuarios, proporcionando a cada uno de ellos pequeños intervalos de tiempo de acuerdo a la cantidad de usuarios presentes y a la prioridad de cada uno de los procesos.

Historia de los sistemas operativos

Los Sistemas Operativos, al igual que el Hardware de los computadores, han sufrido una serie de cambios revolucionarios llamados generaciones. En el caso del Hardware, las generaciones han sido marcadas por grandes avances en los componentes utilizados, pasando de válvulas ( primera generación ) a transistores ( segunda generación ), a circuitos integrados ( tercera generación), a circuitos integrados de gran y muy gran escala (cuarta generación). Cada generación Sucesiva de hardware ha ido acompañada de reducciones substanciales en los costos, tamaño, emisión de calor y consumo de energía, y por incrementos notables en velocidad y capacidad.

Generacion Cero (década de 1940)

Los primeros sistemas computacionales no poseían sistemas operativos. Los usuarios tenían completo acceso al lenguaje de la maquina. Todas las instrucciones eran codificadas a mano.

Primera Generacion (década de 1950)

Los sistemas operativos de los años cincuenta fueron diseñados para hacer mas fluida la transición entre trabajos. Antes de que los sistemas fueran diseñados, se perdía un tiempo considerable entre la terminación de un trabajo y el inicio del siguiente. Este fue el comienzo de los sistemas de procesamiento por lotes, donde los trabajos se reunían por grupos o lotes. Cuando el trabajo estaba en ejecución, este tenia control total de la maquina. Al terminar cada trabajo, el control era devuelto al sistema operativo, el cual limpiaba y leía e iniciaba el trabajo siguiente.

Al inicio de los 50's esto había mejorado un poco con la introducción de tarjetas perforadas (las cuales servían para introducir los programas de lenguajes de máquina), puesto que ya no había necesidad de utilizar los tableros enchufables.

Además el laboratorio de investigación General Motors implementó el primer sistema operativo para la IBM 701. Los sistemas de los 50's generalmente ejecutaban una sola tarea, y la transición entre tareas se suavizaba para lograr la máxima utilización del sistema. Esto se conoce como sistemas de procesamiento por lotes de un sólo flujo, ya que los programas y los datos eran sometidos en grupos o lotes.

La introducción del transistor a mediados de los 50's cambió la imagen radicalmente.

Se crearon máquinas suficientemente confiables las cuales se instalaban en lugares especialmente acondicionados, aunque sólo las grandes universidades y las grandes corporaciones o bien las oficinas del gobierno se podían dar el lujo de tenerlas.

Para poder correr un trabajo (programa), tenían que escribirlo en papel (en Fortran o en lenguaje ensamblador) y después se perforaría en tarjetas. Enseguida se llevaría la pila de tarjetas al cuarto de introducción al sistema y la entregaría a uno de los operadores. Cuando la computadora terminara el trabajo, un operador se dirigiría a la impresora y desprendería la salida y la llevaría al cuarto de salida, para que la recogiera el programador.

Segunda Generacion (a mitad de la década de 1960)

La característica de los sistemas operativos fue el desarrollo de los sistemas compartidos con multiprogramación, y los principios del multiprocesamiento. En los sistemas de multiprogramación, varios programas de usuario se encuentran al mismo tiempo en el almacenamiento principal, y el procesador se cambia rápidamente de un trabajo a otro. En los sistemas de multiprocesamiento se utilizan varios procesadores en un solo sistema computacional, con la finalidad de incrementar el poder de procesamiento de la maquina.

La independencia de dispositivos aparece después. Un usuario que desea escribir datos en una cinta en sistemas de la primera generación tenia que hacer referencia especifica a una unidad de cinta particular. En la segunda generación, el programa del usuario especificaba tan solo que un archivo iba a ser escrito en una unidad de cinta con cierto numero de pistas y cierta densidad.

Se desarrollo sistemas compartidos, en la que los usuarios podían acoplarse directamente con el computador a través de terminales. Surgieron sistemas de tiempo real, en que los computadores fueron utilizados en el control de procesos industriales. Los sistemas de tiempo real se caracterizan por proveer una respuesta inmediata.

Tercera Generacion (mitad de década 1960 a mitad década de 1970)

Se inicia en 1964, con la introducción de la familia de computadores Sistema/360 de IBM. Los computadores de esta generación fueron diseñados como sistemas para usos generales . Casi siempre eran sistemas grandes, voluminosos, con el propósito de serlo todo para toda la gente. Eran sistemas de modos múltiples, algunos de ellos soportaban simultáneamente procesos por lotes, tiempo compartido, procesamiento de tiempo real y multiprocesamiento. Eran grandes y costosos, nunca antes se había construido algo similar, y muchos de los esfuerzos de desarrollo terminaron muy por arriba del presupuesto y mucho después de lo que el planificador marcaba como fecha de terminación.

Estos sistemas introdujeron mayor complejidad a los ambientes computacionales; una complejidad a la cual, en un principio, no estaban acostumbrados los usuarios.

Cuarta Generacion (mitad de década de 1970 en adelante)

Los sistemas de la cuarta generación constituyen el estado actual de la tecnología. Muchos diseñadores y usuarios se sienten aun incómodos, después de sus experiencias con los sistemas operativos de la tercera generación.

Con la ampliación del uso de redes de computadores y del procesamiento en línea los usuarios obtienen acceso a computadores alejados geográficamente a través de varios tipos de terminales.

Los sistemas de seguridad se ha incrementado mucho ahora que la información pasa a través de varios tipos vulnerables de líneas de comunicación. La clave de cifrado esta recibiendo mucha atención; han sido necesario codificar los datos personales o de gran intimidad para que; aun si los datos son expuestos, no sean de utilidad a nadie mas que a los receptores adecuados.

Funciones del Sistema Operativo

Los sistemas operativos, motivados por su condición de capa software que posibilita y simplifica el manejo de la computadora, desempeñan una serie de funciones básicas esenciales para la gestión de la máquina. Entre las más destacables, cada una ejercida por un componente interno (módulo en núcleos monolíticos y servidor en microkernels), podemos reseñar las siguientes:

  • Gestionar los recursos de la máquina ejecutando servicios para los procesos (programas)

  • Brindar una interfaz al usuario, ejecutando instrucciones (comandos).

Gestor de recursos

'Sistemas operativos'

'Sistemas operativos'

Gestor de Recursos

Como gestor de recursos, el sistema operativo administra

  • la CPU

  • los dispositivos de E/S

  • la memoria

  • las colas de procesos.

Interfaz de usuario

Un sistema operativo como interfaz es una capa compleja entre el hardware y el usuario, concebible también como una máquina virtual, que facilita al usuario o al programador las herramientas e interfaces adecuadas para realizar sus tareas informáticas, abstrayéndole de los complicados procesos necesarios para llevarlas a cabo. Por ejemplo, un usuario normal simplemente abre los ficheros grabados en un disco, sin preocuparse por la disposición de los bits en el medio físico, los tiempos de espera del motor del disco, la posición de un cabezal, el acceso de otros usuarios, etc.

Kernel

En informática, el núcleo (también conocido en español con el anglicismo kernel, de raíces germánicas como kern) es la parte fundamental de un sistema operativo. Es el software responsable de facilitar a los distintos programas acceso seguro al hardware de la computadora o en forma más básica, es el encargado de gestionar recursos, a través de servicios de llamada al sistema. Como hay muchos programas y el acceso al hardware es limitado, el núcleo también se encarga de decidir qué programa podrá hacer uso de un dispositivo de hardware y durante cuánto tiempo, lo que se conoce como multiplexado. Acceder al hardware directamente puede ser realmente complejo, por lo que los núcleos suelen implementar una serie de abstracciones del hardware. Ésto permite esconder la complejidad, y proporciona una interfaz limpia y uniforme al hardware subyacente, lo que facilita su uso para el programador.

Sistema de archivos

La mayoría de los sistemas operativos poseen su propio sistema de archivos. Los sistemas de archivos son representados ya sea textual o gráficamente utilizando un gestor de archivos. Los sistemas de archivos más comunes utilizan dispositivos de almacenamiento de datos que permiten el acceso a los datos como una cadena de bloques de un mismo tamaño, a veces llamados sectores, usualmente de 512 bytes de longitud. El software del sistema de archivos es responsable de la organización de estos sectores en archivos y directorios y mantiene un registro de qué sectores pertenecen a qué archivos y cuáles no han sido utilizados. En la realidad, un sistema de archivos no requiere necesariamente de un dispositivo de almacenamiento de datos, sino que puede ser utilizado también para acceder a datos generados dinámicamente, como los recibidos a través de una conexión de red.

Generalmente un sistema de archivos tiene directorios que asocian nombres de archivos con archivos, usualmente conectando el nombre de archivo a un índice en una tabla de asignación de archivos de algún tipo, como FAT en sistemas de archivos MS-DOS o los inodos de los sistemas Unix. La estructura de directorios puede ser plana o jerárquica (ramificada o "en árbol"). En algunos sistemas de archivos los nombres de archivos son estructurados, con sintaxis especiales para extensiones de archivos y números de versión. En otros, los nombres de archivos son simplemente cadenas de texto y los metadatos de cada archivo son alojados separadamente.

En sistemas de archivos jerárquicos, en lo usual, se declara la ubicación precisa de un archivo con una cadena de texto llamada "ruta". La nomenclatura para rutas varía ligeramente de sistema en sistema, pero mantienen por lo general una misma estructura. Una ruta viene dada por una sucesión de nombres de directorios y subdirectorios, ordenados jerárquicamente de izquierda a derecha y separados por algún carácter especial que suele ser una barra ('/') o barra invertida ('\') y puede terminar en el nombre de un archivo presente en la última rama de directorios especificada.

Intérpretes de órdenes (Shells)

En FreeBSD, gran parte del trabajo diario se realiza a través de un interfaz de la linea de órdenes llamado "shell". El principal trabajo del shell es recoger órdenes del canal de entrada y ejecutarlas. Muchos shells tienen también integradas funciones para ayudarnos en las tareas cotidianas tales como la manipulación de archivos, edición de líneas de órdenes, macros de órdenes, expansión de expresiones regulares en nombres de archivo y variables del sistema. FreeBSD viene con un conjunto de shells, como sh, el shell Bourne y csh, el shell C. Hay disponibles muchos otros shells en la "FreeBSD Ports Collection" que son mucho más potentes, como bash y tcsh.

¿Qué shell usar? Es cuestión de gustos. Si se es programador de C se puede sentir más cómodo con tcsh, un shell con una sintaxis similar al C. Si se proviene del mundo Linux o se es nuevo en el interfaz de órdenes de Unix, se puede probar con bash. El asunto es que cada shell posee unas propiedades únicas que pueden o no funcionar con el entorno de trabajo preferido y se ha de efectuar una elección sobre el shell a usar.

Una de las propiedades comunes de un shell es que completa los nombres de archivo. Dada la introducción de las primeras letras de una orden o del nombre de un archivo, se puede hacer que el shell complete automáticamente el resto de la orden o el nombre del archivo pulsando la tecla TAB. Aquí va un ejemplo. Supongamos que se tienen dos archivos llamados foobar y foo.bar. Se quiere borrar foo.bar. Lo que habría que teclear es: rm fo[TAB].[TAB].

El shell nos mostraría rm foo[BEEP].bar.

El [BEEP] es el pitido de consola (console bell): es el shell diciéndonos que fue incapaz de completar totalmente el nombre de archivo porque hay más de una coincidencia. Tanto foobar como foo.bar comienzan por fo, pero solo se pudo completar hasta foo. Si se teclea ., y de nuevo TAB, el shell será capaz de introducir el resto del nombre por nosotros.

Otra función del shell son las variables de entorno. Las variables de entorno son parejas de valores clave almacenados en el espacio de entorno del shell. Este espacio puede ser leído por cualquier programa invocado por el shell y, por tanto, en él se encuentra bastante información relativa a la configuración de programas. Lo siguiente es una lista de las variables de entorno más comunes y su significado:

Variable

Descripción

USER

Nombre de usuario con el que se ha entrado al sistema.

PATH

Lista de directorios, separada por puntos y coma, en los que se busca ejecutables.

DISPLAY

Nombre en la red de la pantalla de X11 a la que conectarse, si se encuentra disponible.

SHELL

El shell actual.

TERM

El nombre del terminal del usuario. Se usa para determinar las posibilidades del terminal de datos.

TERMCAP

Base de datos donde encontrar los códigos de escape necesarios para realizar diferentes funciones en el terminal.

OSTYPE

Tipo de sistema operativo. Por ejemplo, FreeBSD.

MACHTYPE

Arquitectura de la CPU en la que el sistema se está ejecutando.

EDITOR

El editor de texto preferido por el usuario.

PAGER

El paginador de texto preferido por el usuario.

MANPATH

Lista de directorios en los que se busca páginas de manual, separados por puntos y coma.

Archivos, directorios y diferencias

Un archivo no es más que un conjunto de bytes relacionados que están en disco u otro medio, a los que se les asigna un nombre que se utilizara para referirse a este archivo. Un directorio no es más que un archivo común a los que se les a impuesto una estructura particular.

Esto tal vez llame la atención. En GNU/Linux y UNIX todo es archivo. Sí, todo es archivo. El teclado, el monitor, el disco rígido y hasta la memoria. El SO trata a los dispositivos como archivos y de esa manera utiliza los mismos métodos de apertura, escritura, lectura y cierre para todos ellos. La clase de archivos de los que estamos hablando se denomina archivo de dispositivo y es solo una de las clases de archivos que existen en GNU/Linux.

En DOS se acostumbraba a que solamente aquellos archivos con extensión .EXE .COM o .BAT se podían ejecutar. En GNU/Linux cualquier archivo puede llegar a ser ejecutable sin importar que extensión tenga. Los archivos ejecutables puede ser de dos clases: aquellos con formato binario ejecutable directamente por el kernel, y aquellos que tienen lo que se denomina un magic cookie, el cual determina la manera en que el sistema ejecutará dicho archivo (script). Un ejemplo de este tipo de ejecutable son los scripts de shell, que recuerdan a losarchivos .bat del DOS, pero que son mucho más poderosos.

Otro tipo de archivo es el de canalización. Esta clase de archivo sirve de canal donde los datos entran por un extremo y salen por el otro. Son creados por los procesos y desaparecen al morir el proceso, pero mientras tanto están ocupando un lugar físico en el disco. Cuando se trate el tema de pipes y canalización se entrará más en detalle.

La forma en que se puede nombrar un archivo no esta limitada como en DOS a 8 letras seguido de 3 caracteres de extensión. Los nombres pueden ser de 255 caracteres de longitud y pueden tener puntos, guiones y demás símbolos como separadores. Los únicos nombres que no están permitidos son los que contienen la / en su nombre debido a que este caracter se utiliza para indicar la ruta a directorios.

nota.txt

nota.textual

nota.para.julio

nota.julio.hoy

Si trabajáramos en un sistema DOS solamente el primer archivo seria un archivo reconocido como texto, en cambio en GNU/Linux cualquier archivo de estos podrá contener texto.

Los archivos que llevan un punto inicial, .nota.textual son denominados archivos de punto y el SO los pondrá de manera predeterminada como ocultos.

Organizar los archivos en directorios es la forma más útil de trabajar con ellos. Aunque pareciera que los directorios contienen a los archivos, esto no es verdad. En realidad los archivos están asociados a ese directorio, y solo son mostrados como si estuviesen dentro de él.

La forma de referenciar un archivo es ir poniendo los nombres de los subdirectorios seguido por una /, por ejemplo /home/shrek/cartas/carta_fiona.

A esto se le denomina ruta del archivo y establece una ruta única para determinado archivo ya que podría existir otro archivo con el mismo nombre pero con una ruta diferente, por ejemplo /home/fiona/carta_fiona, pero no seria el mismo, sino otro. A lo sumo podría ser un enlace a la carta del directorio /home/shrek/cartas, pero eso lo veremos luego.

Uno puede moverse de arriba abajo en un árbol de directorio por medio del comando cd (cambio de directorio) que forma parte del shell. El SO llevará cuenta del directorio en que estamos parados actualmente, denominado directorio de trabajo, cuando uno cambia de directorio, el SO verifica esta parte de memoria y si es posible efectúa el cambio actualizándola con el directorio de trabajo actual. No importa si nos movemos arriba o abajo del directorio de trabajo, solamente esta información es la que cambia para que tengamos la ilusión de que nos estamos moviendo a través del árbol de directorios.

'Sistemas operativos'

Los directorios tienen información que apunta hacia la ubicación de los archivos reales. Esta información, tanto en los archivos y directorios y junto con el nombre del creador, tamaño permisos, etc, es guardada en lo que se denomina TABLA DE INODOS. Esta tabla se crea cuando se crea el sistema de archivos en GNU/Linux, comparable al formateo de una partición DOS. Se crea esta tabla que contendrá la mayoría de la información de los archivos. Entender lo que habíamos dicho en un principio de que todo es archivo en GNU/Linux puede resultar algo traumático, pero si vemos que esto resulta en un mejoramiento de cómo el sistema accede a sus recursos, vamos entendiendo que se establece una mayor sencillez. Al ingresar al sistema se abrirán 3 archivos. La entrada estándar (stdin) la salida estándar (stdout) y el error estándar (stderr). Cuando ingresamos datos por el teclado, estamos escribiendo en el archivo stdin y al verlos por la pantalla sé esta escribiendo el archivo stdout. Si en algún punto existiera un error saldría por la pantalla, pero se estaría escribiendo el archivo stderr.

Por ultimo, un proceso no es más que un programa en ejecución.

Requerimentos de instalacion de Linux.

Requerimientos mínimos de hardware

Linux funciona sobre una gran variedad de hardware. Puede haber algún dispositivo con el que no sea compatible, sobre todo las últimas novedades. Aunque cada distribución mantiene una lista del hardware compatible, puede consultarse una lista genérica, válida para todas las distribuciones, en compatiblelinux.org.

Los requerimientos mínimos de hardware de las distintas distribuciones son similares, salvo para las tipo "live". Estas distribuciones se ejecutan directamente desde un CD-ROM, utilizando, además del lector de CD-ROM, el procesador y la memoria RAM. No necesitan para su funcionamiento del disco duro, salvo en el caso que queramos conservar la configuración o los datos (documentos) generados durante su utilización. La ejecución sin el apoyo de un medio de almacenamiento como el disco duro las hace muy cómodas, pues no requieren ningún proceso de instalación, pero hace que requieran más memoria RAM y un procesador más potente; y que, con la misma configuración de hardware, puedan resultar más lentas que las distribuciones que no son tipo "live".

CPU (Unidad central de procesos)

Linux soporta todos los procesadores que se engloban dentro de lo que se conoce como familia x86, donde el mínimo procesador soportado es el i386. Por todo ello son soportados los microprocesadores i386, i486, celeron, Pentium, Pentium Pro, Pentium II, Pentium III, Pentium IV, AMD Athlon, Athlon XP, Athlon MP, y cualquier otro compatible con éstos.

Para obtener unos resultados satisfactorios utilizando aplicaciones Linux de escritorio, se recomienda como mínimo un microprocesador Pentium II a 400Mhz o más rápido.

Placa Madre

En cuanto a la placa madre, Linux soporta los estandartes de los buses de datos de la mayoría de los PC como son ISA, EISA, PCI y VESA. Otros buses de datos auxiliares soportados son AGP, USB e IEEE 1394.

El acceso a la BIOS puede ser necesario para cambiar algún parámetro de arranque del ordenador, como activar el arranque desde CD-ROM.

Memoria

En cuanto a memoria RAM, Linux necesita al menos 128 MB para un adecuado funcionamiento del entorno de escritorio. Existen diferentes entornos de escritorio e incluso podemos ejecutar Linux sin sistema gráfico, siendo ésta la forma de ejecución recomendada para servidores. En el caso de Knoppix, al ejecutarse el sistema enteramente sobre memoria RAM, la necesidad de RAM es mayor y, aunque funciona a partir de 128 MB, es recomendable aumentar la memoria al máximo posible para disfrutar de un funcionamiento fluido.

Dispositivos de almacenamiento

En cuanto a los recursos de disco duro se recomienda para las nuevas versiones bastante espacio libre, aunque dependerá, como en el caso de la memoria RAM, del uso que le vayamos a dar. A partir de 1 GB de espacio podemos disfrutar de un entorno gráfico, pero según queramos instalar más aplicaciones, este espacio se nos quedará corto rápidamente. Lo recomendable es tener al menos 4 GB de espacio.

Linux no se puede instalar en el espacio ocupado por otro SO, como si fuera una aplicación, pues no lo es, si no un SO por sí mismo. Necesita su propio espacio en el disco duro, lo cual se consigue creando particiones, que es la manera de repartir el espacio total del disco duro para varios propósitos. Así podemos tener uno o varios SO coexistiendo en un mismo disco duro, con una o varias particiones empleadas por cada uno de ellos.

Lo ideal es tener ese espacio libre en el disco duro sin asignar a ninguna partición, o, mucho mejor, partir de un disco duro vacío por completo. Pero en el caso de tener instalado otro SO, muchas de las instalaciones actuales son capaces de aprovechar el espacio no ocupado para crear una nueva partición y poder instalar Linux en ella.

Como hemos dicho, Knoppix es la excepción ya que no necesita disco duro y, en caso de necesitarlo para guardar los cambios que hagamos en la configuración, puede emplear el espacio (partición) de otro SO.

Otro dispositivo recomendable es el lector de CD-ROM. En caso de no disponer de él, podríamos hacer la instalación arrancando desde disquete y el programa instalador accedería a los ficheros necesarios para completar la instalación por red o de otro disco duro (según le indicásemos). Pero el disponer de CD-ROM es el medio más cómodo y sencillo para efectuar una instalación de Linux.

En el caso de las distribuciones "live" como Knoppix, el lector de CD-ROM es imprescindible, ya que se ejecuta directamente desde él.

REQUERIMINETOS DE INSTALACION DE WINDOWS

Ordenador

Sistema Operativo

Requerimientos

Procesador Pentium® o superior.

Microsoft® Windows® 95 (OSR2), Windows 98, o Windows 98 (second edition) (Ver novedades 06/02/2003)

Windows ME

Windows NT® 4.0 (con Service Pack 6, o superior) (Ver novedades 06/02/2003)

Windows 2000

Windows XP

Microsoft TCP/IP instalado.

10 MB de espacio en disco.

RAM:

  • 16 MB  Windows 95/98

  • 32 MB Windows NT y Windows ME

  • 64 MB Windows 2000

  • 128 MB Windows XP

Partición y formateo de discos.

En el mundo de la ingeniería de la computación, el particionamiento de discos duros es la creación de divisiones lógicas en un disco duro que permite aplicar el formato lógico de un sistema operativo específico.

El particionamiento es una técnica simple que puede considerarse como un precursor de la gestión de volúmenes lógicos, en inglés Logical Volume Management (LVM).

Más de un sistema operativo puede ser ejecutado o instalado en una sola computadora, sin una partición (usando LiveCDs, Pendrives o una segunda unidad de disco duro con un medio de arranque -por ejemplo un disquete- que salta al segundo disco duro).

A un volumen se le da formato mediante un sistema de archivos, como FAT o ReiserFS, y se le asigna una letra de unidad (en Windows) o un nombre como hda1 en Linux. En los sistemas Windows puede ver el contenido de un volumen haciendo clic en su icono en el Explorador de Windows o en Mi PC. En Linux y Unix-like se usa el comando 'df para ver la lista de particiones. Un único disco duro puede tener varios volúmenes, que también pueden incluir varios discos.

Particionamiento de disco en la IBM PC (Windows)

Una partición en el sistema Windows (bajo la arquitectura IBM PC) es una parte de una unidad de disco duro que puede tener un sistema de archivo independiente. Hay tres tipos de particiones principales:

  • Partición primaria

  • Partición extendida, que contiene una o más particiones lógicas

  • Partición lógica

  • Según el sistema Windows, el disco duro solamente puede albergar 4 particiones primarias. Las particiones extendidas se consideran como particiones primarias. Es decir, se pueden tener 4 particiones primarias, o 3 primarias y 1 extendida, 2 primarias y 1 extendida, etc. Nunca puede haber más de una partición extendida, lo que si ocurre es que dentro de esa zona del disco duro dedicada a las partición extendida se creen particiones o unidades lógicas, que al fin y al cabo son particiones lógicas pero dentro de la zona de la partición extendida. Resaltar que un disco duro tiene 4 particiones primarias y sólo una de ellas funciona como extendida, y dentro de esta partición extendida se crean a su vez particiones lógicas. Es decir un disco duro puede tener 3 particiones primarias, su partición extendida y 4 particiones lógicas (que forman parte de la extendida). Y entonces podríamos tener 7 sistemas de archivos diferentes (o iguales o repetidos) ya que la partición extendida no cuenta en sí, sino cuentan sus particiones lógicas.

    Estatus actual

    Las descripciones en este artículo de ninguna manera constituyen el único diseño posible para implementar el particionamiento de la unidad de disco duro en una IBM PC. Sin embargo, éste es el esquema de particionamiento único utilizado por los sistemas operativos de Microsoft que es el más usado en la arquitectura IBM PC.

    Lo dicho anteriormente no significa que no haya desviaciones posibles para este esquema. Hay varios productos de software, que por modificación de algunas partes de la secuencia de arranque, son capaces de extender este limitado esquema de particionamiento. No obstante, antes de usar cualquier tipo de software, es aconsejable estudiar como opera e interactúa este con los sistemas operativos que se estén ejecutando.

    Para la próxima aparición de la arquitectura IA-64 (la extensión de 64 bit de la línea x86) Intel tiene preparado un juego de especificaciones conocidas como Extensible Firmware Interface (EFI). Éstas incluyen, entre otras cosas, un formato más avanzado para la tabla de partición (llamada “GUID Partition Table” o GPT) la elegida en discusión en este artículo. En el que sepude utilisar endiferente forma.

    Particiones primarias

    En los sistemas Windows para IBM PCs, las particiones tradicionalmente se han apoyado usando una estructura llamada Tabla de Partición, que es escrita apuntando el final del registro de arranque maestro. La tabla, que no puede contener más de 4 registros de particiones (que son también llamados partition descriptors), específica para cada uno su principio, final y tamaño en los diferentes modos de direccionamientos, también como un solo número llamado partition type, y un marcador que dice si una partición esta activa. Sólo una partición puede normalmente estar activa en un momento. El marcador es usado durante el arranque: después el BIOS carga el registro de arranque maestro en la memoria y lo ejecuta, la MBR de DOS checa la tabla de partición a su final, y localiza la partición activa. Entonces procede para cargar el sector de arranque de esta partición en la memoria y la corre. Al contrario del registro de arranque maestro, que es generalmente independiente del sistema operativo, el sector de arranque está instalado junto con el sistema operativo y de esa manera puede conocer cómo exactamente cargar el sistema ubicado en ese disco en particular.

    Note que mientras la presencia de un marcador activo es estandarizado, este no es normalmente usado por cualquier programa pero el cargador de arranque, y para que el cargador de arranque no este obligado a cargar la partición que fue marcada activa. Algunos cargadores de arranque usan esto para arrancar sistemas operativos desde particiones no activas. Por ejemplo, los cargadores de arranque LILO, GRUB (muy comunes en el sistema Linux) y XOSL no buscan arriba de la tabla de partición en total, pero simplemente carga una segunda etapa (que puede ser contenida en el resto del cilindro 0 o en el sistema de archivo. Después la segunda etapa es cargada, ésta puede ser usada o para cargar el sector de arranque desde cualquiera de las particiones del disco (así habilitando al usuario cargar el sistema desde este), o si el cargador de arranque conoce como, localizar el kernel del sistema operativo en una de las particiones y cargarlo (para propósitos de recuperación, puede permitir al usuario especificar opciones de kernel adicionales).

    Particiones extendidas y lógicas

    El DOS de todas las versiones puede leer sólo una partición FAT primaria en el disco duro. Ésta, y la deterioración de la FAT de la utilización del disco y el desempeño como los tamaños de discos se hizo a Microsoft inventar un esquema mejorado de particionamiento de disco. El esquema fue relativamente simple: una de las entradas de la tabla de partición principal fue llamada una partición extendida, y dada un número del tipo de partición especial (0x05). Sólo el campo de inicio de partición dentro de éste fue usado, para almacenar la ubicación del primer descriptor de la partición extendida; que a su vez tenía un campo similar almacenando la ubicación de la siguiente, en efecto que crea una lista unida de descriptores de partición. Los otros campos de una partición extendida son indefinidos, y desde estos significados ningún espacio está asignado a la misma partición, esta no puede ser usada para almacenamiento de datos. Las particiones en el inicio de la lista unida con una partición extendida son llamadas las particiones lógicas. Éstas son espacio asignados, y puede usarse para almacenar datos. Los sistemas operativos viejos, que no eran conscientes de particiones extendidas, particiones simplemente ignoradas con el número de tipo 0x05, y así la contabilidad fue preservada. Este esquema puede teóricamente reemplazar el viejo, como todas las particiones de un disco duro pueden ser puestas dentro de una sola partición extendida; sin embargo, por alguna razón Microsoft no actualizo su sistema operativo DOS (o de hecho cualquier otro hasta el momento), por lo tanto este arrancaría desde una partición extendida, y debido a que la necesidad para particiones primarias se preservaron. Más encima de, estas todavía habría sólo permitido una partición FAT primaria por unidad, significando todas las otras particiones FAT primarias deben temer sus números de tipo de partición prior cambiando al arranque DOS, para que ésta sea capaz de proceder. Esta técnica, usada por varios administradores de arranque populares, se volvió conocidos como ocultación de la partición.

    Particionamiento está hecho por varias razones:

    • Algunos sistemas de archivos (por ejemplo, versiones viejas de sistemas de archivos FAT de Microsoft) tienen límites de tamaños más pequeños que una unidad de disco moderna.

    • Si una partición se vuelve corrupta, se puede intentar salvar datos encima de otra partición. Éste es similar a un RAID, excepto en el mismo disco.

    • En algunos sistemas operativos, por ejemplo Linux, los archivos swap tienen que ser sus propias particiones.

    • A menudo, dos sistemas operativos no pueden coexistir en la misma partición, o usar diferentes formatos de disco “nativo”. La unidad es particionada en discos lógicos diferentes para diferentes sistemas operativos.

    Numerosos sistemas de particionamiento han aparecido durante años, para casi todas las arquitecturas de computadoras en existencia. Muchos de éstos son relativamente transparentes y permiten manipulación conveniente de las particiones de disco; algunos, sin embargo, son obsoletos.

    Este esquema es extensamente considerado obsoleto, porque permite sólo con discos duros mayor que 8 gigabytes en tamaño. Como la arquitectura IBM PC es extremadamente común, las tablas de partición probablemente están para quedarse durante un tiempo. Sin embargo, un proyecto reciente de Intel y Microsoft llamado Extensible Firmware Initiative (EFI) tiene un componente llamado GUID Partition Table.

    Porqué usar particiones lógicas

    Las particiones extendidas se inventaron como una manera de superar el límite arbitrario de 4 particiones máximas por cada disco duro, y así poder crear un número ilimitado de particiones lógicas, cada una con un sistema de archivos diferente de la otra. Sin embargo tan sólo algunos sistemas operativos (como OS/2, Linux y cualquier Windows basado en Windows NT) son capaces de arrancar desde una partición lógica, por lo que comúnmente se dice que las particiones lógicas deberían ser utilizadas solamente para almacenar archivos de datos, aunque hay excepciones.

    Caracteristicas principales de Unix

    UNIX es un sistema operativo, que se creó en los años 60 en los laboratorios BELL. En un principio surgió como respuesta a las necesidades de las máquinas de la época, máquinas muy caras, que debían ser compartidas por muchos usuarios, con capacidades muy limitadas que tenían que ser exprimidas al máximo.

    Esto dió como resultado un sistema operativo con las ciguientes características:

    • Multitarea:

    Debía ser capaz de ejecutar varios programas a la vez. Controlando que cada uno no consumiese todos los recursos del sistema y permitiendo que realice las funciones para las que ha sido diseñado.

    • Multiusuario:

    Varios usuarios concurrentes podían emplear los distintos recursos del sistema. Así, varios usuarios utilizarían al mismo tiempo el mismo programa, sin que cada uno interfiriera en la actividad del otro. Ésto está intimamente relacionado con la reserva de memoria por proceso y no por programa.

    • Jerárquico:

    Cada usuario tenía unos permisos y unos privilegios y, éstos eran insaltables. Por ello, si un usuario intentaba algo para lo que no tenía privilegios, el sistema debía negarle el permiso y mostrarle un mensaje de error.

    • Robustez:

    Era necesario que el sistema fuera lo más robusto posible, para poder aprovechar al máximo el rendimiento de equipos, por lo general, muy caros.

    • Consistencia:

    El sistema debía evolucionar de forma continuada, pero sin cambiar las órdenes y comandos que empleanban los usuarios, con el objetivo de asegurar la no obsolescencia de los conocimientos básicos sobre el sistema. Para ello, se creó la asociación de productores de UNIX, agrupada bajo el nombre de USENIX. El objetivo de ésta asociación era mantener la unidad de UNIX más allá de las distintas versiones.

    Procesos

    Para poder entender bien el concepto de Proceso deberemos diferenciarlo en el lugar donde se encuentra. Un programa será un archivo cuando se encuentre en el disco rígido y será un proceso al encontrarse en memoria; de esta forma se comprenderá mejor que es un Proceso. Pero también es cierto que un proceso es mucho mas que un programa en memoria y sobre todo en la clase de SO que nos compete, con sus funciones de multiusuario y multitarea como lo son los SO Un*x.

    Cada programa cuenta con un conjunto de datos que usa para hacer su trabajo y en la mayoría de los casos estos datos no forman parte del programa. Como ejemplo tomemos un programa de edición de textos. Los datos del archivos que el programa esta editando no forma parte del programa, pero si del proceso en memoria. Si alguna otra persona utilizara al mismo tiempo el mismo procesador de texto que se encuentra en ese sistema, los dos estarían utilizando el mismo programa, pero no el mismo proceso. Ambas tendrían una copia para cada uno del proceso del editor de texto. Es así que los programas podrán ser únicos para todos los usuarios, pero los procesos pertenecerán a cada usuario.

    En Un*x varios usuarios podrán estar utilizando el sistema al mismo tiempo. Esto se traduce a que el sistema tendrá múltiples procesos cargados en la memoria, y cada uno de ellos requerirá de la atención de la CPU en algún momento. El sistema llevará un control de los procesos que están funcionando en ese momento, en que terminal y a que usuario pertenece además de otros datos. Todo ello estará apuntado en una tabla de procesos, en la cual el SO asignará el tiempo que tardará la CPU para atender cada proceso.

    'Sistemas operativos'

    Cuando uno entra a un sistema Un*x, generalmente obtiene accesos a lo que se denomina intérprete de comandos. La gente que haya utilizado DOS sabrá que esto, ya que el C:> es el indicador de shell de su interprete de comando, el COMMAND.COM. En cambio, aquí el indicador será algo como $, # o %. Este shell es un proceso que esta corriendo y pertenece al usuario que esta corriéndolo en ese momento. En realidad es una copia del intérprete de comandos que esta corriendo en memoria.

    Al cargarse un programa desde el intérprete de comando (shell), este no es reemplazado por dicho proceso, sino que queda a la espera de algún otro mandato. Mientras tanto, para correr el programa, se crea un nuevo proceso, el del programa, que será hijo del proceso del shell. Un proceso tiene un solo padre pero puede tener múltiples hijos.

    'Sistemas operativos'

    Al iniciar una sesión en GNU/Linux el usuario será propietario de un único proceso, por ejemplo /bin/bash que es el intérprete de comandos mas usados y el que usaremos nosotros. Luego cada proceso que ejecute a partir del bash, se acomodará en el árbol de procesos como hijo del bash.

    El bash permanecerá atento a que se le de un nuevo mandato, mientras tanto se dice que esta durmiendo. Como habíamos dicho antes, múltiples procesos podrán estar ejecutándose al mismo tiempo. Por ello se tendrá que asignar un tiempo a cada proceso para recibir la atención exclusiva la CPU. Es común que cada proceso tenga por 1/100 segundos la atención total de la CPU. Esto dará la ilusión al usuario de que es el único que tiene la atención del sistema, pero que ocurriría si el proceso se colgase. En un sistema monousuario como el Windows (no el NT) esto seguramente ocasionaría el cuelgue del sistema ya que el kernel no podría recuperarse dado que el proceso tiene control absoluto de la CPU. Esto no ocurre en GNU/Linux dado que todos los procesos responden al kernel y es el kernel quien les da permiso de usar la CPU en el momento necesario.

    Supongamos que queremos guardar nuestro trabajo del editor de textos. Entonces, y con la combinación de teclas correctas, le damos la orden al proceso del editor de textos para que guarde el trabajo. Esto, para nosotros, se hace instantáneamente pero es solo otra ilusión. El proceso del editor de textos emite una petición al kernel para escritura del disco, el kernel entonces escribirá el disco en bloques, dependiendo de cuan libre este, mientras tanto guardara los datos en un espacio secundario de almacenamiento denominado "cache". Esto es beneficioso por varias razones. En caso de que los datos que estemos escribiendo en ese momento sean requeridos un momento después, estos estarían disponibles en el cache y se ahorraría un viaje al disco. También seria beneficioso por el lado de la eficiencia del sistema, ya que escribirá al disco solo cuando el procesador este ocioso, no ocasionando con el proceso de escritura que el sistema funcionara más lentamente. Suponiendo que alguna otra persona necesitara en ese momento un dato del disco, el proceso de lectura tendría que esperar su turno, entonces es puesto a dormir. El proceso tendrá que esperar a que se termine el tiempo asignado al proceso de escritura y luego se le despertara y podrá tomar su lugar para acceder al disco.

    Existe también otro tipo de eventos en los que la CPU repara para poder detener a un proceso en curso, estos son las interrupciones. Se ocasionan cuándo un dispositivo, léase mouse o teclado, requiere la atención de la CPU, es asi que se genera una interrupción que la CPU atenderá, mandando a dormir al proceso en curso. Por supuesto hay mas complicaciones que las expuestas aquí, entre ellas las prioridades de los procesos que se verán cuando tomemos la parte de 6.7 de Tareas y Procesos. El tema de prioridades lo maneja el kernel de acuerdo a varios aspectos, como el dueño del proceso, si es de sistema o no, etc. Los procesos de sistemas son utilizados para la administración de memoria y la calendarización de turnos para la CPU, etc. Estos procesos se los conoce como daemon (DEMONIOS) o programas servidores. Funcionan sin la intervención del usuario y sin que este los vea y hacen su trabajo esperando su turno cuando les llega para actuar.

    Estados de un proceso

    El principal trabajo del procesador es ejecutar las instrucciones de máquina que se encuentran en memoria principal. Estas instrucciones se encuentran en forma de programas. Para que un programa pueda ser ejecutado, el sistema operativo crea un nuevo proceso, y el procesador ejecuta una tras otra las instrucciones del mismo. En un entorno de multiprogramación, el procesador intercalará la ejecución de instrucciones de varios programas que se encuentran en memoria. El sistema operativo es el responsable de determinar las pautas de intercalado y asignación de recursos a cada proceso.

    Modelo de dos estados

    'Sistemas operativos'

    El modelo de estados más simple es el de dos estados. En este modelo, un proceso puede estar ejecutándose o no. Cuando se crea un nuevo proceso, se pone en estado de No ejecución. En algún momento el proceso que se está ejecutando pasará al estado No ejecución y otro proceso se elegirá de la lista de procesos listos para ejecutar para ponerlo en estado Ejecución. De esta explicación se desprende que es necesario que el sistema operativo pueda seguirle la pista a los procesos, conociendo su estado y el lugar que ocupa en memoria. Además los procesos que no se están ejecutando deben guardarse en algún tipo de cola mientras esperan su turno para ejecutar.

    Modelo de cinco estados

    El modelo anterior de dos estados funcionaría bien con una cola FIFO y planificación por turno rotatorio para los procesos que no están en ejecución, si los procesos estuvieran siempre listos para ejecutar. En la realidad, los procesos utilizan datos para operar con ellos, y puede suceder que no se encuentren listos, o que se deba esperar algún suceso antes de continuar, como una operación de Entrada/Salida. Es por esto que se necesita un estado donde los procesos permanezcan bloqueados esperando hasta que puedan proseguir. Se divide entonces al estado No ejecución en dos estados: Listo y Bloqueado. Se agregan además un estado Nuevo y otro Terminado.

    'Sistemas operativos'

    Los cinco estados de este diagrama son los siguientes:

    • Ejecución: el proceso está actualmente en ejecución.

    • Listo: el proceso está listo para ser ejecutado, sólo está esperando que el planificador así lo disponga.

    • Bloqueado: el proceso no puede ejecutar hasta que no se produzca cierto suceso, como una operación de Entrada/Salida.

    • Nuevo: El proceso recién fue creado y todavía no fue admitido por el sistema operativo. En general los procesos que se encuentran en este estado todavía no fueron cargados en la memoria principal.

    • Terminado: El proceso fue expulsado del grupo de procesos ejecutables, ya sea porque terminó o por algún fallo, como un error de protección, aritmético, etc.

    Los nuevos estados Nuevo y Terminado son útiles para la gestión de procesos. En este modelo los estados Bloqueado y Listo tienen ambos una cola de espera. Cuando un nuevo proceso es admitido por el sistema operativo, se sitúa en la cola de listos. A falta de un esquema de prioridades ésta puede ser una cola FIFO. Los procesos suspendidos son mantenidos en una cola de bloqueados. Cuando se da un suceso se pasan a la cola de listos los procesos que esperaban por ese suceso.

    Si existe un esquema con diferentes niveles de prioridad de procesos es conveniente mantener varias colas de procesos listos, una para cada nivel de prioridad, lo que ayuda a determinar cuál es el proceso que más conviene ejecutar a continuación.

    Procesos suspendidos

    Una de las razones para implementar el estado Bloqueado era poder hacer que los procesos se puedan mantener esperando algún suceso, por ejemplo una Entrada/Salida. Sin embargo, al ser mucho más lentas estas operaciones, puede suceder en nuestro modelo de cinco estados todos los procesos en memoria estén esperando en el estado Bloqueado y que no haya más memoria disponible para nuevos procesos. Podría conseguirse más memoria, aunque es probable que esto sólo permita procesos más grandes y no necesariamente nuevos procesos. Además hay un costo asociado a la memoria y de cualquier forma es probable que se llegaría al mismo estado con el tiempo. Otra solución es el intercambio. El intercambio se lleva a cabo moviendo una parte de un proceso o un proceso completo desde la memoria principal al disco, quedando en el estado Suspendido. Después del intercambio, se puede aceptar un nuevo proceso o traer a memoria un proceso suspendido anteriormente. El problema que se presenta ahora es que puede ser que si se decide traer a memoria un proceso que está en el estado Suspendido, el mismo todavía se encuentre bloqueado. Sólo convendría traerlo cuando ya está listo para ejecutar, esto implica que ya aconteció el suceso que estaba esperando cuando se bloqueó. Para tener esta diferenciación entre procesos suspendidos, ya sean listos como bloqueados, se utilizan cuatro estados: Listo, Bloqueado, Bloqueado y suspendido y Listo y suspendido.

    'Sistemas operativos'

    Proceso en espera

    Dos o más procesos pueden cooperar mediante señales de forma que uno obliga a detenerse a los otros hasta que reciban una señal para continuar.

    • Se usa una variable llamada semáforo para intercambiar señales.

    • Si un proceso esta esperando una señal, se suspende (WAIT) hasta que la señal se envie (SIGNAL).

    • Se mantiene una cola de procesos en ESPERA en el semáforo.

    • La forma de elegir los procesos de la cola en ESPERA es mediante una política FIFO.

    La sincronización explícita entre procesos es un caso particular del estado "bloqueado". En este caso, el suceso que permite desbloquear un proceso no es una operación de entrada/salida, sino una señal generada a propósito por el programador desde otro proceso.

    Planificador de procesos

    El planificador es un componente funcional muy importante de los sistemas operativos multitarea y multiproceso, y es esencial en los sistemas operativos de tiempo real. Su función consiste en repartir el tiempo disponible de un microprocesador entre todos los procesos que están disponibles para su ejecución.

    MOTIVACION

    Todo sistema operativo gestiona los programas mediante el concepto de proceso. En un instante dado, en el ordenador pueden existir diversos procesos listos para ser ejecutados. Sin embargo, solamente uno de ellos puede ser ejecutado (en cada microprocesador). De ahí la necesidad de que una parte del sistema operativo gestione, de una manera equitativa, que proceso debe ejecutarse en cada momento.

    COMO FUNCIONA

    Supóngase un ordenador que contiene un único microprocesador. Dicho microprocesador solamente puede ejecutar un programa en cada instante de tiempo. Además, cuando un programa está ejecutándose, nunca dejará de hacerlo por sí mismo. De manera que, en principio, cualquier programa monopoliza el microprocesador impidiendo que otros programas se ejecuten.

    Por ello, la primera misión de un planificador es expulsar el programa en ejecución cuando decida que es pertinente. Esto se consigue de dos maneras, siempre con ayuda del propio hardware:

    • Cuando expira un temporizador, que se activa a intervalos regulares de tiempo. En intervalos muy cortos, generalmente cada 250 milisegundos.

    • Cuando el programa solicita una operación de entrada/salida. Dado que el programa no puede continuar hasta que termine dicha operación, es un buen momento para ejecutar otro programa.

    En ambos casos, el control del microprocesador pasa a manos del planificador gracias a que el hardware genera una interrupción. En este proceso de expulsión, se salva el estado de ejecución del programa (programa y su estado se denomina proceso).

    A continuación, el planificador decide cuál será el siguiente proceso en ejecutarse. Naturalmente, solamente se escogen procesos que estén listos para hacerlo. Si un proceso sigue esperando por una operación de entrada/salida no será candidato a ejecutarse hasta que finalice tal operación.

    La selección del proceso sigue alguna política de planificación (ver más adelante) prestablecida. Una vez seleccionado un proceso, se procede a ejecutarlo. Para ello, el planificador restaura su estado de ejecución (previamente salvado) y abandona el uso del microprocesador cediéndoselo a dicho proceso.

    Todo esto apenas dura unos pocos milisegundos.

    Gracias a que el tiempo del microprocesador se reparte entre todos los procesos a intervalos muy cortos, el ordenador ofrece la sensación de que todos los procesos están ejecutándose a la vez.

    Cuando un ordenador tiene varios microprocesadores (véase arquitecura NUMA y SMP), este esquema se repite para cada microprocesador.

    TIEMPO REAL

    Un sistema operativo en tiempo real se caracteriza por garantizar que todo programa se ejecutará en un límite máximo de tiempo. El planificador debe comportarse de manera que esto sea cierto para cualquier proceso.

    En estos casos, la finalidad del planificador es balancear o equilibrar la carga del procesador, impidiendo que un proceso monopolice el procesador o que sea privado de los recursos de la máquina. En entornos de tiempo real, como los dispositivos para el control automático en la industria (por ejemplo, robots), el planificador también impide que los procesos se paren o interrumpan a otros que esperan que se realicen ciertas acciones. Su labor resulta imprescindible para mantener el sistema estable y funcionando.

    NIVELES DE PLANIFICACION

    En los sistemas operativos de propósito general, existen dos tipos de planificador. El planificador a corto plazo es el que se ha descrito aquí, siendo también el más importante. En inglés, se denomina scheduler. Pero también existe un planificador a largo plazo (en inglés, planner) relacionados con aquellos procesos que no se encuentran inmediatamente en memoria principal (véase memoria virtual). Su misión es mover procesos entre memoria principal y disco (lo que se conoce como swapping).

    Estos dos planificadores son habituales en sistemas operativos multi-hilo, donde cada proceso puede constar de varios hilos. Se supone que cada hilo debe ejecutarse concurrentemente con los demás hilos de su propio proceso y de otros procesos. Así, el planificador a corto plazo se preocupa de los hilos, mientras que el planificador a largo plazo se preocupa de los procesos.

    POLITICAS DE PLANIFICAION

    A continuación se enumeran diversas políticas de planificación. Lo habitual es utilizar políticas mixtas. Generalmente, el planificador a corto plazo utiliza round-robin, mientras que el planificador a largo plazo utiliza varias colas FIFO. Cada una de estas colas corresponde a una prioridad diferente.

    • Planificación Round-robin

    • Round-robin con pesos.

    • Prioridades monótonas en frecuencia (RMS (Rate-monotonic scheduling))

    • Menor tiempo de respuesta primero (EDF (Earliest deadline first scheduling))

    • FIFO.

    • LIFO.

    Creación de procesos con fork().

    Los procesos de un sistema UNIX tienen una estructura jerárquica, de manera que un proceso (proceso padre) puede crear un nuevo proceso (proceso hijo) y así sucesivamente. Para la realización de aplicaciones con varios procesos, el sistema operativo UNIX proporciona la llamada al sistema1 fork().

    Cabecera:

    #include <unistd.h>

    int fork(void);

    Comportamiento de la llamada:

    fork() crea un nuevo proceso exactamente igual (mismo código) al proceso que invoca la función. Ambos procesos continúan su ejecución tras la llamada fork(). En caso de error, la función devuelve el valor -1 y no se crea el proceso hijo. Si no hubo ningún error, el proceso padre (que realizó la llamada) obtiene el pid del proceso hijo que acaba de nacer, y el proceso hijo recibe el valor 0.

    Ejemplo:

    En el ejemplo que se muestra a continuación, se crea un proceso hijo que imprime en pantalla el pid de su proceso padre, mientras que el proceso padre imprime en pantalla su propio pid y el del proceso hijo que ha creado. Para ello, se utilizan las llamadas al sistema getpid() y getppid(). El proceso padre, antes de finalizar se suspende hasta que el hijo acaba, para evitar que éste se quede zombie. Para ello, utiliza la llamada al sistema wait(), que recibe en la variable status el estado en que el proceso hijo finalizó.

    #include <stdio.h>

    #include <unistd.h>

    #include <sys/types.h>

    #include <sys/wait.h>

    int main() {

    int pid = 0, status = 0;

    if ((pid = fork()) == -1) {

    printf(``Error al crear proceso hijo\n'');

    exit(1);

    }

    if (pid == 0) { /* Proceso Hijo */

    printf(``El PID de mi proceso padre es %d\n'', getppid());

    exit(1);

    }

    else { /* Proceso Padre */

    printf(``Mi PID es el %d y he creado un proceso hijo cuyo pid es %d\n'',

    getpid(), pid);

    wait(&status);

    printf(``\nEl proceso hijo finalizo con el estado %d\n'', status);

    exit(0);

    }

    }

    Gestion de memoria.

    Introducción

    La memoria es uno de los principales recursos de la computadora, la cual debe de administrarse con mucho cuidado. Aunque actualmente la mayoría de los sistemas de cómputo cuentan con una alta capacidad de memoria, de igual manera las aplicaciones actuales tienen también altos requerimientos de memoria, lo que sigue generando escasez de memoria en los sistemas multitarea y/o multiusuario.
    La parte del sistema operativo que administra la memoria se llama administrador de memoria y su labor consiste en llevar un registro de las partes de memoria que se estén utilizando y aquellas que no, con el fin de asignar espacio en memoria a los procesos cuando éstos la necesiten y liberándola cuando terminen, así como administrar el intercambio entre la memoria principal y el disco en los casos en los que la memoria principal no le pueda dar capacidad a todos los procesos que tienen necesidad de ella.

    Los sistemas de administración de memoria se pueden clasificar en dos tipos: los que desplazan los procesos de la memoria principal al disco y viceversa durante la ejecución y los que no.
    El propósito principal de una computadora es el de ejecutar programas, estos programas, junto con la información que accesan deben de estar en la memoria principal (al menos parcialmente) durante la ejecución.
    Para optimizar el uso del CPU y de la memoria, el sistema operativo debe de tener varios procesos a la vez en la memoria principal, para lo cual dispone de varias opciones de administración tanto del procesador como de la memoria. La selección de uno de ellos depende principalmente del diseño del hardware para el sistema. A continuación se observarán los puntos correspondientes a la administración de la memoria.

    Aspectos generales

    Memoria real
    La memoria real o principal es en donde son ejecutados los programas y procesos de una computadora y es el espacio real que existe en memoria para que se ejecuten los procesos. Por lo general esta memoria es de mayor costo que la memoria secundaria, pero el acceso a la información contenida en ella es de más rápido acceso. Solo la memoria cache es más rápida que la principal, pero su costo es a su vez mayor.

    Memoria virtual
    El termino memoria virtual se asocia a dos conceptos que normalmente a parecen unidos:

  • El uso de almacenamiento secundario para ofrecer al conjunto de las aplicaciones la ilusión de tener mas memoria RAM de la que realmente hay en el sistema. Esta ilusión de existe tanto a nivel del sistema, es decir, teniendo en ejecución mas aplicaciones de las que realmente caben en la memoria principal, sin que por ello cada aplicación individual pueda usar mas memoria de la que realmente hay o incluso de forma mas general, ofreciendo a cada aplicación mas memoria de la que existe físicamente en la maquina.

  • Ofrecer a las aplicaciones la ilusión de que están solas en el sistema, y que por lo tanto, pueden usar el espacio de direcciones completo. Esta técnica facilita enormemente la generación de código, puesto que el compilador no tiene porque preocuparse sobre dónde residirá la aplicación cuando se ejecute.

  • Espacio De Direcciones
    Los espacios de direcciones involucrados en el manejo de la memoria son de tres tipos:

    • Direcciones físicas: son aquellas que referencian alguna posicion en la memoria física.

    • Direcciones lógicas : son las direcciones utilizadas por los procesos. Sufren una serie de transformaciones , realizadas por el procesador (la MMU), antes de convertirse en direcciones físicas.

    • Direcciones lineales: direcciones lineales se obtienen a partir de direcciones logicas tras haber aplicado una transformación dependiente de la arquitectura.

    Los programas de usuario siempre tratan con direcciones virtuales ; nunca ven las direcciones fisicas reales..

    Unidad De Manejo De Memoria
    La unidad de manejo de memoria (MMU) es parte del procesador. Sus funciones son:

    • Convertir las direcciones lógicas emitidas por los procesos en direcciones físicas.

    • Comprobar que la conversión se puede realizar. La dirección lógica podría no tener un dirección física asociada. Por ejemplo, la pagina correspondiente a una dirección se puede haber trasladado a una zona de almacenamiento secundario temporalmente.

    • Comprobar que el proceso que intenta acceder a una cierta direccion de memoria tiene permisos para ello.

    • La MMU se Inicializa para cada proceso del sistema. Esto permite que cada procesop pueda usar el rango completo de direcciones lógicas (memoria virtual), ya que las conversiones de estas direcciones serán distintas para cada proceso.

    • En todos los procesos se configura la MMU para que la zona del núcleo solo se pueda acceder en modo privilegiado del procesador.

    • La configuración correspondiente al espacio de memoria del núcleo es idéntica en todos los procesos.

    'Sistemas operativos'

    Intercambio

    El objetivo del intercambio es dar cabida a la ejecución de mas aplicaciones de las que pueden residir simultáneamente en la memoria del sistema:
    Consiste en trasladar el código y los datos de un proceso completo de memoria al sistema de almacenamiento secundario , para cargar otro previamente almacenado, no permite a un proceso utilizar mas memoria RAM de la que realmente existe en el sistema. Esta técnica puede ser ineficiente ya que se tiene que hacer el intercambio completo del proceso, aunque éste solo vaya a ejecutar una pequeña porción del código.
    Durante el intercambio un proceso puede ser sacado temporalmente de memoria y llevado a un lugar especial del disco y posteriormente vuelto a memoria y continuada su ejecución..
    El lugar de almacenamiento temporal suele ser un espacio suficientemente grande como para acomodar copias de las imágenes de meoria de todos los usuarios.

    Asignacion Contigua
    La memoria principal normalmente se divide en dos particiones:

    • Sistema operativo residente, normalmente en la parte baja de memoria con los vectores de interrupción.

    • Procesos de usuario en la parte alta.

    Asignación de partición simple:
    Puede utilizarse un esquema de registro de relocalización y limite para proteger un proceso de usuario de otro y de cambios del código y datos del sistema operativo .
    El registro de relocalización contiene la dirección contiene la dirección física mas pequeña; el registro limite contiene el rango de las direcciones lógicas cada dirección lógica debe ser menor al registro limite

    Asignación de particiones múltiples:
    Bloques de distintos tamaños están distribuidos en memoria , cuando llega un proceso se le asigna un hueco suficientemente grande para acomodarle.
    El sistema operativo debe tener información sobre:

  • Particiones asignadas

  • Particiones libres (huecos)

  • Asignación de partición dinámica
    El proceso de compactación es una instancia particular del problema de asignación de memoria dinámica, el cual es el cómo satisfacer una necesidad de tamaño n con una lista de huecos libres. Existen muchas soluciones para el problema. El conjunto de huecos es analizado para determinar cuál hueco es el más indicado para asignarse. Las estrategias más comunes para asignar algún hueco de la tabla son:

    • Primer ajuste: Consiste en asignar el primer hueco con capacidad suficiente. La búsqueda puede iniciar ya sea al inicio o al final del conjunto de huecos o en donde terminó la última búsqueda. La búsqueda termina al encontrar un hueco lo suficientemente grande.

    • Mejor ajuste: Busca asignar el espacio más pequeño de los espacios con capacidad suficiente. La búsqueda se debe de realizar en toda la tabla, a menos que la tabla esté ordenada por tamaño. Esta estrategia produce el menor desperdicio de memoria posible.

    • Peor ajuste: Asigna el hueco más grande. Una vez más, se debe de buscar en toda la tabla de huecos a menos que esté organizada por tamaño. Esta estrategia produce los huecos de sobra más grandes, los cuales pudieran ser de más uso si llegan procesos de tamaño mediano que quepan en ellos.

    Se ha demostrado mediante simulacros que tanto el primer y el mejor ajuste son mejores que el peor ajuste en cuanto a minimizar tanto el tiempo del almacenamiento. Ni el primer o el mejor ajuste es claramente el mejor en términos de uso de espacio, pero por lo general el primer ajuste es más rápido.

    Problema: La fragmentación.

    4. Fragmentación

    La fragmentación es la memoria que queda desperdiciada al usar los métodos de gestión de memoria que se vieron en los métodos anteriores. Tanto el primer ajuste, como el mejor y el peor producen fragmentación externa.
    La fragmentación es generada cuando durante el reemplazo de procesos quedan huecos entre dos o más procesos de manera no contigua y cada hueco no es capaz de soportar ningún proceso de la lista de espera.

    La fragmentación puede ser:

    • Fragmentación Externa: existe el espacio total de memoria para satisfacer un requerimiento, pero no es contigua.

    • Fragmentación Interna: la memoria asignada puede ser ligeramente mayor que la requerida; esta referencia es interna a la partición, pero no se utiliza.

    La fragmentación externa se puede reducir mediante la compactación para colocar toda la memoria libre en un solo gran bloque, pero est a solo es posible si la relocalización es dinámica y se hace en tiempo de ejecución.

    Paginación

    Es una técnica de manejo de memoria, en la cual el espacio de memoria se divide en secciones físicas de igual tamaño, denominadas marcos de página. Los programas se dividen en unidades lógicas, denominadas páginas, que tienen el mismo tamaño que los marcos de páginas. De esta forma, se puede cargar una página de información en cualquier marco de página.
    Las páginas sirven como unidad de almacenamiento de información y de transferencia entre memoria principal y memoria auxiliar o secundaria. Cada marco se identifica por la dirección de marco, que esta en la posición física de la primera palabra en el marco de página.
    Las páginas de un programa necesitan estar contiguamente en memoria, aunque el programador lo observe de esta forma. Los mecanismos de paginación permiten la correspondencia correcta entre las direcciones virtuales (dadas por los programas) y las direcciones reales de la memoria que se reverencien.
    Cada pagina consiste en z palabras contiguas; un espacio de direcciones N de un programa consiste de n paginas (0,1,2,3…n-1) (n*z direcciones virtuales) y el espacio de memoria consiste de m marcos de paginas (0,z,2z,…,(m-1)z)(m*z posiciones). Una dirección virtual a es equivalente a una dirección dada como una dupla (p, d), en la cual p es el número de la página y d el número de la palabra dentro de la página, de acuerdo con la relación:
    a=p*z+d (0<=d<z)
    p=(a/z) (parte entera de la division)
    d=a mod z (resto de divisor a/z)

    En las maquinas que usan aritmética binaria, el calculo de (p, d) es trivial, si z es potencia de 2. Por ejemplo, si el campo de direcciones de la instrucción es de m bits (m>6), los cuatro bits mas significativos indican el numero de la pagina y los m-4 bits restantes, el desplazamiento.

    Para tener el control de las páginas, debe mantenerse una tabla en memoria que se denomina tabla de Mapas de Pagina (PMT) para cada uno de los procesos.
    Hasta ahora, los métodos que hemos visto de la administración de la memoria principal, nos han dejado con un problema: fragmentación, (huecos en la memoria que no pueden usarse debido a lo pequeño de su espacio) lo que nos provoca un desperdicio de memoria principal.
    Una posible solución para la fragmentación externa es permitir que espacio de direcciones lógicas lleve a cabo un proceso en direcciones no contiguas, así permitiendo al proceso ubicarse en cualquier espacio de memoria física que esté disponible, aunque esté dividida. Una forma de implementar esta solución es a través del uso de un esquema de paginación. La paginación evita el considerable problema de ajustar los pedazos de memoria de tamaños variables que han sufrido los esquemas de manejo de memoria anteriores. Dado a sus ventajas sobre los métodos previos, la paginación, en sus diversas formas, es usada en muchos sistemas operativos.
    Al utilizar la memoria virtual, las direcciones no pasan en forma directa al bus de memoria, sino que van a una unidad administradora de la memoria (MMU -Memory Management Unit). Estas direcciones generadas por los programas se llaman direcciones virtuales y conforman el hueco de direcciones virtuales. Este hueco se divide en unidades llamadas páginas. Las unidades correspondientes en la memoria física se llaman marcos para página o frames. Las páginas y los frames tienen siempre el mismo tamaño.

    Tablas de páginas
    Cada página tiene un número que se utiliza como índice en la tabla de páginas, lo que da por resultado el número del marco correspondiente a esa página virtual. Si el bit presente / ausente es 0, se provoca un señalamiento (trap) hacia el sistema operativo. Si el bit es 1, el número de marco que aparece en la tabla de páginas se copia en los bits de mayor orden del registro de salida, junto con el ajuste (offset) de 12 bits, el cual se copia sin modificaciones de la dirección virtual de entrada. Juntos forman una dirección física de 15 bits. El registro de salida se coloca entonces en el bus de la memoria como la dirección en la memoria física.
    En teoría, la asociación de las direcciones virtuales con las físicas se efectúa según lo descrito. El número de página virtual se divide en un número de página virtual (los bits superiores)y un ajuste (los bits inferiores). El número de página virtual se utiliza como un índice en la tabla de páginas para encontrar la entrada de esa página virtual. El número de marco (si existe) se determina a partir de la tabla de páginas. El número de marco se asocia al extremo superior del ajuste y reemplaza al número de página virtual para formar una dirección física que se puede enviar a la memoria.
    La finalidad de la tabla de páginas es asociar las páginas virtuales con los marcos. En términos matemáticos, la tabla de páginas es una función, cuyo argumento es el número de página virtual y como resultado el número del marco físico. Mediante el resultado de esta función, se puede reemplazar el campo de la página virtual de una dirección virtual por un campo de marco, lo que produce una dirección en la memoria física. Sin embargo hay que enfrentar dos aspectos fundamentales:

  • La tabla de páginas puede ser demasiado grande.

  • La asociación debe ser rápida.

  • El primer punto proviene del hecho de que las computadoras modernas utilizan direcciones virtuales de al menos 32 bits. Por ejemplo, si el tamaño de página es de 4K, un hueco de direcciones de 32 bits tiene un millón de páginas; en el caso de un hueco de direcciones de 64 bits, se tendría más información de la que uno quisiera contemplar.
    El segundo punto es consecuencia del hecho de que la asociación virtual - física debe hacerse en cada referencia a la memoria. Una instrucción común tiene una palabra de instrucción y también un operando de memoria. Entonces es necesario hacer una, dos o más referencias a la tabla de páginas por cada instrucción.

    Características de la paginación:

    • El espacio de direcciones lógico de un proceso puede ser no contiguo.

    • Se divide la memoria física en bloques de tamaño fijo llamados marcos (frames).

    • Se divide la memoria en bloques de tamaño llamados paginas.

    • Se mantiene información en los marcos libres.

    • Para correr un programa de n paginas de tamaño, se necesitan encontrara n marcos y cargar el programa.

    • Se establece una tabla de paginas para trasladar las direcciones lógicas a físicas.

    • Se produce fragmentación interna.

    Ventajas de la paginación

  • Es posible comenzar a ejecutar un programa, cargando solo una parte del mismo en memoria, y el resto se cargara bajo la solicitud.

  • No es necesario que las paginas estén contiguas en memoria, por lo que no se necesitan procesos de compactación cuando existen marcos de paginas libres dispersos en la memoria.

  • Es fácil controlar todas las páginas, ya que tienen el mismo tamaño.

  • El mecanismo de traducción de direcciones (DAT) permite separar los conceptos de espacio de direcciones y espacios de memoria. Todo el mecanismo es transparente al usuario.

  • Se libera al programador de la restricción de programar para un tamaño físico de memoria, con lo que s e aumenta su productividad. Se puede programar en función de una memoria mucho más grande a la existente.

  • Al no necesitarse cargar un programa completo en memoria para su ejecución, se puede aumentar el numero de programas multiprogramándose.

  • Se elimina el problema de fragmentación externa.

  • Desventajas de la paginación

  • El costo de hardware y software se incrementa, por la nueva información que debe manejarse y el mecanismo de traducción de direcciones necesario. Se consume mucho mas recursos de memoria, tiempo en el CPU para su implantación.

  • Se deben reservar áreas de memoria para las PMT de los procesos. Al no ser fija el tamaño de estas, se crea un problema semejante al de los programas (como asignar un tamaño óptimo sin desperdicio de memoria, u "ovearhead" del procesador).

  • Aparece el problema de fragmentación interna. Así, si se requieren 5K para un programa, pero las paginas son de 4K, deberán asignárseles 2 paginas (8k), con lo que quedan 3K sin utilizar. La suma de los espacios libres dejados de esta forma puede ser mayor que el de varias paginas, pero no podrá ser utilizados. Debe asignarse un tamaño promedio a las páginas, evitando que si son muy pequeñas, se necesiten TABLAS BMT y PMT muy grandes, y si son muy grandes, se incremente el grado de fragmentación interna.

  • Traducción de Direcciones
    La dirección generada por la CPU se divide en:

    • Numero de pagina (p): utilizado como indice en la tabla de pagins que contiene la dirección base de cada pagina en la memoria fisica.

    • Offset de la pagina (d): combinado con la dirección base dfine la direccion fisica que será enviada a la unidad de memoria.

    Ejemplo de paginación:

    6. Segmentación

    Es un esquema de manejo de memoria mediante el cual la estructura del programa refleja su división lógica; llevándose a cabo una agrupación lógica de la información en bloques de tamaño variable denominados segmentos. Cada uno de ellos tienen información lógica del programa: subrutina, arreglo, etc. Luego, cada espacio de direcciones de programa consiste de una colección de segmentos, que generalmente reflejan la división lógica del programa.
    La segmentación permite alcanzar los siguientes objetivos:

  • Modularidad de programas: cada rutina del programa puede ser un bloque sujeto a cambios y recopilaciones, sin afectar por ello al resto del programa.

  • Estructuras de datos de largo variable: ejm. Stack, donde cada estructura tiene su propio tamaño y este puede variar.

  • Protección: se puede proteger los módulos del segmento contra accesos no autorizados.

  • Comparición: dos o más procesos pueden ser un mismo segmento, bajo reglas de protección; aunque no sean propietarios de los mismos.

  • Enlace dinámico entre segmentos: puede evitarse realizar todo el proceso de enlace antes de comenzar a ejecutar un programa. Los enlaces se establecerán solo cuando sea necesario.

  • Ventajas de la segmentación
    El esquema de segmentación ofrece las siguientes ventajas:

    • El programador puede conocer las unidades lógicas de su programa, dándoles un tratamiento particular.

    • Es posible compilar módulos separados como segmentos el enlace entre los segmentos puede suponer hasta tanto se haga una referencia entre segmentos.

    • Debido a que es posible separar los módulos se hace más fácil la modificación de los mismos. Cambios dentro de un modulo no afecta al resto de los módulos.

    • Es fácil el compartir segmentos.

    • Es posible que los segmentos crezcan dinámicamente según las necesidades del programa en ejecución.

    • Existe la posibilidad de definir segmentos que aun no existan. Así, no se asignara memoria, sino a partir del momento que sea necesario hacer usos del segmento. Un ejemplo de esto, serian los arreglos cuya dimensión no se conoce hasta tanto no se comienza a ejecutar el programa. En algunos casos, incluso podría retardar la asignación de memoria hasta el momento en el cual se referencia el arreglo u otra estructura de dato por primera vez.

    Desventajas de la segmentación

    • Hay un incremento en los costos de hardware y de software para llevar a cabo la implantación, así como un mayor consumo de recursos: memoria, tiempo de CPU, etc.

    • Debido a que los segmentos tienen un tamaño variable se pueden presentar problemas de fragmentación externas, lo que puede ameritar un plan de reubicación de segmentos en memoria principal.

    • Se complica el manejo de memoria virtual, ya que los discos almacenan la información en bloques de tamaños fijos, mientras los segmentos son de tamaño variable. Esto hace necesaria la existencia de mecanismos más costosos que los existentes para paginación.

    • Al permitir que los segmentos varíen de tamaño, puede ser necesarios planes de reubicación a nivel de los discos, si los segmentos son devueltos a dicho dispositivo; lo que conlleva a nuevos costos.

    • No se puede garantizar, que al salir un segmento de la memoria, este pueda ser traído fácilmente de nuevo, ya que será necesario encontrar nuevamente un área de memoria libre ajustada a su tamaño.

    • La comparticion de segmentos permite ahorrar memoria, pero requiere de mecanismos adicionales da hardware y software.

    Estas desventajas tratan de ser minimizadas, bajo la técnica conocida como Segmentación paginada.

    7. Segmentación Paginada

    Paginación y segmentación son técnicas diferentes, cada una de las cuales busca brindar las ventajas enunciadas anteriormente.
    Para la segmentación se necesita que estén cargadas en memoria, áreas de tamaños variables. Si se requiere cargar un segmento en memoria; que antes estuvo en ella y fue removido a memoria secundaria; se necesita encontrar una región de la memoria lo suficientemente grande para contenerlo, lo cual no es siempre factible; en cambio "recargar" una pagina implica solo encontrar un merco de pagina disponible.
    A nivel de paginación, si quiere referenciar en forma cíclicas n paginas, estas deberán ser cargadas una a una generándose varias interrupciones por fallas de paginas; bajo segmentación, esta pagina podría conformar un solo segmento, ocurriendo una sola interrupción, por falla de segmento. No obstante, si bajo segmentación, se desea acceder un área muy pequeña dentro de un segmento muy grande, este deberá cargarse completamente en memoria, desperdiciándose memoria; bajo paginación solo se cargara la página que contiene los ítems referenciados.
    Puede hacerse una combinación de segmentación y paginación para obtener las ventajas de ambas. En lugar de tratar un segmento como una unidad contigua, este puede dividirse en páginas. Cada segmento puede ser descrito por su propia tabla de páginas.
    Los segmentos son usualmente múltiplos de páginas en tamaño, y no es necesario que todas las páginas se encuentren en memoria principal a la vez; además las páginas de un mismo segmento, aunque se encuentren contiguas en memoria virtual; no necesitan estarlo en memoria real.
    Las direcciones tienen tres componentes: (s, p,d), donde la primera indica el numero del segmento, la segunda el numero de la pagina dentro del segmento y la tercera el desplazamiento dentro de la pagina. Se deberán usar varias tablas:

    • SMT (tabla de mapas de segmentos): una para cada proceso. En cada entrada de la SMT se almacena la información descrita bajo segmentación pura, pero en el campo de dirección se indicara la dirección de la PMT (tabla de mapas de páginas) que describe a las diferentes páginas de cada segmento.

    • PMT (tabla de mapas de páginas): una por segmento; cada entrada de la PMT describe una página de un segmento; en la forma que se presento la pagina pura.

    • TBM (tabla de bloques de memoria): para controlar asignación de páginas por parte del sistema operativo.

    • JT (tabla de Jobs): que contiene las direcciones de comienzo de cada una de las SMT de los procesos que se ejecutan en memoria.

    En el caso, de que un segmento sea de tamaño inferior o igual al de una pagina, no se necesita tener la correspondiente PMT, actuándose en igual forma que bajo segmentación pura; puede arreglarse un bit adicional (S) a cada entrada de la SMT, que indicara si el segmento esta paginado o no.

    Ventajas de la segmentación paginada
    El esquema de segmentación paginada tiene todas las ventajas de la segmentación y la paginación:

    • Debido a que los espacios de memorias son segmentados, se garantiza la facilidad de implantar la comparticion y enlace.

    • Como los espacios de memoria son paginados, se simplifican las estrategias de almacenamiento.

    • Se elimina el problema de la fragmentación externa y la necesidad de compactación.

    Desventajas de la segmentación paginada

    • Las tres componentes de la dirección y el proceso de formación de direcciones hace que se incremente el costo de su implantación. El costo es mayor que en el caso de de segmentación pura o paginación pura.

    • Se hace necesario mantener un número mayor de tablas en memoria, lo que implica un mayor costo de almacenamiento.

    Sigue existiendo el problema de fragmentación interna de todas- o casi- todas las páginas finales de cada uno de los segmentos. Bajo paginación pura se desperdician solo la última página asignada, mientras que bajo segmentación - paginada el desperdicio puede ocurrir en todos los segmentos asignados.

    Comandos de linux

    Los comandos son esencialmente los mismos que cualquier sistema UNIX. En la tablas  3.1 y  3.2 se tiene la lista de comandos mas frecuentes. En la tabla 3.3 se tiene una lista de equivalencias entre comandos Unix/Linux y comandos DOS.

    Comando/Sintaxis

    Descripción

    Ejemplos

    cat fich1 [...fichN]

    Concatena y muestra un archivos

    cat /etc/passwd

     

    archivos

    cat dict1 dict2 dict

    cd [dir]

    Cambia de directorio

    cd /tmp

    chmod permisos fich

    Cambia los permisos de un archivo

    chmod +x miscript

    chown usuario:grupo fich

    Cambia el dueño un archivo

    chown nobody miscript

    cp fich1...fichN dir

    Copia archivos

    cp foo foo.backup

    diff [-e]arch1 arch2

    Encuentra diferencia entre archivos

    diff foo.c newfoo.c

    du [-sabr] fich

    Reporta el tamaño del directorio

    du -s /home/

    file arch

    Muestra el tipo de un archivo

    file arc_desconocido

    find dir test acción

    Encuentra archivos.

    find . -name ``.bak'' -print

    grep [-cilnv] expr archivos

    Busca patrones en archivos

    grep mike /etc/passwd

    head -count fich

    Muestra el inicio de un archivo

    head prog1.c

    mkdir dir

    Crea un directorio.

    mkdir temp

    mv fich1 ...fichN dir

    Mueve un archivo(s) a un directorio

    mv a.out prog1

    mv fich1 fich2

    Renombra un archivo.

    mv .c prog_dir

    less / more fich(s)

    Visualiza página a página un archivo.

    more muy_largo.c

     

    less acepta comandos vi.

    less muy_largo.c

    ln [-s] fich acceso

    Crea un acceso directo a un archivo

    ln -s /users/mike/.profile .

    ls

    Lista el contenido del directorio

    ls -l /usr/bin

    pwd

    Muestra la ruta del directorio actual

    pwd

    rm fich

    Borra un fichero.

    rm foo.c

    rm -r dir

    Borra un todo un directorio

    rm -rf prog_dir

    rmdir dir

    Borra un directorio vacío

    rmdir prog_dir

    tail -count fich

    Muestra el final de un archivo

    tail prog1.c

    vi fich

    Edita un archivo.

    vi .profile

    Comandos Linux/Unix de manipulación de archivos y directorios tbl_comm_archivos

    Comando/Sintaxis

    Descripción

    Ejemplos

    at [-lr] hora [fecha]

    Ejecuta un comando mas tarde

    at 6pm Friday miscript

    cal [[mes] año]

    Muestra un calendario del mes/año

    cal 1 2025

    date [mmddhhmm] [+form]

    Muestra la hora y la fecha

    date

    echo string

    Escribe mensaje en la salida estándar

    echo ``Hola mundo''

    finger usuario

    Muestra información general sobre

    finger nn@maquina.aca.com.co

     

    un usuario en la red

     

    id

    Número id de un usuario

    id usuario

    kill [-señal] PID

    Matar un proceso

    kill 1234

    man comando

    Ayuda del comando especificado

    man gcc

     

     

    man -k printer

    passwd

    Cambia la contraseña.

    passwd

    ps [axiu]

    Muestra información sobre los procesos

    ps -ux

     

    que se están ejecutando en el sistema

    ps -ef

    who / rwho

    Muestra información de los usuarios

    who

     

    conectados al sistema.

     

    Comandos Linux/Unix más frecuentes tbl_comm_frec

    Linux

    DOS

    Significado

    cat

    type

    Ver contenido de un archivo.

    cd, chdir

    cd, chdir

    Cambio el directorio en curso.

    chmod

    attrib

    Cambia los atributos.

    clear

    cls

    Borra la pantalla.

    ls

    dir

    Ver contenido de directorio.

    mkdir

    md, mkdir

    Creación de subdirectorio.

    more

    more

    Muestra un archivo pantalla por pantalla.

    mv

    move

    Mover un archivo o directorio.

    rmdir

    rd, rmdir

    Eliminación de subdirectorio.

    rm -r

    deltree

    Eliminación de subdirectorio y todo su contenido.

    Equivalencia de comandos Linux/Unix y DOS tbl_equiv_comandos

    PRINCIPALES COMANDOS INTERNOS

    Y EXTERNOS DEL DOS

    COMANDOS

    INTERNOS

    COMANDOS

    EXTERNOS

    CHCP

    CHDIR

    CLS

    COPY

    CITY

    DATE

    DEL (ERASE)

    MKDIR (MD)

    PATH

    PROMPT

    RENAME (REN)

    RMDIR (RD)

    SET

    TIME

    TYPE

    VERIFY

    VOL

    APPEND

    ASSING

    ATTRIB

    BACKUP

    CHKDSK

    COMP

    DISKCOMP

    DISCOPY

    FDISK

    FIND

    FORMAT

    JOIN

    KEYB

    LABEL

    MODE

    MORE

    PRINT

    TREE

    XCOPY

    MOVE

    UNIDAD 4

    La computadora hoy en día se ha vuelto una herramienta indispensable en muchas áreas, lo

    mismo puede servir para calcular la distancia de la estrella más lejana de nuestro sistema solar

    como para la diversión y esparcimiento de un niño que la utiliza para jugar, al igual que el ama

    de casa la puede utilizar para llevar una gran colección de recetas de cocina, y como cualquier

    herramienta necesita cuidados y tratos especiales.

    1.1 ¿Qué es el mantenimiento para PCs?

    Es el cuidado que se le da a la computadora para prevenir posibles fallas, se debe tener en

    cuenta la ubicación física del equipo ya sea en la oficina o en el hogar, así como los cuidados

    especiales cuando no se está usando el equipo. Hay dos tipos de mantenimiento, el preventivo

    y el correctivo.

    1.2 Tipos de mantenimiento para la PC

    ð Mantenimiento preventivo para PCs

    El mantenimiento preventivo consiste en crear un ambiente favorable para el sistema y

    conservar limpias todas las partes que componen una computadora. El mayor número de fallas

    que presentan los equipos es por la acumulación de polvo en los componentes internos, ya que

    éste actúa como aislante térmico.

    El calor generado por los componentes no puede dispersarse adecuadamente porque es

    atrapado en la capa de polvo.

    Las partículas de grasa y aceite que pueda contener el aire del ambiente se mezclan con el

    polvo, creando una espesa capa aislante que refleja el calor hacia los demás componentes, con

    lo cual se reduce la vida útil del sistema en general.

    Por otro lado, el polvo contiene elementos conductores que pueden generar cortocircuitos entre

    las trayectorias de los circuitos impresos y tarjetas de periféricos.

    Si se quiere prolongar la vida útil del equipo y hacer que permanezca libre de reparaciones por

    muchos años se debe de realizar la limpieza con frecuencia.

    ð Mantenimiento correctivo para PCs

    Consiste en la reparación de alguno de los componentes de la computadora, puede ser una

    soldadura pequeña, el cambio total de una tarjeta (sonido, video, SIMMS de memoria, entre

    otras), o el cambio total de algún dispositivo periférico como el ratón, teclado, monitor, etc.

    Resulta mucho más barato cambiar algún dispositivo que el tratar de repararlo pues muchas

    veces nos vemos limitados de tiempo y con sobre carga de trabajo, además de que se necesitan

    aparatos especiales para probar algunos dispositivos.

    Asimismo, para realizar el mantenimiento debe considerarse lo siguiente:

    ð En el ámbito operativo, la reconfiguración de la computadora y los principales programas

    que utiliza.

    ð Revisión de los recursos del sistema, memoria, procesador y disco duro.

    ð Optimización de la velocidad de desempeño de la computadora.

    ð Revisión de la instalación eléctrica (sólo para especialistas).

    ð Un completo reporte del mantenimiento realizado a cada equipo.

    ð Observaciones que puedan mejorar el ambiente de funcionamiento.

    1.3 Criterios que se deben considerar para el mantenimiento a la PC

    La periodicidad que se recomienda para darle mantenimiento a la PC es de una vez por

    semestre, esto quiere decir que como mínimo debe dársele dos veces al año, pero eso

    dependerá de cada usuario, de la ubicación y uso de la computadora, así como de los cuidados

    adicionales que se le dan a la PC.

    Por su parte, la ubicación física de la computadora en el hogar u oficina afectará o beneficiará a

    la PC, por lo que deben tenerse en cuenta varios factores:

    ð Hogar

    Es necesario mantener el equipo lejos de las ventanas, esto es para evitar que los rayos del sol

    dañen a la PC, así como para evitar que el polvo se acumule con mayor rapidez, también hay

    que tratar de ubicar a la PC en un mueble que se pueda limpiar con facilidad, si en la

    habitación donde se encuentra la PC hay alfombra se debe aspirar con frecuencia para evitar

    que se acumule el polvo. También no es conveniente utilizar el monitor como “repisa”, esto

    quiere decir que no hay que poner nada sobre el monitor ya que genera una gran cantidad de

    calor y es necesario disiparlo, lo mismo para el chasis del CPU.

    ð Oficina

    Los mismos cuidados se deben tener en la oficina, aunque probablemente usted trabaje en una

    compañía constructora y lleve los registros de materiales, la contabilidad, los planos en

    Autocad, etc. Esto implicaría que la computadora se encuentre expuesta a una gran cantidad de

    polvo, vibraciones y probablemente descargas eléctricas, así mismo la oficina se mueve a cada

    instante, hoy puede estar en la Ciudad de México y en dos semanas en Monterrey, por lo

    mismo el mantenimiento preventivo será más frecuente.

    Consideraciones finales:

    ð No exponer a la PC a los rayos del sol.

    ð No colocar a la PC en lugares húmedos.

    ð Mantener a la PC alejada de equipos electrónicos o bocinas que produzcan campos

    magnéticos ya que pueden dañar la información.

    ð Limpiar con frecuencia el mueble donde se encuentra la PC así como aspirar con

    frecuencia el área si es que hay alfombras.

    ð No fumar cerca de la PC.

    ð Evitar comer y beber cuando se esté usando la PC.

    ð Usar “No-Break” para regular la energía eléctrica y por si la energía se corta que haya

    tiempo de guardar la información.

    ð Cuando se deje de usar la PC, esperar a que se enfríe el monitor y ponerle una funda

    protectora, así como al teclado y al chasis del CPU.

    ð Revisión de la instalación eléctrica de la casa u oficina, pero esto lo debe de hacer un

    especialista.

    1.4 Material, herramientas y mesa de trabajo

    Como ya se había explicado anteriormente el mantenimiento preventivo ayudará a alargar el

    buen funcionamiento de la PC, para ello se tiene que contar con una mesa de trabajo, la cual

    preferentemente no debe de ser conductora (que no sea de metal o similar), se debe de tener el

    área o mesa de trabajo libre de estorbos y polvo.

    También es importante contar con las herramientas y material adecuado, todo esto para poder

    facilitar el trabajo:

    HERRAMIENTAS SOFTWARE QUÍMICOS

    (soluciones limpiadoras)

    1 estuche de herramientas para PCs. Discos de sistema. Bote con solución limpiadora

    en espuma.

    1 multímetro digital. Utilerías para MS-DOS. Bote con limpiador para

    partes electrónicas.

    1 cautín. Utilerías de Norton. Bote con aire comprimido.

    Soldadura. Antivirus o vacunas.

    1 expulsora de aire (frío). Discos de limpieza para unidades

    de disco flexible y CD-ROM.

    1 pulsera antiestática.

    1 rollo de cinta adhesiva (grueso).

    1 bote para rollo fotográfico

    (para guardar los tornillos dentro).

    Trapo blanco.

    Alfileres.

    Bolsas antiestáticas.

    Una computadora está compuesta por partes mecánicas y electrónicas, las cuales en conjunto

    la hacen funcionar, cada parte de la computadora recibe un nombre específico de acuerdo con

    la función que desempeña.

    2.1 CPU (Unidad Central de Proceso)

    El CPU es un microprocesador o chip que se coloca en la Tarjeta Madre, el CPU se encarga de

    procesar la información y para ello cuenta con dos sub-unidades: Unidad de Control y Unidad

    Aritmética Lógica.

    ð Unidad de Control

    Analiza y ejecuta cada instrucción del programa, controla las actividades de los periféricos,

    tales como un disco o una pantalla de presentación. A partir de señales que recibe del CPU,

    ejecuta las transferencias físicas de datos entre la memoria y el dispositivo periférico, se encarga

    de controlar todo el flujo de información.

    ð Unidad Aritmética Lógica (UAL)

    Circuito de alta velocidad que realiza las comparaciones y los cálculos. Los números son

    transferidos desde la memoria a la UAL (Unidad Aritmética Lógica) para realizar los cálculos,

    cuyos resultados son retransferidos a la memoria, los datos alfanuméricos son enviados desde la

    memoria a la UAL para su comparación, es la encargada de realizar todas las operaciones tanto

    aritméticas como lógicas.

    Microprocesador Pentium II.

    2.1.1 BIOS (Basic Imput/Output System)

    Es un sistema básico de entrada y salida. Es un conjunto de rutinas de software (programa), que

    contienen las instrucciones detalladas para activar los dispositivos periféricos conectados a la

    computadora. La rutina de “autoarranque” del BIOS es responsable de probar la memoria en el

    arranque y de la preparación de la computadora para su operación.

    BIOS.

    2.1.2 CMOS (Complementary Metal Oxide Semiconductor)

    Es un circuito integrado para procesadores y memorias, como utiliza poca batería es ideal para

    mantener al BIOS.

    2.1.3 Tarjeta Madre (Mother Board o Tarjeta Principal)

    Es la tarjeta principal o base, es un circuito impreso con dispositivos electrónicos que contiene

    ranuras de expansión que aceptan otras tarjetas adicionales.

    La tarjeta principal contiene los conectores (zócalos) del CPU y el co-procesador matemático,

    cabe mencionar que el co-procesador matemático se encuentra en las 486SX y menores; los

    conectores de la memoria, el controlador del teclado, los chips de soporte, los puertos en serie

    o paralelo, las unidades de ratón y de disco pueden o no encontrarse presentes en la tarjeta

    principal, si no están son controladores independientes que se colocan en una ranura de

    expansión, es decir es una tarjeta controladora de puertos.

    2.1.3.1 Diferentes clases de Tarjeta Madre

    Una primera distinción la tenemos en el formato de la placa, es decir, en sus propiedades físicas.

    Dicho parámetro está directamente relacionado con la caja, o sea, la carcasa del ordenador.

    Hay dos grandes estándares: ATX y AT.

    La segunda distinción la haremos por el zócalo del CPU, así como los tipos de procesador de

    soporte y la cantidad de los mismos. Tenemos el estándar tipo 4 o 5 para Pentium, el tipo 7

    para Pentium y MMX, el Super 7 para los nuevos procesadores con BUS a 100 Mhz, el tipo 8

    para Pentium Pro, el Slot 1 para el Pentium II, el Celeron, y el Slot 2 para los Xeon. Éstos son los

    más conocidos.

    La siguiente distinción la haremos a partir del CHIPSET que utilicen. El CHIPSET es un conjunto

    de circuitos integrados diseñados para trabajar junto con el microprocesador, con el fin de

    ejecutar una determinada función. Los más populares son los de Intel. Éstos están directamente

    relacionados con los procesadores que soportan; en este caso, para el Pentium están los

    modelos FX, HX, VX y TX.

    Para Pentium PRO los GX, KX y FX. Para Pentium II y sus derivados, además del FX, los LX, BX,

    EX, GX y NX. Para Pentium MMX se recomienda el TX, aunque es soportado por los del

    Pentium `Classic'.

    También existen placas que usan como CHIPSET el de otros fabricantes como VIA, SIS, UMC o

    Ali (Acer).

    El siguiente parámetro es el tipo de BUS. Hoy en día el auténtico protagonista es el estándar PCI

    de 32 bits en su revisión 2.1, pero también es importante contar con alguna ranura ISA de 16

    bits, pues algunos dispositivos como modems internos y tarjetas de sonido todavía no se han

    adaptado a este estándar, debido básicamente a que no aprovechan las posibilidades de ancho

    de banda del mismo.

    También existe un PCI de 64 bits, aunque de momento no está muy visto en el mundo PC.

    Otros tipos de bus son el ISA de 8 bits, no usado ya, por ser compatible con el de 16 bits, el

    EISA, usado en algunas máquinas servidoras sobre todo de Compaq, el VL-Bus, de moda en casi

    todos los 486, o el MCA, el famoso bus microcanal en sus versiones de 16 y 32 bits patrocinado

    por IBM en sus modelos PS/2.

    Otra característica importante es el formato y cantidad de zócalos de memoria que admite. En

    parte viene determinado por el chipset que utiliza. La más recomendable es la DIMM en formato

    SDRAM (Synchronous Dynamic RAM) con 3 zócalos. En el caso de módulos SIMM de 72

    contactos el formato EDO RAM (Extended Data Output RAM) con 4 zócalos manejado por pares.

    ð ATX (Advanced Technology Extended)

    El estándar ATX es el más moderno y el que mayores ventajas ofrece. Está promovido por Intel,

    aunque es una especificación abierta, que puede ser usada por cualquier fabricante sin

    necesidad de pagar regalías. La versión utilizada actualmente es la 2.01.

    Entre las ventajas de la placa cabe mencionar una mejor disposición de sus componentes, la cual se

    obtiene básicamente girándola 90 grados. Permite que la colocación de la CPU no moleste a las

    tarjetas de expansión, por largas que sean. Otra ventaja es que se encuentra un solo conector de

    alimentación, que además no se puede montar al revés. La memoria está colocada en un lugar más

    accesible.

    El CPU está colocado al lado de la FA (Fuente de Alimentación) para recibir aire fresco de su

    ventilador.

    Los conectores para los dispositivos IDE y disqueteras quedan más cerca, reduciendo la longitud

    de los cables, además de estorbar menos la circulación del aire en el interior de la caja.

    Aparte de todas estas ventajas, dicho estándar da la posibilidad de integrar en la placa base

    dispositivos como la tarjeta de video o la tarjeta de sonido, pero sacando los conectores

    directamente de la placa, para que proporcione un diseño más compacto, y sin necesidad de

    perder ranuras de expansión.

    Así podemos tener integrados los conectores para teclado y ratón tipo PS/2, serie, paralelo o

    USB que son habituales en estas placas, pero también para VGA, altavoces, micrófono, etc.,

    sacrificando apenas un poco de espacio.

    ð AT (Advanced Technology)

    Este formato está basado en el original del IBM PC-AT, pero de dimensiones más reducidas gracias

    a la mayor integración en los componentes de hoy en día, aunque físicamente compatible con

    aquél.

    A la fecha sigue siendo el más extendido. En este tipo de placas es habitual el conector “DIN”. para

    teclado. Entre sus ventajas cabe destacar el mejor precio tanto de éstas como de las cajas que las

    soportan, aunque esta ventaja desaparecerá en la medida que se vaya popularizando su

    contrincante.

    2.1.3.2 Partes de una Tarjeta Madre AT

    1. Ranuras de expansión o slots PCI.

    2. Puertos o COMs para ratón (mouse) y/o Módem (Modulador Demodulador).

    3. Conector para teclado.

    4. Conectores P8 y P9.

    5. Ranuras de expansión o slots ISA.

    6. Zócalos o bancos de memoria para SIMMs.

    7. Conectores IDE para discos duros o CDs.

    8. Zócalos o bancos de memoria para DIMMs.

    9. Zócalo del microprocesador.

    10. Conector de discos flexibles.

    11. BIOS o sistema básico de entrada y salida.

    12. Chipset.

    13. Pila que alimenta al BIOS.

    9

    12

    8

    5

    7

    6

    4

    1

    3 2

    11

    10

    13

    2.1.3.3 SIMMs y DIMMs de memoria RAM

    ð SIMMs (Single In Line Module Memory)

    Son unas pequeñas tarjetas con un conjunto de chips, que aumentan la memoria RAM de la

    computadora, hay diferentes capacidades y velocidades, las capacidades pueden ser de 1Mb,

    4Mb, 16Mb, 32Mb y 64Mb. Los tiempos de acceso pueden ser de 80, 70, 60 o incluso 50 ns

    (nano segundos).

    SIMM.

    ð DIMMs (Dynamic In Line Module Memory)

    También son chips de memoria, sólo que son un poco más largos que los SIMM, las

    capacidades son un poco mayores, los tiempos de acceso disminuyen en comparación de los

    SIMM, las capacidades pueden ser desde 16Mb, 32Mb, 64Mb y 128Mb. Los tiempos de acceso

    pueden ser de 60 y 10ns (nano segundos).

    2.1.4 Interfaz de dispositivos

    Todos los dispositivos necesitan interaccionar con el resto de la computadora, es decir,

    necesitan cambiar información entre sí, pero eso sería imposible de no existir un medio de

    comunicación o una interfaz que implica un “camino” por el cual se pueden comunicar los

    dispositivos, básicamente se cuentan con dos tipos de interfaz de dispositivos:

    ð Cable tipo listón o Bus para discos duros y unidades de disco compacto

    El cable para los discos duros y los CD-ROM es el mismo, siempre y cuando los dos

    dispositivos sean IDE, como podrá verse en uno de los extremos del cable tiene un filamento

    rojo, eso indica que es el Pin 1, también los dispositivos cuentan con una señal o indicador que

    determina cómo se tiene que colocar el cable, por ejemplo el disco duro puede tener su señal

    en la parte externa del disco, observe con cuidado y podrá ver un número 1 o una especie de

    “flechita”, cuando usted conecte su cable con el dispositivo asegúrese de que e l filamento rojo

    esté colocado del lado del indicador o señal.

    Cable tipo listón para disco duro o CD-ROM.

    ð Cable tipo listón o Bus para unidades de disco flexible

    Las unidades de disco flexible también necesitan una interfaz, sólo que ésta es un poco

    diferente a la de los discos duros o unidades del disco compacto, usted puede conectar dos

    unidades de disco flexible iguales, es decir puede tener dos unidades de 3½” o dos unidades de

    5¼”, una característica especial de estos cables es que tiene una pequeña “torcedura”, después

    de localizar esa torcedura se considera que ahí se inserta el dispositivo como unidad A, también

    puede ver que tiene un filamento rojo. Siga el mismo procedimiento cuando los conecte a sus

    unidades.

    Cable tipo listón para unidades de disco flexible.

    2.1.5 Sistema de almacenamiento

    Las unidades de almacenamiento están asociadas con una pieza de hardware a la que se

    denomina disco. Los tipos más comunes de discos son el disco duro (hard disk), disquete y

    disco compacto.

    2.1.5.1 Disco duro (hard disk)

    Es un disco magnético hecho de metal y cubierto con una superficie de grabación magnética,

    los discos duros pueden ser fijos o removibles, son unidades de almacenamiento; debido a que

    el tipo de almacenamiento es magnético se debe tener mucho cuidado al manejarlo o de

    tenerlo cerca de algún dispositivo que genere campos magnéticos (bocinas, imanes, etc.) pues

    éstos pueden borrar la información almacenada en el disco. Existen dos tipos de estándares en

    la interfaz de discos duros, los IDE y los SCSI.

    ð IDE (Integrated Drive Electronics)

    Cronológicamente, primero se encuentran los discos IDE con su limitación a 528 Mb. Sólo es

    posible conectar hasta dos de ellos.

    Después vinieron los discos EIDE (Fast ATA), desarrollados por la compañía Western Digital,

    compatibles con los primeros, pero con algunas mejoras, basadas en la especificación ATA-2,

    que ya soporta unidades de CD-ROM (ATAPI) y de cinta.

    Otra mejora importante es el soporte de dos canales (cables tipo listón o Bus) para conectar

    hasta cuatro unidades. Además se definen varios modos de transferencia de datos, que llegan

    hasta los 16,6 Mb./seg. como el PIO-4, o mejor aun el *DMA-2, que soporta la misma tasa pero

    sin intervención del CPU.

    La última especificación, desarrollada por Quantum, es la Ultra *DMA/33 (UltraATA), que

    permite transferencias DMA* a 33 Mb./seg.

    *DMA.- Es un conjunto de circuitos especializados o microprocesador dedicado que transfiere

    datos de memoria a memoria sin utilizar el procesador principal, sin embargo el DMA puede

    utilizar periódicamente ciclos del microprocesador, los datos son transferidos mucho más

    rápido que utilizando el procesador para la transferencia de cada byte.

    ð SCSI (Small Computer System Interface)

    En el caso de los discos SCSI, tenemos el primero, llamado SCSI-1, con un ancho de bus de 8

    bits, aunque ya en esta primera especificación se incluían características muy destacadas, como

    la posibilidad de conectar hasta 7 dispositivos de todo tipo: discos, cintas, escáner, CD-ROM,

    etcétera.

    Después viene el SCSI-2, que ya dispone de un ancho de Bus de 16 bits. El siguiente paso es el

    Fast-SCSI, considerado el doble de espacio. Después viene el Wide SCSI, ya con un ancho de

    Bus de hasta 32 bits.

    Disco duro.

    2.1.5.2 Unidad lectora de discos flexibles (floppy disk)

    Estas unidades pueden ser de 3½” y de 5¼” (ésta última se encuentra en desuso), son partes

    electrónicas y mecánicas y también están expuestas al polvo u otros factores externos que

    pueden dañar a estos componentes, por consiguiente también necesitan de un mantenimiento

    preventivo o correctivo para su buen funcionamiento.

    2.1.5.3 Unidad de disco compacto (CD-ROM)

    La unidad de CD-ROM ha dejado de ser un accesorio opcional para convertirse en parte

    integrante de la PC, sin la cual no se podría ni siquiera instalar la mayor parte del software que

    actualmente existe, por no hablar ya de todos los programas multimedia y juegos.

    Existen lectores, grabadores y regrabadores. Los más flexibles son los últimos, ya que permiten

    trabajar en cualquiera de los tres modos, pero la velocidad de lectura, que es uno de los

    parámetros más importantes se resiente mucho, al igual que en los grabadores.

    CD-ROM.

    2.1.5.4 Unidades extraíbles (unidades ZIP)

    La unidad ZIP es una unidad de disco extraíble, portable, barata, y de moda. Sus discos tienen

    una capacidad de 96 Mb, y las unidades está disponibles en dos versiones, una versión SCSI y

    una versión para puerto paralelo que es la más fácil y más rápida de configurar y de instalar.

    Unidad ZIP.

    2.1.6 Puertos de comunicación

    Son conectores externos que se utilizan para conectar un módem, mouse, impresora u otro

    dispositivo periférico, hay dos tipos de puerto: puerto serie y puerto paralelo.

    2.1.6.1 Puerto serie

    Utiliza una línea para enviar información, otra para recibirla; por su parte, existen líneas que

    regulan la información enviada por las otras dos líneas. El puerto serie se utiliza principalmente en

    la conexión del mouse o del módem. Envía información de un bit a la vez, esta transferencia es

    lenta pero suficiente para un mouse ya que la información que transmite un mouse es tan pequeña

    que la velocidad no es importante; para un módem es perfecta pues las líneas telefónicas no pueden

    transportar más que una señal a la vez.

    Los puertos seriales dentro de la PC pueden ser conocidos como puertos COM y utilizan

    conectores del tipo DB9.

    Puerto Serie.

    2.1.6.2 Puerto paralelo

    También es conocido como puerto Centronics, envía información a través de 8 cables paralelos

    simultáneamente en una sola dirección, envía varios bits de información, es mucho más rápido

    que el puerto serie. Este tipo de puerto es utilizado para impresoras.

    Los puertos paralelos dentro de la PC pueden ser conocidos como LPT1 o LPT2 y utilizan

    conectores del tipo DB25.

    Puerto Paralelo.

    2.1.7 Interfaz de datos (ranuras de expansión o Slots)

    Es aquélla donde se insertan las tarjetas de dispositivos periféricos (tarjeta de video, tarjeta de

    sonido, tarjeta de red, fax/módem, etc.) para entrada o salida de información, estas unidades

    reciben el nombre de ranuras de expansión o Slots, y se encuentran sobre un circuito impreso

    llamado Bus o interfaz de datos, utilizado para transportar información a través de ellos.

    ð Ranuras o Slots con Bus de 8 bits

    La información es transmitida a los Slots de expansión y otros componentes en el Bus con sólo

    8 líneas paralelas de datos.

    Ranura de 8 bits.

    ð Ranuras o Slots con Bus ISA (Industry Standard Architecture)

    La información es también transmitida a lo largo de 8 o 16 líneas de datos, dependiendo de qué

    clase de tarjeta sea utilizada en la ranura de expansión.

    Ranura ISA.

    ð Ranuras o Slots con Bus MCA (Microchanel Architecture)

    La tarjeta Microcanal de IBM utiliza 32 de sus 93 líneas para enviar y recibir datos. También

    incluye una circuitería que , al igual que Plug and Play*, facilita la instalación de la tarjeta.

    *Plug and Play: Windows 95 apoya la tecnología Conectar y Usar, que consiste en una norma

    que le permite instalar ciertos dispositivos de hardware rápido y fácilmente, por lo general sin

    necesidad de instalar controladores de dispositivo o de reconfigurar el sistema. Cuando compra

    dispositivos de hardware para la computadora, busque la identificación de Conectar y Usar

    (Plug and Play); en general esto hace que la instalación sea más fácil.

    Ranura MCA.

    ð Ranuras o Slots con Bus EISA (Extended Industry Standard Arhitecture)

    Puede utilizar tarjetas de expansión diseñadas específicamente para trabajar con los 97

    conectores de ranura divididos en dos niveles. Esta ranura transmite 32 bits de datos a la vez,

    las ranuras EISA admiten tarjetas de 8 y 16 bits.

    Ranura EISA.

    ð Ranuras o Slots con Bus VESA de 32 bits (Video Electronic Standard Asociation)

    Se dividen en un conjunto de conectores basados en la ranura ISA y en un conjunto

    independiente de 32 pares adicionales de conectores más pequeños, que transportan la

    información del Bus local, trabajan con datos de 32 bits.

    Ranura VESA.

    ð Ranuras o Slots con Bus PCI (Peripheral Component Interconection)

    Transmite información con un rango de 32 bits simultáneamente, estas ranuras de expansión no

    aceptan de 8 o 16 bits ni tarjetas MCA.

    Ranura PCI.

    ð Ranuras o Slos con Bus AGP (Accelerated Graphics Port)

    Las ranuras AGP proveen un puerto de alta velocidad que sólo transporta información gráfica e

    incorpora otras funciones para el manejo de gráficas 3D y texturas. Este puerto está conectado

    directamente al microprocesador y la memoria a través del bus a una frecuencia más alta que

    los demás dispositivos, cabe señalar que este tipo de ranura de expansión sólo se encuentra

    disponible para las tarjetas de video.

    Tarjeta de video AGP.

    2.1.8 Tarjetas de expansión

    Dentro de la PC podemos encontrar otros dispositivos instalados, como un módem (ya sea

    interno o externo), tarjeta de sonido, tarjeta de red, tarjeta SCSI para dispositivos de este tipo,

    etcétera.

    Tarjeta de video

    Al igual que todas las tarjetas es un dispositivo que se conecta a la computadora y genera texto

    e imágenes en la pantalla de un monitor, éste es responsable de la calidad del video.

    Tarjeta de video AGP.

    ð Módem (Modulador Demodulador)

    Este dispositivo permite interaccionar a la PC con una línea telefónica, ya sea para poder enviar

    un fax o poder conectarse a Internet, existen principalmente dos tipos de módem: módem

    interno y el externo.

    a) Módem interno

    Éste va insertado en la ranura de expansión de la PC, es una tarjeta, tiene dos conectores, en

    uno se conecta la línea telefónica y en el otro el teléfono, utiliza software de comunicaciones.

    Módem interno.

    b) Módem externo

    Es un dispositivo externo, generalmente de forma rectangular, que se coloca en el exterior de la

    PC, se conecta a través del puerto serial y utiliza un software de comunicaciones.

    Módem externo.

    ð Tarjeta de sonido

    Es un dispositivo que permite a la computadora reproducir sonidos, hay diferentes formatos de

    sonidos, hoy en día son parte importante de un equipo de cómputo.

    Tarjetas de sonido.

    ð Tarjeta de red

    Este dispositivo se utiliza para redes LAN (Local Area Network), existen diversos tipos de tarjetas

    de red, sin embargo la finalidad es la misma, conectar computadoras en red.

    Tarjetas para red.

    Sistema de videoconferencia

    Es un sistema de comunicación diseñado para llevar a cabo encuentros a distancia, el cual

    permite la interacción visual, auditiva y verbal con personas de cualquier parte del mundo

    (siempre y cuando el otro equipo cuente con la misma tecnología y un enlace de transmisión).

    Este equipo cuenta con una tarjeta, una pequeña cámara y un micrófono, para obtener sonido

    se necesita una tarjeta de sonido.

    Sistema de videoconferencia.

    2.1.9 Fuente de alimentación

    Se encarga de alimentar o suministrar energía a toda la PC, tiene dos conectores que se insertan

    directamente a la tarjeta principal, estos conectores son conocidos como P8 y P9, los

    conectores que alimentan a los dispositivos se conocen como conectores comunes, los voltajes

    que da la fuente de alimentación son:

    CONECTORES COMUNES CONECTORES P8 y P9

    Negro 0 V Blanco- 5 V

    Rojo 5 V Azul- 12 V

    Amarillo 12 V Amarillo 12 V

    Naranja 5 V

    Fuente de poder.

    Conectores comunes.

    NOTA. Los valores del voltaje de la fuente de alimentación pueden tener una variación de ± 10%.

    2.2 Monitores

    El monitor es el principal dispositivo periférico de salida de datos, sin embargo no se le pone

    mucha importancia, hay que tener en cuenta que junto con el teclado y el ratón son las partes

    que interaccionan con nuestro cuerpo, y que si no le prestamos la atención debida, podremos

    llegar incluso a perjudicar nuestra salud.

    2.2.1 Tipos de monitor

    Existe una gran variedad de monitores, ya sea en tamaño, diseño, marcas y precios, hay

    monitores monocromáticos (fondo negro y letras verdes, ambar, etc.) y monitores que pueden

    desplegar un sinfín de colores y matices, a continuación se explican brevemente algunos tipos

    de monitores.

    ð HÉRCULES

    Es un estándar de exhibición de video para PCs, de Hercules Computer Tecnology Inc., que

    provee gráficos monocromáticos y texto con una resolución de 720 x 348 Pixeles.

    Hoy en día, se les puede ver en bancos o supermercados, son muy comunes para este tipo de

    empleos ya que se pasan largas horas trabajando frente a este tipo de monitores, esto evita que

    se canse la vista y se tengan dolores de cabeza.

    ð CGA (Color/Graphics Adapter)

    Es un estándar de gráficos/color, una presentación de video de IBM que provee texto y gráficos

    de baja resolución.

    ð EGA (Enhanced Graphics Adapter)

    Estándar de exhibición de video de IBM que provee textos y gráficos de resolución media

    ð VGA (Video Graphics Array)

    Es un estándar de presentación de video de IBM, que se ha incorporado a los modelos más

    sofisticados de la serie PS/2 de IBM, suministra textos y gráficos de media a alta resolución, soporta

    estándares de presentación previos, tiene 16 colores en su máximo modo gráfico (640 x 480).

    ð SVGA (Super Video Graphics Array)

    Es un estándar de video de IBM que presenta hasta 256 colores, y tiene un modo de resolución

    mucho más alta y mejorada de 800 x 600 pixeles.

    ð UVGA (Ultra Video Graphics Array)

    Son los monitores más modernos que existen en el mercado, tienen la mejor resolución de

    video y por lo mismo son los más aceptados por los usuarios ya que permite un mejor

    despliegue de textos y gráficos para juegos en 3D.

    ð MULTISYNC

    Es un monitor que se adapta automáticamente a la frecuencia de sincronización de la señal de

    video que recibe, puede adaptarse a un rango de frecuencias. Fue popularizado por NEC y

    Multisync es el nombre comercial, es muy raro encontrarse actualmente con este tipo de

    monitores.

    2.2.2 Características

    A continuación se explicará brevemente los parámetros o características que influyen en la

    calidad de un monitor:

    ð Tamaño

    El tamaño se mide en pulgadas y lo que se mide es la longitud de la diagonal, el tamaño es

    importante porque permite tener varias tareas a la vez de forma visible y poder trabajar de

    forma más cómoda, el tamaño mínimo aconsejable es de 14 pulgadas.

    24

    ð Tubo

    El tubo nos definirá si la pantalla es más o menos plana y cuadrada, el tamaño del punto (Dot

    Pix) y también servirá para comparar entre diferentes marcas por si hay un posible daño, como

    por ejemplo que se dañe el Flash Back, los controles de brillo y contraste, entre otros.

    ð Tamaño del punto

    Esta característica depende del tubo y define el tamaño que tendrá cada uno de los puntos que

    forman la imagen, entre más pequeño más preciso será. No hay que confundir el tamaño del

    punto con el pixel, ya que el pixel depende de la resolución de la pantalla y puede variar.

    ð Frecuencia de refresco

    Se refiere a que la frecuencia tiene que ser lo suficientemente alta para que el barrido de la

    imagen no se distorsione, la frecuencia está proporcionalmente ligada a la estabilidad de la

    imagen y por tanto al confort y descanso de la vista.

    ð Resolución

    Se denomina como la cantidad de pixeles* que se pueden ubicar en un determinado modo de

    pantalla, los *pixeles están distribuidos entre el total de horizontales y verticales de la pantalla.

    *Pixel (picture element).- Es el elemento más pequeño en una pantalla de presentación de

    video. Una pantalla se divide en miles de pequeños puntos, y un pixel es uno o más puntos que

    se tratan como una unidad, un pixel puede ser un punto en una pantalla monocromática, tres

    puntos (rojo, verde, azul) en pantallas de color.

    ð Conector

    En ambientes domésticos y de oficina es común encontrarse con el conector DB15, pero en

    entornos especializados donde se cuenta con monitores grandes y de mayor calidad se

    necesitan conectores BNC, ya que ofrecen una mayor protección frente a interferencias.

    Monitor SuperVGA.

    2.3 Teclado

    Este es el principal dispositivo periférico de entrada que se divide en tres partes: teclado

    numérico, teclas de función y teclado alfanumérico, además de un cierto número de teclas

    especiales; asimismo existen dos estándares de interfaz para el teclado, que son DIN y Mini-

    DIN, hay diversos tipos de teclados, los hay muy modernos como los ergonómicos, para

    Windows 95 o 98, inalámbricos, etcétera.

    Teclados ergonómicos.

    2.3.1 Interfaz del teclado

    El teclado como todos los dispositivos necesita de una interfaz que lo comunique con el resto

    de la computadora, para ello cuenta con un conector; existen dos estándares de conectores

    para teclado, éstos son:

    ð DIN

    El cable del teclado corre de un conector DIN, tiene 5 patas (no en orden numérico

    consecutivo).

    ð Mini-DIN

    Este tipo de conector fue introducido por IBM y utilizado en equipos de “marca”, y es el

    habitual en las placas con formato ATX, tiene el mismo formato que el DIN pero el conector es

    más pequeño.

    Interfaz del teclado.

    2.4 Ratón (mouse)

    Es un dispositivo que se usa como puntero o marcador. A medida que se hace rodar sobre el

    escritorio en cualquier dirección, el cursor o puntero se mueve correspondientemente sobre la

    pantalla.

    Hay dos tipos de ratón: ratón mecánico-óptico y ratón óptico.

    ð Ratón mecánico - óptico

    Es un ratón que utiliza una pelota de goma que hace contacto con varias ruedas dentro de la

    unidad, las cuales al girar interrumpen señales infrarrojas que determinan su posición.

    ð Ratón óptico

    Utiliza la luz para obtener sus coordenadas. Es desplazado sobre una pequeña tableta que

    contiene una rejilla reflejante, colocada sobre el escritorio. El ratón emite una luz y capta su

    reflexión a medida que se desplaza.

    Ratón.

    2.4.1 Interfaz del ratón

    El ratón cuenta con dos conectores, estos conectores son seriales, como ya se había explicado

    anteriormente el puerto serie para ratón es el DB9; el ratón puede usar el conector Mini-Din,

    que es igual que del teclado.

    Para el mantenimiento preventivo y/o correctivo será necesario quitar y poner las partes internas

    de la computadora, para esto se debe conocer la manera de sacar y volver a introducir

    adecuadamente los componentes así como las medidas básicas de seguridad, a continuación se

    explicará brevemente el procedimiento.

    3.1 Elementos necesarios para el mantenimiento de una PC

    Como ya se había explicado anteriormente es indispensable contar con las herramientas y

    material adecuados para el mantenimiento, por lo tanto revise que cuente con lo sugerido,

    limpie su mesa de trabajo, quite de la mesa lo que no le sea útil, también es recomendable

    tener a la mano un block o un cuaderno para tomar notas y hacer pequeñas gráficas.

    3.2 Medidas de seguridad

    Estas medidas aunque le parezcan básicas son vitales para la seguridad de su equipo de

    cómputo y su seguridad personal:

    ð Antes de abrir cualquier computadora es necesario revisarla para poder detectar posibles

    fallas, por lo cual hay que encender la computadora y probar todas y cada una de las

    aplicaciones, revisar las unidades de disco flexible y la unidad de CD-ROM, así como

    verificar que cada una de las teclas del teclado funcionen adecuadamente, y que tanto el

    ratón como los botones se desplacen sin ningún problema.

    ð Si detectó algún problema tome nota e infórmele al dueño del equipo.

    ð Antes de quitar los tornillos es recomendable que desconecte la computadora de la

    energía, quite todos los cables exteriores, tomando nota del lugar de donde los quitó.

    ð Retire los tornillos e introdúzcalos en el bote para rollo fotográfico (así se evita perder los

    tornillos), asegúrese de utilizar el desarmador adecuado.

    ð Quite la tapa de la computadora.

    ð Si el CPU es mini-torre “acuéstelo” para poder trabajar con comodidad y seguridad.

    ð Antes de quitar cualquier componente observe con cuidado la parte interna de la PC,

    tome nota de la colocación de las tarjetas, para que cuando termine el mantenimiento

    preventivo las coloque en el lugar exacto de donde las sacó.

    ð Ya que haya tomado nota de todos los pequeños detalles proceda a colocarse la pulsera

    antiestática, esto es para evitar dañar alguna tarjeta.

    ð Quite el tornillo que sujeta a la tarjeta con el chasis de la PC e introdúzcalo también en el

    botecito, tal vez el tornillo sea un poco más pequeño que los tornillos del chasis, si es así

    colóquelo en otro botecito, etiquete los botecitos con cinta adhesiva para mayor control.

    ð Cuando saque alguna tarjeta y ya la haya limpiado colóquela dentro de una bolsa

    antiestática, lo mismo para todas las tarjetas.

    NOTA. Es recomendable que no quite el disco duro, microprocesador y fuente de poder.

    3.3 Reglas básicas de configuración e instalación física de dispositivos

    Ya que haya limpiado todas las tarjetas, incluyendo la tarjeta principal, el siguiente paso es

    volver a armar la PC, para lo cual se le recomienda lo siguiente:

    ð Nunca introduzca una tarjeta en una ranura que no le corresponde, por ejemplo; una

    tarjeta ISA nunca entrará en una ranura PCI pero si usted se empeña en meterla puede

    dañar la tarjeta o la ranura.

    ð El mismo procedimiento se lleva a cabo para los conectores de alimentación, en tanto

    tienen una forma especial o particular que impide introducirlos al revés, observe muy

    bien el dispositivo que necesita alimentación y verá que tiene la misma forma que el

    conector (sólo que a la inversa), es decir, si el conector del dispositivo es hembra

    forzosamente necesita insertarle un conector macho y así sucesivamente.

    ð Si desconectó los conectores P8 y P9 de la fuente de alimentación de la tarjeta principal,

    siga esta sencilla recomendación: los cables negros tienen que ir juntos, no los invierta ya

    que pueden dañar el equipo.

    ð Cuando inserte los cables tipo Listón tiene que seguir la “Ley del Pin 1”, esta ley o regla

    implica la manera como se tiene que colocar el cable o Bus, observe con cuidado sus cables

    tipo Listón y podrá ver que en uno de los extremos el cable tiene un filamento rojo, ese

    filamento indica que es el Pin 1, ahora en su dispositivo (disco duro, unidad de disco flexible

    o CD-ROM) en la parte exterior cerca del lugar donde se inserta el cable tiene que ver un

    número 1 o una especie de flecha, esa señalización indica que es el Pin 1; en pocas palabras

    tiene que coincidir el filamento rojo con el No. 1 o la flecha indicada en el dispositivo.

    ð Colocar las tarjetas en el lugar exacto de donde las sacó, así evita alterar la configuración

    que ya se tenía antes.

    ð Antes de cerrar el equipo verificar que funcione adecuadamente.

    Recomendaciones:

    ð Nunca introducir nada a la fuerza, ya que se pueden dañar los conectores y los

    dispositivos, sólo entra de una manera.

    ð Colocar todo como estaba antes de desarmar la PC.

    ð Seguir la regla del Pin 1.

    El medio ambiente que rodea a la computadora personal encuentra en ella un imán de polvo,

    se preguntará y esto en qué me afecta. Pues resulta que el polvo, aunado a un ambiente

    húmedo o muy seco puede ser un magnífico conductor eléctrico, lo cual puede provocar

    pequeñas fallas en los componentes electrónicos de la computadora personal, asimismo el

    polvo acumulado reduce la eficiencia de los ventiladores de enfriamiento y puede actuar como

    un manto aislante que conserva el calor y no permite que la irradiación de éste se aleje de los

    componentes. De este modo, se debe limpiar el sistema de acuerdo con una calendarización

    que ya se comentó en capítulos anteriores, tomando en cuenta que dependiendo del medio

    ambiente que rodee la computadora dependerá la periodicidad con que se lleve a cabo esta

    tarea.

    Ahora bien, si ya se está dispuesto a dar mantenimiento a la computadora, será conveniente

    establecer medidas de seguridad y más o menos determinar cuál será el área de trabajo ideal

    para abrir la computadora. La mayor de las veces que uno realiza un trabajo, cualquiera que

    sea éste, es necesario siempre contar con todo el material, herramientas y área de trabajo

    adecuados para llevar a buen término dicha tarea. Un ejemplo muy simple es el siguiente: si al

    retirar una tuerca para remover una pieza mecánica, no cuento con una llave adecuada, y por

    falta de tiempo utilizo unas pinzas de presión, de momento se soluciona el problema, pero al

    no utilizar la llave adecuada se pueden ocasionar problemas que van desde el maltrato de la

    tuerca en el menor de los casos, y en el peor su deformación por la aplicación excesiva de

    presión, con la consecuencia de quedar inutilizada y tener que retardar el término de la tarea.

    El ejemplo anterior muestra de una manera muy simple el problema que se puede ocasionar

    sino no se cuenta con la herramienta adecuada. En el caso de equipo de cómputo el uso

    inadecuado de herramientas puede causar conflictos muy sencillos como cambiar un tornillo, y

    tan graves como cambiar una tarjeta electrónica (Madre, video, sonido, etcétera).

    La mesa de trabajo es una parte importante para poder realizar eficientemente el trabajo de

    limpieza así como su amplitud es una característica importante, ya que es necesario contar con

    el espacio adecuado para no correr el riesgo de que se caigan los componentes retirados del

    gabinete (cables, tarjetas de expansión, etcétera).

    Una iluminación adecuada es indispensable para poder observar las áreas que se limpiarán, a la

    par de una mejor identificación de los componentes de la computadora para evitar confusiones

    al momento de conectar los diferentes cables que hay dentro del sistema.

    En el mercado hay diferentes tipos de destornilladores, debido al diseño de la punta que tienen:

    plano, de cruz, estrella y de caja.

    De todos los tipos de destornilladores mencionados se necesitarán, por lo menos un juego de

    tres medidas en cada uno de los casos, en cuanto a los destornilladores de caja si conviene

    tener un juego completo.

    Las pinzas son una herramienta sumamente útil ya que ayudan a llegar a esos rincones donde a

    veces no entran sus dedos y es necesario tomar o conectar algo de ahí. Tambien sirven para

    enderezar los contactos que a veces por las prisas doblamos.

    Hay varios tipos de pinzas, de las cuales ocupará sólo las de punta y corte, ambas por lo menos

    en dos tamaños, pequeñas y medianas.

    Muchos de los circuitos del interior de la computadora son susceptibles de sufrir daños a causa

    de la electricidad estática. Una simple descarga puede inutilizar los circuitos integrados, lo cual

    a su vez puede repercutir en un mal y hasta inhabilitar el equipo. Debido a que la electricidad

    estática puede inclusive generarse en el cuerpo humano —esto variará dependiendo de cada

    uno como individuo— se necesitan tomar unas cuantas precauciones cuando se estén

    manejando componentes de la computadora, y una de ellas es ocupar la pulsera antiestática.

    La pulsera antiestática es un dispositivo que se adapta a su muñeca y lo conecta a una fuente de

    tierra (como la parte metálica de una caja) para mantenerlo libre de electricidad estática. Si

    tiene alfombra en el cuarto donde está trabajando con la computadora, tome sus precauciones

    contra la descarga de electricidad estática que definitivamente se generará en su cuerpo. En

    cualquier caso, no arrastre demasiado los pies mientras se encuentre trabajando con la

    computadora. Se generará menos electricidad estática de esta manera.

    Una vez que se han tomado las anteriores recomendaciones, hay que comenzar a darle

    mantenimiento al CPU y sus componentes. No hay que olvidar apagar la computadora y

    desconectar el cable de alimentación de la toma de energía.

    4.1 Tarjeta Madre

    Las mejores herramientas para esta labor son una brocha de cerdas rígidas limpia, una

    aspiradora y un producto limpiador-desengrasante. Utilice la brocha para remover el polvo

    adherido a los componentes para que la aspiradora pueda a su vez quitarlo. Aunque se debe de

    aspirar todo el polvo que se encuentre dentro del sistema hasta donde sea posible (sin exagerar

    al remover puentes, disipadores adheridos por pegamento o grapas, etc.), hay que poner

    especial énfasis en las siguientes áreas:

    ð Ventilador del CPU. Éste puede acumular casi tanto polvo como la fuente de poder, y

    como el CPU genera demasiado calor, es importante conservar limpio el ventilador para

    mantener en buen estado su capacidad de enfriamiento. Por lo tanto, si a simple vista se

    nota que éste ha sufrido deterioro por el paso del tiempo, o usted a notado que produce

    un ruido excesivo, será necesario que lo cambie, ya que el calentamiento excesivo en el

    CPU puede provocar fallos del sistema.

    ð Ranuras de expansión (ISA, PCI y AGP). Al mantener el polvo fuera de estas ranuras se

    asegura una buena calidad de conexión, si se instala posteriormente una tarjeta adaptadora

    en la ranura.

    Una vez retirado el polvo excesivo se puede aplicar un producto que acabe de retirar la

    suciedad de la tarjeta y que normalmente contiene una sustancia desengrasante; esto sirve para

    evitar que pequeños residuos de grasa provoquen la acumulación temprana de polvo.

    PRECAUCIÓN. Se deberá resistir la tentación de invertir el flujo del aire de la aspiradora o

    emplear aire comprimido para soplar el polvo fuera de la computadora. En primer lugar, sólo se

    lograría soplar el polvo de regreso a la habitación, de manera que puede caer otra vez dentro

    de la computadora. Sin embargo es más importante el hecho de que el polvo tiene la tendencia

    a abrirse paso dentro de las unidades lectoras de disco flexible, ranuras de expansión y otros

    lugares difíciles de alcanzar. Además, cuide que la brocha y la boquilla de la aspiradora no

    golpeen ni dañen algo.

    Limpiando la fuente de poder.

    4.1.1 SIMMs y DIMMs de memoria RAM

    Para poder limpiar los SIMMs y DIMMs es necesario desmontarlos de la Tarjeta madre, a

    continuación se explica cómo hacerlo.

    Extraer un SIMM no es una tarea muy difícil, para extraerlos de la ranura, basta con presionar

    las lengüetas laterales. Si no es posible hacerlo con los dedos, puede hacerse con la ayuda de

    un destornillador plano, teniendo mucho cuidado de no dañar ningún componente. En especial

    hay que evitar clavar el destornillador o rayar con él la superficie de la tarjeta madre.

    El procedimiento para retirar el polvo de estos dispositivos es exactamente igual al estudiado

    con anterioridad (Tarjeta Madre), sólo habrá que añadir que en caso de que las terminales se

    encuentren sucias se recomienda limpiarlas con una goma de lápiz, asegurándose de que no

    sea demasiado dura para no maltratar las terminales. Acto seguido se podrá aplicar sobre los

    mismos el producto desengrasante para eliminar cualquier residuo de grasa que pudiera existir.

    Se debe tener cuidado de tomar por los bordes los SIMMs y DIMMs para evitar posibles daños

    por descarga de electricidad estática generada por nuestro cuerpo. Es importante recalcar lo

    anterior ya que a veces estos dispositivos no se dañan de inmediato, pero se van degradando

    poco a poco, reduciendo así la vida útil de éstos.

    Una vez acabado el proceso de limpieza, hay que volver a colocar los SIMMs, lo cual implica un

    proceso donde habrá que observar que éstos tienen una pequeña muesca en uno de los lados y

    en la base de la ranura donde se inserta, hay una pequeña rebaba de plástico que permite insertar

    el modulo de la memoria únicamente cuando coincide con esta rebaba. Si esta operación se

    realiza correctamente, se empuja el módulo de memoria hasta que las lengüetas hacen un

    pequeño chasquido cuando se sitúan en su posición y aseguran el módulo de memoria.

    4.2 Unidades lectoras y de almacenamiento

    4.2.1 Disco duro

    Por lo regular, no hay nada que hacer para limpiar un disco duro, de hecho, si se llegara a abrir

    un disco duro, en ese momento se haría inmediatamente inservible, ya que la mínima partícula

    de polvo o del medio ambiente, pueden destruir la cabeza de un disco duro. Por tanto, la

    limpieza del disco duro, solamente implica retirar el polvo depositado sobre la superficie

    externa con una brocha y aspiradora.

    4.2.2 Unidad lectora de disco flexible

    Otro dispositivo que se debe de limpiar cada cierto tiempo es la unidad lectora de disco flexible

    de la computadora. A diferencia de las cabezas de un disco duro, que se desplazan sobre el

    disco en un cojín de aire, las de una unidad lectora de disco flexible descansan sobre la

    superficie del medio magnético del disco flexible. De este modo, la cabeza tiene la tendencia a

    acumular en forma progresiva la suciedad del disco. Si las cabezas llegan a ensuciarse en

    demasía, la unidad no podrá leer ni escribir en el disco.

    La limpieza de la unidad lectora no requiere que se desarme nada. En vez de ello, requiere de

    un limpiador especial, que se puede adquirir en cualquier tienda de productos de computación.

    El disco limpiador tiene el aspecto de un disco normal, sólo que la parte interior de la cubierta

    del disco está hecha de una tela suave y porosa en lugar del substrato plástico/magnético

    empleado en un disco normal. El conjunto de limpieza incluye un líquido que se aplica en la

    tela del disco. Posteriormente se introduce este disco en la unidad lectora y se intentará tener

    acceso a él, mediante el comando DIR A: si está en ambiente de DOS, o presionar dos veces el

    botón izquierdo del ratón en la unidad A: de la ventana de Mi PC, en Windows 95, 98 y

    Windows NT 4.0.

    4.3 Fuente de alimentación

    Nunca abra la fuente de poder para tratar de limpiar el interior, aunque se puede y debe aspirar el

    polvo de los orificios laterales de la fuente. Esto ayuda al buen funcionamiento del ventilador de

    la misma y lo capacita para sacar más aire del gabinete. Además en la parte posterior de la fuente

    de poder, se puede aspirar el polvo acumulado sobre la superficie de las aspas del ventilador. Tal

    vez sea posible retirar temporalmente la protección de alambre que lo cubre (si es movible), para

    poder tener acceso a las aspas y remover el polvo con la brocha de cerdas firmes y finalizar con

    la aspiradora, pero asegúrese de volver a colocar la protección cuando haya acabado la limpieza.

    4.4 Tarjetas en el sistema

    Para poder realizar la limpieza de estos dispositivos será necesario desmontarlos de las ranuras

    de expansión, lo cual sólo implica retirar un tornillo que fija la tarjeta a la estructura del

    gabinete y evita que se desprenda.

    El procedimiento para retirar el polvo de estos dispositivos es exactamente igual al estudiado

    con anterioridad (Tarjeta Madre), sólo debe añadirse que en caso de que las terminales se

    encuentren sucias se recomienda limpiarlas con una goma de lápiz, asegurándose de que no

    sea demasiado dura para no maltratar las terminales. Acto seguido se podrá aplicar sobre los

    mismos el producto desengrasante para eliminar cualquier residuo de grasa que pudiera existir.

    Se debe tener cuidado de tomar por los bordes laterales las tarjetas para evitar posibles daños

    por descarga de electricidad estática generada por nuestro cuerpo. Es importante recalcar lo

    anterior ya que a veces estos dispositivos no se dañan de inmediato, pero se van degradando

    poco a poco, reduciendo así la vida útil de éstos.

    El proceso de montaje de las tarjetas, al igual que el desmontaje no representa mayor problema

    más que introducir la tarjeta a su ranura, la mayor dificultad consistiría en que entrara muy

    ajustada, pero incorporando primero una de las esquinas y después el resto de la tarjeta en la

    ranura se soluciona el problema. Asegúrese de que inserta la tarjeta en la ranura adecuada.

    Antes que nada habrá que definir que los dispositivos a los cuales les daremos mantenimiento son

    considerados periféricos. Estos pueden ser de entrada, de salida y también los hay de entrada y

    salida. De los dispositivos periféricos a los cuales se les dará mantenimiento y se explica a

    continuación, los podemos considerar como: de salida al monitor y de entrada al teclado y ratón.

    Un dispositivo de entrada es aquél que mandará información al CPU. Un dispositivo de salida

    será aquél que reciba información del CPU. Por lo tanto, un dispositivo de entrada y salida será

    con el que se pueda enviar y recibir información del CPU.

    Aunque en este documento no se explicará cómo dar mantenimiento a todos los dispositivos

    periféricos más utilizados, por lo menos es conveniente saber cuáles son: impresoras, modems,

    cámaras digitales, micrófonos, escáner (digitalizador de imágenes), y las unidades de CD-ROM

    externas.

    5.1 Monitor

    En ningún momento cuando se habla de mantenimiento preventivo, se debe de pensar en que

    se va a abrir el monitor para limpiarlo. El monitor contiene condensadores de alta capacidad

    eléctrica que pueden producir un peligroso y hasta mortal choque eléctrico incluso después de

    haberlo apagado y desconectado. De cualquier modo, no hay mucho que se pueda limpiar en

    el interior del monitor.

    En vez de ello, hay que concentrarse en limpiar el exterior del monitor y la pantalla.

    Generalmente se ocupa una buena solución limpiadora de cristales para limpiar, no solamente

    el vidrio de la pantalla, sino también el gabinete. Hay que ocupar un lienzo libre de pelusa y

    vaciar el limpiador sobre el lienzo, no sobre el cristal. Esto evitará que el fluido escurra y se

    introduzca en el espacio entre el cristal y el gabinete. Lo anterior es muy importante recalcarlo

    ya que no se debe de introducir el fluido al interior del gabinete, porque podría provocar un

    corto circuito en el monitor.

    5.2 Teclado

    Es sorprendente la cantidad de suciedad y basura que se puede llegar a acumular en un teclado.

    La primera línea de defensa es un bote con gas comprimido (vea la figura), que se puede

    encontrar en tiendas de productos de computación y electrónica. La lata incluye un diminuto

    popote o pajilla para su aplicación, que se ajusta en la boquilla de la lata y le permite dirigir el

    gas a sitios de difícil acceso, como los espacios entre las teclas.

    Aplicación de aire comprimido al teclado para limpieza externa.

    Esta operación de soplado del teclado se debe de realizar en un lugar aparte del sitio donde

    generalmente trabaja con su computadora, y para evitar que eventualmente este polvo y

    suciedad regrese, utilice la aspiradora para juntar la basura a medida que ésta sea expedida por

    el aire comprimido.

    Aunque normalmente no se necesita desarmar el teclado para limpiar el polvo y los desechos

    que caen sobre el mismo, tal vez se necesite desarmar para limpiar alguna cosa que se haya

    derramado en él. El agua no afectará sino se derrama en demasía. Si sólo fueron unas cuantas

    gotas, no importa, se evaporarán por sí solas. Si se derrama refresco de cola u alguna otra cosa

    que contenga azúcar, realmente se debe abrir el teclado y limpiarlo a fondo.

    Antes de limpiar dentro del teclado necesitará:

    ð Un destornillador de cruz para desarmar el tecado.

    ð Gas comprimido y/o brocha y aspiradora.

    ð Alcohol isopropílico para limpiar y un lienzo libre de pelusas.

    El siguiente procedimiento sirve para limpiar a fondo el teclado.

    1. Cierre el sistema y apague su computadora.

    2. Desconecte el teclado de la computadora y colóquelo de cabeza sobre una superficie de

    trabajo limpia y plana.

    NOTA. Si planea desarmar el teclado y quitar las teclas para limpiar debajo de ellas, es una

    buena idea hacer una fotocopia de la distribución del teclado. Puede utilizar posteriormente

    esta fotocopia para asegurarse de que tenga todas las teclas de vuelta en su posición correcta.

    3. Retire los tornillos que mantienen unida la cubierta del teclado (vea figura).

    Cómo retirar los tornillos que fijan la cubierta del teclado.

    4. Manteniendo unida la cubierta, dé vuelta al teclado, y retire la cubierta superior. Emplee el

    gas comprimido y/o brocha y la aspiradora para limpiar las teclas (vea la figura).

    Aplicando aire comprimido a las teclas para una limpieza profunda.

    NOTA. Si sólo quiere limpiar el polvo y suciedad diversa del teclado, deténgase aquí y vuelva a

    ensamblar el teclado, los pasos siguientes son para la limpieza de derrames.

    5. Teniendo cuidado de que no se caiga ninguna tecla, quite el dispositivo de las teclas del

    gabinete.

    6. Si el teclado tiene una tarjeta de circuitos unida al dispositivo de las teclas (ver figura),

    retírela y hágala a un lado (observe la manera en que está conectada dicha tarjeta).

    Cómo retirar la tarjeta de circuitos de la base del teclado.

    7. Retire los tornillos que sostienen la placa metálica en la parte posterior del dispositivo del

    teclado. Ponga los tornillos en una taza u otro recipiente, de manera que no se pierdan,

    (ver figura).

    Retirando los tornillos de la placa metálica.

    8. Levante cuidadosamente la placa de metal. Lo que encontrará debajo de ella depende del

    diseño del teclado; la figura siguiente es una muestra bastante típica de lo que verá: alguna

    clase de circuito impreso. Con sumo cuidado levante y limpie los contactos de la tarjeta con

    el alcohol y el lienzo.

    Retirando el circuito impreso para limpieza.

    9. Probablemente, habrá un tipo de almohadilla de hule entre el circuito impreso y la parte

    posterior de las teclas (ver figura siguiente). Levante cuidadosamente ésta y limpie cualquier

    residuo de derrames de dicha almohadilla, así como de la parte posterior de las teclas.

    Limpieza de almohadilla (membrana).

    10. Vuelva a ensamblar las almohadillas, el circuito impreso, la tarjeta del circuito y la placa

    metálica, después voltee el dispositivo para ponerlo al derecho nuevamente.

    11. También sería una buena idea quitar las teclas y limpiar debajo de ellas. Las teclas deben

    botarse, pero no retire muchas a la vez, porque tendrá un gran problema tratando de

    deducir donde irían ciertas teclas. Limpie debajo de ellas con alcohol y un lienzo.

    PRECAUCIÓN. Algunas de las teclas tienen alambres de retención debajo de ellas (véanse

    figuras siguientes). Es mejor que no los quite, porque puede ser difícil volver a colocar los

    alambres en los sitios correctos. Si tiene que quitarlos, tal vez le resulte más sencillo conectar

    primero el alambre a las teclas, y luego conectar el alambre y la tecla al teclado. Vuelva a

    ensamblar estas teclas antes de que coloque la cubierta de nuevo en el teclado, para facilitar el

    acceso a los alambres y conectores.

    Identificación de soportes de los alambres de retención.

    Cómo colocar el alambre de retención.

    5.3 Ratón

    Es buena idea limpiar ocasionalmente el interior de su ratón, ya sea normal, o de tipo

    estacionario. Hay dos clases principales: ópticos y mecánicos.

    Los dispositivos mecánicos tiene una esfera sin características especiales que moviliza

    pequeños rodillos a medida que se desplaza el ratón en una superficie, en la figura se muestra

    la esfera retirada de un ratón.

    Esfera del ratón.

    En la siguiente figura se ilustran los rodillos que se encuentran debajo de ella. El movimiento de

    los rodillos se traduce en una señal eléctrica que pasa a la PC. Con el tiempo, se va

    acumulando la suciedad en los rodillos y provoca problemas en el movimiento de la esfera. Se

    puede utilizar un lienzo de algodón o un paño humedecido de alcohol para limpiar los rodillos;

    o simplemente raspe la materia acumulada con la uña de su dedo. Asegúrese de quitar la

    basura del dispositivo antes de que vuelva a colocar la esfera en su lugar.

    Rodillos del ratón.

    Los ratones tienen un anillo de retención que mantiene a la esfera en su lugar, (ver figura). Para

    quitar la esfera, se debe de girar el anillo en dirección contraria a la de las manecillas del reloj y

    sacar el anillo. Luego se podrá quitar la esfera.

    Cómo retirar el anillo de retención de la esfera.

    Las computadoras actuales utilizan BIOS de muchos fabricantes distintos (AMI-BIOS; AWARD,

    etc.), en el caso de computadoras ensambladas; y también los hay del tipo propietario, es decir,

    las computadoras de marca hacen un BIOS que solamente se encontrará en su marca y que

    maneja de forma específica sus características. Los programas de estos BIOS son diferentes,

    aunque todos proporcionan los mismos tipos de funciones de bajo nivel. El sistema Plug and

    Play (conéctese y úsese) y el soporte para un nuevo hardware son dos razones para actualizar el

    BIOS de la PC, sólo que habrá que estar seguro que sea compatible con la tarjeta madre.

    ROM PCI/ISA BIOS (<P2L97>)

    CMOS SETUP UTILITY

    AWARD SOFTWARE. INC.

    STANDARD CMOS SETUP SUPERVISOR PASSWORD

    BIOS FESTURES SETUP USER PASSWORD

    CHIPSET FEATURES SETUP IDE HDD AUTO DETECTION

    POWER MANAGEMENT SETUP SAVE & EXIT SETUP

    PNP AND PCI SETUP EXIT WITHOUT SAVING

    LOAD BIOS DEFAULTS

    LOAD SETUP DEFAULTS

    Esc : Quit

    F10 : Save & Exit Setup

    ð ð → ð : Select Item

    (Shift)F2 : Change Color

    BIOS Utility

    System Configuration

    System Security

    Fixed Disk Physical Format

    ð ð = Move Higlight Bar ð = Select Esc = Exit and Reboot

    Tipos de Bios.

    6.1 Tipos de BIOS

    Dependiendo del tipo de BIOS que se tenga, la actualización puede ser tan fácil como ejecutar

    un programa. La mayoría de los circuitos integrados del BIOS en la actualidad son flash BIOS,

    lo cual significa que pueden ser reprogramados ejecutando un programa de actualización que

    se adquiere del propio fabricante. Con estos tipos de sistemas, es bueno revisarlos cada tres o

    seis meses, para ver si ya hay a la venta una nueva actualización del BIOS para renovarlo.

    Otros sistemas requieren de que se extraiga el circuito integrado del BIOS para reemplazarlo

    (BIOS no Programable). El costo puede ser elevado, por lo que no le gustaría hacer este tipo de

    actualización con frecuencia. Pero una actualización le puede dar los mismos beneficios que

    una actualización flash BIOS.

    NOTA. La conexión entre la Tarjeta Madre (con todos sus conponentes) y el BIOS significa que

    no se puede ir simplemente a la tienda de electrónica y comprar un nuevo BIOS. La

    actualización del BIOS tiene que estar diseñada específicamente para el juego de circuitos

    integrados utilizados en la Tarjeta Madre donde se piensa insertar la actualización del BIOS.

    6.2 Utilerías del BIOS (detección automática del disco duro)

    Hay un par de puntos que se deberán de entender sobre la configuración del disco duro antes

    de trabajar con el programa de configuración de su BIOS. Primero, se encontrará que los

    sistemas normalmente soportan dos controladores IDE, cada uno de los cuales se dice que es

    una “cadena” IDE. Cada cadena puede contener hasta dos discos duros.

    A continuación se describe el procedimiento de autodetección de discos duros por medio del BIOS:

    1. Para acceder al menú de configuración del BIOS hay que pulsar, en los primeros segundos

    del proceso de arranque, la tecla Supr. En las PC que tienen un BIOS antiguo, la tecla de

    acceso al setup puede ser otra. Los distintos mensajes que aparecen durante el proceso de

    arranque suelen indicar cuál es la tecla, o la combinación de teclas a pulsar para activar la

    opción de configuración del BIOS, aunque lo hacen en inglés y, por lo tanto, hay que

    adaptarla a un teclado en español. La tecla DEL (delete), equivale a Supr, y Shift a la tecla

    de mayúsculas, que puede estar indicado como Mayús o con una flecha hacia arriba.

    2. Los menús e inicio que aparecen durante el setup del BIOS varían de una PC a otra, aunque

    mantienen siempre una serie de opciones comunes. La opción Ide Hdd Autodetection está

    presente en la mayor parte del BIOS para microprocesadores Pentium y Pentium II. Al

    seleccionarla, se arranca un proceso automático de detección de los discos duros instalados

    en la PC.

    ROM PCI/ISA BIOS (<P2L97>)

    CMOS SETUP UTILITY

    AWARD SOFTWARE. INC.

    STANDARD CMOS SETUP SUPERVISOR PASSWORD

    BIOS FESTURES SETUP USER PASSWORD

    CHIPSET FEATURES SETUP IDE HDD AUTO DETECTION

    POWER MANAGEMENT SETUP SAVE & EXIT SETUP

    PNP AND PCI SETUP EXIT WITHOUT SAVING

    LOAD BIOS DEFAULTS

    LOAD SETUP DEFAULTS

    Esc : Quit

    F10 : Save & Exit Setup

    ð ð → ð : Select Item

    (Shift)F2 : Change Color

    Menú de Configuración del disco duro del Bios Award.

    Menú de Configuración del disco duro del Bios Amibios.

    BASIC SYSTEM CONFIGURATION Page 1

    Date ------------------------------ [05/17/93]

    Time ------------------------------- [10:40:30]

    Diskette Drive A ------------------- [ ]

    Diskette Drive B ------------------- [ ]

    Fixed Disk 0 ----------------------- [ ]

    Fixed Disk 1 ----------------------- [ ]

    Base Memory---------------------- [ ]

    Extended Memory------------------ [ ]

    Total Memory ---------------------- [ ]

    Math Coprocessor----------------- [ ]

    Video Memory---------------------- [ ]

    ð ð : Move Highlight Bar, → ð = Change Setting, PgDn/PgUp = Move Screen

    F9 = Default Setting, F10 = Bootable Setting, F1 = Help, Esc = Exit

    Menú de Configuración del disco duro del Bios Acer.

    3. Cuando este proceso detecta una unidad, muestra los datos correspondientes a su estructura

    física y a su estado dentro del bus IDE. Los dos canales IDE se indican como Primary y

    Secundary, mientras que la posición de los discos en el canal se identifican como Master

    para el principal y Slave para el secundario. El proceso intenta localizar los cuatro discos

    que pueden conectarse al bus IDE y muestra la información obtenida cada vez que termina

    la búsqueda de una unidad. Este proceso esperará a que el usuario confirme el ajuste del

    BIOS en función de los datos detectados.

    4. Al añadir, cambiar o retirar discos del sistema hay que ajustar la configuración de los

    dispositivos IDE dentro del BIOS con un proceso de autodetección. Dependiendo de la

    versión del BIOS, podrá configurarse la detección automática de las unidades conectadas

    cada vez que arranque la PC. Así, no deberán ajustarse los datos de las unidades

    conectadas cada vez que haya un cambio, como sucede al usar unidades de disco

    extraíbles. Para activar la búsqueda automática de discos al arrancar el sistema operativo, se

    seleccionará el menú Standard Cmos Setup en la pantalla del setup.

    5. En esta pantalla aparecen algunos parámetros básicos para la configuración del ordenador

    como la fecha, la hora y las unidades de disquete. Las unidades de disco configuradas en el

    sistema, acompañadas de información relativa a su estructura física, se muestran en la lista

    de dispositivos IDE.

    6. Para ajustar la detección automática, hay que cambiar el parámetro Type de los cuatro

    dispositivos IDE y dejarlo como Auto. Al hacerlo el proceso de arranque del ordenador

    mostrará unas breves indicaciones con las unidades IDE instaladas, configurándose de

    modo automático en función de los valores obtenidos.

    7. Los discos duros IDE pueden emplear distintos modos de transferencia que pueden

    detectarse también automáticamente durante el arranque de la PC. Al igual que en el paso

    anterior, hay que cambiar las cuatro entradas de la columna Mode y dejarlas como Auto.

    8. En ocasiones, cuando se decide cambiar el disco principal del sistema por uno nuevo, el

    ordenador no puede arrancar ni desde el disco duro ni desde un disquete de inicio, debido

    a que está deshabilitada la función de arranque desde el disquete en el BIOS. Para habilitar

    el arranque con el disco de inicio, desde la pantalla principal del setup del BIOS, dentro del

    menú Bios Features Setup, hay que modificar la opción Boot Sequence. La secuencia de

    letras que indica esta opción indica el orden de búsqueda del disco de inicio.

    6.3 Protección del BIOS y/o del sistema (password)

    Una vez que se ha configurado el BIOS a los requerimientos del sistema, se tiene la posibilidad

    de restringir el acceso a la configuración del BIOS y al ordenador, mediante el uso de una

    contraseña (password).

    1. Se accede al menú de Configuración del BIOS de la misma manera que para detectar los

    discos, descrita en el punto anterior.

    2. En la pantalla principal del setup, se encuentra la opción Password Setting, al seleccionarla

    aparece un cuadro de diálogo solicitando la contraseña, al introducirla se presenta otro

    cuadro de dialogó que requiere la confirmación de la contraseña.

    3. Una vez realizado lo anterior, en el menú Principal del setup se encuentra la opción Bios

    Features, la cual hay que seleccionar.

    4. Dentro de la selección se despliega una serie de opciones, dentro de las cuales se encuentra

    la opción Security option, que puede modificarse usando las teclas ± o Re Pág / Av Pág.

    ROM PCI/ISA BIOS (<P2L97>)

    BIOS FEATURES SETUP

    AWARD SOFTWARE. INC.

    CPU Internal Core Speed : 120Mhz Video ROM BIOS Shadow : Enabled

    C8000 - CBFFF Shadow : Disabled

    CC000 - CFFFF Shadow : Disabled

    Virus Warning : Disabled D0000 - D3FFF Shadow : Disabled

    CPU Level 1 Cache : Enabled D4000 - D7FFF Shadow : Disabled

    CPU Level 2 Cache : Enabled D8000 - DBFFF Shadow : Disabled

    BIOS Update : Enabled DC000 - DFFFF Shadow : Disabled

    CPU Fast String : Enabled

    Quick Power On Self Test : Enabled Boot Up NumLock Status : On

    HDD Sequence SCSI/IDE First : IDE Typematic Rate Setting : Disabled

    Boot Secuence : C.A Typematic Rate (Chars/Sec) : 6

    Boot Up Floppy Seek : Disabled Typematic Rate (Msec) : 250

    Floppy Disk Access Control : R/W

    IDE HDD Block Mode Sectors : HDD MAX

    Security Option : System

    PS/2 Mouse Fuction Control : Auto ESC : Quit ð ð → ð : Select Item

    PCI/VGA Palette Snoop : Disabled F1 : Help PU/PD/+/- : Modify

    OS/2 Onboard Memory > 64M : Disabled F5 : Old Values (Shift)F2 : Color

    F6 : Load BIOS Defaults

    F7 : Load Setup Defaults

    Menú de activación de contraseña para sistema o setup de Award.

    9. La primera opción es Setup, la cual indica que sólo pedirá la contraseña al entrar al BIOS, la

    segunda es System, que pedirá la contraseña al encender la PC.

    10. Al seleccionar la opción de nuestra referencia, hay que asegurarse de guardar los cambios

    hechos en el Bios y al salir de éste se reiniciará la PC.

    6.4 Opciones de arranque del sistema

    La PC al arrancar revisa las unidades donde puede estar el sistema operativo que necesita para

    iniciar, esta revisión se especifica en el programa de configuración del BIOS.

    Para configurar esta opción debe conocer dónde se encuentra el sistema operativo y tomar en

    cuenta qué clase de unidades tiene.

    1. Hay que acceder al programa de configuración del Bios, de la manera ya descrita en los

    puntos anteriores.

    2. Desde la Pantalla principal del setup del BIOS, dentro del menú Bios Features Setup, hay

    que modificar la opción Boot Sequence (para modificar la opción se usan las teclas ± o Av

    Pág/Re Pág), la secuencia de letras que indica esta opción indica el orden de búsqueda del

    disco de inicio.

    ROM PCI/ISA BIOS (<P2L97>)

    BIOS FEATURES SETUP

    AWARD SOFTWARE. INC.

    CPU Internal Core Speed : 120Mhz Video ROM BIOS Shadow : Enabled

    C8000 - CBFFF Shadow : Disabled

    CC000 - CFFFF Shadow : Disabled

    Virus Warning : Disabled D0000 - D3FFF Shadow : Disabled

    CPU Level 1 Cache : Enabled D4000 - D7FFF Shadow : Disabled

    CPU Level 2 Cache : Enabled D8000 - DBFFF Shadow : Disabled

    BIOS Update : Enabled DC000 - DFFFF Shadow : Disabled

    CPU Fast String : Enabled

    Quick Power On Self Test : Enabled Boot Up NumLock Status : On

    HDD Sequence SCSI/IDE First : IDE Typematic Rate Setting : Disabled

    Boot Secuence : C.A Typematic Rate (Chars/Sec) : 6

    Boot Up Floppy Seek : Disabled Typematic Rate (Msec) : 250

    Floppy Disk Access Control : R/W

    IDE HDD Block Mode Sectors : HDD MAX

    Security Option : System

    PS/2 Mouse Fuction Control : Auto ESC : Quit ð ð → ð : Select Item

    PCI/VGA Palette Snoop : Disabled F1 : Help PU/PD/+/- : Modify

    OS/2 Onboard Memory > 64M : Disabled F5 : Old Values (Shift)F2 : Color

    F6 : Load BIOS Defaults

    F7 : Load Setup Defaults

    Menú de selección del dispositivo de arranque del sistema.

    3. Por regla general, puede dejarse el disco principal C como unidad única de arranque

    aunque, ya que al instalar un SO deberá poder arrancarse tanto desde el disquete como del

    disco duro, la opción deberá mostrar también las unidades A,C.

    Algunos ordenadores cuentan con CD-ROM o un dispositivo SCSI, desde el cual se inicia, por

    lo que es necesario elegir la opción que se adecue a nuestro sistema.

    La utilización de software para el mantenimiento del disco duro en buen estado, y obtener el

    máximo rendimiento de él, son aspectos necesarios para guardar de manera segura la

    información. Además es importante conocer las características del sistema de la PC, lo cual

    ayuda a encontrar problemas, que además pueden ser corregidos.

    Existe una amplia variedad de programas de software que se encargan de estas tareas, por lo

    que a continuación se describirá cómo funcionan los programas más importantes para el

    mantenimiento del disco y la revisión del sistema.

    7.1 Optimización y revisión del disco duro

    Un optimizador es una utilería de software relativamente amplia que puede incluir diversas

    características y funciones. Por lo general, los optimizadores de disco están diseñados para

    manejar las siguientes funciones:

    ð Defragmentar el disco.

    ð Reacomodar físicamente los archivos en el disco.

    ð Localizar y marcar las posiciones de almacenamiento dañadas.

    La fragmentación del disco sucede después de que el sistema operativo ha escrito diferentes

    versiones de los archivos varias veces, esto es, un archivo después de ser modificado, al

    guardarse no ocupa direcciones de memoria contiguas en el disco. Tomando en cuenta la gran

    cantidad de archivos que maneja un ordenador, la fragmentación se convierte en un problema,

    en tanto es necesario buscar en el disco dónde se encuentran las posiciones de memoria, lo

    cual genera una curva de tiempo de acceso cada vez mayor.

    7.1.1 Utilerías del sistema operativo

    La utilería defragmentadora revisa los registros del directorio y la FAT (file allocation table), para

    determinar cuáles archivos están fragmentados, y luego reescribe los archivos en nuevas

    posiciones manteniéndolos juntos. Es necesario utilizar un defragmentador con frecuencia, con

    lo cual se notará una mejora definitiva en el rendimiento del disco cuando se limpia un disco

    que está muy fragmentado. La fragmentación de archivos individuales es sólo una de las formas

    en que el disco se alenta. Otra forma es cuando se carga más de un archivo a la vez y estos

    archivos están muy separados en el disco. Estas separaciones suceden conforme se crean y

    borran archivos o se ejecutan utilerías defragmentadoras. Es mejor tener físicamente juntos en el

    disco a los archivos relacionados. Algunas veces el reacomodo se hace como parte de la utilería

    defragmentadora pero en ocasiones se hace con una utilería separada.

    En Windows se cuenta con el programa Defragmentador de disco, el cual se encuentra dentro de

    las herramientas del sistema. Su uso es muy sencillo, sólo se ejecuta y se siguen los pasos que las

    ventanas describen, este programa también se encarga del reacomodo físico de archivos.

    La revisión de la superficie del disco para probar cada posición de almacenamiento, marcando

    aquéllas que no sean estables, es necesaria pues el escribir un dato en dicha posición puede

    terminar con la pérdida del mismo y algunos dolores de cabeza.

    Windows cuenta con una herramienta llamada Scandisk, la cual revisa la estructura de

    archivos, directorios y la superficie del disco que se le indiquen. Ésta se encuentra dentro de las

    herramientas del sistema, y puede efectuar una revisión de estructura y de supercficie o física

    del disco.

    7.1.2 Utilerías comerciales

    Dentro de las utilerías comerciales más conocidas y funcionales tenemos las de Symantec mejor

    conocidas como Norton Utilities, las cuales cuentan con las herramientas descritas

    anteriormente y algunas otras para mejorar el rendimiento de la PC.

    Otra herramienta muy conocida es la perteneciente a McAffe, llamada Nuts and Bolts, que

    tienen la misma finalidad.

    Por lo general las herramientas comerciales tienen un rendimiento más alto que las

    herramientas integradas al sistema operativo, pero su costo puede ser considerable. Para utilizar

    estas herramientas será necesario referirse al manual de la utilería que esté ocupando.

    7.2 Revisión del sistema

    La forma en que la PC se encuentra está determinada por la configuración del sistema, el cual

    puede tener problemas con discos, puertos, tarjetas controladoras interrupciones, monitor, etc.

    Por ello es necesario contar con una herramienta que permita conocer el estado del sistema y

    los posibles conflictos que pueda tener, para después poder buscar una solución.

    7.2.1 Utilerías del sistema operativo

    Windows cuenta con un programa llamado sistema que se halla dentro del Panel de Control, o

    bien es posible acceder a él posicionándonos en el ícono de Mi PC, después de oprimir el

    botón derecho, aparecerá una ventana de opciones, donde deberá elegir la opción de

    Propiedades. Dentro de esta herramienta pueden verse cuatro posibles formatos de despliegue:

    General, Administrador de dispositivos, Perfiles de hardware y Rendimiento.

    En general es posible observar qué sistema operativo se tiene, cuánta memoria RAM tiene el

    sistema y el número de registro de Windows.

    En el Administrador de dispositivos están los dispositivos con los que cuenta el sistema, e indica

    mediante un signo de interrogación o de admiración si se tiene algún problema con algún

    dispositivo. También se pueden ver las interrupciones con las que cuenta el sistema, y qué

    recurso la está utilizando.

    Dentro de Perfiles de hardware se encuentran distintas opciones de arranque de hardware para

    la PC, pero por lo general sólo se cuenta con una, salvo en casos especiales.

    En Rendimiento del sistema se despliegan opciones avanzadas sobre: Sistema de archivos,

    Gráficos y Memoria virtual.

    En el Sistema de archivos están las opciones acerca del disco duro, CD-ROM y solución de

    problemas. Dentro de Gráficos se encuentran las opciones de aceleración vía software; y dentro

    de la opción Memoria virtual la posibilidad de elegir el tamaño y la localización de la memoria

    virtual.

    Por lo general, no es necesario modificar estas opciones, sin embargo su manipulación es

    sencilla e intuitiva.

    7.2.2 Utilerías comerciales

    Las herramientas comerciales para determinar el estado del sistema tienen el mismo objetivo,

    que es definir si hay algún problema y encontrar una forma de arreglarlo. Para la forma de

    utilización de una herramienta comercial será necesario referirse al manual de utilización de la

    herramienta. Cabe aclarar que la mayoría tiene un funcionamiento parecido.

    Algunas de las herramientas comerciales más conocidas son Benchmark y PCconfig.