Introducción a la Informática
Upcoming SlideShare
Loading in...5
×
 

Introducción a la Informática

on

  • 4,699 views

 

Statistics

Views

Total Views
4,699
Views on SlideShare
4,699
Embed Views
0

Actions

Likes
1
Downloads
11
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Introducción a la Informática Introducción a la Informática Document Transcript

  • ´ Cristobal Pareja ´ Angel Andeyro Manuel OjedaIntroducci´n a la Inform´tica o a I. Aspectos generales
  • 1a Edici´n o Febrero 1994 c Crist´bal Pareja o ´ Angel Andeyro Manuel Ojeda ISBN: 84-7491-489-2Dep´sito Legal: M-7713-94 o
  • ´Indice General Presentaci´n o 111 Conceptos B´sicos a 17 1.1 Inform´tica . . . . . . . . . . . . . a . . . . . . . . . . . . . 17 1.2 Computador . . . . . . . . . . . . . . . . . . . . . . . . . . 18 1.3 Sistema operativo . . . . . . . . . . . . . . . . . . . . . . . 19 1.4 Aplicaciones . . . . . . . . . . . . . . . . . . . . . . . . . . 20 1.5 Algoritmos y programas . . . . . . . . . . . . . . . . . . . 21 1.5.1 Algoritmos . . . . . . . . . . . . . . . . . . . . . . 22 1.5.2 Programaci´n . . . . . . . . o . . . . . . . . . . . . . 24 1.5.3 Lenguajes de Programaci´n o . . . . . . . . . . . . . 25 1.6 Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 1.7 Comentarios bibliogr´ficos . . . . . a . . . . . . . . . . . . . 282 Representaci´n de la informaci´n o o 29 2.1 Conceptos previos . . . . . . . . . . . . . . . . . . . . . . 29 2.1.1 Informaci´n anal´gica y digital . . . . . . . . . . o o . 29 2.1.2 Unidades de informaci´n en los sistemas digitales o . 30 2.1.3 Sistemas de numeraci´n posicionales . . . . . . . o . 31 2.2 Representaci´n digital de los datos . . . . . . . . . . . . o . 35 2.2.1 Representaci´n de los n´meros enteros . . . . . . o u . 35 2.2.2 Representaci´n de los n´meros reales . . . . . . . o u . 39 2.2.3 Limitaciones de los sistemas de representaci´n di- o gital de los n´meros . . . . . . . . . . . . . . . . u . 42 2.2.4 Representaci´n de los caracteres . . . . . . . . . o . 46 2.2.5 Organizaci´n de datos m´s complejos . . . . . . o a . 47 View slide
  • 6 ´ Indice general 2.2.6 Representaci´n de las instrucciones . o . . . . . . . . 48 2.3 C´digos redundantes . . . . . . . . . . . . . o . . . . . . . . 49 2.3.1 Informaci´n y redundancia . . . . . o . . . . . . . . 49 2.3.2 C´digos s´lo autodetectores: p de n o o . . . . . . . . 51 2.3.3 C´digos autocorrectores: Hamming . o . . . . . . . . 51 2.4 Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 2.5 Comentarios bibliogr´ficos . . . . . . . . . . a . . . . . . . . 573 Estructura f´ ısica de un computador 59 3.1 Componentes de un computador . . . . . . . . . . . . . . 60 3.1.1 Memoria principal . . . . . . . . . . . . . . . . . . 62 3.1.2 Unidad central de proceso . . . . . . . . . . . . . . 67 3.1.3 Perif´ricos . . . . . . . . . . . . . . . . . . . . . . e . 70 3.1.4 Buses de comunicaci´n . . . . . . . . . . . . . . . o . 74 3.2 Lenguajes de m´quina . . . . . . . . . . . . . . . . . . . a . 77 3.2.1 Formato de las instrucciones . . . . . . . . . . . . 78 3.2.2 Tipos de Instrucciones . . . . . . . . . . . . . . . . 79 3.3 Un ejemplo de recapitulaci´n . . . . . . . . . . . . . . . o . 80 3.3.1 UCP con acumulador . . . . . . . . . . . . . . . . 81 3.3.2 Un juego de instrucciones de m´quina de una di- a recci´n . . . . . . . . . . . . . . . . . . . . . . . . o . 82 3.3.3 Ejecuci´n de una instrucci´n. Detalle . . . . . . o o . 84 3.3.4 Traducci´n y ejecuci´n de un programa sencillo . o o . 85 3.4 Observaciones complementarias . . . . . . . . . . . . . . . 88 3.4.1 Tipos de direccionamiento . . . . . . . . . . . . . . 89 3.4.2 Subrutinas . . . . . . . . . . . . . . . . . . . . . . 91 3.4.3 Interrupciones . . . . . . . . . . . . . . . . . . . . 94 3.5 Otras arquitecturas . . . . . . . . . . . . . . . . . . . . . . 95 3.6 Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . 98 3.7 Comentarios bibliogr´ficos . . . . . . . . . . . . . . . . . a . 994 Sistemas Operativos 101 4.1 Cometido de un sistema operativo . . . . . . . . . . . . . 102 4.1.1 Funciones de los sistemas operativos . . . . . . . . 102 4.1.2 Formas de trabajo de los sistemas operativos . . . 103 4.2 Conceptos b´sicos de los sistemas operativos . . . . . a . . . 105 View slide
  • ´Indice general 7 4.2.1 Procesos . . . . . . . . . . . . . . . . . . . . . . . . 105 4.2.2 Archivos . . . . . . . . . . . . . . . . . . . . . . . . 106 4.2.3 N´cleo . . . . . . . . . . . . . . u . . . . . . . . . . . 109 4.2.4 Multiprogramaci´n . . . . . . . o . . . . . . . . . . . 110 4.2.5 Interfaz de usuario . . . . . . . . . . . . . . . . . . 111 4.2.6 Gesti´n de la memoria . . . . . o . . . . . . . . . . . 112 4.3 Clasificaci´n de los sistemas operativos o . . . . . . . . . . . 116 4.4 Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . 117 4.5 Comentarios bibliogr´ficos . . . . . . . a . . . . . . . . . . . 1175 Lenguajes de programaci´n o 119 5.1 Lenguajes de bajo y alto nivel . . . . . . . . . . . . . . . . 120 5.1.1 Lenguajes orientados a la m´quina . . a . . . . . . . 120 5.1.2 Lenguajes de alto nivel . . . . . . . . . . . . . . . . 122 5.1.3 Paradigmas de programaci´n . . . . . o . . . . . . . 124 5.2 Descripci´n de los lenguajes de programaci´n o o . . . . . . . 131 5.2.1 Sintaxis . . . . . . . . . . . . . . . . . . . . . . . . 131 5.2.2 Sem´ntica . . . . . . . . . . . . . . . . a . . . . . . . 137 5.3 Procesadores de lenguajes . . . . . . . . . . . . . . . . . . 141 5.3.1 Compiladores e int´rpretes . . . . . . e . . . . . . . 144 5.3.2 Entornos de programaci´n . . . . . . . o . . . . . . . 144 5.4 Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . 148 5.5 Comentarios bibliogr´ficos . . . . . . . . . . . a . . . . . . . 1496 Bases de datos 151 6.1 Bases de datos y SGBD . . . . . . . . . . . . . . . . . . . 151 6.1.1 Archivos y SGA . . . . . . . . . . . . . . . . . . . 151 6.1.2 Bases de datos y SGBD . . . . . . . . . . . . . . . 152 6.1.3 Niveles de una base de datos . . . . . . . . . . . . 154 6.2 El modelo entidad-relaci´n . . . . . . . o . . . . . . . . . . . 155 6.3 Modelos de datos basados en registros . . . . . . . . . . . 158 6.3.1 El modelo relacional . . . . . . . . . . . . . . . . . 158 6.4 Lenguajes asociados a los SGBD . . . . . . . . . . . . . . 160 6.4.1 Lenguajes relacionales . . . . . . . . . . . . . . . . 161 6.5 Elementos de un SGBD . . . . . . . . . . . . . . . . . . . 163 6.6 Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . 164
  • 8 ´ Indice general 6.7 Comentarios bibliogr´ficos . . . . . . . . . . . . . . . . . . 165 a7 Historia de los instrumentos de c´lculo a 167 7.1 Precursores de los computadores digitales . . . . . . . . . 167 7.1.1 La antig¨edad . . . . . . . . . . . . . . u . . . . . . 167 7.1.2 Antecedentes del c´lculo mec´nico . . . a a . . . . . . 168 7.1.3 La m´quina de Pascal . . . . . . . . . . a . . . . . . 168 7.1.4 La m´quina de Babbage . . . . . . . . . a . . . . . . 169 7.1.5 La tabulaci´n mec´nica . . . . . . . . . o a . . . . . . 170 7.2 Nacimiento de los computadores . . . . . . . . . . . . . . 171 7.2.1 El modelo de von Neumann . . . . . . . . . . . . . 172 7.2.2 Generaciones tecnol´gicas . . . . . . . . o . . . . . . 172 7.3 Evoluci´n de los lenguajes y de la metodolog´ o ıa . . . . . . 175 7.4 Tecnolog´ actual, tendencias y perspectivas . . ıa . . . . . . 176 7.4.1 Inteligencia artificial . . . . . . . . . . . . . . . . . 178 7.4.2 Las comunicaciones . . . . . . . . . . . . . . . . . . 178 7.5 Comentarios bibliogr´ficos . . . . . . . . . . . . a . . . . . . 179A Introducci´n al DOS o 181 A.1 Organizaci´n de recursos . . . . . . . . . . . . . o . . . . . . 182 A.1.1 Principales dispositivos . . . . . . . . . . . . . . . 182 A.1.2 Archivos . . . . . . . . . . . . . . . . . . . . . . . . 182 A.1.3 Directorios . . . . . . . . . . . . . . . . . . . . . . 184 A.1.4 Prompt . . . . . . . . . . . . . . . . . . . . . . . . 187 ´ A.2 Ordenes del DOS . . . . . . . . . . . . . . . . . . . . . . . 187 ´ A.2.1 Ordenes b´sicas . . . . . . . . . . . . . . a . . . . . . 190 A.2.2 Manejo de archivos . . . . . . . . . . . . . . . . . . 191 A.2.3 Manejo de directorios . . . . . . . . . . . . . . . . 193 A.2.4 Indicadores del sistema . . . . . . . . . . . . . . . 194 A.2.5 Procesamiento por lotes . . . . . . . . . . . . . . . 195 A.3 Configuraci´n del DOS . . . . . . . . . . . . . . o . . . . . . 195 A.4 Otros aspectos de inter´s . . . . . . . . . . . . . e . . . . . . 198 A.4.1 Encauzamiento: tubos y dem´s . . . . . a . . . . . . 198 A.4.2 Atributos y protecci´n de archivos . . . o . . . . . . 201 A.4.3 Ampliaciones de la memoria en los PCs . . . . . . 201
  • ´Indice general 9B Introducci´n a UNIX o 205 B.1 Breve descripci´n t´cnica . . . . . . . . . . . o e . . . . . . . 205 B.2 Una sesi´n con UNIX . . . . . . . . . . . . . o . . . . . . . 207 B.3 Gesti´n de archivos . . . . . . . . . . . . . . . o . . . . . . . 208 B.3.1 Identificadores . . . . . . . . . . . . . . . . . . . . 209 B.3.2 Tipos de archivos en UNIX . . . . . . . . . . . . . 209 B.3.3 Permisos asociados con un archivo . . . . . . . . . 210 ´ B.3.4 Ordenes para la gesti´n de archivos . . o . . . . . . . 211 B.4 El shell de UNIX . . . . . . . . . . . . . . . . . . . . . . . 212 B.4.1 Encauzamiento de la entrada y salida . . . . . . . 213 B.4.2 Caracteres comod´ . . . . . . . . . . ın . . . . . . . 213 B.4.3 Guiones de shell . . . . . . . . . . . . . . . . . . . 214 B.5 UNIX como sistema multitarea . . . . . . . . . . . . . . . 214 B.6 Conclusi´n . . . . . . . . . . . . . . . . . . . o . . . . . . . 216 B.7 Prontuario de comandos UNIX . . . . . . . . . . . . . . . 216 B.8 Diferencias entre DOS y UNIX . . . . . . . . . . . . . . . 221 Bibliograf´ ıa 223 ´ Indice alfab´tico e 228
  • Presentaci´n o Hay muchos y excelentes libros sobre inform´tica en un nivel intro- aductorio, con diversos enfoques y escritos en nuestra lengua. Muchos deellos est´n dirigidos a futuros inform´ticos, por lo que resultan, quiz´, a a ademasiado profundos para quienes s´lo persiguen aplicar la inform´tica o aen su trabajo; muchos otros, en cambio, se dirigen a no profesionales,por lo que ofrecen una visi´n panor´mica demasiado general de diver- o asos aspectos de la inform´tica, sin detenerse a analizar las implicaciones apr´cticas de esos aspectos. a Este libro se sit´a entre ambos extremos, ofreciendo un medio para uintroducir en la inform´tica a profesionales de otros campos que, sin em- abargo, necesiten aplicar adecuadamente los computadores en su trabajo,poniendo en marcha programas de aplicaci´n o manejando bancos de odatos e incluso, muchas veces, resolviendo por s´ mismos problemas no ıcontemplados en los programas comercializados. As´ pues, el contenido del texto incluye los temas que consideramos ıb´sicos para una introducci´n pr´ctica a la inform´tica. Quiz´ sea este a o a a aenfoque pr´ctico lo que mejor distinga a este texto de otros de intro- aducci´n a la inform´tica, que adolecen muchas veces de contenidos muy o aextensos y te´ricos, casi enciclop´dicos, en los que es dif´ diferenciar o e ıcillos conocimientos utiles en general de aqu´llos que s´lo encontrar´n de ´ e o autilidad inform´ticos profesionales. a Por lo tanto, este libro se dirige a quienes necesiten una formaci´nointroductoria en inform´tica, con un enfoque b´sico y pr´ctico, pero rigu- a a aroso. Entre ellos se encuentran, en primer lugar, todos aquellos alumnos
  • 12 ´ Presentacionde los primeros cursos universitarios que cuenten con asignaturas sobreinform´tica, tanto si se utiliza como herramienta aplicada a la resoluci´n a ode problemas como si es el propio objeto de estudio. Este libro se dirige asimismo a aquellas personas que, de una u otraforma, est´n relacionadas con el mundo de la inform´tica (operadores, a acomerciales, empresarios, etc.) y, sin embargo, ignoran lo que se escondetras la fachada de un computador (c´mo se almacena la informaci´n, o ocu´les son los procesos que se est´n ejecutando en su interior, etc.) y a aque utilizan una jerga t´cnica sin entender bien de qu´ hablan. e e Por ultimo, este libro se dirige tambi´n a todos los usuarios de com- ´ eputadores que est´n interesados en conocer mejor su herramienta de etrabajo, en saber qu´ estan haciendo y por qu´ lo hacen. El desarrollo e ey abaratamiento de los sistemas inform´ticos hace que computadores ade gran potencia que antes s´lo se encontraban en grandes centros de oc´lculo, atendidos por administradores de sistemas cualificados y dedi- acados por completo a dicha tarea, est´n hoy sobre nuestra mesa, y que el eusuario se tenga que encargar de administrar los recursos de su computa-dor, por ejemplo, gestionando la memoria, haciendo copias de seguridad,eliminando virus, etc. Por todo ello, cualquier usuario deber´ dedicar ıasiquiera una peque˜a parte de su tiempo a conocer los principios b´sicos n ade funcionamiento y gesti´n de su computador. o A todos ellos, este texto les ofrece la posibilidad de adquirir esosconocimientos, partiendo de cero, o de actualizarlos. Se ha seleccionado el contenido partiendo de las directrices se˜aladas nen [DCG*89] y [ACM91] aunque, en un nivel introductorio, no sea po-sible ni deseable abarcar todos los temas que s´lo interesan al futuro oprofesional de la inform´tica. As´ por ejemplo, quedan completamente a ıfuera del alcance de nuestro texto las areas de inteligencia artificial y ´rob´tica (AI) o la comunicaci´n hombre-m´quina (HU ). o o a Es frecuente, en cambio, que los destinatarios mencionados necesi-ten una parte de conocimientos generales sobre inform´tica y otra sobre adesarrollo de algoritmos en un lenguaje de alto nivel: ambas partes se in-cluyen en los programas de asignaturas de introducci´n a la inform´tica o a
  • ´Presentacion 13de los primeros cursos universitarios, y tambi´n interesan esas dos par- etes a los profesionales que usen la inform´tica como una herramienta y adeseen sacar partido de ella. El presente texto comprende dos vol´menes, complementarios, dedi- ucados respectivamente a esas dos partes, separando as´ la presentaci´n ı ode los conceptos generales y el desarrollo y organizaci´n de algoritmos oy estructuras de datos. En la primera parte, el enfoque pr´ctico nos aha llevado a relacionar los contenidos estudiados con sus repercusionespr´cticas o su utilizaci´n. En la segunda, se ha unificado el estudio de a olos algoritmos con su desarrollo, haciendo uso de un lenguaje de progra-maci´n concreto. o Este primer volumen se ha dividido en siete cap´ ıtulos, de los cua-les el primero ofrece una visi´n panor´mica de la inform´tica, de los o a acomputadores y de su uso en la actualidad: bien poniendo en marchaaplicaciones ya desarrolladas y adapt´ndolas a nuestras necesidades, o apreparando soluciones para problemas nuevos. Se presentan asimismolas primeras aproximaciones a los conceptos de algoritmo, programaci´n oy lenguajes de programaci´n. o En el cap´ ıtulo 2 se aborda la representaci´n digital de la informaci´n. o oConociendo las distintas formas de representaci´n, el programador podr´ o aelegir las m´s apropiadas a las caracter´ a ısticas y naturaleza de su pro-blema y prever sus limitaciones. Por otra parte, el usuario de aplicacio-nes tendr´ una idea aproximada de c´mo se almacena su informaci´n, el a o oespacio que ocupa y las circunstancias en que los resultados podr´ noıanser del todo fiables. El cap´ıtulo 3 est´ dedicado al aspecto f´ a ısico de los computadores ysus perif´ricos. Se explica su funcionamiento introduciendo los lenguajes ede bajo nivel, y se comentan brevemente las arquitecturas orientadas alprocesamiento en paralelo. En el cap´ ıtulo 4 se estudian los conceptos b´sicos para entender lo aque son los sistemas operativos, cu´les son sus funciones y c´mo las a ollevan a cabo. El cap´ ıtulo 5 se dedica a los lenguajes de programaci´n, en espe- o
  • 14 ´ Presentacioncial los lenguajes evolucionados. Se tratan distintos modelos de progra-maci´n, adem´s del imperativo, de amplia difusi´n en estos a˜os. Se o a o nintroducen los metalenguajes para describir su sintaxis por su utilidad,tanto a programadores como a simples usuarios de sistemas operativos,incluso en el nivel de los comandos. Finalmente, se estudian los distintostipos de traductores y los entornos de programaci´n. o El cap´ ıtulo 6 trata sobre las bases de datos, una de las aplicacionesde mayor aplicaci´n en el mundo empresarial. Entre los modelos des- oarrollados, destacamos el relacional y, entre los lenguajes de consulta, elSQL, debido a la extensa difusi´n de ambos en la actualidad. o Hemos dedicado el cap´ ıtulo 7 a los or´ ıgenes, estado actual y pers-pectivas de futuro de la inform´tica. Aunque muchos textos sit´an este a utema al principio, hemos preferido estudiarlo una vez que se conocenlos conceptos y la terminolog´ b´sicos. De esta forma mejora la com- ıa aprensi´n del cap´ o ıtulo y puede valorarse en su justa medida cada uno delos logros hist´ricos que en ´l se recogen. o e Debido al enfoque pr´ctico que perseguimos con este libro, se inclu- ayen dos ap´ndices dedicados a introducir en el manejo de dos sistemas eoperativos concretos de gran difusi´n en la actualidad: el DOS y el oUNIX. El hecho de traer aqu´ estos anexos responde a dos razones: por ıun lado, conocer las caracter´ ısticas de cada sistema interesa al estudiantecomo un ejemplo particular del cap´ ıtulo 4, permitiendo ver c´mo se lleva oa la pr´ctica lo estudiado en la teor´ por otro, siempre resulta de uti- a ıa;lidad al principiante disponer de un peque˜o prontuario de las ´rdenes n oo mecanismos m´s inmediatos que necesitar´ sin duda para empezar a a adesenvolverse en el entorno de esos sistemas operativos. En la mayor´ de los cap´ ıa ıtulos, se ha incluido una peque˜a colecci´n n ode cuestiones y sencillos ejercicios de aplicaci´n, utiles para afianzar los o ´conceptos introducidos. Adem´s, en cada cap´ a ıtulo se han seleccionado unas pocas referencias,para completar los contenidos presentados con otros enfoques, o bienpara profundizar en el tema.
  • ´Presentacion 15Agradecimientos En primer lugar, es inexcusable agradecer a la Editorial la confianzaque ha puesto en nosotros al aceptar una publicaci´n sobre un tema en oel que, ya lo hemos dicho, existen abundantes textos en nuestra lengua,as´ como su paciencia en la recepci´n de los originales. ı o Tambi´n debemos dejar constancia de nuestra gratitud hacia los ecompa˜eros que nos han alentado, desde el principio, a redactar este n ın a a ıa ´trabajo. En especial, a Benjam´ Hern´ndez Bl´zquez, Mar´ AngelesMedina S´nchez, Salvador Paz Mart´ a ınez, Inma P´rez de Guzm´n Mo- e alina y Marisol Timoneda Salinas, y tambi´n a todos aquellos alumnos eque, repetidamente, nos han sugerido la compilaci´n de unos apuntes de oclase. Durante la redacci´n de este trabajo, se han recogido numerosas opi- oniones y sugerencias. En particular, debemos agraceder las minuciosasrevisiones y comentarios hechos por Manuel Enciso Garc´ ıa-Oliveros, Car-los Rossi Jim´nez, Jos´ Luis Gal´n Garc´ Jaime Fern´ndez Mart´ e e a ıa, a ınez,Ma Angeles Cano Colorado, Oscar Mart´ S´nchez y Cristina Rodr´ ´ ´ ın a ıguezIglesias. Finalmente, quisi´ramos pedir la colaboraci´n de los lectores para e osubsanar las posibles deficiencias que encuentren.
  • Cap´ ıtulo 1Conceptos B´sicos a 1.1 Inform´tica . . . . . . . . a . . . . . . . . . . . . . . . . . . . . . 17 1.2 Computador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 1.3 Sistema operativo . . . . . . . . . . . . . . . . . . . . . . . . . . 19 1.4 Aplicaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 1.5 Algoritmos y programas . . . . . . . . . . . . . . . . . . . . . . 21 1.6 Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 1.7 Comentarios bibliogr´ficos a . . . . . . . . . . . . . . . . . . . . . 28 El objetivo principal de este cap´ ıtulo consiste en ofrecer una visi´n ogeneral del contenido del libro, presentando los conceptos generales ylos t´rminos m´s usados en inform´tica. Esta primera aproximaci´n e a a onos permite situar cada uno de los temas siguientes en relaci´n con los odem´s, y dentro del contexto de la inform´tica. a a1.1 Inform´tica a La inform´tica es la ciencia que estudia el procesamiento autom´tico a ade la informaci´n. Aunque la necesidad de razonar sobre este tipo de oprocesos existe desde tiempo atr´s, la consolidaci´n de la inform´tica a o acomo ciencia s´lo se produce con el desarrollo de los computadores, a opartir de los a˜os cuarenta. Se trata, por lo tanto, de una ciencia muy njoven, pero que ha evolucionado a gran velocidad.
  • 18 Cap´ ´ ıtulo 1. Conceptos Basicos La piedra maestra sobre la cual se ha podido desarrollar la infor-m´tica la representa el computador, que es una herramienta de gran aeficacia en muy diversos trabajos, y en particular en aqu´llos que ma- enejan un gran volumen de datos o de operaciones. Esta versatilidadtiene dos aspectos: por un lado, es posible usarlo como herramientapara aplicaciones concretas ya desarrolladas (1.4), y por otro se pue-den dise˜ar soluciones a la medida de problemas nuevos, mediante la nprogramaci´n (1.5). o El desarrollo de un programa nuevo para resolver un determinadoproblema requiere, por una parte, conocer alg´n procedimiento siste- um´tico (algoritmo) que lleve a su soluci´n, y por otra, la necesidad de a oexpresarlo en un lenguaje de programaci´n que el computador pueda ocomprender y ejecutar.1.2 Computador Un computador es una m´quina electr´nica que procesa informaci´n a o osiguiendo las instrucciones de un programa registrado. Para comunicarse con el exterior dispone de unos medios de entrada,a trav´s de los que recibe la informaci´n, y unos medios de salida, por e odonde la env´ Tiene dispositivos que le permiten almacenar la infor- ıa.maci´n (los datos, los resultados y el propio programa) y procesarla osiguiendo las instrucciones del programa. La informaci´n que se procesa en el computador (programas, da- otos y resultados) est´ expresada en forma digital binaria, combinando aceros y unos. En consecuencia, tanto los programas como los datos yresultados deben codificarse en este formato para poder ser procesados.Una vez obtenidos los resultados, ´stos tienen que ser decodificados para emostrarlos al usuario. Como hemos visto, un computador se compone de dos partes cla-ramente diferenciadas: una f´ ısica, que podemos tocar, constituida porcircuitos electr´nicos, teclado, pantalla, unidades de disco, etc., llamado ohardware, o en castellano soporte f´ ısico, y otra parte inmaterial, que no
  • 1.3. Sistema operativo 19 usuario software de aplicaciones y del sistema sistema operativo hardware Tabla 1.1. Estructura de niveles en un computador.podemos tocar, constituida por los programas y datos, llamada softwareen ingl´s y soporte l´gico en castellano. Ambas partes est´n ´ e o a ıntimamenterelacionadas de forma que una no puede operar sin la otra y viceversa.1.3 Sistema operativo Cuando se pone en marcha el computador, el primer programa queentra en funcionamiento es el sistema operativo, que gestiona y coordinalos dos aspectos, f´ ısico y l´gico, del computador. Se trata de un conjunto ode programas que se interrelacionan estrechamente con el hardware, ges-tionando los procesos en ejecuci´n, las operaciones de entrada y salida y ola memoria. Por ello, resulta imprescindible para el funcionamiento delcomputador. Los dem´s programas funcionan sobre el sistema operativo, y son agestionados por ´l. Entre ellos, se encuentran las herramientas para eel desarrollo de programas (tales como los editores y traductores delenguajes), y tambi´n los programas de aplicaciones. e Por lo tanto, podemos decir que dentro del computador existe ciertaorganizaci´n por niveles (v´ase la tabla 1.1): en el nivel m´s bajo se o e aencuentra el hardware, que por s´ mismo no puede realizar ninguna tarea; ıa continuaci´n se encuentra el sistema operativo, y desde ´l se arrancan o elos otros programas, que a su vez se relacionan directamente con elusuario. En resumen, el hardware no puede funcionar por s´ mismo: nece- ısita la ayuda del software. La uni´n de ambos constituye una m´quina o avirtual, tremendamente vers´til. a
  • 20 Cap´ ´ ıtulo 1. Conceptos Basicos1.4 Aplicaciones El software de aplicaciones est´ formado por aquellos programas que ahan sido desarrollados para realizar tareas concretas. Se llama as´ por- ıque el computador “se aplica” a un trabajo determinado, facilitando suejecuci´n y resoluci´n. Por ejemplo, un procesador de textos, una hoja o ode c´lculo, un gestor de bases de datos, un generador de gr´ficos, un a aprograma de contabilidad, juegos, etc. Entre las aplicaciones m´s utilizadas se encuentran las siguientes: a • Los procesadores de textos son programas que facilitan la elabo- raci´n de textos en el computador, desde una carta hasta un li- o bro. Permiten operar con m´rgenes, tabuladores, justificaci´n, a o sangrado, tipos de letra, b´squeda y sustituci´n de palabras, pa- u o ginaci´n, separaci´n de s´ o o ılabas, sin´nimos, ortograf´ etc. Son o ıa, probablemente los programas m´s usados. a • Las hojas de c´lculo son programas utilizados en la creaci´n de a o tablas, con datos relacionados entre s´ inicialmente ideados para ı, el an´lisis financiero. Tienen un formato matricial, en el que se a pueden definir operaciones y funciones sobre las distintas compo- nentes de la matriz. Al modificar alg´n dato, todas las operaciones u que lo utilizan son actualizadas de forma autom´tica. a • Los gestores de bases de datos permiten gestionar la informaci´n o referida a personas o art´ ıculos, realizando operaciones de edici´n, o ordenaci´n, b´squeda, etc. o u • Los generadores de gr´ficos facilitan la creaci´n de distintos tipos a o de gr´ficos, a partir de datos de hojas de c´lculo o bases de datos, a a o directamente introducidos por el usuario.Existen muchas otras aplicaciones, de uso menos general, como sonlos programas matem´ticos, estad´ a ısticos, de CAD (Dise˜o Asistido por nComputador), aplicaciones contables y de gesti´n de empresas, comuni- ocaciones, juegos, etc.
  • 1.5. Algoritmos y programas 21 El desarrollo del software de aplicaciones ha sido muy grande (se cal-cula que para los computadores compatibles con IBM hay m´s de cien amil aplicaciones diferentes). A su vez, los distintos programas van evo-lucionando, y aparecen nuevas versiones con m´s posibilidades y mayor avelocidad de ejecuci´n, aunque tambi´n con mayor demanda de potencia o ey memoria. En algunos casos, varios de estos programas se unen en uno solo,compartiendo datos e instrucciones, y constituyen un paquete integrado.En general suele integrarse una hoja de c´lculo con un generador de agr´ficos y, a veces, con una base de datos y un procesador de textos. a Gran parte de los programas de aplicaci´n pueden configurarse, en omayor o menor medida, de acuerdo con los gustos y necesidades delusuario; sin embargo, es posible que un programa concreto no puedaatender esas necesidades. En este caso, resulta muy dif´ por no decir ıcil,imposible (e ilegal en muchos casos), modificar el programa para incluiruna nueva tarea. Conscientes de esta falta de flexibilidad del software,muchos fabricantes est´n presentando programas de aplicaci´n que a a osu vez pueden ser programados, mediante lenguajes de programaci´n opropios o est´ndares. a As´ pues, aunque la mayor´ de las personas que utilizan los compu- ı ıatadores trabajan con programas de aplicaci´n y no necesitan recurrir a ola programaci´n, tambi´n hay un buen n´mero de usuarios que, sin ser o e uinform´ticos profesionales, pueden obtener un mayor rendimiento de es- atos programas a trav´s de la programaci´n. Por ejemplo, muchas hojas e ode c´lculo, gestores de bases de datos y paquetes matem´ticos, hoy en a ad´ son programables. ıa,1.5 Algoritmos y programas El desarrollo de programas es otro de los aspectos fundamentalesde la utilizaci´n de los computadores porque continuamente aparecen onuevos problemas o tareas susceptibles de ser procesados de forma au-tom´tica. Al mismo tiempo se van detectando las lagunas o deficiencias aen las aplicaciones existentes, lo que impulsa a su renovaci´n con la o
  • 22 Cap´ ´ ıtulo 1. Conceptos Basicoscreaci´n de nuevas versiones de los programas existentes. El desarrollo odel hardware posibilita tambi´n la aparici´n de nuevas aplicaciones m´s e o apotentes y con mayores demandas de recursos. Desde el planteamiento de un problema hasta la obtenci´n de su osoluci´n en el computador hay que recorrer una serie de etapas: o 1. En primer lugar, antes de resolver un problema en el computador hay que conocer los pasos y operaciones que hay que realizar para obtener la soluci´n del problema, es decir, su algoritmo, porque o el computador solamente es capaz de seguir aquellas instrucciones que nosotros le indiquemos. Si no conocemos el proceso que nos conduce a la soluci´n del problema, el computador no nos la va a o dar. Esta secuencia de pasos y operaciones constituye una soluci´n o general al problema planteado de forma que, siguiendo el proceso, se llega a la soluci´n del problema sean cuales fueran los datos o proporcionados. 2. Una vez conocida esta soluci´n general del problema, hay que ex- o presarla en un lenguaje especial, que pueda ser comprendido y ejecutado por el computador, es decir, en un lenguaje de progra- maci´n, creando un programa. o 3. Posteriormente, hay que comprobar que el programa produce las soluciones esperadas (ya sea utilizando datos de prueba o mediante m´todos formales) y subsanar los errores detectados. e 4. Por ultimo, es importante documentar el programa de forma que ´ si cambiaran algunas de las circunstancias iniciales, sea posible modificar y adaptar convenientemente, facilitando las labores de mantenimiento.1.5.1 Algoritmos Una de las caracter´ısticas de los seres humanos es su capacidad para ´plantearse y resolver problemas. Estos pueden ser de naturaleza muy
  • 1.5. Algoritmos y programas 23diversa, desde los problemas m´s inmediatos relacionados con la pro- apia subsistencia, hasta los problemas m´s abstractos de naturaleza ma- atem´tica o filos´fica. a o Un algoritmo es la descripci´n precisa de los pasos que nos permiten oobtener la soluci´n de un problema determinado. En general, los pa- osos son acciones u operaciones que se efect´ an sobre ciertos objetos. Al ucomienzo del algoritmo, los objetos tienen unos valores iniciales (los da-tos) que var´ como consecuencia del proceso descrito por el algoritmo, ıanobteni´ndose los valores de salida o resultados. e La inform´tica estudia el procesamiento de la informaci´n mediante a oalgoritmos, aunque el concepto de algoritmo, que proviene de las ma-tem´ticas, es muy anterior e independiente de la existencia de la in- aform´tica y los computadores. 1 a El concepto de algoritmo tiene una importancia fundamental den-tro de la inform´tica, por ser previo a la resoluci´n del problema en el a ocomputador; si no se conoce el algoritmo para resolver un problema, nopuede plantearse su resoluci´n en el computador. o Aunque existen algoritmos registrados para la realizaci´n de tareas omuy variadas, en general los algoritmos desarrollados resuelven s´lo de- oterminadas partes de un problema como, por ejemplo, la ordenaci´n de ouna lista de valores, pero no un problema real completo. En consecuen-cia, habr´ que dise˜ar un algoritmo para su resoluci´n. a n o El dise˜o de algoritmos implica un an´lisis profundo del problema, n ade sus datos iniciales, del proceso que se les aplica y de los resultadosesperados. A partir de este an´lisis debe establecerse cu´l es la mejor a aestructura de datos para resolver el problema. De hecho, Niklaus Wirth,uno de los padres de la programaci´n estructurada, titula una de sus oobras fundamentales Algoritmos + Estructuras de Datos = Programas,mostrando la importancia que concede a dichas estructuras [Wir86b]. 1 Se conoce un algoritmo para el c´lculo del m´ximo com´n divisor de dos n´meros a a u unaturales, debido a Euclides, que data del siglo IV a.C., al que se conoce como el“abuelo” de todos los algoritmos.
  • 24 Cap´ ´ ıtulo 1. Conceptos Basicos Existen t´cnicas que facilitan el dise˜o de algoritmos, tales como la e nprogramaci´n estructurada, la programaci´n modular, el refinamiento o opor pasos, el dise˜o descendente y la estructuraci´n y abstracci´n de los n o odatos. Para poder expresar algoritmos se utilizan lenguajes con la necesariaprecisi´n, llamados lenguajes algor´ o ıtmicos, que son independientes de loslenguajes de programaci´n. Los m´s utilizados son el seudoc´digo y los o a odiagramas de flujo. Dado un problema concreto y conocido el algoritmo que lo resuelve,para obtener la soluci´n del problema tenemos que partir de los datos ode entrada, y ejecutar las acciones descritas en el algoritmo. Al procesode ejecutar un algoritmo concreto para unos datos determinados se lellama c´mputo, de donde procede el t´rmino computador. El procesador o ees quien ejecuta materialmente el c´mputo. o1.5.2 Programaci´n o Como dec´ ıamos al principio, consideramos al computador como unaherramienta que nos ayuda en la resoluci´n de problemas; para ello es opreciso conocer previamente un algoritmo que lleve a su soluci´n. A ocontinuaci´n hay que expresar el algoritmo en un lenguaje de progra- omaci´n, que pueda ser comprendido y ejecutado por el computador, odesarroll´ndose un programa. A este proceso se le llama programaci´n. a o Una aportaci´n sustancial para realizar este paso tan delicado con la ocorrecci´n necesaria la constituyen: o 1. El refinamiento por pasos, que permite aumentar el grado de de- talle en la expresi´n del algoritmo seg´n convenga, para adaptarlo o u a las necesidades del lenguaje. 2. La programaci´n estructurada, que utiliza las estructuras de pro- o gramaci´n propias de los lenguajes evolucionados. o 3. La programaci´n modular que, al permitir el uso de m´dulos o o o subprogramas, facilita el empleo de otras t´cnicas de dise˜o de e n algoritmos y la depuraci´n de los programas . o
  • 1.5. Algoritmos y programas 25 4. No debe olvidarse la importancia de la estructuraci´n y abstracci´n o o de datos, presente tambi´n en los lenguajes evolucionados, que e debe emplearse con todo su potencial en el dise˜o de algoritmos y, n posteriormente, en los programas. El desarrollo de aplicaciones cada vez m´s complejas y el crecimiento adel sector de producci´n de software, ha hecho que se apliquen a la pro- ogramaci´n t´cnicas de ingenier´ que garanticen la viabilidad y calidad o e ıade los grandes proyectos de aplicaciones, lo que se conoce como inge-nier´ del software. ıa1.5.3 Lenguajes de Programaci´n o El computador dispone de un conjunto de instrucciones que son reco-nocidas y ejecutadas por el procesador. Estas instrucciones se expresan,al igual que los datos, en forma digital binaria, si bien para reconocerlasmejor y evitar errores se les asignan unos nombres mnemot´cnicos que epermiten recordar sus funciones. Estas instrucciones constituyen el len-guaje de m´quina del computador, y suelen ser diferentes en funci´n del a ofabricante del procesador. El lenguaje de m´quina es ejecutado a gran velocidad por el procesa- ador, en los computadores actuales esta velocidad se mide en millones deoperaciones por segundo; por otra parte, el lenguaje de m´quina permite ael acceso directo a todos los ´rganos del computador. Por estos motivos oel lenguaje m´quina es insustituible en aquellas aplicaciones donde sea anecesaria una gran rapidez de ejecuci´n, o el acceso directo a ciertos oo´rganos del computador. Las instrucciones del lenguaje de m´quina son en general muy poco apotentes, operan sobre datos de peque˜o tama˜o, y en muchos casos no n nincluyen ni multiplicaciones ni divisiones. Para poder operar sobre da-tos mayores o realizar operaciones m´s complejas, tales como potencias ao logaritmos, hay que fraccionar los datos y aplicar sucesivamente lasoperaciones simples, siguiendo algoritmos espec´ ıficos. Por este motivo,y por su estrecha relaci´n con el hardware, a los lenguajes de m´quina se o ales llama lenguajes de bajo nivel . En consecuencia, la tarea de escribir
  • 26 Cap´ ´ ıtulo 1. Conceptos Basicos problema t t dise˜o de algoritmos n ” t algoritmo t t programaci´n o ” t programa fuente t t traductor ” t programa objeto t t procesador ” t programa en ejecuci´n o Figura 1.1. Resoluci´n de un problema mediante la programaci´n. o oprogramas en lenguaje de m´quina es tediosa y est´ sujeta a muchos a aerrores. Ante la necesidad de escribir programas cada vez m´s complejos y afiables, los inform´ticos desarrollaron lenguajes con niveles m´s elevados a ade abstracci´n, que inclu´ operaciones y datos m´s complejos a los o ıan aque llamaron lenguajes de alto nivel. De esta forma se acorta el caminoentre el algoritmo y su expresi´n en forma de programa, porque los olenguajes de alto nivel pueden expresar mejor las acciones y objetos queintervienen en los algoritmos. Una de las grandes ventajas de estos lenguajes radica en que la tra-ducci´n del programa escrito en lenguaje de alto nivel (programa fuente) oal lenguaje de m´quina (programa objeto) que, como recordamos, es el aunico que puede ser ejecutado por el computador, es autom´tica y se´ arealiza por un programa traductor. Para ello, junto con las especificaciones del lenguaje, reglas de sinta-xis y sem´ntica, se desarrollan los necesarios programas de traducci´n. a oDurante el proceso de traducci´n se suelen detectar errores, debidos al o
  • 1.6. Ejercicios 27incumplimiento de las reglas sint´cticas del lenguaje o a causas m´s suti- a ales, que deben corregirse antes de poder ejecutar el programa. Si durantela ejecuci´n de un programa se realizan operaciones no permitidas (tales ocomo divisiones por cero, accesos fuera de l´ ımites, . . . ) se producen losllamados errores de ejecuci´n. o Aunque un programa se haya traducido eliminando todos los erroressint´cticos y de ejecuci´n, a´n puede no realizar correctamente la tarea a o upara la que fue creado, por contener errores l´gicos. Por lo tanto es onecesario comprobar el funcionamiento del programa utilizando datosde prueba que permitan realizar los c´lculos a mano y comprobar as´ a ılas partes m´s conflictivas del programa. Este proceso se conoce como adepuraci´n de los programas. o En la actualidad la mayor´ de los programas se escriben en lengua- ıajes de alto nivel, reserv´ndose los lenguajes de bajo nivel para aquellas aaplicaciones donde se necesite una elevada velocidad o un acceso directoa los ´rganos del computador; por ejemplo, en los programas traductores oo en programas de gesti´n del computador. o1.6 Ejercicios 1. Trate de describir con precisi´n mediante frases sencillas algunas tareas o cotidianas, como leer un libro o realizar un trayecto en autob´s. u 2. Dado el algoritmo de Euclides que se menciona en el apartado 1.5.1, Sean A, B, R ∈ IN. Mientras B = 0, hacer:   R ← A modulo B A←B  B←R Escribir A trate de seguirlo, utilizando l´piz y papel (por ejemplo, para A = 12 y a B = 8). Est´ formulado desde el punto de vista del procesador: cuando se a dice “leer A, B”, el procesador debe pedir dos valores para las variables A y B al usuario; la instrucci´n “mientras b = 0 hacer ...” significa o que mientras la condici´n sea cierta hay que realizar las operaciones o
  • 28 Cap´ ´ ıtulo 1. Conceptos Basicos comprendidas entre dicha instrucci´n (...) que, en nuestro caso, es una o secuencia de tres. La operaci´n “m´dulo” expresa el resto de la divisi´n o o o entera, y el s´ ımbolo “←” indica que, tras calcular el resultado de la expresi´n a su derecha, se retendr´ como el valor de la variable a su o a izquierda. 3. Clasifique los siguientes elementos del computador como pertenecientes al hardware, al software del sistema o al de aplicaciones: pantalla, teclado, unidad de entrada y salida, programa del sistema operativo, compilador, procesador de textos, etc.1.7 Comentarios bibliogr´ficos a Existe una gran cantidad de textos de introducci´n a la inform´tica que o ase pueden recomendar con car´cter general. Aun ci˜´ndonos a los escritos en a necastellano o traducidos, existen bastantes textos excelentes sobre el tema, condiversos enfoques. En [GL86] encontramos un panorama general sobre inform´tica en el que se autiliza como tema unificador el concepto de algoritmo, que sus autores juzgancomo el concepto central de la computaci´n. Se trata de un texto apropiado opara el principiante y de lectura amena. El libro de Bishop ([Bis91]) es tambi´n eun libro muy asequible de introducci´n en inform´tica. o a [PLT89] trata con gran detalle la estructura f´ ısica de los computadores, porlo que interesar´ a quienes deseen detenerse en este aspecto de la inform´tica. a a Recomendamos [FSV87] a quien desee dirigirse hacia los fundamentos te´ri-ocos de la inform´tica (la teor´ de algoritmos, la l´gica y la teor´ de aut´matas a ıa o ıa oy lenguajes formales). Por ultimo, puesto que la inform´tica es una ciencia reciente, cuenta con ´ amuchos vocablos nuevos, en su mayor´ anglicismos, que muchas veces se em- ıaplean de forma ileg´ ıtima, o que se aplican con un sentido equivocado. En [VJ85]y [MA85] puede consultarse el significado de esos t´rminos. e
  • Cap´ ıtulo 2Representaci´n digital de ola informaci´n o 2.1 Conceptos previos . . . . . . . . . . . . . . . . . . . . . . . . . 29 2.2 Representaci´n digital de los datos o . . . . . . . . . . . . . . . . 35 2.3 C´digos redundantes . . . . . . . . o . . . . . . . . . . . . . . . . 49 2.4 Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 2.5 Comentarios bibliogr´ficos . . . . . a . . . . . . . . . . . . . . . . 57 La representaci´n de la informaci´n en los computadores digitales o opersigue dos objetivos: en primer lugar, procesarla, permitiendo su ma-nipulaci´n eficiente, para lo cual se han ideado diferentes convenios, de olos que veremos los m´s importantes; y en segundo, asegurarla contra aerrores durante su almacenamiento o durante las transmisiones, lo quese consigue incorporando en la codificaci´n el empleo de la redundancia opara detectar y corregir dichos errores.2.1 Conceptos previos2.1.1 Informaci´n anal´gica y digital o o Las magnitudes continuas son las que pueden adoptar los infinitosvalores de un intervalo de n´meros reales, tales como la longitud de un usegmento, velocidad, temperatura, intensidad de un sonido, etc.
  • 30 Cap´ ´ ´ ıtulo 2. Representacion de la informacion Las magnitudes discretas tienen naturaleza discontinua, tales comola longitud (n´mero de s´ u ılabas) de una palabra, capacidad (n´mero de upasajeros) de un veh´ ıculo, etc. En la pr´ctica, es frecuente que las magnitudes continuas sean trata- adas como discretas: el peso de una persona (que se redondea en kilos); latemperatura (en grados y d´cimas de grado); la longitud de un segmento, emedida con un dispositivo de precisi´n hasta los mil´ o ımetros. En relaci´n con ambos tipos de magnitud se considera la informaci´n o oanal´gica, que es de naturaleza continua, pudiendo tomar infinitos valo- ores; y la informaci´n digital, que es de naturaleza discreta. Aunque esta oultima puede tomar infinitos valores ( IN), en un computador digital la´informaci´n es discreta y, adem´s, finita. o a En las calculadoras, la digitalizaci´n de variables anal´gicas produce o oun efecto de redondeo, que debe ser tenido en cuenta y tratado con-venientemente para evitar errores de c´lculo (v´ase la secci´n 2.3); en a e oel monitor de un ordenador, supone el ajuste de la imagen proyectadasobre una matriz de puntos.2.1.2 Unidades de informaci´n en los sistemas digitales o La raz´n de ser de un computador es el procesamiento de infor- omaci´n. Para poder hablar con propiedad de este procesamiento, debe- omos definir unidades de medida que nos permitan cuantificar de alg´n umodo la acci´n del computador sobre la informaci´n suministrada. Con- o osideramos las siguientes: • Bit (BInary digiT ) es la cantidad de informaci´n que puede alma- o cenarse en una variable binaria. No hay que confundir el bit con la variable ni con su valor: una variable binaria es la que puede tomar dos valores estables: 0 ´ 1, blanco o negro, s´ o no, etc. o ı La necesidad de codificar informaciones m´s complejas ha llevado a a agrupar varios bits, apareciendo as´ las siguientes unidades: ı • El byte u octeto es la cantidad de informaci´n que puede codificarse o en 8 bits; representa por tanto 2 8 = 256 valores.
  • 2.1. Conceptos previos 31 • La palabra se define en relaci´n con la m´quina considerada, como o a la cantidad de informaci´n que la m´quina puede manejar de una o a sola vez. Para evitar equ´ıvocos, se habla de palabras de 8 bits, 16 bits, 32 bits, etc. • 1 Kbyte = 210 bytes = 1.024 bytes. Se suele llamar kilobyte, aun- que esto puede resultar equ´ ıvoco, ya que el prefijo “kilo” significa 1.000 (y no 1.024). • 1 Mbyte = 1.048.576 bytes (220 = 1.0242 ). An´logamente, debe a advertirse que “mega” no significa un mill´n en este contexto. o2.1.3 Sistemas de numeraci´n posicionales o Aunque se conocen sistemas no posicionales, tales como el de nume-raci´n romana o el sexagesimal, que usamos para medir el tiempo y los oa´ngulos, el sistema de numeraci´n m´s difundido en la actualidad es sin o aduda el sistema decimal posicional, o sistema ar´bigo-hind´, inventado a uhacia el siglo VIII. Por otra parte, en el contexto de la inform´tica se usan frecuente- amente sistemas de numeraci´n posicional en bases tales como 2 (ya que oel bit tiene dos posiciones), 16 (como compactaci´n de palabras de 4 obits), etc. Para aprender a manejarlos, se recurre frecuentemente a la analog´ ıacon el sistema de numeraci´n m´s conocido: el de base 10. Se llama o adecimal porque cada cifra o d´ ıgito puede tomar diez posibles valores: del0 al 9; se llama posicional porque el valor real de cada d´ ıgito dependede su posici´n. o 10475 = 1 ∗ 104 + 0 ∗ 103 + 4 ∗ 102 + 7 ∗ 101 + 5 ∗ 100A la cantidad 10 se le llama base; las potencias de 10 son los pesosasociados a cada posici´n, y los factores o coeficientes de cada peso son olas cifras de la representaci´n. Tambi´n se podr´ haber representado o e ıaen forma polin´mica del siguiente modo: o 10475 = 1 ∗ 104 + 0 ∗ 103 + 47 ∗ 101 + 5 ∗ 100
  • 32 Cap´ ´ ´ ıtulo 2. Representacion de la informacionpero la primera forma es la unica donde las cifras son todas menores ´que la base. En general, esta afirmaci´n adopta la siguiente forma, cuya odemostraci´n se incluye al final de este cap´ o ıtulo.Teorema 2.1 En un sistema de numeraci´n en base b > 1, todo entero oN positivo tiene una unica representaci´n de la forma ´ o N = cp bp + cp−1 bp−1 + . . . + c1 b1 + c0 b0donde 0 ≤ ci < b para todo i = 0, 1, . . . , pConversi´n entre sistemas o En primer lugar, la expresi´n decimal de un n´mero de cifras cp . . . c0 o uen base b se obtiene sencillamente sumando los valores reales correspon-dientes a los diferentes d´ ıgitos: [cp . . . c0 ](b = cp ∗ bp + . . . + c0 ∗ b0Por ejemplo, 275(8 = 2 ∗ 82 + 7 ∗ 81 + 5 ∗ 80 = 189(10 En segundo lugar, representar el n´mero 241(10 en el sistema de base u5, equivale a expresarlo en forma polin´mica con las sucesivas potencias ode esa base, siguiendo la idea de la demostraci´n del teorema: o 241 5 ⇒ 241 = 48 * 5 + 1 1 48 5 ⇒ 48 = 9*5+3 3 9 5 ⇒ 9 = 1*5+4 4 1 ⇒ 1 = 0*5+1 Por lo tanto, 241 = 48 ∗5+1 = (9 ∗ 5 + 3) ∗5+1 = ((1 ∗ 5 + 4) ∗ 5 + 3) ∗5+1 = 1 ∗ 53 + 4 ∗ 52 + 3 ∗ 51 + 1 ∗ 50 = 1431(5
  • 2.1. Conceptos previos 33Sistemas de numeraci´n m´s usuales o a El sistema m´s empleado en electr´nica digital es el de base 2, lla- a omado binario (natural). En inform´tica tienen inter´s los sistemas cuya a ebase es una potencia de dos: 2, 4, 8, 16. La siguiente tabla recoge losprimeros n´meros naturales, expresados en algunos de esos sistemas y uen el decimal: dec. binario octal hexad. dec. binario octal hexad. 0 0 0 0 9 1001 11 9 1 1 1 1 10 1010 12 A 2 10 2 2 11 1011 13 B 3 11 3 3 12 1100 14 C 4 100 4 4 13 1101 15 D 5 101 5 5 14 1110 16 E 6 110 6 6 15 1111 17 F 7 111 7 7 16 10000 20 10 8 1000 10 8 17 10001 21 11En el sistema hexadecimal se usan los d´ ıgitos 0, . . . , 9, A, . . . F para lascantidades cero, . . . , nueve, diez, . . . , quince respectivamente. As´ por ıejemplo, C7A(16 = 12 ∗ 162 + 7 ∗ 161 + 10 ∗ 160 = 3194(10 , ya que losvalores de A y C en el sistema de base 16 son 10 y 12, respectivamente. Se observa que, en una base cualquiera b, con N cifras (o menos)es posible expresar bN cantidades distintas; inversamente, para podercomponer C combinaciones distintas se necesita disponer de un n´mero ude cifras igual a logb C, redondeado por exceso. Como consecuencia de lo anterior, cuanto mayor sea la base adoptadase pueden expresar m´s cantidades (combinaciones) para un n´mero fijo a ude cifras; inversamente, cuanto mayor sea la base, es posible usar menoscifras para expresar una misma cantidad.
  • 34 Cap´ ´ ´ ıtulo 2. Representacion de la informacionObservaci´n o La conversi´n de binario en octal o en hexadecimal se puede abreviar odel siguiente modo: 11 001 111 010 101 100(2 = 11 001 111 010 101 100 = 3 1 7 2 5 4 = 317254(8 = 1 1001 1110 1010 1100 = 1 9 14 10 12 = 19EAC(16 ¿A qu´ se debe el funcionamiento de este mecanismo? eOperaciones aritm´ticas en base dos e Para las operaciones elementales se usan las tablas correspondientesa la base de que se trate. Por ejemplo, para el caso binario la tabla desumar es la siguiente: + 0 1 0 0 1 1 1 10Y entonces, son v´lidas las reglas conocidas para las operaciones en base adiez. Por ejemplo, en el sistema binario natural, tenemos: 1001 100101 + 1011 − 11011 10100 01010 Para la resta se usa frecuentemente el m´todo del complemento: en elugar de la resta propuesta, se halla la suma correspondiente comple-mentando el sustraendo (min − sus → min + comp(sus), siendo el com-plemento (comp) el n´mero resultante de cambiar cada cero por un uno uy viceversa), suprimiendo la cifra excedente, posiblemente aparecida porel arrastre, y sumando una unidad al resultado obtenido: 100101 100101 − 11011 → + 100100 1001001 → 001010
  • ´2.2. Representacion digital de los datos 352.2 Representaci´n digital de los datos o En los sistemas digitales, no resulta viable dar una representaci´n ov´lida para codificar todos los n´meros; por otra parte, los diversos a usistemas empleados dan diferentes tratamientos a n´meros tan usuales ucomo el uno (seg´n se considere como real o como entero). Estudiaremos udiversos convenios para diferentes conjuntos de n´meros, as´ como sus u ılimitaciones. En este apartado, supondremos que disponemos de un espacio de Nbits, con lo que es posible representar 2N enteros distintos.2.2.1 Representaci´n de los n´ meros enteros o uN´ meros enteros positivos u Si se considera unicamente n´meros enteros positivos, con N bits de ´ uespacio ser´ posible representar los n´meros de 0 a 2N −1. La forma m´s ıa u anatural de lograrlo consiste en interpretar cada combinaci´n mediante ola cantidad que representa en binario. Por ejemplo, con 1 byte (es decir,N = 8) se representar´ los n´meros 0, . . . , 255 en este sistema. ıan uN´ meros enteros con signo. Convenio del signo-magnitud u Para representar los n´meros enteros (con signo), el sistema m´s u asimple es el convenio de signo-magnitud, consistente en reservar el pri-mer d´ ıgito binario para codificar el signo (suele representarse el signo+ con un cero y el − con un uno) y los siguientes N − 1 para el va-lor absoluto. As´ en este sistema tienen representaci´n las cantidades ı, o±0, . . . , ±(2N − 1). En el caso particular de 1 byte, esas cantidades son−127, . . . , −0, +0, . . . , +127. En este sistema, la aritm´tica es bastante simple: la suma de canti- edades del mismo signo y la resta de cantidades de distinto signo siguenla regla b´sica en binario. Para sumar cantidades de distinto signo, o arestar cantidades del mismo signo, resulta m´s pr´ctico el m´todo del a a ecomplemento.
  • 36 Cap´ ´ ´ ıtulo 2. Representacion de la informacion Se observa el inconveniente de que el cero tiene una doble represen-taci´n, por lo que el test de la comparaci´n para la igualdad en este o osistema debe tenerlo en cuenta. Por otra parte, la suma/resta de signosy valores absolutos necesita dos algoritmos distintos, que no resultanmuy eficientes. Los siguientes sistemas surgen precisamente para tratarde paliar estas deficiencias.N´ meros enteros con signo. Complemento restringido u Para comprender mejor el funcionamiento de este convenio en bina-rio, conviene introducirlo primero en base diez. Si consideramos palabrasde N = 2 d´ ıgitos (decimales), es posible representar 102 = 100 canti-dades distintas. En este convenio se opta por considerar los n´meros unegativos de {−49, . . . , −0}, y los positivos de {0, . . . , 49}, del siguientemodo: los n´meros positivos se representan en decimal natural, mientras uque para cada negativo −z se toma la cantidad 99 − z (complemento dez respecto de 102 − 1, que es la N=2 potencia de la base menos uno).As´ por ejemplo, tenemos: ı repr(29) = 2 9 repr(−29) = 99 − 29 = 7 0 Con este convenio, las cantidades −49, −48, . . . , −0, 0, 1, . . . , 48, 49se representan respectivamente mediante 5 0 , 5 1 , ... , 9 9 , 0 0 , 0 1 , ... , 4 8 , 4 9 Aunque se observa el inconveniente de que el cero tiene dos repre-sentaciones, la ventaja de este convenio consiste en que la suma de dosn´meros, sea cual fuere su signo, se lleva a cabo con un mismo algoritmo, uque s´lo se diferencia de la suma de enteros en que el posible arrastre se oagrega al resultado final: + 23 → 2 3 + − 15 → + 8 4 +1 1 0 7 → 0 8
  • ´2.2. Representacion digital de los datos 37Consideremos ahora esta representaci´n con palabras de N = 4 d´ o ıgitosbinarios: las cantidades representables son −7, −6, . . . , −0, +0, . . . , +6, +7 → −111(2 , −110(2 , . . . , −0(2 , +0(2 , . . . , +110(2 , +111(2que, al complementar las negativas respecto de 1111, resulta: → 1000, 1001, . . . , 1111, 0000, . . . , 0110, 0111N´ meros enteros con signo. Complemento aut´ntico u e Empezamos nuevamente con la base decimal como punto de partida,y consideremos tambi´n palabras de longitud N = 2. Ahora se opta por econsiderar los n´meros negativos de {−50, . . . , −1}, y los positivos de u{0, . . . , 49}, del siguiente modo: los n´meros positivos se representan en ubinario natural, mientras que para cada negativo −z se toma la cantidad100 − z (complemento de z respecto de 10, que es la base para N = 2). repr(29) = 2 9 repr(−29) = 100 − 29 = 7 1 Con frecuencia se emplea otra regla equivalente para complementarlos n´meros negativos, consistente en a˜adir una unidad al correspon- u ndiente complemento restringido. Con este convenio, las cantidades −50, −49, . . . , −1, 0, 1, . . . , 48, 49 se representan respectivamente mediante 5 0 , 5 1 , ... , 9 9 , 0 0 , 0 1 , ... , 4 8 , 4 9 Este sistema tiene las mismas ventajas que el anterior, y adem´s el acero se representa de un unico modo. ´
  • 38 Cap´ ´ ´ ıtulo 2. Representacion de la informacion Como en el caso anterior, consideremos ahora la base dos, con pala-bras de N = 4 d´ ıgitos, donde tienen cabida las cantidades −8, −7, . . . , −1, +0, . . . , +7 → −1000(2 , −111(2 , . . . , −1(2 , +0(2 , . . . , +110(2 , +111(2que, al complementar las negativas respecto de 10000, resulta: → 1000, 1001, . . . , 1111, 0000, . . . , 0110, 0111. En este sistema, la suma tambi´n se lleva a cabo con un mismo algo- eritmo, igual al usado para el complemento restringido, pero ignorandola posible cifra de arrastre: + 23 → 2 3 + − 15 → + 8 5 1 0 8 → 0 8Funcionamiento de las operaciones aritm´ticas e Debe subrayarse que las operaciones anteriores no coinciden con lasaritm´ticas, debido a la posibilidad de que se produzca un desborda- emiento; los diferentes sistemas responden ante esta circunstancia de di-ferentes modos: por ejemplo, ignorando la ultima cifra de arrastre, o ´interrumpiendo su trabajo para delatar una condici´n de error. Por lo otanto, es necesario prever esta posibilidad y conocer de qu´ modo re- eacciona nuestro sistema. Sobre este asunto volveremos m´s adelante, adentro de este mismo cap´ ıtulo.Formatos de los n´ meros enteros en las computadoras u Entre los convenios presentados, el m´s frecuente es el del comple- amento aut´ntico en base dos, llamado simplemente complemento a dos. eAhora bien, depender´ de la longitud de palabra la cantidad de com- abinaciones posibles y, por tanto, el rango de enteros considerado. Porotra parte, aunque ciertos sistemas trabajan con palabras de longitudvariable, lo corriente es optar por uno o varios formatos con tama˜o fijo: nsimple (1 byte), doble (2 bytes), cu´druple (4 bytes) u octuple (8 bytes). a ´
  • ´2.2. Representacion digital de los datos 392.2.2 Representaci´n de los n´ meros reales o u Debe resaltarse que, en general, s´lo resulta posible representar apro- oximaciones de los n´meros reales mediante n´meros decimales, con s´lo u u ounas pocas cifras significativas. En el siguiente apartado estudiaremoslos efectos de este redondeo. En este apartado, supondremos que disponemos de un espacio de Nbits, con lo que es posible representar 2N enteros distintos.Convenio con coma fija Si disponemos de un espacio de N bits para representar un n´mero ureal, la caracter´ ıstica principal de este convenio es la reserva impl´ ıcitade algunos bits fijos para la parte decimal, asumi´ndose la coma en una eposici´n fija. A su vez, existen los siguientes modos de representaci´n o oen coma fija: • Sistema signo y valor absoluto En este convenio se reserva un bit para codificar el signo, y del resto se destina una cantidad fija para representar el valor absoluto de la parte entera, y los dem´s para la decimal: a 1 0 1 0 0 1 0 0 1 0 1 1 1 1 0 1 . ± p. entera dec. Si consideramos por ejemplo N = 16, siendo el primer bit el que codifica el signo, los siguientes 12 los de la parte entera, y los 3 restantes los de la parte decimal, resulta que la representaci´n o anterior significar´ ıa −010010010111.101 = −(210 + 27 + 24 + 22 + 21 + 20 + 2−1 + 2−3 ) = −1175 625.
  • 40 Cap´ ´ ´ ıtulo 2. Representacion de la informacion • Complemento restringido y complemento aut´ntico e Sea D = 3 el n´mero (fijo) de decimales asumidos. La represen- u taci´n de un n´mero x, en cualquiera de estos convenios, consiste o u en codificar en su lugar la parte entera de x ∗ 23 en el convenio elegido. La cantidad despreciada al truncar los decimales de x ∗ 23 es menor que 0 125(10 (= 2−3 ). Por ejemplo, para representar −2 8 en palabras de N = 8 y D = 3,debemos conformarnos con una aproximaci´n: al ser D = 3, s´lo po- o odemos representar cantidades decimales m´ ltiplos enteros de 0 001(2 = u2−3 = 0 125(10 . Como trunc(−2 8 ∗ 8) = trunc(−22 4) = −22, repre- (10sentamos −22/8 = −2 75. Comprobamos que esta cantidad es efectiva-mente m´ltiplo de 0 125, y que el siguiente m´ltiplo (−2 875) excede la u ucantidad inicial (−2 8). • Signo y valor absoluto: 1 1 1 0 0 1 0 1 1 0 2.75 = 2 + + = 2 4 . ± p. entera dec. • Complemento restringido (8 d´ ıgitos): 11111111 −22 = − → 11101001 = 1 1 1 0 1 0 0 1 10110(2 • Complemento aut´ntico (8 d´ e ıgitos): 100000000 −22 = − → 11101010 = 1 1 1 0 1 0 1 0 10110(2Convenios con coma flotante El principal inconveniente de la coma fija consiste en condicionarel orden de magnitud de las cantidades codificadas. Un sistema m´s ageneral deber´ adaptarse a ordenes tan distantes como los de la masa de a ´
  • ´2.2. Representacion digital de los datos 41la tierra y la del atomo. El sistema m´s conocido con esta caracter´ ´ a ısticaes la llamada notaci´n exponencial (o cient´ o ıfica): 140 = +0.14 ∗ 103 = +0.14E3 6.02215 ∗ 1023 = +0.602215E24 0.00000015 = +0.15E − 6 Los convenios con coma flotante funcionan del mismo modo, divi-diendo la informaci´n sobre una cantidad en tres partes: su signo, su omantisa (es decir, las cifras significativas de mayor orden), y el exponente(que expresa el orden de magnitud). As´ por ejemplo, consideremos la ısiguiente representaci´n en palabras de N bits: o • El signo, adscrito al primer bit, donde el uno representa al signo menos. • El exponente (z), situado en los siguientes e bits, puede tomar los valores de {−2e−1 , . . . , 2e−1 − 1}. Frecuentemente se representa desplazado en +2e−1 unidades: z ∈ {−2e−1 , . . . , 2e−1 − 1} ⇒ repr(z) ∈ {0, . . . , 2e − 1} • Para la mantisa quedan M = N − e − 1 bits con lo que, para su representaci´n, se toman los primeros M d´ o ıgitos de su escritura en binario natural.Como ejemplo concreto, consideremos el convenio est´ndar IEEE 754 a(real con precisi´n simple, o real corto), que es una de las codificaciones ode reales m´s utilizadas. Su representaci´n requiere un total de 32 bits, a ode los cuales un bit se utiliza para el signo, 8 bits para el exponentey 23 bits para la mantisa. Este convenio en concreto, utiliza un trucollamado bit oculto: como el bit m´s significativo de la mantisa es un 1, aahorramos un bit simplemente asumi´ndolo. Se logra as´ espacio para e ıuna mantisa de 24 d´ ıgitos significativos. El inconveniente de emplear unbit oculto consiste en que se requiere una representaci´n especial para oel cero.
  • 42 Cap´ ´ ´ ıtulo 2. Representacion de la informacion2.2.3 Limitaciones de los sistemas de representaci´n o digital de los n´ meros u Debido a que los sistemas de codificaci´n considerados est´n inmer- o asos en sistemas finitos, s´lo pueden representar una cantidad finita de oelementos distintos. Esta limitaci´n resulta cr´ o ıtica a la hora de repre-sentar elementos pertenecientes a conjuntos infinitos, como son los delos n´meros enteros o reales. Como consecuencia, pueden producirse usituaciones de error no deseables, por lo cual se hace necesario estudiarel alcance de esas limitaciones, as´ como la manera de afrontarlas. ıLimitaciones en los enteros En los enteros, las representaciones se limitan a un intervalo reducido[m´ m´x ], de cardinal no superior a 2n , siendo n el tama˜o (en bits) ın, a nde la representaci´n. As´ cuando surge la codificaci´n de n´meros fuera o ı, o udel rango considerado, se produce el llamado desbordamiento (overflowen ingl´s). e Por ejemplo, en una representaci´n con 4 bits ser´n posibles 16 con- o afiguraciones. Si optamos por el convenio de complementaci´n aut´ntica, o eel intervalo considerado ser´ [−8, 7]. Veamos qu´ ocurre al sumar 5 y 6. a e 5 → 0101 + 6 → + 0110 1011 → −5 El comportamiento de las operaciones de suma y resta en el sistemade complementaci´n aut´ntica para una representaci´n de n bits se puede o e odescribir as´ llamemos x e y a la representaci´n de x e y, y + y − a las ı: ooperaciones de suma y resta en este sistema, ∀x, y ∈ [−2n−1 , 2n−1 − 1],tenemos:   (x ± y + 2n ) ,  si x ± y < −2n−1 x ± y = (x ± y) , si x ± y ∈ [−2n−1 , 2n−1 − 1]   (x ± y − 2n ) , si x ± y > 2n−1 − 1 Para paliar en cierta medida esta limitaci´n, es frecuente incorpo- orar tipos de datos correspondientes a rangos de enteros m´s amplios a
  • ´2.2. Representacion digital de los datos 43(por ejemplo, duplicando la longitud de palabra de la representaci´n), opudiendo as´ manipular con seguridad enteros de mayor orden. As´ ı ıpor ejemplo, el c´lculo de 8! desbordar´ un sistema de complemento a aaut´ntico con 16 d´ e ıgitos, resultando en cambio correcto para palabrasm´s largas. En ocasiones, el programador tiene la posibilidad de cam- abiar de estrategia para evitar el desbordamiento. Por ejemplo, el c´lculo a 8 8! 8∗7∗6de 3 se puede obtener evaluando 3!∗5! o 3∗2∗1 indistintamente; sin em-bargo, el primero de ellos necesita manipular n´meros mayores, por lo uque el segundo nos permite eludir en cierta medida el error por desbor-damiento. Por otra parte, muchos de los lenguajes que se comercializan en laactualidad ofrecen la opci´n de verificar o no los desbordamientos que opuedan producirse durante la ejecuci´n, para que los consiguientes erro- ores no pasen inadvertidos. Finalmente, la mayor´ de los lenguajes de alto nivel presentan sis- ıatemas de construcci´n de tipos de datos con capacidad para definir co- odificaciones (y operaciones de manipulaci´n sobre los objetos cifrados) oa la medida de nuestras necesidades.Limitaciones en los reales En este caso, incluso limit´ndonos a los reales contenidos en un pe- aque˜o intervalo acotado, ´stos ser´ infinitos, por lo cual las limitaciones n e ıanen su representaci´n no s´lo afectan al tama˜o de los n´meros consi- o o n uderados, sino tambi´n a la precisi´n. En efecto, en cualquiera de los e oconvenios estudiados se toma como mantisa s´lo cierto n´mero reducido o ude d´ ıgitos(binarios) significativos, despreci´ndose los dem´s. a a En otras palabras, cada codificaci´n de un n´mero real en coma o uflotante representa en realidad un intervalo, cuyo tama˜o var´ seg´n n ıa ula magnitud del real representante. Por consiguiente, la distribuci´n de orepresentantes no es uniforme: un intervalo tan peque˜o como [0’1, 1] ncuenta con tantos representantes como [1000, 10000]. Adem´s de las limitaciones de la precisi´n, la representaci´n de los a o oreales est´ limitada por su tama˜o: existe un valor a partir del cual no a n
  • 44 Cap´ ´ ´ ıtulo 2. Representacion de la informacionhay representantes reales y que determina el rango de desbordamiento. Debe observarse en este punto que existen cantidades cuya expresi´n odecimal es exacta, sin serlo su expresi´n escrita en binario natural (por oejemplo, 0 1(10 = 0 0 0011 0011 . . .(2 ), por lo que, en principio, debe des-confiarse de la precisi´n en la codificaci´n de todo n´mero no entero. o o u Aunque esta diferencia entre una cantidad y su representaci´n es en omuchos casos despreciable, su aparici´n puede ocasionar grandes desvia- ociones respecto del comportamiento te´rico. o Una situaci´n as´ se produce cuando se comparan dos n´meros reales o ı upara determinar su igualdad, ya que el resultado de la comparaci´n oignora si esa diferencia producida es peque˜a o grande, lo que puede nocasionar una respuesta dr´sticamente distinta de la correcta. As´ por a ıejemplo, la ejecuci´n del siguiente programa escrito en Pascal o Program errores (output); var suma: real; begin suma := 0; repeat suma := suma + 0.1; writeln(suma); until suma = 1 end.no para.1 Frecuentemente esta situaci´n puede evitarse cambiando la oexpresi´n x = y por | x − y |< ε, siendo ε la diferencia admitida. o En realidad, la aparici´n de errores intolerables es posible incluso oen expresiones sencillas. Concretamente, deber´ evitarse las opera- ıanciones de suma y resta, cuando uno de los operandos es muy peque˜o nen comparaci´n con el otro, y la divisi´n cuando el divisor es cero o o o“pr´ximo a cero”. Por ejemplo, la relaci´n |t/x| ≤ ε deber´ sustituirse o o ıapor |t| ≤ ε ∗ |x|. 1 Suponiendo una representaci´n en binario puro. o
  • ´2.2. Representacion digital de los datos 45 M´s a´n, aun cuando se trate de un error despreciable, es frecuente a uque ese error intervenga en c´lculos repetidos, como ocurre en la ma- anipulaci´n de matrices, el c´lculo con series recurrentes, etc.; en tales o asituaciones, la propagaci´n de un error inicial, aunque peque˜o, puede o ngenerar un error mucho mayor. El estudio y la cuantificaci´n de los oerrores, as´ como su propagaci´n en c´lculos repetitivos y los m´todos ı o a epara encontrar soluciones satisfactorias, escapan del alcance y objetivosde este curso, siendo materia propia de los m´todos num´ricos. e eOtros sistemas de representaci´n (paquetes matem´ticos) o a Durante la pasada d´cada, se han desarrollado y difundido paquetes ede programas matem´ticos, capaces de resolver eficientemente un ex- atenso n´mero de problemas, manipulando expresiones tanto num´ricas u ecomo simb´licas. Para ello est´n provistos (aparte de otros mecanismos) o ade potentes sistemas aritm´ticos de representaci´n no convencionales. e oVeamos dos ejemplos de estas posibilidades: • Capacidad de representar enteros con tama˜o limitado s´lo por n o la memoria del ordenador, fracciones y reales con una precisi´n o arbitraria, elegida por el usuario. Por ejemplo: sea precisi´n decimales = 25 o escribir pi 3.1415926535897932384626433 • Capacidad de establecer valores num´ricos (reales o complejos) e mediante su definici´n, en lugar de su c´lculo, con lo que no hay o a p´rdida de precisi´n. As´ es posible establecer sentencias del estilo e o ı, de las siguientes: sea x0 := x tal que x2 + 5 = 0 escribir (1 − x0 2 )/2 cuya ejecuci´n producir´ la escritura de 3, exactamente. o ıa
  • 46 Cap´ ´ ´ ıtulo 2. Representacion de la informacion2.2.4 Representaci´n de los caracteres o Existen otros convenios, adem´s de los num´ricos, para representar a elos caracteres disponibles habitualmente en un teclado de computador:los d´ ıgitos, las letras min´sculas y may´sculas, los signos de puntuaci´n u u oy de operaci´n y otros s´ o ımbolos especiales, tales como #, &, @, %, etc. Inicialmente surgieron numerosos convenios para codificar los carac-teres, variando el n´mero n de bits empleados (y con ´l su capacidad de u erepresentaci´n), as´ como la posici´n, entre 0 y 2n − 1, asignada a cada o ı ocar´cter. Sin embargo, en seguida se observ´ la necesidad de adoptar a oconvenios normalizados, as´ como la conveniencia de que ´stos tengan ı eciertas cualidades: • Debe incluirse el juego de letras m´ ınimo internacional, en dos in- tervalos de posiciones consecutivas, correspondientes a las letras min´sculas y may´sculas. u u • Los caracteres correspondientes a los d´ ıgitos deben ocupar tambi´n e posiciones correlativas, de “f´cil” cifrado y descifrado. aAdem´s, cuando la capacidad de representaci´n lo permita, ser´ deseable a o aque en un sistema sea posible: • A˜adir otros caracteres m´s espec´ n a ıficos: frecuentemente, los pro- pios de una lengua (las “´” y “˜” espa˜olas, la “ˆ” francesa, etc.) a n n u • Destinar ese exceso de capacidad a prevenir y subsanar posibles errores, como veremos en el siguiente apartado.Uno de los convenios m´s extendidos en la actualidad es el ASCII, con a7 bits, por lo que admite hasta 27 = 128 caracteres. Damos la siguientetabla, omitiendo los primeros 32 caracteres, por ser caracteres de control.
  • ´2.2. Representacion digital de los datos 47 32 44 , 56 8 68 D 80 P 92 104 h 116 t 33 ! 45 - 57 9 69 E 81 Q 93 ] 105 i 117 u 34 ” 46 . 58 : 70 F 82 R 94 ˆ 106 j 118 v 35 # 47 / 59 ; 71 G 83 S 95 107 k 119 w 36 $ 48 0 60 ¡ 72 H 84 T 96 ‘ 108 l 120 x 37 % 49 1 61 = 73 I 85 U 97 a 109 m 121 y 38 & 50 2 62 ¿ 74 J 86 V 98 b 110 n 122 z 39 ’ 51 3 63 ? 75 K 87 W 99 c 111 o 123 { 40 ( 52 4 64 @ 76 L 88 X 100 d 112 p 124 | 41 ) 53 5 65 A 77 M 89 Y 101 e 113 q 125 } 42 * 54 6 66 B 78 N 90 Z 102 f 114 r 126 ˜ 43 + 55 7 67 C 79 O 91 [ 103 g 115 s En este convenio, se observa en primer lugar que los d´ ıgitos decimales“0”, . . . , “9” ocupan las posiciones 48, . . . , 57: sus valores (0000, . . . ,1001 ) coinciden con las terminaciones de sus posiciones (0110000, . . . ,0111001 ). Siguiendo la segunda condici´n, las letras may´sculas y min´sculas o u use hallan situadas en las posiciones 65 a 90 y 97 a 122, respectivamente. En la pr´ctica no se utilizan palabras de 7 bits, siendo frecuente aen cambio adoptar el byte (= 8 bits) como unidad. As´ es posible ı,extender el convenio anterior y dar cabida a otros caracteres de usotambi´n interesante en ciertas aplicaciones; he aqu´ algunos ejemplos: e ı Posici´n: o 130 145 156 164 165 168 248 Car´cter: a ´ e æ £ n ˜ ˜ N ¿ ◦2.2.5 Organizaci´n de datos m´s complejos o a Los computadores no s´lo almacenan y manipulan n´meros y ca- o uracteres, sino que tambi´n deben organizar y tratar informaciones m´s e acomplejas, tales como sucesiones de datos (por ejemplo, cadenas de ca-racteres), vectores, tablas, etc., ya sea formadas por datos simples o bienpor conjuntos de informaci´n con alguna organizaci´n. Con tal finalidad o ose han ideado diversas estrategias; aunque su estudio excede el alcancede este cap´ıtulo, veamos un ejemplo orientativo.
  • 48 Cap´ ´ ´ ıtulo 2. Representacion de la informacion Supongamos una m´quina de 1 byte (tama˜o de palabra). Si se a nadopta para los n´meros enteros un convenio de 2 bytes, cada n´mero u uocupar´ dos palabras consecutivas. Una forma natural y sencilla de aorganizar un vector de n enteros consiste en situarlos secuencialmente,empezando en las posiciones m0 , m0 + 2, . . . , m0 + 2(n − 1), y la compo-nente i-´sima del vector reside en las posiciones m0 +2(i−1) y m0 +2i−1, epara i ∈ {1, . . . , n}. Si se tratase de una matriz de m ∗ n, cuyas componentes ocupan kpalabras de memoria, se establece f´cilmente la posici´n inicial para la a ocomponente i, j-´sima: e m0 + k(n(i − 1) + j − 1)para i ∈ {1, . . . , n}, j ∈ {1, . . . , m} y siendo m0 la posici´n inicial de la omatriz.2.2.6 Representaci´n de las instrucciones o Aunque podr´ parecer impropio considerar las instrucciones como ıainformaciones, lo cierto es que los programas se almacenan en la memoriadel ordenador y manipulan del mismo modo que los datos. De hecho,desde el punto de vista de la m´quina, un programa no es m´s que una a asecuencia de elementos, cada uno de los cuales es un descriptor de unainstrucci´n elemental. o El formato de las instrucciones (es decir, de sus descriptores) dependede la m´quina destinada a seguirlas. Si consideramos por ejemplo una am´quina de tres direcciones (v´ase cap. 3), sus instrucciones se compo- a enen de cuatro campos que codifican respectivamente la operaci´n que odebe efectuarse y las posiciones de memoria en que se encuentran los(como m´ximo dos) argumentos y la de la palabra donde debe situarse afinalmente el resultado. En el cap´ ıtulo siguiente se presenta con detalleuno de estos formatos.
  • ´2.3. Codigos redundantes 492.3 C´digos redundantes o2.3.1 Informaci´n y redundancia oInformaci´n e incertidumbre.- El t´rmino informaci´n tiene en ge- o e oneral un significado muy amplio: pi´nsese en la informaci´n proporcio- e onada por una fotograf´ o un poema. Por eso, en el contexto de la in- ıaform´tica como ciencia que trata sobre el tratamiento autom´tico de la a ainformaci´n, se asocia a ´sta un significado m´s restringido y manejable. o e a Para definir este significado, consideremos que deseamos determinarun cierto fen´meno, que puede presentar una cantidad finita de estados. oEntonces, una informaci´n (sobre ese fen´meno) es una sentencia capaz o ode aportar alg´n conocimiento sobre tal fen´meno; esto es, capaz de u odelimitar en cierta medida su estado. As´ por ejemplo, si consideramos el fen´meno “colores del atuendo ı oque llevaba anoche el asesino del callej´n”, sabiendo que el pantal´n o oera negro o marr´n, que la camisa era azul, gris o marr´n, y que el o osombrero era gris o negro, resulta que el n´mero de estados es 12. Una uinformaci´n sobre este fen´meno podr´ consistir en la sentencia “la o o ıacamisa y el pantal´n eran de distinto color”; con esta informaci´n, s´lo o o oson posibles 10 estados de nuestro fen´meno. Ahora, la afirmaci´n “la o ocamisa y el pantal´n no eran ambos marrones” resulta redundante puesto oque, consider´ndola, siguen siendo posibles los mismos 10 estados que aignor´ndola. a En lugar de hablarse de cantidad de informaci´n, resulta m´s f´cil o a amanipular la de incertidumbre. Una medida indirecta de ello consisteen la cantidad de estados posibles: su grado de indeterminaci´n. Si ocierto fen´meno ofrece 12 estados posibles, su grado de indeterminaci´n o oes 12, pero resulta m´s conveniente considerar como medida de la in- acertidumbre el logaritmo (en base dos) de esta cantidad, puesto que laincertidumbre crece de forma exponencial (con base dos) respecto de lalongitud (n´mero de bits) del mensaje. Esta medida de la incertidumbre use llama entrop´ asociada a un fen´meno, y se denota mediante H: ıa o H = log2 (n´mero de estados posibles de un fen´meno) u o
  • 50 Cap´ ´ ´ ıtulo 2. Representacion de la informacion Entonces, la informaci´n asociada a una sentencia se define como odisminuci´n de incertidumbre proporcionada. Siendo H0 = log2 (n0 ) oy H1 = log2 (n1 ) las entrop´ correspondientes a los estados previo y ıasposterior a la sentencia, con n0 y n1 posibles estados, respectivamente,tenemos: n0 I = H0 − H1 = log2 (n0 ) − log2 (n1 ) = log2 . n1 Por ejemplo, para la primera sentencia, tenemos: I1 = log2 1 2 > 0mientras que la segunda proporciona una cantidad de informaci´n nula, oal ser redundante.La redundancia en la codificaci´n.- En los convenios de codifica- oci´n/decodificaci´n estudiados hasta ahora, se ha supuesto que su trans- o omisi´n o su almacenamiento se efect´ a siempre sin ruido. En ellos, el o uobjetivo principal consiste en dise˜ar convenios eficaces (sin emplear m´s n ad´ ıgitos que los estrictamente necesarios, minimizando as´ la redundan- ıcia), un´ ıvocos (donde el cifrado es unico) y sin ambig¨edad, siendo unica ´ u ´toda decodificaci´n. o Para prever la posibilidad de que se produzcan perturbaciones, sehan ideado m´todos capaces de descubrir en ciertas condiciones cu´ndo e ase ha alterado un mensaje (c´digos detectores), as´ como otros capaces o ıde restituir su estado inicial (c´digos correctores). o Ambas clases de mecanismos se apoyan en el uso de la redundan-cia. Anticipamos un par de ejemplos para aclarar ambos tipos de me-canismos.Adici´n de un bit de paridad.- Para un mensaje de n bits se a˜ade o nuno, cuyo valor consigue que haya en total un n´mero par de unos. Se uignora la posibilidad de que se altere m´s de un bit, por considerarla aextremadamente improbable. En la interpretaci´n del mensaje se verifica opreviamente la paridad, detect´ndose un error si se ha producido, aunque ano ser´ posible identificar cu´l para restablecer su estado. a a
  • ´2.3. Codigos redundantes 51C´digo dos entre tres.- Este mecanismo consiste sencillamente en otriplicar las copias de cierta informaci´n. Se consideran dos posibilida- odes: que no se produzca ninguna alteraci´n, o que se produzca en una de olas copias, descart´ndose mayores perturbaciones. En ambos casos, se ainterpreta el mensaje cifrado en la mayor´ de las copias: dos (al menos) ıaentre tres.2.3.2 C´digos s´lo autodetectores: p de n o o Si en una palabra de n bits (que admite 2n configuraciones) estable-cemos la restricci´n de considerar v´lidas s´lo aqu´llas con exactamente o a o ep unos (y n−p ceros), ser´ posible detectar si se efect´ a una perturbaci´n a u osimple, o una m´ltiple, siempre que no se alteren tantos unos como ce- uros. En un c´digo p de n, el grado de indeterminaci´n es el n´mero de o o upermutaciones con repetici´n de p unos y n − p ceros o n n! = p p!(n − p)!que alcanza su m´ximo cuando p = n div 2. a2.3.3 C´digos autocorrectores: Hamming oFundamento Consideremos un mensaje de n bits. La idea b´sica consiste en a˜ adir a nun cierto n´mero p de bits, cada uno de los cuales asegura un cierto usubconjunto de los n + p d´ıgitos totales mediante un control de paridad.Se considera la posibilidad de que exista, a lo sumo, una alteraci´n en ouno de los n + p bits y deseamos conocer si ha habido o no perturbaci´n oy, en caso afirmativo, cu´l de los n + p bits ha sido alterado. Puesto que ael mensaje debe codificarse en los n bits, la informaci´n sobre el estado ode perturbaci´n debe cifrarse en los p bits, para poder as´ restablecerla. o ıPor tanto, conocido n, p debe ser la m´ ınima cantidad de bits tal que los2p estados posibles de los p bits de paridad acepten al menos n + p + 1estados distintos: no alteraci´n (1) o la posici´n del bit alterado (n + p). o oEs decir: p = m´ k ∈ IN tal que 2k ≥ n + k + 1 ın
  • 52 Cap´ ´ ´ ıtulo 2. Representacion de la informacion Por otra parte, los p conjuntos de bits deben elegirse de modo queel estado de los p bits de paridad asociados a esos conjuntos permitalocalizar el bit alterado, en su caso y, si es posible, con facilidad. Un modo de conseguir el objetivo descrito consiste en intercalar elbit i-´simo en la posici´n 2i−1 , para i = 1, . . . , p, siendo su conjunto e oasociado el de los d´ıgitos cuyo n´mero de posici´n, escrito en binario u onatural, tiene un 1 como cifra i-´sima. e Sea por ejemplo n = 4. Necesitamos p = 3 bits de paridad, quecolocaremos en las posiciones 1, 2 y 4: posici´n : o 1 2 3 4 5 6 7 id. en binario : 001 010 011 100 101 110 111 Ahora, el bit 001(2 est´ asociado al conjunto de los bits del mensaje acuya posici´n acabe en 1 (1, 3, 5 y 7); el bit 010(2 est´ asociado al o aconjunto de los bits del mensaje cuya posici´n tenga un 1 en la segunda ocifra (2, 3, 6 y 7), y el bit 100(2 est´ asociado al conjunto de los bits del amensaje cuya cifra inicial sea un 1 (4, 5, 6 y 7).Codificaci´n o Sencillamente, se trata de ajustar los bits de paridad con respecto asus conjuntos asociados. Por ejemplo, si se desea transmitir el mensaje0110 0 1 1 0bastar´ con ajustar el bit 10 con los 30 , 50 y 70 (resultando un 1); el bit a20 con los 30 , 60 y 70 (resultando un 1), y el bit 40 con los 50 , 60 y 70(resultando un 0): 1 1 0 0 1 1 0
  • Anexo 53Decodificaci´n con autocorrecci´n o o Para rectificar y descifrar un mensaje recibido, se detectan en pri-mer lugar los bits de paridad que reflejan alguna alteraci´n. Si no hay oninguno, el mensaje se ha mantenido intacto durante la transmisi´n; en ocaso contrario, la suma de las posiciones de los bits alterados se˜ala el nbit modificado. Por ejemplo, si el mensaje anterior se recibe as´ ı: 1 1 0 0 0 1 0el control de paridad arroja el siguiente resultado: bit 10 (+3 + 5 + 7) = 1 (impar) ⇒ alterado bit 20 (+3 + 6 + 7) = 2 (par) ⇒ sin alterar bit 40 (+5 + 6 + 7) = 1 (impar) ⇒ alterado Al ser 1 + 4 = 5, concluimos que el 50 bit es err´neo, por lo que el omensaje original era 1 1 0 0 1 1 0Anexo: demostraci´n del teorema 2.1 o Incluimos aqu´ esta demostraci´n por ser constructiva, mostrando ı oel proceso de expresar una cantidad en cualquier base mayor que uno.Procederemos en cuatro fases: en primer lugar, la existencia de esarepresentaci´n en las condiciones del teorema se demuestra f´cilmente o apor inducci´n, dando un m´todo para hallar esa construcci´n. En se- o e ogundo, se demuestra (tambi´n por inducci´n) que ese m´todo converge e o ey a continuaci´n que la soluci´n que proporciona equivale efectivamente o oa la cantidad dada. Finalmente, se demuestra que no hay m´s que una arepresentaci´n de un n´mero en una base (≥ 2) dada. o u
  • 54 Cap´ ´ ´ ıtulo 2. Representacion de la informacion 1. Dada la cantidad entera y positiva N , y la base b > 1, la represen- taci´n de N en base b sigue el siguiente esquema: o  N  si N < b  reprb (N ) =  reprb (D).R  en otro caso, donde  D = N div b y R = N mod b donde el punto expresa la separaci´n entre las cifras de N , expre- o sado en la base b, y donde div y mod representan, respectivamente, el cociente y el resto de la divisi´n entera. o 2. La convergencia del m´todo resulta obvia considerando que, par- e tiendo de cualquier n´mero entero positivo N , la secuencia N = u N0 , N1 , ... conduce al conjunto {0, ..., b} mediante la aplicaci´n de o Ni = Ni−1 div b, en un n´mero finito, trunc(logb N ), de pasos. u 3. La equivalencia queda demostrada por inducci´n sobre el n´mero o u de cifras de la representaci´n obtenida: cuando N < b, tenemos el o caso base reprb (N ) = N ; en caso contrario, basta considerar que la cantidad representada por reprb (D).R es b ∗ reprb (D) + R= b ∗ reprb (N div b) + (N mod b) Asumiendo ahora como hip´tesis inductiva que reprb (N div b) re- o presenta la cantidad N div b, podemos expresar la cantidad ante- rior como = b ∗ (N div b) + (N mod b) que es precisamente N : recu´rdese que e dividendo = divisor ∗ cociente + resto 4. En las condiciones del teorema, esa representaci´n es unica. Lo de- o ´ mostraremos por reducci´n al absurdo. Supongamos que es posible o expresar una cantidad x de dos modos distintos, cuyas represen- taciones tienen las cifras ...a0 y ...a0 , siendo L la posici´n de las o cifras distintas de mayor peso, y consideremos por ejemplo que es aL > aL . Entonces, se tiene:
  • 2.4. Ejercicios 55 (a) La diferencia entre aL y aL representa al menos bL unidades: aL ∗ bL > aL ∗ bL ⇒ aL ∗ bL ≥ (aL + 1) ∗ bL = aL ∗ bL + bL (b) Por otra parte, la cantidad m´xima que pueden representar a los d´ ıgitos siguientes es de L−1 (b − 1) ∗ bi = bL − 1. i=0 Resulta entonces que la diferencia que supone la cifra distinta de mayor orden (≥ bL ) no puede compensarse por ninguna combi- naci´n de las siguientes (≤ bL − 1). Por tanto, si dos representa- o ciones son distintas en alguna cifra, tambi´n lo son las cantidades e representadas.2.4 Ejercicios 1. Exprese los siguientes n´meros en las dem´s bases: u a binario puro decimal hexadecimal 1001110011 6723 1A9E 2. Efect´e las siguientes operaciones, en la base indicada: u • 11011101(2 + 11110000(2 • 11000101(2 ∗ 101001(2 • A2396(16 + 24BC2(16 • A2396(16 ∗ 1A(16 Para el ultimo apartado es recomendable construir previamente la tabla ´ de multiplicar por A, en base hexadecimal. 3. Halle el rango de los posibles enteros, • si consideramos palabras de tama˜o medio n • si consideramos palabras de tama˜o simple n
  • 56 Cap´ ´ ´ ıtulo 2. Representacion de la informacion • si consideramos palabras de tama˜o doble n 4. Represente 7 y −3 en los siguientes formatos, y realizar la suma corres- pondiente: • complemento restringido, en decimal • ´ ıdem, en binario • complemento aut´ntico, en decimal e • ´ ıdem, en binario Haga lo mismo con 12 y 7. 5. Represente los n´meros 35, 0’25 y 2’6 en los siguientes formatos: u • en coma fija, con 5 bits enteros y 3 decimales • coma flotante: signo (1 bit), mantisa (9) y exponente (6) 6. Generalice la representaci´n en memoria de vectores y matrices a matri- o ces tridimensionales. 7. Se desea dise˜ar un c´digo capaz de cifrar una informaci´n con 33 posibles n o o estados. • ¿Cu´ntos bits son necesarios? a • Con ese n´mero de d´ u ıgitos, ¿cu´ntos estados son posibles? a • Un control del tipo 2 de n, ¿cu´ntos d´ a ıgitos necesita? 8. Se desea transmitir mensajes de 31 bits, asegur´ndolos mediante un a c´digo de Hamming. o • ¿Cu´ntos d´ a ıgitos de paridad se necesitan? • ¿En qu´ posiciones? e • ¿Cu´les son los d´ a ıgitos asociados a cada uno de los de paridad? 9. Para el c´digo de Hamming para mensajes de 4 bits introducido en el o apartado 2.3.3, se desea transmitir la informaci´n 1001. o • Cifre el mensaje que debe enviarse • Si consideramos las cinco posibilidades: que el mensaje llegue inal- terado a su destino, o que uno de sus cuatro d´ ıgitos haya cambiado su valor, descifre cada uno de esos mensajes.
  • ´2.5. Comentarios bibliograficos 57 10. Para cifrar un c´digo de Hamming para mensajes de 11 bits, construimos o un vector de 15 bits. • D´ f´rmulas apropiadas para hallar la paridad de los bits insertados. e o ´ • Idem para la autocorrecci´n que se efect´a en el descifrado. o u2.5 Comentarios bibliogr´ficos a El material incluido en este cap´ ıtulo sobre la representaci´n de los n´meros o ureales en coma flotante s´lo es una aproximaci´n conceptual. En [Gol91] se o oencontrar´n muchos de los detalles t´cnicos omitidos aqu´ tales como el tra- a e ı,tamiento dado en la pr´ctica a los errores (absolutos y relativos) debidos al aredondeo, el manejo de las excepciones producidas por el desbordamiento y suconcreci´n en los sistemas normalizados por la IEEE. o Aunque el sistema de numeraci´n sexagesimal no puede considerarse posi- ocional (tal como lo usamos para medir el tiempo o los angulos) por expresarse ´el peso asociado a las “cifras” de una cantidad expl´ ıcitamente, y no mediantesu posici´n, este sistema es probablemente el precursor de los sistemas posicio- onales. Para completar la referencia hist´rica, debe decirse que, en la antigua oBabilonia, tambi´n se conoc´ un sistema de coma flotante, que seguramente e ıaes el primero de esta clase [Knu72]. En [For70, Rum83, KM86] puede encontrarse una gran diversidad de ejem-plos sobre la aparici´n de discrepancias intolerables entre los resultados te´ricos o oy los hallados en diversas m´quinas. a Los convenios presentados en este cap´ ıtulo constituyen tan s´lo una pe- oque˜a parte de los ideados para mantener o proteger la informaci´n. Se han n oescogido algunos de los c´digos m´s ilustrativos y los m´s difundidos, aun- o a aque faltan otros, tales como el llamado binario reflejado y los de Gray. Unaintroducci´n a los mismos puede consultarse en [Mei73]. o Un aspecto de gran inter´s relacionado con la protecci´n de la informaci´n e o oes la criptolog´ que estudia mecanismos para ocultarla, cifr´ndola en claves ıa, asecretas (criptograf´ as´ como para descifrarla (criptoan´lisis). En [Dew88, ıa), ı aDew89] puede encontrarse una sencilla introducci´n a estos temas. o
  • Cap´ ıtulo 3Estructura f´ ısica de uncomputador 3.1 Componentes de un computador . . . . . . . . . . . . . . . . . 60 3.2 Lenguajes de m´quina . . . . . . a . . . . . . . . . . . . . . . . . 77 3.3 Un ejemplo de recapitulaci´n . . o . . . . . . . . . . . . . . . . . 80 3.4 Observaciones complementarias . . . . . . . . . . . . . . . . . . 88 3.5 Otras arquitecturas . . . . . . . . . . . . . . . . . . . . . . . . . 95 3.6 Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98 3.7 Comentarios bibliogr´ficos . . . . a . . . . . . . . . . . . . . . . . 99 El principal objetivo de este tema es introducir algunos conceptosb´sicos acerca de la estructura f´ a ısica (hardware) de un computador; pero¿es de verdad util preocuparse por la estructura interna de un compu- ´tador? Entre las dos posiciones extremas (el simple usuario y el inform´tico aprofesional) se encuentra una gran cantidad de profesionales que requie-ren conocer los computadores con un cierto detalle. Al menos, siempre esnecesario conocer las caracter´ısticas del computador y los requerimientos(f´ ısicos) de los programas que deben usarse. En las siguientes secciones estudiamos el hardware de una computa-dora, formado por la UCP, la memoria y los perif´ricos (tambi´n llama- e edos dispositivos de entrada y salida, E/S).
  • 60 Cap´ ıtulo 3. Estructura f´ ısica de un computador El significado del t´rmino hardware no es f´cil de expresar en espa˜ol e a ncon una sola palabra; literalmente se debe entender como “conjunto deutiles duros”; en el contexto que nos ocupa, el hardware de un computa-´dor es el conjunto de dispositivos f´ ısicos que lo componen, mientras queotra palabra inglesa, software, designa los programas que puede ejecutarel computador. En cierto modo, el hardware es comparable al cerebro o, m´s ge- aneralmente, al cuerpo f´ ısico del computador mientras que el softwareser´ lo equivalente a las ideas que pueblan el cerebro. Es conveniente ıase˜alar, a pesar de su evidencia, que el hardware y el software son per- nfectamente in´tiles aisladamente: de nada nos sirve un computador si uno tenemos ning´n programa que ejecutar, y de nada nos sirve tener umuchos programas si no disponemos de un computador que los ejecute. Nuestra visi´n del sistema formado por el hardware y el software es ofuncional, y en la ultima parte del cap´ ´ ıtulo ser´ patente esta relaci´n a ode dependencia mutua: explicaremos el funcionamiento del hardwaresiguiendo la ejecuci´n de algunos programas sencillos, escritos en su opropio lenguaje.3.1 Componentes de un computador Para introducir los conceptos b´sicos que estudiaremos dentro de aesta secci´n consideramos un computador como una unidad de pro- oducci´n. Una unidad de producci´n adquiere materia prima, la elabora o oy, finalmente, vende la materia elaborada. Esto mismo es lo que hace uncomputador: toma algunos datos, los procesa y, finalmente, devuelve elresultado obtenido al procesar la informaci´n. o M´s concretamente, consideremos una panader´ ideal. En esta pa- a ıanader´ se compra harina, levadura, . . . (entrada de datos) que posterior- ıamente se elaboran (procesamiento) para producir pan que, finalmente,se vende (salida de datos). Para comprar y vender se necesitan perso-nas que se relacionen con el exterior; en un computador esta labor serealiza mediante los perif´ricos. Dentro de la panader´ podemos encon- e ıatrar dos zonas bien diferenciadas e indispensables: la primera es la zona
  • 3.1. Componentes de un computador 61 U.C.P. U.C. U.A.L. M.P. BUS Contr. Contr. Contr. Contr. Contr. Pantalla Teclado Disco Serie Paralelo # ˜ ˜ " !Teclado Puerto Puerto U. Disco Serie Paralelo Monitor Figura 3.1. Estructura b´sica de un computador. ade amasado junto con el horno, y la segunda es el almac´n. e En el computador el almac´n lo representa la memoria y la zona ede trabajo es la unidad central de proceso o UCP que, a su vez, constade la unidad de control o UC (el encargado que controla los procesosde amasado y horneado) y la unidad aritm´tica y l´gica o UAL (zona e ode amasado y horno). Naturalmente, entre las distintas zonas debenexistir pasillos de comunicaci´n para poder sincronizar las acciones de ocada uno; en un computador esta informaci´n se env´ y recibe a trav´s o ıa ede los buses. En las siguientes secciones estudiaremos cada una de las partes quecomponen la estructura f´ısica de un computador. La figura 3.1 presentaun esquema de la misma.
  • 62 Cap´ ıtulo 3. Estructura f´ ısica de un computador3.1.1 Memoria principal Mencion´bamos en el p´rrafo anterior que la memoria representa el a aalmac´n donde se guarda la informaci´n, en esta secci´n estudiaremos e o oalgunos detalles del almacenamiento de informaci´n en la memoria y de olos tipos de memoria existentes. En la memoria principal se guarda el conjunto de instrucciones (pro-grama) que est´ siendo ejecutado, junto con los datos de entrada y de asalida de la ejecuci´n. Estudiaremos la memoria de un computador desde oun punto de vista f´ ısico (distintos medios de almacenamiento) y desdeun punto de vista l´gico (de tratamiento de la informaci´n). o o Podemos encontrar similitudes entre la organizaci´n f´ o ısica de la me-moria y el almac´n de la panader´ ideal que introduc´ e ıa ıamos al principiodel cap´ıtulo: en el almac´n encontramos estanter´ repletas de bandejas e ıasiguales, y cuando un trabajador entra en el almac´n, bien trae o bien eretira algunas de estas bandejas. La unidad m´ ınima a la que se accedeno es una barra de pan (bit) sino una bandeja completa (palabra). Lalongitud de palabra de memoria viene representada por la capacidad decada bandeja. No podemos acceder a cada bit de la memoria aisladamente; lam´ınima cantidad de memoria a la que podemos acceder est´ formada apor una palabra de memoria. F´ ısicamente, la memoria est´ dividida aen celdas (con una capacidad de informaci´n de un bit), agrupadas en opalabras de memoria.Funcionamiento de la memoria Para acceder a cada palabra de memoria debemos poder referirnos aellas. Esto se hace asignando una direcci´n num´rica binaria a cada pa- o elabra a modo de “direcci´n postal”. La direcci´n de memoria determina o ouna palabra de memoria, que es la que contiene la informaci´n. o Supongamos que tenemos un computador que tiene palabras de me-moria de 1 byte (8 bits) y dispone de 1 Mb (220 bytes) de memoria prin-cipal. Cada direcci´n de memoria tiene asignado un n´mero en binario o u
  • 3.1. Componentes de un computador 63entre 0 y 220 − 1. Para poder denotar todas las palabras de memoriadisponibles necesitaremos al menos 20 d´ ıgitos ya que, en general, cond bits es posible direccionar 2d palabras de memoria. T´ngase en cuenta eque, en principio, la longitud de palabra de memoria no tiene relaci´n ocon la longitud de las direcciones de memoria; en el apartado sobre op-timizaci´n de memorias tendremos la oportunidad de profundizar algo om´s sobre ello. a En la memoria se realizan operaciones elementales de lectura y escri-tura, que escriben o leen la informaci´n contenida en una sola palabra ode memoria. Tanto la UCP como la memoria se sirven de unas cuantaspalabras de acceso muy r´pido, llamadas registros. Para las operacio- anes de lectura y escritura, los dispositivos de memoria disponen de dosregistros: el de direcci´n (RD) y el de intercambio de memoria (RIM). o El RD indica la direcci´n de memoria que se quiere leer o en la que se oquiere escribir; puesto que debe tener capacidad para albergar cualquierdirecci´n de memoria, es un registro de d bits siguiendo la notaci´n o oanterior. Por su parte, el RIM alberga la palabra le´ o que se va a ıdaescribir en la direcci´n dada por el RD y, por lo tanto, tiene tantos bits ocomo la longitud de palabra de memoria. La memoria est´ conectada acon la UCP y con los perif´ricos a trav´s de los buses de direcciones, de e edatos y de control que describiremos m´s adelante. a El proceso de lectura o escritura se puede dividir en los siguientespasos: 1. A trav´s del bus de direcciones llega un n´mero de direcci´n de e u o memoria que se almacena en el RD. 2. Simult´neamente, por el bus de control, llega una se˜al que indica a n si la operaci´n que debe realizarse es de lectura o de escritura. o 3. Si la operaci´n es de escritura, por el bus de datos llega la palabra o ´ que se quiere escribir. Esta se almacena en el RIM y se escribe donde indique RD. Si la operaci´n es de lectura se lee la infor- o maci´n que se encuentra en la direcci´n almacenada en el RD y se o o escribe en el RIM.
  • 64 Cap´ ıtulo 3. Estructura f´ ısica de un computador 4. La memoria genera, por el bus de control, una se˜al de control que n indica el fin de la operaci´n. oClasificaci´n de las memorias o La memoria se encarga de intercambiar informaci´n con el procesador oseg´n las necesidades de ´ste. Con la tecnolog´ actual los procesado- u e ıares alcanzan velocidades de varios millones de c´mputos por segundo, olo que obliga a la memoria a tener una velocidad semejante a fin deno menguar la eficiencia del computador. Por otra parte, la capacidadde memoria es otra caracter´ ıstica interesante, ya que, en principio,1 nopodr´ıamos ejecutar programas que no pudieran ser cargados completa-mente en memoria. Las caracter´ ısticas de velocidad y capacidad est´n are˜idas entre s´ por lo que es necesario alcanzar un compromiso entre n ı,ambas dependiendo de la finalidad. Seg´n el nivel de compromiso alcan- uzado podemos destacar varios niveles jer´rquicos de memoria: de m´s a ar´pida y cara (por lo que suelen tener menor capacidad) a menos r´pida a ay mayor capacidad: 1. Memoria principal 2. Memoria secundaria 3. Memoria auxiliarLos dos ultimos tipos de memoria ser´n desarrollados en la secci´n de ´ a operif´ricos, pues pueden ser considerados como perif´ricos de almacena- e emiento. Hemos dicho anteriormente que las memorias son dispositivos de lec-tura y escritura, y esto es cierto cuando hablamos de la memoria prin-cipal de un computador. Sin embargo, existe otro tipo de memoriasde s´lo lectura que hace las veces de manual de comportamiento de la om´quina que la contiene. a 1 En realidad, cada programa tendr´ unos requerimientos m´ a ınimos de memoria, aun-que ello no significa que tenga que caber completo en la memoria.
  • 3.1. Componentes de un computador 65 Las memorias de s´lo lectura reciben el nombre gen´rico de memorias o eROM (acr´nimo del ingl´s Read Only Memory). Los computadores vie- o enen dotados con una memoria de este tipo donde se almacena la rutinade arranque. Otras aplicaciones de este tipo de memoria las encontra-mos en las lavadoras autom´ticas (los programas de lavado se almacenan aen una ROM) y en los juguetes electr´nicos. En este tipo de memoria ola informaci´n es almacenada de forma permanente. o Algunas variantes de la memoria ROM son la PROM (ROM pro-gramable), EPROM (PROM borrable, erasable PROM) y la EEPROM(PROM el´ctricamente borrable). Estos tipos de memoria son utiles en e ´la fase de desarrollo de un sistema, en la cual a´n no se ha fijado el ucontenido final de la ROM. Las memorias de lectura y escritura suelen llamarse memorias RAM(del ingl´s Random Access Memory). Dentro de este tipo de memo- erias podemos distinguir las RAM est´ticas y las RAM din´micas. Las a aest´ticas se caracterizan por tener un tiempo de acceso a 2 igual a cada di-recci´n de memoria (cada direcci´n tiene su propio camino de acceso o odentro del microchip, generalmente construido con semiconductores).Por otra parte, son memorias vol´tiles en el sentido de que necesitan ala alimentaci´n el´ctrica para conservar la informaci´n. o e o En las RAM din´micas la informaci´n necesita ser recordada peri´- a o odicamente, ya que se va descargando con el tiempo. Esta p´rdida de einformaci´n es debida a que est´n construidas usando peque˜os conden- o a nsadores. La raz´n de ser de este tipo de memorias es la econom´ pues o ıa,generalmente son m´s baratas que las est´ticas. a aOptimizaci´n de memorias o Sabiendo la necesidad de contar con memorias cada vez m´s r´pidas a ay con m´s capacidad se han ideado m´todos de optimizaci´n para la me- a e omoria principal. Dependiendo del aspecto por optimizar encontramos las 2 El tiempo requerido para leer o escribir una palabra de memoria. En una memoriaest´tica puede ser de unos 20 ns, mientras que en una din´mica puede alcanzar los 80 a ans.
  • 66 Cap´ ıtulo 3. Estructura f´ ısica de un computadormemorias cach´ y la memoria virtual que, respectivamente, aumentan ela rapidez y la capacidad de la memoria principal. Las memorias cach´ son memorias hasta mil veces m´s r´pidas que e a alas usuales pero, debido a su alto coste, suelen tener una capacidadmuy peque˜a. La idea que define las memorias cach´ no puede ser m´s n e asimple: se trata de guardar en registros los contenidos de las posicionesde memoria de uso m´s frecuente, de modo que sea mucho m´s r´pido a a aacceder a la informaci´n que hay en ellas. o El funcionamiento de la memoria cach´ ejerce una acci´n de filtro e osobre las direcciones de memoria que solicita la UCP. La secuencia deacciones que se producen en las operaciones de lectura y escritura conmemoria cach´ son las siguientes: e 1. La UCP genera una direcci´n de memoria que se env´ a las me- o ıa morias principal y cach´. e 2. Si la direcci´n se encuentra en la cach´, ser´ ´sta la que devuelva o e ae el dato e inhiba la salida de la memoria principal. De lo contrario, ser´ la memoria principal la que d´ el dato. a e 3. Finalmente, se actualizan las direcciones y los datos contenidos en la cach´. eExisten distintas estrategias para seleccionar las direcciones que se guar-dan en la memoria cach´ de modo que se mantengan en ella las direc- eciones m´s usadas (obs´rvese que el conjunto de direcciones de memoria a em´s utilizadas variar´ con la fase del programa que se est´ ejecutando). a a eUna buena estrategia de selecci´n puede conllevar una tasa de aciertos o(la direcci´n requerida est´ en la cach´) muy elevada, de donde la velo- o a ecidad aparente de la memoria se asemejar´ mucho a la velocidad de la amemoria cach´. e La memoria virtual se desarrolla con el prop´sito de poder hacer uso ode m´s memoria de la que f´ a ısicamente se dispone. Si un programa es de-masiado grande para la memoria disponible se sol´ dividir en m´dulos ıa oque cupieran en memoria mediante la t´cnica del solapamiento (over- elay). Esta t´cnica tiene el serio inconveniente de que los programas no e
  • 3.1. Componentes de un computador 67son transportables, puesto que, en general, no funcionar´ en un com- ıanputador con menos memoria. Para solventar estos problemas se desarroll´ la memoria virtual como oun m´todo autom´tico para realizar el solapamiento. La idea consiste en e ausar la memoria secundaria, generalmente un disco duro, como memo-ria principal. Un programador que dispone de memoria virtual tiene laimpresi´n de estar trabajando con un mapa de direcciones de memoria o(direcciones l´gicas) mucho mayor del que f´ o ısicamente dispone (direccio-nes f´ ısicas). Existen otras t´cnicas para mejorar la utilizaci´n de la memoria como e oson la paginaci´n y la segmentaci´n. Estas t´cnicas utilizan programas o o ede gesti´n de memoria que forman parte del sistema operativo; en el ocap´ ıtulo 4 se presentar´n m´s detalles sobre ellas. a a3.1.2 Unidad central de proceso La UCP representa el cerebro de la computadora y all´ es donde se ıprocesa la informaci´n recibida, por lo que casi siempre nos referiremos oa ella como el procesador. La UCP est´ formada por la unidad de control a(UC), que clasifica y organiza las instrucciones recibidas (encargado), yla unidad aritm´tica y l´gica (UAL), que las ejecuta (donde se “amasa e oy cuece” la informaci´n). o F´ısicamente el procesador es un microchip y consta de unos circuitoselectr´nicos que permiten realizar operaciones elementales con la infor- omaci´n. El procesador se conecta con el resto de los componentes de oun computador mediante unas patillas met´licas, cada una de las cuales atransporta informaci´n binaria, a trav´s de los buses de comunicaci´n o e oque estudiaremos m´s adelante. a El cometido de la UC consiste en recibir la instrucci´n que se va a oejecutar, determinar su tipo (c´lculo aritm´tico, l´gico, . . . ), determi- a e onar si esa instrucci´n necesita argumentos almacenados en la memoria, oleer (en su caso) las direcciones de memoria que contienen los argumen-tos de la instrucci´n y dar la orden correspondiente a la UAL. Por su oparte, la labor de la UAL es la de ejecutar las instrucciones aritm´ticas e
  • 68 Cap´ ıtulo 3. Estructura f´ ısica de un computadory l´gicas, una vez que la UC ha determinado su tipo y ha le´ sus ar- o ıdogumentos (si los hubiera). Las instrucciones que llegan a la UAL sonmuy sencillas, y se reducen a un c´lculo aritm´tico elemental (seg´ n a e uel tipo de procesador, “elemental” significar´ bien suma-resta o bien asuma-resta-multiplicaci´n-divisi´n), un c´lculo l´gico (and, or, . . . ), o o o a ouna instrucci´n de salto o bifurcaci´n. o oUnidad de control La UC se encarga de clasificar las instrucciones que recibe, controlarsu ejecuci´n y leer las zonas de la memoria que almacenan los argumentos ode estas instrucciones. La UC est´ dotada de unos cuantos registros ainternos de memoria que usa para almacenar datos elementales durantela ejecuci´n de una instrucci´n elemental. Esta memoria dispone de o oun cierto n´mero de registros con un cometido particular, entre los que udestacan el registro de instrucci´n y el contador de programa. o El registro de instrucci´n almacena aqu´lla que est´ siendo ejecutada o e ay, por su parte, el contador de programa almacena la direcci´n de la osiguiente instrucci´n que debe ser ejecutada. Existen, adem´s, otros o aregistros que almacenan los resultados parciales de la ejecuci´n de una oinstrucci´n. o El funcionamiento de la UC est´ regido por los impulsos de un reloj aque sincroniza la realizaci´n de las distintas operaciones y determina la ovelocidad del procesador. Su frecuencia se mide en MHz (megaherzios,millones de ciclos por segundo). El trabajo desempe˜ado por la unidad de control al ejecutar una ninstrucci´n puede descomponerse en peque˜os pasos como los descritos o na continuaci´n: o 1. Leer el contador de programa. 2. Almacenar en el registro de instrucci´n el contenido de la direcci´n o o de memoria que aparece en el contador de programa. 3. Averiguar si la instrucci´n necesita argumentos y, en su caso, de- o terminar sus direcciones de memoria.
  • 3.1. Componentes de un computador 69 4. Leer los argumentos y almacenarlos en los registros internos. 5. Ordenar a la UAL que ejecute el c´mputo necesario. o 6. Almacenar el resultado de la ejecuci´n. o 7. Actualizar el contador de programa con la siguiente instrucci´n o por ejecutar. La UC dispone de un dispositivo denominado secuenciador que efec-t´a esta descomposici´n en pasos elementales. u oUnidad aritm´tica y l´gica e o La unidad aritm´tica y l´gica es el horno donde se cuece la infor- e omaci´n; su tarea consiste en recibir instrucciones junto con sus argu- omentos y ejecutarlas, dando a cambio el resultado de su operaci´n. o Esta unidad consta de un(os) operador(es) que ejecuta(n) f´ısicamentelas instrucciones recibidas, una serie de registros para almacenar infor-maci´n mientras se ejecuta una instrucci´n (entre estos registros destaca o oel registro acumulador , al que se har´ referencia de nuevo cuando estu- adiemos el direccionamiento de las instrucciones) y algunos se˜alizadores nde estado que indican resultados interesantes obtenidos al realizar unc´mputo (resultado cero, overflow o desbordamiento, . . . ) o Los operadores son dispositivos f´ ısicos (circuitos electr´nicos) que opueden realizar operaciones elementales sobre datos binarios. Las ope-raciones que son capaces de hacer estos dispositivos pueden ser de des-plazamiento, l´gicas o aritm´ticas. o e Las operaciones de desplazamiento consisten en desplazar los bits deuna palabra varios lugares hacia la izquierda o hacia la derecha. Depen-diendo de la acci´n del desplazamiento sobre los extremos de la palabra opodemos distinguir varios tipos de desplazamiento: 1. Desplz. l´gico: si el extremo de la palabra que queda vac´ tras el o ıo desplazamiento se completa con ceros.
  • 70 Cap´ ıtulo 3. Estructura f´ ısica de un computador 2. Desplz. aritm´tico: es similar al anterior, pero se mantiene el bit e de signo. Se utiliza para representar multiplicaciones y divisiones de una potencia de 2. 3. Desplz. circular: los bits que quedan fuera tras el desplazamiento se emplean en llenar los huecos libres del otro extremo de la palabra. 4. Desplz. concatenado: se desplaza conjuntamente el contenido de dos o m´s registros. a Las operaciones l´gicas tales como NOT, AND y OR se realizan bit oa bit. La primera de estas operaciones s´lo depende de un argumento, omientras que las restantes necesitan dos argumentos. Las operaciones aritm´ticas m´s importantes que se realizan en la e aUAL son las de suma, resta, multiplicaci´n y divisi´n, la de cambio de o osigno y la de extensi´n de signo. Esta ultima operaci´n se hace necesa- o ´ oria cuando se transmite informaci´n a un elemento con mayor longitud ode palabra pues es necesario completar los bits restantes sin alterar lainformaci´n. En general las operaciones de multiplicar y dividir se hacen ousando sumas y restas mediante un algoritmo apropiado; s´lo computa- odores muy potentes (y caros) disponen de operadores particulares quelas realicen directamente. Se puede mejorar la capacidad de c´lculo num´rico de algunos proce- a esadores a˜adiendo un coprocesador matem´tico. Los dispositivos de este n atipo complementan la UAL del procesador por otra m´s potente; con ma- ayores y m´s numerosos registros operativos, con una representaci´n inter- a ona de los datos de mayor precisi´n y con instrucciones num´ricas m´s o e acomplejas (funciones exponenciales, logar´ıtmicas y trigonom´tricas). e Para ello, comparten el flujo de instrucciones y datos del procesadory cuando detectan alguna instrucci´n num´rica toman el control del o eprograma, ejecutan la instrucci´n, calculan el resultado y devuelven el ocontrol al procesador.3.1.3 Perif´ricos e Damos en esta secci´n una visi´n general de los perif´ricos. Pode- o o emos considerar perif´ricos de entrada, de salida y de almacenamiento; e
  • 3.1. Componentes de un computador 71asimismo podemos distinguir entre perif´ricos locales y perif´ricos remo- e etos, seg´n su conexi´n al computador. Un perif´rico local, como el rat´n, u o e ose encuentra cerca de la UCP conectado mediante cables que hacen lasveces de prolongador de los buses del computador. Para un perif´rico eremoto, como una impresora l´ser del centro de c´lculo, la conexi´n se a a orealiza a trav´s de una red de comunicaciones. e A continuaci´n se enumeran algunos de los perif´ricos m´s impor- o e atantes:De entrada de datos 1. Teclado. Es similar al teclado de una m´quina de escribir y cuenta a adem´s con algunas teclas de control. a 2. Rat´n. Es un dispositivo que al ser desplazado sobre una superficie o permite mover el cursor por la pantalla. Existen ratones de sistema mec´nico y de sistema ´ptico. a o 3. Sensores. Este tipo de perif´ricos incluye a las pantallas t´ctiles, e a capaces de seleccionar distintas opciones reconociendo el tacto so- bre distintas zonas de la pantalla. Tambi´n podemos encontrar e otro tipo de sensores como (a) L´piz optico. Cuando se posa en la pantalla reconoce la po- a ´ sici´n que ocupa mediante una medici´n de la luminosidad o o que recibe. (b) Tableta gr´fica. Similar a una pizarra provista de un l´piz. a a Los trazos sobre la tableta aparecen en la pantalla del com- putador. 4. Esc´ner. Permite digitalizar im´genes planas (fotograf´ o texto) a a ıas y archivarlas.De salida de datos 1. Pantalla o monitor. Es el principal instrumento de comunicaci´n o entre el computador y el usuario. Su constituci´n f´ o ısica es similar
  • 72 Cap´ ıtulo 3. Estructura f´ ısica de un computador a la del tubo de imagen de un televisor. Es usual llamar consola al conjunto formado por un teclado y un monitor. 2. Plotter. Permite realizar gr´ficos de alta precisi´n como mapas o a o dise˜os t´cnicos. n e 3. Impresora. Su misi´n es proporcionar copias impresas en papel de o la informaci´n guardada en el computador. Hay diversos tipos de o impresora, entre los que destacan las impresoras de margarita (ya en desuso), de matriz de puntos, de chorro de tinta y las impresoras l´ser. aDe entrada y salida de datos 1. M´dem. Es un dispositivo que permite la comunicaci´n de un com- o o putador con otro a trav´s de la l´ e ınea telef´nica (red conmutada) o o a trav´s de l´ e ıneas destinadas exclusivamente a este fin (l´ ıneas punto a punto). Para ello convierte los datos binarios en se˜ales n moduladas de baja frecuencia. Existen diversos protocolos que de- terminan la forma de iniciar, efectuar y finalizar la transmisi´n, o as´ como su velocidad y correcci´n de errores. Su nombre procede ı o de su doble funci´n: MOdulador, DEModulador. Su velocidad se o mide en baudios, que equivalen aproximadamente a bits por se- gundo, al incluir las necesarias se˜ales de control. n 2. Red. Las redes permiten la interconexi´n de varios computadores o entre s´ la utilizaci´n conjunta de distintos dispositivos externos ı, o tales como un disco duro, una impresora, etc., y el uso compartido de programas y ficheros de datos. Cada computador conectado a la red contempla los distintos dispositivos disponibles como si fueran propios. Por lo general uno de los computadores se dedica en exclusiva a la gesti´n de la red, denomin´ndose servidor de red. Las o a redes pueden ser locales, cuando se ubican en la misma habitaci´n o o edificio, o remotas. En general, tanto el sistema operativo como los programas de aplicaci´n son espec´ o ıficos para el funcionamiento en red.
  • 3.1. Componentes de un computador 73Perif´ricos de almacenamiento e Aunque se trata en realidad de perif´ricos de entrada y salida, suelen eestudiarse aparte. Los perif´ricos de almacenamiento son tambi´n co- e enocidos como memorias secundarias y memorias auxiliares. La mayor´ ıade estos dispositivos almacenan la informaci´n de forma magn´tica. El o eprimero de todos los dispositivos de almacenamiento magn´tico fue la eunidad (lectora y grabadora) de cinta magn´tica, y posteriormente se edesarrollaron las unidades de discos fijos (tambi´n llamados discos du- eros) y las unidades de discos flexibles. En una cinta magn´tica el acceso a la informaci´n es secuencial (te- e onemos que hacer correr la cinta hasta que aparezca la informaci´n que obuscamos); esto hace que sea un medio muy lento. Generalmente lascintas magn´ticas, debido a su gran capacidad, se utilizan para hacer eperi´dicamente copias de seguridad (backup) de la informaci´n alma- o ocenada en los discos duros del computador. Recientemente se han des-arrollado los streamers, que son dispositivos cuya unica finalidad es hacer ´copias de seguridad de grandes vol´menes de informaci´n, generalmente u ocontenida en un disco duro. Los discos magn´ticos reciben este nombre por su forma y porque esu superficie es magn´tica (ciertamente no es un nombre muy original, eaunque s´ autoexplicativo) y son dispositivos de acceso directo, esto es, ıno tenemos que recorrer toda la informaci´n que hay delante de la que onecesitamos. Los discos magn´ticos necesitan organizarse l´gicamente para po- e oder albergar informaci´n de un modo ordenado; dar formato a un disco omagn´tico es dotarlo de la organizaci´n l´gica necesaria para cada mo- e o odelo de computador (no es lo mismo el formato del DOS, que usan loscompatibles con IBM, que el formato usado por los computadores Ma-cintosh). La informaci´n se almacena siguiendo c´ o ırculos conc´ntricos llamados epistas que a su vez se dividen en sectores que contienen un cierto n´mero ude palabras (celdas). Para indicar una direcci´n se especifica la pista y oel sector donde comienza la informaci´n, por lo cual una transferencia o
  • 74 Cap´ ıtulo 3. Estructura f´ ısica de un computadorde datos a un disco siempre empieza en la primera palabra de un sector.Las operaciones necesarias para dar formato a un disco magn´tico son ebastante complejas y, por lo tanto, se suele dejar al sistema operativola gesti´n de todas las peque˜as tareas que hay que llevar a cabo, en el o ncap´ıtulo 4 veremos que el sistema operativo es el software encargado defacilitar este tipo de tareas a los usuarios del computador. Entre los distintos tipos de disco destacan los discos duros (harddisk ), que disponen de una gran capacidad de almacenamiento (de 20a 800 Mb). Suelen ser fijos (no se pueden extraer del computador) ysuelen contener el sistema operativo y los programas de uso m´s com´n. a u Los discos flexibles, diskettes o disquettes (en ingl´s, floppies), son eextra´ ıbles y por eso pueden ser usados para transferir informaci´n de oun computador a otro (que pueda leer discos flexibles). Estos discostienen una capacidad mucho menor que un disco duro (entre 360 Kb y2’88 Mb) y el tiempo de acceso a la informaci´n almacenada es bastante ogrande. Actualmente coexisten discos flexibles de dos tama˜os distintos, nde 5 1 y de 3 1 (pulgadas), de similares prestaciones. Los computadores 4 2compatibles con IBM pueden utilizar discos flexibles de 5 1 y de 3 1 , 4 2mientras que los computadores de la familia Macintosh usan exclusiva-mente los de 3 1 . Este hecho har´ que, probablemente, los discos de 5 1 2 a 4acaben desapareciendo del mercado. ´ Ultimamente se han desarrollado las unidades de discos duros ex-tra´ ıbles, que tienen las ventajas de los discos duros en cuanto a capacidady a velocidad de acceso y adem´s son intercambiables. a3.1.4 Buses de comunicaci´n o Los componentes principales de un computador son la UCP, la memo-ria y los perif´ricos. Estas componentes intercambian informaci´n cons- e otantemente y, obviamente, la comunicaci´n debe establecerse a trav´s o ede un medio f´ ısico que conecte la UCP con los dispositivos E/S y conel exterior. La comunicaci´n entre los distintos componentes se realiza oa trav´s de l´ e ıneas que transportan informaci´n binaria. Este transporte opuede llevarse a cabo de dos modos:
  • 3.1. Componentes de un computador 75 • En la comunicaci´n en serie, la informaci´n se transmite un bit tras o o otro. El rat´n es un ejemplo t´ o ıpico de perif´rico con comunicaci´n e o en serie. • En la comunicaci´n en paralelo, se transmite la informaci´n a o o trav´s de varias l´ e ıneas simult´neamente, de modo comparable a a una autov´ de varios carriles (l´ ıa ıneas) por las que los veh´ ıculos (informaci´n binaria) fluyen simult´neamente. o a En la comunicaci´n en paralelo con los perif´ricos hay ocho o nueve o e l´ ıneas, y se transmite de byte en byte. Un perif´rico t´ e ıpicamente comunicado en paralelo es la impresora. Las l´ ıneas de comunicaci´n se agrupan seg´n el tipo de informaci´n o u oque transporten, y cada uno de estos conjuntos de l´ ıneas recibe el nombrede bus. Un bus transmite la informaci´n en paralelo. o Atendiendo al tipo de informaci´n que transmiten, los buses de co- omunicaci´n pueden ser de tres clases: o • Bus de direcciones, a trav´s del cual la UC determina la direcci´n e o de memoria o dispositivo de E/S con el que se intercambia infor- maci´n. o • Bus de datos, por el que viajan los datos para ser almacenados en la memoria o para ser usada en alg´n c´mputo. u o • Bus de control, que, como su nombre indica, transporta infor- maci´n de control para la sincronizaci´n de todo el trabajo. o o En general los buses de datos tienen un n´mero de l´ u ıneas igual a lalongitud de la palabra de m´quina, aunque a veces s´lo tienen la mitad, a olo que incide negativamente en la velocidad del computador pero sueleabaratar el precio. Si el n´mero de celdas de memoria accesibles es 2d , ulos buses de direcciones suelen tener d l´ıneas. Por ultimo, los buses de ´control tienen un n´mero de l´ u ıneas variable dependiendo de las distintasmarcas y modelos de procesador. Por el bus de datos la UC recibe (el c´digo binario de) una ins- otrucci´n, la interpreta y prepara su ejecuci´n. Dependiendo del tipo de o o
  • 76 Cap´ ıtulo 3. Estructura f´ ısica de un computadorinstrucci´n, la UC puede generar algunos c´digos de control que ser´n o o aenviados a trav´s del bus de control; en su caso, averiguar´ a trav´s del e a ebus de direcciones en qu´ posici´n (de la memoria principal) encuentran e olos argumentos de la instrucci´n, esta informaci´n viajar´ hasta la UC o o apor el bus de datos y, finalmente, el resultado del c´mputo ser´ trans- o aportado de nuevo a trav´s del bus de datos hacia la memoria o hacia un eperif´rico. e Existen dispositivos electr´nicos para el control de los buses que, en ociertos casos, liberan a la UCP de este trabajo: son los controladores. • Los controladores del sistema permiten el traslado del contenido de bloques de memoria, a gran velocidad, a trav´s del bus, con e independencia de la UCP. Se permite as´ el acceso directo a la ı memoria de los perif´ricos que puedan precisarlo (pantalla y discos e duros). • Los controladores de dispositivo act´an como intermediarios en- u tre los perif´ricos y los buses permitiendo la comunicaci´n entre e o la UCP y sus perif´ricos, dado que estos ultimos no se conectan e ´ directamente a los buses. Pueden ser especializados, como los que controlan la pantalla o las unidades de disco, o de prop´sito gene- o ral, bien en serie o en paralelo. La comunicaci´n entre la UCP y los controladores de dispositivo ose puede hacer de dos formas distintas: utilizando la propia memoriaprincipal o trav´s de una memoria independiente para E/S. En el primer ecaso cada controlador de dispositivo tiene asignada una direcci´n de omemoria. Cuando la UCP quiere leer o escribir en el dispositivo, lohace en la direcci´n que dicho dispositivo tiene asignada, utilizando las omismas instrucciones de escritura o lectura de memoria. En el segundocaso, el lenguaje m´quina debe disponer de instrucciones especializadas apara el acceso a este ´rea de E/S. a Los controladores de prop´sito general cumplen un determinado pro- otocolo est´ndar de comunicaciones y disponen de los necesarios conecto- ares en el exterior del computador. Cualquier perif´rico que se atenga a edicho protocolo puede ser conectado a ellos, facilitando su utilizaci´n. o
  • ´3.2. Lenguajes de maquina 77 Entre los protocolos m´s extendidos cabe citar el RS -232 para los apuertos en serie y el Centronics para los puertos paralelos.3.2 Instrucciones en lenguaje de m´quina a La informaci´n se representa dentro de un computador mediante oceros y unos. Cada procesador es capaz de distinguir si recibe una ins-trucci´n o un dato de una forma que depende de su marca y su modelo. o El juego de instrucciones de un procesador recibe el nombre de len-guaje de m´quina o c´digo m´quina. Una UCP s´lo puede entender a o a oinstrucciones expresadas en su lenguaje de m´quina, y cada instrucci´n a oespecifica una acci´n particular sobre algunos operandos. Una instruc- oci´n es una lista de ceros y unos: una parte de la lista es el c´digo de la o ooperaci´n que ha de realizarse, el resto determina d´nde se encuentran o olos argumentos de la instrucci´n (si los hubiera). Todo lo relacionado ocon la especificaci´n de d´nde est´n los argumentos de la instrucci´n o o a orecibe el nombre de direccionamiento. A las instrucciones de m´quinaase les asignan nombres nemot´cnicos, m´s f´ciles de recordar que listas e a ade ceros y unos. Estas instrucciones son muy elementales, por lo tanto es necesariorealizar un gran esfuerzo de traducci´n entre el lenguaje natural y el oc´digo m´quina. En el cap´ o a ıtulo 5 estudiaremos la jerarqu´ de niveles ıaque permiten a un programador de aplicaciones escribir sus programasen lenguajes a medio camino entre el lenguaje natural y la codificaci´n oen binario. Hay dos tendencias b´sicas en el dise˜o de juegos de instrucciones: a npocas instrucciones (algunas decenas) simples pero de ejecuci´n muy or´pida o muchas instrucciones (unas 200) complejas, de ejecuci´n algo a om´s lenta. La primera se conoce como RISC (del ingl´s, Reduced Instruc- a etion Set Computer : computador con juego de instrucciones reducido) yla segunda como CISC (Complex Instruction Set Computer : computa-dor con juego de instrucciones complejo).
  • 78 Cap´ ıtulo 3. Estructura f´ ısica de un computador3.2.1 Formato de las instrucciones La elecci´n del formato de las instrucciones de un procesador depende oen buena parte de las especificaciones fijadas por el equipo de dise˜o del nprocesador y de otras consideraciones que veremos a continuaci´n.o Entre las operaciones que se ejecutan en un procesador, algunas notienen operandos, otras tienen uno, dos o a lo sumo tres. En muchosde los casos los operandos vienen expresados por sus direcciones de me-moria, por lo que se suele hablar de instrucciones de una, dos o tresdirecciones. Pueden existir instrucciones sin operando, bien porque el operandono aparezca expl´ıcitamente, siendo uno de los registros del procesador,o porque la propia instrucci´n no lo necesite, como cuando se repite un oproceso o se regresa de una llamada a un subprograma. En el otro extremo se sit´an las operaciones binarias, que precisan utres direcciones para llevarse a cabo: las de sus dos argumentos y la ded´nde ha de colocarse el resultado obtenido. o Lo ideal en un juego de instrucciones es que todas tengan el mismoformato. Adoptar, por ejemplo, un juego de instrucciones de tres di-recciones es sencillo: basta con ignorar los argumentos a˜adidos para nigualar el formato. Tambi´n es posible elegir un juego de instrucciones con menos de tres eoperandos. Las operaciones de tres argumentos se traducen entoncescomo sigue (considerando una operaci´n aritm´tica cualquiera): o e Si el juego de instrucciones es de dos direcciones, ´stas representan ea ambos argumentos, y el resultado de la ejecuci´n se almacena en la oprimera o segunda direcci´n suministrada. o En las instrucciones de una direcci´n s´lo se especifica la de uno de o olos argumentos. En el caso de que se trate de una instrucci´n binaria, se ohace necesario usar el registro acumulador que se encuentra en la UAL.Entonces, se toma como primer argumento el contenido del acumulador,como segundo argumento el contenido de la direcci´n de memoria dado opor la instrucci´n, y el resultado de la instrucci´n se almacena en el o oregistro acumulador (ver secci´n 3.3.2). o
  • ´3.2. Lenguajes de maquina 793.2.2 Tipos de Instrucciones Las instrucciones del juego de un procesador pueden ser divididasseg´n su cometido en los siguientes grupos: u 1. De movimiento de datos. Este tipo de instrucciones transfieren datos entre la memoria principal y los registros. Combinando las distintas procedencias con los distintos destinos posibles obtenemos bastantes tipos de instrucciones de movimiento de datos. Puede tratarse de datos aislados, de bloques de datos o de cadenas de caracteres. 2. Operaciones binarias. Estas instrucciones, aritm´ticas y l´gicas, e o realizan una operaci´n con dos argumentos como, por ejemplo, las o operaciones aritm´ticas elementales y algunas operaciones l´gicas e o binarias tales como AND, OR y XOR. 3. Operaciones monarias. Entre estas instrucciones podemos encon- trar las que desplazan o rotan los bits de una palabra. Algunas operaciones binarias ocurren tan a menudo con un mismo argu- mento que, a veces, son incluidas como instrucciones de una sola direcci´n. Por ejemplo, tenemos la instrucci´n de borrar el conte- o o nido de una palabra de memoria, que es un caso particular de “mo- ver una palabra formada por ceros a la direcci´n suministrada”. o 4. Instrucciones de salto. Sirven para alterar el orden de ejecuci´n de o las instrucciones. Dentro de este grupo encontramos las instruc- ciones de salto condicional y las de salto incondicional: La ejecuci´n de una instrucci´n de salto incondicional obliga al o o computador a “saltarse” el orden secuencial para ejecutar la ins- trucci´n contenida en la direcci´n determinada por el argumento o o de la instrucci´n de salto, y el orden de ejecuci´n sigue a partir de o o la instrucci´n sobre la que se salt´. o o Una instrucci´n de salto condicional necesita de instrucciones de o comparaci´n ya que es necesario realizar una o varias comparacio- o nes para comprobar la condici´n. o
  • 80 Cap´ ıtulo 3. Estructura f´ ısica de un computador . . . . . . . . . . ... . . 100 ... X $ 200 ... $$$ 101 102 CALL 200 $$ 201 ... 103 ... y ˆˆ ˆ ˆ 202 ... ... ˆˆ RET 104 203 ... . . . . . . . . . . . . Figura 3.2. Funcionamiento de una llamada a subprograma. 5. Llamada a un subprograma. Un subprograma no es m´s que una grupo de instrucciones que realiza operaciones utiles y necesarias ´ en distintos puntos de un programa. Si, al ejecutar un programa, se encuentra una instrucci´n de llamada a subprograma, se ejecutan o todas las instrucciones del subprograma y posteriormente se pasa a la siguiente instrucci´n del programa (ver la figura 3.2). o 6. Entrada y salida de datos. Es el tipo de instrucci´n que m´s cambia o a de un procesador a otro. Sirven para gestionar el intercambio de informaci´n entre el computador y el exterior. o3.3 Un ejemplo de recapitulaci´n o En este apartado vamos a desarrollar un ejemplo explicativo de unconjunto de instrucciones de m´quina de una direcci´n con acumulador. a o Consideraremos un tama˜o de palabra de datos de 16 bits, las ins- ntrucciones se codifican con 4 bits, lo que permite un total de 16 instruc-ciones diferentes. Los restantes 12 bits se utilizar´n para codificar las adirecciones, lo que permite direccionar 2 12 = 4096 posiciones de memo-ria. El bus de datos ser´ de 16 bits y el de direcciones de 12 bits. a Para simplificar supondremos que el tama˜o de palabra de memoria nes de 16 bits, es decir que en cada direcci´n de memoria se almacenan 16 o
  • ´3.3. Un ejemplo de recapitulacion 81bits, y que en cada operaci´n de lectura o escritura de memoria se trabaja ocon 16 bits. (En muchos sistemas el tama˜o de palabra de memoria es nde 8 bits. Por ello, la formaci´n de un dato de 16 bits requiere la lectura ode dos posiciones consecutivas de memoria empezando, por ejemplo, porla posici´n par.) o3.3.1 UCP con acumulador Como hemos visto (apartado 3.1.1), los registros son memorias degran velocidad utilizadas por la UCP y la memoria principal para re-alizar sus operaciones. Su tama˜o depende del contenido que vayan a nalmacenar. En nuestro caso, el registro de direcci´n de memoria tendr´ o ıa12 bits y el de intercambio de memoria 16 bits. El contador de programa tiene que almacenar una direcci´n de me- omoria, luego tendr´ 12 bits, mientras que el registro de instrucci´n, que a otiene que almacenar la instrucci´n completa, tendr´ 16 bits. Adem´s o a aexistir´ un registro acumulador, que desempe˜a en este caso un papel a nfundamental en la ejecuci´n de instrucciones. o Dado que muchas instrucciones operan sobre dos operandos y pro-ducen un resultado, como primer operando se toma el contenido actualdel registro acumulador y como segundo operando se toma el contenidode la direcci´n que aparece en la instrucci´n y el resultado se almacena o onuevamente en el acumulador. Por lo tanto, en las instrucciones de dosoperandos el registro acumulador hace el doble papel de operando y dedestinatario del resultado. Supongamos que queremos sumar el contenido de la posici´n de me- omoria 100 con el contenido de la 150 y almacenar el resultado en la 200.En primer lugar cargamos el contenido de la posici´n 100 en el acumula- odor, a continuaci´n llamamos a la operaci´n suma con la direcci´n 150; o o ocomo veremos, esta instrucci´n suma al acumulador el contenido de la odirecci´n 150. Por ultimo, el contenido del acumulador se almacena en o ´la posici´n 200 de la memoria. o El proceso ser´ el siguiente: ıa
  • 82 Cap´ ıtulo 3. Estructura f´ ısica de un computador CARGAR 100 SUMAR 150 ALMACENAR 200 Si utiliz´semos instrucciones de tres direcciones, simplemente se es- acribir´ ıa: SUMAR 100 150 200El lenguaje m´quina se simplifica al tener una unica direcci´n, pero las a ´ ooperaciones se complican al tener que cargar y almacenar los operandosdel acumulador. En las operaciones de cambio de signo o de complementaci´n, sola- omente tenemos un operando. La operaci´n se realiza sobre el contenido odel acumulador, donde se almacena tambi´n el resultado. La direcci´n e opasada como argumento no se tiene en cuenta. En las operaciones de E/S, el contenido de una posici´n de memoria ose recibe o env´ a un dispositivo externo. En este caso, no se utiliza el ıaregistro acumulador.3.3.2 Un juego de instrucciones de m´quina de una a direcci´n o En la tabla 3.1 se relacionan las instrucciones de un lenguaje dem´quina de una direcci´n simplificado. La notaci´n M [d] representa a o oel contenido de la direcci´n d de la memoria. La instrucci´n CARgar d o odeposita el contenido de la posici´n de memoria d en el acumulador. o La instrucci´n ALMacenar d realiza el proceso contrario: guarda el ocontenido del acumulador en la direcci´n de memoria d. o Las instrucciones IN d y OUT d se utilizan para E/S. La primera lee undato de una posici´n de memoria destinada a un dispositivo externo y lo oalmacena en la direcci´n de memoria d; la segunda toma el contenido de ola posici´n de memoria d y lo env´ a la direcci´n de memoria destinada o ıa oal dispositivo externo.3 3 Por ser este un modelo muy simplificado, no se tiene en cuenta la comunicaci´n odirecta con el dispositivo.
  • ´3.3. Un ejemplo de recapitulacion 83 Instrucci´n o Efecto C´digo de m´quina o a CAR d Ac ← M [d] 0000 ALM d M [d] ← Ac 0001 IN d read(M [d]) 0010 OUT d write(M [d]) 0011 SUM d Ac ← Ac + M [d] 0100 RES d Ac ← Ac – M [d] 0101 OP – Ac ← –Ac 0110 MUL d Ac ← Ac * M [d] 0111 DIV d Ac ← Ac div M [d] 1000 NOT – Ac ← not Ac 1001 AND d Ac ← Ac and M [d] 1010 OR d Ac ← Ac or M [d] 1011 COND d If Ac > 0 then goto d 1100 GOTO d goto d 1101 END Fin de programa 1110 Tabla 3.1. Ejemplo de juego de instrucciones de una direcci´n o
  • 84 Cap´ ıtulo 3. Estructura f´ ısica de un computador Las instrucciones SUMar d y REStar d, toman el contenido de la di-recci´n de memoria d y lo suman y restan respectivamente con el conte- onido del acumulador, almacenando el resultado en dicho registro. El mismo proceso pero aplicando la multiplicaci´n o la divisi´n es o orealizado por MULtiplicar d y DIVidir d. Las instrucciones OPuesto – y NOT – producen el cambio de signo(complemento a dos) o la complementaci´n del contenido del acumula- odor. La direcci´n a la que se aplican no se utiliza. o Las instrucciones l´gicas AND d y OR d toman el contenido de la odirecci´n de memoria d y del acumulador, efect´an la operaci´n and u o u oor entre ambos operandos y almacenan el resultado en el acumulador. La instrucci´n GOTO d da un salto incondicional y act´a con indepen- o udencia del valor del acumulador. La instrucci´n CONDici´n d, toma el valor del acumulador, comprueba o osi es mayor que cero, y en caso afirmativo carga en el registro contador deprograma la direcci´n d. En consecuencia, la siguiente instrucci´n que o oejecutar´ el procesador ser´ la contenida en la direcci´n d, produci´ndose a a o euna ruptura de la secuencia de ejecuci´n. Si no se cumple la condici´n o oprosigue la ejecuci´n secuencial. o Por ultimo, la instrucci´n END se˜ala el final del programa. ´ o n3.3.3 Ejecuci´n de una instrucci´n. Detalle o o La ejecuci´n de cada instrucci´n de m´quina conlleva una serie de o o apasos elementales y transferencias de datos de unos ´rganos a otros de ola UCP. Estos pasos elementales se denominan microinstrucciones y son eje-cutados por el secuenciador a partir del c´digo de la instrucci´n de o om´quina. a La ejecuci´n de una instrucci´n comienza cuando se actualiza el re- o ogistro contador de programa. La UC env´ esta direcci´n a los circuitos ıa ode selecci´n de memoria a trav´s del bus de direcciones y la se˜al de o e n
  • ´3.3. Un ejemplo de recapitulacion 85lectura a trav´s del bus de control. La direcci´n queda almacenada en e oel registro de direcci´n de memoria y al recibir la se˜al de lectura, se o nlee la instrucci´n. La instrucci´n se env´ a trav´s del bus de datos y se o o ıa erecibe en el registro de instrucci´n de la UC. De esta forma, la UC tiene odisponible la instrucci´n para ser decodificada y ejecutada. o Supongamos que la instrucci´n para ejecutar sea: o SUM 1000(10equivalente en binario a: 0100 001111101000La UC separa el c´digo de operaci´n (0100) de la direcci´n del operando o o o(001111101000) y, a partir del c´digo, genera las se˜ales de control para o nenviar la direcci´n, a trav´s del bus de direcciones, al registro de di- o erecci´n de la MP, efectuar la operaci´n de lectura y, finalmente, enviar o oel contenido de la direcci´n 1000 a un registro operativo de la UAL, a otrav´s del bus de datos. e A continuaci´n se env´ la se˜al de control correspondiente a la suma o ıa na la UAL, quien suma al contenido del acumulador el valor del registrooperativo, quedando el resultado almacenado en el acumulador.3.3.4 Traducci´n y ejecuci´n de un programa sencillo o o Vamos a desarrollar un fragmento de programa para elevar un n´mero un a una cierta potencia a ∈ IN. El programa devolver´ el valor 1 si a es acero y na si es a > 0. Tenemos que reservar un espacio de almacenamiento para los datos,resultados y constantes. Llamaremos n a la base, a al exponente y r alresultado. Usaremos una posici´n adicional de memoria para almacenar ola constante 1 que usaremos para decrementar la potencia. La descripci´n del proceso ser´ la siguiente: o ıa
  • 86 Cap´ ıtulo 3. Estructura f´ ısica de un computador Datos Direcci´n o Contenido n d1 n a d2 a r d3 r 1 d4 1 d5 multiplicar r por n decrementar a si a > 0 ir a la direcci´n d5 o ir a la direcci´n d7 o (entrada) d6 asignar a r el valor 1 si a > 0 ir a la direcci´n d5 o d7 continuar programaLa entrada del proceso es la direcci´n d6. o Para traducirlo a lenguaje m´quina tenemos que fijar una direcci´n a oinicial, por ejemplo la 100, y convertir cada instrucci´n en sus equiva- olentes, utilizando el acumulador: Direcci´n o Contenido 100: n 101: a 102: r 103: 1 104: CAR 102 105: MUL 100 106: ALM 102 107: CAR 101 108: RES 103 109: ALM 101 110: COND 104 111: GOTO 116 112: CAR 103 113: ALM 102 114: CAR 101 (pasa a la p´gina siguiente) a
  • ´3.3. Un ejemplo de recapitulacion 87 (viene de la p´gina anterior) a Direcci´n o Contenido 115: COND 104 116: Continuar programa. El programa comienza a ejecutarse a partir de la direcci´n 112, re- oalizando la comparaci´n a > 0. Veamos un ejemplo de ejecuci´n del o oprograma para los valores n = 5 y a = 0: Direcci´n o Instrucci´n o Acum. a (101) r (102) 0 ? 112: CAR 103 1 113: ALM 102 1 114: CAR 101 0 115: COND 104 116: Continuar programaVeamos otro ejemplo con n = 5 y a = 3: Direcci´n o Instrucci´n o Acum. a (101) r (102) 3 ? 112: CAR 103 1 113: ALM 102 1 114: CAR 101 3 115: COND 104 104: CAR 102 1 105: MUL 100 5 106: ALM 102 5 107: CAR 101 3 108: RES 103 2 109: ALM 101 2 110: COND 104 104: CAR 102 5 105: MUL 100 25 (pasa a la p´gina siguiente) a
  • 88 Cap´ ıtulo 3. Estructura f´ ısica de un computador (viene de la p´gina anterior) a Direcci´n o Instrucci´n o Acum. a (101) r (102) 106: ALM 102 25 107: CAR 101 2 108: RES 103 1 109: ALM 101 1 110: COND 104 104: CAR 102 25 105: MUL 100 125 106: ALM 102 125 107: CAR 101 1 108: RES 103 0 109: ALM 101 0 110: COND 104 111: GOTO 116 116: Continuar programa.El resultado, 125, queda almacenado en la direcci´n 102. o3.4 Observaciones complementarias El conjunto de instrucciones de m´quina presentado como ejemplo aest´ muy simplificado. Los lenguajes de m´quina reales pueden tener a ahasta cientos de instrucciones, la mayor´ de ellas con distintas modali- ıadades de direccionamiento. Los procesadores disponen tambi´n de numerosos registros operati- evos auxiliares, que se utilizan en la ejecuci´n de las instrucciones y en la oformaci´n de las direcciones sobre las que se opera. o Para tener una panor´mica m´s amplia de los lenguajes de m´quina a a aconviene conocer los distintos modos de direccionamiento y las instruc-ciones para la creaci´n de subprogramas. o Tambi´n son interesantes las instrucciones del tratamiento de las eoperaciones de E/S y de las situaciones de error o desbordamiento.
  • 3.4. Observaciones complementarias 893.4.1 Tipos de direccionamiento Cada procesador dispone de unas reglas precisas y determinadas parala definici´n de las direcciones o registros donde se encuentran los datos. oEstas reglas constituyen los modos de direccionamiento del procesadory pueden llegar a ser bastante complejas. Un procesador puede tenerdecenas de modos de direccionamiento diferentes, en los que participanregistros especializados. Se llama direcci´n absoluta al valor num´rico que cada posici´n de o e omemoria tiene asignado y por el cual se accede a ella. En general, ladirecci´n contenida en las instrucciones de lenguaje m´quina no es la di- o arecci´n absoluta, sino que ´sta se forma desplazando una cierta direcci´n o e ollamada direcci´n de base, contenida en un registro especializado. o Se llama direcci´n efectiva a la direcci´n desde la cual, una vez reali- o ozadas las necesarias operaciones sobre la direcci´n contenida en la ins- otrucci´n, se toman los datos. o Un registro puede contener un dato para operar con ´l, pero tambi´n e epuede contener una direcci´n donde se encuentre el dato. (En los ejem- oplos siguientes supondremos un lenguaje m´quina de dos direcciones.) a • Direccionamiento inmediato El direccionamiento inmediato consiste en incorporar el dato cons- tante a la instrucci´n. En realidad no es un direccionamiento pro- o piamente dicho, puesto que se dispone del dato: CAR AX, 500 Esta instrucci´n carga el valor constante 500 en el registro acumu- o lador. • Direccionamiento directo La direcci´n contenida en la instrucci´n es la direcci´n de memoria o o o de donde se debe obtener el dato. La instrucci´n:o CAR AX, [500]
  • 90 Cap´ ıtulo 3. Estructura f´ ısica de un computador carga en el acumulador el contenido de la direcci´n de memoria o 500. Si la direcci´n es la absoluta se denomina direccionamiento o absoluto. • Direccionamiento relativo En el caso del direccionamiento relativo, la instrucci´n no contiene o una direcci´n sino un valor de desplazamiento que se aplica a una o direcci´n de referencia contenida normalmente en un registro, en o una pila o en el contador de programa. La instrucci´n:o CAR AX, [BX + 4] carga en el acumulador el contenido de la direcci´n obtenida al o sumar 4 al contenido del registro BX. • Direccionamiento indirecto En el direccionamiento indirecto la direcci´n contenida en la ins- o trucci´n contiene la direcci´n en que se encuentra el operando. La o o instrucci´n: o CARI AX, [500] carga en el acumulador el contenido de la posici´n de memoria o cuya direcci´n se encuentra en la direcci´n 500. o o • Direccionamiento impl´ ıcito En este caso se hace referencia a un registro que, por quedar so- breentendido, no se menciona en la instrucci´n. o En nuestro ejemplo de lenguaje m´quina (ver 3.3.2) se sobreen- a tiende que las operaciones se realizan y almacenan en el registro acumulador. En consecuencia, el direccionamiento de este registro queda impl´ıcito.El siguiente cuadro resume los tipos de direccionamiento descritos:
  • 3.4. Observaciones complementarias 91  Inmediato   Directo     Absoluto      al contador de programa Direccionamiento  Relativo a un registro     a pila      Indirecto    Impl´ ıcito (con acumulador)3.4.2 SubrutinasPilas Las pilas son estructuras secuenciales de datos cuyo acceso se realizapor un extremo. Es semejante a la acci´n de apilar una serie de libros osobre una mesa: se puede poner un libro sobre la pila o quitar el delextremo superior o cima, pero no insertar ni sacar libros intermedios;para acceder a uno de los libros de la parte inferior hay que retirarpreviamente los anteriores. Se dice que estas estructuras son de tipoLIFO (Last In First Out: ultimo en entrar primero en salir). ´ La mayor´ de los procesadores disponen de una pila para almacenar ıaordenadamente ciertos valores y operaciones. Sobre una pila se definendos operaciones b´sicas: meter y sacar datos. Para su funcionamiento ase utiliza un puntero que se˜ala a la cima de la pila. Para meter un ndato en la pila se decrementa el valor del puntero para que apunte a unaposici´n sobre la actual, y a continuaci´n, se transfiere el dato a esta o oposici´n. Para sacar el dato, se env´ su valor y despu´s se incrementa o ıa eel valor del puntero. De esta forma la posici´n anteriormente ocupada oqueda liberada. Estas operaciones suelen expresarse por sus mnemot´cnicos en ingl´s: e ePUSH d y POP d. La primera introduce el valor contenido en la direcci´n d oen la pila, y la segunda saca el valor del extremo de la pila y lo depositaen la direcci´n d. o
  • 92 Cap´ ıtulo 3. Estructura f´ ısica de un computador . . . . . . cima Puntero de pila ... . . . . . . base . . . . . . Figura 3.3. Una pila y el puntero de pila. . . . . . . . . . . . ??? . ← p.p. YYY 100 XXX ← p.p. 100 XXX 101 PUSH d E 101 . . . . . . . . . . . . d YYY d YYY . . . . . . . . . . . . Figura 3.4. Interpretaci´n gr´fica de la orden PUSH. o a
  • 3.4. Observaciones complementarias 93 . . . . . . . . . . . . 99 YYY ← p.p. 99 YYY 100 XXX 100 XXX ← p.p. 101 POP d E 101 . . . . . . . . . . . . d ??? d YYY . . . . . . . . . . . . Figura 3.5. Interpretaci´n gr´fica de la orden POP. o aLlamadas a subrutinas Un subprograma es un conjunto de instrucciones que realizan unaacci´n concreta que se puede repetir varias veces a lo largo del pro- ograma, como hemos visto en el ejemplo del apartado 3.3.4. En vez derepetir la codificaci´n de las instrucciones cada vez que se necesiten, o´stas se codifican una unica vez, formando un subprograma o subrutina,e ´y se le llama desde los distintos puntos del programa. Los lenguajesde m´quina disponen de instrucciones para realizar las llamadas a sub- aprograma, consigui´ndose as´ una estructura modular con un programa e ıprincipal que llama a sus respectivos m´dulos cuando lo necesita. o La instrucci´n de llamada va acompa˜ada de la direcci´n de entrada o n odel subprograma: CALL dEsta instrucci´n llama al subprograma situado en la direcci´n d. Para o oello, la carga en el registro contador de programa, en forma semejante alas instrucciones de salto COND o GOTO. Sin embargo, una vez que el subprograma haya sido ejecutado, hayque volver al programa principal, por lo que se hace necesario conocer
  • 94 Cap´ ıtulo 3. Estructura f´ ısica de un computadory almacenar la direcci´n de retorno, normalmente la direcci´n siguiente o oa la de la llamada al subprograma, en el programa principal. Esta di-recci´n se suele almacenar en la pila. o En consecuencia, antes de producirse un salto a un subprograma, lainstrucci´n de llamada debe almacenar la direcci´n de retorno al pro- o ograma principal, que es la direcci´n siguiente a la de llamada, en la pila. oCuando se llega a la ultima instrucci´n del subprograma el procesador ´ osaca la direcci´n de retorno de la pila y la carga en el registro contador ode programa, con lo cual prosigue la ejecuci´n del programa principal. o Los subprogramas deben terminar en una instrucci´n que indique al oprocesador que debe volver al programa principal. Suele expresarse conel mnemot´cnico: e RETque indica el RETorno desde un subprograma.3.4.3 Interrupciones El trabajo del procesador puede verse interrumpido por distintosmotivos; operaciones de E/S, errores, paradas para depuraci´n, etc. o Una interrupci´n del procesador es similar a lo que sucede cuando oestamos leyendo un libro y suena el tel´fono: el dispositivo externo, eel tel´fono, avisa de su disposici´n a realizar una operaci´n de E/S; el e o oprocesador, el lector, almacena su estado de proceso (se fija en la p´gina ay el lugar de la p´gina donde se encuentra leyendo), y pasa a ejecutar un asubprograma de servicio de la llamada telef´nica (responde al tel´fono, o etoma notas, etc., y por ultimo cuelga). A continuaci´n el procesador ´ oreanuda su estado anterior a la llamada y prosigue con su proceso (ellector toma el libro, busca la p´gina y contin´a con su lectura). a u Las interrupciones pueden programarse (interrupciones de software)mediante las correspondientes instrucciones de m´quina, o pueden pro- aducirse por los controladores del sistema y de dispositivos, a trav´s del ebus de control (interrupciones de hardware).
  • 3.5. Otras arquitecturas 95 Se puede establecer una jerarqu´ de interrupciones dependiente de ıasu prioridad; ciertas interrupciones deben ser atendidas de inmediato,incluso deteniendo otras interrupciones en curso de ejecuci´n. o Cada tipo de interrupci´n determina la llamada a un subprograma ode servicio, que contiene las instrucciones necesarias para atender lainterrupci´n. Antes de atender la interrupci´n, el procesador almacena el o ocontenido de los registros, generalmente en una estructura de tipo pila. Acontinuaci´n se ejecuta el subprograma, de forma similar a las llamadas ode subprogramas (subrutinas). Una vez atendida la interrupci´n, el oprocesador recupera los contenidos de sus registros de la pila y prosiguela ejecuci´n del programa principal. o Para el tratamiento de las interrupciones los lenguajes de m´quina asuelen disponer de instrucciones espec´ ıficas, que en forma nemot´cnica esuelen expresarse como: INT t IRETLa primera genera una INTerrupci´n de tipo t, y entre otras acciones ollama al subprograma de servicio t. La segunda marca el fin de dichosubprograma y provoca el retorno de la interrupci´n. o3.5 Otras arquitecturas En los ultimos a˜os se ha introducido una gran variedad de nuevas ar- ´ nquitecturas de computadores, especialmente orientados al procesamientoen paralelo, esto es, con capacidad para realizar varias operaciones si-mult´neamente. Este modo de funcionamiento contrasta con el procesa- amiento secuencial, en que las instrucciones se ejecutan una tras otra. Actualmente, la mayor´ de los computadores incorpora algunas ca- ıaracter´ ısticas paralelas a bajo nivel sin que por eso puedan ser llamados ´con propiedad computadores paralelos. Estos disponen en general devarios procesadores o Unidades de Procesamiento (UP). En esta secci´n se presentan, muy brevemente, algunos esquemas ob´sicos que siguen las distintas arquitecturas paralelas existentes en la a
  • 96 Cap´ ıtulo 3. Estructura f´ ısica de un computadoractualidad. Principalmente, estos modelos se diferencian entre s´ en ıque las distintas UP pueden estar dotadas con una memoria local o no,compartir o no una memoria y operar sincr´nicamente o no. De modo omuy general los computadores paralelos pueden clasificarse en alguna delas tres clases siguientes: 1. Arquitecturas sincr´nicas. Este tipo de computadores se carac- o teriza por realizar paralelamente operaciones coordinadas por un reloj, una UCP o un controlador vectorial globales; a su vez pueden clasificarse en algunos de los tipos siguientes: - Procesadores Vectoriales. Caracterizados por tener varias unidades aritm´tico-l´gicas encadenadas, que permiten reali- e o zar c´lculos aritm´ticos y l´gicos tanto con vectores como con a e o escalares. - Arquitecturas SIMD. Esta denominaci´n (del ingl´s Single o e Instruction Multiple Data) caracteriza a aquellos computa- dores con una unidad central, varios procesadores y una red que permite la comunicaci´n entre procesadores e intercambio o de datos con la memoria. Esta red de interconexi´n permite o que el resultado obtenido por un procesador sea comunicado a otro procesador que lo necesite como argumento. 2. Arquitecturas MIMD. Este tipo de arquitecturas (del ingl´s Mul- e tiple Instructions Multiple Data) emplea varios procesadores que pueden ejecutar, de forma as´ ıncrona, programas independientes que usan datos locales. Por lo tanto, los computadores MIMD son especialmente utiles cuando el paralelismo de la soluci´n buscada ´ o requiere que los procesadores trabajen de manera esencialmente aut´noma. o Las arquitecturas MIMD pueden clasificarse, a su vez, dependiendo del modelo de memoria que utilicen. - De Memoria Compartida. Las arquitecturas de memoria com- partida consiguen la coordinaci´n entre los distintos procesa- o dores mediante una memoria global, compartida. Es inte- resante observar que en este tipo de computadores se unen
  • 3.5. Otras arquitecturas 97 varios procesadores de prop´sito general que comparten una o memoria global, en lugar de varias UCPs con su propia gesti´n o de perif´ricos de entrada y salida. e - De Memoria Distribuida. Las arquitecturas de memoria dis- tribuida conectan los nodos (un procesador aut´nomo junto o con su memoria local) mediante una red de interconexi´n o entre los procesadores. Los nodos comparten datos expl´ ı- citamente pas´ndose mensajes a trav´s de la red de interco- a e nexi´n, ya que no hay memoria compartida. o Se han propuesto varias topolog´ de interconexi´n para ar- ıas o quitecturas de memoria distribuida. Entre ellas se encuentran las topolog´ en anillo, en red, en ´rbol y las topolog´ hi- ıas a ıas perc´bicas. u 3. Arquitecturas basadas en el paradigma MIMD. Por ultimo, pode- ´ mos encontrar un tercer grupo de arquitecturas que no encajan en los dos grandes grupos anteriores. Esta clase de computadores est´n basados en el principio de asincron´ y manipulaci´n paralela a ıa o de m´ltiples instrucciones y datos; sin embargo, cada una de las u siguientes arquitecturas tienen alguna caracter´ ıstica propia que la separa de una m´quina MIMD. a - H´ ´ ıbridos SIMD-MIMD. Esta es una arquitectura experimen- tal en la que se permite que partes de una arquitectura MIMD puedan ser controladas de modo SIMD. - De Flujo de Datos. La caracter´ ıstica fundamental de las ar- quitecturas de flujo de datos es su paradigma de ejecuci´n, en o el que una instrucci´n se ejecuta tan pronto como sus operan- o dos est´n disponibles. De este modo, la secuencia de instruc- a ciones ejecutadas est´ basada en la dependencia de los datos, a permiti´ndose as´ explotar la concurrencia en los niveles de e ı tarea, rutina e instrucci´n. o - Dirigidas por la demanda (demand-driven). Este tipo de ar- quitecturas, tambi´n llamadas de reducci´n, utilizan un para- e o digma de ejecuci´n en el que una instrucci´n se manda ejecu- o o tar s´lo cuando sus resultados se necesitan como operandos o
  • 98 Cap´ ıtulo 3. Estructura f´ ısica de un computador para otra instrucci´n que se est´ ejecutando; este paradigma o a se conoce tambi´n como evaluaci´n perezosa (del ingl´s lazy), e o e ya que se ejecutan s´lo las instrucciones estrictamente nece- o sarias para la evaluaci´n pedida. o3.6 Ejercicios 1. Determine el n´mero de l´ u ıneas de los buses de datos y direcciones precisos en un ordenador con: (a) una memoria de 64 K palabras de 1 byte, y (b) una memoria de 16 Mb, en palabras de 2 bytes. 2. Dado un tama˜o de palabra de memoria de 2 bytes y un bus de direc- n ciones de 20 l´ ıneas, calcule el tama˜o de memoria direccionable. n 3. A partir de los datos de un modelo de computador concreto, extraiga los valores de las siguientes magnitudes, o indique sus caracter´ ısticas: (a) Tama˜o de la memoria principal. n (b) N´mero de l´ u ıneas del bus de direcciones y de datos. (c) Tipos de memorias utilizadas (ROM, RAM, . . . ), y su velocidad de acceso. (d) Tama˜o de memoria cach´. n e (e) Velocidad de reloj. (f) Tipo de coprocesador. (g) N´mero de controladores en serie y en paralelo. u (h) Unidades de disco: tipos, capacidad y velocidad de acceso. (i) Otros perif´ricos disponibles. e 4. Desarrolle un programa en lenguaje de m´quina (usando instrucciones a mnemot´cnicas) para sumar los 10 primeros n´meros naturales. e u 5. Desarrolle un programa en lenguaje m´quina que copie el contenido de a las posiciones 1000 a 1010 de memoria en las 2000 a 2010. 6. Ampl´ el juego de instrucciones con POP y PUSH para desarrollar un ıe programa en lenguaje m´quina que copie el contenido de las direcciones a de memoria 1000 a 1010 en la pila, y desde la pila en las direcciones 2000 a 2010.
  • ´3.7. Comentarios bibliograficos 99 7. Ampl´ el juego de instrucciones con CALL y RET para desarrollar un un ıe subprograma en lenguaje m´quina que, al ser llamado, sustituya el valor a almacenado en el acumulador por su opuesto. 8. Con el juego de instrucciones del ejercicio anterior, escriba un subpro- grama en lenguaje m´quina que, al ser llamado, sustituya los valores a almacenados en las posiciones de memoria 1000 a 1010 por sus opuestos. 9. Escriba un programa en lenguaje m´quina que genere un ciclo infinito. a 10. Escriba un programa en lenguaje m´quina que escriba copias de s´ mismo a ı en la memoria disponible.3.7 Comentarios bibliogr´ficos a • Este cap´ ıtulo resume, enormemente, un area vast´ ´ ısima de la inform´tica. a Por consiguiente, s´lo puede constituir una introducci´n sin pretensiones o o de algunos conceptos b´sicos utiles sobre la estructura f´ a ´ ısica de los com- putadores digitales, y de la coordinaci´n entre ´stos y el soporte l´gico, o e o al m´s bajo nivel, que es el de la m´quina. a a • En [PLT89] puede encontrarse un enfoque muy did´ctico de este tema, a presentado junto con la descripci´n de un modelo real, el ODE (Ordena- o dor Did´ctico Elemental), desarrollado por los autores. a • El texto [Mei73] es una obra cl´sica sobre los contenidos de este cap´ a ıtulo, que ha servido para la formaci´n de muchas generaciones de t´cnicos o e en computaci´n, por lo que su referencia es obligada. Se advierte, sin o embargo, que no se trata de un mero texto introductorio, aunque su clara presentaci´n facilita un buen n´mero de conceptos que, por s´ mismos, o u ı no son sencillos. • En [MW84] puede verse c´mo se concretan muchos de los contenidos o presentados en este tema en dos procesadores concretos, el 8088 y el 8086. • En [FM87] se presenta brevemente una visi´n panor´mica bastante ame- o a na sobre las nuevas arquitecturas de computadores. Un enfoque m´s a t´cnico puede hallarse nuevamente en el ultimo cap´ e ´ ıtulo de [Mei73].
  • Cap´ ıtulo 4Sistemas Operativos 4.1 Cometido de un sistema operativo . . . . . . . . . . . . . . . . 102 4.2 Conceptos b´sicos de los sistemas operativos . . . . . . . . . . . a 105 4.3 Clasificaci´n de los sistemas operativos . . . . . . . . . . . . . . o 116 4.4 Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117 4.5 Comentarios bibliogr´ficos . . . . . . . . . . . . . . . . . . . . . a 117 Un computador sin software es algo sencillamente in´til salvo, quiz´, u acomo elemento decorativo. Un sistema operativo constituye, probable-mente, la parte m´s importante del conjunto de software que acompa˜a a a ncualquier computador moderno. El sistema operativo controla todos losrecursos del computador y ofrece la base sobre la cual pueden escribirselos programas de aplicaci´n. o El objetivo de este cap´ ıtulo consiste en exponer los elementos b´sicos ade un sistema operativo, presentar sus funciones fundamentales y esta-blecer las cualidades que cabe esperar de ´l. e En las primeras secciones se definen los conceptos b´sicos acerca de aun sistema operativo y las funciones que debe realizar. Posteriormentese establece una clasificaci´n, no exhaustiva, de los sistemas operativos oseg´n sus caracter´ u ısticas m´s sobresalientes. a
  • 102 Cap´ ıtulo 4. Sistemas Operativos4.1 Cometido de un sistema operativo4.1.1 Funciones de los sistemas operativos En el cap´ıtulo anterior se ha mostrado someramente la estructurainterna de un computador, con su(s) procesador(es), sus memorias prin-cipal y secundaria, y los perif´ricos. Si todo programador de aplicaciones etuviera que controlar “a mano” todos los componentes de la estructurainterna del computador cuando hace sus programas, muy probablemente,no existir´ tantos programas en el mercado. Por poner un ejemplo, em- ıanplear la instrucci´n escribir archivo es mucho m´s simple que tener o aque preocuparse por mover las cabezas lectoras del disco hasta una po-sici´n adecuada, esperar que se estabilicen, dirigir la informaci´n desde o ola memoria e ir escribiendo la informaci´n en el disco. o Conviene al programador de aplicaciones (o al mismo usuario) des-entenderse de los complejos detalles del hardware. La idea fundamentalpara conseguirlo consiste en ocultar los escabrosos detalles del hardwarepuro con software (el sistema operativo) especialmente dise˜ ado para npermitir un uso m´s f´cil y racional de todas las partes del sistema. a a Del mismo modo, el sistema operativo presenta un interfaz simpleentre el programador o usuario y otros aspectos del hardware, comoson el manejo de interrupciones, relojes, gesti´n de memoria y otras ocaracter´ ısticas de bajo nivel. Seg´n este enfoque, el sistema operativo tiene la misi´n de presentar u oal usuario una m´quina virtual que sea m´s f´cil de programar que el a a ahardware puro y, por lo tanto, aumente la efectividad del computadoral evitar la necesidad de trabajar a bajo nivel. Por consiguiente, puedeconsiderarse un sistema operativo como un interfaz adecuado entre elusuario y el hardware. Un sistema operativo tambi´n tiene la funci´n de controlar y admi- e onistrar de forma ordenada el uso de todos los recursos del computador.Esta funci´n se hace especialmente necesaria cuando un computador est´ o asiendo compartido por varios usuarios simult´neamente; en este caso, ala necesidad de distribuir convenientemente el tiempo de trabajo de la
  • 4.1. Cometido de un sistema operativo 103UCP, los espacios de memoria y los perif´ricos es evidente. Desde este epunto de vista, la tarea del sistema operativo es llevar el control de qui´n eest´ utilizando cada recurso y dirimir los posibles conflictos entre varios aprocesos o usuarios que intenten acceder a la vez a un mismo recurso. No existe acuerdo entre los diferentes textos al se˜ alar cu´les son n alas funciones de un sistema operativo, ya que este concepto ha evolu-cionado con su desarrollo. En general, un sistema operativo debe poderdesempe˜ar al menos las siguientes funciones: n • Facilitar la comunicaci´n hombre-m´quina. o a • Gestionar los recursos: procesador(es), memoria(s) y perif´ricos, e facilitando su manejo al usuario. • Gestionar la informaci´n (los archivos) contenida en los perif´ricos o e de almacenamiento y la organizaci´n de esa informaci´n (en direc- o o torios). • Controlar la ejecuci´n de aplicaciones. o4.1.2 Formas de trabajo de los sistemas operativos Los sistemas operativos han evolucionado para cubrir las distintasnecesidades de proceso sobre m´quinas de tama˜o y potencia muy di- a nversos. Aparecen as´ diferentes formas de trabajo y sistemas operativos ıespecializados en cada una de ellas. Una de las principales distinciones se da entre los sistemas operativosde prop´sito general y los dedicados. o Los primeros, que son los m´s utilizados, se dise˜an con una intenci´n a n ode polivalencia, de forma que sobre ellos puedan ejecutarse programasdiversos: editores, compiladores y aplicaciones de todo tipo. Dentro delos sistemas operativos de prop´sito general puede distinguirse entre mo- onousuario y multiusuario, dependiendo de si pueden atender o no a m´s ade un proceso al mismo tiempo. Claramente, los sistemas multiusuarioson m´s complejos pues, adem´s de desempe˜ ar todas las funciones pro- a a npias de uno monousuario, deben atender a otros aspectos, tales como el
  • 104 Cap´ ıtulo 4. Sistemas Operativosreparto del tiempo de trabajo del (los) procesador(es) entre los distintosusuarios, la separaci´n entre los datos de los mismos, etc. o En los sistemas operativos de prop´sito general, hay dos formas de otrabajo b´sicas: el modo interactivo y el proceso por lotes. En el primero, ael usuario tiene acceso a los recursos del sistema a trav´s de su terminal e(local o remoto), estableciendo un di´logo con el computador, donde las ao´rdenes y las respuestas tienen lugar de un modo casi inmediato. En un proceso por lotes, los diferentes trabajos junto con sus datos sesuceden entre s´ de forma que su ejecuci´n se realice autom´ticamente, ı, o asin ning´n tipo de comunicaci´n entre el usuario y el sistema, hasta la u ofinalizaci´n del trabajo. o Dentro de los sistemas operativos dedicados, se suele distinguir entrelos de control de procesos, de consulta de bases de datos y transacciona-les. En el control de procesos, el computador recibe continuamente datos(realimentaci´n) sobre el sistema bajo control, reaccionando en conse- ocuencia. En la mayor´ de estos procesos, la variable tiempo tiene una ıaimportancia relevante; por ejemplo, en un horno industrial, un retrasoen la reducci´n de la temperatura puede tener funestas consecuencias. oEn estos procesos, se dice que el sistema debe operar en tiempo real. Los sistemas de consulta deben permitir al usuario el acceso a unao varias bases de datos de una forma c´moda, sin tener que conocer los odetalles internos de su organizaci´n y funcionamiento. de su estructura. oSe puede citar como ejemplo un sistema de consultas de historias cl´ ınicasen un hospital. Por ultimo, los sistemas transaccionales permiten la realizaci´n de ´ ooperaciones sobre el contenido de bases de datos. Se han extendidoenormemente en los ultimos a˜os. Por ejemplo, as´ se llevan a cabo ´ n ılos movimientos de cuentas en el sector bancario, la reserva y venta debilletes en agencias de viajes, etc. Estos sistemas deben garantizar la opacidad de la informaci´n confi- odencial, actualizar r´pidamente la base de datos y evitar ciertas opera- aciones simult´neas sobre los mismos datos (por ejemplo, dos personas aque reservan el mismo asiento).
  • ´4.2. Conceptos basicos de los sistemas operativos 1054.2 Conceptos b´sicos de los sistemas a operativos4.2.1 Procesos Es importante el concepto de proceso para entender c´mo funcio- onan los sistemas operativos. Un proceso consiste, esencialmente, en unarutina de acciones del sistema que puede ser ejecutada independiente-mente de otro proceso e, incluso, en paralelo. Un programa de usuarioen ejecuci´n puede considerarse un proceso, aunque un proceso puede oinvolucrar la ejecuci´n de m´s de un programa y, rec´ o a ıprocamente, unprograma o rutina de instrucciones puede estar involucrado en m´s de aun proceso. Por esta raz´n es m´s util el concepto de proceso que el de o a ´programa al referirnos al sistema operativo. Todo proceso creado puede ser tratado como un seudorrecurso pues,al contrario que los recursos reales, los procesos son entidades ef´ ımerasque desaparecen una vez completada su misi´n. Podr´ arg¨irse que los o ıa uprocesos son consumidores de recursos en lugar de ser recursos por s´ ımismos; sin embargo, una vez que han entrado en el estado transitoriode ser procesos, pueden ser “manejados” por otros procesos. La gesti´n de procesos es una tarea fundamental de los sistemas ooperativos; concretamente, la mayor´ de los sistemas operativos deben ıasoportar la ejecuci´n concurrente de procesos y resolver los problemas oque ´sta plantea, ofreciendo medios para la sincronizaci´n de los pro- e ocesos, controlando su exclusi´n mutua respecto de ciertos recursos, y oevitando, en la medida de lo posible, las situaciones de bloqueo. Estosconceptos se explican a continuaci´n. o Dos o m´s procesos se dicen concurrentes cuando se est´n ejecutando a asimult´neamente. Cuando existen m´s procesadores que procesos, cada a aproceso se ejecutar´ sin conflicto en un procesador (paralelismo); si, por ael contrario, existen m´s procesos que procesadores puede obtenerse una a“simultaneidad aparente” (concurrencia) haciendo que los procesadoresalternen cortos per´ıodos de tiempo de dedicaci´n a los distintos procesos. o Si dos procesos concurrentes utilizan recursos distintos podr´n con- a
  • 106 Cap´ ıtulo 4. Sistemas Operativosvivir sin interferencias pero si, por el contrario, los procesos necesitan losmismos recursos puede surgir conflicto. Sup´ngase que ambos recursos opretenden acceder a una impresora: es absolutamente inviable conmu-tar la dedicaci´n de la impresora entre ambos procesos ya que, en ese ocaso, el resultado ser´ ca´tico. Este es un caso t´ ıa o ıpico de necesidad deexclusi´n mutua de dos procesos respecto a un recurso. o Dos procesos concurrentes pueden necesitar cooperar al realizar sustareas; por ejemplo, un proceso que genera l´ıneas de texto que env´ ıaa un buffer y otro que las consume, tom´ndolas del buffer de datos y aenvi´ndolas a la impresora. Cuando as´ ocurre, es necesario que exista a ıuna sincronizaci´n de ambos procesos. o Por ultimo, puede darse la circunstancia de que dos (o m´s) procesos ´ aen ejecuci´n concurrente se bloqueen mutuamente, en el sentido de que ocada uno de ellos necesita un recurso que el otro posee. Llegados a estepunto la ejecuci´n se detiene, ya que cada proceso espera que el otro olibere la informaci´n (o el recurso) que necesita. Esta situaci´n se llama o obloqueo (en ingl´s deadlock ). e4.2.2 Archivos La informaci´n es almacenada por el ordenador en dispositivos, como opor ejemplo los discos. Para que el usuario pueda ignorar la estructuraf´ ısica del disco, el sistema operativo debe presentar la informaci´n al- omacenada de una forma organizada, que permita acceder a ella de unamanera l´gica y sencilla. o En este contexto, se entender´ por archivo un conjunto de infor- amaci´n relacionada (definida por el usuario o no). En ´l pueden estar o econtenidos datos o programas. Un sistema operativo debe gestionar losarchivos de una forma eficiente; para ello son necesarias operaciones ta-les como la creaci´n, modificaci´n y borrado de archivos. El sistema o ooperativo debe proporcionar estas operaciones, permitiendo al usuarioreferirse a los archivos mediante nombres simb´licos. o Al manipular los archivos, el computador puede acceder a ellos dedos modos, dependiendo del medio de almacenamiento en que reside el
  • ´4.2. Conceptos basicos de los sistemas operativos 107archivo (v´ase 3.1.3): el acceso secuencial y el acceso directo. e • Con acceso secuencial se recorren los elementos de un archivo uno tras otro, consecutivamente. Este m´todo de acceso viene e impuesto por ciertos medios de almacenamiento, tales como las cintas magn´ticas, aunque tambi´n puede darse en otros disposi- e e tivos, como los discos magn´ticos, cuando los archivos tienen esta e organizaci´n. o • Con acceso directo, los diferentes elementos pueden localizarse di- rectamente por su posici´n, sin necesidad de recorrer los anteriores o ´ para llegar hasta ellos. Este es el modo de acceso t´ ıpico de los dis- cos magn´ticos. e Cuando el n´mero de archivos crece, resulta inc´moda su localizaci´n u o oy manipulaci´n. Para facilitarla, el sistema operativo presenta al usuario ola posibilidad de agruparlos en compartimentos, llamados directorios. Elsistema operativo deber´ manejar la organizaci´n de directorios, ocul- a otando al usuario los detalles particulares de la localizaci´n f´ o ısica de losarchivos y directorios, facilit´ndole en cambio operaciones para gestionar ac´modamente el sistema de directorios. o La t´cnica m´s com´nmente utilizada es usar una estructura en arbol, e a u ´en la que existe un directorio ra´ que puede contener archivos y/o ız(sub)directorios; a su vez cada directorio puede contener m´s archivos ay/o m´s (sub)directorios. La figura 4.1 muestra un ejemplo de sistema ade archivos. Una imagen visual bastante util de un sistema de archivos con estruc- ´tura de arbol se consigue al considerar un directorio como una carpeta ´que contiene un cierto n´mero de documentos (los archivos). En princi- upio nada nos impide que coloquemos una carpeta dentro de otra (salvoquiz´ la limitaci´n de espacio).1 a o Una operaci´n fundamental en la gesti´n de un sistema de archivos o oes la b´squeda eficiente de un archivo determinado. Si el n´mero de u u 1 Esta es la representaci´n utilizada en los interfaces gr´ficos de usuario como los de o aApple Macintosh y Windows.
  • 108 Cap´ ıtulo 4. Sistemas Operativos Ra´ ız ˆˆˆ  ˆ ˆˆˆ   ˆˆˆ    ˆˆ alumnos profesores juegos $$ˆˆˆˆ 33€€ €€ 7d $$$ $ e ˆˆ 33 7 d  e ˆ d trivial  e adictivosPedro Pablo 7 go mus Luis Eloy Joe  l l   tetris prince Figura 4.1. Un sistema de archivos con estructura de arbol. ´archivos es peque˜o lo m´s simple y lo mejor es buscar secuencialmente n aarchivo tras archivo, pero si el sistema contiene muchos archivos estat´ctica llevar´ mucho tiempo y, como esto es lo habitual, se han ideado a aestrategias para hacer el acceso m´s eficiente. a La idea de directorio de trabajo permite agilizar la b´squeda de archi- uvos en el sistema; para ello es fundamental la noci´n de camino (en ingl´s o epath) desde la ra´ del ´rbol hasta una rama determinada; por ejemplo, ız aen el ´rbol de directorios de la figura 4.1 los juegos adictivos tienen el path ajuegosadictivos. Si el directorio de trabajo fuera juegos enton-ces adictivostetris (camino relativo al directorio de trabajo) tiene elmismo significado que juegosadictivostetris (camino absoluto). Para la optimizaci´n de la b´squeda de archivos se suele buscar s´lo o u oen el directorio de trabajo y en algunos otros paths especificados por elusuario. Otra prestaci´n ofrecida por la mayor´ de los grandes sistemas ope- o ıarativos es la protecci´n de la informaci´n. Debido a la facilidad con que o opuede borrarse la informaci´n almacenada, los sistemas operativos ofre- ocen dos mecanismos principalmente para asegurar archivos y directorioscontra los descuidos, propios o ajenos: • un sistema de copias de seguridad (backup), que se pone en mar-
  • ´4.2. Conceptos basicos de los sistemas operativos 109 cha autom´ticamente ante cada modificaci´n efectuada sobre cada a o archivo. • un sistema de atributos, que permite marcar los archivos que nece- sitan copia de seguridad, como imborrables, como no susceptibles de modificaci´n, etc. o Otro aspecto de la protecci´n, igualmente importante en sistemas omultiusuario, consiste en permitir el acceso y garantizar que el trabajode cada usuario es privado, ocult´ndolo a los dem´s. Este efecto se a aconsigue por lo general mediante un sistema de marcas, que identificaal propietario de los distintos archivos y directorios, y de contrase˜as, nque permite reconocer el usuario concreto que se encuentra ante cadaterminal.4.2.3 N´ cleo u Se emplea frecuentemente el t´rmino n´cleo o kernel para referirse a e uaquella parte del sistema operativo m´s cercana a la m´quina y que, por a alo tanto, siempre est´ almacenada en la memoria principal (RAM). El an´cleo es un c´digo muy frecuentemente usado por otros programas de u oun nivel superior (aplicaciones o utilidades). Por esta raz´n se presenta, oaparentemente, como una ampliaci´n del conjunto de instrucciones de ola m´quina. El n´cleo desempe˜a, al menos, las siguientes funciones: a u n 1. Manejo de interrupciones. Cada sistema operativo tiene un cierto n´mero de tipos posibles de interrupciones, (v´ase la secci´n 3.4.3). u e o El dise˜o del n´cleo debe garantizar que, cuando la interrupci´n n u o sea atendida para permitir que se ejecute otra tarea, la informaci´n o que se estaba procesando quede correctamente protegida y almace- nada, garantiz´ndose que la actividad interrumpida pueda reanu- a dar su ejecuci´n en el punto en que la dej´, cuando sea atendida o o la interrupci´n. o 2. Soporte de entrada y salida. El n´cleo debe controlar los avisos u de los procesos que necesitan comunicarse con los perif´ricos e e interceder en caso de conflicto.
  • 110 Cap´ ıtulo 4. Sistemas Operativos4.2.4 Multiprogramaci´n o En un sistema de multiprogramaci´n el computador puede ejecutar ovarios programas simult´neamente. a La idea b´sica es aprovechar la mayor rapidez del procesador respecto ade los perif´ricos, discos o impresoras, en atender una petici´n, o bien e oaprovechar el tiempo que tarda un usuario en introducir sus ordenes a ´trav´s del teclado. Con todo esto, se aprovecha mejor la potencia del eprocesador que, a fin de cuentas, es el elemento m´s caro del computador. a Para poder trabajar con multiprogramaci´n, el sistema operativo odebe disponer de un mecanismo que permita que la memoria sea asignadacorrectamente, y compartida entre los distintos trabajos que se ejecutan. A diferencia de la memoria, en la que pueden caber varios programasa la vez, la UCP en un instante concreto est´ dedicada solamente a un aprograma de usuario o bien a realizar una de las m´ltiples tareas precisas upara la gesti´n del sistema. Hace falta un mecanismo que planifique esta oactividad y su dise˜o es fundamental para el sistema operativo; este nmecanismo se conoce como planificaci´n (en ingl´s scheduling). o e El objetivo de la planificaci´n es optimizar el uso de la UCP. Los otrabajos que est´n esperando turno se ponen “en cola”, de la cual se debe aextraer el candidato m´s id´neo para utilizar la UCP en cada momento. a oEl proceso de selecci´n entre los miembros de esta cola es realizado por oel planificador, pudiendo existir m´s de uno, por ejemplo, para controlar alos sistemas de tiempo compartido a corto, medio y largo plazo. Para elegir el mecanismo adecuado hay que tener en cuenta cu´l es ael uso principal del computador. Si s´lo se est´n ejecutando procesos o apor lotes (v´ase p´g. 104 o la secci´n A.2.5) durante la noche es posible e a orealizarlos uno tras otro, pero si existen usuarios realizando consultaspuede ponerse como objetivo que ninguno de ellos est´ m´s de un de- e aterminado n´mero de segundos sin atenci´n. Las disciplinas de gesti´n u o ode colas van desde la m´s simple, consistente en una cola en la que el aprimero que llega es el primero que es atendido, hasta mecanismos muycomplejos en m´quinas con varios procesadores, donde las decisiones se a
  • ´4.2. Conceptos basicos de los sistemas operativos 111toman teniendo en cuenta otros par´metros adem´s del tiempo, como a apor ejemplo la prioridad (importancia) de cada proceso. En los sistemas medios tiene inter´s conocer el mecanismo denomi- enado round-robin, que ha sido especialmente dise˜ado para sistemas de ntiempo compartido en los que hay varios usuarios en distintas terminalescompartiendo un computador. Cada uno de ellos debe tener la impresi´n ode que el sistema trabaja s´lo para ´l; para ello, se define una unidad o ede tiempo (llamado quantum) que oscila entre 10 y 100 milisegundos, enfunci´n del sistema, y la cola se trata como si fuera una circunferencia ode forma que el algoritmo va concediendo una parte de tiempo fija acada usuario, transcurrido el tiempo asignado se le retira el control dela UCP y se cede al siguiente, y as´ sucesivamente. ı4.2.5 Interfaz de usuario Sea cual fuere el sistema operativo empleado, hay un conjunto deprogramas que regulan la comunicaci´n de la m´quina con el usuario o ay se˜alan las reglas que rigen esta comunicaci´n. Esto es lo que se n odenomina interfaz de usuario Hay dos tipos de interfaz: - Interfaz de mandatos, en la que el procedimiento de comunicaci´n o del usuario con el computador consiste en la introducci´n de ins- o trucciones por medio del teclado. - Interfaz gr´fico, en la que el procedimiento consiste en la selecci´n a o por el usuario mediante un perif´rico adecuado (habitualmente un e rat´n) entre varias opciones que le son presentadas en la pantalla o mediante gr´ficos, iconos o distintos tipos de esquemas. a Los interfaces de mandatos se emplearon en los primeros computado-res y a´n en la actualidad se emplean en entornos como dos y unix. Sin uembargo, cada vez m´s se tiende a la utilizaci´n de interfaces gr´ficos a o apor lograrse con ellos una mayor productividad a costa de una menorfatiga del usuario, ya que ´ste no necesita conocer los comandos precisos epara activar cada una de las opciones disponibles. El sistema pionero del interfaz gr´fico ha sido el de los computadores aApple-Macintosh. Actualmente existe un potente interfaz gr´fico para a
  • 112 Cap´ ıtulo 4. Sistemas Operativosel sistema dos como es windows. El sistema unix tambi´n tiene varios esistemas de ventanas como open-look y open-windows. Reciente-mente, ha aparecido una versi´n de windows independiente de dos: el osistema operativo windows-nt, que permite gestionar computadores,impresoras, tel´fonos o telefax en una red digital unica. e ´4.2.6 Gesti´n de la memoria o En teor´ la potencia del procesador suele permitir gran cantidad ıa,de operaciones por segundo pero, dado que para que un programa seaejecutado debe estar en la memoria principal, habr´ que gestionar la aocupaci´n de memoria por parte de los programas que el procesador oest´ atendiendo. a Para optimizar la memoria del computador existen dos solucionesextremas: tener una memoria real muy grande (lo cual resulta caro) otener los datos en los discos y hacerlos entrar y salir todas las veces quehaga falta (lo que resulta ineficiente). Entre ambas soluciones existenvarias posibilidades: 1. Tener la memoria dividida en un n´mero fijo de particiones de u tama˜o constante, de modo que en cada una de ellas puede existir n un programa en ejecuci´n. Al elegir esta estrategia surgen dos o problemas: (a) Fragmentaci´n interna: al situar un programa en una par- o tici´n, se desperdicia la parte sobrante de ´sta. o e (b) Fragmentaci´n externa: surge al tratar de situar un programa o grande, que no puede entrar en ninguna de las particiones vac´ aunque cabr´ en la memoria si ´stas se pudieran agru- ıas, ıa e par. Una forma obvia de solventar estos problemas es no fijar de ante- mano ni el n´mero ni el tama˜o de las particiones de la memoria, u n permitiendo as´ una asignaci´n de recursos m´s din´mica. ı o a a 2. Poder dividir la memoria en un n´mero variable de particiones, u en este caso el sistema operativo debe proporcionar al operador
  • ´4.2. Conceptos basicos de los sistemas operativos 113 un sistema que pueda variar el tama˜o de las particiones y adap- n tarlas a los programas que est´n esperando en ese momento. Esta a soluci´n no es perfecta, ya que a medida que los programas ter- o minan su ejecuci´n y salen de la memoria dejan un hueco libre, o exactamente en el espacio que ocupaban. A la hora de cargar un programa para su ejecuci´n puede ocurrir o que, incluso habiendo suficiente cantidad de memoria disponible, ´sta no sea contigua. Entonces se debe decidir si se carga el pro- e grama en el primer agujero disponible que tenga suficiente tama˜o, n o bien en el m´s peque˜o de los posibles. En todo caso, la existen- a n cia de estos huecos tiende hacia un tipo de fragmentaci´n externa o que puede ser bastante importante. Para evitar estos problemas surgen varias soluciones: (a) Compactaci´n, mediante la cual los programas son desplaza- o dos para conseguir que todo el espacio libre sea contiguo. (b) Compartici´n, mediante la que un mismo c´digo puede ser o o usado por varios programas y, por lo tanto, por varios usua- rios. (c) Memoria virtual, que en cierto sentido es la contrapartida de la compactaci´n: en lugar de luchar contra la fragmentaci´n, o o empujando los programas para que quede espacio contiguo, se permite que los programas puedan cargarse por partes en vez de hacerlo como un bloque monol´ ıtico.Memoria virtual La t´cnica de memoria virtual permite iniciar la ejecuci´n de un e oprograma s´lo con una parte de ´ste en la memoria, de manera que se o epueda solicitar m´s memoria en cuanto sea preciso. a La mayor ventaja que tiene este sistema es que permite trabajar conprogramas mayores que el total de la memoria f´ ısica disponible. Con loscomputadores modernos no es frecuente que tengamos programas m´s agrandes que el total de la memoria disponible, por lo cual la introducci´n o
  • 114 Cap´ ıtulo 4. Sistemas Operativosde memoria virtual puede parecer un lujo excesivo. Sin embargo, puedeocurrir que muchas partes de un programa no suelen ejecutarse salvo enmuy raras ocasiones, como es el c´digo para el manejo de las condiciones ode error, tablas internas o rutinas que tratan s´lo casos especiales que oafectan a muy pocos de los datos. Con la t´cnica de memoria virtual ebastar´ mantener en la memoria el n´cleo del programa, consigui´ndose, ıa u een cualquier caso, un mejor aprovechamiento de la memoria f´ ısica, quees cara. La idea de memoria virtual puede ser implantada en un sistema ope-rativo concreto mediante varias soluciones, siendo las m´s corrientes las ade paginado y las de segmentaci´n. oMemoria virtual paginada.- Las t´cnicas de paginaci´n consisten e oen la separaci´n de los conceptos de espacio de direcciones y posiciones ode memoria, o lo que es lo mismo, entre memoria l´gica y memoria of´ ısica. Para comprender mejor en qu´ consiste la t´cnica de paginado e econsideraremos el siguiente ejemplo: Sup´ngase un computador con un campo de direcciones de 16 bits oy una memoria principal de 8Kb, en palabras de un byte. En principiose pueden direccionar (espacio de direccionamiento) 216 = 65536 = 64Kpalabras de memoria (de un byte) pero s´lo existe espacio f´ o ısico para8·1024 = 8192 palabras, para direcciones de memoria desde 0 hasta 8191.Como la memoria l´gica es mucho mayor que la realmente disponible ohabr´ que dise˜ar un m´todo que soporte llamadas, por ejemplo, a la a n edirecci´n 8195 sin que se genere un desagradable mensaje de error. Una oposible soluci´n para evitar los errores cuando se producen llamadas a omemoria con direcciones superiores a las realmente disponibles, comola 8195, ser´ usar aritm´tica modular y considerarla simplemente como ıa ela direcci´n 3 = 8195 − 8192 (del mismo modo que sabemos que las 15 ohoras son las 3 de la tarde: 3 = 15 − 12). Esta alternativa implicar´ ala inclusi´n de una funci´n de conversi´n entre direcciones l´gicas y o o o odirecciones f´ ısicas. En un sistema con memoria virtual paginada se ejecutar´ los si- ıanguientes pasos cuando se recibe la llamada a la direcci´n 8195, que no o
  • ´4.2. Conceptos basicos de los sistemas operativos 115se corresponde con ninguna direcci´n f´ o ısica: 1. Se salva el contenido de la memoria principal en la memoria se- cundaria (generalmente el disco). 2. Se localizan las palabras correspondientes a los siguientes 8Kb de memoria direccionable, esto es, las palabras desde 8192 hasta 16383 en la memoria secundaria. 3. Se cargan estas palabras en memoria principal. 4. Se cambia la funci´n de conversi´n de direcciones de memoria. o o 5. La ejecuci´n contin´a con normalidad hasta que se vuelva a pro- o u ducir otra llamada a una direcci´n de memoria fuera del espacio o f´ ısico.Memoria virtual segmentada.- En este modelo de memoria virtualse refleja de forma clara la divisi´n entre programas y datos. La idea oconsiste en dividir el espacio de direcciones en segmentos, cada uno delos cuales corresponder´ a una rutina, un programa o un conjunto de adatos; en este caso se estar´ explotando el concepto de modularidad de alos programas construidos estructuradamente. La segmentaci´n es una t´cnica que organiza el espacio l´gico de me- o e omoria en segmentos (bloques independientes) de tama˜o variable, que nse colocan en la memoria f´ ısica mediante algoritmos de localizaci´n de oespacio libre. Puesto que cada segmento constituye un espacio de direc-ciones distinto, diferentes segmentos pueden crecer o encoger de maneraindependiente, sin que se afecten entre s´ por supuesto, aunque los seg- ı;mentos pueden crecer, un segmento se puede llenar y, en este caso, seproducir´ un mensaje de error. a La especificaci´n de una direcci´n en una memoria segmentada (tam- o obi´n llamada bidimensional) debe proporcionar dos componentes: un en´mero de segmento y la direcci´n dentro del segmento. Cada segmento u oforma una entidad l´gica que el programador puede tener en cuenta para oasignarle distintos tipos de protecci´n; por ejemplo, si un segmento con- otiene un procedimiento, entonces se especificar´ que es un segmento de a
  • 116 Cap´ ıtulo 4. Sistemas Operativosejecuci´n, prohibi´ndose la escritura; si contiene una pila se especificar´ o e acomo de lectura y escritura, pero no de ejecuci´n. Esta pr´ctica es de o agran utilidad en la detecci´n de errores de programaci´n. o o4.3 Clasificaci´n de los sistemas operativos o El criterio m´s simple de clasificaci´n es aqu´l que atiende al tama˜o a o e ny potencia del hardware que manejan, y divide los sistemas operativosentre los grandes sistemas (mainframes), los de computadores de gamamedia (minis) y en los microcomputadores o micros. Cuanto m´s po- atente, y por lo tanto m´s cara, sea la m´quina a la que va dirigido a ael sistema, mayor es el inter´s existente en optimizar los recursos, es- eforz´ndose el dise˜ador en conseguir una gesti´n de tareas din´mica y a n o aeficiente que permita gestionar simult´neamente m´ltiples programas sin a uintervenci´n del operador, con independencia de los dispositivos, etc. o Otro importante criterio de clasificaci´n es la divisi´n entre sistemas o opropietarios y sistemas abiertos, es decir, si el fabricante del hardwaredispone de control exclusivo sobre el mismo o bien se trata de un sistemaabierto a toda la comunidad industrial. En computadores peque˜os y medios es ya una norma la utilizaci´n n ode sistemas abiertos, como unix, frente a los sistemas propietarios, carac-terizados por el control que sobre ellos ejerce un fabricante de hardware,por ejemplo, el sistema utilizado por los computadores Apple-Macintosho algunos derivados de unix como aix o ultrix. La ventaja de un sistema abierto es la independencia de la m´quina asobre la que se instala, por lo que tanto los programas fuente comolas bases de datos o las transacciones, pueden ser transferidas de unhardware suministrado por un fabricante a otro distinto, independizandoal usuario de los proveedores. Las ventajas de un sistema propietario es haber sido dise˜ado para un nhardware espec´ıfico, y por lo tanto obtiene de ´l las mejores prestaciones eposibles. Las interfaces a las bases de datos, monitores de teleprocesoy otros productos del fabricante est´n exhaustivamente probados, por a
  • 4.4. Ejercicios 117lo que (al menos en teor´ existir´n menos problemas para utilizar tal ıa) asistema.4.4 Ejercicios 1. Haga un resumen de aquellos mandatos que se utilicen en la gesti´n de o archivos y directorios en un sistema operativo concreto (por ejemplo dos o unix). 2. Dado que las tareas de impresi´n consumen bastante tiempo, es frecuente o imprimir en un “segundo plano”, y al mismo tiempo realizar otras tareas, siendo ´sta una de las aplicaciones t´ e ıpicas de la multiprogramaci´n en o sistemas monousuario. Busque los mandatos necesarios para aplicar esta t´cnica en dos, y estudie la gesti´n de las colas de impresi´n. e o o 3. Acceda a un interfaz gr´fico de usuario (por ejemplo windows) y rela- a cione los mandatos del administrador de archivos con sus equivalentes en el dos, analizando las ventajas e inconvenientes de cada forma de operar. 4. Estudie el tama˜o m´ximo de programa que se puede cargar y ejecutar n a en la memoria en un computador bajo DOS utilizando el mandato MEM. 5. Diferencie entre los conceptos de disco virtual y de memoria virtual. (Cons´ltese el ap´ndice A.) u e 6. Estudie los mecanismos de protecci´n en un sistema multiusuario con- o creto, como unix. ¿Cu´les de ellos tienen sentido en un sistema monou- a suario y cu´les no? a 7. Estudie los comandos que permiten controlar la ejecuci´n de trabajos en o un sistema multitarea como unix.4.5 Comentarios bibliogr´ficos a En este cap´ıtulo no se ha hecho m´s que introducir algunos de los conceptos ab´sicos de los sistemas operativos, sus funciones y sus principales modos de afuncionamiento. Para un estudio m´s profundo, se pueden consultar [Lis86], a[Mil89], [PS91] y [Dei93]. En el ap´ndice se incluye una introducci´n pr´ctica y r´pida, aunque ne- e o a acesariamente incompleta, de dos de los sistemas operativos m´s conocidos y adifundidos en la actualidad. Aunque para un primer contacto con el dos bas-tar´ en general con esta introducci´n, los manuales del usuario y de referencia a o
  • 118 Cap´ ıtulo 4. Sistemas Operativosque se distribuyen al comprar un pc lo mantendr´n al d´ sobre las sucesivas a ıaactualizaciones del dos, proporcion´ndole una informaci´n mucho m´s com- a o apleta. Para profundizar m´s en este sistema, un libro muy detallado sobre el ados es [Jam90]. La bibliograf´ sobre unix es muy extensa, desde introducciones muy ge- ıanerales hasta libros sobre parcelas muy especializadas. Una buena referenciaque abarca casi todo el sistema unix la constituye [RRF91]. Por otra parte,en [KP87] se dispone de una breve presentaci´n del sistema, con el objetivo de ointroducir los requisitos necesarios para abordar una muy interesante secci´n ode desarrollo de aplicaciones.
  • Cap´ ıtulo 5Lenguajes de programaci´n o 5.1 Lenguajes de bajo y alto nivel . . . . . . . . . . . . . . . . . . . 120 5.2 Descripci´n de los lenguajes de programaci´n o o . . . . . . . . . . 131 5.3 Procesadores de lenguajes . . . . . . . . . . . . . . . . . . . . . 141 5.4 Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148 5.5 Comentarios bibliogr´ficos . . . . . . . . . . . a . . . . . . . . . . 149 Un lenguaje de programaci´n es un lenguaje artificial, dise˜ado para o nrepresentar expresiones e instrucciones de forma inteligible para las com-putadoras. Los lenguajes de programaci´n son, en gran medida, comparables oa los lenguajes naturales: sus s´ ımbolos b´sicos constituyen su alfabeto, ay con ellos se construye el vocabulario del lenguaje, cuyos elementosse llaman tokens. Estos tokens se combinan de acuerdo con las reglassint´cticas del lenguaje, formando expresiones y sentencias cuyo signifi- acado viene dado por la sem´ntica del lenguaje. a Los lenguajes de programaci´n son sin embargo considerablemente om´s simples que los naturales en su sintaxis y, especialmente, en su asem´ntica. a En este cap´ıtulo se introducen distintos aspectos relacionados conlos lenguajes de programaci´n. En primer lugar, hacemos una presen- otaci´n evolutiva, mostrando las aportaciones hechas por los lenguajes o
  • 120 Cap´ ´ ıtulo 5. Lenguajes de programacion direcci´n o contenido ... ... 0000 0000 0010 0010 0000 0000 1101 0000 0000 0011 0000 0000 0000 1100 0000 0000 0100 0101 0000 0000 1101 0000 0000 0101 1100 0000 0000 1010 0000 0000 0110 0000 0000 0000 1101 0000 0000 0111 0101 0000 0000 1100 0000 0000 1000 0001 0000 0000 1101 0000 0000 1001 1101 0000 0000 0011 0000 0000 1010 0011 0000 0000 1101 0000 0000 1011 1110 0000 0000 ???? 0000 0000 1100 0000 0000 0000 1010 ???? ???? 1101 ???? ???? ???? ???? ... ... Figura 5.1. Expresi´n de un programa en c´digo m´quina. o o aensambladores y los de alto nivel y muy alto nivel, fuertemente orien-tados al problema. La descripci´n de los lenguajes de programaci´n se o oefect´a, cada vez en mayor medida, a trav´s de procedimientos formales, u eevit´ndose toda ambig¨edad y facilitando el estudio de las propiedades a ude los programas, por lo que estudiamos algunos de esos procedimien-tos. Finalmente, presentamos los programas procesadores de lenguajes,su funci´n, sus tipos y los entornos de programaci´n, muy evolucionados, o oque facilitan hoy d´ las distintas fases de desarrollo de programas. ıa5.1 Lenguajes de bajo y alto nivel5.1.1 Lenguajes orientados a la m´quina a Hablando estrictamente, los unicos s´ ´ ımbolos que comprenden loscomputadores son dos: el cero y el uno. Combin´ndolos apropiada- amente, se forman las instrucciones, como se ha descrito en el cap´ ıtulo 3. La interpretaci´n de estas instrucciones est´ dirigida a componentes o af´ ısicos de la m´quina subyacente, tales como el registro acumulador o a
  • 5.1. Lenguajes de bajo y alto nivel 121 dir. contenido ... IN n CAR d m1 RES n COND m2 CAR n RES d ALM n GOTO m1 m2 OUT n END d 10 n ? ... Figura 5.2. Un programa en lenguaje ensambladorlas direcciones de los operandos. Por estas razones tan obvias, estosrudimentarios lenguajes se llaman lenguajes orientados a la m´quina o, am´s brevemente, lenguajes de m´quina. a a El programa de la figura 5.1 est´ escrito en el lenguaje m´quina a adefinido en el cap´ ıtulo 3. Resulta evidente que, aun siendo los lenguajes m´quina el medio de aexpresi´n natural para las computadoras, son ciertamente aparatosos opara el programador humano que deba redactarlos, leer o modificar losprogramas escritos en ellos. Presentan adem´s el inconveniente de no aser transportables, esto es, no ser comprendidos por m´quinas diferentes. aLos lenguajes evolucionados han surgido para superar estas deficiencias. El primer paso para hacer m´s humana la programaci´n consisti´ a o oen introducir el uso de identificadores nemot´cnicos para referir instruc- eciones y nombrar las direcciones de los operandos mediante s´ ımbolos enlugar de hacerlo mediante sus c´digos binarios. Nacen as´ los primeros o ılenguajes simb´licos. El programa de la figura 5.1 podr´ traducirse a o ıa
  • 122 Cap´ ´ ıtulo 5. Lenguajes de programacionun lenguaje simb´lico como se indica en la figura 5.2. o Aunque el paso dado es importante, los lenguajes simb´licos con- osisten s´lo en una representaci´n m´s inteligible de las instrucciones o o ade m´quina. El siguiente paso consisti´ en incorporar en los lengua- a ojes simb´licos macroinstrucciones, para representar secuencias de ins- otrucciones de utilizaci´n frecuente. Estos lenguajes se conocen como oensambladores. Enseguida se comprendi´ la necesidad de escribir programas que tra- odujeran textos escritos en ensamblador a textos escritos en lenguajem´quina. Estos programas traductores se llaman tambi´n ensambla- a edores.5.1.2 Lenguajes de alto nivel A diferencia de los lenguajes orientados a la m´quina, los lenguajes ade alto nivel se componen de “t´rminos” y “frases” relacionados con el eproblema en resoluci´n. As´ por ejemplo, una ecuaci´n de segundo grado o ı oax2 + bx + c = 0 se podr´ resolver en un lenguaje de alto nivel como se ıaindica en la figura 5.3. Por razones obvias, se dice que los lenguajes de alto nivel est´n orien- atados al problema. Esta ventaja es doble: por un lado, permiten alprogramador concentrar su atenci´n sobre el problema, ignorando los odetalles propios de la m´quina concreta que lo ha de resolver; por otra aparte, como el discurso de los programas de alto nivel es independiente dela m´quina, son altamente compatibles (transportables) entre m´quinas a adiferentes. En la figura 5.4 se clasifican los lenguajes de programaci´n, de m´s o aevolucionados a m´s cercanos a la m´quina. a a En los ultimos a˜os se ha desarrollado una generaci´n de lenguajes ´ n ode muy alto nivel, que incorporan diversos mecanismos para aumen-tar su capacidad expresiva en alg´n aspecto. En el apartado siguiente uintroducimos algunos de esos modelos.
  • 5.1. Lenguajes de bajo y alto nivel 123 ... readln (a, b, c); discrim := sqr(b) - 4 * a * c; if discrim >= 0 then begin writeln ((-b+sqrt(discrim))/(2*a)); writeln ((-b-sqrt(discrim))/(2*a)) end else begin real := -b/(2*a); imag := sqrt(-discr)/(2*a); writeln(real, ’+’, imag, ’i’); writeln(real, ’-’, imag, ’i’); end ... Figura 5.3. Fragmento de un programa en un lenguaje de alto nivel    declarativos        alto y muy alto nivel  lenguajes simb´licos o de alto nivel        ensambladores     bajo nivel  lenguajes binarios de m´quina a  Figura 5.4. Distintos tipos de lenguajes de programaci´n. o
  • 124 Cap´ ´ ıtulo 5. Lenguajes de programacion5.1.3 Paradigmas de programaci´n oProgramaci´n imperativa—programaci´n declarativa o o La forma tradicional de programar recibe el nombre de programaci´n oimperativa, ya que un programa no es m´s que una secuencia de ´rdenes a oo instrucciones que deb´ ser ejecutados por el computador. Este mo- ıandelo de computaci´n ha influido fuertemente en la naturaleza de los olenguajes de programaci´n; aunque la evoluci´n de ´stos ha permitido o o eesconder muchas caracter´ ısticas de bajo nivel, los lenguajes convencio-nales todav´ presentan un estilo de programaci´n basado en dotar al ıa ocomputador de procedimientos para resolver problemas, dici´ndole c´mo e ose resuelven. Este paradigma de programaci´n obliga al programador a otener siempre presentes los detalles particulares del computador que eje-cutar´ sus programas. a Algunos de los lenguajes imperativos m´s difundidos en la actualidad ason el COBOL, BASIC, FORTRAN, Pascal, Modula 2 y C. Una de las opciones para hacer m´s simple el trabajo de programar aconsiste en separar al programador del modelo computacional subya-cente. De este modo se podr´ concentrar en el desarrollo del programa acomo una especificaci´n clara y concisa de la respuesta a un problema. oAl elegir esta soluci´n se est´ optando por un estilo declarativo de pro- o agramaci´n, llamado as´ porque lo que se hace es “declarar” (especificar) o ıel problema que se quiere resolver en lugar de proporcionar la secuenciade acciones que el computador debe ejecutar para hallar la respuesta. En lugar de indicar c´mo operar, en programaci´n declarativa se o oindica qu´ resolver. Por lo tanto, los lenguajes declarativos est´n m´s e a acerca del enunciado que de la resoluci´n propiamente dicha. Por eso se oles considera lenguajes de muy alto nivel. Dentro del paradigma de programaci´n declarativa se han desarro- ollado dos enfoques: la programaci´n funcional y la programaci´n l´gica. o o o
  • 5.1. Lenguajes de bajo y alto nivel 125 ra´ ıces(a,b,c) = let discr ≡ sqr(b) - 4 * a * c in if discr ≥ 0 then ((-b+sqrt(discr))/(2*a),(-b-sqrt(discr))/(2*a)) else let (real, imag) ≡ (-b/(2*a), sqrt(-discr)/(2*a)) in ((real,‘+’,imag,‘i’),(real,‘-’,imag,‘i’)) Figura 5.5.Programaci´n funcional o La programaci´n en un lenguaje funcional consiste en construir fun- ociones que el computador debe evaluar. La tarea primordial del pro-gramador es la construcci´n de una funci´n que resuelva un problema o odado; esta funci´n puede depender de otras funciones subsidiarias y esta odependencia se expresa en una notaci´n que obedece los principios ma- otem´ticos elementales. El papel del computador no es otro que el de aevaluar las funciones e imprimir los resultados. Esta caracter´ıstica hapermitido que los lenguajes funcionales no dependan de ning´n modelo uparticular de arquitectura, en contraste con la mayor´ de los lenguajes ıaimperativos. La programaci´n funcional tiene sus ra´ o ıces en la l´gica y en las ma- otem´ticas. En los programas funcionales se hace uso de conceptos y anotaciones familiares a toda persona que tenga conocimientos elementa-les de matem´ticas; de hecho, la derivaci´n de programas funcionales a a opartir de su especificaci´n se suele realizar mediante razonamiento ecua- ocional (aplicando las ecuaciones que definen las funciones implicadas enel programa). Un programa funcional puede interpretarse, bien como un conjuntode definiciones (declaraciones) de propiedades o bien como un conjuntode reglas de computaci´n. La primera interpretaci´n la realiza el pro- o ogramador que est´ especificando (declarando) el problema, diciendo qu´ a ese busca en lugar de c´mo se encuentra; por el contrario, el computador o
  • 126 Cap´ ´ ıtulo 5. Lenguajes de programacionentiende el programa como un conjunto de reglas de reescritura que lepermitir´n, finalmente, proporcionar la soluci´n del problema. a o Los lenguajes funcionales tienen muchas caracter´ ısticas atractivas,entre las que se encuentran: • Los programas funcionales son bastante m´s cortos y legibles que a los imperativos. • Su fuerte base matem´tica hace m´s f´cil razonar sobre la co- a a a rrecci´n de los programas. o • El significado de una expresi´n es su valor, que no cambia durante o la ejecuci´n del programa. o Uno de los primeros lenguajes funcionales que se desarrollaron fueel LISP, aunque no se considera completamente funcional por tenertambi´n caracter´ e ısticas no funcionales. Otros ejemplos de lenguajes fun-cionales desarrollados en la actualidad son el Hope, ML y Miranda. Elejemplo de la figura 5.5 muestra, en el estilo de estos lenguajes, la so-luci´n de la ecuaci´n de segundo grado. o oProgramaci´n l´gica o o En programaci´n imperativa, un programa no es otra cosa que el ogui´n de las acciones que el computador debe seguir, y su ejecuci´n o oconsiste en obedecer esas ´rdenes. En programaci´n l´gica, un programa o o oconsiste en una serie de sentencias de la l´gica matem´tica que describen o aun mundo, y su ejecuci´n consiste en deducir alg´n objetivo propuesto. o u Las sentencias mencionadas pueden ser de dos clases: hechos, si-milares a los axiomas de la l´gica, o reglas de deducci´n, que definen o orelaciones entre objetos. Las siguientes sentencias por ejemplo establecen una parte del pedi-gree de un perro:
  • 5.1. Lenguajes de bajo y alto nivel 127 hij(tobi, laika) macho(tobi) hembra(laika) hij(tobi, pipo) macho(pipo) ...y podr´ leerse como sigue: “Tobi es hijo/a de Laika”, “Tobi es macho”, ıanetc. Establecen hechos ciertos sobre objetos concretos. Las reglas esta-blecen tambi´n verdades, aunque se refieren a objetos gen´ricos,1 por lo e eque tienen un car´cter m´s general: a a padre(P, H) <= hij(H, P) ∧ macho(P) madre(M, H) <= hij(H, P) ∧ hembra(M) Ahora, podr´ plantearse resolver el objetivo ıa hij(tobi, X)que se pregunta por los X tales que “Tobi es hijo de X” (esto es, suspadres), y que se verifica para X = laika X = pipo ´ofreciendo las dos soluciones. Esta es una caracter´ıstica propia de loslenguajes l´gicos: la posibilidad de dar muchas respuestas a un objetivo oplanteado. Tambi´n se puede plantear el objetivo e hij(X, pipo)y se obtendr´ la relaci´n de todos los hijos de este perro: ıa o X = tobi ... 1 Representamos los objetos concretos con palabras que empiezan en min´ scula y los ugen´ricos con palabras empezadas en may´scula. e u
  • 128 Cap´ ´ ıtulo 5. Lenguajes de programacioncon lo que se observa otra peculiaridad de los lenguajes l´gicos: los oargumentos de una relaci´n pueden representar datos o resultados de la omisma, indistintamente. O ambas cosas: el objetivo hij(H, PM)ofrecer´ como respuestas los pares siguientes: ıa H = tobi ; PM = laika H = tobi ; PM = pipo ... ; ... Otras reglas posibles son las siguientes: abuelo(A, N) <= padre(A, X) ∧ hij(N,X)que significa que “A es abuelo de N si A es padre de alg´n X y N es uhijo de ese X”. El par de reglas antepasado(A, N) <= hij(N,A) antepasado(A, N) <= hij(N,X) ∧ antepasado(A,X)representa la disyunci´n siguiente: “A es un antepasado de N si N es osu hijo (de A) o bien si N es hijo de alg´n X y A es un antepasado de uese X. Este modelo de programaci´n est´ fuertemente basado en la l´gica o a ode primer orden. El lenguaje de programaci´n l´gica por antonomasia o oes Prolog, del que se han desarrollado distintas versiones.Programaci´n orientada a los objetos o En la programaci´n imperativa, un programa parte de unos cuantos odatos iniciales, y evoluciona efectuando acciones que alteran los valoresde esos datos. Como se ve, datos e instrucciones est´n separados de aforma que, en principio, cualquier instrucci´n tiene acceso a cualquier oobjeto. En cambio, en el enfoque de la programaci´n orientada a los objetos o(POO),2 un programa es una descripci´n de los objetos que intervienen o 2 En ingl´s, OOP, Object Oriented Programming. e
  • 5.1. Lenguajes de bajo y alto nivel 129en ´l, como agentes interactuantes. Una descripci´n de objetos tiene dos e oaspectos: los valores de sus propiedades f´ ısicas, y las acciones (m´todos) eque describen su comportamiento, constituyendo una clase de objetos.Cada objeto es un miembro o instancia de su clase, y su actividad con-siste en seguir los m´todos definidos en la clase a la que pertenece. En eel transcurso de su actividad, los objetos interact´an entre s´ pero el u ı,unico modo de hacerlo es intercambiando mensajes.´ Dado que cada objeto puede desenvolverse por separado, puedenevolucionar en paralelo, por lo que este enfoque es un modelo id´neo opara la programaci´n concurrente. o En el paradigma de la POO un programa se puede entender comoun modelo f´ısico que simula el comportamiento de una parte (real oimaginaria) del mundo. Esta perspectiva difiere de la imperativa, enla que se hace mayor hincapi´ en las manipulaciones de estructuras de edatos o de modelos matem´ticos. a La programaci´n orientada a los objetos est´ m´s pr´xima a la F´ o a a o ısicaque a las Matem´ticas en el sentido de que, en lugar de describir una aparte del mundo mediante ecuaciones matem´ticas, lo que se hace es aconstruir literalmente un modelo f´ ısico. Uno de los primeros lengua-jes orientados a los objetos se llam´ ACTOR, porque este paradigma onos presenta los objetos como actores sobre un escenario, dispuestos ainterpretar su papel (sus m´todos). e ısticas de la programaci´n orien- Algunas de las principales caracter´ o ı:tada a objetos pueden resumirse as´ • Encapsulaci´n o Ya se ha dicho que las clases presentan dos aspectos: los valores que definen su estado, y las acciones, cuyo efecto puede recaer sobre el propio estado o emitir un mensaje a otros objetos. Estos dos aspectos se consideran locales, inaccesibles e inalterables por otros objetos y s´lo se modifican por un efecto del comporta- o miento del propio objeto, o debido a la interacci´n con otro como o consecuencia de alg´n mensaje recibido del mismo. Al unir datos u
  • 130 Cap´ ´ ıtulo 5. Lenguajes de programacion y acciones, la POO alcanza un nivel de abstracci´n superior al de o la programaci´n imperativa. o En un programa de simulaci´n de una guerra naval, podr´ ser ne- o ıa cesario definir la clase de las naves, caracterizadas en un momento dado por su posici´n (latitud y longitud), rumbo y velocidad que o llevan, estado (desde intacto hasta destruido), etc. Son adem´s a capaces de navegar, m´todo que altera su posici´n. e o • Herencia A partir de un determinado objeto, se pueden crear otros que he- reden sus datos y sus m´todos, o incluso m´s especializados, con- e a tando con nuevos datos y m´todos propios. Aparecen as´ verdade- e ı ras jerarqu´ de objetos, similares a las clasificaciones taxon´micas ıas o que se dan en las Ciencias Naturales. En el ejemplo anterior, los submarinos constituyen una especiali- zaci´n de las naves, incorporando como datos el n´mero de torpe- o u dos que poseen y su estado (sumergidos o a flote), y como m´todos e sumergirse o salir a flote y disparar. Otra especializaci´n posible es o la clase de los buques, que son casos particulares de naves caracteri- zadas adem´s por el n´mero de misiles y de cargas de profundidad a u que llevan y capaces de disparar, aunque no pueden sumergirse. • Polimorfismo Con frecuencia, objetos de clases distintas hacen uso de los mismos m´todos. En la programaci´n orientada a objetos es posible definir e o m´todos llamados polim´rficos, que pueden aplicarse sobre obje- e o tos de varias clases distintas. Las acciones concretas por ejecutar depender´n de la clase del objeto al que se apliquen. a Con las clases naves definidas en los apartados anteriores, es posible definir m´todos generales para dispararles, quiz´ deteriorando su e a estado hasta, incluso, la destrucci´n. o La metodolog´ de resoluci´n de problemas en programaci´n orien- ıa o otada a objetos puede resumirse en los siguientes pasos:
  • ´ ´5.2. Descripcion de los lenguajes de programacion 131 1. Identificar los objetos que intervienen en el problema. 2. Caracterizar los dos aspectos de cada objeto: sus propiedades y mensajes asociados. 3. Establecer el estado inicial del escenario, as´ como la secuencia de ı mensajes que abre el tel´n y hace evolucionar la funci´n teatral. o o Algunos ejemplos de lenguajes de programaci´n que soportan la pro- ogramaci´n orientada a los objetos son Smalltalk y C++. Otros lengua- ojes, est´n incorporando algunas de las caracter´ a ısticas de la programaci´n oorientada a los objetos: por ejemplo, las ultimas versiones de Turbo Pas- ´cal, de Borland ([Tur92]).5.2 Descripci´n de los lenguajes de o programaci´n o Como dijimos en la introducci´n de este tema, los s´ o ımbolos delvocabulario de un lenguaje se agrupan entre s´ formando estructuras ı,sint´cticas, que posteriormente son interpretadas por un traductor. En aeste apartado estudiamos c´mo se describen los dos aspectos, sintaxis y osem´ntica, de un lenguaje de programaci´n. a o Por ejemplo, dir´ ıamos que en castellano son v´lidas sint´cticamente a alas “frases” compuestas por “sujeto” y “predicado”; en cuanto al signi-ficado, se entiende que el sujeto es quien realiza la acci´n, mientras que oel predicado precisa la acci´n que se lleva a cabo. o En este caso especial´ ısimo, la descripci´n de cierta estructura del ocastellano se ha llevado a cabo en el propio idioma castellano. Por elcontrario, los lenguajes de programaci´n no suelen describirse mediante olenguajes de programaci´n, sino mediante los metalenguajes, llamados oas´ porque son lenguajes cuyo cometido es describir otros lenguajes. ı5.2.1 Sintaxis La sintaxis estudia la forma de combinar los tokens de un lenguajepara formar frases correctas. Se concreta en una serie de reglas que
  • 132 Cap´ ´ ıtulo 5. Lenguajes de programacionexpresan las estructuras sint´cticas v´lidas en el lenguaje. El recono- a acimiento de esas estructuras es necesario para dotarlas de significado yejecutar las acciones que representan. Ejemplos de esas reglas, dados en nuestro idioma y para ´l, son los esiguientes: • Un “sujeto” puede consistir en un “nombre propio” o un “art´ ıculo” seguido de un “nombre com´n”. u • Los nombres propios son “Ana”, “Ronda”, ..., “Andaluc´ ıa”. Para describir la sintaxis de un lenguaje se utiliza una secuencia des´ ımbolos terminales, que son los elementos v´lidos de dicho lenguaje. aLas aplicaci´n de las reglas (tambi´n llamadas producciones), permiten o esustituir un s´ ımbolo no terminal por una secuencia de s´ımbolos, termi-nales o no. Un programa se deriva as´ partiendo de un unico s´ ı ´ ımboloinicial , no terminal, que es el embri´n del que surgen las frases por la oaplicaci´n sucesiva de las reglas sint´cticas. o a Siguiendo el ejemplo anterior, ser´ s´ ıan ımbolos terminales las palabras“el”, “la”, ..., “Ana”, etc. Algunos s´ımbolos no terminales son “frase”,“art´ ıculo” y “nombre propio”. Entre ellos, “frase” es el s´ ımbolo inicial. Esta sucinta explicaci´n se comprender´ mejor examinando la no- o ataci´n BNF y los diagramas sint´cticos, que introducimos seguidamente. o aNotaci´n BNF o Una de las formas m´s extendidas para describir la sintaxis de los alenguajes de programaci´n es la notaci´n BNF (Backus-Naur Form), o outilizada por sus autores para el desarrollo del lenguaje Algol 60. Dadoque la notaci´n BNF es un lenguaje que nos permite describir la sintaxis ode otro lenguaje, pertenece al grupo de los metalenguajes. Para describir una producci´n en BNF hay que expresar la equiva- olencia de unos s´ımbolos a otros. A tal fin se sit´a a la izquierda un u ımbolo no terminal y a la derecha la combinaci´n de s´s´ o ımbolos (termi-nales o no) equivalente, enlazados mediante otros s´ ımbolos (llamados a
  • ´ ´5.2. Descripcion de los lenguajes de programacion 133veces metas´ ımbolos), que no pertenecen al lenguaje sino a BNF. Dichosmetas´ımbolos tienen el siguiente cometido: • “<” y “>” delimitan los s´ ımbolos no terminales, y de esta forma poderlos distinguir de los terminales. • El metas´ ımbolo “|” se utiliza para separar varias combinaciones posibles, entre las que debe elegirse. • El metas´ımbolo “::=” expresa la equivalencia dentro de las pro- ducciones, por lo tanto, separa el s´ ımbolo situado a su izquierda de una o m´s combinaciones de s´ a ımbolos y metas´ımbolos situados a su derecha (separadas mediante “|”), y expresa que el primero puede sustituirse por la combinaci´n de los segundos. o Por ejemplo, dadas las producciones: <trapito> ::= <prenda> <color> <prenda> ::= pantal´n | camisa | sombrero o <color> ::= gris | marr´n o<trapito> representa el s´ ımbolo inicial, <prenda> y <color> son losotros s´ ımbolos no terminales, y pantal´n, camisa, sombrero, gris y ne- ogro son los s´ ımbolos terminales. Las frases v´lidas generadas por esa agram´tica son: a pantal´n gris o pantal´n marr´n o o camisa gris camisa marr´n o sombrero gris sombrero marr´n oObservaciones • A veces resulta m´s c´modo distinguir los s´ a o ımbolos terminales y los no terminales escribiendo su inicial con min´scula y may´scula, u u respectivamente, evitando el uso de “<” y “>”. Por ejemplo, con la gram´tica a
  • 134 Cap´ ´ ıtulo 5. Lenguajes de programacion S´ ılaba ::= Cons Voc Cons ::= b | c | d | ... | z Voc ::= a|e|i|o|u resultan las siguientes s´ ılabas v´lidas: “ba”, “be”, “bi”, ..., “zi”, a “zo” y “zu”. • Como un s´ımbolo no terminal cualquiera (digamos el L por ejem- plo) puede aparecer en ambos lados de las producciones, I ::= aL L ::= bL|c sus sustituciones podr´ generar estructuras que lo contengan: ıan L → ...L ... De este modo, una gram´tica puede resultar recursiva, generando a un n´mero infinito de frases: u “ac”, “abc”, “abbc”, “abbbc”, . . . Hoy d´ todos los lenguajes de programaci´n de alto nivel tienen ıa, o gram´ticas recursivas. a • Por otra parte, la notaci´n BNF se puede ampliar (EBNF), usando o los metas´ ımbolos “[” y “]” para expresar una parte opcional y los metas´ımbolos “{” y “}” para abreviar la repetici´n de estructuras. o As´ por ejemplo, A[B]C expresa las frases “ABC” y “AC”, y {A} ı representa bien la frase vac´ o una de las siguientes: “A”, “AA”, ıa “AAA”, . . .Diagramas sint´cticos a Otra forma, tambi´n muy extendida, para expresar las reglas sint´c- e aticas de un lenguaje es mediante diagramas o grafos sint´cticos. La a
  • ´ ´5.2. Descripcion de los lenguajes de programacion 135sintaxis del lenguaje Pascal, por ejemplo, fue inicialmente expresada deesta forma. De acuerdo con esta representaci´n, los s´ o ımbolos terminales se repre-sentan dentro de c´ırculos o rect´ngulos con las esquinas redondeadas, y ael s´ ımbolo inicial y los s´ ımbolos no terminales dentro de cuadrados orect´ngulos. Los sucesivos s´ a ımbolos se unen entre s´ mediante flechas, ıque indican el orden y sentido de producci´n. o Veamos las principales representaciones:- S´ ımbolo inicial L $ L E & %- S´ ımbolo terminal Z 96 $ E Z o bien E Z & % 87- P 1 | P 2 | ... | P n    E P1 E      E P2 E   E E . . .    E Pn E   - P 1 P 2 ... P n # # # E P1 E P2 E ... E Pn E " ! " ! " !
  • 136 Cap´ ´ ıtulo 5. Lenguajes de programacion - {P} ..... E ........... ........... ..... E ... ... .. .. .. . .. . .. .. . . . ... ..... .........  ¨ ........ ..... .. .  P ... .... © La utilizaci´n de los diagramas sint´cticos facilita la construcci´n de o a ofrases correctas, pues es suficiente con seguir el sentido de las flechas e irinsertando los correspondientes s´ımbolos seg´n aparecen en el diagrama. u Rec´ ıprocamente, si al ir leyendo los s´ımbolos de una frase se sigueuno de los caminos contemplados en el diagrama sint´ctico, esa frase es acorrecta desde el punto de vista sint´ctico. a Tanto la notaci´n BNF como los diagramas sint´cticos son equiva- o alentes, si bien, en general ´stos ultimos son de m´s f´cil comprensi´n e ´ a a oy se aconsejan como punto de partida en la definici´n de lenguajes de oprogramaci´n. oEjemplo Un identificador en Pascal se expresa mediante una letraaislada o seguida por una secuencia de letras o n´meros o el car´cter de u asubrayado, “ ”. Ser´ identificadores v´lidos los siguientes: “x”, “y”, ıan a“z”, “altura”, “longitud”, “x1”, “y1”, “x max”, “y max” Su diagrama sint´ctico ser´ el siguiente: a ıa  ¨ ...... ....... . letra ©....... ........... .. .. ....  .. . . . . .. . . ..  ¨ .. . ... .. ... E letra E E ..... .......... ..... ........... ... . .... . ......  © . ... . .... ..... ... .. . . . . ..  ¨ .. .. . ... ... ıgito ..... . ........... ..... d´ ...........  ©En BNF puede expresarse as´ ı:
  • ´ ´5.2. Descripcion de los lenguajes de programacion 137 Identificador ::= Letra | Letra Letras o d´ıgitos Letras o d´ıgitos ::= Let o d´ | Let o d´ Letras o d´ ıg ıg ıgitos Let o d´ıg ::= Letra | D´ ıgito | Subr Letra ::= a | b | c | ... | z D´ıgito ::= 0 | 1 | ... | 9 Subr ::=5.2.2 Sem´ntica a En el apartado anterior se han estudiado m´todos para describir la esintaxis correcta de los lenguajes. La sem´ntica de un lenguaje trata adel significado asociado con los programas correctos en ´l, esto es, de su efuncionamiento. Es claro que lo m´s natural y r´pido para explicar un lenguaje es a aproceder informalmente, a trav´s de ejemplos o, m´s a´n, matizando e a uel exacto funcionamiento de cada construcci´n sint´ctica (declaraci´n, o a osentencia, etc.) No obstante, en los ultimos a˜os, ha surgido la nece- ´ nsidad de precisar la interpretaci´n asociada con cada estructura v´lida o a(sint´cticamente) en un lenguaje. a Se evitan as´ las ambig¨edades inherentes a las descripciones infor- ı umales de los lenguajes naturales y se consigue un entorno formal quefacilita el estudio de propiedades de los programas, tales como la co-rrecci´n o la eficiencia algor´ o ıtmica.Sem´ntica operacional a En este enfoque, el significado de una estructura sint´ctica viene adado por el modo con que la m´quina lleva a cabo su evaluaci´n o su a oejecuci´n. As´ la interpretaci´n de un programa consiste en reproducir o ı, ola historia de los cambios de estado que producen sus construcciones alinterpretarse. La sem´ntica operacional de un lenguaje se define dando la funci´n de a otransici´n (⇒) que asocia a una construcci´n sint´ctica, en cada estado, o o ael nuevo estado. Abreviadamente, escribimos K: E ⇒ E
  • 138 Cap´ ´ ıtulo 5. Lenguajes de programacionpara indicar que, al interpretar la construcci´n sint´ctica K en el estado o aE, se origina el estado E . Por ejemplo, si representamos el estado inicial de una m´quina me- adiante {. . . , A = 2, B = 5, . . .}, la ejecuci´n de o begin A := A + B; B := A − B; A := A − B endproduce la siguiente computaci´n: o    begin         ...    A := A + B;          A=2  B := A − B; :      B=5      A := A − B           ...  end     begin     ...          A=7   B := A − B; ⇒ :   A := A − B     B=5           end  ...   ...        A=7 ⇒ A := A − B :  B=2         ...   ...      A=5   ⇒ :  B=2        ... La sem´ntica operacional puede centrarse en los detalles m´s finos de a ala ejecuci´n (sem´ntica operacional estructural ) o ignorarlos (sem´ntica o a a
  • ´ ´5.2. Descripcion de los lenguajes de programacion 139natural ):    begin           ...   ...    A := A + B;              A=2   A=5  B := A − B; : ⇒       B=5     B=2     A := A − B               ... ... endSem´ntica denotacional a El significado de una construcci´n sint´ctica viene dado por el efecto o aque produce. En lugar de explicar c´mo se efect´ a cada construcci´n o u osint´ctica, s´lo interesa ahora qu´ significa. En t´rminos ling¨´ a o e e uısticos,puede considerarse la funci´n sem´ntica como una funci´n que asocia o a oun significado a cada significante. Los significantes son las posibles construcciones v´lidas del lenguaje, ay est´n definidos por las reglas sint´cticas, agrupados en distintas cate- a agor´ ıas: declaraciones, expresiones, instrucciones, etc. Los significantesson objetos matem´ticos, agrupados en distintas categor´ correspon- a ıas,dientes a las categor´ sint´cticas. ıas a Por ejemplo, las cantidades num´ricas ser´n el significado asociado e aa literales, variables, expresiones y funciones num´ricas; puesto que el eefecto de una instrucci´n de asignaci´n consiste en alterar el estado de la o omemoria, su sem´ntica es una funci´n entre estados de la memoria, etc. a o M´s en general, una instrucci´n puede alterar la memoria, la entrada a oy la salida, que podr´ consistir matem´ticamente en un vector y sendas ıan alistas. Si representamos esas tres entidades mediante M , I y O, el estadode la m´quina ser´ la terna E = M × I × O. a a Entonces, podemos precisar el significado de una instrucci´n as´ o ı: S[[Instr ]] : E → E. Concretamente, tenemos: • S[[x ← x0 ]](M, I, O) = (M , I, O)
  • 140 Cap´ ´ ıtulo 5. Lenguajes de programacion donde M es el estado de la memoria M , sustituyendo el valor asociado con el identificador x por x0 . • S[[write(x0 )]](M, I, O) = (M, I, O ) donde O es el estado de la salida O, a˜adiendo el valor x0 . n • S[[read(x)]](M, I, O) = (M , I , O) donde M se obtiene al sustituir x por x0 en M (siendo x0 el primer dato de la entrada), y adem´s I = (x0 , x1 , . . .) y I = (x1 , . . .). aComo se ve, el efecto asociado a cada construcci´n K se precisa mediante ouna funci´n, S[[K]], llamada su funci´n sem´ntica. o o a Siguiendo con el ejemplo anterior, podemos interpretar la instrucci´n ocompuesta mediante la composici´n de funciones, as´ o ı: S[[begin A := A + B; B := A − B; A := A − B end]] = S[[A := A + B]] ◦ S[[B := A − B]] ◦ S[[A := A − B]]. En el caso de las instrucciones, el dominio y codominio de esas fun-ciones sem´nticas se representan mediante el estado de la m´quina; para a ainterpretar las dem´s construcciones sint´cticas (tales como las decla- a araciones, los identificadores, los literales o las expresiones) se necesitaigualmente formalizar sus conjuntos dominio y codominio asociados. Losmodelos matem´ticos correspondientes a estas entidades se llaman de- anotaciones, de donde procede el nombre de este enfoque de la sem´ntica. aSem´ntica axiom´tica a a Este enfoque atiende a las “propiedades” que tiene la interpretaci´n ode cada sentencia I. Estas propiedades se expresan a trav´s de aserciones esobre el estado de la m´quina abstra´ antes y despu´s de esa sentencia. a ıda, eSe escribe {C0 } I {C1 }para expresar que, si se verifica C0 al comienzo de la instrucci´n I, ocuando ´sta termine3 se verificar´ C1 . La condici´n (C0 ) que describe el e a o 3 Obs´rvese que no se asegura que en las condiciones C0 la instrucci´n I termine, sino e os´lo que llegaremos a C1 “si ´sta termina” o e
  • 5.3. Procesadores de lenguajes 141estado previo a I se llama precondici´n, y la postcondici´n (C1 ) se refiere o oal estado tras I. En el ejemplo anterior, podemos escribir lo siguiente: {A = A0 ∧ B = B0 } begin A := A + B; B := A − B; A := A − B end {A = B0 ∧ B = A0 } Por lo tanto, la sem´ntica axiom´tica nos permite estudiar las pro- a apiedades que verifica un programa, gracias al empleo de la l´gica de opredicados.5.3 Procesadores de lenguajes Aunque, hablando estrictamente, el unico lenguaje que los computa- ´dores comprenden es el c´digo m´quina, pueden ejecutar tambi´n pro- o a egramas escritos en lenguajes de alto nivel, gracias a los traductores, pro-gramas que convierten programas escritos en lenguajes evolucionados enprogramas en c´digo m´quina: o a programa programa traductores : en un lenguaje → en lenguaje evolucionado de m´quina a En general, un traductor es un programa que convierte un programa,escrito en un lenguaje, en un programa equivalente, escrito en otro len-guaje. Llamamos programa fuente y programa objeto respectivamenteal programa inicial y al final. Estos t´rminos se aplican tambi´n a los e elenguajes respectivos. El proceso de traducci´n se lleva a cabo en varias fases; en cada ouna de ellas, pueden aflorar algunos de los errores, de diversa ´ ındole,cometidos por el programador. Por otra parte, una componente esencial
  • 142 Cap´ ´ ıtulo 5. Lenguajes de programacionque manejan estas etapas es la tabla de s´ ımbolos, estructura de datos quecontiene los identificadores que intervienen en el programa, junto con sudescripci´n. Las etapas mencionadas son b´sicamente las siguientes: o a • An´lisis l´xico.- En esta fase, el texto del programa se traduce en a e una lista de s´ ımbolos, llamados tokens, tales como: el s´ ımbolo de abrir par´ntesis, el s´ e ımbolo de asignaci´n, el identificador ‘pi’, el o n´mero entero −71, etc. u La escritura incorrecta de identificadores (por ejemplo, empezando por un d´ıgito en lugar de un car´cter) es uno de los errores l´xicos a e m´s frecuentes. a • An´lisis sint´ctico.- Su misi´n consiste en recorrer la lista de to- a a o kens, que le va proporcionando el analizador l´xico, y tratar de e agruparlos para reconocer “frases” o estructuras sint´cticas, tales a como declaraciones, sentencias o expresiones, siguiendo las reglas del lenguaje (v´ase 5.2.1). Por ejemplo en la figura 5.6: e El uso no equilibrado de par´ntesis o de otros delimitadores son e errores sint´cticos frecuentes. a • Acciones sem´nticas.- Un programa no es s´lo un reconocedor de a o estructuras gramaticales: debe llevar a cabo las acciones indicadas por el programa fuente. Estas acciones representan el significado del programa, y son tales como las siguientes: – Dar de alta un identificador en la tabla de s´ ımbolos y reservar espacio de memoria para su descripci´n. o – Consultar la tabla de s´ ımbolos y extraer la descripci´n aso- o ciada a un objeto. – Comprobar la compatibilidad de tipo entre los objetos que aparecen en el programa. Ejemplos de errores asociados con las acciones mencionadas son los siguientes: – Intentar definir un identificador ya definido.
  • 5.3. Procesadores de lenguajes 143 while n >= 10 do n := n − 10 ident. literal ident. literal expr. op. expr. expr. op. expr. . . .. .... .. ... ... .... ... . .... . .... .... ... ... . .. ........ .... ... ... ... ... ident. “:=” expr. ... . .... .. . .. .. .... .... .... .. .... ...... ..... .... ... .... ... ... ... .... ..... . .... .... . ... . .. ... ... ... ... ... ... .. inst. de asignaci´n o ... ... ..... “while”.... expr. “do” instrucci´n o .... .... .... .... .... .... .... .... .... .... .... .... .... .... ... .... .. .... .... . .... .... .... .... .... .... .... .... .... .... .... .... .. .... .... .... .... .... ...... .. .... .... .... .... .... .... .... .. ....... inst. while instrucci´n o Figura 5.6. Reconocimiento sint´ctico de una sentencia a – Tratar de usar un identificador desconocido. – Escribir una operaci´n imposible entre sus operandos, debido o a su tipo. Entre las acciones mencionadas, el aspecto de la verificaci´n de o tipos est´ muy desarrollado en los lenguajes evolucionados, ya que a as´ se evita un gran n´mero de errores durante el desarrollo de los ı u programas. Los lenguajes que llevan a cabo este tipo de compro- baciones se dicen fuertemente tipados; se dice que la verificaci´no de tipos es est´tica cuando se lleva a cabo antes de la evaluaci´n. a o • Generaci´n de c´digo.- Esta fase consiste en producir una repre- o o sentaci´n del programa coherente con la sintaxis y sem´ntica dadas o a en las etapas anteriores. Esta representaci´n puede consistir direc- o tamente en el c´digo m´quina, aunque por lo general se obtendr´ o a a previamente una versi´n en lenguaje ensamblador e incluso a ve- o ces, antes a´n, una representaci´n del programa (llamada c´digo u o o
  • 144 Cap´ ´ ıtulo 5. Lenguajes de programacion intermedio) apropiada para facilitar la traducci´n final. o • Optimizaci´n.- En esta etapa se efect´ an manipulaciones sobre el o u c´digo intermedio o sobre el c´digo objeto final, con el objeto de o o mejorar la calidad del c´digo generado. Por lo general, estas me- o joras consisten en disminuir el tama˜o del c´digo generado y en n o hacerlo m´s eficiente, sin alterar a cambio el efecto que deba pro- a ducir el programa.5.3.1 Compiladores e int´rpretes e Existen dos modos de traducci´n, comparables en todo a las dos mo- odalidades de traducci´n siguientes, entre las diferentes lenguas humanas: o • En el proceso de compilaci´n, una editorial parte del volumen ori- o ginal, escrito en el idioma fuente, y produce el volumen corres- pondiente, escrito en el lenguaje objeto. Los lectores en el idioma objeto interpretan el texto s´lo despu´s de estar completamente o e traducido. • La interpretaci´n es la traducci´n simult´nea, por ejemplo en una o o a convenci´n internacional: un int´rprete traduce fragmentos pe- o e que˜os de frases en el idioma fuente al idioma objeto, a medida que n las escucha. Los congresistas reciben e interpretan la traducci´n a o medida que ´sta se produce. eEntre ambas modalidades, existen traductores mixtos, que en una pri-mera fase desarrollan una semicompilaci´n, que incluye diversas com- oprobaciones l´xicas y sint´cticas, y produce una representaci´n del pro- e a ograma fuente en un c´digo intermedio; y en una fase posterior ejecutan ola interpretaci´n de ese c´digo intermedio. o o5.3.2 Entornos de programaci´n o Para crear un programa ejecutable en el computador hay que reali-zar una serie de etapas que, tradicionalmente, se ven´ efectuando con ıanprogramas independientes. Entre ellos se pueden citar los siguientes:
  • 5.3. Procesadores de lenguajes 145 • Editores Son programas que permiten el trabajo con textos, que sirven para crear los programas fuente. Debido a que, por lo general, trabajan en codificaci´n ASCII pura, carecen de algunas de las facilidades o de los procesadores de textos, tales como el uso de diferentes tipos de letra, o la gesti´n de t´ o ıtulos, subt´ ıtulos y p´rrafos. a • Compiladores Los compiladores, como se ha explicado en este mismo tema, son los programas que realizan la traducci´n del programa fuente ge- o nerando el programa objeto. Tradicionalmente, era frecuente que el proceso de compilaci´n se realizase en varias fases, y que el com- o pilador estuviera constituido por varios m´dulos, de forma que, si o no se presentan errores, las distintas fases de la compilaci´n se su- o cedan secuencialmente, al ser ejecutados los distintos m´dulos del o compilador mediante un fichero de proceso por lotes. • Enlazadores Los programas fuente suelen contener llamadas a funciones pre- definidas del lenguaje. En general, estas funciones se encuentran precompiladas en unas bibliotecas que se suministran junto con el traductor del lenguaje, que se pueden adquirir o desarrollar por separado. A veces el propio programa fuente se va compilando por partes, m´dulos, o unidades. El programa enlazador (linker) o se encarga de incorporar al programa objeto el c´digo correspon- o diente a las llamadas a funciones y de unir los distintos m´dulos o precompilados. • Depuradores Algunos de los errores que pueden aparecer en programaci´n son o muy dif´ıciles de detectar. La ejecuci´n del programa puede no o proporcionarnos la informaci´n suficiente para saber con seguridad o donde est´ el error. Los programas de depuraci´n (debuggers) per- a o miten hacer un seguimiento preciso de la ejecuci´n de las instruc- o ciones, y de esta forma aislar y detectar los errores. Para ello, los
  • 146 Cap´ ´ ıtulo 5. Lenguajes de programacion programas de depuraci´n toman el control de la ejecuci´n del pro- o o grama y, entre otras posibilidades, permiten: ejecutar el programa paso a paso; establecer puntos de detenci´n del programa; generar o una relaci´n de las instrucciones ejecutadas en un c´mputo deter- o o minado (traza del programa); conocer en cada momento los valores de las variables que nos interesen (tablas de seguimiento), etc. En la actualidad, es frecuente que algunos o todos estos programasque sol´ ser independientes se agrupen en un unico programa que pasa ıan ´a constituir un verdadero entorno de programaci´n. o Si la integraci´n entre los distintos componentes del entorno es alta, ose acelera notablemente el proceso de creaci´n de programas, y se puede odisponer de recursos y ayudas a la programaci´n que ser´ impensables o ıanen programas separados. Entre ellos podemos destacar: • Ayudas a la edici´n o Los entornos integrados presentan interesantes ayudas a la edici´n o permitiendo, por ejemplo, abrir varios programas a la vez y copiar bloques de uno a otro, buscar y sustituir grupos de caracteres, etc. • Sensibilidad al contexto Esta es una caracter´ ıstica de muchos editores de los entornos inte- grados, por la que, durante la escritura del programa el editor de- ımbolos tecta los distintos tipos de tokens del lenguaje (tales como s´ y palabras reservadas, constantes, etc.), resalt´ndolas mediante el a color, el tipo de letra o la intensidad, tanto en pantalla como en las copias impresas. Este es el caso del compilador de Turbo Pascal, a partir de la versi´n 7.0. o En algunos entornos integrados sencillos se realiza el an´lisis sint´c- a a tico al terminar cada construcci´n sint´ctica, rechaz´ndose las in- o a a correctas. Un ejemplo de la ayuda proporcionada consiste en el equilibrado de ciertos delimitadores, tales como los par´ntesis, em- e parej´ndose apropiadamente o detect´ndose el error. a a • Ayuda contextual
  • 5.3. Procesadores de lenguajes 147 Los entornos integrados disponen de un sistema de ayuda interac- tiva, con detecci´n del contexto, tanto para los mandatos del en- o torno como para las instrucciones del lenguaje. Al realizar una pe- tici´n de ayuda aparece en pantalla una explicaci´n precisamente o o del mandato que estamos utilizando. • Compilaci´n en la memoria principal o Para conseguir una mayor velocidad durante el proceso de depu- raci´n y puesta a punto de un programa, los entornos integrados o tienen la posibilidad de compilar los programas en la memoria principal. Una vez que el programa est´ terminado, puede compi- a larse en disco, con el simple cambio de una opci´n. Las distintas o fases de compilaci´n, enlazado y ejecuci´n se suceden sin que el o o usuario lo advierta, obteni´ndose un alto nivel de interacci´n y de e o productividad, al reducirse los tiempos de espera. • Depuraci´n integrada o Los entornos de programaci´n incluyen, por lo general, carac- o ter´ ısticas propias de los programas de depuraci´n avanzados como o las que hemos mencionado anteriormente. La gran ventaja es que dichas opciones est´n disponibles dentro del propio entorno, por a lo que no es necesario cambiar de programa. • Gesti´n de proyectos o Los entornos de programaci´n permiten la gesti´n de grandes pro- o o gramas, mediante la compilaci´n separada por m´dulos o unidades. o o Al compilar el programa principal, el gestor de programas, ordena la recompilaci´n solamente de los m´dulos que han sido modi- o o ficados desde la ultima compilaci´n. Esta compilaci´n separada ´ o o facilita la utilizaci´n de bibliotecas especializadas (para gr´ficos, o a c´lculo num´rico, etc.) y tambi´n el desarrollo de programas por a e e distintos grupos de trabajo.
  • 148 Cap´ ´ ıtulo 5. Lenguajes de programacion5.4 Ejercicios 1. Siguiendo el ejemplo de las figuras 5.3 y 5.5, describa en ambos estilos el c´lculo del area de un tri´ngulo, conociendo las medidas de los lados, a ´ a aplicando la f´rmula de Her´n: o o A= p(p − a)(p − b)(p − c) siendo p el semiper´ ımetro del tri´ngulo: a a+b+c p= . 2 2. Siguiendo el ejemplo de la genealog´ perruna, defina la relaci´n “herma- ıa o nos”, que se da entre dos perros distintos con los mismos padres. 3. Para escribir una lista de nombres en castellano, los sucesivos elementos de la lista se separan entre s´ con comas y el ultimo con la conjunci´n “y”. ı ´ o Tambi´n son v´lidas las listas con un unico nombre, que naturalmente e a ´ se escribe sin separador alguno. Por ejemplo, si consideramos los nombres Ana, Juan y Elisa, resultan v´lidas las siguientes listas: a Ana Juan y Elisa Elisa, Juan y Ana Ana, Ana, Ana, Ana y Ana Exprese esa sintaxis mediante BNF y diagramas sint´cticos. a 4. Para escribir un n´mero en cierta calculadora, se aplican las siguientes u reglas: (a) Un n´mero se expresa mediante una cantidad, que puede ser entera u o decimal, y que puede estar precedida o no por un signo “+” o “-”. (b) Una cantidad entera se expresa mediante uno o m´s d´ a ıgitos (c) Una cantidad decimal se puede expresar con uno o m´s d´ a ıgitos (parte entera), a continuaci´n una coma y despu´s uno o m´s d´ o e a ıgitos (parte decimal). Tambi´n es posible expresar cantidades decimales e sin parte entera o sin parte decimal, aunque debe aparecer al menos una de ellas, adem´s de la coma. a
  • ´5.5. Comentarios bibliograficos 149 Por ejemplo, son v´lidos los siguientes n´meros: a u -1 ,7 +6, ,368 +,8852 -123,456 (a) Expr´sela mediante diagramas de flujo e (b) Expr´sela mediante EBNF e (c) Genere unas cuantas sentencias v´lidas a 5. En el ejemplo de sem´ntica axiom´tica sobre el intercambio de valores a a entre variables num´ricas, precise las aserciones intermedias C1 y C2 : e begin {A = A0 ∧ B = B0 } A := A + B; {...C1 ...} B := A − B; {...C2 ...} A := A − B {A = B0 ∧ B = A0 } end 6. Estudie las facilidades que ofrece la ultima versi´n del entorno de pro- ´ o gramaci´n de Turbo Pascal ([Tur92]). Concretamente, relacione las que o posee para la depuraci´n de programas. o5.5 Comentarios bibliogr´ficos a El area de los lenguajes de computador es realmente amplia y profunda. Es ´in´til pues pretender rese˜ar siquiera una peque˜a parte de las referencias m´s u n n asignificativas sobre aspectos tan diversos como el estudio de las gram´ticas y ala teor´ de aut´matas, la sem´ntica, el desarrollo de traductores y entornos de ıa o aprogramaci´n y los diferentes paradigmas. Adem´s de in´til, ser´ vano pre- o a u ıatenderlo en un texto introductorio y general como es ´ste, incluso limit´ndonos e aal terreno de las aplicaciones por profesionales no inform´ticos. a Encontramos que el estudio de los distintos mecanismos expresivos comunesa muchos lenguajes es preferible desde la pr´ctica de alg´n lenguaje concreto a u(como Pascal, por ejemplo) o desde el desarrollo de algoritmos con un lenguaje
  • 150 Cap´ ´ ıtulo 5. Lenguajes de programacionde especificaciones. En el segundo tomo de este texto adoptamos el primerpunto de vista; en [GGSV93] se adopta el segundo. Para ampliar conocimientos sobre los entornos de programaci´n, tampoco oparece haber nada tan recomendable como empezar por uno concreto. Lasultimas versiones de Turbo Pascal, de Borland ([Tur92]) son ejemplares en´ambos aspectos, lo que explica su gran difusi´n, tanto en el ambiente educativo ocomo en el de las aplicaciones. Naturalmente, la formaci´n lograda as´ dotar´ al estudiante de un punto o ı ade vista imperativo. No es ´ste un grave inconveniente (ya que ´ste ha sido y e esigue siendo todav´ el paradigma de mayor difusi´n) siempre que su educaci´n ıa o ohaya transcurrido por la senda de la disciplina y los buenos h´bitos y m´todos. a e Sin embargo, no son pocas las aplicaciones actuales que adoptan otro en-foque distinto del imperativo. Aunque cada modelo introducido es de por s´ ıun mundo, damos algunas referencias de ellos. En [Tes84] se ofrece una vistapanor´mica sobre los lenguajes de programaci´n de la pasada d´cada. Un libro a o ecl´sico sobre programaci´n en lenguaje Pascal es [Gro86]. Sobre programaci´n a o ofuncional, [BW88] y [Bai90] son buenas introducciones, respectivamente en loslenguajes Miranda y Hope. En [GGSV93] se consideran ambos enfoques, elimperativo y el funcional. Una buena introducci´n al Prolog puede hallarse oen [CM87]. Para adentrarse en este bello lenguaje, debe leerse [SS86]. La fi-losof´ orientada a los objetos se extiende con rapidez, por lo que tambi´n las ıa ereferencias sobre el tema proliferan. [Pas86], [Tho89] y [Weg89] son art´ ıculosintroductorios a este modelo de programaci´n. o Finalmente, en [Wir86a] puede verse una explicaci´n ampliada de la no- otaci´n BNF y diagramas de flujo, as´ como una introducci´n a los problemas o ı oque plantea el an´lisis sint´ctico y la compilaci´n de programas en lenguajes a a ode alto nivel.
  • Cap´ ıtulo 6Bases de datos 6.1 Bases de datos y SGBD . . . . . . . . . . . . . . . . . . . . . . 151 6.2 El modelo entidad-relaci´n . . . . . . . o . . . . . . . . . . . . . . 155 6.3 Modelos de datos basados en registros . . . . . . . . . . . . . . 158 6.4 Lenguajes asociados a los SGBD . . . . . . . . . . . . . . . . . 160 6.5 Elementos de un SGBD . . . . . . . . . . . . . . . . . . . . . . 163 6.6 Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164 6.7 Comentarios bibliogr´ficos . . . . . . . a . . . . . . . . . . . . . . 1656.1 Bases de datos y SGBD6.1.1 Archivos y SGA En el cap´ ıtulo 2 se vio la posibilidad que tienen los computadoresde trabajar con datos elementales (tales como n´meros reales, enteros, ucaracteres y valores l´gicos) o de organizarlos en estructuras m´s com- o aplejas, tales como vectores o tablas. En el 4 se introdujeron los archivoscomo organizaci´n b´sica de la informaci´n, almacenada en un disposi- o a otivo f´ ısico; entonces no fue preciso distinguir en ellos ning´n tipo de or- uganizaci´n: pod´ considerarse como listas de elementos de caracteres. o ıan Ahora interesa considerar un archivo como una lista de datos delmismo tipo, cada dato de un archivo es un registro, y puede tener unaestructura compuesta por varios datos de distinto tipo, llamados cam-pos. Considerando el fichero de los alumnos de un colegio como s´ ımil
  • 152 Cap´ ıtulo 6. Bases de datosde archivo, cada ficha es un registro, y cada dato consignado en ellaconstituye un campo. La utilizaci´n de los archivos en inform´tica ha permitido desarrollar o aprogramas de aplicaci´n en areas muy diversas: el fichero de socios de o ´una biblioteca, el de su fondo bibliogr´fico, el de clientes de cualquier aempresa, el de proveedores, el de art´ ıculos de un inventario, etc. Losprogramas desarrollados para gestionar archivos se llaman en generalsistemas de gesti´n de archivos (SGA). Debido a su directa aplicabilidad, ola utilizaci´n de los archivos y los SGA han evolucionado much´ o ısimo enlos ultimos a˜os, originando las bases de datos y, correspondientemente, ´ nlos programas dedicados a su gesti´n.o6.1.2 Bases de datos y SGBD Hablando en t´rminos muy amplios, una base de datos consiste en euna colecci´n de datos, organizados de forma integrada en archivos, junto ocon un conjunto de programas dedicados a su gesti´n. Estos programas oforman los sistemas de gesti´n de bases de datos (SGBD). o Al igual que los SGA, los SGBD son programas destinados principal-mente a almacenar, manipular y recuperar la informaci´n, y desempe˜an o noperaciones que suelen tener lugar a diario: altas y bajas de clientes,apuntes en las cuentas bancarias, adquisici´n y p´rdida de libros o su o epr´stamo y devoluci´n, elaboraci´n de informes sobre los clientes o so- e o ocios morosos, sobre las calificaciones de los alumnos de un curso en unaasignatura y un largo etc´tera. e Sin embargo, en los SGA el programador deb´ controlar artesanal- ıamente m´ltiples detalles, tales como la descripci´n pormenorizada de los u odatos, su almacenamiento en los dispositivos, la concordancia de cadarutina que maneje esos datos con la descripci´n de los mismos, la con- ocordancia de los datos cuando se repitan en distintos archivos, etc. M´s aa´n, el programador es responsable de que cada modificaci´n de los datos u oo de los programas se vea reflejada en todos esos puntos. En cambio, los SGBD controlan autom´ticamente operaciones como ael almacenamiento de los datos en los dispositivos f´ ısicos, as´ como el ı
  • 6.1. Bases de datos y SGBD 153acceso de los programas a los mismos; adem´s, aseguran la consistencia ade los datos repetidos y de los programas que los manejan, etc. Gracias a estas ventajas, con los SGBD es posible concentrar m´s aatenci´n en el problema (a su nivel) y mucha menos en los detalles (de obajo nivel) de su implantaci´n f´ o ısica (o interna), lo que facilita enor-memente el dise˜ o, desarrollo y mantenimiento de las bases de datos y npermite, por lo tanto, afrontar otras de gran envergadura.Conclusi´n o En resumen, los SGA consisten en agregados de programas y archi-vos, a˜adidos por el programador para cubrir ad hoc necesidades nuevas. nEn cambio, los SGBD son sistemas “integrados” de programas y archi-vos, dise˜ados con el prop´sito espec´ n o ıfico de desarrollar y gestionar basesde datos, como indica su nombre, de acuerdo con un plan general. Por ello, la funcionalidad de los SGBD es superior a la de los SGA.M´s concretamente, se pueden identificar las siguientes diferencias entre aambos tipos de sistemas: • En general, los SGA consisten en aglomerados de programas y ar- chivos r´ ıgidos, puesto que se han agregado sucesivamente para re- solver s´lo operaciones muy concretas. Por el contrario, los SGBD o se caracterizan por una gran flexibilidad, permitiendo la reestruc- turaci´n de la informaci´n gestionada, la incorporaci´n de nuevas o o o aplicaciones, o la modificaci´n de las existentes manteniendo la o organizaci´n global. o • La informaci´n de los SGA presenta frecuentemente redundancias o innecesarias. La repetici´n de los datos en los diversos archivos o es ineficiente: adem´s de hacer un mal aprovechamiento de la a memoria, aumenta y dificulta a la vez las operaciones de consulta y mantenimiento de esa informaci´n. La redundancia de los datos o lleva aparejado adem´s el riesgo de que esos datos repetidos no a concuerden (inconsistencia), lo que se supera en los SGBD gracias a su alto grado de integraci´n. o
  • 154 Cap´ ıtulo 6. Bases de datos • Por lo com´n, los SGA est´n implantados en sistemas operativos u a monousuario, por lo que carecen de mecanismos para atender a diferentes personas desde diferentes puntos. En cambio, los SGBD est´n dise˜ados muchas veces para funcionar en sistemas multiu- a n suario, pudiendo atender consultas y actualizaciones de los datos que se solicitan al mismo tiempo, y est´n dotados con mecanis- a mos para garantizar la seguridad y confidencialidad de los datos en sistemas multiusuario. • Los SGA carecen en general de protecci´n frente a fallos del sis- o tema. En cambio, los SGBD disponen de los mecanismos necesa- rios para recuperar la informaci´n en caso de necesidad. o Por consiguiente, los SGBD aventajan a los SGA en muchos aspec-tos. Aunque se ha se˜alado el inconveniente de que, al ser sistemas m´s n acomplejos y potentes, tienen mayores requerimientos de hardware y soft-ware, este problema se est´ atenuando con el aumento de potencia que alos computadores personales est´n experimentando hoy en d´ y con el a ıaabaratamiento del software. A pesar de las ventajas que suponen las bases de datos, debe ad-vertirse que el buen dise˜o de una base de datos no es una cualidad nintr´ ınseca de los SGBD, as´ como tampoco son propios de los SGA los ıdefectos de un mal dise˜o o desarrollo. Una base de datos desarrollada ncon un SGA puede resultar segura, funcionar en un entorno multiusua-rio y estar exenta de redundancias (en la informaci´n) aunque, eso s´ o ı,debe ser el desarrollador quien se preocupe de mantener esas cualida-des, mientras que un SGBD asume algunas de esas responsabilidades yfacilita muchas otras.6.1.3 Niveles de una base de datos La complejidad de una base de datos puede superarse dotando alsistema de una organizaci´n l´gica que facilite su manejo. Seg´n las o o unormas del ANSI/SPARC1 ([Stu75]), esta organizaci´n debe constar de o 1 American National Standard Institute.
  • ´6.2. El modelo entidad-relacion 155los tres niveles siguientes, de m´s pr´ximo al problema a m´s cercano a a o ala m´quina: a • Nivel interno o f´ısico, formado por los detalles de la organizaci´n o f´ ısica de la base de datos, tales como la representaci´n escogida de o los datos a bajo nivel y el almacenamiento real de los datos en los discos u otros dispositivos f´ısicos. • Nivel conceptual o l´gico donde se describe, a alto nivel, la infor- o maci´n de la base de datos, ignorando los detalles de su almace- o namiento. • Nivel externo o de visi´n, que comprende las visiones particulares o que tienen de la base de datos los distintos usuarios, ya sean usua- rios finales o programadores, con frecuencia en distintos lenguajes. Estos ultimos ven la descripci´n de la informaci´n en sus lenguajes ´ o o respectivos.6.2 El modelo entidad-relaci´n o Un modelo de datos es un enfoque adoptado para formalizar la in-formaci´n del mundo real que ata˜e a una base de datos. En el nivel o nconceptual y l´gico, existen dos grupos de modelos: los basados en ob- ojetos, y los basados en registros. El modelo entidad-relaci´n es seguramente el m´s ampliamente acep- o atado entre los primeros. En ´l se concibe la realidad como un conjunto de eobjetos (llamados entidades y caracterizadas por atributos) y relacionesentre los mismos. En los ejemplos mencionados, constituye una entidadcada cliente concreto, cada cuenta bancaria, cada socio de la biblioteca,cada uno de sus libros, etc. Resulta natural agrupar las entidades en gru-pos homog´neos (conjuntos de entidades): en el conjunto de entidades e“libros”, por ejemplo, tendr´ cabida todos los libros de la biblioteca. ıanConsiderando ahora este conjunto de entidades, podemos identificar enellas los atributos siguientes: t´ ıtulo, autor, editorial, signatura, n´mero ude registro, etc.
  • 156 Cap´ ıtulo 6. Bases de datos Las asociaciones entre varios conjuntos de entidades pueden esta-blecerse mediante relaciones. Por ejemplo, se puede considerar una re-laci´n entre los conjuntos de entidades “socios”-“libros” para expresar olos “pr´stamos”. Tambi´n es posible caracterizar las relaciones con atri- e ebutos (como la “fecha” de devoluci´n para un pr´stamo). o e Las relaciones entre entidades pueden ser de varios tipos: • Una relaci´n entre dos entidades es de uno a uno (abreviadamente, o 1:1) si existe una correspondencia biun´ ıvoca entre ellas. Por ejem- plo, cada autom´vil tiene una unica matr´ o ´ ıcula y viceversa. • La relaci´n “socios”-“libros” mencionada en el p´rrafo anterior es o a de uno a muchos (1:m): un socio puede tener prestados desde ninguno hasta muchos libros al mismo tiempo, pero cada libro tiene, a lo sumo, un unico socio que lo ha pedido. ´ • La relaci´n entre “profesores”-“asignaturas” es de muchos a mu- o chos (m:m), ya que un profesor puede impartir varias asignaturas, e igualmente una asignatura puede ser impartida por varios pro- fesores. En este tipo de relaciones no se imponen restricciones sobre el n´mero de elementos por relacionar de cada conjunto de u entidades. Con estos conceptos, es posible representar gr´ficamente la estruc- atura de una base de datos del siguiente modo: • Cada conjunto de entidades se expresa mediante un rect´ngulo. a • Los atributos que caracterizan un conjunto de entidades se repre- sentan con elipses asociadas al rect´ngulo correspondiente. a • Las relaciones se representan mediante rombos, unidos con l´ ıneas a los conjuntos de entidades asociados. En los casos de las relaciones 1:1 y 1:m, el conjunto de entidades dado por el 1 se se˜ala desde n la relaci´n con una flecha: o – Relaci´n m:m o
  • ´6.2. El modelo entidad-relacion 157 ¨rr ¨¨stamos pr´ r e r rr¨ ¨ libros socios ¨   i „  f l     „ i  f l l      i „   f  t´ ıtulo i „ f n0 .socio  autor   „  nombre  f      registroi    i editor i    domicilio   i  c  signatura fecha    Figura 6.1. Representaci´n gr´fica de una relaci´n o a o         – Relaci´n 1:m o          – Relaci´n 1:1 o      E     Por ejemplo, la relaci´n “pr´stamos” puede representarse como mues- o etra la figura 6.1.
  • 158 Cap´ ıtulo 6. Bases de datos6.3 Modelos de bases de datos basados en registros Tradicionalmente, se han considerado diferentes enfoques a la horade organizar una base de datos. Cada uno adoptaba una concepci´n odistinta de la realidad, dependiendo del tipo de estructura de datos m´s aadecuado para construir un modelo del problema planteado. En el modelo jer´rquico subyace una estructura de datos arbores- acente. Ejemplos de esta estructura son la genealog´ de los toros de lidia ıay la organizaci´n de directorios de un disco. Esta orientaci´n se suele o ousar cuando el problema abarca s´lo relaciones 1:m. o El enfoque en red adopta como modelo de datos el concepto ma-tem´tico de grafo: un conjunto de puntos llamados nodos, que se conec- atan unos con otros mediante l´ıneas llamadas arcos. El ejemplo arquetipode grafo es una red de carreteras: los arcos son los diferentes tramos, ylos nodos las intersecciones. En este tipo de relaciones se pueden repre-sentar tambi´n las relaciones m:m, aunque no de un modo muy natural. e Al igual que en el modelo entidad-relaci´n, en el enfoque de datos en ored la base de datos consiste en un conjunto de entidades (que son losnodos de un grafo), caracterizadas por atributos y relacionadas medianterelaciones (que son los arcos). En el modelo en red, a las relaciones seles llama ligaduras, y son siempre binarias, si bien es posible construirrelaciones de cualquier orden combinando dichas relaciones binarias. En la actualidad, los modelos jer´rquico y en red se consideran am- apliamente superados por el modelo relacional, que est´ muy desarrollado ay extensamente difundido, funcionando en equipos grandes y peque˜os.nDebido a su importancia, le dedicamos el siguiente apartado.6.3.1 El modelo relacional El enfoque relacional considera una base de datos como un conjuntode tablas,2 que representan entidades o relaciones. Dados n conjuntos de 2 Llamadas relaciones, de donde viene el nombre de este modelo.
  • 6.3. Modelos de datos basados en registros 159entidades E1 , ..., En , una tabla es un conjunto de n-tuplas de la forma(e1 , ..., en ), donde ei ∈ Ei ; en otras palabras, una relaci´n es un subcon- ojunto del producto cartesiano E1 × ... × En . Visto un conjunto de entidades como una tabla, cada fila representauna entidad concreta, y cada columna un atributo: libros Autor T´ ıtulo Editor Signatura Registro ... ... ... ... ... Si la tabla representa una relaci´n, cada columna es una de las en- otidades vinculadas por ella. En realidad, no es preciso consignar cadaentidad completa, sino que basta con incluir los atributos necesarios paradeterminarla un´ ıvocamente. Este conjunto de atributos se llama clavede la entidad: pr´stamos e Registro N´m. socio u Fecha ... ... ... Pongamos un ejemplo. Una base de datos correspondiente a la in-formaci´n de cierta carrera universitaria3 podr´ constar, entre otras, de o ıados relaciones, que almacenan respectivamente los datos personales delos alumnos y las asignaturas en que se han matriculado en un curso: Direcciones (nombreAl, direcci´n, tel´fono) o e ıculas (nombreAs, nombreAl, curso, n´mCr´ditos, nota) Matr´ u e El atributo nombreAl es una clave para la primera relaci´n. Una oclave de la segunda la forman los atributos nombreAs y nombreAl. En realidad, no se han establecido las relaciones concretas entre lasentidades (para lo cual se requerir´ rellenar las tablas con los datos re- ıaales) sino s´lo el encabezamiento de cada tabla asociada al que llamamos oesquema de la relaci´n. o 3 Se supondr´ para simplificar que los nombres de los alumnos no pueden repetirse, ay que tambi´n las asignaturas tienen nombres distintos. e
  • 160 Cap´ ıtulo 6. Bases de datos Las relaciones establecidas para describir nuestro modelo no son lasunicas posibles. De hecho, el planteamiento puede mejorarse f´cilmente,´ asustituyendo la ultima relaci´n por las dos siguientes: ´ o Asignaturas (nombreAs, curso, n´mCr´ditos) u e Matr´ ıculas’ (nombreAl, nombreAs, nota)en las que ya no se repiten el curso y n´mero de cr´ditos de cada asig- u enatura por cada alumno que se matricule en ella, mejorando el aprove-chamiento de la memoria y la gesti´n posterior de ella en consultas y oactualizaciones de la informaci´n. o Este proceso (llamado normalizaci´n) no siempre resulta tan senci- ollo. Sin embargo, mediante su empleo se llega a describir una base dedatos gracias a relaciones naturales y sin redundancias, con las ventajasmencionadas.6.4 Lenguajes asociados a los SGBD Visto el SGBD como un intermediario, deber´ proporcionar al admi- anistrador un medio con que definir la base de datos durante su creaci´n o orealizar posteriores reestructuraciones, de acuerdo con los nuevos reque-rimientos, facilit´ndole el establecimiento de relaciones entre los datos. aFinalmente, deber´ poner al alcance del usuario toda la informaci´n para a oque ´ste la manipule de un modo flexible y eficiente. e Los SGBD proporcionan lenguajes de alto nivel para que los usuariossoliciten sus operaciones, ya que la propia base de datos oculta muchosdetalles de la representaci´n y el almacenamiento de las relaciones, y odichos lenguajes pueden obviar esos detalles. Los lenguajes de los SGBD son en general de dos tipos: • Lenguajes de definici´n de datos o Estos lenguajes recogen la descripci´n de los datos tal como la o concibe el usuario, esto es, la definici´n de los esquemas de la base o
  • 6.4. Lenguajes asociados a los SGBD 161 de datos. Como interpretaci´n de esas definiciones, producen el o diccionario de datos (v´ase 6.5) as´ como la forma real, a bajo e ı nivel, en que los datos se organizan en los distintos dispositivos f´ ısicos, discos normalmente. • Lenguajes de manipulaci´n de datos o Estos lenguajes permiten al usuario realizar operaciones tales como a˜adir informaci´n nueva en la base de datos, suprimir, modificar n o o consultar la existente. Estas operaciones tienen una gran potencia, ya que los lenguajes de consulta modernos disponen de mecanismos para definir las operaciones m´s frecuentes. Por otra parte, tienen tambi´n una a e gran flexibilidad, estando dotados de medios para que el usuario pueda desarrollar programas de acuerdo con sus necesidades, ya sea ofreciendo lenguajes de programaci´n propios o bien enlazando o con lenguajes de programaci´n de alto nivel. o6.4.1 Lenguajes relacionales Se han desarrollado dos enfoques de los lenguajes relacionales: ela´lgebra relacional y el c´lculo relacional, aunque la mayor´ de los len- a ıaguajes de consulta comercializados actualmente incluyen caracter´ısticasde ambos. Entre ellos, es obligado citar el SQL (Structured Query Lan-guage), que funciona tanto en bases de datos desarrolladas para mi-crocomputadores, como en otras para minis y mainframes, tales comoInformix-SQL, Ingres y Oracle. A continuaci´n presentamos brevemente olos enfoques mencionados en el estilo de SQL. • En los lenguajes basados en el ´lgebra relacional las operaciones a se realizan con tablas y su resultado es tambi´n una tabla. Las e principales son las siguientes: – La operaci´n de selecci´n extrae de una relaci´n las tuplas o o o que verifican cierto predicado. Por ejemplo: ıculas’, nota ≥ 5) selecci´n (Matr´ o
  • 162 Cap´ ıtulo 6. Bases de datos consiste en la relaci´n de las papeletas de aprobado; en cada o una se consigna el nombre de un alumno, una asignatura y la nota obtenida. El esquema de la relaci´n obtenida es o <nombreAl, nombreAs, nota, convocatoria> que coincide con el de la relaci´n Matr´ o ıculas’. – La proyecci´n extrae de una relaci´n las columnas que se indi- o o quen, eliminando las filas repetidas en la relaci´n resultante. o Por ejemplo: proyecci´n (Matr´ o ıculas, <nombreAs, curso, n´mCr´ditos>) u e coincide con la relaci´n de Asignaturas. o – La concatenaci´n de dos relaciones que tengan alguna co- o lumna en com´n consiste en otra tabla, que pivota en la(s) u columna(s) com´n(es). Por ejemplo, la relaci´n Matr´ u o ıculas podr´ obtenerse as´ ıa ı: concatenaci´n (Matr´ o ıculas’, nombreAs) Considerando que una tabla es un conjunto de tuplas, el algebra ´ relacional tambi´n incluye las operaciones conocidas de uni´n, in- e o tersecci´n y diferencia (de conjuntos de tuplas), entre relaciones o con la misma estructura. • Los lenguajes basados en el c´lculo relacional son declarativos: las a consultas se expresan especificando la informaci´n deseada me- o diante el c´lculo de predicados de primer orden. Por ejemplo, la a definici´n siguiente o {< n, d > | ∃ t ((< n, d, t >∈ Direcciones) ∧ ∀ a, c((< n, a, c >∈ Matr´ ıculas’) ⇒ (c ≥ 9))} facilitar´ la relaci´n de aquellos alumnos que han obtenido un so- ıa o bresaliente en todas las asignaturas de las que se han matriculado, junto con su direcci´n. o
  • 6.5. Elementos de un SGBD 1636.5 Elementos de un SGBD Siguiendo la presentaci´n por capas que se hizo de los sistemas ope- orativos, en una base de datos pueden distinguirse tres niveles: • El m´s bajo se encuentra directamente sobre el sistema operativo, a y consiste en los archivos de datos, los de ´ ındices y el diccionario de datos: – Los archivos de ´ındices tienen id´ntico cometido al del ´ e ındice de un libro, permitiendo localizar r´pidamente un registro a a trav´s de su direcci´n (p´gina) en un archivo de datos (libro). e o a – El diccionario de datos es un archivo que contiene la des- cripci´n de la estructura de los archivos de datos a los tres o niveles; esto es, de los distintos esquemas de la base de datos. • El nivel intermedio es el del sistema de gesti´n propiamente dicho, o y comprende los siguientes m´dulos: o – Un programa compilador para el lenguaje de definici´n de o datos, que construye (o modifica) el diccionario de datos. – Un int´rprete del lenguaje de consultas: cuando las instruc- e ciones del lenguaje de manipulaci´n de datos se insertan entre o sentencias de otros lenguajes de alto nivel, el precompilador traduce esas instrucciones al lenguaje de alto nivel. – Un programa gestor de la base de datos, que es el intermedia- rio entre los archivos, que contienen informaci´n a bajo nivel o estructurada conforme al diccionario de datos, y los progra- mas que acceden a ellos a un nivel m´s alto. a – Es corriente que los SGBD faciliten rutinas de reorganizaci´n o y generaci´n de ´ o ındices de los registros de la base de datos siguiendo ciertos criterios. – Frecuentemente se incluye un optimizador que, bas´ndose en a las definiciones de las tablas y los ´ ındices, crea el camino m´s a eficiente de acceso a los datos. Este camino se construye en un paso de la compilaci´n de un programa de alto nivel o en o
  • 164 Cap´ ıtulo 6. Bases de datos el momento de la ejecuci´n. Este m´dulo permite al usuario o o desentenderse de los detalles de nivel f´ ısico. – Muchos SGBD ofrecen tambi´n diversas rutinas de generaci´n e o de programas, tales como formatos de pantalla, generaci´n de o etiquetas, listados o informes a medida. – Otro aspecto de gran desarrollo en la actualidad son las lla- madas herramientas CASE4 , cuyo objetivo es facilitar el des- arrollo y mantenimiento de programas de cierta envergadura. • En el nivel m´s alto se encuentran el administrador y los usuarios a de la misma: – El administrador de la base de datos es la persona que redefine el esquema de la base de datos en las sucesivas modificaciones. Adem´s, concede o deniega a los distintos usuarios el acceso a a toda la base de datos o a parte de ella. – Los usuarios pueden tener diferentes niveles de especializa- ci´n, con diferentes grados de acceso a la base de datos. o Si tomamos como ejemplo la base de datos de un banco, el ni- vel menos especializado lo representa un cliente, capaz de con- sultar los datos de su cuenta o modificarlos como consecuen- cia de una transacci´n efectuada en un cajero autom´tico. o a En un nivel intermedio se hallar´ los empleados, autoriza- ıan dos a realizar consultas y movimientos m´s complejos. Los a programadores de aplicaciones se hallar´ en el nivel m´s ıan a especializado.6.6 Ejercicios 1. Los campos de un registro de un archivo pueden definirse mediante su tama˜o (m´ximo), es decir, su n´mero de caracteres o de d´ n a u ıgitos ente- ros y decimales. En este supuesto, fije el tama˜o que tienen los campos n correspondientes a los siguientes datos: nombre, apellidos, domicilio, po- blaci´n, provincia, c´digo postal y tel´fono. o o e 4 Computer Aided Software Engineering: ingenier´ de la programaci´n asistida por ıa ocomputador.
  • ´6.7. Comentarios bibliograficos 165 2. Se desea gestionar una videoteca mediante una base de datos, mante- niendo datos sobre los clientes y las cintas. Se considera la posibilidad de consultar la base de datos para conocer en un momento dado las existencias por temas, autores y actores. • Describa los niveles de visi´n y conceptual seg´n las normas del o u ANSI/SPARC. • Identifique unos atributos apropiados para caracterizar las entida- des “clientes” y “cintas”. • Identifique las relaciones 1:1, 1:m y m:m que existan. • Construya un diagrama E-R. • Construya el esquema de relaci´n correspondiente. o 3. Encuentre un sistema de gesti´n de bases de datos e identifique sus ca- o racter´ ısticas, valorando en qu´ medida alcanza los objetivos propuestos e por los SGBD, cu´les son los elementos que posee y sus limitaciones. a 4. En la base de datos referida a una carrera universitaria utilizada como ejemplo del modelo relacional se define la siguiente relaci´n o Notas ≡ (nombreAl, curso, grupo, nombreP, nombreAs, feb, mayo, final) de cada alumno, en cada asignatura, con sus calificaciones de febrero, mayo y final. Se ha aprovechado la tabla para incluir el nombre del profesor que imparte la asignatura en ese grupo. • Mejore el planteamiento para evitar que se repita el nombre del profesor cada vez que aparezca un alumno suyo. • Evite asimismo la repetici´n del curso y grupo de cada alumno cada o vez que aparece una asignatura. 5. Actuando como administrador de la base de datos del ejercicio anterior, establezca a qu´ informaci´n pueden acceder: un alumno, un profesor, el e o personal de administraci´n, el jefe de estudios y el director del centro. o6.7 Comentarios bibliogr´ficos a Las bases de datos constituyen, ya se ha dicho, un area de directa aplicaci´n ´ oen muy diversos campos del mundo empresarial. Pero tampoco puede negarse
  • 166 Cap´ ıtulo 6. Bases de datosla contribuci´n de los SGA, que tambi´n han evolucionado considerablemente, o eofreciendo un elevado nivel, muy cercano a los problemas reales, proporcionandoun ambiente sencillo, apto para su uso por no profesionales de la inform´tica. aUn ejemplo de SGA es el dBase, cuyo reducido coste, sencillo manejo y escasosrequerimientos f´ısicos la hacen tremendamente asequible. Entre los numerososlibros que se han escrito sobre ella, encontramos en [Bye90] una referenciab´sica y pr´ctica de la versi´n III plus. a a o Entre las bases de datos relacionales que funcionan en PC’s bajo DOS,deben mencionarse tambi´n Oracle y DB2/2. Aunque su medio principal son los eentornos grandes, es posible usarlas en microcomputadores con fines educativos(lo que contribuye por otra parte a su difusi´n), as´ como en la fase de desarrollo. o ıEn [MW83] se introducen informalmente los conceptos b´sicos de las bases de adatos relacionales, revis´ndose igualmente algunas de amplia difusi´n. a o Posiblemente, SQL es el lenguaje de consulta de bases de datos m´s exten- adido en la actualidad (DB2, Oracle, Informix, Arity, RDB, etc.) En [HH89] sepresenta este lenguaje, desde su fundamentaci´n en la l´gica del primer orden o ohasta su utilizaci´n en algunos SGBD comercializados. o Entre los numerosos textos sobre esta tem´tica, indicamos [KS93], [Dat93] ay [MP93], muy completos y actualizados. En los a˜os noventa ha surgido un nuevo enfoque de bases de datos, el de nlas orientadas al objeto, que est´ despertando un vivo inter´s y tiene una gran a ey r´pida acogida. [SH90] es un estudio comparado de sus principios con los del amodelo relacional.
  • Cap´ ıtulo 7Historia de losinstrumentos de c´lculo a 7.1 Precursores de los computadores digitales . . . . . . . . . . . . 167 7.2 Nacimiento de los computadores . . . . . . . . . . . . . . . . . 171 7.3 Evoluci´n de los lenguajes y de la metodolog´ o ıa . . . . . . . . . 175 7.4 Tecnolog´ actual, tendencias y perspectivas . . ıa . . . . . . . . . 176 7.5 Comentarios bibliogr´ficos . . . . . . . . . . . . a . . . . . . . . . 179 El nacimiento de la Computaci´n, tal como la vemos hoy d´ es re- o ıa,cient´ ısimo (apenas tiene medio siglo de edad), e incluso est´ en pleno adesarrollo; por eso, junto al inter´s que despierta el origen de los ins- etrumentos de c´lculo y la inform´tica, surge la necesidad de conocer, a asiquiera someramente, su alcance en la actualidad, as´ como la de ima- ıginar las expectativas de futuro previsibles.7.1 Precursores de los computadores digitales7.1.1 La antig¨ edad u Desde que los hombres aprendieron a contar han necesitado apoyarseen el c´lculo para manipular cantidades y buscar m´todos para facili- a etarlo. Estos m´todos fueron bastante rudimentarios hasta que los sabios e
  • 168 Cap´ ´ ıtulo 7. Historia de los instrumentos de calculoy astr´nomos hind´es recogieron la herencia greco-babil´nica inventando o u ola numeraci´n posicional actual. o Con el desarrollo de esos m´todos, fue necesario anotar n´meros (ya e ufueran considerados datos, cantidades auxiliares o resultados finales),apareciendo as´ los primeros instrumentos de c´mputo: el uso de los ı odedos con tal objeto condujo a las primeras t´cnicas de c´lculo digital; y e aparecida finalidad tuvo el uso de piedras (calculi, t´rmino latino del que eprocede la palabra c´lculo) entre los romanos, el de los nudos (quipa) asobre una cuerda, o las muescas practicadas por diversos pueblos sobrevaras de madera. Desde entonces, los avances se han debido a progresos en los m´todos, een los instrumentos y en la integraci´n de ambos. o Dos utensilios de esta ´poca merecen ser citados: la m´quina anal´- e a ogica de Antic´ıteros, precursora de los calendarios astron´micos bizanti- onos; y especialmente el ´baco, que apareci´ entre el tercer y el primer a omilenio a. C., y puede ser considerado como la primera m´quina digital, aya basada en la numeraci´n posicional. o7.1.2 Antecedentes del c´lculo mec´nico a a Los aut´matas de reloj que todav´ adornan los campanarios de las o ıaiglesias medievales (a partir de finales del s. XIII) son automatismosmec´nicos dise˜ados para reproducir una secuencia fija de movimientos. a nPrecisamente se les ha llamado aut´matas de programa interior para oexpresar as´ que la serie de sus movimientos est´ intr´ ı a ınsecamente descritaen su maquinaria.7.1.3 La m´quina de Pascal a Hacia la mitad del s. XVII, Pascal construy´ una calculadora, capaz ode sumar y restar, bas´ndose en la pieza fundamental de los engranajes ade los molinos: la rueda dentada. El funcionamiento de la m´quina de aPascal puede compararse al de un cuentakil´metros: cada rueda posee odiez posiciones y, a cada vuelta, provoca en la siguiente un arrastre deuna posici´n. o
  • 7.1. Precursores de los computadores digitales 169 Son directos descendientes de la m´quina de Pascal las m´quinas a aelectromec´nicas de oficina, hoy ya en desuso, y las UAL de los actuales acomputadores, cambiando las ruedas dentadas por circuitos electr´nicos. o En 1673, Leibnitz perfeccion´ la m´quina de Pascal, incorpor´ndole o a ala multiplicaci´n (por adici´n repetida del multiplicando en diferentes o oo´rdenes decimales) y la divisi´n. o Las rudimentarias operaciones que facilitaban estos aparatosos ins-trumentos no compensaban su costosa construcci´n. Por ello, los pro- ogresos consistieron en perfeccionamientos menores hasta finales del sigloXIX, en que se supo incorporar a las m´quinas de c´lculo una aportaci´n a a oprocedente de la industria textil.7.1.4 La m´quina de Babbage a Las m´quinas de Pascal y Leibnitz se consideran de programa exte- arior, debido a que las instrucciones son aportadas por el hombre juntocon los datos, como ocurre con las calculadoras m´s simples. No obs- atante, sus instrucciones son demasiado simples como para poder consi-derarse un programa. Esta noci´n apareci´ cabalmente con la m´quina o o ade Jacquard, mec´nico franc´s que en 1790 concibi´ la idea de un telar a e oautom´tico, capaz de tejer sus dibujos obedeciendo secuencias de ins- atrucciones previamente registradas en tarjetas perforadas. El telar deJacquard fue construido en 1800, y ha revolucionado la industria textil,pero el inter´s que tiene para nosotros es la aportaci´n del verdadero e oconcepto de programa exterior, tal como lo entendemos actualmente. En el s. XIX, C. Babbage concibi´ su M´quina Anal´ o a ıtica (1834), ca-paz de seguir las secuencias de instrucciones proporcionadas desde el ex-terior (como los datos), previamente registradas en tarjetas perforadas.El modus operandi de la m´quina de Babbage consist´ en ir leyendo a ıatarjetas (descriptoras de operaciones) y ejecut´ndolas sucesivamente. a La gran aportaci´n de Babbage consiste en reunir las dos siguientes ocaracter´ ısticas: • la flexibilidad de las calculadoras de Pascal y Leibnitz, que operan sobre distintos datos, pero carecen de automatismo, estando su
  • 170 Cap´ ´ ıtulo 7. Historia de los instrumentos de calculo velocidad siempre limitada por la lentitud de introducir los datos y las operaciones • el automatismo de los aut´matas de reloj, que no requieren la in- o tervenci´n humana, por lo que funcionan sin interrupci´n, aunque o o carecen de flexibilidad, ya que cada secuencia de movimientos re- quiere el dise˜o de una m´quina distinta. n a Babbage no pudo terminar la construcci´n de su m´quina de diferen- o acias. Repetidamente se ha sostenido que la complejidad de esta m´quina arozaba probablemente los l´ımites de la mec´nica; sin embargo, estudios arecientes [Swa93] demuestran que su dise˜o era completamente viable. n En el dise˜o de la m´quina de diferencias se definen los organos n a ´esenciales de cualquier sistema computacional actual: Entrada de instrucciones y datos Almac´n e memoria Unidad de Control con su actual cometido Molino calculador, U.A.L. Salida con su actual cometido Por ello se le ha llamado el “Padre de la Computaci´n moderna”.1 o7.1.5 La tabulaci´n mec´nica o a El desarrollo de los estados modernos fue lo que determin´ la nece- osidad de procesar grandes vol´menes de datos: siguiendo un mandato uconstitucional en EE.UU., era necesario realizar un censo de la poblaci´nocada diez a˜os. En 1886 se hizo patente la imposibilidad de obtener los nresultados del censo de 1880 antes de 1890. Consciente de esta situaci´n, oHollerit, funcionario de la oficina de censos, ide´ un sistema de tabu- olaci´n de los datos basado en tarjetas perforadas similares a las del telar ode Jacquard. 1 Entre los muchos campos que abarc´ Babbage citamos los primeros m´todos que o eposteriormente originaron la Investigaci´n Operativa. o
  • 7.2. Nacimiento de los computadores 171 Con su sistema, Hollerit consigui´ procesar el censo de 1890 en la ocuarta parte del tiempo requerido para el de 1880. Su m´todo fue tan eeficiente que abandon´ la Oficina de Censos, e inaugur´ una compa˜´ de o o nıadesarrollo de m´quinas electromagn´ticas (incorporando a su invento los a eavances en electromec´nica y electricidad, construidos para perfeccionar ael tel´fono) que fue la precursora de la actual IBM. e Con el desarrollo de los computadores, las tarjetas perforadas pasa-ron a ser uno de los principales soportes de la informaci´n, situaci´n que o operdur´ hasta finales de los a˜os setenta. o n7.2 Nacimiento y evoluci´n de los o computadores digitales En la primera mitad del siglo XX, gracias a los avances en tecnolog´ ıaelectr´nica, se crearon las primeras calculadoras electromec´nicas, que o afuncionaban a base de rel´s. e Al poseer los rel´s dos estados (abierto y cerrado), constituyen el ele- emento ideal para representar los dos d´ ıgitos de la numeraci´n binaria (0 oy 1), y tambi´n los dos valores l´gicos (verdadero y falso) del algebra de e o ´Boole. Por ello, los rel´s pueden considerarse elementos de memoria ca- epaces de albergar resultados parciales. Adem´s, estos instrumentos eran acapaces de seguir secuencias de instrucciones almacenadas previamentesobre tarjetas perforadas. Los primeros computadores que funcionaron a base de tecnolog´ ıael´ctrica fueron: e 1. En 1943, el Harvard Mark I, con rel´s electromagn´ticos. e e 2. En 1943, el Colosus I, considerado como el primer computador electr´nico, a base de (200) v´lvulas, dise˜ado durante la II Gue- o a n rra Mundial para descifrar los mensajes del encriptador alem´n a Enigma.
  • 172 Cap´ ´ ıtulo 7. Historia de los instrumentos de calculo 3. En 1946, el ENIAC,2 tambi´n a base de (18.000) v´lvulas, dise˜ado e a n para confeccionar tablas bal´ ısticas. A partir de los rel´s, la lenta mec´nica fue poco a poco desplazada e apor la electricidad: el tubo de rayos cat´dicos, el transistor, los circuitos oimpresos y m´s tarde integrados, etc. a En realidad, estas m´quinas estaban programadas al m´s bajo nivel a a(en t´rminos de direcciones f´ e ısicas de memoria, etc.) para desempe˜ ar ntareas muy espec´ ıficas. Por ello, carec´ por completo de versatilidad, ıandebido a la dificultad que entra˜aba reprogramarlas. n7.2.1 El modelo de von Neumann En 1945, von Neumann dio el paso definitivo, incorporando a lasm´quinas de rel´s de entonces los dos siguientes conceptos: a e 1. Programa registrado, utilizando la memoria del calculador para almacenar el programa de instrucciones junto con los datos. 2. Ruptura (condicional) de secuencia, es decir, capacidad autom´ti- a ca de decisi´n: dependiendo de cierto valor se ejecutar´ una parte o ıa del programa u otra. En 1945, von Neumann defini´ su modelo de computador,3 que es en oesencia el que funciona en nuestros d´ con dos caracter´ ıas, ısticas: 1. La secuencialidad en la transmisi´n y tratamiento de los datos o 2. La codificaci´n de instrucciones mediante impulsos electromagn´- o e ticos, reemplazando el cableado7.2.2 Generaciones tecnol´gicas o Las m´quinas basadas en el modelo de von Neumann se comercia- alizaron en los a˜os cincuenta (1952-55) y, desde entonces, la carrera ha nsido y sigue siendo imparable. De esta d´cada parten las siguientes ge- eneraciones tecnol´gicas: o 2 Electronic Numerical Integrator And Calculator. 3 Tambi´n conocido como M´quinas de von Neumann. e a
  • 7.2. Nacimiento de los computadores 173Primera generaci´n o Las v´lvulas electr´nicas desplazaron a los rel´s, y los computadores a o eadquirieron velocidad y potencia. Citamos entre los computadores de laprimera generaci´n el ENIAC, terminado en 1946, y el UNIVAC,4 pri- omera m´quina con la arquitectura de von Neumann. El modus operandi aera el siguiente: • carga del programa y los datos, previamente perforados (T1 ) • ejecuci´n (T2 ) o • salida de los resultados (T3 ) El tiempo total invertido es la suma T1 + T2 + T3 . Las fases pri-mera y tercera se llaman tiempos de ocio del procesador, porque en ellospermanec´ inactivo. ıaSegunda generaci´n o El aumento de potencia se debe a una innovaci´n de los laboratorios oBell en 1948: el transistor. En cuanto al modo de trabajar, se introdujola simultaneidad de las operaciones de c´lculo con las de carga y salida, areduci´ndose los per´ e ıodos de ocio del procesador. Para aumentar la velocidad de las operaciones de carga/salida, queretrasaban todo el proceso, se introdujo el uso de cintas magn´ticas, em´s r´pidas que las tarjetas perforadas. Este modo de trabajar se llama a aoff-lining.Tercera generaci´n o Tecnol´gicamente, los avances en velocidad y potencia se deben a la oincorporaci´n de circuitos integrados (1952) y memorias de semiconduc- otores (1971). 4 UNIVersal Automatic Computer.
  • 174 Cap´ ´ ıtulo 7. Historia de los instrumentos de calculo En esta generaci´n el trabajo se caracteriza por explotar la simul- otaneidad del procesamiento con las operaciones de entrada/salida me-diante la multiprogramaci´n, consistente en que varios programas co- oexisten en memoria, y cuando uno de ellos debe realizar una operaci´n ode entrada/salida, el procesador no se detiene, sino que se dedica a otroprograma. As´ la UCP nunca est´ ociosa habiendo trabajo por hacer, ı, afacilit´ndose adem´s la asignaci´n de prioridades a los programas que se a a oencuentran a la espera.Cuarta generaci´n o Se incorporan nuevas tecnolog´ de fabricaci´n y de integraci´n de ıas o olos componentes f´ ısicos entre s´ (VLSI: Very Large Scale of Integration). ı En cuanto a la explotaci´n, se generalizan: o • el teleprocesamiento: extensi´n del sistema de carga y proceso o a terminales remotas, sacando partido de la asignaci´n de prio- o ridades. • los sistemas interactivos o conversacionales: los usuarios intervie- nen en el desarrollo de las sucesivas etapas, lo que trae consigo una mayor flexibilidad en la modificaci´n y puesta a punto de o programas. • el tiempo compartido, con lo que se mejora el tiempo medio de respuesta. • esta generaci´n se corresponde cronol´gicamente con la difusi´n de o o o los llamados computadores personales.
  • 7.3. Evolucion de los lenguajes y de la metodolog´ ´ ıa 1757.3 Evoluci´n de los lenguajes y de la o metodolog´ıa Mientras tanto, a partir de los a˜os cincuenta, los lenguajes tambi´n n eemprenden la carrera de su evoluci´n particular: para evitar la codifi- ocaci´n de programas a bajo nivel, es preciso que sea la m´quina la que o aadquiera lenguajes pr´ximos al humano. o A la aparici´n del FORTRAN (FORmula TRANslator system) si- oguieron el Algol y el Cobol, intentando acercarse a un lenguaje univer-sal. La avalancha posterior de lenguajes y dialectos demostr´ que esas otentativas de universalidad resultaron vanas. Por otra parte, la actividad de la programaci´n experiment´ en los o oa˜os sesenta un desarrollo mucho m´s r´pido que las t´cnicas emplea- n a a edas en ´l; esta cr´ e ıtica situaci´n se conoce como crisis del software. No oexist´ una metodolog´ de la programaci´n: cada programador desarro- ıa ıa ollaba sus propios m´todos o “trucos” para programar, y se consideraba ea la programaci´n m´s como un arte que como una t´cnica. Muy pronto o a esurgi´ la necesidad de sistematizar la programaci´n, desarrollando he- o orramientas y h´bitos de dise˜o met´dicos y disciplinados para conseguir a n oque los programas fueran correctos, eficientes y mantenibles. La tesisde la programaci´n estructurada y las aportaciones de Dahl, Dijkstra, oHoare [DDH72] y el propio Wirth, vinieron a conferir a la programaci´noun car´cter de disciplina. a Aparece as´ la programaci´n estructurada y modular y comienzan a ı oaplicarse t´cnicas de dise˜o de algoritmos como el m´todo de los refi- e n enamientos sucesivos. En este contexto nace el lenguaje Pascal, que fuecreado con el prop´sito de ense˜ar a programar de una forma met´dica y o n odisciplinada. De hecho, se considera como un lenguaje ideal para entraren contacto con la programaci´n, por lo que es el primero que muchas ouniversidades vienen ense˜ando durante a˜os. Los nuevos lenguajes de n nprogramaci´n que aparecen a partir de los a˜os setenta incorporan estas o nt´cnicas, facilitando su desarrollo y aplicaci´n. e o Posteriormente, los lenguajes de programaci´n han seguido evolucio- onando, y paralelamente las t´cnicas de desarrollo de algoritmos. En el e
  • 176 Cap´ ´ ıtulo 7. Historia de los instrumentos de calculocap´ ıtulo 5 se han recogido algunos de los modelos de programaci´n m´s o aempleados.7.4 Tecnolog´ actual, tendencias y ıa perspectivas A partir de la aparici´n del computador personal al principio de los oa˜os ochenta, la inform´tica ha dejado de ser un coto cerrado de un n agrupo restringido de especialistas y se ha popularizado, alcanzando ausuarios sin ning´n tipo de conocimientos previos en este ´rea. u a Hoy en d´ la Inform´tica est´ difundida por un sinf´ de sectores: ıa, a a ınlas finanzas, la gesti´n, la investigaci´n, el control de procesos industria- o oles (dise˜o, concepci´n y fabricaci´n asistidas por computador), la edu- n o ocaci´n, la edici´n, la composici´n musical, etc., y el n´mero de usuarios o o o uque utilizan la inform´tica en su trabajo o en su ocio sigue aumentando. a En los pa´ desarrollados, cada d´ est´ m´s cercana la predicci´n ıses ıa a a ode “un computador en cada puesto de trabajo y en cada hogar”. Por ello, se hace necesario facilitar la relaci´n entre el usuario y el ocomputador y disminuir el tiempo de aprendizaje, y para lograrlo serecurre a modelos m´s intuitivos que muestran al computador como aun escritorio o mesa de trabajo, a las aplicaciones como tareas y losficheros de datos como carpetas de documentos, mediante entornos detipo gr´fico (4.2.5). a A su vez, se ha dado una notable evoluci´n tecnol´gica: los com- o oputadores son cada vez m´s potentes y m´s baratos. Se puede afirmar a aque esta evoluci´n es m´s r´pida en el campo del hardware que en el o a asoftware. Aparecen computadores con enormes posibilidades, pero losprogramas capaces de aprovecharlas llegan con varios a˜os de retraso. n La mayor capacidad de proceso est´ permitiendo la entrada de la ainform´tica en campos en los que su presencia era limitada, y la creaci´n a ode actividades enteramente nuevas, como son: 1. Visi´n artificial: reconocimiento de formas o
  • 7.4. Tecnolog´ actual, tendencias y perspectivas ıa 177 2. Tratamiento de im´genes: correcci´n de aberraciones y defectos a o o ´pticos. 3. Realidad virtual: s´ ıntesis de im´genes virtuales estereosc´picas, a o pel´ ıculas virtuales. 4. Comunicaciones: enlaces mediante m´dem, correo electr´nico, es- o o tablecimiento de redes integradas de comunicaciones (datos, sonido y v´ ıdeo). 5. Juegos: de rol, arcade, ajedrez. 6. Simulaci´n de procesos o 7. Multimedia: procesamiento de datos, sonido y v´ ıdeo integrados. De hecho, todo el mundo coincide en calificar este enorme desarro-llo de la inform´tica como una verdadera revoluci´n de la informaci´n. a o oComo tal revoluci´n, tiene importantes repercusiones de ´ o ındole econ´-omica y social. La utilizaci´n de la inform´tica genera un aumento de o ala productividad y de la calidad de la producci´n. En consecuencia, las oempresas se ven obligadas a informatizarse para poder competir en elmercado. El aumento de la productividad puede significar tambi´n un eaumento del desempleo o del ocio. Para imaginar c´mo ser´n los computadores del futuro, quiz´s lo m´s o a a arazonable sea identificar las limitaciones de los computadores actuales,e imaginar sus formas de superaci´n. o Por lo pronto, la naturaleza f´ ısica de los componentes electr´nicos los olimita en tama˜o y en velocidad. De ah´ que la investigaci´n se oriente n ı ohacia la superaci´n de las configuraciones tradicionales (basadas en el omodelo de von Neumann) por otras arquitecturas y redes m´s avanzadas a(paralelas, neuronales, ...) llamadas a veces “arquitecturas de flujo dedatos” (v´ase el cap´ e ıtulo 3). En ellas, un programa no se compone deinstrucciones que se ejecutan “de arriba abajo”, sino de segmentos quepueden “resolverse” en cuanto los datos precisos est´n disponibles. Los edatos fluyen a trav´s de complicadas redes, compitiendo por acaparar la e
  • 178 Cap´ ´ ıtulo 7. Historia de los instrumentos de calculoatenci´n de los recursos (principalmente los procesadores, que trabajan osimult´neamente). a7.4.1 Inteligencia artificial El ambicioso objetivo que se persigue es dotar a los computadoresdel futuro con una serie de capacidades que se engloban bajo el t´rmino egen´rico de Inteligencia Artificial. Esta disciplina se ocupa en la actua- elidad de las siguientes areas de investigaci´n: ´ o • lenguajes naturales: s´ ıntesis del habla, identificaci´n del lenguaje o hablado, traducci´n autom´tica o a • razonamiento y aprendizaje autom´ticos, sistemas expertos, de- a mostraci´n autom´tica o a • programaci´n autom´tica o a Todas esas capacidades requieren, en general, un mayor estudio delproceso cognitivo. En particular, todas ellas necesitan sustituir el empleode datos por el de conocimientos, lo que plantea el dif´ problema de ıcilsu representaci´n. o7.4.2 Las comunicaciones Otro aspecto de la inform´tica con tremendo auge en la actualidad aes el de las comunicaciones, ya que se abre la posibilidad de acceder ala informaci´n de origen remoto, tratarla autom´ticamente y enviar los o aresultados a su lugar de origen. Para ello se crean redes de comunicaciones de mayor o menor cober-tura, desde una sala o un edificio hasta redes nacionales o mundiales. Las aplicaciones de la teleinform´tica est´n cada d´ m´s extendidas a a ıa ay ya casi empiezan a parecernos algo natural. Como ejemplos podemoscitar desde el uso de los cajeros autom´ticos hasta la posibilidad de aefectuar reservas de avi´n o de hotel desde puntos remotos, la consulta odel cat´logo de una biblioteca en una ciudad de otro pa´ el correo a ıs,electr´nico, etc. o
  • ´7.5. Comentarios bibliograficos 1797.5 Comentarios bibliogr´ficos a [JM90] y [Ber86] son dos buenas recopilaciones, con car´cter general, so- abre la historia pasada de los instrumentos de c´lculo, desde la calculadora de aPascal hasta nuestros d´ [Ber86] es extraordinariamente entretenido, con un ıas.buen n´mero de an´cdotas y curiosidades sobre los padres de la computaci´n u e omoderna. Especialmente interesantes son las citas de escritos de von Neumannrecogidas en ´l. e En [Swa93] se presentan los avatares en que se vio envuelta la construcci´n ode la m´quina anal´ a ıtica de Babbage, demostrando que el proyecto era viable, apesar de no verse finalizado: En este art´ ıculo se describe la construcci´n de la om´quina anal´ a ıtica con motivo del segundo centenario del nacimiento de CharlesBabbage, y de acuerdo con sus planos originales. Aunque los computadores digitales actuales tienen su origen en el modelode von Neumann (1945), la invenci´n del primer computador electr´nico es o oanterior, y se debe a J. V. Atanasoff, que construy´ el primer computador odigital entre 1937 y 1942. De hecho, es posible que los creadoes del ENIACcopiaran algunas de sus ideas ([Mac88]). Sobre computaci´n avanzada en la actualidad y perspectivas de futuro de ola inform´tica pueden consultarse [Com87] y [Sim85]. [La 91] trata sobre este amismo tema, en relaci´n con las comunicaciones. o
  • Ap´ndice A eIntroducci´n al DOS o El dos es, hoy en d´ el sistema operativo m´s difundido para com- ıa, aputadores PC de IBM y compatibles. Dada la gran difusi´n de ´stos, o ese comprende la importancia que tiene conocer el dos. Aunque los PCs pueden comunicarse con otros a trav´s de redes, su emodo habitual de trabajar es aut´nomo, por lo que el dos es un sistema ooperativo monousuario. Su cometido (v´ase el cap´ e ıtulo 4) consiste engestionar los recursos del sistema, controlando el uso de los dispositivos(como las unidades de disco, la impresora, el rat´n), administrando la omemoria principal y facilitando la ejecuci´n de programas y la organi- ozaci´n de archivos dentro de los discos. o El dos es en realidad un programa (o mejor dicho un conjunto deprogramas) grabado en un disco.1 Cuando se enciende un equipo, seempieza cargando este programa en la memoria principal y se efect´anulas tareas de puesta en marcha (v´ase la secci´n A.3); entonces entra en e ofuncionamiento un int´rprete de mandatos, que espera las ´rdenes del e ousuario (v´ase la secci´n A.2), y las va ejecutando sucesivamente. e o Asumimos en adelante una configuraci´n con disco fijo (duro) en el oque se encuentra este programa de arranque del dos, que es actualmenteel caso m´s habitual. a 1 De hecho, ´se es el significado de las siglas que forman su nombre: “Disk Operating eSystem”, que quiere decir en ingl´s Sistema Operativo de Disco. e
  • 182 ´ ´ Apendice A. Introduccion al DOSA.1 Organizaci´n de recursos oA.1.1 Principales dispositivos Durante el trabajo con el dos, a veces necesitamos referirnos expl´ ı-citamente a los perif´ricos; para ello, se emplean los siguientes t´rminos e een el lenguaje del dos: identificador perif´rico e nul: nulo con: consola = teclado + monitor a: b: c: . . . unidades de disco lpt1: = prn: impresora lpt2: . . . otros dispositivos en paralelo com1: = aux: dispositivo en serie com2: . . . otros dispositivos en serie Todos los dispositivos pueden nombrarse omitiendo los dos puntosfinales, a excepci´n de las unidades de disco que deben llevarlos obliga- otoriamente.A.1.2 Archivos Un archivo del dos no es m´s que un documento, aunque en vez de aestar representado por una secuencia de letras escritas sobre papel, con-siste en una secuencia de bytes (que representan caracteres igualmente)grabados sobre una zona de un disco magn´tico. Dependiendo del con- etenido de los archivos, desde el punto de vista del dos, algunos archivosson “de datos” y otros son “programas”, escritos en lenguaje de m´quina ao del dos. Los archivos se nombran mediante palabras, llamadas identificadores,formadas por letras, d´ ıgitos y los caracteres siguientes: ~ ! @ # $ % ^ & ( ) - _ { } ’
  • ´A.1. Organizacion de recursos 183Los identificadores de los archivos tienen dos partes: nombre (de unm´ximo de ocho letras) y extensi´n (de un m´ximo de tres), siendo esta a o aultima opcional. Al escribir el identificador de un archivo, estas dos´partes se separan mediante un punto. Usando la notaci´n EBNF (v´ase o eel cap´ ıtulo 5), esta descripci´n puede expresarse as´ o ı: identificador ::= nombre[.extensi´n] oAteni´ndonos a estas reglas, conviene elegir los nombres de los archivos erelacionados con su contenido. En cuanto a las extensiones, su elecci´n odepende del tipo de archivo; las m´s usuales son las siguientes: a extensi´n o uso habitual com exe Programas ejecutables bat Lotes de ´rdenes (v. A.2.5) o sys Programas del sistema C´digo fuente de programas o bas pas cob en Basic, Pascal o Cobol txt Archivos de texto L´gicamente, los identificadores usados para representar archivos no opueden coincidir con los identificadores propios de dispositivos. Con frecuencia, se necesita realizar ciertas operaciones con un grupode archivos m´s o menos grande. Si esos archivos fueron bautizados si- aguiendo ciertas pautas, es posible identificarlos gen´ricamente mediante eun patr´n o plantilla de archivo. Para ello, se usan los caracteres co- omod´ * y ?, que representan respectivamente cualquier cadena de ca- ın,racteres como terminaci´n del nombre o extensi´n, y un car´cter en o o acualquier posici´n del identificador. Por ejemplo: o Plantilla Interpretaci´n o arch∗.com archivo.com, archi-1.com, arch.com,. . . c9?-9?.txt c92-93.txt, c93-94.txt, c9a-9f.txt,. . . ∗.exe Todos los archivos con esa extensi´n o ∗.∗ Todos los archivos
  • 184 ´ ´ Apendice A. Introduccion al DOSA.1.3 Directorios El n´mero de archivos grabados en un disco llega con frecuencia a u ´ser enorme, por lo que se hace necesario clasificarlos. Este es el come-tido de los directorios y subdirectorios, algo as´ como compartimentos ıy compartimentos dentro de compartimentos que permiten organizarjer´rquicamente los archivos de un disco. a En general, los identificadores de los directorios siguen las mismasreglas que los archivos, aunque en el caso de los directorios es bastantefrecuente omitir la extensi´n. Adem´s de los identificadores corrientes, o aexisten s´ ımbolos especiales para indicar las siguientes posiciones: identificador posici´n o el directorio principal o ra´ ız . el directorio actual .. el directorio “padre” La comparaci´n de los directorios con compartimentos se refleja gr´- o aficamente en el ejemplo de la figura A.1, donde los identificadores de losdirectorios y subdirectorios se˜alan puertas (de entrada), y los archivos nest´n representados directamente por sus identificadores. Otro modo am´s sencillo e igualmente util de representarlos es como ´rboles, seg´n a ´ a use muestra en la figura A.2. Es importante tener en cuenta que los archivos contenidos en cadaunidad de trabajo est´n organizados en forma de arbol, por lo tanto, a ´cada unidad tiene su propio directorio ra´ y en todo momento cada ızunidad tiene un directorio actual. Adem´s, es posible referirse a cualquier directorio o conjunto de ar- achivos indicando una ruta de acceso desde la posici´n actual, esto es, el odirectorio de trabajo2 (v´ase 4.2.2). Con este fin, el s´ e ımbolo sirve paraconcatenar los pasos hacia dicha posici´n. o As´ por ejemplo, considerando que el disco C: est´ organizado seg´n ı a ula estructura anterior, es posible referirse a los archivos ejerci.tex yexamen.tex desde diversos lugares: 2 Esta posici´n se conoce frecuentemente como directorio “por defecto”, a causa de ouna traducci´n dudosa de su nombre default directory, en ingl´s. o e
  • ´A.1. Organizacion de recursos 185 <escuela> command.com autoexec.bat grupo-C.dbf config.sys ejerci.tex examen.tex <juegos> tetris.exe <cartas> carta-2.txt carta-1.txt keyb.com keyboard.sys win.bat Figura A.1. • Desde C: escuela*.tex • Desde C:escuela *.tex • Desde C:escuelacartas ..*.tex • Desde C:escuelajuegos ..escuela*.tex
  • 186 ´ ´ Apendice A. Introduccion al DOS command.com config.sys autoexec.bat keyb.com keyboard.sys win.bat <escuela> grupo-C.dbf ejerci.tex examen.tex <cartas> carta-1.txt carta-2.txt <juegos> tetris.exe Figura A.2.
  • ´A.2. Ordenes del DOS 187 • Desde cualquier lugar del disco C: escuela*.tex • Desde cualquier lugar, incluso desde otro disco: C:escuela*.texA.1.4 Prompt El prompt 3 es un indicador con el que el dos expresa que est´ es- aperando nuestras ordenes, listo para ejecutarlas. El dos puede indicar ´esta disposici´n de diversas formas, a nuestro capricho, pero la m´s ex- o atendida consiste en recordar el disco de trabajo y la posici´n, dentro de o´l, en ese momento; suele finalizarse con el car´cter >. Por ejemplo, ele aprompt C:ESCUELACLASES>indica que la posici´n de trabajo actual es el subdirectorio CLASES, del odirectorio ESCUELA, en el disco C:. A la derecha del prompt aparece elcursor, bajo nuestro control, para escribir la orden que deseemos.A.2 ´ Ordenes del DOS El sistema dos ofrece un int´rprete de mandatos que permite al eusuario la comunicaci´n con el computador. o Empecemos por poner unos cuantos ejemplos de ´rdenes, junto con osu funcionamiento. En adelante, usaremos letra de molde para reprodu-cir el intercambio de informaci´n entre computador y usuario; lo escrito opor el computador aparece en letra vertical y lo escrito por el usuario enletra oblicua: 3 Aunque en espa˜ol significa incitar o incitaci´n, s´lo usamos el t´rmino ingl´s, sin n o o e etraducir.
  • 188 ´ ´ Apendice A. Introduccion al DOSC:>CD pascalC:PASCAL>A:A:>Dir *.CHI El volumen en la unidad A no tiene etiqueta El n´mero de serie del volumen es 335E-11EF u Directorio de A: ENTROPY CHI 1633 21/06/93 9:08 REGLAMEN CHI 2204 27/06/93 20:07 JUNIO-93 CHI 3425 29/06/93 17:03 3 Archivo(s) 176640 bytes libresA:>FORMAT B: Comando o archivo no se encuentraA:>C:DOSFORMAT B:... ... ...A:>CLS Debe advertirse que en el lenguaje del dos no se distingue entre lasletras may´sculas y las min´sculas. Esto afecta a los identificadores (ya u usea para dispositivos, archivos o directorios), as´ como a las ´rdenes que ı oestudiaremos. Por otra parte, los comandos del dos pueden agruparse en dos ca-tegor´ıas: ´rdenes (internas) del dos y programas (externos). El dos oconoce las primeras, y es capaz de interpretarlas y ejecutarlas en cual-quier momento; tambi´n es posible ordenar la ejecuci´n de un programa e otras el prompt pero, para ejecutarlo, el dos debe leer el disco para pa-sarlo a la memoria del computador. Por lo tanto, s´lo es posible ejecutar oprogramas grabados en un disco accesible por el dos. Por ejemplo: el cambio de unidad, las ordenes CLS, DIR y CD son ´o´rdenes internas; FORMAT en cambio es un programa. El inter´s de esta eobservaci´n consiste en que, cuando se ordena un comando externo o oprograma, para que ´ste pueda ejecutarse deber´ darse alguna de las e asiguientes circunstancias:
  • ´A.2. Ordenes del DOS 189 - el programa deber´ estar en la unidad y directorio de trabajo ac- a tual, o - se indicar´ su posici´n, para que el dos pueda encontrarlo, o a o - estar´ en alguna de las posiciones conocidas de antemano por a el dos en los que busca las ´rdenes de uso frecuente (v´ase la o e secci´n A.2.3). o En los siguientes apartados se describir´n los comandos del dos m´s a ausuales. Interesa saber de cada uno si es externo o interno, su prop´sito oy su sintaxis correcta. Usaremos las reglas EBNF (introducidas en elcap´ ıtulo 5) escribiendo los s´ ımbolos terminales con letra vertical y losno terminales con letra oblicua, en vez de distinguirlos con may´sculas uy min´sculas, o de usar los metas´ u ımbolos < y >, por tener ´stos otro ecometido. As´ por ejemplo, podemos decir que la estructura general de las ıo´rdenes del dos es la siguiente: comando [argumentos] [opciones]donde la primera palabra es el nombre del comando, y aparece siempre;los argumentos son los objetos que maneja la orden, frecuentemente ar-chivos o directorios, y no siempre aparecen (por ejemplo, la orden CLSno tiene argumentos); y las opciones son espec´ ıficas de cada comando,como /W, y alteran el funcionamiento del mismo. En estas descripcionessint´cticas aparecer´n con frecuencia los siguientes s´ a a ımbolos no termi-nales: • Unidad : A:, B:, C:, . . . • La [posici´n], opcional, se indica cuando procede, dando una uni- o ız dad de disco y/o un camino de acceso, bien desde el directorio ra´ (posici´n absoluta) o desde el (sub)directorio actual abierto en el o disco correspondiente (posici´n relativa): o [unidad][camino]
  • 190 ´ ´ Apendice A. Introduccion al DOS • Archivo(s), que muchas veces se expresar´n de forma gen´rica me- a e diante una plantilla o patr´n, usando los s´ o ımbolos comod´ın. • Las opciones, tales como /B, /S, . . . Por otra parte, muchas de las ordenes incluyen en su sintaxis partes ´opcionales, frecuentemente un disco, una posici´n dentro de ´l o un o econjunto de archivos. Cuando esas partes opcionales se omiten, se asumeque se trata del disco de trabajo actual, del (sub)directorio abierto, detodos los archivos a la vista, etc.A.2.1 ´ Ordenes b´sicas aCLS (interna) • Prop´sito: Borra la pantalla, situando el prompt y el cursor en su o comienzo. • Sintaxis: CLSCambio de unidad (interna) • Prop´sito: Establece una nueva unidad de trabajo. o • Sintaxis: unidadFORMAT (externa) • Prop´sito: Preparar un disco para ser usado por el dos, creando o el directorio (vac´ inicial. ıo) • Sintaxis: [posici´n]FORMAT unidad [opciones] o • Algunas de las opciones usadas con este comando son las siguientes: – /S, para transferir a un disco el sistema operativo, haciendo as´ posible iniciar el funcionamiento del dos con ese disco. ı – /V, para dar un nombre a un disco.
  • ´A.2. Ordenes del DOS 191A.2.2 Manejo de archivosDIR (interna) • Prop´sito: Proporciona informaci´n sobre: o o – la posici´n especificada, o – los archivos visibles en esa posici´n, o – las puertas (de acceso a directorios) a la vista, incluyendo el subdirectorio actual, desde la posici´n indicada, o – la memoria libre en una unidad. • Sintaxis: DIR [posici´n][archivo(s)] [/W][/P] o • Ejemplo: C:PASCAL-6> DIR /w El volumen en la unidad C tiene etiqueta BLAISE El n´mero de serie del volumen es 0F1E-18DF u Directorio de C:PASCAL-6 . .. TVISION TVDEMOS UTILS TURBO3 TURBO EXE UNZIP EXE README COM TURBO TPL TURBO TP TPC EXE TPTOUR EXE TPTOUR CBT TPTOUR1 CBT TPTOUR_P CBT TPTOUR CBT TPTOUR_U CBT README TURBO HLP TPC CFG NONAME00 PAS 22 Archivo(s) 5171200 bytes libres • Opciones – /P sirve para parar la relaci´n de p´gina en p´gina. o a a – Con la opci´n /W, s´lo se da el identificador de cada archivo o o y se aprovecha la pantalla a lo ancho, con lo que la relaci´n o ocupa menos l´ıneas.
  • 192 ´ ´ Apendice A. Introduccion al DOSCOPY (interna) • Prop´sito: Copia uno o varios archivos, con el mismo nombre o o distinto; tambi´n se usa para transferir archivos hacia o desde un e dispositivo. • Sintaxis: COPY [posici´n][archivo(s)] [posici´n][archivo(s)] o o • Este comando tiene dos argumentos: el(los) archivo(s) fuente y el(los) archivo(s) destino; sin embargo, es frecuente omitir uno de ellos. Por ejemplo, las dos ´rdenes siguientes o C:> COPY autoexec.bat a: A:> COPY c:autoexec.bat tienen el mismo efecto.COMP (externa) • Prop´sito: Compara los contenidos de uno o varios pares de archi- o vos. • Sintaxis: [posici´n]COMP [posici´n][archivo(s)] [posici´n][archivo(s)] o o oDEL (interna) • Prop´sito: Borra un archivo o un grupo de ellos de un disco. o • Sintaxis: (ERASE | DEL) [posici´n][archivo(s)] oREN (interna) • Prop´sito: Renombra el identificador de un archivo o grupo de o ellos. • Sintaxis: (REN | RENAME) [posici´n][archivo(s)] [archivo(s)] oTYPE (interna)
  • ´A.2. Ordenes del DOS 193 • Prop´sito: Muestra en la pantalla el contenido de un archivo. o • Sintaxis: TYPE [posici´n][archivo(s)] oPRINT (externa) • Prop´sito: Env´ un archivo a la impresora, coloc´ndolo en la cola o ıa a de impresi´n. o • Sintaxis: [posici´n]PRINT [posici´n][archivo(s)] [/C][/T] o o • Opciones – Con /C se cancela(n) de la cola el (los) archivo(s) especifica- dos. – /T cancela toda la cola de impresi´n oA.2.3 Manejo de directoriosCD (interna) • Prop´sito: Cambia el directorio de trabajo actual. o • Sintaxis: (CHDIR | CD) [unidad]caminoTREE (externa) • Prop´sito: Muestra la estructura de subdirectorios de un directorio o dado, de un modo muy similar al mostrado en la figura A.2. • Sintaxis: TREE [directorio] [/F] • Opciones – Con la opci´n /F se incluyen los archivos contenidos en cada o subdirectorio.MD (interna) • Prop´sito: Construye un nuevo subdirectorio. o
  • 194 ´ ´ Apendice A. Introduccion al DOS • Sintaxis: (MKDIR | MD) [unidad]caminoRD (interna) • Prop´sito: Borra un subdirectorio, que debe estar vac´ o ıo. • Sintaxis: (RMDIR | RD) [unidad]caminoPATH (interna) • Prop´sito: Establece rutas de b´squeda alternativas a la posici´n o u o de trabajo actual. • Sintaxis: PATH [posici´n];{posici´n}] o oA.2.4 Indicadores del sistema Durante el funcionamiento del dos existen unos cuantos datos dereferencia, tales como el path, a las que se llama indicadores: • Date y time permiten conocer o alterar la fecha y la hora del sistema. Aunque su valor es actualizado constantemente por el propio computador, tambi´n el usuario puede establecer uno. e • Ver es la versi´n del dos en uso. o • Verify es un conmutador (con dos posiciones: on y off ) que, cuando est´ activo, indica al dos que compruebe las operaciones a de escritura de archivos. • Break es tambi´n un conmutador: cuando est´ activo (on), el dos e a comprueba frecuentemente si se producen interrupciones durante la ejecuci´n de programas. o • El prompt ya ha sido introducido. Por lo general, su aspecto y la informaci´n que proporciona se establece durante el arranque del o sistema (v´ase la secci´n A.3), aunque el usuario puede redefinirlo e o a su antojo haciendo que indique, por ejemplo, la hora del sistema.
  • ´A.3. Configuracion del DOS 195A.2.5 Procesamiento por lotes Cuando se necesita ejecutar repetidamente una secuencia de ´rdenes, oes posible definir un lote de ´rdenes (v´ase 4.1.2) (por ejemplo, la se- o ecuencia cd pascal, turbo y cd ..), agrup´ndolas bajo un nombre (como apascal.bat, por ejemplo), de manera que baste con ordenar ese identi-ficador para que el dos lleve a cabo la secuencia, una a una: cd pascal pascal.bat ; turbo cd .. El identificador asociado a un lote de ordenes debe tener la extensi´n ´ obat4 obligatoriamente. Sin embargo, en su posterior utilizaci´n puede oomitirse la extensi´n. o Como un lote de ordenes es un archivo de texto, puede construirse con ´un editor cualquiera, o copi´ndolo directamente del teclado, mediante: a copy con: pascal.batdonde el retorno de carro representa el final de l´ ınea, y la combinaci´n oCtrl+Z la marca del fin de archivo. En un archivo bat pueden usarse, adem´s de las ´rdenes usuales del a odos, otras espec´ ıficas (ECHO, REM, PAUSE, GOTO, IF, FOR), con las que sepueden construir programas con gran flexibilidad.A.3 Configuraci´n del DOS o El elemento del sistema operativo de m´s bajo nivel es el BIOS: ael sistema b´sico de entrada y salida (del ingl´s, Basic Input/Output a eSystem). Se trata de un conjunto de rutinas situadas en la memoriaROM del computador que realiza tareas b´sicas como las pruebas de que alos perif´ricos est´n conectados o el programa para poder leer los ficheros e adel dos, bien del disco duro o bien de discos flexibles. Estas rutinas noson suministradas por el fabricante del sistema operativo sino que son 4 En ingl´s, batch significa lote. e
  • 196 ´ ´ Apendice A. Introduccion al DOSentregadas con el hardware, por lo que se suele utilizar la expresi´n ofirmware para hacer referencia a este tipo de software introducido en laROM. Ya se ha dicho que el dos est´ grabado en un disco. En efecto, acuando se enciende el computador, el programa de la ROM extrae deldisco un programa generador del dos que, en l´ ıneas generales, da lossiguientes pasos, representados en la figura A.3: 1. Construye y carga en la memoria RAM la primera parte del sis- tema operativo, responsable de las operaciones de entrada y salida (BIOS ), as´ como de la gesti´n de archivos y directorios y de la ı o ejecuci´n de los programas (n´cleo). o u 2. Se busca en el disco un archivo llamado CONFIG.SYS y, si existe, se adoptan sus mandatos, estableciendo ciertos par´metros inicia- a les del dos e instalando algunos controladores de dispositivos, tal como veremos a continuaci´n. o 3. Se carga en la memoria el int´rprete de comandos; normalmente e es el programa COMMAND.COM, aunque en el archivo CONFIG.SYS podr´ haberse especificado otro. ıa 4. Finalmente, se busca en el disco el archivo AUTOEXEC.BAT y, si existe, se ejecuta este lote de ´rdenes. o Los archivos CONFIG.SYS y AUTOEXEC.BAT pueden ser modificados (ocreados) por el usuario para configurar el funcionamiento del dos seg´n usus necesidades, y obtener de ´l el m´ximo rendimiento. e a El siguiente ejemplo de archivo CONFIG.SYS BREAK=ON (1) COUNTRY=34 (2) BUFFERS=25,8 (3) FILES=20 (4) SHELL=C:DOSCOMMAND.COM (5) INSTALL=C:DOSKEYB.COM SP,,C:KEYBOARD.SYS (6) ı:opera as´
  • ´A.3. Configuracion del DOS 197  ¨ Principio © c . . . c ..................... ......... ......... ......... ......... ........ ¿Existe no s´ ı ......... .......... ............. ......... ......... ....... . .. ....... .......... ......... config.sys? .......... .......... .......... ........... .............. ....................... c c Se establecen los par´metros del DOS a Se usan los y se instalan los valores por controladores de defecto de DOS dispositivos indicados .c . . c ........ ................... ........ ........ ........ ........ ........ ........ ¿Existe ........ s´ ı ........ ........ ........ ........ ........ ........ .. no ....... ........ autoexec.bat? ........ ........ ........ .... ........ ........ ........ ............ ........ ........ ................... c Se ejecuta el lote de ´rdenes o E  c ¨  Fin © Figura A.3. Diagrama de flujo del arranque de dos.
  • 198 ´ ´ Apendice A. Introduccion al DOS 1. Activa la verificaci´n de interrupciones. o 2. Establece los formatos de fechas, horas, separadores y moneda del pa´ ıs. 3. Establece el tama˜o de ciertas zonas de memoria usadas durante n las operaciones de entrada y salida con el disco. 4. Establece el n´mero m´ximo de archivos que es posible tener abier- u a tos a la vez. 5. Elige el int´rprete de comandos usual. e 6. Finalmente, instala el programa controlador del teclado en caste- llano. Terminamos esta secci´n con un ejemplo de AUTOEXEC.BAT t´ o ıpico,que no necesita comentario alguno: CLS DATE TIME ECHO OFF PATH C:;C:dos;C:LOTES;C:UTILES;C:PASCAL PROMPT $P$G VER KEYB SP,,C:DOSKEYBOARD.SYS C:RATONMSMOUSE /2 INSTALL=C:DOSKEYB.COM SP,,C:KEYBOARD.SYS SET EDITOR=C:UTILESepsilonA.4 Otros aspectos de inter´s eA.4.1 Encauzamiento: tubos y dem´s a En principio, ordenes como DIR y TYPE dirigen su salida hacia la ´pantalla. El int´rprete de comandos del dos nos ofrece la posibilidad e
  • ´A.4. Otros aspectos de interes 199de desviar la salida de esas ´rdenes hacia otro dispositivo, mediante los ooperadores de redireccionamiento:. . . >DIR /w > lpt1:o confeccionar un archivo con ella:. . . >DIR /w > dirlist.txte incluso agregar esa informaci´n a la de un archivo ya existente: o. . . >DIR >> dirlist.txt Otras ordenes toman su entrada del teclado: ´. . . >DEL *.*¡Se eliminar´n todos los archivos del directorio! a¿Est´ usted seguro? (S/N) S a...> En cambio, si se tiene un archivo llamado si.txt, cuyo contenidoconsiste unicamente en el car´cter “s”: ´ a si.txt ; ses posible conseguir que una orden capte su entrada del mismo, as´ ı:. . . >DEL *.* < SI...> Los siguientes programas, llamados filtros, permiten sacar partidodel redireccionamiento: • SORT toma como entrada unas cuantas l´ ıneas del teclado o de un archivo de texto (donde el retorno de carro representa el final de l´ ınea y la combinaci´n Ctrl+Z la marca del final), escribiendo a o continuaci´n las mismas l´ o ıneas, pero en orden alfab´tico (ASCII): e . . . > SORT uno dos tres
  • 200 ´ ´ Apendice A. Introduccion al DOS ^Z dos tres uno ...> • MORE escribe su entrada en la pantalla, de p´gina en p´gina. a a • FIND busca en un archivo el texto especificado, mostrando todas las l´ ıneas que lo contengan: . . . >FIND "ornitorrinco" < australi.txt Al igual que se puede dirigir la salida mediante > y >>, es posibleconvertir un archivo en argumento de un programa:. . . > SORT < agenda.txtadela 2008586bernardo 7388196...zutano 5494389 Otra interesante utilidad consiste en convertir una salida por la pan-talla en el argumento de un programa:. . . >DIR | SORTpudi´ndose combinar con el redireccionamiento: e. . . >DIR | SORT > DirOrden.txt
  • ´A.4. Otros aspectos de interes 201A.4.2 Atributos y protecci´n de archivos o Los sistemas operativos ofrecen mecanismos de protecci´n de la in- oformaci´n que gestionan. Su inter´s se da mayormente en sistemas mul- o etiusuario, en los que resulta esencial mantener lo privado del trabajo delos usuarios, pero incluso en un sistema monousuario como el dos, sonde utilidad. En este sistema, cada archivo posee los siguientes atributos: • R es el atributo de “s´lo lectura”. Cuando se activa (+R), no se o puede borrar ni modificar el archivo que lo posee. La opci´n -R o desactiva este atributo. • La marca A indica que se desea hacer copia de seguridad, y es detectada por los programas backup y xcopy. El programa ATTRIB nos permite establecer y conocer los atributosde un archivo o de un grupo de ellos: [posici´n]ATTRIB [±R][±A] [archivo(s)] oEstos atributos se indican mediante letras: a archivo modificado r archivo de s´lo lectura o h archivo oculto: las ordenes DIR y COPY lo ignoran ´ s archivo del sistemaA.4.3 Ampliaciones de la memoria en los PCs Los primeros procesadores de IBM para computadores personales,tales como el 8088 y el 8086,5 fueron dise˜ados para direccionar 1 Mb de nmemoria; sin embargo, los desarrollos posteriores del hardware y el soft-ware se encontraron pronto con limitaciones de memoria. Este problemaoblig´ a introducir algunas ampliaciones del concepto de memoria. En oeste apartado se dar´ una visi´n sobre los diferentes tipos de memoria a oque se pueden encontrar en un PC trabajando bajo dos. Un PC puede tener tres tipos diferentes de memoria: convencional,expandida y extendida. 5 Los computadores que usan estos procesadores se conocen como XT.
  • 202 ´ ´ Apendice A. Introduccion al DOS 1. La memoria convencional es el primer megabyte de memoria del computador, con un procesador del tipo 8088 o superior. Este ´ era el unico tipo de memoria disponible en los primeros PCs; un ´ programa en ejecuci´n se carga en los primeros 640 Kb de memoria o convencional, y los restantes 384 Kb son utilizados por dispositivos de hardware. 2. La memoria expandida se a˜ade al computador, y no forma parte n de la memoria manejada directamente por el procesador. El acceso y la gesti´n de esta memoria se efect´ a mediante un subsistema o u especial hardware/software. 3. La memoria extendida es la que est´ por encima del primer me- a gabyte y s´lo puede accederse mediante un procesador6 80286 ´ o o superior.A continuaci´n se discute con mayor detalle la gesti´n de las memorias o oexpandida o extendida.Memoria expandida La memoria expandida es el tipo de memoria m´s flexible que un PC apuede tener, lo cual tambi´n hace que sea la m´s compleja de todas. Esta e amemoria permite al procesador acceder a m´s memoria de la disponible abajo el l´ ımite de los 640 Kb. La memoria expandida no puede ser gestionada directamente porel dos; para ello se utilizan programas (tales como EMM7 , EMM386y QEMM) que se cargan normalmente en el archivo de configuraci´noconfig.sys. Es importante conocer c´mo act´a el EMM para comprender mejor o ulas diferencias entre las memorias expandida y extendida. Cuando elEMM se ejecuta lo que hace es buscar un trozo de memoria sin utilizar enlos 384 Kb superiores del primer Mb; este trozo de memoria, usualmentede 64 Kb, se divide a su vez en cuatro p´ginas de memoria de 16 Kb que a 6 Los computadores que usan un procesador 80286 son conocidos como AT. 7 Siglas del ingl´s Expanded Memory Manager . e
  • ´A.4. Otros aspectos de interes 203hacen de pivotes para mover informaci´n entre la memoria convencional oy la memoria expandida. El programa EMM se encarga de gestionar elintercambio de informaci´n entre las p´ginas de memoria y la memoria o aexpandida. La instalaci´n de memoria expandida representa la instalaci´n de o oun subsistema completo de hardware y software. El hardware consisteen una tarjeta de memoria dise˜ada especialmente, y el software es el narchivo de gesti´n EMM. o La memoria expandida tiene caracter´ ısticas de una tarjeta de memo-ria normal y de un dispositivo perif´rico; tiene chips de memoria, pero ese accede a ella como si se tratara de un puerto de entrada/salida. Enla figura A.4 se intenta reflejar la forma en que el procesador ve a lamemoria expandida.Memoria extendida La memoria extendida es la que est´ por encima del primer megabyte ade memoria. S´lo puede accederse a ella a trav´s del modo protegido de o elos procesadores 80286 o superior. La diferencia m´s importante entre amemoria expandida y extendida es que los programas que trabajen enmodo real no pueden tener acceso directo a la memoria extendida. El modo protegido es usado para acceder a una mayor cantidad dememoria y de funciones.8 Cuando un procesador (80286 o superior) pasaa modo protegido entonces el sistema puede controlar la operaci´n de om´ltiples programas en la memoria y cambiar m´s f´cilmente de una u a atarea a otra. Estos procesadores tambi´n pueden ejecutar los programas eescritos para procesadores 8088 y 8086 trabajando en modo real, aunqueen este caso no pueden acceder directamente a la memoria superior alprimer Mb. Una de las principales ventajas de disponer de memoriaextendida en un PC trabajando en modo real es su uso como un discovirtual en la memoria RAM (tambi´n llamado RAM-drive). e Dado que el acceso a la memoria es mucho m´s r´pido que a un a adisco duro, el uso de un disco RAM disminuir´ el tiempo que tarde a 8 Utilizando la mayor anchura del bus de direcciones.
  • 204 ´ ´ Apendice A. Introduccion al DOS 1024 Kb ˆˆˆ P´gina de memoria EMM a ˆˆˆ ˆˆ ˆˆˆ ˆˆ ˆ ˆˆ 640 Kb ˆˆ Memoria Convencional 0 Kb Memoria expandida Figura A.4.un programa en cargar los trozos de c´digo necesarios para su correcto ofuncionamiento, pues la referencia a archivos contenidos en un discoRAM es la misma que si estuvieran en un disco duro. La desventajadel uso de un disco RAM es que, a diferencia de un disco duro o undisco flexible, la informaci´n escrita en un disco RAM es vol´til (s´lo o a opermanece mientras el computador est´ funcionando). e
  • Ap´ndice B eIntroducci´n a UNIX o El sistema operativo unix fue dise˜ado como un sistema de tiempo ncompartido con una interfaz de usuario (shell ) simple y manejable, dela que existen distintas versiones. Se trata de un sistema pensado inicialmente para equipos peque˜os, npor lo que los algoritmos fueron seleccionados por su simplicidad y nopor su eficacia o rapidez. Las ventajas que presenta unix sobre otros sistemas de gran difusi´n ose basan en que el software desarrollado sobre unix es f´cilmente trans- aportable entre m´quinas de distintos fabricantes, pues no necesita un ahardware determinado y puede correr sobre procesadores de distinta fi-losof´ ıa. No obstante lo anterior, los sistemas grandes hasta hace poco hanpreferido usar un sistema propietario a uno abierto, aunque la tendenciaactual apunta hacia la adopci´n generalizada de este sistema por parte ode todos los grandes fabricantes.B.1 Breve descripci´n t´cnica o e Considerando el sistema operativo como la capa de software situadadirectamente sobre el hardware, dentro de ´l podemos distinguir a su evez dos subcapas:
  • 206 ´ ´ Apendice B. Introduccion a UNIX • La parte m´s pr´xima al hardware es lo que se denomina n´cleo a o u (en ingl´s kernel ). En ´l es donde se encuentran los programas e e que controlan la gesti´n de archivos, la gesti´n de memoria y la o o planificaci´n del uso de la UCP. o • La parte m´s pr´xima al usuario, un intermediario llamado int´r- a o e prete de comandos o shell. El hecho de que sea el shell el int´rprete e entre el usuario y el sistema tiene ventajas bastante interesantes que se detallar´n m´s adelante. a aUna caracter´ıstica importante de unix es que todo se considera como unarchivo (desde los ficheros de datos hasta los perif´ricos y las unidades ede disco flexible). Un archivo para unix no es m´s que una secuencia de abytes sobre la que el sistema no impone estructura alguna, ni asigna sig-nificado a su contenido; el significado de los bytes depende unicamente ´de los programas que interpretan el archivo. Esta filosof´ permite que ıahasta los distintos dispositivos hardware tengan un sitio dentro del sis-tema de archivos. El sistema de archivos est´ organizado en estructura de arbol1 , y per- a ´mite nombrar archivos usando rutas absolutas, que parten del directoriora´ y rutas relativas, que son las que parten del directorio actual. ız, Es precisamente en la gesti´n de procesos donde mejor se puede apre- ociar la potencia de unix, pues aparecen los mecanismos que permiten quevarios procesos trabajen sobre la m´quina simult´neamente optimizando a aas´ el uso de la UCP. ı Unix emplea un sistema muy simple para crear y manipular procesos.´Estos se representan mediante bloques de control, y la informaci´n que oexiste en ellos se utiliza para la planificaci´n de la UCP. o El planificador de la UCP est´ dise˜ado para facilitar el procesa- a nmiento multitarea asignando fracciones de tiempo a los procesos me-diante el algoritmo round-robin: cada proceso tiene una prioridad aso-ciada, de forma que cuanto m´s alto es el n´mero asignado, menor es a u 1 dos tom´ esta caracter´ o ıstica del sistema unix.
  • ´B.2. Una sesion con UNIX 207la prioridad, y cuanto m´s tiempo de la UCP ha consumido un proceso, amenor se hace su prioridad. No todos los sistemas unix utilizan el mismo mecanismo para lagesti´n de la memoria. Los primeros sistemas utilizaban exclusivamente oel mecanismo de swapping: un proceso se retira tanto m´s f´cilmente a acuanto m´s tiempo lleve ocioso o haya estado en la memoria principal. a Otros sistemas utilizan la paginaci´n (v´ase el apartado 4.2.6) para o eeliminar la fragmentaci´n externa, existiendo sistemas que utilizan el oprocedimiento de paginaci´n por demanda (en ingl´s demand-paging). o eB.2 Una sesi´n con UNIX o Puesto que unix es un sistema multiusuario, lo que debemos hacerantes de iniciar una sesi´n de trabajo es presentarnos al sistema. Al oarrancar el computador, o al efectuar una conexi´n remota, unix pedir´ o anuestro nombre de usuario del siguiente modo:login:el usuario debe responder con el nombre de usuario que le ha sido asig-nado por el administrador del sistema. Tras introducir el nombre deusuario, supongamos que es popeye, el sistema pedir´ nuestra clave de aacceso:login:popeyepassword: Como es l´gico, el sistema no nos permitir´ acceder a menos que o ase introduzcan un nombre de usuario y su clave de acceso correctos(debe tenerse en cuenta que unix distingue entre letras may´sculas y umin´sculas) que el administrador debe habernos proporcionado. En la uprimera conexi´n al sistema, lo primero que debemos hacer es cambiar la oclave de acceso de modo que nadie m´s la conozca (esto se hace mediante ael comando passwd). Si todo ha ido bien, el sistema aceptar´ la petici´n de entrada, nos co- a olocar´ en nuestro directorio de trabajo y en pantalla aparecer´ el prompt a adel sistema, que en el shell sh generalmente es $.
  • 208 ´ ´ Apendice B. Introduccion a UNIX Un servicio importante que ofrece todo sistema unix es el de ayudainteractiva, llamada tambi´n ayuda en l´ 2 . El comando man hace una e ıneallamada al manual, y puede ser usado para obtener informaci´n acerca ode un comando, su sintaxis y sus posibles opciones (flags), su sem´ntica ae incluso de sus bugs o situaciones en las que dicho comando no realizasu labor correctamente. Por ejemplo,$man passwdda completa informaci´n acerca del comando passwd, recu´rdese que $ o ees el prompt del sistema, y no hay que teclearlo. En un sistema multiusuario, uno puede estar interesado por saber qu´ epersonas est´n trabajando simult´neamente en el sistema. Esto se puede a asaber, y se dispone de dos comandos para ello: who y finger: la ordenwho proporciona los nombres de usuario de todas aquellas personas quese encuentran conectadas al sistema, mientras que finger proporcionainformaci´n m´s detallada acerca de ellas. o a Una vez que sepamos qui´nes est´n conectados al sistema, podemos e aestablecer contacto directo con ellos mediante los comandos write otalk, e incluso evitar ser molestados con mensajes de otros usuarios des-activando nuestra capacidad para recibir mensajes mediante mesg -n. Al terminar una sesi´n de trabajo se debe cerrar la conexi´n con el o osistema mediante exit o logout para impedir que alguien no autorizadopueda acceder al sistema. Sobre el asunto de la seguridad de los archivosse tratar´ en la siguiente secci´n. a oB.3 Gesti´n de archivos o Este apartado resultar´ bastante f´cil a aquellos usuarios que est´n a a efamiliarizados con dos, ya que muchas de las caracter´ ısticas del sistemade archivos de unix fueron adoptadas por dos. 2 En ingl´s, on line. e
  • ´B.3. Gestion de archivos 209B.3.1 Identificadores El nombre de un archivo puede ser casi cualquier secuencia de ca-racteres, aunque dos nombres se consideran el mismo si coinciden susprimeros catorce caracteres. Est´ permitido usar cualquier car´cter AS- a aCII en el nombre de un archivo salvo “/”, que sirve para indicar elcamino (absoluto o relativo) del nombre de un archivo; sin embargo, esmejor no complicarse la vida y usar s´lo caracteres alfanum´ricos. o e Del mismo modo que en dos, se puede hacer uso de caracteres co-mod´ para referirse a un conjunto de archivos cuyo nombre verifica ıncierto patr´n; esta labor la realiza el shell, y se detallar´ m´s ade- o a alante. Por ultimo, no se debe olvidar que unix distingue entre letras ´may´sculas y min´sculas. u uB.3.2 Tipos de archivos en UNIX En unix podemos encontrar varios tipos de archivos: los archivosordinarios, los directorios, los v´ ınculos, los v´ ınculos simb´licos y los ar- ochivos especiales. De los archivos ordinarios y de los directorios pocohay que a˜adir a lo dicho en 4.2.2, por lo cual s´lo incidiremos en los n ov´ ınculos, simb´licos o no, y los archivos especiales. oV´ ınculos.- Un v´ ınculo (en ingl´s link ) no es m´s que otro nombre para e a un archivo. Esto tiene inter´s, adem´s del evidente ahorro de espa- e a cio de almacenamiento, en aquellas situaciones en las que m´s de a una persona est´ trabajando sobre un mismo archivo, por ejemplo a un cap´ıtulo de un libro, cada autor puede tener en su directorio de trabajo un archivo (llamado por ellos respectivamente cap1.tex, introduc.tex, ConceptosGenerales.tex, . . . ) que “apunte” al mismo archivo en el disco.V´ ınculos simb´licos.- Este tipo de archivos s´lo contiene el nombre o o de otro archivo, que es el que se utiliza cuando el sistema operativo trabaja sobre el v´ ınculo simb´lico. Una aplicaci´n bastante util de o o ´ los v´ ınculos simb´licos, que tambi´n aclarar´ su funci´n, aparece o e a o cuando el administrador realiza una modificaci´n importante en la o estructura de directorios; hasta que todos los usuarios se adapten
  • 210 ´ ´ Apendice B. Introduccion a UNIX a la nueva ordenaci´n, los v´ o ınculos simb´licos guiar´n por la nueva o a estructura de arbol a los usuarios que a´n no est´n al tanto de la ´ u e actualizaci´n. oArchivos especiales.- Los archivos especiales representan dispositivos f´ ısicos tales como terminales, impresoras, unidades de disco ex- terno, unidades de cinta magn´tica o lectores de discos compactos. e Esta forma de manejar el hardware permite trabajar al margen de las particularidades de los dispositivos f´ ısicos.B.3.3 Permisos asociados con un archivo Cada archivo de unix tiene una serie de permisos asociados con ´l.eEstos permisos otorgan la posibilidad de que el archivo pueda ser le´ ıdo,modificado o ejecutado, tanto por el propietario del archivo como porotros usuarios. Los permisos asociados con un archivo pueden revisarse con la opci´n o-l del comando ls:, que da un listado de todos los archivos del directorioactual junto con informaci´n adicional, como se muestra a continuaci´n: o o$ls -l-rw-r----- 12 popeye 79850 Sep 18 20:50 ./tema1-rw-r----- 11 popeye 76414 Sep 28 12:01 ./tema2drw-r----- 1 popeye 1024 Sep 1 19:32 ./fig Los permisos asociados a cada archivo aparecen codificados en laforma de una lista de caracteres: 1. El primer car´cter indica el tipo de archivo: el signo - indica que a se trata de un archivo ordinario, mientras que d indica que se trata de un directorio, los v´ınculos tienen una l y los archivos especiales tienen una b o una c, seg´n se trate de dispositivos de u almacenamiento por bloques o por caracteres. 2. Los siguientes tres caracteres, rw-, representan los permisos del due˜o del archivo: r indica permiso de lectura, w permiso de escri- n tura y - indica que el archivo no es ejecutable; si lo fuera aparecer´ ıa una x en esa posici´n. o
  • ´B.3. Gestion de archivos 211 3. Los tres caracteres siguientes indican los permisos de los usua- rios del grupo del due˜o del archivo, y los tres ultimos indican n ´ los permisos para otros usuarios, respectivamente. En el caso de los archivos relacionados m´s arriba se observa que los componen- a tes del grupo s´lo tienen permiso de lectura, no de escritura; los o otros usuarios no pueden acceder a estos archivos, ni siquiera para leerlos.En relaci´n con los permisos de archivos se introduce el comando chmod, oque sirve para cambiar los permisos asociados con un archivo. La sintaxisde este comando es la siguiente$chmod nmk archivodonde n, m y k son n´meros del 0 al 7, que indican los permisos del udue˜o, de su grupo y de otros, respectivamente. Cada d´ n ıgito octal (puesvar´ entre 0 y 7) se determina sumando 4 para activar el permiso de ıalectura, sumando 2 para activar el permiso de escritura y sumando 1para el permiso de ejecuci´n; as´ pues, para asignar al archivo prueba o ılos permisos -rwxrw-r-- tendr´ ıamos que escribir$chmod 764 prueba Naturalmente, los permisos s´lo puede cambiarlos el propietario del oarchivo (y el administrador del sistema). As´ por ejemplo, si “prest´- ı asemos” alguno de nuestros archivos a otro usuario, ´ste no podr´ cam- e ıabiar sus permisos. Para que pudiera hacerlo, se deber´ cambiar la pro- ıapiedad del archivo; por ejemplo, si el usuario popeye quiere ceder lapropiedad del archivo espinacas al usuario cocoliso deber´ hacer uso adel comando chown (del ingl´s CHange OWNer ): e$chown cocoliso espinacasB.3.4 ´ Ordenes para la gesti´n de archivos o Debido a que el uso principal de unix es manejar archivos, exis-ten muchos comandos para manejarlos. Los nombres de los comandossuelen ser bastante similares a los de dos y generalmente consisten enabreviaturas de su funci´n. A continuaci´n se presentan algunos de los o o
  • 212 ´ ´ Apendice B. Introduccion a UNIXm´s com´nmente utilizados; la mayor parte de ellos tienen opciones, que a upueden verse usando man: • Los comandos m´s frecuentes para el manejo de directorios son: a – cd (Change Directory) sirve para cambiar el directorio actual. – pwd (Print Work Directory), que proporciona el path del di- rectorio actual. – mkdir (del ingl´s MaKe DIRectory), para crear un subdirec- e torio en el directorio actual. – rmdir (ReMove DIRectory), para borrar un subdirectorio del directorio actual. • Los comandos principales para el manejo de archivos son: – cat para conCATenar archivos en pantalla, esto es, mostrar en la pantalla uno o varios archivos sucesivamente. – cp para CoPiar un archivo. – find para encontrar (en ingl´s find ) un archivo dentro del e a ´rbol de directorios mediante su nombre o por alguna otra caracter´ ıstica. – ln para establecer un v´ ınculo (en ingl´s LiNk ) o un v´ e ınculo simb´lico. o – ls para LiStar todos los archivos de un directorio. – more para listar el contenido de un archivo pantalla por pan- talla. – mv para trasladar (“MoVer” en sentido f´ısico) un archivo de un directorio a otro, o bien renombrar un archivo. – rm para eliminar (en ingl´s ReMove) un archivo del sistema e de directorios.B.4 El shell de UNIX El shell, como intermediario entre el usuario y el n´cleo del sistema, ues el programa que durante m´s tiempo se estar´ usando durante una a a
  • B.4. El shell de UNIX 213sesi´n de trabajo con unix. En esta secci´n se hace una breve intro- o oducci´n a las caracter´ o ısticas principales del (los) shell de unix. Existen distintas versiones de shell, cada una de ellas con sus propiasparticularidades; en esta secci´n s´lo se presentar´ sucintamente el shell o o ash del Sistema V. Otros shell, como el shell C (csh) y el shell Korn ksh,tienen las mismas caracter´ ısticas b´sicas que sh y proporcionan algunas autilidades adicionales. Cada vez que se lanza sh se ejecuta el archivo .profile (el nombrecomienza con un punto) que hace las veces del archivo autoexec.bat dedos. Este archivo se utiliza para la personalizaci´n del entorno de tra- obajo: la definici´n de la variable PATH, fijar el tipo de terminal, cambiar oel prompt por defecto, . . .B.4.1 Encauzamiento de la entrada y salida Una primera utilidad del shell es la posibilidad de redireccionamientode entrada/salida. Los operadores de redirecci´n son los mismos que los ode dos: la salida se gestiona con > o con >> y la entrada se indica con <.Asimismo, es posible la concatenaci´n de programas, enviando la salida ode uno a la entrada del siguiente mediante el s´ ımbolo |. La idea, queconsiste en hacer que la salida de un comando sea la entrada de otro sinnecesidad de utilizar archivos temporales, ya debe ser conocida por losusuarios de dos.B.4.2 Caracteres comod´ ın Otra importante utilidad que podemos obtener de un shell es el usode caracteres comod´ El shell permite el uso de caracteres comod´ de ın. ıntres tipos: *, ? y [...]. El signo de interrogaci´n identifica a cualquier car´cter, del mismo o amodo que en dos; sin embargo, el asterisco es interpretado de formadistinta, como muestra el siguiente ejemplo:$ls cap*tex
  • 214 ´ ´ Apendice B. Introduccion a UNIXque hace un listado de todos los archivos del directorio actual cuyo nom-bre comience por cap y termine por tex.3 El n´cleo no “ve” el asterisco, u“*”, ya que ´ste es interpretado por el shell enviando al n´cleo los ar- e uchivos que satisfacen el patr´n especificado. o El ultimo tipo de car´cter comod´ permite indicar un rango de ca- ´ a ınracteres para confrontar con un car´cter del nombre de un archivo, por aejemplo la orden$cat cap[1-4].tex > parte1.texconcatena los archivos cap1.tex, cap2.tex, cap3.tex y cap4.tex poni-´ndolos en el archivo parte1.tex. Entre los corchetes se pueden espe-ecificar rangos tanto num´ricos como alfab´ticos. e eB.4.3 Guiones de shell Las caracter´ ısticas de un shell permiten considerarlo como un len-guaje de programaci´n, en el sentido de que es posible agrupar comandos oque realizan tareas sencillas, definiendo as´ tareas m´s complejas. Esto se ı aconsigue mediante los llamados guiones de shell (en ingl´s shell scripts), eque son la contrapartida unix de los archivos de extensi´n .bat de dos. oB.5 UNIX como sistema multitarea Como sistema multitarea unix proporciona herramientas para poderejecutar varios programas simult´neamente; el shell permite, de forma af´cil, controlar la ejecuci´n de los distintos procesos mediante la in- a otroducci´n del concepto de ejecuci´n en modo subordinado (en ingl´s o o ebackground ). Cuando se ha de ejecutar un comando que va a durar mucho tiempo,como por ejemplo la b´squeda de un archivo determinado por toda la uestructura de directorios, es conveniente ponerlo en modo subordinado,de modo que no haya que esperar a que termine para poder seguir traba-jando con el shell. El s´ ımbolo & al final de una l´ ınea de comandos ejecutalos procesos en modo subordinado. Por ejemplo la l´ ınea de comandos 3 N´tese la diferencia con dos. o
  • B.5. UNIX como sistema multitarea 215$find . -name perdido -print> hallado &[1] 1326$se ejecuta en modo subordinado buscando recursivamente en el direc-torio actual y sus subdirectorios (esto est´ indicado por el punto) el aarchivo perdido y, si lo encuentra, imprime su path absoluto en el ar-chivo hallado. Una vez que se ha creado un proceso en modo subordinado, el sistemaimprime dos n´meros y presenta el prompt a la espera de nuevas ´rdenes. u oEl n´mero entre corchetes es el identificador del trabajo y el otro n´mero u ues el identificador del proceso. El comando jobs visualiza todos los trabajos, junto con su identi-ficador, que se est´n ejecutando en el shell actual. El identificador de atrabajo se usa como argumento de comandos que permiten terminar untrabajo subordinado (kill); suspenderlo sin terminar (stop); reanudaren modo subordinado un trabajo suspendido (bg); y pasar un trabajode modo subordinado a modo principal (fg). Por ejemplo$stop %1suspende el trabajo con el identificador [1], y$fg %1reanuda el trabajo en modo principal. (N´tese que se usa el signo % oantes de introducir el identificador de trabajo.) Para la gesti´n eficiente del sistema, podemos modificar la priori- odad con la que se ejecutan los procesos haciendo uso de los siguientescomandos:at hora orden indica al sistema a qu´ hora se deber´ ejecutar la orden. e anice orden ejecuta la orden recibida con una prioridad menor de lo normal. Esto es util para ejecutar procesos que consumen gran ´ cantidad de recursos y no corren prisa.
  • 216 ´ ´ Apendice B. Introduccion a UNIXnohup orden ejecuta la orden recibida aunque el usuario se desconecte ´ del sistema durante la ejecuci´n. Util para ejecutar procesos que o consumen gran cantidad de tiempo.B.6 Conclusi´n o Con todo lo anterior, lo m´s importante es comprender que, en gene- aral, cuando se emplea la palabra unix no se hace una simple referencia aln´cleo del sistema operativo ni siquiera en sentido amplio, sino al n´cleo u udel sistema junto con programas de aplicaciones destinados a crear unentorno de uso general. Lo m´s importante de esta riqueza adicional puede resumirse en la aposibilidad de que varios usuarios usen el computador al mismo tiempo(cosa que no puede hacerse en un pc bajo dos) y en la posibilidad deque un usuario haga varias cosas a la vez se˜alando las prioridades que nse desea; esto es, se trata de un sistema multitarea.B.7 Prontuario de comandos UNIX • Gesti´n de archivos y directorios. o cat archivo Concatena y muestra en la pantalla los archivos indicados. cd path Cambia el directorio actual. chmod nmk archivo Cambia los permisos (nmk) del archivo. chown usuario archivo Cede a usuario la propiedad del archivo. compress archivo Comprime el archivo.
  • B.7. Prontuario de comandos UNIX 217 cp (archivo archivo | archivo directorio) Realiza una copia del primer archivo bajo el nombre del se- gundo o copia el archivo en el directorio especificado. ln archivo archivo Crea un v´ınculo entre los archivos dados. lp archivo Imprime el archivo en papel. ls directorio Lista el contenido de un directorio. mkdir directorio Crea un subdirectorio en el directorio actual. more archivo Imprime el archivo especificado pantalla por pantalla. mv (archivo archivo | archivo directorio) Renombra el primer archivo con el nombre del segundo o mueve un archivo a un directorio. pwd Muestra el nombre del directorio actual. rm archivo Elimina un archivo. rmdir directorio Elimina un directorio. uncompress archivo Descomprime el archivo. zcat archivo Muestra en pantalla la version descomprimida del archivo dado manteni´ndolo comprimido. e • Comunicaci´n con otros usuarios. o mail Gesti´n del correo electr´nico. o o
  • 218 ´ ´ Apendice B. Introduccion a UNIX mesg [-y | -n] Activa o desactiva la recepci´n de mensajes. o talk usuario Establece una conexi´n con otro usuario para intercambiar o mensajes entre terminales. wall mensaje Env´ ese mensaje a todos los usuarios del sistema. ıa write usuario Establece una conexi´n con otro usuario para intercambiar o mensajes. • Utilidades. cal [mes][a˜o] n Imprime la hoja del calendario del mes y a˜o indicado. n date [fecha y hora] Imprime la fecha y hora actuales o especifica la nueva hora y fecha. finger Muestra informaci´n detallada acerca de los usuarios conec- o tados al sistema. who Muestra los nombres de presentaci´n de los usuarios conecta- o dos al sistema. • Ayuda. man comando Imprime en la pantalla la p´gina del manual relativa al co- a mando dado como argumento. • Gesti´n de informaci´n. o o awk Orden para la b´squeda y procesado de patrones. u
  • B.7. Prontuario de comandos UNIX 219 cmp archivo archivo Compara los archivos y muestra la primera diferencia. comm [opciones] archivo archivo Muestra l´ıneas comunes o diferentes de los archivos dados. diff archivo archivo Muestra los cambios necesarios para igualar los dos archivos dados. echo cadena Escribe sobre la pantalla la cadena especificada. find [opciones] [caracter´ ıstica de archivo] Encuentra un archivo a partir de una de sus caracter´ ısticas dentro de un camino especificado. grep,egrep,fgrep expresi´n archivo o Busca apariciones de una expresi´n dentro de un archivo. o sort [opciones] archivos ınea por l´ Ordena el contenido de uno o varios archivos, l´ ınea. tail archivo Visualiza en pantalla el final de un archivo. uniq entrada salida Filtra las l´ ıneas repetidas del archivo de entrada y las escribe en el de salida. wc archivo Cuenta l´ ıneas, palabras y caracteres de un archivo. • Gesti´n de trabajos y procesos. o at hora orden Indica al sistema la hora en la que se deber´n procesar las a siguientes ´rdenes. o bg identificador Pasa el trabajo indicado a modo subordinado. Su nombre viene del ingl´s background. e
  • 220 ´ ´ Apendice B. Introduccion a UNIX fg identificador Pasa el trabajo indicado a modo principal. Su nombre viene del ingl´s foreground. e jobs Muestra el estado de los trabajos subordinados. kill identificador Termina el trabajo indicado. nice comando Ejecuta un comando con prioridad menor de la normal. nohup comando Ejecuta un comando, incluso si despu´s se suspende la sesi´n. e o ps Muestra el estado de los procesos actuales. stop identificador Suspende el trabajo indicado. tee archivo Copia la entrada est´ndar a la salida est´ndar, adem´s de al a a a archivo. time comando Informa acerca del uso de la UCP durante la ejecuci´n de un o comando. • Procesamiento de textos. ed Editor de archivos. nroff, troff Procesadores de formateo de texto. sed Editor en flujo. vi Editor de pantalla.
  • B.8. Diferencias entre DOS y UNIX 221 Funci´n o Comando dos Comando unix Muestra la fecha DATE date Muestra la hora TIME date Muestra el contenido de un DIR ls directorio Muestra el directorio actual CD pwd Cambia el directorio actual CD path cd path Crea un nuevo directorio MD, MKDIR dir mkdir dir Suprime un directorio RD, RMDIR dir rmdir, rm -r dir Muestra un archivo p´gina a a MORE more p´gina a Copia un archivo COPY cp Elimina un archivo DEL rm Compara dos archivos COMP, FC diff, cmp Renombrar un archivo REN(AME) mv Mover un archivo mv Figura B.1. Comandos b´sicos de dos y unix. aB.8 Diferencias entre DOS y UNIX Aunque dos est´ dise˜ado para sistemas PC monousuario, muchas a nde sus caracter´ ısticas est´n fuertemente influidas por el sistema unix. En aparticular, dos se parece a unix en el dise˜o de su sistema de archivos, nint´rprete de comandos y en algunas de las ´rdenes de manipulaci´n de e o oarchivos. Debido a esto, un usuario familiarizado con las ordenes de dos ´no tendr´ demasiados problemas para comenzar a manejar un sistema aunix, o viceversa. La mayor parte de los comandos usuales de dos tienen su contrapar-tida unix, e incluso tienen nombres muy similares, por ejemplo mkdirest´ presente en ambos sistemas; la tabla de la figura B.1 muestra la aequivalencia entre la mayor´ de los comandos m´s usuales de dos y ıa aunix. Dejando a un lado las caracter´ ısticas multitarea y multiusuario de
  • 222 ´ ´ Apendice B. Introduccion a UNIXunix, las diferencias m´s importantes entre dos y unix para la l´ a ınea decomandos y la gesti´n de archivos se enumeran a continuaci´n: o o 1. Distinci´n entre may´sculas y min´sculas: unix es sensible a las o u u diferencias entre letras may´sculas y min´sculas, mientras que dos u u no lo es. 2. Diagonal y diagonal inversa: dos usa la diagonal inversa para los paths, por ejemplo en juegostetris, mientras que unix usa la diagonal /, el path anterior se escribir´ /juegos/tetris. ıa 3. Nombres de archivos: en dos los nombres de archivos est´n limi- a tados a ocho caracteres alfanum´ricos, seguidos opcionalmente de e un punto y una extensi´n de tres letras; en unix los nombres de o archivos pueden contener hasta catorce caracteres, pueden incluir uno o m´s puntos que no se tratan especialmente salvo cuando es a el primer car´cter del nombre. a 4. S´ımbolos comod´ ambos sistemas permiten el uso de * o ? para ın: especificar conjuntos de nombres de archivos, aunque dos es algo m´s r´ a ıgido con *, que s´lo se interpreta al final del nombre o la o extensi´n de una plantilla. Unix dispone adem´s de una notaci´n o a o especial para indicar un rango de caracteres: as´ pues, cap[1-3] ı indicar´ los archivos cap1, cap2 y cap3. a
  • Bibliograf´ ıa[ACM91] ACM/IEEE. Computing curricula. Communications of the ACM, 34(6):69–84, 1991.[Bai90] R. Bailey. Functional Programming with Hope. Ellis Horwood Ltd, 1990.[Ber86] J. Bernstein. La m´quina anal´ a ıtica. Editorial Labor. Barce- lona, 1986.[Bis91] P. Bishop. Conceptos de Inform´tica. Anaya, 1991. a[BW88] R. Bird y P. Wadler. Introduction to Functional Program- ming. Prentice Hall International (UK) Ltd, 1988.[Bye90] R. A. Byers. Introducci´n a las bases de datos con dBASEIII o plus. McGraw-Hill, 1990.[CM87] W. F. Clocksin y C. S. Mellish. Programaci´n en Prolog. o Gustavo Gili, S. A., 1987.[Com87] Computaci´n avanzada y perspectivas de futuro. Prensa o Cient´ ıfica, S.A. Barcelona, Dic. 1987. N´mero especial de u Investigaci´n y Ciencia, dedicado a este tema. o[Dat93] C. J. Date. An Introduction to Database System. Volume 1, Addison-Wesley, 1993.[DCG*89] P. Denning, D. E. Comer, D. Gries, M. C. Mulder, A. B. Tuc- ker, A. J. Turner y P.R. Young. Computing as a discipline. Communications of the ACM, 32(1):9–23, 1989.
  • 224 Bibliograf´ ıa[DDH72] O. J. Dahl, E. W. Dijkstra y C. A. R. Hoare. Structured Programming. Academic Press Ltd., 1972.[Dei93] H. M. Deitel. Sistemas operativos. Addison Wesley iberoa- mericana, 1993.[Dew88] A. K. Dewdney. De la creaci´n y ruptura de claves: primera o parte. Investigaci´n y Ciencia, 147:136–141, 1988. o[Dew89] A. K. Dewdney. Creaci´n y ruptura de claves: segunda parte. o Investigaci´n y Ciencia, 148:95–99, 1989. o[FM87] G. C. Fox y P. C. Messina. Arquitecturas avanzadas de com- putadores. Investigaci´n y Ciencia, 135:24–33, 1987. o[For70] G. E. Forsyte. Pitfalls in Computation, or why a math book isn’t enough. Technical Report, Computer Science Depart- ment, Stanford University, 1970.[FSV87] G. Fern´ndez y F. S´ez Vacas. Fundamentos de Inform´tia. a a a Alianza Editorial. Madrid, 1987.[GGSV93] J. Galve, J. C. Gonz´lez, A. S´nchez y J. A. Vel´zquez. Al- a a a gor´ ıtmica. Dise˜o y an´lisis de algoritmos funcionales e im- n a perativos. ra-ma, 1993.[GL86] L. Goldschlager y A. Lister. Introducci´n moderna a la Cien- o cia de la Computaci´n con un enfoque algor´ o ıtmico. Prentice- Hall hispanoamericana. S.A. M´jico, 1986. e[Gol91] D. Goldberg. What every computer scientist should know about floating-point arithmetic. ACM Computing Surveys, 23(1):5–48, 1991.[Gro86] P. Grogono. Programaci´n en Pascal. Addison Wesley Ibe- o roamericana, 1986.[HH89] C. J. Hursch y J. L. Hursch. SQL. El lenguaje de consulta estructurado. ra-ma, 1989.
  • Bibliograf´ ıa 225[Jam90] K. Jamsa. DOS. Manual de referencia. McGraw-Hill, 1990.[JM90] B. Jacomy y J. Marguin. De la machine a calculer de Pascal a ` ` l’ ordinateur. Mus`e National des Techniques, CNAM. Paris, e 1990.[KM86] U. W. Kulisch y W. L. Miranker. The arithmetic of the digital computer: a new approach. SIAM Review, 24(1):671–677, 1986.[Knu72] D. E. Knuth. Ancient babylonian algorithms. Communica- tions of the ACM, 15(7), 1972.[KP87] B.W. Kernighan y R. Pike. El entorno de programaci´n unix. o Prentice Hall Hispanoamericana, 1987.[KS93] H. F. Korth y A. Silberschatz. Fundamentos de bases de datos. McGraw-Hill, 1993.[La 91] La revoluci´n inform´tica. Prensa Cient´ o a ıfica, S.A. Barcelona, Nov. 1991. N´mero especial de Investigaci´n y Ciencia, de- u o dicado a la teleinform´tica. a[Lis86] A. M. Lister. Fundamentos de los sistemas operativos. Ed. Gustavo Gili, 1986.[MA85] B. Mendiz´bal Allende. Diccionario Oxford de Inform´tica. a a D´ de Santos, S.A., 1985. ıaz[Mac88] A. R. Mackintosh. El computador del Dr. Atanasoff. Inves- tigaci´n y Ciencia, 145:86–93, 1988. o[Mei73] J. P. Meinadier. Estructura y funcionamiento de los compu- tadores digitales. Editorial AC, 1973.[Mil89] M. Milenkovi´. Sistemas operativos: conceptos y dise˜o. c n McGraw-Hill, 1989.[MP93] A. de Miguel y M. Piattini. Concepci´n y dise˜o de bases de o n datos: del modelo E/R al modelo relacional. ra-ma, 1993.
  • 226 Bibliograf´ ıa[MW83] A. Mayne y M. Wood. Introducci´n a las bases de datos o relacionales. D´ de Santos, 1983. ıaz[MW84] C. L. Morgan y M. Waite. Introducci´n al microprocesador o 8086/8088 (16 bits). McGraw-Hill, 1984.[Pas86] G. A. Pascoe. Elements of object-oriented programming. BYTE, 11(8):139–144, 1986.[PLT89] A. Prieto, A. Lloris y J. Torres. Introducci´n a la Inform´tica. o a McGraw-Hill, 1989.[PS91] J. L. Peterson y A. Silberschapz. Sistemas operativos: con- ceptos fundamentales. Ed. Revert´, 1991. e[RRF91] K.H. Rosen, R.R. Rosinski y J.M. Farber. UNIX Sistema V versi´n 4. Mc Graw Hill, 1991. o[Rum83] S. M. Rump. How reliable are results of computers? Techni- cal Report, Jarbuch berblicke Mathematik, 1983. Bibliogra- phisches. Institut Mannheim, 1983.[SH90] C. M. Stone y D. Hentchel. Database wars revisited. BYTE, 15(10):233–244, 1990.[Sim85] G. L. Simmons. Los ordenadores de la quinta generaci´n. o D´ de Santos. Madrid, 1985. ıaz[SS86] L. Sterling y E. Shapiro. The art of Prolog. MIT Press, 1986.[Stu75] Study Group on Data Base Management Systems. Intern re- port. ACM, 1975.[Swa93] D. D. Swade. La computadora mec´nica de Charles Babbage. a Investigaci´n y Ciencia, 199:66–71, 1993. o[Tes84] L. G. Tesler. Lenguajes de programaci´n. Investigaci´n y o o Ciencia, 98:36–45, 1984.[Tho89] D. Thomas. What’s an object? BYTE, 14(3):231–240, 1989.
  • Bibliograf´ ıa 227[Tur92] Turbo Pascal User Guide. Borland International Inc., 1992.[VJ85] A. Vaquero y L. Joyanes. Inform´tica. Glosario de t´rminos a e y siglas. McGraw-Hill, 1985.[Weg89] P. Wegner. Learning the language. BYTE, 14(3):245–253, 1989.[Wir86a] N. Wirth. Algoritmos + Estructuras de datos = Programas. Ediciones del Castillo. Madrid, 1986.[Wir86b] N. Wirth. Introducci´n a la programaci´n sistem´tica. El o o a Ateneo, 1986.
  • ´Indice alfab´tico eacceso MIMD, 96 directo, 73, 107 memoria compartida, 96 secuencial, 73, 107 memoria distribuida, 97acciones SIMD, 96 sem´nticas, 142 a sincr´nica, 96 oacumulador, 78 ASCII, 46a´lgebra relacional, 161 at, 215, 219algoritmo, 18, 22, 23 atributos, 109, 201 de Euclides, 27 ATTRIB, 201an´lisis a AUTOEXEC.BAT, 196 l´xico, 142 e awk, 218 sint´ctico, 142 a ayudaarchivo, 106, 151 en l´ ınea, 208 de ´ındices, 163 interactiva, 208 del DOS, 182 en UNIX background, 214 directorios, 209 backup, 73, 108 ordinarios, 209 base de datos, 20, 151, 152 v´ ınculo, 209 BASIC, 124 ınculo especial, 210 v´ BAT, 195 v´ ınculo simb´lico, 209 o batch, 195arquitectura baudio, 72 basada en el MIMD, 97 bg, 215, 219 de flujo de datos, 97 binaria de reducci´n, 97 o variable, 30 dirigida por la demanda, 97 BIOS, 195, 196 h´ıbrido SIMD-MIMD, 97 bit, 30
  • ´ ´Indice alfabetico 229 de paridad, 50 chmod, 211, 216bloqueo, 106 chown, 216BNF, notaci´n, 132 o cinta magn´tica, 73 eBREAK, 194 CLS, 190buffer, 106 cmp, 219bus, 61, 63, 74 COBOL, 124, 126 de control, 63, 75 coma de datos, 63, 75 fija, 39 de direcciones, 63, 75 flotante, 40byte, 30 comm, 219 COMP, 192C, 124 compactaci´n, 113 oC++, 131 compartici´n, 113 oc´lculo relacional, 162 a compilaci´n oc´digo o en la memoria principal, 147 autocorrector, 51 autodetector, 51 en un disco, 147 corrector, 50 separada, 147 de Hamming, 51 compilador, 144, 145 detector, 50 complemento dos entre tres, 51 a dos, 38 fuente, 144 aut´ntico, 37 e objeto, 144 en base dos, 38 p de n, 51 restringido, 36 redundante, 49 compress, 216c´mputo, 24 o computador, 18call, 218 comunicaci´nocamino, 108, 189 en paralelo, 75 absoluto, 108 en serie, 75 relativo, 108 concurrencia de procesos, 105campo, 151 CONFIG.SYS, 196CASE, 164 conjunto de entidades, 155cat, 212, 216 consola, 72CD, 193 contador de programa, 68cd, 212, 216 contrase˜as, 109 nCHDIR, 193 copias de seguridad, 108
  • 230 ´ ´ Indice alfabeticocoprocesador, 70 flexible, 73, 74COPY, 192 virtual, 203cp, 212, 217 dise˜o descendente, 24 n diskette, 74DATE, 194 disquette, 74date, 218 DOS, 181deadlock, 106debugger, 145 EBNF, 134DEL, 192 ECHO, 195demand-driven, arquitecturas, 97 echo, 219demand-paging, 207 ed, 220depuraci´n, 27 o editor, 145 integrada, 147 EEPROM, 65depurador, 145 egrep, 219diagrama sint´ctico, 134 a EMM, 202diccionario de datos, 163 encapsulaci´n, en POO, 129 odiff, 219 encauzamiento, 198, 213DIR, 191 enlazador, 145direcci´n o entidad, 155 absoluta, 89 entorno de programaci´n, 144 o de base, 89 entrop´ 49 ıa, de memoria, 62 EPROM, 65 efectiva, 89 ERASE, 192direccionamiento, 77, 89 error directo, 89 de ejecuci´n, 27 o impl´ ıcito, 90 l´gico, 27 o indirecto, 90 sint´ctico, 27 a relativo, 90 esc´ner, 71 adirecto, acceso, 73 estructura en arbol, 107 ´directorio, 107 exclusi´n mutua de procesos, 106 o de trabajo, 108, 184 exit, 208 del DOS, 184 extensi´n de identificador, 183 o ra´ 107 ız,disco fg, 215, 220 duro, 73 fgrep, 219 fijo, 73 FIND, 200
  • ´ ´Indice alfabetico 231find, 212, 219 Ingres, 161finger, 208, 218 instrucciones de m´quina, 78 afirmware, 196 int´rprete, 144 efloppy, 74 interactivo, trabajo, 104FOR, 195 interfaz de usuario, 111FORMAT, 190 de mandatos, 111formato de un disco, 73 gr´fico, 111 aFORTRAN, 124 interrupci´n, 94, 109 ofragmentaci´n o de hardware, 94 externa, 112 de software, 94 interna, 112 jobs, 215, 220generaci´n de c´digo, 143 o oGOTO, 195 Kbyte, 31grep, 219 kernel, 109guiones de shell, 214 de unix, 206 kill, 215, 220hardware, 18, 60 kilobyte, 31herencia, en POO, 130hojas de c´lculo, 20 a l´piz optico, 71 a ´ lenguajeidentificador, 182 de alto nivel, 26, 122, 123 del DOS, 182 de bajo nivel, 25, 120 en UNIX, 209 de definici´n de datos, 160 o patr´n de, 209 o de m´quina, 25, 77, 120, 121 aIEEE-754, 41 de manipulaci´n de datos, 161 oIF, 195 de muy alto nivel, 123impresora, 72 de programaci´n, 18, 119 oincertidumbre, 49 declarativo, 123indicador ensamblador, 122 del DOS, 194 relacional, 161inform´tica, 17 a simb´lico, 121, 123 oinformaci´n, 49 o transportable, 122 anal´gica, 30 o LIFO, 91 digital, 30 linker, 1145Informix, 161 ln, 212, 217
  • 232 ´ ´ Indice alfabeticologin, 207 mkdir, 212logout, 208 ML, 126lote de procesos, 104 modelolp, 217 E-R, 155ls, 210, 212, 217 en red, 158 entidad-relaci´n, 155 omacroinstrucciones, 122 jer´rquico, 158 amail, 217 relacional, 158mainframe, 116 m´dem, 72 oman, 212, 218 modoMbyte, 31 protegido, 203MD, 193 real, 203megabyte, 31 subordinado, 214megaherzio, 68 Modula-2, 124memoria, 61 modularidad, 115 auxiliar, 64 m´dulo, 147 o cach´, 66 e convencional en un PC, 202 monitor, 71 de s´lo lectura, 65 o MORE, 200 expandida en un PC, 202 more, 212, 217 extendida en un PC, 202, 203 multiprogramaci´n, 110 o funcionamiento de la, 62 multitarea, 214 gesti´n de la, 112 o mv, 212, 217 principal, 62, 64 secundaria, 64 n´cleo u virtual, 66, 113 de UNIX, 206 paginada, 114 n´cleo de un s. o., 109 u segmentada, 115 nice, 215, 220mensaje, en POO, 129 nivel de una B. D.mesg, 208, 218 conceptual, 155MHz, 68 de visi´n, 155 omicrocomputador, 116 externo, 155microinstrucci´n, 84 o f´ ısico, 155minicomputador, 116 interno, 155Miranda, 126 l´gico, 155 oMKDIR, 193 nohup, 216, 220
  • ´ ´Indice alfabetico 233objeto, en POO, 128 PRINT, 193octeto, 30 procesador, 24, 67optimizaci´n de c´digo, 144 o o vectorial, 96Oracle, 161 procesadores de textos, 20orden del DOS, 187 procesamiento externa, 188 en paralelo, 95 interna, 188 secuencial, 95overlay, 66 proceso, 105 por lotes, 104, 195paginaci´n, 67, 114 o profile, 213 bajo demanda, 207 programapalabra de memoria, 31, 62 fuente, 26, 141, 144pantalla, 71 gr´fico, 20 apaquetes integrados, 21 objeto, 26, 141, 144paradigmas de programaci´n, 124 o traductor, 26Pascal, 124 transportable, 121passwd, 207 programaci´n, 24 oPATH, 108, 194 declarativa, 124path, 213 estructurada, 24PAUSE, 195 funcional, 125PC, 181 imperativa, 124 AT, 202 l´gica, 126 o XT, 201 modular, 24perif´ricos, 70 e orientada a los objetos, 128 de almacenamiento, 73 Prolog, 128 de entrada, 71 PROM, 65 de salida, 71 PROMPT, 187, 194 locales, 71 protecci´n, 108, 201 o remotos, 71 protocolos, 72permisos, 210 ps, 220pila, 91 puertopista, 73 en paralelo, 75planificaci´n, 110 o en serie, 75plotter, 72 pwd, 212, 217polimorfismo, en POO, 130POO, 128 RAM, 65
  • 234 ´ ´ Indice alfabeticoRAM-drive, 203 axiom´tica, 140 arat´n, 71 o denotacional, 139RD, 63 operacional, 137RD, 194 sensores, 71red, 72 servidor de red, 72 local, 72 SGA, 152 remota, 72 SGBD, 152refinamiento por pasos, 24 shell, 206registro, 63, 151 de UNIX, 212 acumulador, 69 csh, 213 de direcci´n, 63 o korn, 213 de instrucci´n, 68 o ksh, 213 de intercambio de mem., 63 sh, 213reglas sint´cticas, 119 a scripts, 214relaci´n, 155 o signo-magnitud, 35 muchos a muchos, 156 sincronizaci´n de procesos, 106 o uno a muchos, 156 sintaxis, 131 uno a uno, 156 sistema operativoREM, 195 transaccional, 104REN, 192 sist. de gesti´n de archivos, 152 oRENAME, 192 sist. de gesti´n de B. D., 152 oresta por complementaci´n, 34 o sistema de numeraci´n oRIM, 63 binario, 33rm, 212, 217 decimal, 31RMDIR, 194 hexadecimal, 33rmdir, 212, 217 octal, 33ROM, 65 posicional, 31round-robin, 206 sexagesimal, 31scheduling, 110 sistema operativo, 19, 101, 102sector, 73 abierto, 116secuencial, acceso, 73 de consulta de B. D., 104sed, 220 de control de procesos, 104segmentaci´n, 67, 114, 115 o de prop´sito general, 103 osegmento, 115 dedicado, 103sem´ntica, 119, 137 a monousuario, 103
  • ´ ´Indice alfabetico 235 multiusuario, 103 UC, 61, 67 propietario, 116 UCP, 61, 67Smalltalk, 131 unidad, 147software, 19, 60 unidad aritm. y l´gica, 61, 69 o de aplicaciones, 20 unidad central de proceso, 61, 69solapamiento, 66 unidad de control, 61, 67SORT, 199 uniq, 219sort, 219 UNIX, 205SQL, 161stop, 215, 220 v´ ınculo, 209streamer, 73 especial, 210subordinado, modo, 214 simb´lico, 209 osubprograma, 93 VER, 194subrutina, 93 VERIFY, 194swapping, 207 vi, 220 VLSI, 174tabla de seguimiento, 146tableta gr´fica, 71 a wall, 218tail, 219 wc, 219talk, 218 who, 208, 218teclado, 71 write, 218tee, 220 zcat, 217TIME, 194time, 220tokens, 119, 142traductor, 141transmisi´n o en paralelo, 75 en serie, 75traza de un programa, 146TREE, 193tubos, 198Turbo Pascal, 131TYPE, 192UAL, 61