SlideShare una empresa de Scribd logo
´
        Cristobal Pareja
         ´
         Angel Andeyro
         Manuel Ojeda




Introducci´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-2
Dep´sito Legal: M-7713-94
   o
´
Indice General


   Presentaci´n
             o                                                                                     11

1 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                  .   .   .   .   .   .   .   .   .   .   .   .   .   28

2 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
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                            .   .   .   .   .   .   .   .   57

3 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                                                           .   99

4 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
´
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                      .   .   .   .   .   .   .   .   .   .   .   117

5 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                                         .   .   .   .   .   .   .   149

6 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
                              a

7 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                                .   .   .   .   .   .   179

A 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                                                                       9


B 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-
                                                  a
ductorio, con diversos enfoques y escritos en nuestra lengua. Muchos de
ellos est´n dirigidos a futuros inform´ticos, por lo que resultan, quiz´,
         a                             a                                a
demasiado profundos para quienes s´lo persiguen aplicar la inform´tica
                                     o                               a
en 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         a
sos aspectos de la inform´tica, sin detenerse a analizar las implicaciones
                          a
pr´cticas de esos aspectos.
   a
    Este libro se sit´a entre ambos extremos, ofreciendo un medio para
                     u
introducir en la inform´tica a profesionales de otros campos que, sin em-
                        a
bargo, necesiten aplicar adecuadamente los computadores en su trabajo,
poniendo en marcha programas de aplicaci´n o manejando bancos de
                                              o
datos 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           a
enfoque pr´ctico lo que mejor distinga a este texto de otros de intro-
            a
ducci´n a la inform´tica, que adolecen muchas veces de contenidos muy
      o             a
extensos y te´ricos, casi enciclop´dicos, en los que es dif´ diferenciar
              o                   e                        ıcil
los conocimientos utiles en general de aqu´llos que s´lo encontrar´n de
                   ´                        e         o            a
utilidad inform´ticos profesionales.
                a
    Por lo tanto, este libro se dirige a quienes necesiten una formaci´no
introductoria en inform´tica, con un enfoque b´sico y pr´ctico, pero rigu-
                        a                      a         a
roso. Entre ellos se encuentran, en primer lugar, todos aquellos alumnos
12                                                                 ´
                                                         Presentacion


de los primeros cursos universitarios que cuenten con asignaturas sobre
inform´tica, tanto si se utiliza como herramienta aplicada a la resoluci´n
       a                                                                o
de problemas como si es el propio objeto de estudio.
    Este libro se dirige asimismo a aquellas personas que, de una u otra
forma, est´n relacionadas con el mundo de la inform´tica (operadores,
           a                                           a
comerciales, empresarios, etc.) y, sin embargo, ignoran lo que se esconde
tras la fachada de un computador (c´mo se almacena la informaci´n,
                                        o                             o
cu´les son los procesos que se est´n ejecutando en su interior, etc.) y
  a                                 a
que 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-
        ´                                 e
putadores que est´n interesados en conocer mejor su herramienta de
                   e
trabajo, en saber qu´ estan haciendo y por qu´ lo hacen. El desarrollo
                     e                           e
y abaratamiento de los sistemas inform´ticos hace que computadores
                                          a
de gran potencia que antes s´lo se encontraban en grandes centros de
                               o
c´lculo, atendidos por administradores de sistemas cualificados y dedi-
 a
cados por completo a dicha tarea, est´n hoy sobre nuestra mesa, y que el
                                       e
usuario 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
                                                                ıa
siquiera una peque˜a parte de su tiempo a conocer los principios b´sicos
                   n                                                a
de funcionamiento y gesti´n de su computador.
                           o
   A todos ellos, este texto les ofrece la posibilidad de adquirir esos
conocimientos, partiendo de cero, o de actualizarlos.
    Se ha seleccionado el contenido partiendo de las directrices se˜aladas
                                                                   n
en [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
                                                  o
profesional 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
                                                         a
desarrollo 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                                                             13


de los primeros cursos universitarios, y tambi´n interesan esas dos par-
                                               e
tes a los profesionales que usen la inform´tica como una herramienta y
                                          a
deseen sacar partido de ella.
    El presente texto comprende dos vol´menes, complementarios, dedi-
                                         u
cados respectivamente a esas dos partes, separando as´ la presentaci´n
                                                        ı            o
de los conceptos generales y el desarrollo y organizaci´n de algoritmos
                                                        o
y estructuras de datos. En la primera parte, el enfoque pr´ctico nos
                                                              a
ha llevado a relacionar los contenidos estudiados con sus repercusiones
pr´cticas o su utilizaci´n. En la segunda, se ha unificado el estudio de
  a                     o
los 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                   a
computadores y de su uso en la actualidad: bien poniendo en marcha
aplicaciones ya desarrolladas y adapt´ndolas a nuestras necesidades, o
                                      a
preparando soluciones para problemas nuevos. Se presentan asimismo
las primeras aproximaciones a los conceptos de algoritmo, programaci´n o
y lenguajes de programaci´n.
                          o
    En el cap´
             ıtulo 2 se aborda la representaci´n digital de la informaci´n.
                                              o                          o
Conociendo las distintas formas de representaci´n, el programador podr´
                                                 o                         a
elegir 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                               o
espacio que ocupa y las circunstancias en que los resultados podr´ noıan
ser del todo fiables.
    El cap´ıtulo 3 est´ dedicado al aspecto f´
                      a                      ısico de los computadores y
sus perif´ricos. Se explica su funcionamiento introduciendo los lenguajes
         e
de bajo nivel, y se comentan brevemente las arquitecturas orientadas al
procesamiento en paralelo.
    En el cap´
             ıtulo 4 se estudian los conceptos b´sicos para entender lo
                                                a
que son los sistemas operativos, cu´les son sus funciones y c´mo las
                                     a                         o
llevan a cabo.
   El cap´
         ıtulo 5 se dedica a los lenguajes de programaci´n, en espe-
                                                        o
14                                                                  ´
                                                          Presentacion


cial 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             n
introducen 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 distintos
tipos de traductores y los entornos de programaci´n.
                                                   o

    El cap´
          ıtulo 6 trata sobre las bases de datos, una de las aplicaciones
de mayor aplicaci´n en el mundo empresarial. Entre los modelos des-
                   o
arrollados, destacamos el relacional y, entre los lenguajes de consulta, el
SQL, 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                               u
tema al principio, hemos preferido estudiarlo una vez que se conocen
los conceptos y la terminolog´ b´sicos. De esta forma mejora la com-
                                ıa a
prensi´n del cap´
       o          ıtulo y puede valorarse en su justa medida cada uno de
los logros hist´ricos que en ´l se recogen.
               o              e

    Debido al enfoque pr´ctico que perseguimos con este libro, se inclu-
                          a
yen dos ap´ndices dedicados a introducir en el manejo de dos sistemas
           e
operativos concretos de gran difusi´n en la actualidad: el DOS y el
                                       o
UNIX. El hecho de traer aqu´ estos anexos responde a dos razones: por
                               ı
un lado, conocer las caracter´
                             ısticas de cada sistema interesa al estudiante
como un ejemplo particular del cap´  ıtulo 4, permitiendo ver c´mo se lleva
                                                               o
a 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                     o
o mecanismos m´s inmediatos que necesitar´ sin duda para empezar a
                  a                             a
desenvolverse en el entorno de esos sistemas operativos.

    En la mayor´ de los cap´
                ıa            ıtulos, se ha incluido una peque˜a colecci´n
                                                               n        o
de 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 bien
para profundizar en el tema.
´
Presentacion                                                           15


Agradecimientos
     En primer lugar, es inexcusable agradecer a la Editorial la confianza
que ha puesto en nosotros al aceptar una publicaci´n sobre un tema en
                                                    o
el 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
          e
compa˜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´ Angeles
Medina S´nchez, Salvador Paz Mart´
          a                         ınez, Inma P´rez de Guzm´n Mo-
                                                  e            a
lina y Marisol Timoneda Salinas, y tambi´n a todos aquellos alumnos
                                          e
que, repetidamente, nos han sugerido la compilaci´n de unos apuntes de
                                                 o
clase.
    Durante la redacci´n de este trabajo, se han recogido numerosas opi-
                      o
niones y sugerencias. En particular, debemos agraceder las minuciosas
revisiones 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                        ıguez
Iglesias.
   Finalmente, quisi´ramos pedir la colaboraci´n de los lectores para
                     e                          o
subsanar las posibles deficiencias que encuentren.
Cap´
   ıtulo 1

Conceptos 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
                                                                       o
general del contenido del libro, presentando los conceptos generales y
los t´rminos m´s usados en inform´tica. Esta primera aproximaci´n
     e          a                    a                                 o
nos permite situar cada uno de los temas siguientes en relaci´n con los
                                                               o
dem´s, y dentro del contexto de la inform´tica.
     a                                     a


1.1      Inform´tica
               a
    La inform´tica es la ciencia que estudia el procesamiento autom´tico
              a                                                    a
de la informaci´n. Aunque la necesidad de razonar sobre este tipo de
                o
procesos existe desde tiempo atr´s, la consolidaci´n de la inform´tica
                                   a                 o             a
como ciencia s´lo se produce con el desarrollo de los computadores, a
                o
partir de los a˜os cuarenta. Se trata, por lo tanto, de una ciencia muy
               n
joven, 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
  a
eficacia en muy diversos trabajos, y en particular en aqu´llos que ma-
                                                         e
nejan un gran volumen de datos o de operaciones. Esta versatilidad
tiene dos aspectos: por un lado, es posible usarlo como herramienta
para aplicaciones concretas ya desarrolladas (1.4), y por otro se pue-
den dise˜ar soluciones a la medida de problemas nuevos, mediante la
        n
programaci´n (1.5).
           o
    El desarrollo de un programa nuevo para resolver un determinado
problema requiere, por una parte, conocer alg´n procedimiento siste-
                                               u
m´tico (algoritmo) que lleve a su soluci´n, y por otra, la necesidad de
  a                                     o
expresarlo en un lenguaje de programaci´n que el computador pueda
                                          o
comprender y ejecutar.


1.2     Computador
    Un computador es una m´quina electr´nica que procesa informaci´n
                             a           o                        o
siguiendo 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                               o
donde la env´ Tiene dispositivos que le permiten almacenar la infor-
             ıa.
maci´n (los datos, los resultados y el propio programa) y procesarla
     o
siguiendo las instrucciones del programa.
    La informaci´n que se procesa en el computador (programas, da-
                o
tos y resultados) est´ expresada en forma digital binaria, combinando
                     a
ceros y unos. En consecuencia, tanto los programas como los datos y
resultados deben codificarse en este formato para poder ser procesados.
Una vez obtenidos los resultados, ´stos tienen que ser decodificados para
                                  e
mostrarlos al usuario.
    Como hemos visto, un computador se compone de dos partes cla-
ramente diferenciadas: una f´  ısica, que podemos tocar, constituida por
circuitos electr´nicos, teclado, pantalla, unidades de disco, etc., llamado
                o
hardware, 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 software
en ingl´s y soporte l´gico en castellano. Ambas partes est´n ´
       e             o                                    a ıntimamente
relacionadas 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 que
entra en funcionamiento es el sistema operativo, que gestiona y coordina
los dos aspectos, f´
                   ısico y l´gico, del computador. Se trata de un conjunto
                            o
de programas que se interrelacionan estrechamente con el hardware, ges-
tionando los procesos en ejecuci´n, las operaciones de entrada y salida y
                                   o
la memoria. Por ello, resulta imprescindible para el funcionamiento del
computador.
    Los dem´s programas funcionan sobre el sistema operativo, y son
             a
gestionados por ´l. Entre ellos, se encuentran las herramientas para
                 e
el desarrollo de programas (tales como los editores y traductores de
lenguajes), y tambi´n los programas de aplicaciones.
                   e
    Por lo tanto, podemos decir que dentro del computador existe cierta
organizaci´n por niveles (v´ase la tabla 1.1): en el nivel m´s bajo se
           o                e                                 a
encuentra 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                                            e
los otros programas, que a su vez se relacionan directamente con el
usuario.
    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                              a
virtual, tremendamente vers´til.
                             a
20                                  Cap´                   ´
                                       ıtulo 1. Conceptos Basicos


1.4      Aplicaciones
    El software de aplicaciones est´ formado por aquellos programas que
                                   a
han sido desarrollados para realizar tareas concretas. Se llama as´ por-
                                                                  ı
que el computador “se aplica” a un trabajo determinado, facilitando su
ejecuci´n y resoluci´n. Por ejemplo, un procesador de textos, una hoja
       o            o
de c´lculo, un gestor de bases de datos, un generador de gr´ficos, un
    a                                                         a
programa 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 son
los programas matem´ticos, estad´
                       a        ısticos, de CAD (Dise˜o Asistido por
                                                      n
Computador), aplicaciones contables y de gesti´n de empresas, comuni-
                                              o
caciones, 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
                                                               a
mil aplicaciones diferentes). A su vez, los distintos programas van evo-
lucionando, y aparecen nuevas versiones con m´s posibilidades y mayor
                                                 a
velocidad de ejecuci´n, aunque tambi´n con mayor demanda de potencia
                     o                 e
y 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
                                           a
gr´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
                                             o
mayor o menor medida, de acuerdo con los gustos y necesidades del
usuario; sin embargo, es posible que un programa concreto no pueda
atender esas necesidades. En este caso, resulta muy dif´ por no decir
                                                       ıcil,
imposible (e ilegal en muchos casos), modificar el programa para incluir
una nueva tarea. Conscientes de esta falta de flexibilidad del software,
muchos fabricantes est´n presentando programas de aplicaci´n que a
                        a                                     o
su vez pueden ser programados, mediante lenguajes de programaci´n   o
propios o est´ndares.
             a
     As´ pues, aunque la mayor´ de las personas que utilizan los compu-
        ı                     ıa
tadores trabajan con programas de aplicaci´n y no necesitan recurrir a
                                           o
la programaci´n, tambi´n hay un buen n´mero de usuarios que, sin ser
               o        e                u
inform´ticos profesionales, pueden obtener un mayor rendimiento de es-
         a
tos programas a trav´s de la programaci´n. Por ejemplo, muchas hojas
                      e                 o
de c´lculo, gestores de bases de datos y paquetes matem´ticos, hoy en
      a                                                   a
d´ son programables.
  ıa,


1.5     Algoritmos y programas
   El desarrollo de programas es otro de los aspectos fundamentales
de la utilizaci´n de los computadores porque continuamente aparecen
               o
nuevos problemas o tareas susceptibles de ser procesados de forma au-
tom´tica. Al mismo tiempo se van detectando las lagunas o deficiencias
    a
en las aplicaciones existentes, lo que impulsa a su renovaci´n con la
                                                            o
22                                  Cap´                   ´
                                       ıtulo 1. Conceptos Basicos


creaci´n de nuevas versiones de los programas existentes. El desarrollo
      o
del hardware posibilita tambi´n la aparici´n de nuevas aplicaciones m´s
                             e            o                          a
potentes y con mayores demandas de recursos.

    Desde el planteamiento de un problema hasta la obtenci´n de su
                                                             o
soluci´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                                                    23


diversa, desde los problemas m´s inmediatos relacionados con la pro-
                                 a
pia subsistencia, hasta los problemas m´s abstractos de naturaleza ma-
                                       a
tem´tica o filos´fica.
    a           o

    Un algoritmo es la descripci´n precisa de los pasos que nos permiten
                                o
obtener la soluci´n de un problema determinado. En general, los pa-
                 o
sos son acciones u operaciones que se efect´ an sobre ciertos objetos. Al
                                            u
comienzo del algoritmo, los objetos tienen unos valores iniciales (los da-
tos) que var´ como consecuencia del proceso descrito por el algoritmo,
            ıan
obteni´ndose los valores de salida o resultados.
      e

    La inform´tica estudia el procesamiento de la informaci´n mediante
              a                                            o
algoritmos, aunque el concepto de algoritmo, que proviene de las ma-
tem´ticas, es muy anterior e independiente de la existencia de la in-
    a
form´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                                  o
computador; si no se conoce el algoritmo para resolver un problema, no
puede plantearse su resoluci´n en el computador.
                            o

    Aunque existen algoritmos registrados para la realizaci´n de tareas
                                                           o
muy variadas, en general los algoritmos desarrollados resuelven s´lo de-
                                                                 o
terminadas partes de un problema como, por ejemplo, la ordenaci´n de
                                                                   o
una 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                               a
de sus datos iniciales, del proceso que se les aplica y de los resultados
esperados. A partir de este an´lisis debe establecerse cu´l es la mejor
                                a                          a
estructura de datos para resolver el problema. De hecho, Niklaus Wirth,
uno de los padres de la programaci´n estructurada, titula una de sus
                                      o
obras 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                 u
naturales, 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                           n
programaci´n estructurada, la programaci´n modular, el refinamiento
           o                                o
por pasos, el dise˜o descendente y la estructuraci´n y abstracci´n de los
                  n                               o             o
datos.
    Para poder expresar algoritmos se utilizan lenguajes con la necesaria
precisi´n, llamados lenguajes algor´
       o                           ıtmicos, que son independientes de los
lenguajes de programaci´n. Los m´s utilizados son el seudoc´digo y los
                         o         a                          o
diagramas 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
                      o
de entrada, y ejecutar las acciones descritas en el algoritmo. Al proceso
de ejecutar un algoritmo concreto para unos datos determinados se le
llama c´mputo, de donde procede el t´rmino computador. El procesador
       o                              e
es quien ejecuta materialmente el c´mputo.
                                    o

1.5.2      Programaci´n
                     o
   Como dec´ ıamos al principio, consideramos al computador como una
herramienta que nos ayuda en la resoluci´n de problemas; para ello es
                                          o
preciso conocer previamente un algoritmo que lleve a su soluci´n. A
                                                               o
continuaci´n hay que expresar el algoritmo en un lenguaje de progra-
           o
maci´n, que pueda ser comprendido y ejecutado por el computador,
     o
desarroll´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
                o
correcci´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
                                            a
del sector de producci´n de software, ha hecho que se apliquen a la pro-
                       o
gramaci´n t´cnicas de ingenier´ que garanticen la viabilidad y calidad
        o e                     ıa
de los grandes proyectos de aplicaciones, lo que se conoce como inge-
nier´ del software.
    ıa

1.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 reconocerlas
mejor y evitar errores se les asignan unos nombres mnemot´cnicos que
                                                                e
permiten recordar sus funciones. Estas instrucciones constituyen el len-
guaje de m´quina del computador, y suelen ser diferentes en funci´n del
           a                                                         o
fabricante del procesador.
    El lenguaje de m´quina es ejecutado a gran velocidad por el procesa-
                     a
dor, en los computadores actuales esta velocidad se mide en millones de
operaciones por segundo; por otra parte, el lenguaje de m´quina permite
                                                         a
el acceso directo a todos los ´rganos del computador. Por estos motivos
                              o
el lenguaje m´quina es insustituible en aquellas aplicaciones donde sea
              a
necesaria una gran rapidez de ejecuci´n, o el acceso directo a ciertos
                                        o
o
´rganos del computador.
    Las instrucciones del lenguaje de m´quina son en general muy poco
                                         a
potentes, operan sobre datos de peque˜o tama˜o, y en muchos casos no
                                        n       n
incluyen ni multiplicaciones ni divisiones. Para poder operar sobre da-
tos mayores o realizar operaciones m´s complejas, tales como potencias
                                      a
o logaritmos, hay que fraccionar los datos y aplicar sucesivamente las
operaciones 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                                        a
les 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                                       o


programas en lenguaje de m´quina es tediosa y est´ sujeta a muchos
                          a                      a
errores.
    Ante la necesidad de escribir programas cada vez m´s complejos y
                                                           a
fiables, los inform´ticos desarrollaron lenguajes con niveles m´s elevados
                  a                                           a
de abstracci´n, que inclu´ operaciones y datos m´s complejos a los
              o            ıan                        a
que llamaron lenguajes de alto nivel. De esta forma se acorta el camino
entre el algoritmo y su expresi´n en forma de programa, porque los
                                  o
lenguajes de alto nivel pueden expresar mejor las acciones y objetos que
intervienen 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)
      o
al lenguaje de m´quina (programa objeto) que, como recordamos, es el
                 a
unico que puede ser ejecutado por el computador, es autom´tica y se
´                                                             a
realiza 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                                                             o
Durante el proceso de traducci´n se suelen detectar errores, debidos al
                                 o
1.6. Ejercicios                                                             27


incumplimiento de las reglas sint´cticas del lenguaje o a causas m´s suti-
                                  a                                   a
les, que deben corregirse antes de poder ejecutar el programa. Si durante
la ejecuci´n de un programa se realizan operaciones no permitidas (tales
          o
como divisiones por cero, accesos fuera de l´ ımites, . . . ) se producen los
llamados errores de ejecuci´n.
                            o
    Aunque un programa se haya traducido eliminando todos los errores
sint´cticos y de ejecuci´n, a´n puede no realizar correctamente la tarea
    a                   o    u
para la que fue creado, por contener errores l´gicos. Por lo tanto es
                                                o
necesario comprobar el funcionamiento del programa utilizando datos
de 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
             a
depuraci´n de los programas.
         o
    En la actualidad la mayor´ de los programas se escriben en lengua-
                              ıa
jes de alto nivel, reserv´ndose los lenguajes de bajo nivel para aquellas
                         a
aplicaciones donde se necesite una elevada velocidad o un acceso directo
a los ´rganos del computador; por ejemplo, en los programas traductores
      o
o en programas de gesti´n del computador.
                         o


1.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               a
se pueden recomendar con car´cter general. Aun ci˜´ndonos a los escritos en
                               a                     ne
castellano o traducidos, existen bastantes textos excelentes sobre el tema, con
diversos enfoques.
     En [GL86] encontramos un panorama general sobre inform´tica en el que se
                                                               a
utiliza como tema unificador el concepto de algoritmo, que sus autores juzgan
como el concepto central de la computaci´n. Se trata de un texto apropiado
                                           o
para el principiante y de lectura amena. El libro de Bishop ([Bis91]) es tambi´n
                                                                              e
un libro muy asequible de introducci´n en inform´tica.
                                     o             a
    [PLT89] trata con gran detalle la estructura f´
                                                  ısica de los computadores, por
lo 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-o
cos de la inform´tica (la teor´ de algoritmos, la l´gica y la teor´ de aut´matas
                a             ıa                   o              ıa      o
y lenguajes formales).
    Por ultimo, puesto que la inform´tica es una ciencia reciente, cuenta con
        ´                              a
muchos vocablos nuevos, en su mayor´ anglicismos, que muchas veces se em-
                                        ıa
plean 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 2

Representaci´n digital de
             o
la 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                   o
persigue dos objetivos: en primer lugar, procesarla, permitiendo su ma-
nipulaci´n eficiente, para lo cual se han ideado diferentes convenios, de
        o
los que veremos los m´s importantes; y en segundo, asegurarla contra
                       a
errores durante su almacenamiento o durante las transmisiones, lo que
se consigue incorporando en la codificaci´n el empleo de la redundancia
                                         o
para detectar y corregir dichos errores.


2.1      Conceptos previos
2.1.1     Informaci´n anal´gica y digital
                   o      o
    Las magnitudes continuas son las que pueden adoptar los infinitos
valores de un intervalo de n´meros reales, tales como la longitud de un
                            u
segmento, velocidad, temperatura, intensidad de un sonido, etc.
30               Cap´                    ´                 ´
                    ıtulo 2. Representacion de la informacion


    Las magnitudes discretas tienen naturaleza discontinua, tales como
la longitud (n´mero de s´
              u          ılabas) de una palabra, capacidad (n´mero de
                                                             u
pasajeros) de un veh´
                    ıculo, etc.
   En la pr´ctica, es frecuente que las magnitudes continuas sean trata-
           a
das como discretas: el peso de una persona (que se redondea en kilos); la
temperatura (en grados y d´cimas de grado); la longitud de un segmento,
                           e
medida 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                                                        o
anal´gica, que es de naturaleza continua, pudiendo tomar infinitos valo-
     o
res; y la informaci´n digital, que es de naturaleza discreta. Aunque esta
                   o
ultima 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                   o
un 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            o
el monitor de un ordenador, supone el ajuste de la imagen proyectada
sobre 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-
          o
maci´n. Para poder hablar con propiedad de este procesamiento, debe-
     o
mos definir unidades de medida que nos permitan cuantificar de alg´n u
modo la acci´n del computador sobre la informaci´n suministrada. Con-
            o                                   o
sideramos 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.
                                              o

2.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
    o
a
´ngulos, el sistema de numeraci´n m´s difundido en la actualidad es sin
                               o    a
duda el sistema decimal posicional, o sistema ar´bigo-hind´, inventado
                                                a         u
hacia el siglo VIII.
    Por otra parte, en el contexto de la inform´tica se usan frecuente-
                                               a
mente sistemas de numeraci´n posicional en bases tales como 2 (ya que
                             o
el bit tiene dos posiciones), 16 (como compactaci´n de palabras de 4
                                                   o
bits), etc.
    Para aprender a manejarlos, se recurre frecuentemente a la analog´ ıa
con el sistema de numeraci´n m´s conocido: el de base 10. Se llama
                            o     a
decimal porque cada cifra o d´
                             ıgito puede tomar diez posibles valores: del
0 al 9; se llama posicional porque el valor real de cada d´
                                                          ıgito depende
de su posici´n.
             o

         10475 = 1 ∗ 104 + 0 ∗ 103 + 4 ∗ 102 + 7 ∗ 101 + 5 ∗ 100

A la cantidad 10 se le llama base; las potencias de 10 son los pesos
asociados a cada posici´n, y los factores o coeficientes de cada peso son
                        o
las cifras de la representaci´n. Tambi´n se podr´ haber representado
                             o          e          ıa
en forma polin´mica del siguiente modo:
                o

             10475 = 1 ∗ 104 + 0 ∗ 103 + 47 ∗ 101 + 5 ∗ 100
32                Cap´                    ´                 ´
                     ıtulo 2. Representacion de la informacion


pero 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
                                     o
demostraci´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
                                          o
N positivo tiene una unica representaci´n de la forma
                     ´                 o

                     N = cp bp + cp−1 bp−1 + . . . + c1 b1 + c0 b0

donde 0 ≤ ci < b para todo i = 0, 1, . . . , p

Conversi´n entre sistemas
        o
    En primer lugar, la expresi´n decimal de un n´mero de cifras cp . . . c0
                                o                u
en base b se obtiene sencillamente sumando los valores reales correspon-
dientes a los diferentes d´
                          ıgitos:

                        [cp . . . c0 ](b = cp ∗ bp + . . . + c0 ∗ b0

Por 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
                                       u
5, equivale a expresarlo en forma polin´mica con las sucesivas potencias
                                        o
de 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                                                              33


Sistemas de numeraci´n m´s usuales
                    o   a

   El sistema m´s empleado en electr´nica digital es el de base 2, lla-
                a                     o
mado binario (natural). En inform´tica tienen inter´s los sistemas cuya
                                  a                e
base es una potencia de dos: 2, 4, 8, 16. La siguiente tabla recoge los
primeros n´meros naturales, expresados en algunos de esos sistemas y
           u
en 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        11


En el sistema hexadecimal se usan los d´       ıgitos 0, . . . , 9, A, . . . F para las
cantidades cero, . . . , nueve, diez, . . . , quince respectivamente. As´ por     ı
ejemplo, C7A(16 = 12 ∗ 162 + 7 ∗ 161 + 10 ∗ 160 = 3194(10 , ya que los
valores 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 poder
componer C combinaciones distintas se necesita disponer de un n´mero
                                                               u
de cifras igual a logb C, redondeado por exceso.


    Como consecuencia de lo anterior, cuanto mayor sea la base adoptada
se pueden expresar m´s cantidades (combinaciones) para un n´mero fijo
                      a                                        u
de cifras; inversamente, cuanto mayor sea la base, es posible usar menos
cifras para expresar una misma cantidad.
34              Cap´                    ´                 ´
                   ıtulo 2. Representacion de la informacion


Observaci´n
         o
    La conversi´n de binario en octal o en hexadecimal se puede abreviar
               o
del 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?
          e

Operaciones aritm´ticas en base dos
                 e
    Para las operaciones elementales se usan las tablas correspondientes
a la base de que se trate. Por ejemplo, para el caso binario la tabla de
sumar es la siguiente:
                               + 0      1
                               0 0      1
                               1 1 10
Y entonces, son v´lidas las reglas conocidas para las operaciones en base
                 a
diez. 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
                                              e
lugar 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
                      u
y viceversa), suprimiendo la cifra excedente, posiblemente aparecida por
el arrastre, y sumando una unidad al resultado obtenido:
           100101                     100101
       −    11011       →        +    100100
                                     1001001      →        001010
´
2.2. Representacion digital de los datos                                35


2.2     Representaci´n digital de los datos
                    o
    En los sistemas digitales, no resulta viable dar una representaci´n
                                                                     o
v´lida para codificar todos los n´meros; por otra parte, los diversos
  a                               u
sistemas empleados dan diferentes tratamientos a n´meros tan usuales
                                                     u
como el uno (seg´n se considere como real o como entero). Estudiaremos
                u
diversos convenios para diferentes conjuntos de n´meros, as´ como sus
                                                  u         ı
limitaciones.
    En este apartado, supondremos que disponemos de un espacio de N
bits, con lo que es posible representar 2N enteros distintos.


2.2.1    Representaci´n de los n´ meros enteros
                     o          u
N´ meros enteros positivos
 u

    Si se considera unicamente n´meros enteros positivos, con N bits de
                    ´            u
espacio ser´ posible representar los n´meros de 0 a 2N −1. La forma m´s
            ıa                        u                               a
natural de lograrlo consiste en interpretar cada combinaci´n mediante
                                                             o
la 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     u

N´ meros enteros con signo. Convenio del signo-magnitud
 u

    Para representar los n´meros enteros (con signo), el sistema m´s
                                 u                                       a
simple 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-
                             e
dades del mismo signo y la resta de cantidades de distinto signo siguen
la regla b´sica en binario. Para sumar cantidades de distinto signo, o
          a
restar cantidades del mismo signo, resulta m´s pr´ctico el m´todo del
                                              a    a          e
complemento.
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                                       o
sistema debe tenerlo en cuenta. Por otra parte, la suma/resta de signos
y valores absolutos necesita dos algoritmos distintos, que no resultan
muy eficientes. Los siguientes sistemas surgen precisamente para tratar
de 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 palabras
de N = 2 d´  ıgitos (decimales), es posible representar 102 = 100 canti-
dades distintas. En este convenio se opta por considerar los n´meros      u
negativos de {−49, . . . , −0}, y los positivos de {0, . . . , 49}, del siguiente
modo: los n´meros positivos se representan en decimal natural, mientras
            u
que para cada negativo −z se toma la cantidad 99 − z (complemento de
z 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, 49
se 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 dos
n´meros, sea cual fuere su signo, se lleva a cabo con un mismo algoritmo,
 u
que s´lo se diferencia de la suma de enteros en que el posible arrastre se
     o
agrega al resultado final:
                + 23        →               2    3
           +    − 15        →        +      8    4
                                                             +1
                                     1      0    7           →        0   8
´
2.2. Representacion digital de los datos                                        37


Consideremos ahora esta representaci´n con palabras de N = 4 d´
                                      o                       ıgitos
binarios: las cantidades representables son

       −7, −6, . . . , −0, +0, . . . , +6, +7
            → −111(2 , −110(2 , . . . , −0(2 , +0(2 , . . . , +110(2 , +111(2

que, al complementar las negativas respecto de 1111, resulta:

            → 1000, 1001, . . . , 1111, 0000, . . . , 0110, 0111

N´ 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
                           e
considerar los n´meros negativos de {−50, . . . , −1}, y los positivos de
                     u
{0, . . . , 49}, del siguiente modo: los n´meros positivos se representan en
                                          u
binario natural, mientras que para cada negativo −z se toma la cantidad
100 − 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 complementar
los n´meros negativos, consistente en a˜adir una unidad al correspon-
     u                                  n
diente 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
                                                                  a
cero 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(2

que, 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-
                                  e
ritmo, igual al usado para el complemento restringido, pero ignorando
la posible cifra de arrastre:

                + 23        →               2   3
           +    − 15        →        +      8   5
                                     1      0   8       →         0    8

Funcionamiento de las operaciones aritm´ticas
                                       e
    Debe subrayarse que las operaciones anteriores no coinciden con las
aritm´ticas, debido a la posibilidad de que se produzca un desborda-
      e
miento; 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
                                                    o
tanto, es necesario prever esta posibilidad y conocer de qu´ modo re-
                                                             e
acciona nuestro sistema. Sobre este asunto volveremos m´s adelante,
                                                            a
dentro 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-
                                            a
mento aut´ntico en base dos, llamado simplemente complemento a dos.
           e
Ahora bien, depender´ de la longitud de palabra la cantidad de com-
                        a
binaciones posibles y, por tanto, el rango de enteros considerado. Por
otra parte, aunque ciertos sistemas trabajan con palabras de longitud
variable, lo corriente es optar por uno o varios formatos con tama˜o fijo:
                                                                   n
simple (1 byte), doble (2 bytes), cu´druple (4 bytes) u octuple (8 bytes).
                                     a                  ´
´
2.2. Representacion digital de los datos                                               39


2.2.2    Representaci´n de los n´ meros reales
                     o          u
    Debe resaltarse que, en general, s´lo resulta posible representar apro-
                                      o
ximaciones de los n´meros reales mediante n´meros decimales, con s´lo
                     u                         u                        o
unas pocas cifras significativas. En el siguiente apartado estudiaremos
los efectos de este redondeo.
    En este apartado, supondremos que disponemos de un espacio de N
bits, 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
                                                                   u
real, la caracter´
                 ıstica principal de este convenio es la reserva impl´
                                                                     ıcita
de algunos bits fijos para la parte decimal, asumi´ndose la coma en una
                                                   e
posici´n fija. A su vez, existen los siguientes modos de representaci´n
       o                                                               o
en 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                   o
demos representar cantidades decimales m´ ltiplos enteros de 0 001(2 =
                                           u
2−3 = 0 125(10 . Como trunc(−2 8 ∗ 8) = trunc(−22 4) = −22, repre-
 (10
sentamos −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                                   u
cantidad 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(2

Convenios con coma flotante
    El principal inconveniente de la coma fija consiste en condicionar
el orden de magnitud de las cantidades codificadas. Un sistema m´s    a
general deber´ adaptarse a ordenes tan distantes como los de la masa de
              a            ´
´
2.2. Representacion digital de los datos                                     41


la tierra y la del atomo. El sistema m´s conocido con esta caracter´
                   ´                  a                            ıstica
es 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
                     o
mantisa (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
                 o
de reales m´s utilizadas. Su representaci´n requiere un total de 32 bits,
            a                              o
de los cuales un bit se utiliza para el signo, 8 bits para el exponente
y 23 bits para la mantisa. Este convenio en concreto, utiliza un truco
llamado bit oculto: como el bit m´s significativo de la mantisa es un 1,
                                    a
ahorramos un bit simplemente asumi´ndolo. Se logra as´ espacio para
                                        e                   ı
una mantisa de 24 d´ ıgitos significativos. El inconveniente de emplear un
bit oculto consiste en que se requiere una representaci´n especial para
                                                          o
el cero.
42              Cap´                    ´                 ´
                   ıtulo 2. Representacion de la informacion


2.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                  a
sos en sistemas finitos, s´lo pueden representar una cantidad finita de
                          o
elementos distintos. Esta limitaci´n resulta cr´
                                     o          ıtica a la hora de repre-
sentar elementos pertenecientes a conjuntos infinitos, como son los de
los n´meros enteros o reales. Como consecuencia, pueden producirse
      u
situaciones de error no deseables, por lo cual se hace necesario estudiar
el 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                                                        n
de la representaci´n. As´ cuando surge la codificaci´n de n´meros fuera
                  o       ı,                           o      u
del rango considerado, se produce el llamado desbordamiento (overflow
en ingl´s).
       e
    Por ejemplo, en una representaci´n con 4 bits ser´n posibles 16 con-
                                      o              a
figuraciones. Si optamos por el convenio de complementaci´n aut´ntica,
                                                           o      e
el 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 sistema
de complementaci´n aut´ntica para una representaci´n de n bits se puede
                  o    e                            o
describir as´ llamemos x e y a la representaci´n de x e y, y + y − a las
            ı:                                o
operaciones 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-
                                              o
rar 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),
                                                                     o
pudiendo as´ manipular con seguridad enteros de mayor orden. As´
             ı                                                          ı
por ejemplo, el c´lculo de 8! desbordar´ un sistema de complemento
                  a                       a
aut´ntico con 16 d´
    e               ıgitos, resultando en cambio correcto para palabras
m´s largas. En ocasiones, el programador tiene la posibilidad de cam-
  a
biar de estrategia para evitar el desbordamiento. Por ejemplo, el c´lculo
                                                                   a
     8                                8!   8∗7∗6
de 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
                                                 u
que el segundo nos permite eludir en cierta medida el error por desbor-
damiento.
    Por otra parte, muchos de los lenguajes que se comercializan en la
actualidad ofrecen la opci´n de verificar o no los desbordamientos que
                           o
puedan producirse durante la ejecuci´n, para que los consiguientes erro-
                                    o
res no pasen inadvertidos.
    Finalmente, la mayor´ de los lenguajes de alto nivel presentan sis-
                        ıa
temas de construcci´n de tipos de datos con capacidad para definir co-
                   o
dificaciones (y operaciones de manipulaci´n sobre los objetos cifrados)
                                         o
a la medida de nuestras necesidades.

Limitaciones en los reales
   En este caso, incluso limit´ndonos a los reales contenidos en un pe-
                               a
que˜o intervalo acotado, ´stos ser´ infinitos, por lo cual las limitaciones
   n                      e       ıan
en su representaci´n no s´lo afectan al tama˜o de los n´meros consi-
                   o        o                  n           u
derados, sino tambi´n a la precisi´n. En efecto, en cualquiera de los
                     e              o
convenios estudiados se toma como mantisa s´lo cierto n´mero reducido
                                              o          u
de 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           u
flotante representa en realidad un intervalo, cuyo tama˜o var´ seg´n
                                                         n      ıa    u
la magnitud del real representante. Por consiguiente, la distribuci´n de
                                                                   o
representantes no es uniforme: un intervalo tan peque˜o como [0’1, 1]
                                                       n
cuenta con tantos representantes como [1000, 10000].
    Adem´s de las limitaciones de la precisi´n, la representaci´n de los
          a                                 o                  o
reales est´ limitada por su tama˜o: existe un valor a partir del cual no
          a                     n
44                     Cap´                    ´                 ´
                          ıtulo 2. Representacion de la informacion


hay representantes reales y que determina el rango de desbordamiento.
   Debe observarse en este punto que existen cantidades cuya expresi´n     o
decimal es exacta, sin serlo su expresi´n escrita en binario natural (por
                                           o
ejemplo, 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
                                                               o
muchos casos despreciable, su aparici´n puede ocasionar grandes desvia-
                                     o
ciones respecto del comportamiento te´rico.
                                       o
   Una situaci´n as´ se produce cuando se comparan dos n´meros reales
               o     ı                                    u
para determinar su igualdad, ya que el resultado de la comparaci´n  o
ignora si esa diferencia producida es peque˜a o grande, lo que puede
                                            n
ocasionar 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
                                        o
expresi´n x = y por | x − y |< ε, siendo ε la diferencia admitida.
       o
    En realidad, la aparici´n de errores intolerables es posible incluso
                           o
en expresiones sencillas. Concretamente, deber´ evitarse las opera-
                                                 ıan
ciones de suma y resta, cuando uno de los operandos es muy peque˜o    n
en 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                  ıa
por |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 u
que ese error intervenga en c´lculos repetidos, como ocurre en la ma-
                              a
nipulaci´n de matrices, el c´lculo con series recurrentes, etc.; en tales
         o                  a
situaciones, la propagaci´n de un error inicial, aunque peque˜o, puede
                         o                                     n
generar un error mucho mayor. El estudio y la cuantificaci´n de los
                                                               o
errores, as´ como su propagaci´n en c´lculos repetitivos y los m´todos
           ı                   o       a                          e
para encontrar soluciones satisfactorias, escapan del alcance y objetivos
de este curso, siendo materia propia de los m´todos num´ricos.
                                               e          e

Otros sistemas de representaci´n (paquetes matem´ticos)
                              o                 a
   Durante la pasada d´cada, se han desarrollado y difundido paquetes
                       e
de programas matem´ticos, capaces de resolver eficientemente un ex-
                     a
tenso n´mero de problemas, manipulando expresiones tanto num´ricas
       u                                                          e
como simb´licas. Para ello est´n provistos (aparte de otros mecanismos)
          o                   a
de potentes sistemas aritm´ticos de representaci´n no convencionales.
                            e                     o
Veamos 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 informacion


2.2.4     Representaci´n de los caracteres
                      o

    Existen otros convenios, adem´s de los num´ricos, para representar
                                    a              e
los 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                              o
y 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                                 e
representaci´n), as´ como la posici´n, entre 0 y 2n − 1, asignada a cada
             o      ı              o
car´cter. Sin embargo, en seguida se observ´ la necesidad de adoptar
   a                                          o
convenios normalizados, as´ como la conveniencia de que ´stos tengan
                            ı                                e
ciertas 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.
                                     a

Adem´s, cuando la capacidad de representaci´n lo permita, ser´ deseable
      a                                    o                 a
que 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
                        a
7 bits, por lo que admite hasta 27 = 128 caracteres. Damos la siguiente
tabla, 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              u
se 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
            a
en cambio adoptar el byte (= 8 bits) como unidad. As´ es posible
                                                           ı,
extender el convenio anterior y dar cabida a otros caracteres de uso
tambi´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                               u
racteres, sino que tambi´n deben organizar y tratar informaciones m´s
                          e                                              a
complejas, tales como sucesiones de datos (por ejemplo, cadenas de ca-
racteres), vectores, tablas, etc., ya sea formadas por datos simples o bien
por conjuntos de informaci´n con alguna organizaci´n. Con tal finalidad
                             o                        o
se han ideado diversas estrategias; aunque su estudio excede el alcance
de 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                          n
adopta para los n´meros enteros un convenio de 2 bytes, cada n´mero
                      u                                               u
ocupar´ dos palabras consecutivas. Una forma natural y sencilla de
       a
organizar 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,
        e
para i ∈ {1, . . . , n}.

   Si se tratase de una matriz de m ∗ n, cuyas componentes ocupan k
palabras de memoria, se establece f´cilmente la posici´n inicial para la
                                   a                  o
componente 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
                                                                 o
matriz.


2.2.6    Representaci´n de las instrucciones
                     o

    Aunque podr´ parecer impropio considerar las instrucciones como
                 ıa
informaciones, lo cierto es que los programas se almacenan en la memoria
del 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                           a
secuencia de elementos, cada uno de los cuales es un descriptor de una
instrucci´n elemental.
         o

    El formato de las instrucciones (es decir, de sus descriptores) depende
de la m´quina destinada a seguirlas. Si consideramos por ejemplo una
         a
m´quina de tres direcciones (v´ase cap. 3), sus instrucciones se compo-
  a                             e
nen de cuatro campos que codifican respectivamente la operaci´n que   o
debe efectuarse y las posiciones de memoria en que se encuentran los
(como m´ximo dos) argumentos y la de la palabra donde debe situarse
          a
finalmente el resultado. En el cap´  ıtulo siguiente se presenta con detalle
uno de estos formatos.
´
2.3. Codigos redundantes                                             49


2.3     C´digos redundantes
         o
2.3.1   Informaci´n y redundancia
                 o
Informaci´n e incertidumbre.- El t´rmino informaci´n tiene en ge-
           o                             e                o
neral un significado muy amplio: pi´nsese en la informaci´n proporcio-
                                     e                     o
nada por una fotograf´ o un poema. Por eso, en el contexto de la in-
                       ıa
form´tica como ciencia que trata sobre el tratamiento autom´tico de la
     a                                                        a
informaci´n, se asocia a ´sta un significado m´s restringido y manejable.
         o                e                  a
    Para definir este significado, consideremos que deseamos determinar
un cierto fen´meno, que puede presentar una cantidad finita de estados.
             o
Entonces, una informaci´n (sobre ese fen´meno) es una sentencia capaz
                         o               o
de aportar alg´n conocimiento sobre tal fen´meno; esto es, capaz de
               u                             o
delimitar en cierta medida su estado.
    As´ por ejemplo, si consideramos el fen´meno “colores del atuendo
      ı                                     o
que llevaba anoche el asesino del callej´n”, sabiendo que el pantal´n
                                         o                           o
era negro o marr´n, que la camisa era azul, gris o marr´n, y que el
                  o                                         o
sombrero era gris o negro, resulta que el n´mero de estados es 12. Una
                                           u
informaci´n sobre este fen´meno podr´ consistir en la sentencia “la
         o                  o           ıa
camisa y el pantal´n eran de distinto color”; con esta informaci´n, s´lo
                   o                                            o    o
son posibles 10 estados de nuestro fen´meno. Ahora, la afirmaci´n “la
                                       o                          o
camisa y el pantal´n no eran ambos marrones” resulta redundante puesto
                  o
que, consider´ndola, siguen siendo posibles los mismos 10 estados que
              a
ignor´ndola.
     a
    En lugar de hablarse de cantidad de informaci´n, resulta m´s f´cil
                                                   o            a a
manipular la de incertidumbre. Una medida indirecta de ello consiste
en la cantidad de estados posibles: su grado de indeterminaci´n. Si
                                                                 o
cierto fen´meno ofrece 12 estados posibles, su grado de indeterminaci´n
          o                                                          o
es 12, pero resulta m´s conveniente considerar como medida de la in-
                      a
certidumbre el logaritmo (en base dos) de esta cantidad, puesto que la
incertidumbre crece de forma exponencial (con base dos) respecto de la
longitud (n´mero de bits) del mensaje. Esta medida de la incertidumbre
            u
se 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
                            o
disminuci´n de incertidumbre proporcionada. Siendo H0 = log2 (n0 )
          o
y H1 = log2 (n1 ) las entrop´ correspondientes a los estados previo y
                              ıas
posterior 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 > 0
mientras que la segunda proporciona una cantidad de informaci´n nula,
                                                             o
al ser redundante.

La redundancia en la codificaci´n.- En los convenios de codifica-
                                      o
ci´n/decodificaci´n estudiados hasta ahora, se ha supuesto que su trans-
  o              o
misi´n o su almacenamiento se efect´ a siempre sin ruido. En ellos, el
     o                                 u
objetivo principal consiste en dise˜ar convenios eficaces (sin emplear m´s
                                   n                                   a
d´
 ı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, se
han ideado m´todos capaces de descubrir en ciertas condiciones cu´ndo
               e                                                 a
se 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                                                             n
uno, cuyo valor consigue que haya en total un n´mero par de unos. Se
                                                  u
ignora la posibilidad de que se altere m´s de un bit, por considerarla
                                          a
extremadamente improbable. En la interpretaci´n del mensaje se verifica
                                                o
previamente la paridad, detect´ndose un error si se ha producido, aunque
                               a
no ser´ posible identificar cu´l para restablecer su estado.
      a                      a
´
2.3. Codigos redundantes                                                 51


C´digo dos entre tres.- Este mecanismo consiste sencillamente en
  o
triplicar las copias de cierta informaci´n. Se consideran dos posibilida-
                                        o
des: que no se produzca ninguna alteraci´n, o que se produzca en una de
                                          o
las copias, descart´ndose mayores perturbaciones. En ambos casos, se
                    a
interpreta el mensaje cifrado en la mayor´ de las copias: dos (al menos)
                                          ıa
entre 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        e
p unos (y n−p ceros), ser´ posible detectar si se efect´ a una perturbaci´n
                         a                             u                 o
simple, o una m´ltiple, siempre que no se alteren tantos unos como ce-
                 u
ros. En un c´digo p de n, el grado de indeterminaci´n es el n´mero de
             o                                          o         u
permutaciones 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.
                a

2.3.3    C´digos autocorrectores: Hamming
          o
Fundamento
    Consideremos un mensaje de n bits. La idea b´sica consiste en a˜ adir
                                                   a                  n
un cierto n´mero p de bits, cada uno de los cuales asegura un cierto
            u
subconjunto 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
                                                                      o
uno de los n + p bits y deseamos conocer si ha habido o no perturbaci´n  o
y, en caso afirmativo, cu´l de los n + p bits ha sido alterado. Puesto que
                         a
el mensaje debe codificarse en los n bits, la informaci´n sobre el estado
                                                         o
de 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 los
2p estados posibles de los p bits de paridad acepten al menos n + p + 1
estados distintos: no alteraci´n (1) o la posici´n del bit alterado (n + p).
                              o                 o
Es 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 que
el estado de los p bits de paridad asociados a esos conjuntos permita
localizar el bit alterado, en su caso y, si es posible, con facilidad.

    Un modo de conseguir el objetivo descrito consiste en intercalar el
bit i-´simo en la posici´n 2i−1 , para i = 1, . . . , p, siendo su conjunto
      e                  o
asociado el de los d´ıgitos cuyo n´mero de posici´n, escrito en binario
                                   u                  o
natural, tiene un 1 como cifra i-´sima.
                                 e

    Sea por ejemplo n = 4. Necesitamos p = 3 bits de paridad, que
colocaremos 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
                             a
cuya posici´n acabe en 1 (1, 3, 5 y 7); el bit 010(2 est´ asociado al
             o                                                a
conjunto de los bits del mensaje cuya posici´n tenga un 1 en la segunda
                                                o
cifra (2, 3, 6 y 7), y el bit 100(2 est´ asociado al conjunto de los bits del
                                       a
mensaje 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 a
sus conjuntos asociados. Por ejemplo, si se desea transmitir el mensaje
0110
                                    0        1   1     0

bastar´ con ajustar el bit 10 con los 30 , 50 y 70 (resultando un 1); el bit
       a
20 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                                                                 53


Decodificaci´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
                                                           o
ninguno, el mensaje se ha mantenido intacto durante la transmisi´n; en
                                                                  o
caso contrario, la suma de las posiciones de los bits alterados se˜ala el
                                                                  n
bit modificado.

   Por ejemplo, si el mensaje anterior se recibe as´
                                                   ı:

                         1   1   0   0   0   1   0

el 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
                                                   o
mensaje original era

                         1   1   0   0   1   1   0


Anexo: demostraci´n del teorema 2.1
                 o
    Incluimos aqu´ esta demostraci´n por ser constructiva, mostrando
                  ı                o
el proceso de expresar una cantidad en cualquier base mayor que uno.
Procederemos en cuatro fases: en primer lugar, la existencia de esa
representaci´n en las condiciones del teorema se demuestra f´cilmente
            o                                                  a
por inducci´n, dando un m´todo para hallar esa construcci´n. En se-
            o               e                                o
gundo, se demuestra (tambi´n por inducci´n) que ese m´todo converge
                            e             o             e
y a continuaci´n que la soluci´n que proporciona equivale efectivamente
              o               o
a la cantidad dada. Finalmente, se demuestra que no hay m´s que una
                                                             a
representaci´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               u


2.5      Comentarios bibliogr´ficos
                             a
    El material incluido en este cap´
                                    ıtulo sobre la representaci´n de los n´meros
                                                               o          u
reales en coma flotante s´lo es una aproximaci´n conceptual. En [Gol91] se
                           o                      o
encontrar´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
                         a
redondeo, el manejo de las excepciones producidas por el desbordamiento y su
concreci´n en los sistemas normalizados por la IEEE.
        o
    Aunque el sistema de numeraci´n sexagesimal no puede considerarse posi-
                                    o
cional (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 mediante
su posici´n, este sistema es probablemente el precursor de los sistemas posicio-
         o
nales. Para completar la referencia hist´rica, debe decirse que, en la antigua
                                         o
Babilonia, tambi´n se conoc´ un sistema de coma flotante, que seguramente
                  e           ıa
es 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                                                       o
y los hallados en diversas m´quinas.
                              a
    Los convenios presentados en este cap´ ıtulo constituyen tan s´lo una pe-
                                                                  o
que˜a parte de los ideados para mantener o proteger la informaci´n. Se han
    n                                                             o
escogido algunos de los c´digos m´s ilustrativos y los m´s difundidos, aun-
                          o        a                       a
que faltan otros, tales como el llamado binario reflejado y los de Gray. Una
introducci´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                 o
es la criptolog´ que estudia mecanismos para ocultarla, cifr´ndola en claves
               ıa,                                            a
secretas (criptograf´ as´ como para descifrarla (criptoan´lisis). En [Dew88,
                    ıa), ı                                 a
Dew89] puede encontrarse una sencilla introducci´n a estos temas.
                                                 o
Cap´
   ıtulo 3

Estructura f´
            ısica de un
computador
   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 conceptos
b´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
                                                                     a
profesional) se encuentra una gran cantidad de profesionales que requie-
ren conocer los computadores con un cierto detalle. Al menos, siempre es
necesario 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           e
dos 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                     n
con una sola palabra; literalmente se debe entender como “conjunto de
utiles duros”; en el contexto que nos ocupa, el hardware de un computa-
´
dor es el conjunto de dispositivos f´
                                    ısicos que lo componen, mientras que
otra palabra inglesa, software, designa los programas que puede ejecutar
el computador.
    En cierto modo, el hardware es comparable al cerebro o, m´s ge-
                                                                  a
neralmente, al cuerpo f´ ısico del computador mientras que el software
ser´ lo equivalente a las ideas que pueblan el cerebro. Es conveniente
   ıa
se˜alar, a pesar de su evidencia, que el hardware y el software son per-
  n
fectamente in´tiles aisladamente: de nada nos sirve un computador si
              u
no tenemos ning´n programa que ejecutar, y de nada nos sirve tener
                 u
muchos programas si no disponemos de un computador que los ejecute.
    Nuestra visi´n del sistema formado por el hardware y el software es
                o
funcional, y en la ultima parte del cap´
                   ´                   ıtulo ser´ patente esta relaci´n
                                                a                    o
de dependencia mutua: explicaremos el funcionamiento del hardware
siguiendo la ejecuci´n de algunos programas sencillos, escritos en su
                    o
propio lenguaje.


3.1     Componentes de un computador
    Para introducir los conceptos b´sicos que estudiaremos dentro de
                                     a
esta secci´n consideramos un computador como una unidad de pro-
          o
ducci´n. Una unidad de producci´n adquiere materia prima, la elabora
      o                           o
y, finalmente, vende la materia elaborada. Esto mismo es lo que hace un
computador: toma algunos datos, los procesa y, finalmente, devuelve el
resultado obtenido al procesar la informaci´n.
                                           o
    M´s concretamente, consideremos una panader´ ideal. En esta pa-
      a                                              ıa
nader´ se compra harina, levadura, . . . (entrada de datos) que posterior-
      ıa
mente 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 se
realiza mediante los perif´ricos. Dentro de la panader´ podemos encon-
                          e                             ıa
trar 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.
                                     a



de 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
                                e
de trabajo es la unidad central de proceso o UCP que, a su vez, consta
de la unidad de control o UC (el encargado que controla los procesos
de amasado y horneado) y la unidad aritm´tica y l´gica o UAL (zona
                                            e      o
de amasado y horno). Naturalmente, entre las distintas zonas deben
existir pasillos de comunicaci´n para poder sincronizar las acciones de
                              o
cada uno; en un computador esta informaci´n se env´ y recibe a trav´s
                                           o        ıa               e
de los buses.


   En las siguientes secciones estudiaremos cada una de las partes que
componen la estructura f´ısica de un computador. La figura 3.1 presenta
un esquema de la misma.
62           Cap´
                ıtulo 3. Estructura f´
                                     ısica de un computador


3.1.1   Memoria principal
    Mencion´bamos en el p´rrafo anterior que la memoria representa el
             a             a
almac´n donde se guarda la informaci´n, en esta secci´n estudiaremos
       e                             o                o
algunos detalles del almacenamiento de informaci´n en la memoria y de
                                                o
los 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
                 a
salida de la ejecuci´n. Estudiaremos la memoria de un computador desde
                    o
un punto de vista f´  ısico (distintos medios de almacenamiento) y desde
un 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 principio
del cap´ıtulo: en el almac´n encontramos estanter´ repletas de bandejas
                          e                      ıas
iguales, y cuando un trabajador entra en el almac´n, bien trae o bien
                                                     e
retira algunas de estas bandejas. La unidad m´  ınima a la que se accede
no es una barra de pan (bit) sino una bandeja completa (palabra). La
longitud de palabra de memoria viene representada por la capacidad de
cada bandeja.
    No podemos acceder a cada bit de la memoria aisladamente; la
m´ınima cantidad de memoria a la que podemos acceder est´ formada
                                                           a
por una palabra de memoria. F´  ısicamente, la memoria est´ dividida
                                                           a
en celdas (con una capacidad de informaci´n de un bit), agrupadas en
                                         o
palabras de memoria.


Funcionamiento de la memoria
    Para acceder a cada palabra de memoria debemos poder referirnos a
ellas. Esto se hace asignando una direcci´n num´rica binaria a cada pa-
                                         o      e
labra a modo de “direcci´n postal”. La direcci´n de memoria determina
                         o                    o
una 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                                      63


entre 0 y 220 − 1. Para poder denotar todas las palabras de memoria
disponibles necesitaremos al menos 20 d´   ıgitos ya que, en general, con
d bits es posible direccionar 2d palabras de memoria. T´ngase en cuenta
                                                         e
que, en principio, la longitud de palabra de memoria no tiene relaci´n o
con la longitud de las direcciones de memoria; en el apartado sobre op-
timizaci´n de memorias tendremos la oportunidad de profundizar algo
         o
m´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
                                        o
de memoria. Tanto la UCP como la memoria se sirven de unas cuantas
palabras de acceso muy r´pido, llamadas registros. Para las operacio-
                            a
nes de lectura y escritura, los dispositivos de memoria disponen de dos
registros: 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
                           o
quiere escribir; puesto que debe tener capacidad para albergar cualquier
direcci´n de memoria, es un registro de d bits siguiendo la notaci´n
       o                                                               o
anterior. Por su parte, el RIM alberga la palabra le´ o que se va a
                                                       ıda
escribir en la direcci´n dada por el RD y, por lo tanto, tiene tantos bits
                      o
como la longitud de palabra de memoria. La memoria est´ conectada
                                                             a
con la UCP y con los perif´ricos a trav´s de los buses de direcciones, de
                            e           e
datos y de control que describiremos m´s adelante.
                                         a
   El proceso de lectura o escritura se puede dividir en los siguientes
pasos:

  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.
                                  o


Clasificaci´n de las memorias
          o

    La memoria se encarga de intercambiar informaci´n con el procesador
                                                      o
seg´n las necesidades de ´ste. Con la tecnolog´ actual los procesado-
   u                      e                       ıa
res alcanzan velocidades de varios millones de c´mputos por segundo,
                                                    o
lo que obliga a la memoria a tener una velocidad semejante a fin de
no menguar la eficiencia del computador. Por otra parte, la capacidad
de memoria es otra caracter´ ıstica interesante, ya que, en principio,1 no
podr´ıamos ejecutar programas que no pudieran ser cargados completa-
mente en memoria. Las caracter´    ısticas de velocidad y capacidad est´n
                                                                        a
re˜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-
                                          u
zado podemos destacar varios niveles jer´rquicos de memoria: de m´s
                                            a                           a
r´pida y cara (por lo que suelen tener menor capacidad) a menos r´pida
 a                                                                  a
y mayor capacidad:

     1. Memoria principal

     2. Memoria secundaria

     3. Memoria auxiliar

Los dos ultimos tipos de memoria ser´n desarrollados en la secci´n de
         ´                             a                          o
perif´ricos, pues pueden ser considerados como perif´ricos de almacena-
     e                                              e
miento.
    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 memorias
de s´lo lectura que hace las veces de manual de comportamiento de la
    o
m´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                               e
ROM (acr´nimo del ingl´s Read Only Memory). Los computadores vie-
          o             e
nen dotados con una memoria de este tipo donde se almacena la rutina
de arranque. Otras aplicaciones de este tipo de memoria las encontra-
mos en las lavadoras autom´ticas (los programas de lavado se almacenan
                           a
en una ROM) y en los juguetes electr´nicos. En este tipo de memoria
                                       o
la 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
                                                 u
contenido 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-
         e
rias podemos distinguir las RAM est´ticas y las RAM din´micas. Las
                                      a                      a
est´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                             o
dentro del microchip, generalmente construido con semiconductores).
Por otra parte, son memorias vol´tiles en el sentido de que necesitan
                                    a
la 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                          o
dicamente, ya que se va descargando con el tiempo. Esta p´rdida de
                                                             e
informaci´n es debida a que est´n construidas usando peque˜os conden-
         o                     a                           n
sadores. 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                     a

Optimizaci´n de memorias
          o
    Sabiendo la necesidad de contar con memorias cada vez m´s r´pidas
                                                            a a
y con m´s capacidad se han ideado m´todos de optimizaci´n para la me-
        a                            e                  o
moria principal. Dependiendo del aspecto por optimizar encontramos las
   2
     El tiempo requerido para leer o escribir una palabra de memoria. En una memoria
est´tica puede ser de unos 20 ns, mientras que en una din´mica puede alcanzar los 80
   a                                                       a
ns.
66             Cap´
                  ıtulo 3. Estructura f´
                                       ısica de un computador


memorias cach´ y la memoria virtual que, respectivamente, aumentan
                e
la rapidez y la capacidad de la memoria principal.
    Las memorias cach´ son memorias hasta mil veces m´s r´pidas que
                       e                                  a a
las usuales pero, debido a su alto coste, suelen tener una capacidad
muy peque˜a. La idea que define las memorias cach´ no puede ser m´s
           n                                         e                 a
simple: se trata de guardar en registros los contenidos de las posiciones
de memoria de uso m´s frecuente, de modo que sea mucho m´s r´pido
                      a                                         a a
acceder a la informaci´n que hay en ellas.
                      o
    El funcionamiento de la memoria cach´ ejerce una acci´n de filtro
                                          e                o
sobre las direcciones de memoria que solicita la UCP. La secuencia de
acciones que se producen en las operaciones de lectura y escritura con
memoria 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´.
               e
Existen distintas estrategias para seleccionar las direcciones que se guar-
dan en la memoria cach´ de modo que se mantengan en ella las direc-
                          e
ciones m´s usadas (obs´rvese que el conjunto de direcciones de memoria
         a              e
m´s utilizadas variar´ con la fase del programa que se est´ ejecutando).
  a                   a                                     e
Una 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           e
cidad aparente de la memoria se asemejar´ mucho a la velocidad de la
                                            a
memoria cach´. e
    La memoria virtual se desarrolla con el prop´sito de poder hacer uso
                                                 o
de 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             o
que cupieran en memoria mediante la t´cnica del solapamiento (over-
                                          e
lay). Esta t´cnica tiene el serio inconveniente de que los programas no
            e
3.1. Componentes de un computador                                       67


son transportables, puesto que, en general, no funcionar´ en un com-
                                                        ıan
putador con menos memoria.
    Para solventar estos problemas se desarroll´ la memoria virtual como
                                                o
un m´todo autom´tico para realizar el solapamiento. La idea consiste en
      e            a
usar la memoria secundaria, generalmente un disco duro, como memo-
ria principal. Un programador que dispone de memoria virtual tiene la
impresi´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                               o
son la paginaci´n y la segmentaci´n. Estas t´cnicas utilizan programas
               o                 o             e
de gesti´n de memoria que forman parte del sistema operativo; en el
        o
cap´
   ıtulo 4 se presentar´n m´s detalles sobre ellas.
                       a    a

3.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
                     o
a ella como el procesador. La UCP est´ formada por la unidad de control
                                      a
(UC), que clasifica y organiza las instrucciones recibidas (encargado), y
la unidad aritm´tica y l´gica (UAL), que las ejecuta (donde se “amasa
                 e      o
y cuece” la informaci´n).
                      o
    F´ısicamente el procesador es un microchip y consta de unos circuitos
electr´nicos que permiten realizar operaciones elementales con la infor-
       o
maci´n. El procesador se conecta con el resto de los componentes de
     o
un computador mediante unas patillas met´licas, cada una de las cuales
                                           a
transporta informaci´n binaria, a trav´s de los buses de comunicaci´n
                      o                 e                              o
que estudiaremos m´s adelante.
                     a
    El cometido de la UC consiste en recibir la instrucci´n que se va a
                                                          o
ejecutar, determinar su tipo (c´lculo aritm´tico, l´gico, . . . ), determi-
                                  a          e      o
nar si esa instrucci´n necesita argumentos almacenados en la memoria,
                     o
leer (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
                    o
parte, la labor de la UAL es la de ejecutar las instrucciones aritm´ticas
                                                                      e
68             Cap´
                  ıtulo 3. Estructura f´
                                       ısica de un computador


y l´gicas, una vez que la UC ha determinado su tipo y ha le´ sus ar-
   o                                                         ıdo
gumentos (si los hubiera). Las instrucciones que llegan a la UAL son
muy sencillas, y se reducen a un c´lculo aritm´tico elemental (seg´ n
                                     a           e                      u
el tipo de procesador, “elemental” significar´ bien suma-resta o bien
                                              a
suma-resta-multiplicaci´n-divisi´n), un c´lculo l´gico (and, or, . . . ), o
                        o       o        a       o
una instrucci´n de salto o bifurcaci´n.
             o                      o

Unidad de control
    La UC se encarga de clasificar las instrucciones que recibe, controlar
su ejecuci´n y leer las zonas de la memoria que almacenan los argumentos
          o
de estas instrucciones. La UC est´ dotada de unos cuantos registros
                                      a
internos de memoria que usa para almacenar datos elementales durante
la ejecuci´n de una instrucci´n elemental. Esta memoria dispone de
          o                     o
un cierto n´mero de registros con un cometido particular, entre los que
            u
destacan 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           a
y, por su parte, el contador de programa almacena la direcci´n de la
                                                                 o
siguiente instrucci´n que debe ser ejecutada. Existen, adem´s, otros
                    o                                            a
registros que almacenan los resultados parciales de la ejecuci´n de una
                                                               o
instrucci´n.
         o
    El funcionamiento de la UC est´ regido por los impulsos de un reloj
                                    a
que sincroniza la realizaci´n de las distintas operaciones y determina la
                           o
velocidad 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
                       n
instrucci´n puede descomponerse en peque˜os pasos como los descritos
         o                              n
a 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                   o

Unidad aritm´tica y l´gica
            e        o
   La unidad aritm´tica y l´gica es el horno donde se cuece la infor-
                    e       o
maci´n; su tarea consiste en recibir instrucciones junto con sus argu-
    o
mentos y ejecutarlas, dando a cambio el resultado de su operaci´n.
                                                               o
    Esta unidad consta de un(os) operador(es) que ejecuta(n) f´ısicamente
las instrucciones recibidas, una serie de registros para almacenar infor-
maci´n mientras se ejecuta una instrucci´n (entre estos registros destaca
     o                                   o
el registro acumulador , al que se har´ referencia de nuevo cuando estu-
                                      a
diemos el direccionamiento de las instrucciones) y algunos se˜alizadores
                                                              n
de estado que indican resultados interesantes obtenidos al realizar un
c´mputo (resultado cero, overflow o desbordamiento, . . . )
 o
    Los operadores son dispositivos f´
                                     ısicos (circuitos electr´nicos) que
                                                             o
pueden 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 de
una palabra varios lugares hacia la izquierda o hacia la derecha. Depen-
diendo de la acci´n del desplazamiento sobre los extremos de la palabra
                 o
podemos 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
                     o
a bit. La primera de estas operaciones s´lo depende de un argumento,
                                         o
mientras que las restantes necesitan dos argumentos.
    Las operaciones aritm´ticas m´s importantes que se realizan en la
                           e       a
UAL son las de suma, resta, multiplicaci´n y divisi´n, la de cambio de
                                         o          o
signo y la de extensi´n de signo. Esta ultima operaci´n se hace necesa-
                     o                 ´              o
ria cuando se transmite informaci´n a un elemento con mayor longitud
                                  o
de palabra pues es necesario completar los bits restantes sin alterar la
informaci´n. En general las operaciones de multiplicar y dividir se hacen
           o
usando sumas y restas mediante un algoritmo apropiado; s´lo computa-
                                                           o
dores muy potentes (y caros) disponen de operadores particulares que
las realicen directamente.
    Se puede mejorar la capacidad de c´lculo num´rico de algunos proce-
                                       a          e
sadores a˜adiendo un coprocesador matem´tico. Los dispositivos de este
         n                                 a
tipo complementan la UAL del procesador por otra m´s potente; con ma-
                                                     a
yores y m´s numerosos registros operativos, con una representaci´n inter-
          a                                                     o
na de los datos de mayor precisi´n y con instrucciones num´ricas m´s
                                  o                           e        a
complejas (funciones exponenciales, logar´ıtmicas y trigonom´tricas).
                                                             e
    Para ello, comparten el flujo de instrucciones y datos del procesador
y cuando detectan alguna instrucci´n num´rica toman el control del
                                     o       e
programa, ejecutan la instrucci´n, calculan el resultado y devuelven el
                                o
control al procesador.

3.1.3      Perif´ricos
                e
   Damos en esta secci´n una visi´n general de los perif´ricos. Pode-
                        o          o                     e
mos considerar perif´ricos de entrada, de salida y de almacenamiento;
                    e
3.1. Componentes de un computador                                     71


asimismo podemos distinguir entre perif´ricos locales y perif´ricos remo-
                                       e                     e
tos, seg´n su conexi´n al computador. Un perif´rico local, como el rat´n,
        u           o                          e                       o
se encuentra cerca de la UCP conectado mediante cables que hacen las
veces de prolongador de los buses del computador. Para un perif´rico e
remoto, como una impresora l´ser del centro de c´lculo, la conexi´n se
                               a                   a                 o
realiza a trav´s de una red de comunicaciones.
              e
   A continuaci´n se enumeran algunos de los perif´ricos m´s impor-
               o                                  e       a
tantes:

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.
         a


De 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                                      73


Perif´ricos de almacenamiento
     e
    Aunque se trata en realidad de perif´ricos de entrada y salida, suelen
                                        e
estudiarse aparte. Los perif´ricos de almacenamiento son tambi´n co-
                             e                                      e
nocidos como memorias secundarias y memorias auxiliares. La mayor´      ıa
de estos dispositivos almacenan la informaci´n de forma magn´tica. El
                                              o                  e
primero de todos los dispositivos de almacenamiento magn´tico fue la
                                                              e
unidad (lectora y grabadora) de cinta magn´tica, y posteriormente se
                                               e
desarrollaron las unidades de discos fijos (tambi´n llamados discos du-
                                                  e
ros) y las unidades de discos flexibles.
    En una cinta magn´tica el acceso a la informaci´n es secuencial (te-
                        e                            o
nemos que hacer correr la cinta hasta que aparezca la informaci´n que
                                                                   o
buscamos); esto hace que sea un medio muy lento. Generalmente las
cintas magn´ticas, debido a su gran capacidad, se utilizan para hacer
             e
peri´dicamente copias de seguridad (backup) de la informaci´n alma-
    o                                                           o
cenada 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                    o
contenida en un disco duro.
    Los discos magn´ticos reciben este nombre por su forma y porque
                    e
su superficie es magn´tica (ciertamente no es un nombre muy original,
                      e
aunque s´ autoexplicativo) y son dispositivos de acceso directo, esto es,
         ı
no tenemos que recorrer toda la informaci´n que hay delante de la que
                                          o
necesitamos.
    Los discos magn´ticos necesitan organizarse l´gicamente para po-
                    e                             o
der albergar informaci´n de un modo ordenado; dar formato a un disco
                      o
magn´tico es dotarlo de la organizaci´n l´gica necesaria para cada mo-
      e                              o o
delo de computador (no es lo mismo el formato del DOS, que usan los
compatibles con IBM, que el formato usado por los computadores Ma-
cintosh).
    La informaci´n se almacena siguiendo c´
                 o                           ırculos conc´ntricos llamados
                                                         e
pistas que a su vez se dividen en sectores que contienen un cierto n´mero
                                                                     u
de palabras (celdas). Para indicar una direcci´n se especifica la pista y
                                                 o
el sector donde comienza la informaci´n, por lo cual una transferencia
                                        o
74           Cap´
                ıtulo 3. Estructura f´
                                     ısica de un computador


de 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
                                                                e
bastante complejas y, por lo tanto, se suele dejar al sistema operativo
la gesti´n de todas las peque˜as tareas que hay que llevar a cabo, en el
        o                      n
cap´ıtulo 4 veremos que el sistema operativo es el software encargado de
facilitar este tipo de tareas a los usuarios del computador.
    Entre los distintos tipos de disco destacan los discos duros (hard
disk ), que disponen de una gran capacidad de almacenamiento (de 20
a 800 Mb). Suelen ser fijos (no se pueden extraer del computador) y
suelen 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
                                                        e
extra´ ıbles y por eso pueden ser usados para transferir informaci´n de
                                                                   o
un computador a otro (que pueda leer discos flexibles). Estos discos
tienen una capacidad mucho menor que un disco duro (entre 360 Kb y
2’88 Mb) y el tiempo de acceso a la informaci´n almacenada es bastante
                                              o
grande. Actualmente coexisten discos flexibles de dos tama˜os distintos,
                                                            n
de 5 1 y de 3 1 (pulgadas), de similares prestaciones. Los computadores
     4         2
compatibles con IBM pueden utilizar discos flexibles de 5 1 y de 3 1 ,
                                                             4         2
mientras 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                                     4
acaben 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 capacidad
y a velocidad de acceso y adem´s son intercambiables.
                                  a

3.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                                                o
tantemente y, obviamente, la comunicaci´n debe establecerse a trav´s
                                           o                          e
de un medio f´  ısico que conecte la UCP con los dispositivos E/S y con
el exterior. La comunicaci´n entre los distintos componentes se realiza
                             o
a trav´s de l´
       e      ıneas que transportan informaci´n binaria. Este transporte
                                             o
puede 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                       o
que transporten, y cada uno de estos conjuntos de l´
                                                   ıneas recibe el nombre
de bus. Un bus transmite la informaci´n en paralelo.
                                       o
  Atendiendo al tipo de informaci´n que transmiten, los buses de co-
                                   o
municaci´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 la
longitud de la palabra de m´quina, aunque a veces s´lo tienen la mitad,
                             a                        o
lo que incide negativamente en la velocidad del computador pero suele
abaratar el precio. Si el n´mero de celdas de memoria accesibles es 2d ,
                           u
los 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 distintas
marcas y modelos de procesador.
   Por el bus de datos la UC recibe (el c´digo binario de) una ins-
                                              o
trucci´n, la interpreta y prepara su ejecuci´n. Dependiendo del tipo de
      o                                     o
76            Cap´
                 ıtulo 3. Estructura f´
                                      ısica de un computador


instrucci´n, la UC puede generar algunos c´digos de control que ser´n
         o                                   o                        a
enviados a trav´s del bus de control; en su caso, averiguar´ a trav´s del
                e                                          a       e
bus de direcciones en qu´ posici´n (de la memoria principal) encuentran
                        e       o
los argumentos de la instrucci´n, esta informaci´n viajar´ hasta la UC
                              o                  o        a
por el bus de datos y, finalmente, el resultado del c´mputo ser´ trans-
                                                     o           a
portado de nuevo a trav´s del bus de datos hacia la memoria o hacia un
                        e
perif´rico.
     e
    Existen dispositivos electr´nicos para el control de los buses que, en
                               o
ciertos 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
                   o
se puede hacer de dos formas distintas: utilizando la propia memoria
principal o trav´s de una memoria independiente para E/S. En el primer
                e
caso cada controlador de dispositivo tiene asignada una direcci´n de
                                                                   o
memoria. Cuando la UCP quiere leer o escribir en el dispositivo, lo
hace en la direcci´n que dicho dispositivo tiene asignada, utilizando las
                  o
mismas instrucciones de escritura o lectura de memoria. En el segundo
caso, el lenguaje m´quina debe disponer de instrucciones especializadas
                    a
para el acceso a este ´rea de E/S.
                      a
    Los controladores de prop´sito general cumplen un determinado pro-
                             o
tocolo est´ndar de comunicaciones y disponen de los necesarios conecto-
          a
res en el exterior del computador. Cualquier perif´rico que se atenga a
                                                    e
dicho 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
                           a
puertos 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
                o
ceros 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                     o
instrucciones expresadas en su lenguaje de m´quina, y cada instrucci´n
                                              a                         o
especifica una acci´n particular sobre algunos operandos. Una instruc-
                   o
ci´n es una lista de ceros y unos: una parte de la lista es el c´digo de la
  o                                                             o
operaci´n que ha de realizarse, el resto determina d´nde se encuentran
        o                                             o
los argumentos de la instrucci´n (si los hubiera). Todo lo relacionado
                                o
con la especificaci´n de d´nde est´n los argumentos de la instrucci´n
                   o        o       a                                   o
recibe el nombre de direccionamiento. A las instrucciones de m´quinaa
se les asignan nombres nemot´cnicos, m´s f´ciles de recordar que listas
                               e         a a
de ceros y unos.

    Estas instrucciones son muy elementales, por lo tanto es necesario
realizar un gran esfuerzo de traducci´n entre el lenguaje natural y el
                                       o
c´digo m´quina. En el cap´
 o        a                 ıtulo 5 estudiaremos la jerarqu´ de niveles
                                                           ıa
que permiten a un programador de aplicaciones escribir sus programas
en lenguajes a medio camino entre el lenguaje natural y la codificaci´n
                                                                    o
en binario.

    Hay dos tendencias b´sicas en el dise˜o de juegos de instrucciones:
                         a               n
pocas instrucciones (algunas decenas) simples pero de ejecuci´n muy
                                                               o
r´pida o muchas instrucciones (unas 200) complejas, de ejecuci´n algo
 a                                                              o
m´s lenta. La primera se conoce como RISC (del ingl´s, Reduced Instruc-
  a                                                e
tion Set Computer : computador con juego de instrucciones reducido) y
la segunda como CISC (Complex Instruction Set Computer : computa-
dor con juego de instrucciones complejo).
78           Cap´
                ıtulo 3. Estructura f´
                                     ısica de un computador


3.2.1   Formato de las instrucciones
   La elecci´n del formato de las instrucciones de un procesador depende
            o
en buena parte de las especificaciones fijadas por el equipo de dise˜o del
                                                                   n
procesador y de otras consideraciones que veremos a continuaci´n.o
    Entre las operaciones que se ejecutan en un procesador, algunas no
tienen operandos, otras tienen uno, dos o a lo sumo tres. En muchos
de los casos los operandos vienen expresados por sus direcciones de me-
moria, por lo que se suele hablar de instrucciones de una, dos o tres
direcciones.
   Pueden existir instrucciones sin operando, bien porque el operando
no aparezca expl´ıcitamente, siendo uno de los registros del procesador,
o porque la propia instrucci´n no lo necesite, como cuando se repite un
                            o
proceso o se regresa de una llamada a un subprograma.
    En el otro extremo se sit´an las operaciones binarias, que precisan
                              u
tres direcciones para llevarse a cabo: las de sus dos argumentos y la de
d´nde ha de colocarse el resultado obtenido.
 o
    Lo ideal en un juego de instrucciones es que todas tengan el mismo
formato. Adoptar, por ejemplo, un juego de instrucciones de tres di-
recciones es sencillo: basta con ignorar los argumentos a˜adidos para
                                                          n
igualar el formato.
   Tambi´n es posible elegir un juego de instrucciones con menos de tres
         e
operandos. Las operaciones de tres argumentos se traducen entonces
como sigue (considerando una operaci´n aritm´tica cualquiera):
                                      o        e
   Si el juego de instrucciones es de dos direcciones, ´stas representan
                                                       e
a ambos argumentos, y el resultado de la ejecuci´n se almacena en la
                                                  o
primera o segunda direcci´n suministrada.
                          o
    En las instrucciones de una direcci´n s´lo se especifica la de uno de
                                       o o
los argumentos. En el caso de que se trate de una instrucci´n binaria, se
                                                           o
hace 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
                                                     o
por la instrucci´n, y el resultado de la instrucci´n se almacena en el
                o                                  o
registro acumulador (ver secci´n 3.3.2).
                               o
´
3.2. Lenguajes de maquina                                              79


3.2.2   Tipos de Instrucciones
   Las instrucciones del juego de un procesador pueden ser divididas
seg´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.
                 o


3.3       Un ejemplo de recapitulaci´n
                                    o
   En este apartado vamos a desarrollar un ejemplo explicativo de un
conjunto 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-
                             n
trucciones 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
                                                     a
direcciones, 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
                                                n
es de 16 bits, es decir que en cada direcci´n de memoria se almacenan 16
                                           o
´
3.3. Un ejemplo de recapitulacion                                       81


bits, y que en cada operaci´n de lectura o escritura de memoria se trabaja
                            o
con 16 bits. (En muchos sistemas el tama˜o de palabra de memoria es
                                             n
de 8 bits. Por ello, la formaci´n de un dato de 16 bits requiere la lectura
                               o
de dos posiciones consecutivas de memoria empezando, por ejemplo, por
la posici´n par.)
         o

3.3.1    UCP con acumulador
    Como hemos visto (apartado 3.1.1), los registros son memorias de
gran velocidad utilizadas por la UCP y la memoria principal para re-
alizar sus operaciones. Su tama˜o depende del contenido que vayan a
                                n
almacenar. En nuestro caso, el registro de direcci´n de memoria tendr´
                                                  o                  ıa
12 bits y el de intercambio de memoria 16 bits.
    El contador de programa tiene que almacenar una direcci´n de me-
                                                               o
moria, luego tendr´ 12 bits, mientras que el registro de instrucci´n, que
                   a                                              o
tiene que almacenar la instrucci´n completa, tendr´ 16 bits. Adem´s
                                 o                   a                 a
existir´ un registro acumulador, que desempe˜a en este caso un papel
       a                                       n
fundamental 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 actual
del registro acumulador y como segundo operando se toma el contenido
de la direcci´n que aparece en la instrucci´n y el resultado se almacena
             o                             o
nuevamente en el acumulador. Por lo tanto, en las instrucciones de dos
operandos el registro acumulador hace el doble papel de operando y de
destinatario del resultado.
    Supongamos que queremos sumar el contenido de la posici´n de me-
                                                              o
moria 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-
                                                  o
dor, a continuaci´n llamamos a la operaci´n suma con la direcci´n 150;
                 o                        o                      o
como veremos, esta instrucci´n suma al acumulador el contenido de la
                             o
direcci´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-
             a
cribir´
      ıa:
                             SUMAR 100 150 200
El lenguaje m´quina se simplifica al tener una unica direcci´n, pero las
              a                                ´           o
operaciones se complican al tener que cargar y almacenar los operandos
del acumulador.
    En las operaciones de cambio de signo o de complementaci´n, sola-
                                                             o
mente tenemos un operando. La operaci´n se realiza sobre el contenido
                                       o
del acumulador, donde se almacena tambi´n el resultado. La direcci´n
                                         e                         o
pasada como argumento no se tiene en cuenta.
    En las operaciones de E/S, el contenido de una posici´n de memoria
                                                         o
se recibe o env´ a un dispositivo externo. En este caso, no se utiliza el
               ıa
registro 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 de
m´quina de una direcci´n simplificado. La notaci´n M [d] representa
  a                     o                          o
el contenido de la direcci´n d de la memoria. La instrucci´n CARgar d
                          o                                o
deposita el contenido de la posici´n de memoria d en el acumulador.
                                  o
   La instrucci´n ALMacenar d realiza el proceso contrario: guarda el
               o
contenido 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 un
dato de una posici´n de memoria destinada a un dispositivo externo y lo
                   o
almacena en la direcci´n de memoria d; la segunda toma el contenido de
                       o
la posici´n de memoria d y lo env´ a la direcci´n de memoria destinada
         o                         ıa            o
al dispositivo externo.3
     3
    Por ser este un modelo muy simplificado, no se tiene en cuenta la comunicaci´n
                                                                               o
directa 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-
     o
nido del acumulador, almacenando el resultado en dicho registro.
    El mismo proceso pero aplicando la multiplicaci´n o la divisi´n es
                                                   o             o
realizado 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-
                                          o
dor. 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
                       o
direcci´n de memoria d y del acumulador, efect´an la operaci´n and u
       o                                      u             o
or 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                                       u
dencia del valor del acumulador.
    La instrucci´n CONDici´n d, toma el valor del acumulador, comprueba
                o          o
si es mayor que cero, y en caso afirmativo carga en el registro contador de
programa la direcci´n d. En consecuencia, la siguiente instrucci´n que
                     o                                              o
ejecutar´ el procesador ser´ la contenida en la direcci´n d, produci´ndose
        a                   a                          o            e
una ruptura de la secuencia de ejecuci´n. Si no se cumple la condici´n
                                        o                               o
prosigue la ejecuci´n secuencial.
                   o
     Por ultimo, la instrucci´n END se˜ala el final del programa.
         ´                   o        n

3.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       a
pasos elementales y transferencias de datos de unos ´rganos a otros de
                                                    o
la 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                     o
m´quina.
  a
    La ejecuci´n de una instrucci´n comienza cuando se actualiza el re-
              o                  o
gistro contador de programa. La UC env´ esta direcci´n a los circuitos
                                        ıa           o
de 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                                     85


lectura a trav´s del bus de control. La direcci´n queda almacenada en
               e                                o
el registro de direcci´n de memoria y al recibir la se˜al de lectura, se
                       o                                n
lee la instrucci´n. La instrucci´n se env´ a trav´s del bus de datos y se
                o               o         ıa      e
recibe en el registro de instrucci´n de la UC. De esta forma, la UC tiene
                                  o
disponible la instrucci´n para ser decodificada y ejecutada.
                         o

   Supongamos que la instrucci´n para ejecutar sea:
                              o

                               SUM 1000(10

equivalente en binario a:

                            0100   001111101000

La 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                   n
enviar la direcci´n, a trav´s del bus de direcciones, al registro de di-
                 o          e
recci´n de la MP, efectuar la operaci´n de lectura y, finalmente, enviar
     o                               o
el contenido de la direcci´n 1000 a un registro operativo de la UAL, a
                          o
trav´s del bus de datos.
    e

    A continuaci´n se env´ la se˜al de control correspondiente a la suma
                o        ıa     n
a la UAL, quien suma al contenido del acumulador el valor del registro
operativo, 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
                                                                 u
n a una cierta potencia a ∈ IN. El programa devolver´ el valor 1 si a es
                                                    a
cero 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 al
resultado. Usaremos una posici´n adicional de memoria para almacenar
                              o
la 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 programa
La entrada del proceso es la direcci´n d6.
                                    o
    Para traducirlo a lenguaje m´quina tenemos que fijar una direcci´n
                                  a                                   o
inicial, por ejemplo la 100, y convertir cada instrucci´n en sus equiva-
                                                       o
lentes, 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-
                                                            o
alizando la comparaci´n a > 0. Veamos un ejemplo de ejecuci´n del
                     o                                          o
programa 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 programa
Veamos 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.
                                                 o


3.4      Observaciones complementarias
    El conjunto de instrucciones de m´quina presentado como ejemplo
                                       a
est´ muy simplificado. Los lenguajes de m´quina reales pueden tener
   a                                        a
hasta cientos de instrucciones, la mayor´ de ellas con distintas modali-
                                         ıa
dades de direccionamiento.
    Los procesadores disponen tambi´n de numerosos registros operati-
                                        e
vos auxiliares, que se utilizan en la ejecuci´n de las instrucciones y en la
                                             o
formaci´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                              a
conviene 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
         e
operaciones de E/S y de las situaciones de error o desbordamiento.
3.4. Observaciones complementarias                                      89


3.4.1    Tipos de direccionamiento
    Cada procesador dispone de unas reglas precisas y determinadas para
la definici´n de las direcciones o registros donde se encuentran los datos.
          o
Estas reglas constituyen los modos de direccionamiento del procesador
y pueden llegar a ser bastante complejas. Un procesador puede tener
decenas de modos de direccionamiento diferentes, en los que participan
registros especializados.
    Se llama direcci´n absoluta al valor num´rico que cada posici´n de
                    o                         e                     o
memoria tiene asignado y por el cual se accede a ella. En general, la
direcci´n contenida en las instrucciones de lenguaje m´quina no es la di-
       o                                              a
recci´n absoluta, sino que ´sta se forma desplazando una cierta direcci´n
     o                     e                                           o
llamada 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                       o
zadas las necesarias operaciones sobre la direcci´n contenida en la ins-
                                                  o
trucci´n, se toman los datos.
      o
    Un registro puede contener un dato para operar con ´l, pero tambi´n
                                                       e             e
puede contener una direcci´n donde se encuentre el dato. (En los ejem-
                           o
plos 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    Subrutinas
Pilas

   Las pilas son estructuras secuenciales de datos cuyo acceso se realiza
por un extremo. Es semejante a la acci´n de apilar una serie de libros
                                        o
sobre una mesa: se puede poner un libro sobre la pila o quitar el del
extremo superior o cima, pero no insertar ni sacar libros intermedios;
para acceder a uno de los libros de la parte inferior hay que retirar
previamente los anteriores. Se dice que estas estructuras son de tipo
LIFO (Last In First Out: ultimo en entrar primero en salir).
                          ´

    La mayor´ de los procesadores disponen de una pila para almacenar
              ıa
ordenadamente ciertos valores y operaciones. Sobre una pila se definen
dos operaciones b´sicas: meter y sacar datos. Para su funcionamiento
                   a
se utiliza un puntero que se˜ala a la cima de la pila. Para meter un
                             n
dato en la pila se decrementa el valor del puntero para que apunte a una
posici´n sobre la actual, y a continuaci´n, se transfiere el dato a esta
      o                                   o
posici´n. Para sacar el dato, se env´ su valor y despu´s se incrementa
      o                              ıa                  e
el valor del puntero. De esta forma la posici´n anteriormente ocupada
                                               o
queda liberada.

    Estas operaciones suelen expresarse por sus mnemot´cnicos en ingl´s:
                                                         e              e
PUSH d y POP d. La primera introduce el valor contenido en la direcci´n d
                                                                      o
en la pila, y la segunda saca el valor del extremo de la pila y lo deposita
en 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    a


Llamadas a subrutinas
    Un subprograma es un conjunto de instrucciones que realizan una
acci´n concreta que se puede repetir varias veces a lo largo del pro-
    o
grama, como hemos visto en el ejemplo del apartado 3.3.4. En vez de
repetir 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 lenguajes
de m´quina disponen de instrucciones para realizar las llamadas a sub-
      a
programa, 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                 o
del subprograma:
                                CALL d
Esta instrucci´n llama al subprograma situado en la direcci´n d. Para
                o                                             o
ello, la carga en el registro contador de programa, en forma semejante a
las instrucciones de salto COND o GOTO.
   Sin embargo, una vez que el subprograma haya sido ejecutado, hay
que volver al programa principal, por lo que se hace necesario conocer
94           Cap´
                ıtulo 3. Estructura f´
                                     ısica de un computador


y almacenar la direcci´n de retorno, normalmente la direcci´n siguiente
                      o                                    o
a 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, la
instrucci´n de llamada debe almacenar la direcci´n de retorno al pro-
         o                                          o
grama principal, que es la direcci´n siguiente a la de llamada, en la pila.
                                  o
Cuando se llega a la ultima instrucci´n del subprograma el procesador
                      ´                o
saca la direcci´n de retorno de la pila y la carga en el registro contador
               o
de programa, con lo cual prosigue la ejecuci´n del programa principal.
                                              o

    Los subprogramas deben terminar en una instrucci´n que indique al
                                                     o
procesador que debe volver al programa principal. Suele expresarse con
el mnemot´cnico:
          e
                                 RET

que indica el RETorno desde un subprograma.


3.4.3    Interrupciones
   El trabajo del procesador puede verse interrumpido por distintos
motivos; operaciones de E/S, errores, paradas para depuraci´n, etc.
                                                           o

    Una interrupci´n del procesador es similar a lo que sucede cuando
                    o
estamos leyendo un libro y suena el tel´fono: el dispositivo externo,
                                           e
el tel´fono, avisa de su disposici´n a realizar una operaci´n de E/S; el
      e                           o                        o
procesador, el lector, almacena su estado de proceso (se fija en la p´gina
                                                                     a
y el lugar de la p´gina donde se encuentra leyendo), y pasa a ejecutar un
                  a
subprograma de servicio de la llamada telef´nica (responde al tel´fono,
                                              o                     e
toma notas, etc., y por ultimo cuelga). A continuaci´n el procesador
                          ´                             o
reanuda su estado anterior a la llamada y prosigue con su proceso (el
lector 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-
                                                  a
ducirse por los controladores del sistema y de dispositivos, a trav´s del
                                                                   e
bus de control (interrupciones de hardware).
3.5. Otras arquitecturas                                               95


    Se puede establecer una jerarqu´ de interrupciones dependiente de
                                    ıa
su 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
                              o
de servicio, que contiene las instrucciones necesarias para atender la
interrupci´n. Antes de atender la interrupci´n, el procesador almacena el
           o                                 o
contenido de los registros, generalmente en una estructura de tipo pila. A
continuaci´n se ejecuta el subprograma, de forma similar a las llamadas
           o
de subprogramas (subrutinas). Una vez atendida la interrupci´n, el  o
procesador recupera los contenidos de sus registros de la pila y prosigue
la ejecuci´n del programa principal.
          o
    Para el tratamiento de las interrupciones los lenguajes de m´quina
                                                                a
suelen disponer de instrucciones espec´
                                      ıficas, que en forma nemot´cnica
                                                                e
suelen expresarse como:
                                INT t
                                IRET
La primera genera una INTerrupci´n de tipo t, y entre otras acciones
                                  o
llama al subprograma de servicio t. La segunda marca el fin de dicho
subprograma y provoca el retorno de la interrupci´n.
                                                 o


3.5     Otras arquitecturas
   En los ultimos a˜os se ha introducido una gran variedad de nuevas ar-
          ´         n
quitecturas de computadores, especialmente orientados al procesamiento
en paralelo, esto es, con capacidad para realizar varias operaciones si-
mult´neamente. Este modo de funcionamiento contrasta con el procesa-
     a
miento secuencial, en que las instrucciones se ejecutan una tras otra.
    Actualmente, la mayor´ de los computadores incorpora algunas ca-
                            ıa
racter´
      ısticas paralelas a bajo nivel sin que por eso puedan ser llamados
                                            ´
con propiedad computadores paralelos. Estos disponen en general de
varios procesadores o Unidades de Procesamiento (UP).
   En esta secci´n se presentan, muy brevemente, algunos esquemas
                 o
b´sicos que siguen las distintas arquitecturas paralelas existentes en la
 a
96             Cap´
                  ıtulo 3. Estructura f´
                                       ısica de un computador


actualidad. 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
                                           o
muy general los computadores paralelos pueden clasificarse en alguna de
las 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.
                                    o


3.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 4

Sistemas 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              a
como elemento decorativo. Un sistema operativo constituye, probable-
mente, la parte m´s importante del conjunto de software que acompa˜a a
                 a                                                  n
cualquier computador moderno. El sistema operativo controla todos los
recursos del computador y ofrece la base sobre la cual pueden escribirse
los programas de aplicaci´n.
                         o

    El objetivo de este cap´
                           ıtulo consiste en exponer los elementos b´sicos
                                                                    a
de 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
                                                         a
un sistema operativo y las funciones que debe realizar. Posteriormente
se establece una clasificaci´n, no exhaustiva, de los sistemas operativos
                           o
seg´n sus caracter´
   u              ısticas m´s sobresalientes.
                            a
102                              Cap´
                                    ıtulo 4. Sistemas Operativos


4.1     Cometido de un sistema operativo
4.1.1    Funciones de los sistemas operativos
    En el cap´ıtulo anterior se ha mostrado someramente la estructura
interna de un computador, con su(s) procesador(es), sus memorias prin-
cipal y secundaria, y los perif´ricos. Si todo programador de aplicaciones
                               e
tuviera que controlar “a mano” todos los componentes de la estructura
interna del computador cuando hace sus programas, muy probablemente,
no existir´ tantos programas en el mercado. Por poner un ejemplo, em-
          ıan
plear la instrucci´n escribir archivo es mucho m´s simple que tener
                  o                                   a
que preocuparse por mover las cabezas lectoras del disco hasta una po-
sici´n adecuada, esperar que se estabilicen, dirigir la informaci´n desde
    o                                                            o
la 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 fundamental
para conseguirlo consiste en ocultar los escabrosos detalles del hardware
puro con software (el sistema operativo) especialmente dise˜ ado para
                                                               n
permitir 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 simple
entre el programador o usuario y otros aspectos del hardware, como
son el manejo de interrupciones, relojes, gesti´n de memoria y otras
                                               o
caracter´
        ısticas de bajo nivel.
    Seg´n este enfoque, el sistema operativo tiene la misi´n de presentar
        u                                                 o
al usuario una m´quina virtual que sea m´s f´cil de programar que el
                   a                       a a
hardware puro y, por lo tanto, aumente la efectividad del computador
al evitar la necesidad de trabajar a bajo nivel. Por consiguiente, puede
considerarse un sistema operativo como un interfaz adecuado entre el
usuario y el hardware.
    Un sistema operativo tambi´n tiene la funci´n de controlar y admi-
                                e                o
nistrar de forma ordenada el uso de todos los recursos del computador.
Esta funci´n se hace especialmente necesaria cuando un computador est´
          o                                                          a
siendo compartido por varios usuarios simult´neamente; en este caso,
                                               a
la necesidad de distribuir convenientemente el tiempo de trabajo de la
4.1. Cometido de un sistema operativo                                   103


UCP, los espacios de memoria y los perif´ricos es evidente. Desde este
                                           e
punto de vista, la tarea del sistema operativo es llevar el control de qui´n
                                                                          e
est´ utilizando cada recurso y dirimir los posibles conflictos entre varios
   a
procesos 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        a
las funciones de un sistema operativo, ya que este concepto ha evolu-
cionado con su desarrollo. En general, un sistema operativo debe poder
desempe˜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.
                         o

4.1.2    Formas de trabajo de los sistemas operativos
    Los sistemas operativos han evolucionado para cubrir las distintas
necesidades de proceso sobre m´quinas de tama˜o y potencia muy di-
                                 a              n
versos. 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 operativos
de prop´sito general y los dedicados.
       o
    Los primeros, que son los m´s utilizados, se dise˜an con una intenci´n
                               a                     n                  o
de polivalencia, de forma que sobre ellos puedan ejecutarse programas
diversos: editores, compiladores y aplicaciones de todo tipo. Dentro de
los sistemas operativos de prop´sito general puede distinguirse entre mo-
                               o
nousuario y multiusuario, dependiendo de si pueden atender o no a m´s   a
de un proceso al mismo tiempo. Claramente, los sistemas multiusuario
son m´s complejos pues, adem´s de desempe˜ ar todas las funciones pro-
       a                       a              n
pias de uno monousuario, deben atender a otros aspectos, tales como el
104                              Cap´
                                    ıtulo 4. Sistemas Operativos


reparto del tiempo de trabajo del (los) procesador(es) entre los distintos
usuarios, la separaci´n entre los datos de los mismos, etc.
                     o
    En los sistemas operativos de prop´sito general, hay dos formas de
                                         o
trabajo b´sicas: el modo interactivo y el proceso por lotes. En el primero,
          a
el 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
                                      a
o
´rdenes y las respuestas tienen lugar de un modo casi inmediato.
    En un proceso por lotes, los diferentes trabajos junto con sus datos se
suceden entre s´ de forma que su ejecuci´n se realice autom´ticamente,
               ı,                          o                   a
sin ning´n tipo de comunicaci´n entre el usuario y el sistema, hasta la
        u                       o
finalizaci´n del trabajo.
         o
    Dentro de los sistemas operativos dedicados, se suele distinguir entre
los 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-
              o
cuencia. En la mayor´ de estos procesos, la variable tiempo tiene una
                       ıa
importancia relevante; por ejemplo, en un horno industrial, un retraso
en la reducci´n de la temperatura puede tener funestas consecuencias.
              o
En estos procesos, se dice que el sistema debe operar en tiempo real.
    Los sistemas de consulta deben permitir al usuario el acceso a una
o varias bases de datos de una forma c´moda, sin tener que conocer los
                                        o
detalles internos de su organizaci´n y funcionamiento. de su estructura.
                                  o
Se puede citar como ejemplo un sistema de consultas de historias cl´
                                                                   ınicas
en un hospital.
    Por ultimo, los sistemas transaccionales permiten la realizaci´n de
         ´                                                        o
operaciones sobre el contenido de bases de datos. Se han extendido
enormemente 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 de
billetes en agencias de viajes, etc.
    Estos sistemas deben garantizar la opacidad de la informaci´n confi-
                                                                o
dencial, actualizar r´pidamente la base de datos y evitar ciertas opera-
                     a
ciones simult´neas sobre los mismos datos (por ejemplo, dos personas
              a
que reservan el mismo asiento).
´
4.2. Conceptos basicos de los sistemas operativos                      105


4.2     Conceptos b´sicos de los sistemas
                   a
        operativos
4.2.1    Procesos
    Es importante el concepto de proceso para entender c´mo funcio-
                                                           o
nan los sistemas operativos. Un proceso consiste, esencialmente, en una
rutina de acciones del sistema que puede ser ejecutada independiente-
mente de otro proceso e, incluso, en paralelo. Un programa de usuario
en ejecuci´n puede considerarse un proceso, aunque un proceso puede
           o
involucrar la ejecuci´n de m´s de un programa y, rec´
                     o        a                        ıprocamente, un
programa o rutina de instrucciones puede estar involucrado en m´s de
                                                                  a
un 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´
                                                                   ımeras
que desaparecen una vez completada su misi´n. Podr´ arg¨irse que los
                                              o        ıa    u
procesos son consumidores de recursos en lugar de ser recursos por s´   ı
mismos; sin embargo, una vez que han entrado en el estado transitorio
de ser procesos, pueden ser “manejados” por otros procesos.
    La gesti´n de procesos es una tarea fundamental de los sistemas
            o
operativos; concretamente, la mayor´ de los sistemas operativos deben
                                    ıa
soportar la ejecuci´n concurrente de procesos y resolver los problemas
                   o
que ´sta plantea, ofreciendo medios para la sincronizaci´n de los pro-
     e                                                   o
cesos, controlando su exclusi´n mutua respecto de ciertos recursos, y
                             o
evitando, en la medida de lo posible, las situaciones de bloqueo. Estos
conceptos se explican a continuaci´n.
                                  o
    Dos o m´s procesos se dicen concurrentes cuando se est´n ejecutando
            a                                                a
simult´neamente. Cuando existen m´s procesadores que procesos, cada
       a                              a
proceso se ejecutar´ sin conflicto en un procesador (paralelismo); si, por
                    a
el contrario, existen m´s procesos que procesadores puede obtenerse una
                       a
“simultaneidad aparente” (concurrencia) haciendo que los procesadores
alternen 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 Operativos


vivir sin interferencias pero si, por el contrario, los procesos necesitan los
mismos recursos puede surgir conflicto. Sup´ngase que ambos recursos
                                                 o
pretenden acceder a una impresora: es absolutamente inviable conmu-
tar la dedicaci´n de la impresora entre ambos procesos ya que, en ese
                 o
caso, el resultado ser´ ca´tico. Este es un caso t´
                       ıa o                             ıpico de necesidad de
exclusi´n mutua de dos procesos respecto a un recurso.
        o
    Dos procesos concurrentes pueden necesitar cooperar al realizar sus
tareas; por ejemplo, un proceso que genera l´ıneas de texto que env´ ıa
a un buffer y otro que las consume, tom´ndolas del buffer de datos y
                                        a
envi´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
         ´                                                    a
en ejecuci´n concurrente se bloqueen mutuamente, en el sentido de que
           o
cada uno de ellos necesita un recurso que el otro posee. Llegados a este
punto la ejecuci´n se detiene, ya que cada proceso espera que el otro
                 o
libere la informaci´n (o el recurso) que necesita. Esta situaci´n se llama
                   o                                           o
bloqueo (en ingl´s deadlock ).
                e

4.2.2    Archivos
     La informaci´n es almacenada por el ordenador en dispositivos, como
                  o
por ejemplo los discos. Para que el usuario pueda ignorar la estructura
f´
 ısica del disco, el sistema operativo debe presentar la informaci´n al-
                                                                   o
macenada de una forma organizada, que permita acceder a ella de una
manera l´gica y sencilla.
          o
    En este contexto, se entender´ por archivo un conjunto de infor-
                                    a
maci´n relacionada (definida por el usuario o no). En ´l pueden estar
     o                                                   e
contenidos datos o programas. Un sistema operativo debe gestionar los
archivos de una forma eficiente; para ello son necesarias operaciones ta-
les como la creaci´n, modificaci´n y borrado de archivos. El sistema
                    o             o
operativo debe proporcionar estas operaciones, permitiendo al usuario
referirse a los archivos mediante nombres simb´licos.
                                               o
   Al manipular los archivos, el computador puede acceder a ellos de
dos modos, dependiendo del medio de almacenamiento en que reside el
´
4.2. Conceptos basicos de los sistemas operativos                                 107


archivo (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                   o
y manipulaci´n. Para facilitarla, el sistema operativo presenta al usuario
              o
la posibilidad de agruparlos en compartimentos, llamados directorios. El
sistema operativo deber´ manejar la organizaci´n de directorios, ocul-
                          a                       o
tando al usuario los detalles particulares de la localizaci´n f´
                                                           o ısica de los
archivos y directorios, facilit´ndole en cambio operaciones para gestionar
                               a
c´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
                                                           a
y/o m´s (sub)directorios. La figura 4.1 muestra un ejemplo de sistema
      a
de 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-
                         u
pio nada nos impide que coloquemos una carpeta dentro de otra (salvo
quiz´ la limitaci´n de espacio).1
    a            o
    Una operaci´n fundamental en la gesti´n de un sistema de archivos
               o                         o
es 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                                a
Apple Macintosh y Windows.
108                                      Cap´
                                            ıtulo 4. Sistemas Operativos

                                Ra´
                                  ız
                              ˆˆˆ
                                 ˆ             ˆˆˆ
                                                    ˆˆˆ
           
                                                       ˆˆ
        alumnos               profesores                     juegos
                                                          $$ˆˆˆˆ
        33€€      €€                7d              $$$ $ e      ˆˆ
  33                            7      d                     e      ˆ
                                        d        trivial      e   adictivos
Pedro              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       a
archivo tras archivo, pero si el sistema contiene muchos archivos esta
t´ctica llevar´ mucho tiempo y, como esto es lo habitual, se han ideado
 a            a
estrategias para hacer el acceso m´s eficiente.
                                   a
    La idea de directorio de trabajo permite agilizar la b´squeda de archi-
                                                           u
vos en el sistema; para ello es fundamental la noci´n de camino (en ingl´s
                                                     o                      e
path) desde la ra´ del ´rbol hasta una rama determinada; por ejemplo,
                  ız     a
en el ´rbol de directorios de la figura 4.1 los juegos adictivos tienen el path
      a
juegosadictivos. Si el directorio de trabajo fuera juegos enton-
ces adictivostetris (camino relativo al directorio de trabajo) tiene el
mismo significado que juegosadictivostetris (camino absoluto).
   Para la optimizaci´n de la b´squeda de archivos se suele buscar s´lo
                       o        u                                   o
en el directorio de trabajo y en algunos otros paths especificados por el
usuario.
    Otra prestaci´n ofrecida por la mayor´ de los grandes sistemas ope-
                  o                       ıa
rativos es la protecci´n de la informaci´n. Debido a la facilidad con que
                      o                 o
puede borrarse la informaci´n almacenada, los sistemas operativos ofre-
                             o
cen dos mecanismos principalmente para asegurar archivos y directorios
contra 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
                                 o
multiusuario, consiste en permitir el acceso y garantizar que el trabajo
de cada usuario es privado, ocult´ndolo a los dem´s. Este efecto se
                                    a                  a
consigue por lo general mediante un sistema de marcas, que identifica
al propietario de los distintos archivos y directorios, y de contrase˜as,
                                                                     n
que permite reconocer el usuario concreto que se encuentra ante cada
terminal.

4.2.3    N´ cleo
          u
    Se emplea frecuentemente el t´rmino n´cleo o kernel para referirse a
                                  e         u
aquella parte del sistema operativo m´s cercana a la m´quina y que, por
                                       a                a
lo tanto, siempre est´ almacenada en la memoria principal (RAM). El
                      a
n´cleo es un c´digo muy frecuentemente usado por otros programas de
  u            o
un nivel superior (aplicaciones o utilidades). Por esta raz´n se presenta,
                                                           o
aparentemente, como una ampliaci´n del conjunto de instrucciones de
                                     o
la 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 Operativos


4.2.4    Multiprogramaci´n
                        o
    En un sistema de multiprogramaci´n el computador puede ejecutar
                                    o
varios programas simult´neamente.
                       a

    La idea b´sica es aprovechar la mayor rapidez del procesador respecto
              a
de los perif´ricos, discos o impresoras, en atender una petici´n, o bien
            e                                                  o
aprovechar el tiempo que tarda un usuario en introducir sus ordenes a
                                                                ´
trav´s del teclado. Con todo esto, se aprovecha mejor la potencia del
    e
procesador que, a fin de cuentas, es el elemento m´s caro del computador.
                                                 a

    Para poder trabajar con multiprogramaci´n, el sistema operativo
                                               o
debe disponer de un mecanismo que permita que la memoria sea asignada
correctamente, y compartida entre los distintos trabajos que se ejecutan.

    A diferencia de la memoria, en la que pueden caber varios programas
a la vez, la UCP en un instante concreto est´ dedicada solamente a un
                                              a
programa de usuario o bien a realizar una de las m´ltiples tareas precisas
                                                  u
para la gesti´n del sistema. Hace falta un mecanismo que planifique esta
             o
actividad y su dise˜o es fundamental para el sistema operativo; este
                     n
mecanismo 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
                                 o
trabajos que est´n esperando turno se ponen “en cola”, de la cual se debe
                a
extraer el candidato m´s id´neo para utilizar la UCP en cada momento.
                       a   o
El proceso de selecci´n entre los miembros de esta cola es realizado por
                     o
el planificador, pudiendo existir m´s de uno, por ejemplo, para controlar
                                   a
los sistemas de tiempo compartido a corto, medio y largo plazo.

    Para elegir el mecanismo adecuado hay que tener en cuenta cu´l es
                                                                    a
el uso principal del computador. Si s´lo se est´n ejecutando procesos
                                        o        a
por lotes (v´ase p´g. 104 o la secci´n A.2.5) durante la noche es posible
            e      a                o
realizarlos uno tras otro, pero si existen usuarios realizando consultas
puede ponerse como objetivo que ninguno de ellos est´ m´s de un de-
                                                        e a
terminado n´mero de segundos sin atenci´n. Las disciplinas de gesti´n
             u                             o                          o
de colas van desde la m´s simple, consistente en una cola en la que el
                         a
primero que llega es el primero que es atendido, hasta mecanismos muy
complejos en m´quinas con varios procesadores, donde las decisiones se
                a
´
4.2. Conceptos basicos de los sistemas operativos                    111


toman teniendo en cuenta otros par´metros adem´s del tiempo, como
                                    a             a
por ejemplo la prioridad (importancia) de cada proceso.
    En los sistemas medios tiene inter´s conocer el mecanismo denomi-
                                        e
nado round-robin, que ha sido especialmente dise˜ado para sistemas de
                                                  n
tiempo compartido en los que hay varios usuarios en distintas terminales
compartiendo un computador. Cada uno de ellos debe tener la impresi´n o
de que el sistema trabaja s´lo para ´l; para ello, se define una unidad
                            o         e
de tiempo (llamado quantum) que oscila entre 10 y 100 milisegundos, en
funci´n del sistema, y la cola se trata como si fuera una circunferencia
     o
de forma que el algoritmo va concediendo una parte de tiempo fija a
cada usuario, transcurrido el tiempo asignado se le retira el control de
la 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 de
programas que regulan la comunicaci´n de la m´quina con el usuario
                                     o           a
y se˜alan las reglas que rigen esta comunicaci´n. Esto es lo que se
    n                                          o
denomina 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
       u
embargo, cada vez m´s se tiende a la utilizaci´n de interfaces gr´ficos
                       a                         o                 a
por lograrse con ellos una mayor productividad a costa de una menor
fatiga del usuario, ya que ´ste no necesita conocer los comandos precisos
                           e
para activar cada una de las opciones disponibles.
  El sistema pionero del interfaz gr´fico ha sido el de los computadores
                                    a
Apple-Macintosh. Actualmente existe un potente interfaz gr´fico para
                                                              a
112                              Cap´
                                    ıtulo 4. Sistemas Operativos


el sistema dos como es windows. El sistema unix tambi´n tiene varios
                                                          e
sistemas de ventanas como open-look y open-windows. Reciente-
mente, ha aparecido una versi´n de windows independiente de dos: el
                               o
sistema 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 sea
ejecutado debe estar en la memoria principal, habr´ que gestionar la
                                                  a
ocupaci´n de memoria por parte de los programas que el procesador
        o
est´ atendiendo.
   a
    Para optimizar la memoria del computador existen dos soluciones
extremas: tener una memoria real muy grande (lo cual resulta caro) o
tener los datos en los discos y hacerlos entrar y salir todas las veces que
haga falta (lo que resulta ineficiente). Entre ambas soluciones existen
varias 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                                                   o
programa s´lo con una parte de ´ste en la memoria, de manera que se
           o                    e
pueda solicitar m´s memoria en cuanto sea preciso.
                 a
   La mayor ventaja que tiene este sistema es que permite trabajar con
programas mayores que el total de la memoria f´ ısica disponible. Con los
computadores modernos no es frecuente que tengamos programas m´s        a
grandes que el total de la memoria disponible, por lo cual la introducci´n
                                                                        o
114                             Cap´
                                   ıtulo 4. Sistemas Operativos


de memoria virtual puede parecer un lujo excesivo. Sin embargo, puede
ocurrir que muchas partes de un programa no suelen ejecutarse salvo en
muy raras ocasiones, como es el c´digo para el manejo de las condiciones
                                 o
de error, tablas internas o rutinas que tratan s´lo casos especiales que
                                                o
afectan a muy pocos de los datos. Con la t´cnica de memoria virtual
                                             e
bastar´ mantener en la memoria el n´cleo del programa, consigui´ndose,
      ıa                             u                            e
en cualquier caso, un mejor aprovechamiento de la memoria f´   ısica, que
es cara.
    La idea de memoria virtual puede ser implantada en un sistema ope-
rativo concreto mediante varias soluciones, siendo las m´s corrientes las
                                                        a
de paginado y las de segmentaci´n.
                                o

Memoria virtual paginada.- Las t´cnicas de paginaci´n consisten
                                        e                  o
en la separaci´n de los conceptos de espacio de direcciones y posiciones
              o
de memoria, o lo que es lo mismo, entre memoria l´gica y memoria
                                                       o
f´
 ısica. Para comprender mejor en qu´ consiste la t´cnica de paginado
                                      e             e
consideraremos el siguiente ejemplo:
    Sup´ngase un computador con un campo de direcciones de 16 bits
        o
y una memoria principal de 8Kb, en palabras de un byte. En principio
se pueden direccionar (espacio de direccionamiento) 216 = 65536 = 64K
palabras de memoria (de un byte) pero s´lo existe espacio f´
                                            o                 ısico para
8·1024 = 8192 palabras, para direcciones de memoria desde 0 hasta 8191.
Como la memoria l´gica es mucho mayor que la realmente disponible
                     o
habr´ que dise˜ar un m´todo que soporte llamadas, por ejemplo, a la
     a           n       e
direcci´n 8195 sin que se genere un desagradable mensaje de error. Una
       o
posible soluci´n para evitar los errores cuando se producen llamadas a
               o
memoria con direcciones superiores a las realmente disponibles, como
la 8195, ser´ usar aritm´tica modular y considerarla simplemente como
            ıa           e
la direcci´n 3 = 8195 − 8192 (del mismo modo que sabemos que las 15
          o
horas son las 3 de la tarde: 3 = 15 − 12). Esta alternativa implicar´  a
la inclusi´n de una funci´n de conversi´n entre direcciones l´gicas y
          o                o              o                     o
direcciones f´
             ısicas.
   En un sistema con memoria virtual paginada se ejecutar´ los si-
                                                             ıan
guientes pasos cuando se recibe la llamada a la direcci´n 8195, que no
                                                       o
´
4.2. Conceptos basicos de los sistemas operativos                    115


se 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 virtual
se refleja de forma clara la divisi´n entre programas y datos. La idea
                                   o
consiste en dividir el espacio de direcciones en segmentos, cada uno de
los cuales corresponder´ a una rutina, un programa o un conjunto de
                         a
datos; en este caso se estar´ explotando el concepto de modularidad de
                            a
los programas construidos estructuradamente.
    La segmentaci´n es una t´cnica que organiza el espacio l´gico de me-
                   o           e                            o
moria en segmentos (bloques independientes) de tama˜o variable, que
                                                        n
se colocan en la memoria f´  ısica mediante algoritmos de localizaci´n de
                                                                    o
espacio libre. Puesto que cada segmento constituye un espacio de direc-
ciones distinto, diferentes segmentos pueden crecer o encoger de manera
independiente, sin que se afecten entre s´ por supuesto, aunque los seg-
                                          ı;
mentos pueden crecer, un segmento se puede llenar y, en este caso, se
producir´ un mensaje de error.
         a
    La especificaci´n de una direcci´n en una memoria segmentada (tam-
                   o                o
bi´n llamada bidimensional) debe proporcionar dos componentes: un
  e
n´mero de segmento y la direcci´n dentro del segmento. Cada segmento
  u                              o
forma una entidad l´gica que el programador puede tener en cuenta para
                     o
asignarle distintos tipos de protecci´n; por ejemplo, si un segmento con-
                                     o
tiene un procedimiento, entonces se especificar´ que es un segmento de
                                                 a
116                              Cap´
                                    ıtulo 4. Sistemas Operativos


ejecuci´n, prohibi´ndose la escritura; si contiene una pila se especificar´
       o          e                                                      a
como de lectura y escritura, pero no de ejecuci´n. Esta pr´ctica es de
                                                  o           a
gran utilidad en la detecci´n de errores de programaci´n.
                           o                            o


4.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                     n
y potencia del hardware que manejan, y divide los sistemas operativos
entre los grandes sistemas (mainframes), los de computadores de gama
media (minis) y en los microcomputadores o micros. Cuanto m´s po-   a
tente, y por lo tanto m´s cara, sea la m´quina a la que va dirigido
                          a                  a
el sistema, mayor es el inter´s existente en optimizar los recursos, es-
                              e
forz´ndose el dise˜ador en conseguir una gesti´n de tareas din´mica y
    a              n                             o                a
eficiente que permita gestionar simult´neamente m´ltiples programas sin
                                      a             u
intervenci´n del operador, con independencia de los dispositivos, etc.
           o
    Otro importante criterio de clasificaci´n es la divisi´n entre sistemas
                                          o              o
propietarios y sistemas abiertos, es decir, si el fabricante del hardware
dispone de control exclusivo sobre el mismo o bien se trata de un sistema
abierto a toda la comunidad industrial.
    En computadores peque˜os y medios es ya una norma la utilizaci´n
                             n                                          o
de 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-Macintosh
o algunos derivados de unix como aix o ultrix.
    La ventaja de un sistema abierto es la independencia de la m´quina
                                                                 a
sobre la que se instala, por lo que tanto los programas fuente como
las bases de datos o las transacciones, pueden ser transferidas de un
hardware suministrado por un fabricante a otro distinto, independizando
al usuario de los proveedores.
   Las ventajas de un sistema propietario es haber sido dise˜ado para un
                                                             n
hardware espec´ıfico, y por lo tanto obtiene de ´l las mejores prestaciones
                                               e
posibles. Las interfaces a las bases de datos, monitores de teleproceso
y otros productos del fabricante est´n exhaustivamente probados, por
                                     a
4.4. Ejercicios                                                             117


lo que (al menos en teor´ existir´n menos problemas para utilizar tal
                        ıa)      a
sistema.

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
                                      a
b´sicos de los sistemas operativos, sus funciones y sus principales modos de
 a
funcionamiento. 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         a
cesariamente incompleta, de dos de los sistemas operativos m´s conocidos y
                                                                a
difundidos 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 Operativos


que se distribuyen al comprar un pc lo mantendr´n al d´ sobre las sucesivas
                                                a      ıa
actualizaciones del dos, proporcion´ndole una informaci´n mucho m´s com-
                                   a                    o           a
pleta. Para profundizar m´s en este sistema, un libro muy detallado sobre el
                          a
dos es [Jam90].
    La bibliograf´ sobre unix es muy extensa, desde introducciones muy ge-
                 ıa
nerales hasta libros sobre parcelas muy especializadas. Una buena referencia
que 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
                                              o
introducir los requisitos necesarios para abordar una muy interesante secci´n
                                                                            o
de desarrollo de aplicaciones.
Cap´
   ıtulo 5

Lenguajes 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                                n
representar expresiones e instrucciones de forma inteligible para las com-
putadoras.
    Los lenguajes de programaci´n son, en gran medida, comparables
                                  o
a los lenguajes naturales: sus s´
                                ımbolos b´sicos constituyen su alfabeto,
                                         a
y con ellos se construye el vocabulario del lenguaje, cuyos elementos
se llaman tokens. Estos tokens se combinan de acuerdo con las reglas
sint´cticas del lenguaje, formando expresiones y sentencias cuyo signifi-
    a
cado viene dado por la sem´ntica del lenguaje.
                             a
    Los lenguajes de programaci´n son sin embargo considerablemente
                               o
m´s simples que los naturales en su sintaxis y, especialmente, en su
  a
sem´ntica.
    a
    En este cap´ıtulo se introducen distintos aspectos relacionados con
los lenguajes de programaci´n. En primer lugar, hacemos una presen-
                             o
taci´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      a


ensambladores 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                                o
efect´a, cada vez en mayor medida, a trav´s de procedimientos formales,
     u                                      e
evit´ndose toda ambig¨edad y facilitando el estudio de las propiedades
    a                    u
de 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                                         o
que facilitan hoy d´ las distintas fases de desarrollo de programas.
                    ıa


5.1     Lenguajes de bajo y alto nivel
5.1.1   Lenguajes orientados a la m´quina
                                   a
   Hablando estrictamente, los unicos s´
                                  ´       ımbolos que comprenden los
computadores son dos: el cero y el uno. Combin´ndolos apropiada-
                                                    a
mente, se forman las instrucciones, como se ha descrito en el cap´
                                                                 ıtulo 3.
     La interpretaci´n de estas instrucciones est´ dirigida a componentes
                    o                            a
f´
 ı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 ensamblador


las direcciones de los operandos. Por estas razones tan obvias, estos
rudimentarios lenguajes se llaman lenguajes orientados a la m´quina o,
                                                             a
m´s brevemente, lenguajes de m´quina.
  a                             a
   El programa de la figura 5.1 est´ escrito en el lenguaje m´quina
                                  a                         a
definido en el cap´
                 ıtulo 3.
    Resulta evidente que, aun siendo los lenguajes m´quina el medio de
                                                      a
expresi´n natural para las computadoras, son ciertamente aparatosos
        o
para el programador humano que deba redactarlos, leer o modificar los
programas escritos en ellos. Presentan adem´s el inconveniente de no
                                               a
ser transportables, esto es, no ser comprendidos por m´quinas diferentes.
                                                      a
Los lenguajes evolucionados han surgido para superar estas deficiencias.
    El primer paso para hacer m´s humana la programaci´n consisti´
                                   a                        o           o
en introducir el uso de identificadores nemot´cnicos para referir instruc-
                                             e
ciones y nombrar las direcciones de los operandos mediante s´ ımbolos en
lugar 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 programacion


un lenguaje simb´lico como se indica en la figura 5.2.
                o

    Aunque el paso dado es importante, los lenguajes simb´licos con-
                                                           o
sisten s´lo en una representaci´n m´s inteligible de las instrucciones
        o                       o    a
de m´quina. El siguiente paso consisti´ en incorporar en los lengua-
      a                                o
jes simb´licos macroinstrucciones, para representar secuencias de ins-
         o
trucciones de utilizaci´n frecuente. Estos lenguajes se conocen como
                       o
ensambladores.

    Enseguida se comprendi´ la necesidad de escribir programas que tra-
                           o
dujeran textos escritos en ensamblador a textos escritos en lenguaje
m´quina. Estos programas traductores se llaman tambi´n ensambla-
  a                                                       e
dores.


5.1.2    Lenguajes de alto nivel
    A diferencia de los lenguajes orientados a la m´quina, los lenguajes
                                                     a
de alto nivel se componen de “t´rminos” y “frases” relacionados con el
                                  e
problema en resoluci´n. As´ por ejemplo, una ecuaci´n de segundo grado
                     o       ı                        o
ax2 + bx + c = 0 se podr´ resolver en un lenguaje de alto nivel como se
                          ıa
indica en la figura 5.3.
    Por razones obvias, se dice que los lenguajes de alto nivel est´n orien-
                                                                   a
tados al problema. Esta ventaja es doble: por un lado, permiten al
programador concentrar su atenci´n sobre el problema, ignorando los
                                    o
detalles propios de la m´quina concreta que lo ha de resolver; por otra
                         a
parte, como el discurso de los programas de alto nivel es independiente de
la m´quina, son altamente compatibles (transportables) entre m´quinas
     a                                                               a
diferentes.

   En la figura 5.4 se clasifican los lenguajes de programaci´n, de m´s
                                                           o       a
evolucionados a m´s cercanos a la m´quina.
                 a                   a

    En los ultimos a˜os se ha desarrollado una generaci´n de lenguajes
           ´        n                                  o
de muy alto nivel, que incorporan diversos mecanismos para aumen-
tar su capacidad expresiva en alg´n aspecto. En el apartado siguiente
                                 u
introducimos 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 programacion


5.1.3    Paradigmas de programaci´n
                                 o

Programaci´n imperativa—programaci´n declarativa
          o                       o

    La forma tradicional de programar recibe el nombre de programaci´n o
imperativa, ya que un programa no es m´s que una secuencia de ´rdenes
                                          a                        o
o instrucciones que deb´ ser ejecutados por el computador. Este mo-
                        ıan
delo de computaci´n ha influido fuertemente en la naturaleza de los
                   o
lenguajes de programaci´n; aunque la evoluci´n de ´stos ha permitido
                         o                      o       e
esconder muchas caracter´  ısticas de bajo nivel, los lenguajes convencio-
nales todav´ presentan un estilo de programaci´n basado en dotar al
            ıa                                      o
computador de procedimientos para resolver problemas, dici´ndole c´mo
                                                              e      o
se resuelven. Este paradigma de programaci´n obliga al programador a
                                              o
tener siempre presentes los detalles particulares del computador que eje-
cutar´ sus programas.
      a

   Algunos de los lenguajes imperativos m´s difundidos en la actualidad
                                         a
son el COBOL, BASIC, FORTRAN, Pascal, Modula 2 y C.

    Una de las opciones para hacer m´s simple el trabajo de programar
                                      a
consiste en separar al programador del modelo computacional subya-
cente. De este modo se podr´ concentrar en el desarrollo del programa
                              a
como una especificaci´n clara y concisa de la respuesta a un problema.
                       o
Al elegir esta soluci´n se est´ optando por un estilo declarativo de pro-
                     o        a
gramaci´n, llamado as´ porque lo que se hace es “declarar” (especificar)
        o               ı
el problema que se quiere resolver en lugar de proporcionar la secuencia
de acciones que el computador debe ejecutar para hallar la respuesta.

    En lugar de indicar c´mo operar, en programaci´n declarativa se
                          o                           o
indica qu´ resolver. Por lo tanto, los lenguajes declarativos est´n m´s
          e                                                      a   a
cerca del enunciado que de la resoluci´n propiamente dicha. Por eso se
                                      o
les considera lenguajes de muy alto nivel.

    Dentro del paradigma de programaci´n declarativa se han desarro-
                                        o
llado 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-
                  o
ciones que el computador debe evaluar. La tarea primordial del pro-
gramador es la construcci´n de una funci´n que resuelva un problema
                          o                o
dado; esta funci´n puede depender de otras funciones subsidiarias y esta
                o
dependencia se expresa en una notaci´n que obedece los principios ma-
                                      o
tem´ticos elementales. El papel del computador no es otro que el de
    a
evaluar las funciones e imprimir los resultados. Esta caracter´ıstica ha
permitido que los lenguajes funcionales no dependan de ning´n modelo
                                                             u
particular de arquitectura, en contraste con la mayor´ de los lenguajes
                                                     ıa
imperativos.
    La programaci´n funcional tiene sus ra´
                   o                         ıces en la l´gica y en las ma-
                                                         o
tem´ticas. En los programas funcionales se hace uso de conceptos y
    a
notaciones familiares a toda persona que tenga conocimientos elementa-
les de matem´ticas; de hecho, la derivaci´n de programas funcionales a
              a                            o
partir de su especificaci´n se suele realizar mediante razonamiento ecua-
                        o
cional (aplicando las ecuaciones que definen las funciones implicadas en
el programa).
    Un programa funcional puede interpretarse, bien como un conjunto
de definiciones (declaraciones) de propiedades o bien como un conjunto
de reglas de computaci´n. La primera interpretaci´n la realiza el pro-
                        o                          o
gramador que est´ especificando (declarando) el problema, diciendo qu´
                 a                                                    e
se busca en lugar de c´mo se encuentra; por el contrario, el computador
                      o
126                      Cap´                               ´
                            ıtulo 5. Lenguajes de programacion


entiende el programa como un conjunto de reglas de reescritura que le
permitir´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 fue
el LISP, aunque no se considera completamente funcional por tener
tambi´n caracter´
      e          ısticas no funcionales. Otros ejemplos de lenguajes fun-
cionales desarrollados en la actualidad son el Hope, ML y Miranda. El
ejemplo de la figura 5.5 muestra, en el estilo de estos lenguajes, la so-
luci´n de la ecuaci´n de segundo grado.
    o              o


Programaci´n l´gica
          o o

   En programaci´n imperativa, un programa no es otra cosa que el
                   o
gui´n de las acciones que el computador debe seguir, y su ejecuci´n
   o                                                                   o
consiste en obedecer esas ´rdenes. En programaci´n l´gica, un programa
                           o                       o o
consiste en una serie de sentencias de la l´gica matem´tica que describen
                                           o          a
un 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                         o
relaciones 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”,
       ıan
etc. Establecen hechos ciertos sobre objetos concretos. Las reglas esta-
blecen tambi´n verdades, aunque se refieren a objetos gen´ricos,1 por lo
             e                                           e
que 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, sus
padres), y que se verifica para

                                    X = laika
                                    X = pipo
                                 ´
ofreciendo las dos soluciones. Esta es una caracter´ıstica propia de los
lenguajes l´gicos: la posibilidad de dar muchas respuestas a un objetivo
           o
planteado.
       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
                                                                        u
gen´ricos con palabras empezadas en may´scula.
   e                                     u
128                         Cap´                               ´
                               ıtulo 5. Lenguajes de programacion


con lo que se observa otra peculiaridad de los lenguajes l´gicos: los
                                                           o
argumentos de una relaci´n pueden representar datos o resultados de la
                        o
misma, 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
                                                       u
hijo 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
                      o
su hijo (de A) o bien si N es hijo de alg´n X y A es un antepasado de
                                         u
ese X.
    Este modelo de programaci´n est´ fuertemente basado en la l´gica
                               o      a                        o
de primer orden. El lenguaje de programaci´n l´gica por antonomasia
                                              o o
es 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
                      o
datos iniciales, y evoluciona efectuando acciones que alteran los valores
de esos datos. Como se ve, datos e instrucciones est´n separados de
                                                        a
forma que, en principio, cualquier instrucci´n tiene acceso a cualquier
                                             o
objeto.
   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                                   129


en ´l, como agentes interactuantes. Una descripci´n de objetos tiene dos
    e                                              o
aspectos: los valores de sus propiedades f´
                                          ısicas, y las acciones (m´todos)
                                                                     e
que 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
                     e
el 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, pueden
evolucionar en paralelo, por lo que este enfoque es un modelo id´neo
                                                                o
para la programaci´n concurrente.
                  o
    En el paradigma de la POO un programa se puede entender como
un modelo f´ısico que simula el comportamiento de una parte (real o
imaginaria) del mundo. Esta perspectiva difiere de la imperativa, en
la que se hace mayor hincapi´ en las manipulaciones de estructuras de
                            e
datos 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           ısica
que a las Matem´ticas en el sentido de que, en lugar de describir una
                  a
parte del mundo mediante ecuaciones matem´ticas, lo que se hace es
                                               a
construir literalmente un modelo f´ ısico. Uno de los primeros lengua-
jes orientados a los objetos se llam´ ACTOR, porque este paradigma
                                     o
nos presenta los objetos como actores sobre un escenario, dispuestos a
interpretar 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                          o
tada 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-
                                                  o
gramaci´n orientada a los objetos son Smalltalk y C++. Otros lengua-
          o
jes, est´n incorporando algunas de las caracter´
        a                                      ısticas de la programaci´n
                                                                       o
orientada 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 del
vocabulario de un lenguaje se agrupan entre s´ formando estructuras
                                               ı,
sint´cticas, que posteriormente son interpretadas por un traductor. En
    a
este apartado estudiamos c´mo se describen los dos aspectos, sintaxis y
                           o
sem´ntica, de un lenguaje de programaci´n.
    a                                    o
    Por ejemplo, dir´
                    ıamos que en castellano son v´lidas sint´cticamente
                                                    a         a
las “frases” compuestas por “sujeto” y “predicado”; en cuanto al signi-
ficado, se entiende que el sujeto es quien realiza la acci´n, mientras que
                                                         o
el predicado precisa la acci´n que se lleva a cabo.
                            o
    En este caso especial´ ısimo, la descripci´n de cierta estructura del
                                              o
castellano se ha llevado a cabo en el propio idioma castellano. Por el
contrario, los lenguajes de programaci´n no suelen describirse mediante
                                        o
lenguajes de programaci´n, sino mediante los metalenguajes, llamados
                          o
as´ porque son lenguajes cuyo cometido es describir otros lenguajes.
  ı

5.2.1   Sintaxis
   La sintaxis estudia la forma de combinar los tokens de un lenguaje
para formar frases correctas. Se concreta en una serie de reglas que
132                      Cap´                               ´
                            ıtulo 5. Lenguajes de programacion


expresan las estructuras sint´cticas v´lidas en el lenguaje. El recono-
                              a        a
cimiento de esas estructuras es necesario para dotarlas de significado y
ejecutar las acciones que representan.
    Ejemplos de esas reglas, dados en nuestro idioma y para ´l, son los
                                                            e
siguientes:

      • 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 de
s´
 ımbolos terminales, que son los elementos v´lidos de dicho lenguaje.
                                               a
Las aplicaci´n de las reglas (tambi´n llamadas producciones), permiten
              o                      e
sustituir 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´
                                         ı                  ´      ımbolo
inicial , no terminal, que es el embri´n del que surgen las frases por la
                                       o
aplicaci´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                 a
taci´n BNF y los diagramas sint´cticos, que introducimos seguidamente.
    o                           a

Notaci´n BNF
      o
    Una de las formas m´s extendidas para describir la sintaxis de los
                         a
lenguajes de programaci´n es la notaci´n BNF (Backus-Naur Form),
                         o               o
utilizada por sus autores para el desarrollo del lenguaje Algol 60. Dado
que la notaci´n BNF es un lenguaje que nos permite describir la sintaxis
             o
de otro lenguaje, pertenece al grupo de los metalenguajes.
    Para describir una producci´n en BNF hay que expresar la equiva-
                                o
lencia 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                   133


veces metas´
           ımbolos), que no pertenecen al lenguaje sino a BNF. Dichos
metas´ı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 los
otros s´
       ımbolos no terminales, y pantal´n, camisa, sombrero, gris y ne-
                                      o
gro son los s´
             ımbolos terminales. Las frases v´lidas generadas por esa
                                             a
gram´tica son:
     a
                           pantal´n gris
                                 o
                           pantal´n marr´n
                                 o       o
                           camisa gris
                           camisa marr´n
                                       o
                           sombrero gris
                           sombrero marr´n
                                         o

Observaciones
   • 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                                              a
ticas de un lenguaje es mediante diagramas o grafos sint´cticos. La
                                                          a
´                                ´
5.2. Descripcion de los lenguajes de programacion                      135


sintaxis del lenguaje Pascal, por ejemplo, fue inicialmente expresada de
esta 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
                                 a
el s´
    ımbolo inicial y los s´
                          ımbolos no terminales dentro de cuadrados o
rect´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                             o
frases correctas, pues es suficiente con seguir el sentido de las flechas e ir
insertando los correspondientes s´ımbolos seg´n aparecen en el diagrama.
                                              u

    Rec´
       ıprocamente, si al ir leyendo los s´ımbolos de una frase se sigue
uno de los caminos contemplados en el diagrama sint´ctico, esa frase es
                                                      a
correcta desde el punto de vista sint´ctico.
                                     a

    Tanto la notaci´n BNF como los diagramas sint´cticos son equiva-
                    o                               a
lentes, si bien, en general ´stos ultimos son de m´s f´cil comprensi´n
                            e     ´               a a               o
y se aconsejan como punto de partida en la definici´n de lenguajes de
                                                    o
programaci´n.
            o


Ejemplo Un identificador en Pascal se expresa mediante una letra
aislada o seguida por una secuencia de letras o n´meros o el car´cter de
                                                 u              a
subrayado, “ ”. 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
                                               e
sintaxis correcta de los lenguajes. La sem´ntica de un lenguaje trata
                                           a
del significado asociado con los programas correctos en ´l, esto es, de su
                                                       e
funcionamiento.
    Es claro que lo m´s natural y r´pido para explicar un lenguaje es
                       a             a
proceder informalmente, a trav´s de ejemplos o, m´s a´n, matizando
                                 e                   a u
el exacto funcionamiento de cada construcci´n sint´ctica (declaraci´n,
                                             o      a               o
sentencia, etc.) No obstante, en los ultimos a˜os, ha surgido la nece-
                                       ´       n
sidad 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-
                 ı          u
males de los lenguajes naturales y se consigue un entorno formal que
facilita 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
                                                           a
dado por el modo con que la m´quina lleva a cabo su evaluaci´n o su
                                 a                             o
ejecuci´n. As´ la interpretaci´n de un programa consiste en reproducir
       o       ı,             o
la historia de los cambios de estado que producen sus construcciones al
interpretarse.
    La sem´ntica operacional de un lenguaje se define dando la funci´n de
           a                                                       o
transici´n (⇒) que asocia a una construcci´n sint´ctica, en cada estado,
        o                                 o       a
el nuevo estado. Abreviadamente, escribimos
                                K: E ⇒ E
138                     Cap´                               ´
                           ıtulo 5. Lenguajes de programacion


para indicar que, al interpretar la construcci´n sint´ctica K en el estado
                                              o      a
E, se origina el estado E .

   Por ejemplo, si representamos el estado inicial de una m´quina me-
                                                           a
diante {. . . , A = 2, B = 5, . . .}, la ejecuci´n de
                                                o


                             begin
                               A := A + B;
                               B := A − B;
                               A := A − B
                             end

produce 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                                                   a
la ejecuci´n (sem´ntica operacional estructural ) o ignorarlos (sem´ntica
          o      a                                                 a
´                                ´
5.2. Descripcion de los lenguajes de programacion                      139


natural ):
                               
              begin                                     
             
                               
                                        ...       ...    
             
                A := A + B;    
                                       
                                               
                                                   
                                                            
                                                             
                                       A=2       A=5    
                  B := A − B;       :             ⇒
             
                               
                                       
                                         B=5   
                                                   
                                                     B=2    
                                                             
             
                 A := A − B    
                                       
                                               
                                                   
                                                            
                                                             
             
                               
                                        ...          ...
                 end

Sem´ntica denotacional
   a
    El significado de una construcci´n sint´ctica viene dado por el efecto
                                    o     a
que produce. En lugar de explicar c´mo se efect´ a cada construcci´n
                                      o            u                   o
sint´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                     o
un significado a cada significante.
    Los significantes son las posibles construcciones v´lidas del lenguaje,
                                                      a
y est´n definidos por las reglas sint´cticas, agrupados en distintas cate-
     a                               a
gor´
   ıas: declaraciones, expresiones, instrucciones, etc. Los significantes
son 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        a
a literales, variables, expresiones y funciones num´ricas; puesto que el
                                                    e
efecto de una instrucci´n de asignaci´n consiste en alterar el estado de la
                        o             o
memoria, 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                          o
y la salida, que podr´ consistir matem´ticamente en un vector y sendas
                     ıan                 a
listas. Si representamos esas tres entidades mediante M , I y O, el estado
de 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 , . . .).
                                     a
Como se ve, el efecto asociado a cada construcci´n K se precisa mediante
                                                o
una funci´n, S[[K]], llamada su funci´n sem´ntica.
         o                            o      a
   Siguiendo con el ejemplo anterior, podemos interpretar la instrucci´n
                                                                      o
compuesta 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                                                 a
interpretar las dem´s construcciones sint´cticas (tales como las decla-
                    a                       a
raciones, los identificadores, los literales o las expresiones) se necesita
igualmente formalizar sus conjuntos dominio y codominio asociados. Los
modelos matem´ticos correspondientes a estas entidades se llaman de-
                 a
notaciones, de donde procede el nombre de este enfoque de la sem´ntica.
                                                                   a

Sem´ntica axiom´tica
   a           a
    Este enfoque atiende a las “propiedades” que tiene la interpretaci´n
                                                                       o
de cada sentencia I. Estas propiedades se expresan a trav´s de aserciones
                                                         e
sobre el estado de la m´quina abstra´ antes y despu´s de esa sentencia.
                       a            ıda,              e
Se escribe
                             {C0 } I {C1 }
para expresar que, si se verifica C0 al comienzo de la instrucci´n I,
                                                                   o
cuando ´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                                                             o
s´lo que llegaremos a C1 “si ´sta termina”
 o                           e
5.3. Procesadores de lenguajes                                         141


estado previo a I se llama precondici´n, y la postcondici´n (C1 ) se refiere
                                     o                   o
al 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           a
piedades que verifica un programa, gracias al empleo de la l´gica de
                                                             o
predicados.


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                                e
gramas escritos en lenguajes de alto nivel, gracias a los traductores, pro-
gramas que convierten programas escritos en lenguajes evolucionados en
programas 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 respectivamente
al programa inicial y al final. Estos t´rminos se aplican tambi´n a los
                                       e                        e
lenguajes respectivos.
   El proceso de traducci´n se lleva a cabo en varias fases; en cada
                         o
una 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 programacion


que manejan estas etapas es la tabla de s´
                                         ımbolos, estructura de datos que
contiene los identificadores que intervienen en el programa, junto con su
descripci´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-
                                  o
dalidades 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.
                     e

Entre ambas modalidades, existen traductores mixtos, que en una pri-
mera fase desarrollan una semicompilaci´n, que incluye diversas com-
                                          o
probaciones l´xicas y sint´cticas, y produce una representaci´n del pro-
              e           a                                  o
grama fuente en un c´digo intermedio; y en una fase posterior ejecutan
                      o
la interpretaci´n de ese c´digo intermedio.
               o          o

5.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
                                                     ıan
programas 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 programas
que 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,
                   o
se acelera notablemente el proceso de creaci´n de programas, y se puede
                                             o
disponer de recursos y ayudas a la programaci´n que ser´ impensables
                                               o          ıan
en 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 programacion


5.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.
                             o


5.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                          a
significativas sobre aspectos tan diversos como el estudio de las gram´ticas y
                                                                        a
la teor´ de aut´matas, la sem´ntica, el desarrollo de traductores y entornos de
        ıa       o              a
programaci´n y los diferentes paradigmas. Adem´s de in´til, ser´ vano pre-
            o                                       a       u       ıa
tenderlo en un texto introductorio y general como es ´ste, incluso limit´ndonos
                                                       e                a
al terreno de las aplicaciones por profesionales no inform´ticos.
                                                          a
   Encontramos que el estudio de los distintos mecanismos expresivos comunes
a 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 programacion


de especificaciones. En el segundo tomo de este texto adoptamos el primer
punto de vista; en [GGSV93] se adopta el segundo.
    Para ampliar conocimientos sobre los entornos de programaci´n, tampoco
                                                                   o
parece haber nada tan recomendable como empezar por uno concreto. Las
ultimas versiones de Turbo Pascal, de Borland ([Tur92]) son ejemplares en
´
ambos aspectos, lo que explica su gran difusi´n, tanto en el ambiente educativo
                                             o
como en el de las aplicaciones.
    Naturalmente, la formaci´n lograda as´ dotar´ al estudiante de un punto
                              o             ı       a
de vista imperativo. No es ´ste un grave inconveniente (ya que ´ste ha sido y
                            e                                     e
sigue siendo todav´ el paradigma de mayor difusi´n) siempre que su educaci´n
                  ıa                               o                        o
haya 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 vista
panor´mica sobre los lenguajes de programaci´n de la pasada d´cada. Un libro
      a                                       o                e
cl´sico sobre programaci´n en lenguaje Pascal es [Gro86]. Sobre programaci´n
  a                     o                                                  o
funcional, [BW88] y [Bai90] son buenas introducciones, respectivamente en los
lenguajes Miranda y Hope. En [GGSV93] se consideran ambos enfoques, el
imperativo y el funcional. Una buena introducci´n al Prolog puede hallarse
                                                  o
en [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                                                                 e
referencias sobre el tema proliferan. [Pas86], [Tho89] y [Weg89] son art´
                                                                        ıculos
introductorios a este modelo de programaci´n.
                                            o
    Finalmente, en [Wir86a] puede verse una explicaci´n ampliada de la no-
                                                        o
taci´n BNF y diagramas de flujo, as´ como una introducci´n a los problemas
    o                                 ı                    o
que plantea el an´lisis sint´ctico y la compilaci´n de programas en lenguajes
                 a          a                    o
de alto nivel.
Cap´
   ıtulo 6

Bases 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                      .   .   .   .   .   .   .   .   .   .   .   .   .   .   165



6.1      Bases de datos y SGBD
6.1.1     Archivos y SGA
    En el cap´ ıtulo 2 se vio la posibilidad que tienen los computadores
de trabajar con datos elementales (tales como n´meros reales, enteros,
                                                   u
caracteres y valores l´gicos) o de organizarlos en estructuras m´s com-
                       o                                           a
plejas, tales como vectores o tablas. En el 4 se introdujeron los archivos
como organizaci´n b´sica de la informaci´n, almacenada en un disposi-
                  o a                       o
tivo f´
      ısico; entonces no fue preciso distinguir en ellos ning´n tipo de or-
                                                             u
ganizaci´n: pod´ considerarse como listas de elementos de caracteres.
          o       ıan
    Ahora interesa considerar un archivo como una lista de datos del
mismo tipo, cada dato de un archivo es un registro, y puede tener una
estructura 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 datos


de archivo, cada ficha es un registro, y cada dato consignado en ella
constituye un campo.
    La utilizaci´n de los archivos en inform´tica ha permitido desarrollar
                o                             a
programas 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
                                          a
empresa, el de proveedores, el de art´   ıculos de un inventario, etc. Los
programas desarrollados para gestionar archivos se llaman en general
sistemas de gesti´n de archivos (SGA). Debido a su directa aplicabilidad,
                  o
la utilizaci´n de los archivos y los SGA han evolucionado much´
            o                                                     ısimo en
los ultimos a˜os, originando las bases de datos y, correspondientemente,
    ´         n
los programas dedicados a su gesti´n.o

6.1.2    Bases de datos y SGBD
   Hablando en t´rminos muy amplios, una base de datos consiste en
                  e
una colecci´n de datos, organizados de forma integrada en archivos, junto
           o
con un conjunto de programas dedicados a su gesti´n. Estos programas
                                                    o
forman 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             n
operaciones 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     e
pr´stamo y devoluci´n, elaboraci´n de informes sobre los clientes o so-
  e                   o           o
cios morosos, sobre las calificaciones de los alumnos de un curso en una
asignatura y un largo etc´tera.
                          e
    Sin embargo, en los SGA el programador deb´ controlar artesanal-
                                                   ıa
mente m´ltiples detalles, tales como la descripci´n pormenorizada de los
         u                                       o
datos, su almacenamiento en los dispositivos, la concordancia de cada
rutina que maneje esos datos con la descripci´n de los mismos, la con-
                                               o
cordancia de los datos cuando se repitan en distintos archivos, etc. M´s
                                                                      a
a´n, el programador es responsable de que cada modificaci´n de los datos
 u                                                        o
o de los programas se vea reflejada en todos esos puntos.
    En cambio, los SGBD controlan autom´ticamente operaciones como
                                         a
el almacenamiento de los datos en los dispositivos f´
                                                    ısicos, as´ como el
                                                              ı
6.1. Bases de datos y SGBD                                            153


acceso de los programas a los mismos; adem´s, aseguran la consistencia
                                            a
de los datos repetidos y de los programas que los manejan, etc.
   Gracias a estas ventajas, con los SGBD es posible concentrar m´s   a
atenci´n en el problema (a su nivel) y mucha menos en los detalles (de
      o
bajo 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
                n
permite, 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.
      n
En 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 bases
de 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
  a
ambos 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                                               a
complejos y potentes, tienen mayores requerimientos de hardware y soft-
ware, este problema se est´ atenuando con el aumento de potencia que
                           a
los computadores personales est´n experimentando hoy en d´ y con el
                                a                             ıa
abaratamiento 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
                         n
intr´
    ı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
                       n
con 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 y
facilita muchas otras.

6.1.3       Niveles de una base de datos
    La complejidad de una base de datos puede superarse dotando al
sistema de una organizaci´n l´gica que facilite su manejo. Seg´n las
                         o o                                  u
normas del ANSI/SPARC1 ([Stu75]), esta organizaci´n debe constar de
                                                   o
  1
      American National Standard Institute.
´
6.2. El modelo entidad-relacion                                        155


los tres niveles siguientes, de m´s pr´ximo al problema a m´s cercano a
                                 a    o                    a
la 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                          n
conceptual y l´gico, existen dos grupos de modelos: los basados en ob-
               o
jetos, y los basados en registros.
    El modelo entidad-relaci´n es seguramente el m´s ampliamente acep-
                             o                        a
tado entre los primeros. En ´l se concibe la realidad como un conjunto de
                             e
objetos (llamados entidades y caracterizadas por atributos) y relaciones
entre los mismos. En los ejemplos mencionados, constituye una entidad
cada 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.
                              ıan
Considerando ahora este conjunto de entidades, podemos identificar en
ellas los atributos siguientes: t´
                                 ıtulo, autor, editorial, signatura, n´mero
                                                                      u
de 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
    o
los “pr´stamos”. Tambi´n es posible caracterizar las relaciones con atri-
       e                e
butos (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-
                                                 a
tura 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     e
tra la figura 6.1.
158                                            Cap´
                                                  ıtulo 6. Bases de datos


6.3        Modelos de bases de datos basados en
           registros
    Tradicionalmente, se han considerado diferentes enfoques a la hora
de organizar una base de datos. Cada uno adoptaba una concepci´n      o
distinta de la realidad, dependiendo del tipo de estructura de datos m´s
                                                                      a
adecuado para construir un modelo del problema planteado.
    En el modelo jer´rquico subyace una estructura de datos arbores-
                     a
cente. Ejemplos de esta estructura son la genealog´ de los toros de lidia
                                                  ıa
y la organizaci´n de directorios de un disco. Esta orientaci´n se suele
               o                                             o
usar 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-
    a
tan unos con otros mediante l´ıneas llamadas arcos. El ejemplo arquetipo
de grafo es una red de carreteras: los arcos son los diferentes tramos, y
los 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
                                            o
red la base de datos consiste en un conjunto de entidades (que son los
nodos de un grafo), caracterizadas por atributos y relacionadas mediante
relaciones (que son los arcos). En el modelo en red, a las relaciones se
les llama ligaduras, y son siempre binarias, si bien es posible construir
relaciones de cualquier orden combinando dichas relaciones binarias.
    En la actualidad, los modelos jer´rquico y en red se consideran am-
                                     a
pliamente superados por el modelo relacional, que est´ muy desarrollado
                                                     a
y extensamente difundido, funcionando en equipos grandes y peque˜os.n
Debido a su importancia, le dedicamos el siguiente apartado.

6.3.1       El modelo relacional
    El enfoque relacional considera una base de datos como un conjunto
de 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                                     159


entidades 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-
                                                              o
junto del producto cartesiano E1 × ... × En .
   Visto un conjunto de entidades como una tabla, cada fila representa
una 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-
                                     o
tidades vinculadas por ella. En realidad, no es preciso consignar cada
entidad completa, sino que basta con incluir los atributos necesarios para
determinarla un´ ıvocamente. Este conjunto de atributos se llama clave
de 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                                      ıa
dos relaciones, que almacenan respectivamente los datos personales de
los 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
                                                                 o
clave de la segunda la forman los atributos nombreAs y nombreAl.
    En realidad, no se han establecido las relaciones concretas entre las
entidades (para lo cual se requerir´ rellenar las tablas con los datos re-
                                   ıa
ales) sino s´lo el encabezamiento de cada tabla asociada al que llamamos
            o
esquema de la relaci´n.
                      o
   3
    Se supondr´ para simplificar que los nombres de los alumnos no pueden repetirse,
              a
y 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 las
unicas posibles. De hecho, el planteamiento puede mejorarse f´cilmente,
´                                                             a
sustituyendo 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          e
natura 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
                                     o
actualizaciones de la informaci´n.
                               o
    Este proceso (llamado normalizaci´n) no siempre resulta tan senci-
                                        o
llo. Sin embargo, mediante su empleo se llega a describir una base de
datos gracias a relaciones naturales y sin redundancias, con las ventajas
mencionadas.


6.4       Lenguajes asociados a los SGBD
    Visto el SGBD como un intermediario, deber´ proporcionar al admi-
                                                  a
nistrador un medio con que definir la base de datos durante su creaci´n o
                                                                      o
realizar posteriores reestructuraciones, de acuerdo con los nuevos reque-
rimientos, facilit´ndole el establecimiento de relaciones entre los datos.
                  a
Finalmente, deber´ poner al alcance del usuario toda la informaci´n para
                    a                                             o
que ´ste la manipule de un modo flexible y eficiente.
     e
    Los SGBD proporcionan lenguajes de alto nivel para que los usuarios
soliciten sus operaciones, ya que la propia base de datos oculta muchos
detalles de la representaci´n y el almacenamiento de las relaciones, y
                            o
dichos 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.
                                  o

6.4.1   Lenguajes relacionales
    Se han desarrollado dos enfoques de los lenguajes relacionales: el
a
´lgebra relacional y el c´lculo relacional, aunque la mayor´ de los len-
                         a                                 ıa
guajes de consulta comercializados actualmente incluyen caracter´ısticas
de 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 como
Informix-SQL, Ingres y Oracle. A continuaci´n presentamos brevemente
                                              o
los 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                                             163


6.5    Elementos de un SGBD
    Siguiendo la presentaci´n por capas que se hizo de los sistemas ope-
                           o
rativos, 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                o
computador.
´
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.
                              o


6.7     Comentarios bibliogr´ficos
                            a
   Las bases de datos constituyen, ya se ha dicho, un area de directa aplicaci´n
                                                      ´                       o
en muy diversos campos del mundo empresarial. Pero tampoco puede negarse
166                                          Cap´
                                                ıtulo 6. Bases de datos


la contribuci´n de los SGA, que tambi´n han evolucionado considerablemente,
             o                          e
ofreciendo un elevado nivel, muy cercano a los problemas reales, proporcionando
un ambiente sencillo, apto para su uso por no profesionales de la inform´tica.
                                                                          a
Un ejemplo de SGA es el dBase, cuyo reducido coste, sencillo manejo y escasos
requerimientos f´ısicos la hacen tremendamente asequible. Entre los numerosos
libros que se han escrito sobre ella, encontramos en [Bye90] una referencia
b´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
                           e
entornos 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
                                                            a
datos 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-
                                                                     a
dido en la actualidad (DB2, Oracle, Informix, Arity, RDB, etc.) En [HH89] se
presenta este lenguaje, desde su fundamentaci´n en la l´gica del primer orden
                                              o        o
hasta su utilizaci´n en algunos SGBD comercializados.
                  o
    Entre los numerosos textos sobre esta tem´tica, indicamos [KS93], [Dat93]
                                             a
y [MP93], muy completos y actualizados.
    En los a˜os noventa ha surgido un nuevo enfoque de bases de datos, el de
            n
las orientadas al objeto, que est´ despertando un vivo inter´s y tiene una gran
                                 a                          e
y r´pida acogida. [SH90] es un estudio comparado de sus principios con los del
   a
modelo relacional.
Cap´
   ıtulo 7

Historia de los
instrumentos 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
                                                              a
desarrollo; por eso, junto al inter´s que despierta el origen de los ins-
                                   e
trumentos de c´lculo y la inform´tica, surge la necesidad de conocer,
                a                  a
siquiera someramente, su alcance en la actualidad, as´ como la de ima-
                                                       ı
ginar las expectativas de futuro previsibles.


7.1      Precursores de los computadores digitales
7.1.1    La antig¨ edad
                 u
    Desde que los hombres aprendieron a contar han necesitado apoyarse
en el c´lculo para manipular cantidades y buscar m´todos para facili-
       a                                            e
tarlo. Estos m´todos fueron bastante rudimentarios hasta que los sabios
               e
168     Cap´                                         ´
           ıtulo 7. Historia de los instrumentos de calculo


y astr´nomos hind´es recogieron la herencia greco-babil´nica inventando
      o          u                                     o
la numeraci´n posicional actual.
           o
    Con el desarrollo de esos m´todos, fue necesario anotar n´meros (ya
                               e                              u
fueran considerados datos, cantidades auxiliares o resultados finales),
apareciendo as´ los primeros instrumentos de c´mputo: el uso de los
               ı                                  o
dedos con tal objeto condujo a las primeras t´cnicas de c´lculo digital; y
                                             e           a
parecida finalidad tuvo el uso de piedras (calculi, t´rmino latino del que
                                                    e
procede la palabra c´lculo) entre los romanos, el de los nudos (quipa)
                      a
sobre una cuerda, o las muescas practicadas por diversos pueblos sobre
varas de madera.
    Desde entonces, los avances se han debido a progresos en los m´todos,
                                                                  e
en los instrumentos y en la integraci´n de ambos.
                                     o
    Dos utensilios de esta ´poca merecen ser citados: la m´quina anal´-
                            e                               a         o
gica de Antic´ıteros, precursora de los calendarios astron´micos bizanti-
                                                          o
nos; y especialmente el ´baco, que apareci´ entre el tercer y el primer
                          a                  o
milenio a. C., y puede ser considerado como la primera m´quina digital,
                                                           a
ya basada en la numeraci´n posicional.
                           o

7.1.2    Antecedentes del c´lculo mec´nico
                           a         a
    Los aut´matas de reloj que todav´ adornan los campanarios de las
           o                           ıa
iglesias medievales (a partir de finales del s. XIII) son automatismos
mec´nicos dise˜ados para reproducir una secuencia fija de movimientos.
     a         n
Precisamente se les ha llamado aut´matas de programa interior para
                                      o
expresar as´ que la serie de sus movimientos est´ intr´
           ı                                    a     ınsecamente descrita
en su maquinaria.

7.1.3    La m´quina de Pascal
             a
    Hacia la mitad del s. XVII, Pascal construy´ una calculadora, capaz
                                               o
de sumar y restar, bas´ndose en la pieza fundamental de los engranajes
                       a
de los molinos: la rueda dentada. El funcionamiento de la m´quina de
                                                              a
Pascal puede compararse al de un cuentakil´metros: cada rueda posee
                                             o
diez posiciones y, a cada vuelta, provoca en la siguiente un arrastre de
una posici´n.
          o
7.1. Precursores de los computadores digitales                        169


    Son directos descendientes de la m´quina de Pascal las m´quinas
                                       a                       a
electromec´nicas de oficina, hoy ya en desuso, y las UAL de los actuales
          a
computadores, cambiando las ruedas dentadas por circuitos electr´nicos.
                                                                o
   En 1673, Leibnitz perfeccion´ la m´quina de Pascal, incorpor´ndole
                                 o    a                         a
la multiplicaci´n (por adici´n repetida del multiplicando en diferentes
               o            o
o
´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-
                                                  o
gresos consistieron en perfeccionamientos menores hasta finales del siglo
XIX, en que se supo incorporar a las m´quinas de c´lculo una aportaci´n
                                      a           a                  o
procedente 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-
          a
rior, debido a que las instrucciones son aportadas por el hombre junto
con los datos, como ocurre con las calculadoras m´s simples. No obs-
                                                   a
tante, sus instrucciones son demasiado simples como para poder consi-
derarse un programa. Esta noci´n apareci´ cabalmente con la m´quina
                                 o        o                     a
de Jacquard, mec´nico franc´s que en 1790 concibi´ la idea de un telar
                  a          e                     o
autom´tico, capaz de tejer sus dibujos obedeciendo secuencias de ins-
       a
trucciones previamente registradas en tarjetas perforadas. El telar de
Jacquard 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                                        o
concepto 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                          ıa
tarjetas (descriptoras de operaciones) y ejecut´ndolas sucesivamente.
                                                a
   La gran aportaci´n de Babbage consiste en reunir las dos siguientes
                   o
caracter´
        ı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          a
cias. Repetidamente se ha sostenido que la complejidad de esta m´quina
                                                                a
rozaba probablemente los l´ımites de la mec´nica; sin embargo, estudios
                                            a
recientes [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
                                                         o

7.1.5      La tabulaci´n mec´nica
                      o     a
    El desarrollo de los estados modernos fue lo que determin´ la nece-
                                                                o
sidad de procesar grandes vol´menes de datos: siguiendo un mandato
                               u
constitucional en EE.UU., era necesario realizar un censo de la poblaci´no
cada diez a˜os. En 1886 se hizo patente la imposibilidad de obtener los
            n
resultados del censo de 1880 antes de 1890. Consciente de esta situaci´n,
                                                                        o
Hollerit, funcionario de la oficina de censos, ide´ un sistema de tabu-
                                                  o
laci´n de los datos basado en tarjetas perforadas similares a las del telar
    o
de Jacquard.
  1
    Entre los muchos campos que abarc´ Babbage citamos los primeros m´todos que
                                         o                           e
posteriormente 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
                                       o
cuarta parte del tiempo requerido para el de 1880. Su m´todo fue tan
                                                          e
eficiente que abandon´ la Oficina de Censos, e inaugur´ una compa˜´ de
                       o                             o            nıa
desarrollo de m´quinas electromagn´ticas (incorporando a su invento los
                a                   e
avances en electromec´nica y electricidad, construidos para perfeccionar
                       a
el 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          o
perdur´ hasta finales de los a˜os setenta.
       o                       n


7.2     Nacimiento y evoluci´n de los
                            o
        computadores digitales
    En la primera mitad del siglo XX, gracias a los avances en tecnolog´
                                                                       ıa
electr´nica, se crearon las primeras calculadoras electromec´nicas, que
      o                                                       a
funcionaban a base de rel´s.
                          e

    Al poseer los rel´s dos estados (abierto y cerrado), constituyen el ele-
                     e
mento ideal para representar los dos d´ ıgitos de la numeraci´n binaria (0
                                                              o
y 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-
                        e
paces de albergar resultados parciales. Adem´s, estos instrumentos eran
                                                a
capaces de seguir secuencias de instrucciones almacenadas previamente
sobre tarjetas perforadas.

    Los primeros computadores que funcionaron a base de tecnolog´
                                                                ıa
el´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               a
por la electricidad: el tubo de rayos cat´dicos, el transistor, los circuitos
                                          o
impresos 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
                                                                    n
tareas muy espec´ ıficas. Por ello, carec´ por completo de versatilidad,
                                        ıan
debido a la dificultad que entra˜aba reprogramarlas.
                                 n

7.2.1      El modelo de von Neumann
   En 1945, von Neumann dio el paso definitivo, incorporando a las
m´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
                                 o
esencia 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 cableado

7.2.2      Generaciones tecnol´gicas
                              o
    Las m´quinas basadas en el modelo de von Neumann se comercia-
          a
lizaron en los a˜os cincuenta (1952-55) y, desde entonces, la carrera ha
                n
sido y sigue siendo imparable. De esta d´cada parten las siguientes ge-
                                         e
neraciones 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                                    173


Primera generaci´n
                o
    Las v´lvulas electr´nicas desplazaron a los rel´s, y los computadores
           a           o                           e
adquirieron velocidad y potencia. Citamos entre los computadores de la
primera generaci´n el ENIAC, terminado en 1946, y el UNIVAC,4 pri-
                  o
mera m´quina con la arquitectura de von Neumann. El modus operandi
         a
era 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 ellos
permanec´ inactivo.
         ıa

Segunda generaci´n
                o
    El aumento de potencia se debe a una innovaci´n de los laboratorios
                                                   o
Bell en 1948: el transistor. En cuanto al modo de trabajar, se introdujo
la simultaneidad de las operaciones de c´lculo con las de carga y salida,
                                         a
reduci´ndose los per´
       e             ıodos de ocio del procesador.
    Para aumentar la velocidad de las operaciones de carga/salida, que
retrasaban todo el proceso, se introdujo el uso de cintas magn´ticas,
                                                                 e
m´s r´pidas que las tarjetas perforadas. Este modo de trabajar se llama
  a a
off-lining.

Tercera generaci´n
                o
    Tecnol´gicamente, los avances en velocidad y potencia se deben a la
          o
incorporaci´n de circuitos integrados (1952) y memorias de semiconduc-
           o
tores (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-
                     o
taneidad del procesamiento con las operaciones de entrada/salida me-
diante la multiprogramaci´n, consistente en que varios programas co-
                           o
existen en memoria, y cuando uno de ellos debe realizar una operaci´n  o
de entrada/salida, el procesador no se detiene, sino que se dedica a otro
programa. As´ la UCP nunca est´ ociosa habiendo trabajo por hacer,
               ı,                  a
facilit´ndose adem´s la asignaci´n de prioridades a los programas que se
       a          a             o
encuentran a la espera.

Cuarta generaci´n
               o
    Se incorporan nuevas tecnolog´ de fabricaci´n y de integraci´n de
                                   ıas           o                 o
los 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                  175


7.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                                 e
emprenden la carrera de su evoluci´n particular: para evitar la codifi-
                                     o
caci´n de programas a bajo nivel, es preciso que sea la m´quina la que
    o                                                       a
adquiera lenguajes pr´ximos al humano.
                      o
    A la aparici´n del FORTRAN (FORmula TRANslator system) si-
                o
guieron el Algol y el Cobol, intentando acercarse a un lenguaje univer-
sal. La avalancha posterior de lenguajes y dialectos demostr´ que esas
                                                            o
tentativas de universalidad resultaron vanas.
    Por otra parte, la actividad de la programaci´n experiment´ en los
                                                  o              o
a˜os sesenta un desarrollo mucho m´s r´pido que las t´cnicas emplea-
  n                                    a a               e
das en ´l; esta cr´
        e         ıtica situaci´n se conoce como crisis del software. No
                               o
exist´ una metodolog´ de la programaci´n: cada programador desarro-
     ıa                 ıa                o
llaba sus propios m´todos o “trucos” para programar, y se consideraba
                     e
a la programaci´n m´s como un arte que como una t´cnica. Muy pronto
                o     a                              e
surgi´ la necesidad de sistematizar la programaci´n, desarrollando he-
     o                                             o
rramientas y h´bitos de dise˜o met´dicos y disciplinados para conseguir
               a              n      o
que los programas fueran correctos, eficientes y mantenibles. La tesis
de la programaci´n estructurada y las aportaciones de Dahl, Dijkstra,
                  o
Hoare [DDH72] y el propio Wirth, vinieron a conferir a la programaci´no
un car´cter de disciplina.
       a
    Aparece as´ la programaci´n estructurada y modular y comienzan a
                 ı             o
aplicarse t´cnicas de dise˜o de algoritmos como el m´todo de los refi-
           e               n                          e
namientos sucesivos. En este contexto nace el lenguaje Pascal, que fue
creado con el prop´sito de ense˜ar a programar de una forma met´dica y
                   o            n                               o
disciplinada. De hecho, se considera como un lenguaje ideal para entrar
en contacto con la programaci´n, por lo que es el primero que muchas
                                o
universidades vienen ense˜ando durante a˜os. Los nuevos lenguajes de
                           n                n
programaci´n que aparecen a partir de los a˜os setenta incorporan estas
            o                                 n
t´cnicas, facilitando su desarrollo y aplicaci´n.
 e                                            o
   Posteriormente, los lenguajes de programaci´n han seguido evolucio-
                                              o
nando, y paralelamente las t´cnicas de desarrollo de algoritmos. En el
                            e
176     Cap´                                         ´
           ıtulo 7. Historia de los instrumentos de calculo


cap´
   ıtulo 5 se han recogido algunos de los modelos de programaci´n m´s
                                                               o   a
empleados.


7.4     Tecnolog´ actual, tendencias y
                ıa
        perspectivas
   A partir de la aparici´n del computador personal al principio de los
                         o
a˜os ochenta, la inform´tica ha dejado de ser un coto cerrado de un
 n                      a
grupo restringido de especialistas y se ha popularizado, alcanzando a
usuarios 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                        ın
las finanzas, la gesti´n, la investigaci´n, el control de procesos industria-
                     o                 o
les (dise˜o, concepci´n y fabricaci´n asistidas por computador), la edu-
         n            o             o
caci´n, la edici´n, la composici´n musical, etc., y el n´mero de usuarios
     o          o                o                       u
que 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                      o
de “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
                                                   o
computador y disminuir el tiempo de aprendizaje, y para lograrlo se
recurre a modelos m´s intuitivos que muestran al computador como
                      a
un escritorio o mesa de trabajo, a las aplicaciones como tareas y los
ficheros de datos como carpetas de documentos, mediante entornos de
tipo gr´fico (4.2.5).
       a
    A su vez, se ha dado una notable evoluci´n tecnol´gica: los com-
                                             o        o
putadores son cada vez m´s potentes y m´s baratos. Se puede afirmar
                         a               a
que esta evoluci´n es m´s r´pida en el campo del hardware que en el
                o      a a
software. Aparecen computadores con enormes posibilidades, pero los
programas capaces de aprovecharlas llegan con varios a˜os de retraso.
                                                      n
    La mayor capacidad de proceso est´ permitiendo la entrada de la
                                        a
inform´tica en campos en los que su presencia era limitada, y la creaci´n
       a                                                               o
de 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                 o
Como tal revoluci´n, tiene importantes repercusiones de ´
                   o                                     ındole econ´-o
mica y social. La utilizaci´n de la inform´tica genera un aumento de
                           o               a
la productividad y de la calidad de la producci´n. En consecuencia, las
                                               o
empresas se ven obligadas a informatizarse para poder competir en el
mercado. El aumento de la productividad puede significar tambi´n un
                                                                 e
aumento del desempleo o del ocio.
    Para imaginar c´mo ser´n los computadores del futuro, quiz´s lo m´s
                   o       a                                  a      a
razonable 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
                                                                 o
limita en tama˜o y en velocidad. De ah´ que la investigaci´n se oriente
               n                           ı                  o
hacia la superaci´n de las configuraciones tradicionales (basadas en el
                  o
modelo de von Neumann) por otras arquitecturas y redes m´s avanzadas
                                                              a
(paralelas, neuronales, ...) llamadas a veces “arquitecturas de flujo de
datos” (v´ase el cap´
          e           ıtulo 3). En ellas, un programa no se compone de
instrucciones que se ejecutan “de arriba abajo”, sino de segmentos que
pueden “resolverse” en cuanto los datos precisos est´n disponibles. Los
                                                      e
datos fluyen a trav´s de complicadas redes, compitiendo por acaparar la
                    e
178       Cap´                                         ´
             ıtulo 7. Historia de los instrumentos de calculo


atenci´n de los recursos (principalmente los procesadores, que trabajan
      o
simult´neamente).
      a

7.4.1      Inteligencia artificial
    El ambicioso objetivo que se persigue es dotar a los computadores
del futuro con una serie de capacidades que se engloban bajo el t´rmino
                                                                  e
gen´rico de Inteligencia Artificial. Esta disciplina se ocupa en la actua-
    e
lidad 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 del
proceso cognitivo. En particular, todas ellas necesitan sustituir el empleo
de datos por el de conocimientos, lo que plantea el dif´ problema de
                                                          ıcil
su representaci´n.
               o

7.4.2      Las comunicaciones
    Otro aspecto de la inform´tica con tremendo auge en la actualidad
                              a
es el de las comunicaciones, ya que se abre la posibilidad de acceder a
la informaci´n de origen remoto, tratarla autom´ticamente y enviar los
             o                                  a
resultados 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 a
y ya casi empiezan a parecernos algo natural. Como ejemplos podemos
citar desde el uso de los cajeros autom´ticos hasta la posibilidad de
                                           a
efectuar reservas de avi´n o de hotel desde puntos remotos, la consulta
                        o
del cat´logo de una biblioteca en una ciudad de otro pa´ el correo
        a                                                  ıs,
electr´nico, etc.
      o
´
7.5. Comentarios bibliograficos                                              179


7.5     Comentarios bibliogr´ficos
                            a
     [JM90] y [Ber86] son dos buenas recopilaciones, con car´cter general, so-
                                                                a
bre la historia pasada de los instrumentos de c´lculo, desde la calculadora de
                                                  a
Pascal 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                                                       o
moderna. Especialmente interesantes son las citas de escritos de von Neumann
recogidas en ´l.
              e
     En [Swa93] se presentan los avatares en que se vio envuelta la construcci´n
                                                                              o
de la m´quina anal´
        a            ıtica de Babbage, demostrando que el proyecto era viable, a
pesar de no verse finalizado: En este art´ ıculo se describe la construcci´n de la
                                                                         o
m´quina anal´
  a           ıtica con motivo del segundo centenario del nacimiento de Charles
Babbage, y de acuerdo con sus planos originales.
     Aunque los computadores digitales actuales tienen su origen en el modelo
de von Neumann (1945), la invenci´n del primer computador electr´nico es
                                      o                                  o
anterior, y se debe a J. V. Atanasoff, que construy´ el primer computador
                                                        o
digital entre 1937 y 1942. De hecho, es posible que los creadoes del ENIAC
copiaran algunas de sus ideas ([Mac88]).
     Sobre computaci´n avanzada en la actualidad y perspectivas de futuro de
                        o
la inform´tica pueden consultarse [Com87] y [Sim85]. [La 91] trata sobre este
          a
mismo tema, en relaci´n con las comunicaciones.
                          o
Ap´ndice A
  e

Introducci´n al DOS
          o

    El dos es, hoy en d´ el sistema operativo m´s difundido para com-
                       ıa,                     a
putadores PC de IBM y compatibles. Dada la gran difusi´n de ´stos,
                                                          o     e
se comprende la importancia que tiene conocer el dos.
    Aunque los PCs pueden comunicarse con otros a trav´s de redes, su
                                                           e
modo habitual de trabajar es aut´nomo, por lo que el dos es un sistema
                                  o
operativo monousuario. Su cometido (v´ase el cap´
                                          e          ıtulo 4) consiste en
gestionar los recursos del sistema, controlando el uso de los dispositivos
(como las unidades de disco, la impresora, el rat´n), administrando la
                                                   o
memoria principal y facilitando la ejecuci´n de programas y la organi-
                                            o
zaci´n de archivos dentro de los discos.
    o
    El dos es en realidad un programa (o mejor dicho un conjunto de
programas) grabado en un disco.1 Cuando se enciende un equipo, se
empieza cargando este programa en la memoria principal y se efect´anu
las tareas de puesta en marcha (v´ase la secci´n A.3); entonces entra en
                                   e           o
funcionamiento un int´rprete de mandatos, que espera las ´rdenes del
                       e                                     o
usuario (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
                                         o
que se encuentra este programa de arranque del dos, que es actualmente
el caso m´s habitual.
         a
   1
    De hecho, ´se es el significado de las siglas que forman su nombre: “Disk Operating
              e
System”, que quiere decir en ingl´s Sistema Operativo de Disco.
                                  e
182                               ´                   ´
                                Apendice A. Introduccion al DOS


A.1      Organizaci´n de recursos
                   o
A.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                                             e
en 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 puntos
finales, a excepci´n de las unidades de disco que deben llevarlos obliga-
                 o
toriamente.


A.1.2     Archivos
    Un archivo del dos no es m´s que un documento, aunque en vez de
                                 a
estar 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-
                                             e
tenido de los archivos, desde el punto de vista del dos, algunos archivos
son “de datos” y otros son “programas”, escritos en lenguaje de m´quina
                                                                  a
o del dos.

   Los archivos se nombran mediante palabras, llamadas identificadores,
formadas por letras, d´
                      ıgitos y los caracteres siguientes:

                   ~ ! @ # $ % ^  ( ) - _ { } ’
´
A.1. Organizacion de recursos                                        183


Los identificadores de los archivos tienen dos partes: nombre (de un
m´ximo de ocho letras) y extensi´n (de un m´ximo de tres), siendo esta
  a                               o           a
ultima opcional. Al escribir el identificador de un archivo, estas dos
´
partes se separan mediante un punto. Usando la notaci´n EBNF (v´ase
                                                       o          e
el cap´
      ıtulo 5), esta descripci´n puede expresarse as´
                              o                     ı:

                  identificador ::= nombre[.extensi´n]
                                                  o

Ateni´ndonos a estas reglas, conviene elegir los nombres de los archivos
      e
relacionados con su contenido. En cuanto a las extensiones, su elecci´n
                                                                      o
depende 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
    o
pueden coincidir con los identificadores propios de dispositivos.
    Con frecuencia, se necesita realizar ciertas operaciones con un grupo
de archivos m´s o menos grande. Si esos archivos fueron bautizados si-
              a
guiendo ciertas pautas, es posible identificarlos gen´ricamente mediante
                                                     e
un patr´n o plantilla de archivo. Para ello, se usan los caracteres co-
        o
mod´ * 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             a
cualquier 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 DOS


A.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 organizar
jer´rquicamente los archivos de un disco.
   a
    En general, los identificadores de los directorios siguen las mismas
reglas que los archivos, aunque en el caso de los directorios es bastante
frecuente omitir la extensi´n. Adem´s de los identificadores corrientes,
                           o         a
existen 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                                                     a
ficamente en el ejemplo de la figura A.1, donde los identificadores de los
directorios y subdirectorios se˜alan puertas (de entrada), y los archivos
                               n
est´n representados directamente por sus identificadores. Otro modo
   a
m´s sencillo e igualmente util de representarlos es como ´rboles, seg´n
  a                        ´                              a            u
se muestra en la figura A.2.
   Es importante tener en cuenta que los archivos contenidos en cada
unidad 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
                                         ız
unidad tiene un directorio actual.
    Adem´s, es posible referirse a cualquier directorio o conjunto de ar-
          a
chivos indicando una ruta de acceso desde la posici´n actual, esto es, el
                                                     o
directorio de trabajo2 (v´ase 4.2.2). Con este fin, el s´
                         e                             ımbolo  sirve para
concatenar los pasos hacia dicha posici´n.
                                        o
    As´ por ejemplo, considerando que el disco C: est´ organizado seg´n
       ı                                               a              u
la estructura anterior, es posible referirse a los archivos ejerci.tex y
examen.tex desde diversos lugares:
   2
    Esta posici´n se conoce frecuentemente como directorio “por defecto”, a causa de
               o
una 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*.tex

A.1.4        Prompt
    El prompt 3 es un indicador con el que el dos expresa que est´ es-
                                                                    a
perando nuestras ordenes, listo para ejecutarlas. El dos puede indicar
                  ´
esta disposici´n de diversas formas, a nuestro capricho, pero la m´s ex-
              o                                                    a
tendida 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, el
e                                               a
prompt

                              C:ESCUELACLASES

indica que la posici´n de trabajo actual es el subdirectorio CLASES, del
                    o
directorio ESCUELA, en el disco C:. A la derecha del prompt aparece el
cursor, 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
                                 e
usuario la comunicaci´n con el computador.
                     o
    Empecemos por poner unos cuantos ejemplos de ´rdenes, junto con
                                                       o
su funcionamiento. En adelante, usaremos letra de molde para reprodu-
cir el intercambio de informaci´n entre computador y usuario; lo escrito
                               o
por el computador aparece en letra vertical y lo escrito por el usuario en
letra oblicua:
   3
    Aunque en espa˜ol significa incitar o incitaci´n, s´lo usamos el t´rmino ingl´s, sin
                  n                              o    o              e          e
traducir.
188                              ´                   ´
                               Apendice A. Introduccion al DOS


C:CD pascal
C:PASCALA:
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 libres

A:FORMAT B:
 Comando o archivo no se encuentra
A:C:DOSFORMAT B:
... ... ...
A:CLS
    Debe advertirse que en el lenguaje del dos no se distingue entre las
letras may´sculas y las min´sculas. Esto afecta a los identificadores (ya
          u                  u
sea para dispositivos, archivos o directorios), as´ como a las ´rdenes que
                                                  ı            o
estudiaremos.
    Por otra parte, los comandos del dos pueden agruparse en dos ca-
tegor´ıas: ´rdenes (internas) del dos y programas (externos). El dos
           o
conoce 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                             o
tras 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
                                                  o
programas 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
                                                           e
observaci´n consiste en que, cuando se ordena un comando externo o
         o
programa, para que ´ste pueda ejecutarse deber´ darse alguna de las
                      e                        a
siguientes 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                           a
usuales. Interesa saber de cada uno si es externo o interno, su prop´sito
                                                                    o
y su sintaxis correcta. Usaremos las reglas EBNF (introducidas en el
cap´
   ıtulo 5) escribiendo los s´
                             ımbolos terminales con letra vertical y los
no terminales con letra oblicua, en vez de distinguirlos con may´sculas
                                                                  u
y min´sculas, o de usar los metas´
      u                            ımbolos  y , por tener ´stos otro
                                                               e
cometido.
   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 CLS
no tiene argumentos); y las opciones son espec´ ıficas de cada comando,
como /W, y alteran el funcionamiento del mismo. En estas descripciones
sint´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              e
conjunto de archivos. Cuando esas partes opcionales se omiten, se asume
que se trata del disco de trabajo actual, del (sub)directorio abierto, de
todos los archivos a la vista, etc.

A.2.1       ´
            Ordenes b´sicas
                     a
CLS (interna)

   • Prop´sito: Borra la pantalla, situando el prompt y el cursor en su
         o
     comienzo.

   • Sintaxis: CLS

Cambio de unidad (interna)

   • Prop´sito: Establece una nueva unidad de trabajo.
         o

   • Sintaxis: unidad

FORMAT (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                                                 191


A.2.2    Manejo de archivos
DIR (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 DOS


COPY (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                      o

DEL (interna)

   • Prop´sito: Borra un archivo o un grupo de ellos de un disco.
         o

   • Sintaxis: (ERASE | DEL) [posici´n][archivo(s)]
                                    o

REN (interna)

   • Prop´sito: Renombra el identificador de un archivo o grupo de
           o
     ellos.

   • Sintaxis: (REN | RENAME) [posici´n][archivo(s)] [archivo(s)]
                                     o

TYPE (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)]
                           o

PRINT (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
                                            o

A.2.3    Manejo de directorios
CD (interna)

   • Prop´sito: Cambia el directorio de trabajo actual.
         o

   • Sintaxis: (CHDIR | CD) [unidad]camino

TREE (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]camino

RD (interna)

      • Prop´sito: Borra un subdirectorio, que debe estar vac´
            o                                                ıo.

      • Sintaxis: (RMDIR | RD) [unidad]camino

PATH (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          o

A.2.4       Indicadores del sistema
    Durante el funcionamiento del dos existen unos cuantos datos de
referencia, 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                                            195


A.2.5        Procesamiento por lotes
    Cuando se necesita ejecutar repetidamente una secuencia de ´rdenes,
                                                               o
es posible definir un lote de ´rdenes (v´ase 4.1.2) (por ejemplo, la se-
                              o         e
cuencia cd pascal, turbo y cd ..), agrup´ndolas bajo un nombre (como
                                         a
pascal.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
                                         ´                            o
bat4 obligatoriamente. Sin embargo, en su posterior utilizaci´n puede
                                                               o
omitirse 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.bat

donde el retorno de carro representa el final de l´
                                                 ınea, y la combinaci´n
                                                                     o
Ctrl+Z la marca del fin de archivo.
   En un archivo bat pueden usarse, adem´s de las ´rdenes usuales del
                                          a         o
dos, otras espec´
                ıficas (ECHO, REM, PAUSE, GOTO, IF, FOR), con las que se
pueden 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:
                                               a
el sistema b´sico de entrada y salida (del ingl´s, Basic Input/Output
              a                                  e
System). Se trata de un conjunto de rutinas situadas en la memoria
ROM del computador que realiza tareas b´sicas como las pruebas de que
                                            a
los perif´ricos est´n conectados o el programa para poder leer los ficheros
         e         a
del dos, bien del disco duro o bien de discos flexibles. Estas rutinas no
son suministradas por el fabricante del sistema operativo sino que son
  4
      En ingl´s, batch significa lote.
             e
196                              ´                   ´
                               Apendice A. Introduccion al DOS


entregadas con el hardware, por lo que se suele utilizar la expresi´n
                                                                    o
firmware para hacer referencia a este tipo de software introducido en la
ROM.
    Ya se ha dicho que el dos est´ grabado en un disco. En efecto,
                                    a
cuando se enciende el computador, el programa de la ROM extrae del
disco un programa generador del dos que, en l´   ıneas generales, da los
siguientes 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 (o
creados) por el usuario para configurar el funcionamiento del dos seg´n
                                                                    u
sus 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:UTILESepsilon


A.4     Otros aspectos de inter´s
                               e
A.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                                        199


de desviar la salida de esas ´rdenes hacia otro dispositivo, mediante los
                             o
operadores de redireccionamiento:
. . . DIR /w  lpt1:
o confeccionar un archivo con ella:
. . . DIR /w  dirlist.txt
e 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 contenido
consiste unicamente en el car´cter “s”:
          ´                    a

                           si.txt ;        s

es posible conseguir que una orden capte su entrada del mismo, as´
                                                                 ı:
. . . DEL *.*  SI
...

    Los siguientes programas, llamados filtros, permiten sacar partido
del 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 posible
convertir un archivo en argumento de un programa:

. . .  SORT  agenda.txt

adela               2008586
bernardo            7388196
...
zutano              5494389



    Otra interesante utilidad consiste en convertir una salida por la pan-
talla en el argumento de un programa:

. . . DIR | SORT

pudi´ndose combinar con el redireccionamiento:
    e

. . . DIR | SORT  DirOrden.txt
´
A.4. Otros aspectos de interes                                           201


A.4.2       Atributos y protecci´n de archivos
                                o
    Los sistemas operativos ofrecen mecanismos de protecci´n de la in-
                                                             o
formaci´n que gestionan. Su inter´s se da mayormente en sistemas mul-
        o                          e
tiusuario, en los que resulta esencial mantener lo privado del trabajo de
los usuarios, pero incluso en un sistema monousuario como el dos, son
de 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 atributos
de un archivo o de un grupo de ellos:
                     [posici´n]ATTRIB [±R][±A] [archivo(s)]
                            o
Estos 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 sistema

A.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
                                          n
memoria; sin embargo, los desarrollos posteriores del hardware y el soft-
ware se encontraron pronto con limitaciones de memoria. Este problema
oblig´ a introducir algunas ampliaciones del concepto de memoria. En
     o
este apartado se dar´ una visi´n sobre los diferentes tipos de memoria
                     a          o
que 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                                       o
expandida o extendida.

Memoria expandida
   La memoria expandida es el tipo de memoria m´s flexible que un PC
                                                   a
puede tener, lo cual tambi´n hace que sea la m´s compleja de todas. Esta
                          e                    a
memoria permite al procesador acceder a m´s memoria de la disponible
                                             a
bajo el l´
         ımite de los 640 Kb.
    La memoria expandida no puede ser gestionada directamente por
el dos; para ello se utilizan programas (tales como EMM7 , EMM386
y QEMM) que se cargan normalmente en el archivo de configuraci´no
config.sys.
    Es importante conocer c´mo act´a el EMM para comprender mejor
                             o       u
las diferencias entre las memorias expandida y extendida. Cuando el
EMM se ejecuta lo que hace es buscar un trozo de memoria sin utilizar en
los 384 Kb superiores del primer Mb; este trozo de memoria, usualmente
de 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                                      203


hacen de pivotes para mover informaci´n entre la memoria convencional
                                      o
y la memoria expandida. El programa EMM se encarga de gestionar el
intercambio de informaci´n entre las p´ginas de memoria y la memoria
                        o             a
expandida.
   La instalaci´n de memoria expandida representa la instalaci´n de
                o                                              o
un subsistema completo de hardware y software. El hardware consiste
en una tarjeta de memoria dise˜ada especialmente, y el software es el
                              n
archivo 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
                                    e
se accede a ella como si se tratara de un puerto de entrada/salida. En
la figura A.4 se intenta reflejar la forma en que el procesador ve a la
memoria expandida.

Memoria extendida
    La memoria extendida es la que est´ por encima del primer megabyte
                                      a
de memoria. S´lo puede accederse a ella a trav´s del modo protegido de
              o                                e
los procesadores 80286 o superior. La diferencia m´s importante entre
                                                   a
memoria expandida y extendida es que los programas que trabajen en
modo real no pueden tener acceso directo a la memoria extendida.
    El modo protegido es usado para acceder a una mayor cantidad de
memoria y de funciones.8 Cuando un procesador (80286 o superior) pasa
a modo protegido entonces el sistema puede controlar la operaci´n de
                                                                 o
m´ltiples programas en la memoria y cambiar m´s f´cilmente de una
  u                                               a a
tarea a otra. Estos procesadores tambi´n pueden ejecutar los programas
                                       e
escritos para procesadores 8088 y 8086 trabajando en modo real, aunque
en este caso no pueden acceder directamente a la memoria superior al
primer Mb. Una de las principales ventajas de disponer de memoria
extendida en un PC trabajando en modo real es su uso como un disco
virtual 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 a
disco 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
                                       o
funcionamiento, pues la referencia a archivos contenidos en un disco
RAM es la misma que si estuvieran en un disco duro. La desventaja
del uso de un disco RAM es que, a diferencia de un disco duro o un
disco flexible, la informaci´n escrita en un disco RAM es vol´til (s´lo
                           o                                 a     o
permanece mientras el computador est´ funcionando).
                                       e
Ap´ndice B
  e

Introducci´n a UNIX
          o

    El sistema operativo unix fue dise˜ado como un sistema de tiempo
                                      n
compartido con una interfaz de usuario (shell ) simple y manejable, de
la que existen distintas versiones.
   Se trata de un sistema pensado inicialmente para equipos peque˜os,
                                                                  n
por lo que los algoritmos fueron seleccionados por su simplicidad y no
por su eficacia o rapidez.
    Las ventajas que presenta unix sobre otros sistemas de gran difusi´n
                                                                      o
se basan en que el software desarrollado sobre unix es f´cilmente trans-
                                                        a
portable entre m´quinas de distintos fabricantes, pues no necesita un
                  a
hardware determinado y puede correr sobre procesadores de distinta fi-
losof´
     ıa.
    No obstante lo anterior, los sistemas grandes hasta hace poco han
preferido usar un sistema propietario a uno abierto, aunque la tendencia
actual apunta hacia la adopci´n generalizada de este sistema por parte
                              o
de todos los grandes fabricantes.


B.1     Breve descripci´n t´cnica
                       o e
    Considerando el sistema operativo como la capa de software situada
directamente sobre el hardware, dentro de ´l podemos distinguir a su
                                           e
vez 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    a

Una caracter´ıstica importante de unix es que todo se considera como un
archivo (desde los ficheros de datos hasta los perif´ricos y las unidades
                                                   e
de disco flexible). Un archivo para unix no es m´s que una secuencia de
                                                a
bytes 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
                                                          ıa
hasta 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 directorio
ra´ 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-
                               o
ciar la potencia de unix, pues aparecen los mecanismos que permiten que
varios procesos trabajen sobre la m´quina simult´neamente optimizando
                                    a            a
as´ 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
                                                                o
existe 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    n
miento 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                                                207


la prioridad, y cuanto m´s tiempo de la UCP ha consumido un proceso,
                        a
menor se hace su prioridad.
    No todos los sistemas unix utilizan el mismo mecanismo para la
gesti´n de la memoria. Los primeros sistemas utilizaban exclusivamente
     o
el mecanismo de swapping: un proceso se retira tanto m´s f´cilmente
                                                          a a
cuanto 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    e
eliminar la fragmentaci´n externa, existiendo sistemas que utilizan el
                         o
procedimiento de paginaci´n por demanda (en ingl´s demand-paging).
                           o                        e


B.2      Una sesi´n con UNIX
                 o
    Puesto que unix es un sistema multiusuario, lo que debemos hacer
antes de iniciar una sesi´n de trabajo es presentarnos al sistema. Al
                         o
arrancar el computador, o al efectuar una conexi´n remota, unix pedir´
                                                o                    a
nuestro 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 de
usuario, supongamos que es popeye, el sistema pedir´ nuestra clave de
                                                    a
acceso:
login:popeye
password:
    Como es l´gico, el sistema no nos permitir´ acceder a menos que
              o                                 a
se introduzcan un nombre de usuario y su clave de acceso correctos
(debe tenerse en cuenta que unix distingue entre letras may´sculas y
                                                               u
min´sculas) que el administrador debe habernos proporcionado. En la
    u
primera conexi´n al sistema, lo primero que debemos hacer es cambiar la
               o
clave de acceso de modo que nadie m´s la conozca (esto se hace mediante
                                    a
el comando passwd).
    Si todo ha ido bien, el sistema aceptar´ la petici´n de entrada, nos co-
                                           a          o
locar´ en nuestro directorio de trabajo y en pantalla aparecer´ el prompt
     a                                                          a
del 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 ayuda
interactiva, llamada tambi´n ayuda en l´ 2 . El comando man hace una
                           e            ınea
llamada al manual, y puede ser usado para obtener informaci´n acerca
                                                              o
de un comando, su sintaxis y sus posibles opciones (flags), su sem´ntica
                                                                 a
e incluso de sus bugs o situaciones en las que dicho comando no realiza
su labor correctamente. Por ejemplo,

$man passwd

da completa informaci´n acerca del comando passwd, recu´rdese que $
                       o                               e
es el prompt del sistema, y no hay que teclearlo.

    En un sistema multiusuario, uno puede estar interesado por saber qu´
                                                                       e
personas est´n trabajando simult´neamente en el sistema. Esto se puede
             a                   a
saber, y se dispone de dos comandos para ello: who y finger: la orden
who proporciona los nombres de usuario de todas aquellas personas que
se encuentran conectadas al sistema, mientras que finger proporciona
informaci´n m´s detallada acerca de ellas.
          o    a

    Una vez que sepamos qui´nes est´n conectados al sistema, podemos
                              e       a
establecer contacto directo con ellos mediante los comandos write o
talk, 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                                      o
sistema mediante exit o logout para impedir que alguien no autorizado
pueda acceder al sistema. Sobre el asunto de la seguridad de los archivos
se tratar´ en la siguiente secci´n.
         a                      o


B.3         Gesti´n de archivos
                 o
   Este apartado resultar´ bastante f´cil a aquellos usuarios que est´n
                          a          a                                e
familiarizados con dos, ya que muchas de las caracter´
                                                     ısticas del sistema
de archivos de unix fueron adoptadas por dos.

  2
      En ingl´s, on line.
             e
´
B.3. Gestion de archivos                                                209


B.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 sus
primeros catorce caracteres. Est´ permitido usar cualquier car´cter AS-
                                a                             a
CII en el nombre de un archivo salvo “/”, que sirve para indicar el
camino (absoluto o relativo) del nombre de un archivo; sin embargo, es
mejor 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
     ın
cierto patr´n; esta labor la realiza el shell, y se detallar´ m´s ade-
           o                                                a a
lante. Por ultimo, no se debe olvidar que unix distingue entre letras
            ´
may´sculas y min´sculas.
     u            u

B.3.2     Tipos de archivos en UNIX
    En unix podemos encontrar varios tipos de archivos: los archivos
ordinarios, los directorios, los v´
                                  ınculos, los v´
                                                ınculos simb´licos y los ar-
                                                            o
chivos especiales. De los archivos ordinarios y de los directorios poco
hay que a˜adir a lo dicho en 4.2.2, por lo cual s´lo incidiremos en los
           n                                         o
v´
 ınculos, simb´licos o no, y los archivos especiales.
               o
V´
 ı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.
                 o
Archivos 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.e
Estos permisos otorgan la posibilidad de que el archivo pueda ser le´
                                                                    ıdo,
modificado o ejecutado, tanto por el propietario del archivo como por
otros 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 directorio
actual 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    ./tema2
drw-r-----     1   popeye      1024    Sep 1     19:32    ./fig

   Los permisos asociados a cada archivo aparecen codificados en la
forma 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,
         o
que sirve para cambiar los permisos asociados con un archivo. La sintaxis
de este comando es la siguiente
$chmod nmk archivo
donde n, m y k son n´meros del 0 al 7, que indican los permisos del
                      u
due˜o, de su grupo y de otros, respectivamente. Cada d´
     n                                                 ıgito octal (pues
var´ entre 0 y 7) se determina sumando 4 para activar el permiso de
    ıa
lectura, sumando 2 para activar el permiso de escritura y sumando 1
para 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
                                o
archivo (y el administrador del sistema). As´ por ejemplo, si “prest´-
                                             ı                       a
semos” alguno de nuestros archivos a otro usuario, ´ste no podr´ cam-
                                                   e           ıa
biar sus permisos. Para que pudiera hacerlo, se deber´ cambiar la pro-
                                                     ıa
piedad del archivo; por ejemplo, si el usuario popeye quiere ceder la
propiedad del archivo espinacas al usuario cocoliso deber´ hacer uso
                                                            a
del comando chown (del ingl´s CHange OWNer ):
                            e
$chown cocoliso espinacas

B.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 comandos
suelen ser bastante similares a los de dos y generalmente consisten en
abreviaturas de su funci´n. A continuaci´n se presentan algunos de los
                        o                o
212                               ´                   ´
                                Apendice B. Introduccion a UNIX


m´s com´nmente utilizados; la mayor parte de ellos tienen opciones, que
 a      u
pueden 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,
                                                        u
es el programa que durante m´s tiempo se estar´ usando durante una
                               a                   a
B.4. El shell de UNIX                                                  213


sesi´n de trabajo con unix. En esta secci´n se hace una breve intro-
    o                                        o
ducci´n a las caracter´
      o               ısticas principales del (los) shell de unix.

    Existen distintas versiones de shell, cada una de ellas con sus propias
particularidades; en esta secci´n s´lo se presentar´ sucintamente el shell
                                o o                 a
sh 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
                                     a
utilidades adicionales.

    Cada vez que se lanza sh se ejecuta el archivo .profile (el nombre
comienza con un punto) que hace las veces del archivo autoexec.bat de
dos. Este archivo se utiliza para la personalizaci´n del entorno de tra-
                                                   o
bajo: la definici´n de la variable PATH, fijar el tipo de terminal, cambiar
                o
el prompt por defecto, . . .


B.4.1    Encauzamiento de la entrada y salida
    Una primera utilidad del shell es la posibilidad de redireccionamiento
de entrada/salida. Los operadores de redirecci´n son los mismos que los
                                                 o
de 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
                                     o
de uno a la entrada del siguiente mediante el s´   ımbolo |. La idea, que
consiste en hacer que la salida de un comando sea la entrada de otro sin
necesidad de utilizar archivos temporales, ya debe ser conocida por los
usuarios de dos.


B.4.2    Caracteres comod´
                         ın
    Otra importante utilidad que podemos obtener de un shell es el uso
de caracteres comod´ El shell permite el uso de caracteres comod´ de
                     ın.                                         ın
tres tipos: *, ? y [...].

    El signo de interrogaci´n identifica a cualquier car´cter, del mismo
                           o                           a
modo que en dos; sin embargo, el asterisco es interpretado de forma
distinta, como muestra el siguiente ejemplo:

$ls cap*tex
214                                     ´                   ´
                                      Apendice B. Introduccion a UNIX


que 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                                                u
chivos que satisfacen el patr´n especificado.
                             o
    El ultimo tipo de car´cter comod´ permite indicar un rango de ca-
       ´                 a           ın
racteres para confrontar con un car´cter del nombre de un archivo, por
                                   a
ejemplo la orden
$cat cap[1-4].tex  parte1.tex
concatena los archivos cap1.tex, cap2.tex, cap3.tex y cap4.tex poni-
´ndolos en el archivo parte1.tex. Entre los corchetes se pueden espe-
e
cificar rangos tanto num´ricos como alfab´ticos.
                         e              e

B.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
                      o
que realizan tareas sencillas, definiendo as´ tareas m´s complejas. Esto se
                                           ı         a
consigue mediante los llamados guiones de shell (en ingl´s shell scripts),
                                                          e
que son la contrapartida unix de los archivos de extensi´n .bat de dos.
                                                          o


B.5         UNIX como sistema multitarea
    Como sistema multitarea unix proporciona herramientas para poder
ejecutar varios programas simult´neamente; el shell permite, de forma
                                 a
f´cil, controlar la ejecuci´n de los distintos procesos mediante la in-
 a                         o
troducci´n del concepto de ejecuci´n en modo subordinado (en ingl´s
         o                          o                                e
background ).
    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
                         u
estructura 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 ejecuta
los 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
                                           a
archivo 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 sistema
imprime dos n´meros y presenta el prompt a la espera de nuevas ´rdenes.
               u                                                  o
El n´mero entre corchetes es el identificador del trabajo y el otro n´mero
     u                                                              u
es 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
                  a
trabajo se usa como argumento de comandos que permiten terminar un
trabajo subordinado (kill); suspenderlo sin terminar (stop); reanudar
en modo subordinado un trabajo suspendido (bg); y pasar un trabajo
de modo subordinado a modo principal (fg). Por ejemplo
$stop %1
suspende el trabajo con el identificador [1], y
$fg %1
reanuda el trabajo en modo principal. (N´tese que se usa el signo %
                                            o
antes de introducir el identificador de trabajo.)
   Para la gesti´n eficiente del sistema, podemos modificar la priori-
                o
dad con la que se ejecutan los procesos haciendo uso de los siguientes
comandos:

at hora orden indica al sistema a qu´ hora se deber´ ejecutar la orden.
                                    e              a

nice 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 UNIX


nohup 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-
                              a
ral, cuando se emplea la palabra unix no se hace una simple referencia al
n´cleo del sistema operativo ni siquiera en sentido amplio, sino al n´cleo
 u                                                                   u
del sistema junto con programas de aplicaciones destinados a crear un
entorno de uso general.

    Lo m´s importante de esta riqueza adicional puede resumirse en la
         a
posibilidad de que varios usuarios usen el computador al mismo tiempo
(cosa que no puede hacerse en un pc bajo dos) y en la posibilidad de
que un usuario haga varias cosas a la vez se˜alando las prioridades que
                                             n
se 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.
                                      a


B.8      Diferencias entre DOS y UNIX
    Aunque dos est´ dise˜ado para sistemas PC monousuario, muchas
                     a      n
de sus caracter´
               ısticas est´n fuertemente influidas por el sistema unix. En
                          a
particular, dos se parece a unix en el dise˜o de su sistema de archivos,
                                            n
int´rprete de comandos y en algunas de las ´rdenes de manipulaci´n de
   e                                          o                     o
archivos. Debido a esto, un usuario familiarizado con las ordenes de dos
                                                            ´
no tendr´ demasiados problemas para comenzar a manejar un sistema
         a
unix, o viceversa.
    La mayor parte de los comandos usuales de dos tienen su contrapar-
tida unix, e incluso tienen nombres muy similares, por ejemplo mkdir
est´ presente en ambos sistemas; la tabla de la figura B.1 muestra la
   a
equivalencia entre la mayor´ de los comandos m´s usuales de dos y
                              ıa                    a
unix.
   Dejando a un lado las caracter´
                                 ısticas multitarea y multiusuario de
222                             ´                   ´
                              Apendice B. Introduccion a UNIX


unix, las diferencias m´s importantes entre dos y unix para la l´
                       a                                        ınea de
comandos 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
            e

acceso                                 MIMD, 96
     directo, 73, 107                    memoria compartida, 96
     secuencial, 73, 107                 memoria distribuida, 97
acciones                               SIMD, 96
     sem´nticas, 142
          a                            sincr´nica, 96
                                             o
acumulador, 78                     ASCII, 46
a
´lgebra relacional, 161            at, 215, 219
algoritmo, 18, 22, 23              atributos, 109, 201
     de Euclides, 27               ATTRIB, 201
an´lisis
   a                               AUTOEXEC.BAT, 196
     l´xico, 142
      e                            awk, 218
     sint´ctico, 142
          a                        ayuda
archivo, 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, 195
arquitectura                       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, 216
bloqueo, 106                 chown, 216
BNF, notaci´n, 132
             o               cinta magn´tica, 73
                                         e
BREAK, 194                   CLS, 190
buffer, 106                   cmp, 219
bus, 61, 63, 74              COBOL, 124, 126
    de control, 63, 75       coma
    de datos, 63, 75             fija, 39
    de direcciones, 63, 75       flotante, 40
byte, 30                     comm, 219
                             COMP, 192
C, 124
                             compactaci´n, 113
                                          o
C++, 131
                             compartici´n, 113
                                         o
c´lculo relacional, 162
 a
                             compilaci´n
                                       o
c´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, 216
c´mputo, 24
 o                           computador, 18
call, 218                    comunicaci´no
camino, 108, 189                 en paralelo, 75
    absoluto, 108                en serie, 75
    relativo, 108            concurrencia de procesos, 105
campo, 151                   CONFIG.SYS, 196
CASE, 164                    conjunto de entidades, 155
cat, 212, 216                consola, 72
CD, 193                      contador de programa, 68
cd, 212, 216                 contrase˜as, 109
                                      n
CHDIR, 193                   copias de seguridad, 108
230                                           ´           ´
                                              Indice alfabetico


coprocesador, 70                       flexible, 73, 74
COPY, 192                              virtual, 203
cp, 212, 217                       dise˜o descendente, 24
                                       n
                                   diskette, 74
DATE, 194                          disquette, 74
date, 218                          DOS, 181
deadlock, 106
debugger, 145                      EBNF, 134
DEL, 192                           ECHO, 195
demand-driven, arquitecturas, 97   echo, 219
demand-paging, 207                 ed, 220
depuraci´n, 27
           o                       editor, 145
    integrada, 147                 EEPROM, 65
depurador, 145                     egrep, 219
diagrama sint´ctico, 134
                 a                 EMM, 202
diccionario de datos, 163          encapsulaci´n, en POO, 129
                                                o
diff, 219                          encauzamiento, 198, 213
DIR, 191                           enlazador, 145
direcci´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, 192
direccionamiento, 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
                                      a
directo, 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                                       231


find, 212, 219              Ingres, 161
finger, 208, 218            instrucciones de m´quina, 78
                                                a
firmware, 196                int´rprete, 144
                               e
floppy, 74                   interactivo, trabajo, 104
FOR, 195                    interfaz de usuario, 111
FORMAT, 190                      de mandatos, 111
formato de un disco, 73          gr´fico, 111
                                   a
FORTRAN, 124                interrupci´n, 94, 109
                                       o
fragmentaci´n
            o                    de hardware, 94
    externa, 112                 de software, 94
    interna, 112
                            jobs, 215, 220
generaci´n de c´digo, 143
        o       o
GOTO, 195                   Kbyte, 31
grep, 219                   kernel, 109
guiones de shell, 214             de unix, 206
                            kill, 215, 220
hardware, 18, 60            kilobyte, 31
herencia, en POO, 130
hojas de c´lculo, 20
          a                 l´piz optico, 71
                             a     ´
                            lenguaje
identificador, 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
                                      a
IEEE-754, 41                     de manipulaci´n de datos, 161
                                                o
IF, 195                          de muy alto nivel, 123
impresora, 72                    de programaci´n, 18, 119
                                                o
incertidumbre, 49                declarativo, 123
indicador                        ensamblador, 122
    del DOS, 194                 relacional, 161
inform´tica, 17
       a                         simb´lico, 121, 123
                                      o
informaci´n, 49
          o                      transportable, 122
    anal´gica, 30
         o                  LIFO, 91
    digital, 30             linker, 1145
Informix, 161               ln, 212, 217
232                                           ´           ´
                                              Indice alfabetico


login, 207                         mkdir, 212
logout, 208                        ML, 126
lote de procesos, 104              modelo
lp, 217                                E-R, 155
ls, 210, 212, 217                      en red, 158
                                       entidad-relaci´n, 155
                                                      o
macroinstrucciones, 122
                                       jer´rquico, 158
                                          a
mail, 217
                                       relacional, 158
mainframe, 116
                                   m´dem, 72
                                     o
man, 212, 218
                                   modo
Mbyte, 31
                                       protegido, 203
MD, 193
                                       real, 203
megabyte, 31
                                       subordinado, 214
megaherzio, 68
                                   Modula-2, 124
memoria, 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, 220
mensaje, en POO, 129               nivel de una B. D.
mesg, 208, 218                         conceptual, 155
MHz, 68                                de visi´n, 155
                                               o
microcomputador, 116                   externo, 155
microinstrucci´n, 84
               o                       f´
                                        ısico, 155
minicomputador, 116                    interno, 155
Miranda, 126                           l´gico, 155
                                        o
MKDIR, 193                         nohup, 216, 220
´           ´
Indice alfabetico                                             233


objeto, en POO, 128               PRINT, 193
octeto, 30                        procesador, 24, 67
optimizaci´n de c´digo, 144
           o     o                    vectorial, 96
Oracle, 161                       procesadores de textos, 20
orden del DOS, 187                procesamiento
    externa, 188                      en paralelo, 95
    interna, 188                      secuencial, 95
overlay, 66                       proceso, 105
                                      por lotes, 104, 195
paginaci´n, 67, 114
         o                        profile, 213
     bajo demanda, 207            programa
palabra de memoria, 31, 62            fuente, 26, 141, 144
pantalla, 71                          gr´fico, 20
                                         a
paquetes integrados, 21               objeto, 26, 141, 144
paradigmas de programaci´n, 124
                         o            traductor, 26
Pascal, 124                           transportable, 121
passwd, 207                       programaci´n, 24
                                              o
PATH, 108, 194                        declarativa, 124
path, 213                             estructurada, 24
PAUSE, 195                            funcional, 125
PC, 181                               imperativa, 124
     AT, 202                          l´gica, 126
                                       o
     XT, 201                          modular, 24
perif´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, 72
permisos, 210                     ps, 220
pila, 91                          puerto
pista, 73                             en paralelo, 75
planificaci´n, 110
           o                          en serie, 75
plotter, 72                       pwd, 212, 217
polimorfismo, en POO, 130
POO, 128                          RAM, 65
234                                           ´           ´
                                              Indice alfabetico


RAM-drive, 203                         axiom´tica, 140
                                              a
rat´n, 71
   o                                   denotacional, 139
RD, 63                                 operacional, 137
RD, 194                           sensores, 71
red, 72                           servidor de red, 72
     local, 72                    SGA, 152
     remota, 72                   SGBD, 152
refinamiento por pasos, 24         shell, 206
registro, 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, 213
reglas sint´cticas, 119
            a                          scripts, 214
relaci´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 operativo
REM, 195                               transaccional, 104
REN, 192                          sist. de gesti´n de archivos, 152
                                                 o
RENAME, 192
                                  sist. de gesti´n de B. D., 152
                                                 o
resta por complementaci´n, 34
                        o
                                  sistema de numeraci´n o
RIM, 63
                                       binario, 33
rm, 212, 217
                                       decimal, 31
RMDIR, 194
                                       hexadecimal, 33
rmdir, 212, 217
                                       octal, 33
ROM, 65
                                       posicional, 31
round-robin, 206
                                       sexagesimal, 31
scheduling, 110                   sistema operativo, 19, 101, 102
sector, 73                             abierto, 116
secuencial, acceso, 73                 de consulta de B. D., 104
sed, 220                               de control de procesos, 104
segmentaci´n, 67, 114, 115
           o                           de prop´sito general, 103
                                                o
segmento, 115                          dedicado, 103
sem´ntica, 119, 137
    a                                  monousuario, 103
´           ´
Indice alfabetico                                        235


     multiusuario, 103      UC, 61, 67
     propietario, 116       UCP, 61, 67
Smalltalk, 131              unidad, 147
software, 19, 60            unidad aritm. y l´gica, 61, 69
                                             o
     de aplicaciones, 20    unidad central de proceso, 61, 69
solapamiento, 66            unidad de control, 61, 67
SORT, 199                   uniq, 219
sort, 219                   UNIX, 205
SQL, 161
stop, 215, 220              v´
                             ınculo, 209
streamer, 73                    especial, 210
subordinado, modo, 214          simb´lico, 209
                                     o
subprograma, 93             VER, 194
subrutina, 93               VERIFY, 194
swapping, 207               vi, 220
                            VLSI, 174
tabla de seguimiento, 146
tableta gr´fica, 71
           a                wall, 218
tail, 219                   wc, 219
talk, 218                   who, 208, 218
teclado, 71                 write, 218
tee, 220                    zcat, 217
TIME, 194
time, 220
tokens, 119, 142
traductor, 141
transmisi´n
          o
     en paralelo, 75
     en serie, 75
traza de un programa, 146
TREE, 193
tubos, 198
Turbo Pascal, 131
TYPE, 192

UAL, 61

Más contenido relacionado

PDF
Garbarino
PDF
Manual excitador-vaca
PDF
Econometria aplicada con gretl
PDF
Curso logica digital unam
PDF
Gretl guide-es[1]
PDF
M´etodos num´ericos
PDF
PDF
Desarrollo de un Sistema de Juego Ubicuo bajo Plataforma Android
Garbarino
Manual excitador-vaca
Econometria aplicada con gretl
Curso logica digital unam
Gretl guide-es[1]
M´etodos num´ericos
Desarrollo de un Sistema de Juego Ubicuo bajo Plataforma Android

La actualidad más candente (10)

PDF
Guia de matematicas
PDF
Modulo fisica-i1
PDF
Diseño canónico control automatico
PDF
Fundamentos de-calculo
PDF
Librotmed
PDF
Metodologia Hefesto - Business Intelligence
PDF
Datawarehouse hefesto
PDF
PDF
Arduino Manual de Usuario
Guia de matematicas
Modulo fisica-i1
Diseño canónico control automatico
Fundamentos de-calculo
Librotmed
Metodologia Hefesto - Business Intelligence
Datawarehouse hefesto
Arduino Manual de Usuario
Publicidad

Destacado (10)

PPTX
Eia tia
PPTX
Anali riesgos
PPT
Panorama de las TIC, Consejos desde la Experiencia
DOCX
Luisa redes 2lu
PDF
"MIRALO"
DOCX
Ponencia
PPTX
Como conectar dos equipos
PPTX
Modena comple
PPTX
Historia de la informatica
DOCX
Historia de las computadoras
Eia tia
Anali riesgos
Panorama de las TIC, Consejos desde la Experiencia
Luisa redes 2lu
"MIRALO"
Ponencia
Como conectar dos equipos
Modena comple
Historia de la informatica
Historia de las computadoras
Publicidad

Similar a Librocompleto (20)

PDF
Algoritmos
PDF
Manual dr geo
PDF
Teoriapto
PDF
Rarepaso
PDF
Ec.pdf
PDF
Vba excel numericos
PDF
Vba excel mnumericos
PDF
Vba excel mnumericos1
PDF
Gulp 0.11
PDF
Redestelecomunicacion
PDF
Diseño Robusto y Multiobjetivos de Sistemas
PDF
PDF
Intro progvb
PDF
Linux benchmarking como
PDF
Introduccion a la programacion en c prev
PDF
Guia rapida
PDF
Java a tope
PDF
Curso de html y phpnuke
Algoritmos
Manual dr geo
Teoriapto
Rarepaso
Ec.pdf
Vba excel numericos
Vba excel mnumericos
Vba excel mnumericos1
Gulp 0.11
Redestelecomunicacion
Diseño Robusto y Multiobjetivos de Sistemas
Intro progvb
Linux benchmarking como
Introduccion a la programacion en c prev
Guia rapida
Java a tope
Curso de html y phpnuke

Librocompleto

  • 1. ´ Cristobal Pareja ´ Angel Andeyro Manuel Ojeda Introducci´n a la Inform´tica o a I. Aspectos generales
  • 2. 1a Edici´n o Febrero 1994 c Crist´bal Pareja o ´ Angel Andeyro Manuel Ojeda ISBN: 84-7491-489-2 Dep´sito Legal: M-7713-94 o
  • 3. ´ Indice General Presentaci´n o 11 1 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 . . . . . . . . . . . . . 28 2 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
  • 4. 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 . . . . . . . . 57 3 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 . 99 4 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
  • 5. ´ 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 . . . . . . . . . . . 117 5 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 . . . . . . . 149 6 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
  • 6. 8 ´ Indice general 6.7 Comentarios bibliogr´ficos . . . . . . . . . . . . . . . . . . 165 a 7 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 . . . . . . 179 A 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
  • 7. ´ Indice general 9 B 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
  • 8. Presentaci´n o Hay muchos y excelentes libros sobre inform´tica en un nivel intro- a ductorio, con diversos enfoques y escritos en nuestra lengua. Muchos de ellos est´n dirigidos a futuros inform´ticos, por lo que resultan, quiz´, a a a demasiado profundos para quienes s´lo persiguen aplicar la inform´tica o a en 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 a sos aspectos de la inform´tica, sin detenerse a analizar las implicaciones a pr´cticas de esos aspectos. a Este libro se sit´a entre ambos extremos, ofreciendo un medio para u introducir en la inform´tica a profesionales de otros campos que, sin em- a bargo, necesiten aplicar adecuadamente los computadores en su trabajo, poniendo en marcha programas de aplicaci´n o manejando bancos de o datos 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 a enfoque pr´ctico lo que mejor distinga a este texto de otros de intro- a ducci´n a la inform´tica, que adolecen muchas veces de contenidos muy o a extensos y te´ricos, casi enciclop´dicos, en los que es dif´ diferenciar o e ıcil los conocimientos utiles en general de aqu´llos que s´lo encontrar´n de ´ e o a utilidad inform´ticos profesionales. a Por lo tanto, este libro se dirige a quienes necesiten una formaci´no introductoria en inform´tica, con un enfoque b´sico y pr´ctico, pero rigu- a a a roso. Entre ellos se encuentran, en primer lugar, todos aquellos alumnos
  • 9. 12 ´ Presentacion de los primeros cursos universitarios que cuenten con asignaturas sobre inform´tica, tanto si se utiliza como herramienta aplicada a la resoluci´n a o de problemas como si es el propio objeto de estudio. Este libro se dirige asimismo a aquellas personas que, de una u otra forma, est´n relacionadas con el mundo de la inform´tica (operadores, a a comerciales, empresarios, etc.) y, sin embargo, ignoran lo que se esconde tras la fachada de un computador (c´mo se almacena la informaci´n, o o cu´les son los procesos que se est´n ejecutando en su interior, etc.) y a a que 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- ´ e putadores que est´n interesados en conocer mejor su herramienta de e trabajo, en saber qu´ estan haciendo y por qu´ lo hacen. El desarrollo e e y abaratamiento de los sistemas inform´ticos hace que computadores a de gran potencia que antes s´lo se encontraban en grandes centros de o c´lculo, atendidos por administradores de sistemas cualificados y dedi- a cados por completo a dicha tarea, est´n hoy sobre nuestra mesa, y que el e usuario 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 ıa siquiera una peque˜a parte de su tiempo a conocer los principios b´sicos n a de funcionamiento y gesti´n de su computador. o A todos ellos, este texto les ofrece la posibilidad de adquirir esos conocimientos, partiendo de cero, o de actualizarlos. Se ha seleccionado el contenido partiendo de las directrices se˜aladas n en [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 o profesional 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 a desarrollo 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
  • 10. ´ Presentacion 13 de los primeros cursos universitarios, y tambi´n interesan esas dos par- e tes a los profesionales que usen la inform´tica como una herramienta y a deseen sacar partido de ella. El presente texto comprende dos vol´menes, complementarios, dedi- u cados respectivamente a esas dos partes, separando as´ la presentaci´n ı o de los conceptos generales y el desarrollo y organizaci´n de algoritmos o y estructuras de datos. En la primera parte, el enfoque pr´ctico nos a ha llevado a relacionar los contenidos estudiados con sus repercusiones pr´cticas o su utilizaci´n. En la segunda, se ha unificado el estudio de a o los 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 a computadores y de su uso en la actualidad: bien poniendo en marcha aplicaciones ya desarrolladas y adapt´ndolas a nuestras necesidades, o a preparando soluciones para problemas nuevos. Se presentan asimismo las primeras aproximaciones a los conceptos de algoritmo, programaci´n o y lenguajes de programaci´n. o En el cap´ ıtulo 2 se aborda la representaci´n digital de la informaci´n. o o Conociendo las distintas formas de representaci´n, el programador podr´ o a elegir 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 o espacio que ocupa y las circunstancias en que los resultados podr´ noıan ser del todo fiables. El cap´ıtulo 3 est´ dedicado al aspecto f´ a ısico de los computadores y sus perif´ricos. Se explica su funcionamiento introduciendo los lenguajes e de bajo nivel, y se comentan brevemente las arquitecturas orientadas al procesamiento en paralelo. En el cap´ ıtulo 4 se estudian los conceptos b´sicos para entender lo a que son los sistemas operativos, cu´les son sus funciones y c´mo las a o llevan a cabo. El cap´ ıtulo 5 se dedica a los lenguajes de programaci´n, en espe- o
  • 11. 14 ´ Presentacion cial 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 n introducen 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 distintos tipos de traductores y los entornos de programaci´n. o El cap´ ıtulo 6 trata sobre las bases de datos, una de las aplicaciones de mayor aplicaci´n en el mundo empresarial. Entre los modelos des- o arrollados, destacamos el relacional y, entre los lenguajes de consulta, el SQL, 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 u tema al principio, hemos preferido estudiarlo una vez que se conocen los conceptos y la terminolog´ b´sicos. De esta forma mejora la com- ıa a prensi´n del cap´ o ıtulo y puede valorarse en su justa medida cada uno de los logros hist´ricos que en ´l se recogen. o e Debido al enfoque pr´ctico que perseguimos con este libro, se inclu- a yen dos ap´ndices dedicados a introducir en el manejo de dos sistemas e operativos concretos de gran difusi´n en la actualidad: el DOS y el o UNIX. El hecho de traer aqu´ estos anexos responde a dos razones: por ı un lado, conocer las caracter´ ısticas de cada sistema interesa al estudiante como un ejemplo particular del cap´ ıtulo 4, permitiendo ver c´mo se lleva o a 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 o o mecanismos m´s inmediatos que necesitar´ sin duda para empezar a a a desenvolverse en el entorno de esos sistemas operativos. En la mayor´ de los cap´ ıa ıtulos, se ha incluido una peque˜a colecci´n n o de 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 bien para profundizar en el tema.
  • 12. ´ Presentacion 15 Agradecimientos En primer lugar, es inexcusable agradecer a la Editorial la confianza que ha puesto en nosotros al aceptar una publicaci´n sobre un tema en o el 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 e compa˜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´ Angeles Medina S´nchez, Salvador Paz Mart´ a ınez, Inma P´rez de Guzm´n Mo- e a lina y Marisol Timoneda Salinas, y tambi´n a todos aquellos alumnos e que, repetidamente, nos han sugerido la compilaci´n de unos apuntes de o clase. Durante la redacci´n de este trabajo, se han recogido numerosas opi- o niones y sugerencias. En particular, debemos agraceder las minuciosas revisiones 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 ıguez Iglesias. Finalmente, quisi´ramos pedir la colaboraci´n de los lectores para e o subsanar las posibles deficiencias que encuentren.
  • 13. Cap´ ıtulo 1 Conceptos 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 o general del contenido del libro, presentando los conceptos generales y los t´rminos m´s usados en inform´tica. Esta primera aproximaci´n e a a o nos permite situar cada uno de los temas siguientes en relaci´n con los o dem´s, y dentro del contexto de la inform´tica. a a 1.1 Inform´tica a La inform´tica es la ciencia que estudia el procesamiento autom´tico a a de la informaci´n. Aunque la necesidad de razonar sobre este tipo de o procesos existe desde tiempo atr´s, la consolidaci´n de la inform´tica a o a como ciencia s´lo se produce con el desarrollo de los computadores, a o partir de los a˜os cuarenta. Se trata, por lo tanto, de una ciencia muy n joven, pero que ha evolucionado a gran velocidad.
  • 14. 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 a eficacia en muy diversos trabajos, y en particular en aqu´llos que ma- e nejan un gran volumen de datos o de operaciones. Esta versatilidad tiene dos aspectos: por un lado, es posible usarlo como herramienta para aplicaciones concretas ya desarrolladas (1.4), y por otro se pue- den dise˜ar soluciones a la medida de problemas nuevos, mediante la n programaci´n (1.5). o El desarrollo de un programa nuevo para resolver un determinado problema requiere, por una parte, conocer alg´n procedimiento siste- u m´tico (algoritmo) que lleve a su soluci´n, y por otra, la necesidad de a o expresarlo en un lenguaje de programaci´n que el computador pueda o comprender y ejecutar. 1.2 Computador Un computador es una m´quina electr´nica que procesa informaci´n a o o siguiendo 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 o donde la env´ Tiene dispositivos que le permiten almacenar la infor- ıa. maci´n (los datos, los resultados y el propio programa) y procesarla o siguiendo las instrucciones del programa. La informaci´n que se procesa en el computador (programas, da- o tos y resultados) est´ expresada en forma digital binaria, combinando a ceros y unos. En consecuencia, tanto los programas como los datos y resultados deben codificarse en este formato para poder ser procesados. Una vez obtenidos los resultados, ´stos tienen que ser decodificados para e mostrarlos al usuario. Como hemos visto, un computador se compone de dos partes cla- ramente diferenciadas: una f´ ısica, que podemos tocar, constituida por circuitos electr´nicos, teclado, pantalla, unidades de disco, etc., llamado o hardware, o en castellano soporte f´ ısico, y otra parte inmaterial, que no
  • 15. 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 software en ingl´s y soporte l´gico en castellano. Ambas partes est´n ´ e o a ıntimamente relacionadas 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 que entra en funcionamiento es el sistema operativo, que gestiona y coordina los dos aspectos, f´ ısico y l´gico, del computador. Se trata de un conjunto o de programas que se interrelacionan estrechamente con el hardware, ges- tionando los procesos en ejecuci´n, las operaciones de entrada y salida y o la memoria. Por ello, resulta imprescindible para el funcionamiento del computador. Los dem´s programas funcionan sobre el sistema operativo, y son a gestionados por ´l. Entre ellos, se encuentran las herramientas para e el desarrollo de programas (tales como los editores y traductores de lenguajes), y tambi´n los programas de aplicaciones. e Por lo tanto, podemos decir que dentro del computador existe cierta organizaci´n por niveles (v´ase la tabla 1.1): en el nivel m´s bajo se o e a encuentra 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 e los otros programas, que a su vez se relacionan directamente con el usuario. 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 a virtual, tremendamente vers´til. a
  • 16. 20 Cap´ ´ ıtulo 1. Conceptos Basicos 1.4 Aplicaciones El software de aplicaciones est´ formado por aquellos programas que a han sido desarrollados para realizar tareas concretas. Se llama as´ por- ı que el computador “se aplica” a un trabajo determinado, facilitando su ejecuci´n y resoluci´n. Por ejemplo, un procesador de textos, una hoja o o de c´lculo, un gestor de bases de datos, un generador de gr´ficos, un a a programa 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 son los programas matem´ticos, estad´ a ısticos, de CAD (Dise˜o Asistido por n Computador), aplicaciones contables y de gesti´n de empresas, comuni- o caciones, juegos, etc.
  • 17. 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 a mil aplicaciones diferentes). A su vez, los distintos programas van evo- lucionando, y aparecen nuevas versiones con m´s posibilidades y mayor a velocidad de ejecuci´n, aunque tambi´n con mayor demanda de potencia o e y 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 a gr´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 o mayor o menor medida, de acuerdo con los gustos y necesidades del usuario; sin embargo, es posible que un programa concreto no pueda atender esas necesidades. En este caso, resulta muy dif´ por no decir ıcil, imposible (e ilegal en muchos casos), modificar el programa para incluir una nueva tarea. Conscientes de esta falta de flexibilidad del software, muchos fabricantes est´n presentando programas de aplicaci´n que a a o su vez pueden ser programados, mediante lenguajes de programaci´n o propios o est´ndares. a As´ pues, aunque la mayor´ de las personas que utilizan los compu- ı ıa tadores trabajan con programas de aplicaci´n y no necesitan recurrir a o la programaci´n, tambi´n hay un buen n´mero de usuarios que, sin ser o e u inform´ticos profesionales, pueden obtener un mayor rendimiento de es- a tos programas a trav´s de la programaci´n. Por ejemplo, muchas hojas e o de c´lculo, gestores de bases de datos y paquetes matem´ticos, hoy en a a d´ son programables. ıa, 1.5 Algoritmos y programas El desarrollo de programas es otro de los aspectos fundamentales de la utilizaci´n de los computadores porque continuamente aparecen o nuevos problemas o tareas susceptibles de ser procesados de forma au- tom´tica. Al mismo tiempo se van detectando las lagunas o deficiencias a en las aplicaciones existentes, lo que impulsa a su renovaci´n con la o
  • 18. 22 Cap´ ´ ıtulo 1. Conceptos Basicos creaci´n de nuevas versiones de los programas existentes. El desarrollo o del hardware posibilita tambi´n la aparici´n de nuevas aplicaciones m´s e o a potentes y con mayores demandas de recursos. Desde el planteamiento de un problema hasta la obtenci´n de su o soluci´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
  • 19. 1.5. Algoritmos y programas 23 diversa, desde los problemas m´s inmediatos relacionados con la pro- a pia subsistencia, hasta los problemas m´s abstractos de naturaleza ma- a tem´tica o filos´fica. a o Un algoritmo es la descripci´n precisa de los pasos que nos permiten o obtener la soluci´n de un problema determinado. En general, los pa- o sos son acciones u operaciones que se efect´ an sobre ciertos objetos. Al u comienzo del algoritmo, los objetos tienen unos valores iniciales (los da- tos) que var´ como consecuencia del proceso descrito por el algoritmo, ıan obteni´ndose los valores de salida o resultados. e La inform´tica estudia el procesamiento de la informaci´n mediante a o algoritmos, aunque el concepto de algoritmo, que proviene de las ma- tem´ticas, es muy anterior e independiente de la existencia de la in- a form´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 o computador; si no se conoce el algoritmo para resolver un problema, no puede plantearse su resoluci´n en el computador. o Aunque existen algoritmos registrados para la realizaci´n de tareas o muy variadas, en general los algoritmos desarrollados resuelven s´lo de- o terminadas partes de un problema como, por ejemplo, la ordenaci´n de o una 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 a de sus datos iniciales, del proceso que se les aplica y de los resultados esperados. A partir de este an´lisis debe establecerse cu´l es la mejor a a estructura de datos para resolver el problema. De hecho, Niklaus Wirth, uno de los padres de la programaci´n estructurada, titula una de sus o obras 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 u naturales, debido a Euclides, que data del siglo IV a.C., al que se conoce como el “abuelo” de todos los algoritmos.
  • 20. 24 Cap´ ´ ıtulo 1. Conceptos Basicos Existen t´cnicas que facilitan el dise˜o de algoritmos, tales como la e n programaci´n estructurada, la programaci´n modular, el refinamiento o o por pasos, el dise˜o descendente y la estructuraci´n y abstracci´n de los n o o datos. Para poder expresar algoritmos se utilizan lenguajes con la necesaria precisi´n, llamados lenguajes algor´ o ıtmicos, que son independientes de los lenguajes de programaci´n. Los m´s utilizados son el seudoc´digo y los o a o diagramas 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 o de entrada, y ejecutar las acciones descritas en el algoritmo. Al proceso de ejecutar un algoritmo concreto para unos datos determinados se le llama c´mputo, de donde procede el t´rmino computador. El procesador o e es quien ejecuta materialmente el c´mputo. o 1.5.2 Programaci´n o Como dec´ ıamos al principio, consideramos al computador como una herramienta que nos ayuda en la resoluci´n de problemas; para ello es o preciso conocer previamente un algoritmo que lleve a su soluci´n. A o continuaci´n hay que expresar el algoritmo en un lenguaje de progra- o maci´n, que pueda ser comprendido y ejecutado por el computador, o desarroll´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 o correcci´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
  • 21. 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 a del sector de producci´n de software, ha hecho que se apliquen a la pro- o gramaci´n t´cnicas de ingenier´ que garanticen la viabilidad y calidad o e ıa de los grandes proyectos de aplicaciones, lo que se conoce como inge- nier´ del software. ıa 1.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 reconocerlas mejor y evitar errores se les asignan unos nombres mnemot´cnicos que e permiten recordar sus funciones. Estas instrucciones constituyen el len- guaje de m´quina del computador, y suelen ser diferentes en funci´n del a o fabricante del procesador. El lenguaje de m´quina es ejecutado a gran velocidad por el procesa- a dor, en los computadores actuales esta velocidad se mide en millones de operaciones por segundo; por otra parte, el lenguaje de m´quina permite a el acceso directo a todos los ´rganos del computador. Por estos motivos o el lenguaje m´quina es insustituible en aquellas aplicaciones donde sea a necesaria una gran rapidez de ejecuci´n, o el acceso directo a ciertos o o ´rganos del computador. Las instrucciones del lenguaje de m´quina son en general muy poco a potentes, operan sobre datos de peque˜o tama˜o, y en muchos casos no n n incluyen ni multiplicaciones ni divisiones. Para poder operar sobre da- tos mayores o realizar operaciones m´s complejas, tales como potencias a o logaritmos, hay que fraccionar los datos y aplicar sucesivamente las operaciones 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 a les llama lenguajes de bajo nivel . En consecuencia, la tarea de escribir
  • 22. 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 o programas en lenguaje de m´quina es tediosa y est´ sujeta a muchos a a errores. Ante la necesidad de escribir programas cada vez m´s complejos y a fiables, los inform´ticos desarrollaron lenguajes con niveles m´s elevados a a de abstracci´n, que inclu´ operaciones y datos m´s complejos a los o ıan a que llamaron lenguajes de alto nivel. De esta forma se acorta el camino entre el algoritmo y su expresi´n en forma de programa, porque los o lenguajes de alto nivel pueden expresar mejor las acciones y objetos que intervienen 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) o al lenguaje de m´quina (programa objeto) que, como recordamos, es el a unico que puede ser ejecutado por el computador, es autom´tica y se ´ a realiza 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 o Durante el proceso de traducci´n se suelen detectar errores, debidos al o
  • 23. 1.6. Ejercicios 27 incumplimiento de las reglas sint´cticas del lenguaje o a causas m´s suti- a a les, que deben corregirse antes de poder ejecutar el programa. Si durante la ejecuci´n de un programa se realizan operaciones no permitidas (tales o como divisiones por cero, accesos fuera de l´ ımites, . . . ) se producen los llamados errores de ejecuci´n. o Aunque un programa se haya traducido eliminando todos los errores sint´cticos y de ejecuci´n, a´n puede no realizar correctamente la tarea a o u para la que fue creado, por contener errores l´gicos. Por lo tanto es o necesario comprobar el funcionamiento del programa utilizando datos de 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 a depuraci´n de los programas. o En la actualidad la mayor´ de los programas se escriben en lengua- ıa jes de alto nivel, reserv´ndose los lenguajes de bajo nivel para aquellas a aplicaciones donde se necesite una elevada velocidad o un acceso directo a los ´rganos del computador; por ejemplo, en los programas traductores o o en programas de gesti´n del computador. o 1.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
  • 24. 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 a se pueden recomendar con car´cter general. Aun ci˜´ndonos a los escritos en a ne castellano o traducidos, existen bastantes textos excelentes sobre el tema, con diversos enfoques. En [GL86] encontramos un panorama general sobre inform´tica en el que se a utiliza como tema unificador el concepto de algoritmo, que sus autores juzgan como el concepto central de la computaci´n. Se trata de un texto apropiado o para el principiante y de lectura amena. El libro de Bishop ([Bis91]) es tambi´n e un libro muy asequible de introducci´n en inform´tica. o a [PLT89] trata con gran detalle la estructura f´ ısica de los computadores, por lo 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-o cos de la inform´tica (la teor´ de algoritmos, la l´gica y la teor´ de aut´matas a ıa o ıa o y lenguajes formales). Por ultimo, puesto que la inform´tica es una ciencia reciente, cuenta con ´ a muchos vocablos nuevos, en su mayor´ anglicismos, que muchas veces se em- ıa plean 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
  • 25. Cap´ ıtulo 2 Representaci´n digital de o la 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 o persigue dos objetivos: en primer lugar, procesarla, permitiendo su ma- nipulaci´n eficiente, para lo cual se han ideado diferentes convenios, de o los que veremos los m´s importantes; y en segundo, asegurarla contra a errores durante su almacenamiento o durante las transmisiones, lo que se consigue incorporando en la codificaci´n el empleo de la redundancia o para detectar y corregir dichos errores. 2.1 Conceptos previos 2.1.1 Informaci´n anal´gica y digital o o Las magnitudes continuas son las que pueden adoptar los infinitos valores de un intervalo de n´meros reales, tales como la longitud de un u segmento, velocidad, temperatura, intensidad de un sonido, etc.
  • 26. 30 Cap´ ´ ´ ıtulo 2. Representacion de la informacion Las magnitudes discretas tienen naturaleza discontinua, tales como la longitud (n´mero de s´ u ılabas) de una palabra, capacidad (n´mero de u pasajeros) de un veh´ ıculo, etc. En la pr´ctica, es frecuente que las magnitudes continuas sean trata- a das como discretas: el peso de una persona (que se redondea en kilos); la temperatura (en grados y d´cimas de grado); la longitud de un segmento, e medida 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 o anal´gica, que es de naturaleza continua, pudiendo tomar infinitos valo- o res; y la informaci´n digital, que es de naturaleza discreta. Aunque esta o ultima 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 o un 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 o el monitor de un ordenador, supone el ajuste de la imagen proyectada sobre 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- o maci´n. Para poder hablar con propiedad de este procesamiento, debe- o mos definir unidades de medida que nos permitan cuantificar de alg´n u modo la acci´n del computador sobre la informaci´n suministrada. Con- o o sideramos 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.
  • 27. 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. o 2.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 o a ´ngulos, el sistema de numeraci´n m´s difundido en la actualidad es sin o a duda el sistema decimal posicional, o sistema ar´bigo-hind´, inventado a u hacia el siglo VIII. Por otra parte, en el contexto de la inform´tica se usan frecuente- a mente sistemas de numeraci´n posicional en bases tales como 2 (ya que o el bit tiene dos posiciones), 16 (como compactaci´n de palabras de 4 o bits), etc. Para aprender a manejarlos, se recurre frecuentemente a la analog´ ıa con el sistema de numeraci´n m´s conocido: el de base 10. Se llama o a decimal porque cada cifra o d´ ıgito puede tomar diez posibles valores: del 0 al 9; se llama posicional porque el valor real de cada d´ ıgito depende de su posici´n. o 10475 = 1 ∗ 104 + 0 ∗ 103 + 4 ∗ 102 + 7 ∗ 101 + 5 ∗ 100 A la cantidad 10 se le llama base; las potencias de 10 son los pesos asociados a cada posici´n, y los factores o coeficientes de cada peso son o las cifras de la representaci´n. Tambi´n se podr´ haber representado o e ıa en forma polin´mica del siguiente modo: o 10475 = 1 ∗ 104 + 0 ∗ 103 + 47 ∗ 101 + 5 ∗ 100
  • 28. 32 Cap´ ´ ´ ıtulo 2. Representacion de la informacion pero 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 o demostraci´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 o N positivo tiene una unica representaci´n de la forma ´ o N = cp bp + cp−1 bp−1 + . . . + c1 b1 + c0 b0 donde 0 ≤ ci < b para todo i = 0, 1, . . . , p Conversi´n entre sistemas o En primer lugar, la expresi´n decimal de un n´mero de cifras cp . . . c0 o u en base b se obtiene sencillamente sumando los valores reales correspon- dientes a los diferentes d´ ıgitos: [cp . . . c0 ](b = cp ∗ bp + . . . + c0 ∗ b0 Por 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 u 5, equivale a expresarlo en forma polin´mica con las sucesivas potencias o de 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
  • 29. 2.1. Conceptos previos 33 Sistemas de numeraci´n m´s usuales o a El sistema m´s empleado en electr´nica digital es el de base 2, lla- a o mado binario (natural). En inform´tica tienen inter´s los sistemas cuya a e base es una potencia de dos: 2, 4, 8, 16. La siguiente tabla recoge los primeros n´meros naturales, expresados en algunos de esos sistemas y u en 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 11 En el sistema hexadecimal se usan los d´ ıgitos 0, . . . , 9, A, . . . F para las cantidades cero, . . . , nueve, diez, . . . , quince respectivamente. As´ por ı ejemplo, C7A(16 = 12 ∗ 162 + 7 ∗ 161 + 10 ∗ 160 = 3194(10 , ya que los valores 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 poder componer C combinaciones distintas se necesita disponer de un n´mero u de cifras igual a logb C, redondeado por exceso. Como consecuencia de lo anterior, cuanto mayor sea la base adoptada se pueden expresar m´s cantidades (combinaciones) para un n´mero fijo a u de cifras; inversamente, cuanto mayor sea la base, es posible usar menos cifras para expresar una misma cantidad.
  • 30. 34 Cap´ ´ ´ ıtulo 2. Representacion de la informacion Observaci´n o La conversi´n de binario en octal o en hexadecimal se puede abreviar o del 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? e Operaciones aritm´ticas en base dos e Para las operaciones elementales se usan las tablas correspondientes a la base de que se trate. Por ejemplo, para el caso binario la tabla de sumar es la siguiente: + 0 1 0 0 1 1 1 10 Y entonces, son v´lidas las reglas conocidas para las operaciones en base a diez. 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 e lugar 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 u y viceversa), suprimiendo la cifra excedente, posiblemente aparecida por el arrastre, y sumando una unidad al resultado obtenido: 100101 100101 − 11011 → + 100100 1001001 → 001010
  • 31. ´ 2.2. Representacion digital de los datos 35 2.2 Representaci´n digital de los datos o En los sistemas digitales, no resulta viable dar una representaci´n o v´lida para codificar todos los n´meros; por otra parte, los diversos a u sistemas empleados dan diferentes tratamientos a n´meros tan usuales u como el uno (seg´n se considere como real o como entero). Estudiaremos u diversos convenios para diferentes conjuntos de n´meros, as´ como sus u ı limitaciones. En este apartado, supondremos que disponemos de un espacio de N bits, con lo que es posible representar 2N enteros distintos. 2.2.1 Representaci´n de los n´ meros enteros o u N´ meros enteros positivos u Si se considera unicamente n´meros enteros positivos, con N bits de ´ u espacio ser´ posible representar los n´meros de 0 a 2N −1. La forma m´s ıa u a natural de lograrlo consiste en interpretar cada combinaci´n mediante o la 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 u N´ meros enteros con signo. Convenio del signo-magnitud u Para representar los n´meros enteros (con signo), el sistema m´s u a simple 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- e dades del mismo signo y la resta de cantidades de distinto signo siguen la regla b´sica en binario. Para sumar cantidades de distinto signo, o a restar cantidades del mismo signo, resulta m´s pr´ctico el m´todo del a a e complemento.
  • 32. 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 o sistema debe tenerlo en cuenta. Por otra parte, la suma/resta de signos y valores absolutos necesita dos algoritmos distintos, que no resultan muy eficientes. Los siguientes sistemas surgen precisamente para tratar de 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 palabras de N = 2 d´ ıgitos (decimales), es posible representar 102 = 100 canti- dades distintas. En este convenio se opta por considerar los n´meros u negativos de {−49, . . . , −0}, y los positivos de {0, . . . , 49}, del siguiente modo: los n´meros positivos se representan en decimal natural, mientras u que para cada negativo −z se toma la cantidad 99 − z (complemento de z 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, 49 se 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 dos n´meros, sea cual fuere su signo, se lleva a cabo con un mismo algoritmo, u que s´lo se diferencia de la suma de enteros en que el posible arrastre se o agrega al resultado final: + 23 → 2 3 + − 15 → + 8 4 +1 1 0 7 → 0 8
  • 33. ´ 2.2. Representacion digital de los datos 37 Consideremos ahora esta representaci´n con palabras de N = 4 d´ o ıgitos binarios: las cantidades representables son −7, −6, . . . , −0, +0, . . . , +6, +7 → −111(2 , −110(2 , . . . , −0(2 , +0(2 , . . . , +110(2 , +111(2 que, al complementar las negativas respecto de 1111, resulta: → 1000, 1001, . . . , 1111, 0000, . . . , 0110, 0111 N´ 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 e considerar los n´meros negativos de {−50, . . . , −1}, y los positivos de u {0, . . . , 49}, del siguiente modo: los n´meros positivos se representan en u binario natural, mientras que para cada negativo −z se toma la cantidad 100 − 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 complementar los n´meros negativos, consistente en a˜adir una unidad al correspon- u n diente 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 a cero se representa de un unico modo. ´
  • 34. 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(2 que, 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- e ritmo, igual al usado para el complemento restringido, pero ignorando la posible cifra de arrastre: + 23 → 2 3 + − 15 → + 8 5 1 0 8 → 0 8 Funcionamiento de las operaciones aritm´ticas e Debe subrayarse que las operaciones anteriores no coinciden con las aritm´ticas, debido a la posibilidad de que se produzca un desborda- e miento; 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 o tanto, es necesario prever esta posibilidad y conocer de qu´ modo re- e acciona nuestro sistema. Sobre este asunto volveremos m´s adelante, a dentro 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- a mento aut´ntico en base dos, llamado simplemente complemento a dos. e Ahora bien, depender´ de la longitud de palabra la cantidad de com- a binaciones posibles y, por tanto, el rango de enteros considerado. Por otra parte, aunque ciertos sistemas trabajan con palabras de longitud variable, lo corriente es optar por uno o varios formatos con tama˜o fijo: n simple (1 byte), doble (2 bytes), cu´druple (4 bytes) u octuple (8 bytes). a ´
  • 35. ´ 2.2. Representacion digital de los datos 39 2.2.2 Representaci´n de los n´ meros reales o u Debe resaltarse que, en general, s´lo resulta posible representar apro- o ximaciones de los n´meros reales mediante n´meros decimales, con s´lo u u o unas pocas cifras significativas. En el siguiente apartado estudiaremos los efectos de este redondeo. En este apartado, supondremos que disponemos de un espacio de N bits, 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 u real, la caracter´ ıstica principal de este convenio es la reserva impl´ ıcita de algunos bits fijos para la parte decimal, asumi´ndose la coma en una e posici´n fija. A su vez, existen los siguientes modos de representaci´n o o en 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.
  • 36. 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 o demos representar cantidades decimales m´ ltiplos enteros de 0 001(2 = u 2−3 = 0 125(10 . Como trunc(−2 8 ∗ 8) = trunc(−22 4) = −22, repre- (10 sentamos −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 u cantidad 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(2 Convenios con coma flotante El principal inconveniente de la coma fija consiste en condicionar el orden de magnitud de las cantidades codificadas. Un sistema m´s a general deber´ adaptarse a ordenes tan distantes como los de la masa de a ´
  • 37. ´ 2.2. Representacion digital de los datos 41 la tierra y la del atomo. El sistema m´s conocido con esta caracter´ ´ a ıstica es 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 o mantisa (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 o de reales m´s utilizadas. Su representaci´n requiere un total de 32 bits, a o de los cuales un bit se utiliza para el signo, 8 bits para el exponente y 23 bits para la mantisa. Este convenio en concreto, utiliza un truco llamado bit oculto: como el bit m´s significativo de la mantisa es un 1, a ahorramos un bit simplemente asumi´ndolo. Se logra as´ espacio para e ı una mantisa de 24 d´ ıgitos significativos. El inconveniente de emplear un bit oculto consiste en que se requiere una representaci´n especial para o el cero.
  • 38. 42 Cap´ ´ ´ ıtulo 2. Representacion de la informacion 2.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 a sos en sistemas finitos, s´lo pueden representar una cantidad finita de o elementos distintos. Esta limitaci´n resulta cr´ o ıtica a la hora de repre- sentar elementos pertenecientes a conjuntos infinitos, como son los de los n´meros enteros o reales. Como consecuencia, pueden producirse u situaciones de error no deseables, por lo cual se hace necesario estudiar el 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 n de la representaci´n. As´ cuando surge la codificaci´n de n´meros fuera o ı, o u del rango considerado, se produce el llamado desbordamiento (overflow en ingl´s). e Por ejemplo, en una representaci´n con 4 bits ser´n posibles 16 con- o a figuraciones. Si optamos por el convenio de complementaci´n aut´ntica, o e el 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 sistema de complementaci´n aut´ntica para una representaci´n de n bits se puede o e o describir as´ llamemos x e y a la representaci´n de x e y, y + y − a las ı: o operaciones 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- o rar tipos de datos correspondientes a rangos de enteros m´s amplios a
  • 39. ´ 2.2. Representacion digital de los datos 43 (por ejemplo, duplicando la longitud de palabra de la representaci´n), o pudiendo as´ manipular con seguridad enteros de mayor orden. As´ ı ı por ejemplo, el c´lculo de 8! desbordar´ un sistema de complemento a a aut´ntico con 16 d´ e ıgitos, resultando en cambio correcto para palabras m´s largas. En ocasiones, el programador tiene la posibilidad de cam- a biar de estrategia para evitar el desbordamiento. Por ejemplo, el c´lculo a 8 8! 8∗7∗6 de 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 u que el segundo nos permite eludir en cierta medida el error por desbor- damiento. Por otra parte, muchos de los lenguajes que se comercializan en la actualidad ofrecen la opci´n de verificar o no los desbordamientos que o puedan producirse durante la ejecuci´n, para que los consiguientes erro- o res no pasen inadvertidos. Finalmente, la mayor´ de los lenguajes de alto nivel presentan sis- ıa temas de construcci´n de tipos de datos con capacidad para definir co- o dificaciones (y operaciones de manipulaci´n sobre los objetos cifrados) o a la medida de nuestras necesidades. Limitaciones en los reales En este caso, incluso limit´ndonos a los reales contenidos en un pe- a que˜o intervalo acotado, ´stos ser´ infinitos, por lo cual las limitaciones n e ıan en su representaci´n no s´lo afectan al tama˜o de los n´meros consi- o o n u derados, sino tambi´n a la precisi´n. En efecto, en cualquiera de los e o convenios estudiados se toma como mantisa s´lo cierto n´mero reducido o u de 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 u flotante representa en realidad un intervalo, cuyo tama˜o var´ seg´n n ıa u la magnitud del real representante. Por consiguiente, la distribuci´n de o representantes no es uniforme: un intervalo tan peque˜o como [0’1, 1] n cuenta con tantos representantes como [1000, 10000]. Adem´s de las limitaciones de la precisi´n, la representaci´n de los a o o reales est´ limitada por su tama˜o: existe un valor a partir del cual no a n
  • 40. 44 Cap´ ´ ´ ıtulo 2. Representacion de la informacion hay representantes reales y que determina el rango de desbordamiento. Debe observarse en este punto que existen cantidades cuya expresi´n o decimal es exacta, sin serlo su expresi´n escrita en binario natural (por o ejemplo, 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 o muchos casos despreciable, su aparici´n puede ocasionar grandes desvia- o ciones respecto del comportamiento te´rico. o Una situaci´n as´ se produce cuando se comparan dos n´meros reales o ı u para determinar su igualdad, ya que el resultado de la comparaci´n o ignora si esa diferencia producida es peque˜a o grande, lo que puede n ocasionar 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 o expresi´n x = y por | x − y |< ε, siendo ε la diferencia admitida. o En realidad, la aparici´n de errores intolerables es posible incluso o en expresiones sencillas. Concretamente, deber´ evitarse las opera- ıan ciones de suma y resta, cuando uno de los operandos es muy peque˜o n en 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 ıa por |t| ≤ ε ∗ |x|. 1 Suponiendo una representaci´n en binario puro. o
  • 41. ´ 2.2. Representacion digital de los datos 45 M´s a´n, aun cuando se trate de un error despreciable, es frecuente a u que ese error intervenga en c´lculos repetidos, como ocurre en la ma- a nipulaci´n de matrices, el c´lculo con series recurrentes, etc.; en tales o a situaciones, la propagaci´n de un error inicial, aunque peque˜o, puede o n generar un error mucho mayor. El estudio y la cuantificaci´n de los o errores, as´ como su propagaci´n en c´lculos repetitivos y los m´todos ı o a e para encontrar soluciones satisfactorias, escapan del alcance y objetivos de este curso, siendo materia propia de los m´todos num´ricos. e e Otros sistemas de representaci´n (paquetes matem´ticos) o a Durante la pasada d´cada, se han desarrollado y difundido paquetes e de programas matem´ticos, capaces de resolver eficientemente un ex- a tenso n´mero de problemas, manipulando expresiones tanto num´ricas u e como simb´licas. Para ello est´n provistos (aparte de otros mecanismos) o a de potentes sistemas aritm´ticos de representaci´n no convencionales. e o Veamos 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
  • 42. 46 Cap´ ´ ´ ıtulo 2. Representacion de la informacion 2.2.4 Representaci´n de los caracteres o Existen otros convenios, adem´s de los num´ricos, para representar a e los 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 o y 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 e representaci´n), as´ como la posici´n, entre 0 y 2n − 1, asignada a cada o ı o car´cter. Sin embargo, en seguida se observ´ la necesidad de adoptar a o convenios normalizados, as´ como la conveniencia de que ´stos tengan ı e ciertas 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. a Adem´s, cuando la capacidad de representaci´n lo permita, ser´ deseable a o a que 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 a 7 bits, por lo que admite hasta 27 = 128 caracteres. Damos la siguiente tabla, omitiendo los primeros 32 caracteres, por ser caracteres de control.
  • 43. ´ 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 u se 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 a en cambio adoptar el byte (= 8 bits) como unidad. As´ es posible ı, extender el convenio anterior y dar cabida a otros caracteres de uso tambi´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 u racteres, sino que tambi´n deben organizar y tratar informaciones m´s e a complejas, tales como sucesiones de datos (por ejemplo, cadenas de ca- racteres), vectores, tablas, etc., ya sea formadas por datos simples o bien por conjuntos de informaci´n con alguna organizaci´n. Con tal finalidad o o se han ideado diversas estrategias; aunque su estudio excede el alcance de este cap´ıtulo, veamos un ejemplo orientativo.
  • 44. 48 Cap´ ´ ´ ıtulo 2. Representacion de la informacion Supongamos una m´quina de 1 byte (tama˜o de palabra). Si se a n adopta para los n´meros enteros un convenio de 2 bytes, cada n´mero u u ocupar´ dos palabras consecutivas. Una forma natural y sencilla de a organizar 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, e para i ∈ {1, . . . , n}. Si se tratase de una matriz de m ∗ n, cuyas componentes ocupan k palabras de memoria, se establece f´cilmente la posici´n inicial para la a o componente 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 o matriz. 2.2.6 Representaci´n de las instrucciones o Aunque podr´ parecer impropio considerar las instrucciones como ıa informaciones, lo cierto es que los programas se almacenan en la memoria del 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 a secuencia de elementos, cada uno de los cuales es un descriptor de una instrucci´n elemental. o El formato de las instrucciones (es decir, de sus descriptores) depende de la m´quina destinada a seguirlas. Si consideramos por ejemplo una a m´quina de tres direcciones (v´ase cap. 3), sus instrucciones se compo- a e nen de cuatro campos que codifican respectivamente la operaci´n que o debe efectuarse y las posiciones de memoria en que se encuentran los (como m´ximo dos) argumentos y la de la palabra donde debe situarse a finalmente el resultado. En el cap´ ıtulo siguiente se presenta con detalle uno de estos formatos.
  • 45. ´ 2.3. Codigos redundantes 49 2.3 C´digos redundantes o 2.3.1 Informaci´n y redundancia o Informaci´n e incertidumbre.- El t´rmino informaci´n tiene en ge- o e o neral un significado muy amplio: pi´nsese en la informaci´n proporcio- e o nada por una fotograf´ o un poema. Por eso, en el contexto de la in- ıa form´tica como ciencia que trata sobre el tratamiento autom´tico de la a a informaci´n, se asocia a ´sta un significado m´s restringido y manejable. o e a Para definir este significado, consideremos que deseamos determinar un cierto fen´meno, que puede presentar una cantidad finita de estados. o Entonces, una informaci´n (sobre ese fen´meno) es una sentencia capaz o o de aportar alg´n conocimiento sobre tal fen´meno; esto es, capaz de u o delimitar en cierta medida su estado. As´ por ejemplo, si consideramos el fen´meno “colores del atuendo ı o que llevaba anoche el asesino del callej´n”, sabiendo que el pantal´n o o era negro o marr´n, que la camisa era azul, gris o marr´n, y que el o o sombrero era gris o negro, resulta que el n´mero de estados es 12. Una u informaci´n sobre este fen´meno podr´ consistir en la sentencia “la o o ıa camisa y el pantal´n eran de distinto color”; con esta informaci´n, s´lo o o o son posibles 10 estados de nuestro fen´meno. Ahora, la afirmaci´n “la o o camisa y el pantal´n no eran ambos marrones” resulta redundante puesto o que, consider´ndola, siguen siendo posibles los mismos 10 estados que a ignor´ndola. a En lugar de hablarse de cantidad de informaci´n, resulta m´s f´cil o a a manipular la de incertidumbre. Una medida indirecta de ello consiste en la cantidad de estados posibles: su grado de indeterminaci´n. Si o cierto fen´meno ofrece 12 estados posibles, su grado de indeterminaci´n o o es 12, pero resulta m´s conveniente considerar como medida de la in- a certidumbre el logaritmo (en base dos) de esta cantidad, puesto que la incertidumbre crece de forma exponencial (con base dos) respecto de la longitud (n´mero de bits) del mensaje. Esta medida de la incertidumbre u se 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
  • 46. 50 Cap´ ´ ´ ıtulo 2. Representacion de la informacion Entonces, la informaci´n asociada a una sentencia se define como o disminuci´n de incertidumbre proporcionada. Siendo H0 = log2 (n0 ) o y H1 = log2 (n1 ) las entrop´ correspondientes a los estados previo y ıas posterior 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 > 0 mientras que la segunda proporciona una cantidad de informaci´n nula, o al ser redundante. La redundancia en la codificaci´n.- En los convenios de codifica- o ci´n/decodificaci´n estudiados hasta ahora, se ha supuesto que su trans- o o misi´n o su almacenamiento se efect´ a siempre sin ruido. En ellos, el o u objetivo principal consiste en dise˜ar convenios eficaces (sin emplear m´s n a d´ ı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, se han ideado m´todos capaces de descubrir en ciertas condiciones cu´ndo e a se 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 n uno, cuyo valor consigue que haya en total un n´mero par de unos. Se u ignora la posibilidad de que se altere m´s de un bit, por considerarla a extremadamente improbable. En la interpretaci´n del mensaje se verifica o previamente la paridad, detect´ndose un error si se ha producido, aunque a no ser´ posible identificar cu´l para restablecer su estado. a a
  • 47. ´ 2.3. Codigos redundantes 51 C´digo dos entre tres.- Este mecanismo consiste sencillamente en o triplicar las copias de cierta informaci´n. Se consideran dos posibilida- o des: que no se produzca ninguna alteraci´n, o que se produzca en una de o las copias, descart´ndose mayores perturbaciones. En ambos casos, se a interpreta el mensaje cifrado en la mayor´ de las copias: dos (al menos) ıa entre 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 e p unos (y n−p ceros), ser´ posible detectar si se efect´ a una perturbaci´n a u o simple, o una m´ltiple, siempre que no se alteren tantos unos como ce- u ros. En un c´digo p de n, el grado de indeterminaci´n es el n´mero de o o u permutaciones 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. a 2.3.3 C´digos autocorrectores: Hamming o Fundamento Consideremos un mensaje de n bits. La idea b´sica consiste en a˜ adir a n un cierto n´mero p de bits, cada uno de los cuales asegura un cierto u subconjunto 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 o uno de los n + p bits y deseamos conocer si ha habido o no perturbaci´n o y, en caso afirmativo, cu´l de los n + p bits ha sido alterado. Puesto que a el mensaje debe codificarse en los n bits, la informaci´n sobre el estado o de 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 los 2p estados posibles de los p bits de paridad acepten al menos n + p + 1 estados distintos: no alteraci´n (1) o la posici´n del bit alterado (n + p). o o Es decir: p = m´ k ∈ IN tal que 2k ≥ n + k + 1 ın
  • 48. 52 Cap´ ´ ´ ıtulo 2. Representacion de la informacion Por otra parte, los p conjuntos de bits deben elegirse de modo que el estado de los p bits de paridad asociados a esos conjuntos permita localizar el bit alterado, en su caso y, si es posible, con facilidad. Un modo de conseguir el objetivo descrito consiste en intercalar el bit i-´simo en la posici´n 2i−1 , para i = 1, . . . , p, siendo su conjunto e o asociado el de los d´ıgitos cuyo n´mero de posici´n, escrito en binario u o natural, tiene un 1 como cifra i-´sima. e Sea por ejemplo n = 4. Necesitamos p = 3 bits de paridad, que colocaremos 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 a cuya posici´n acabe en 1 (1, 3, 5 y 7); el bit 010(2 est´ asociado al o a conjunto de los bits del mensaje cuya posici´n tenga un 1 en la segunda o cifra (2, 3, 6 y 7), y el bit 100(2 est´ asociado al conjunto de los bits del a mensaje 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 a sus conjuntos asociados. Por ejemplo, si se desea transmitir el mensaje 0110 0 1 1 0 bastar´ con ajustar el bit 10 con los 30 , 50 y 70 (resultando un 1); el bit a 20 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
  • 49. Anexo 53 Decodificaci´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 o ninguno, el mensaje se ha mantenido intacto durante la transmisi´n; en o caso contrario, la suma de las posiciones de los bits alterados se˜ala el n bit modificado. Por ejemplo, si el mensaje anterior se recibe as´ ı: 1 1 0 0 0 1 0 el 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 o mensaje original era 1 1 0 0 1 1 0 Anexo: demostraci´n del teorema 2.1 o Incluimos aqu´ esta demostraci´n por ser constructiva, mostrando ı o el proceso de expresar una cantidad en cualquier base mayor que uno. Procederemos en cuatro fases: en primer lugar, la existencia de esa representaci´n en las condiciones del teorema se demuestra f´cilmente o a por inducci´n, dando un m´todo para hallar esa construcci´n. En se- o e o gundo, se demuestra (tambi´n por inducci´n) que ese m´todo converge e o e y a continuaci´n que la soluci´n que proporciona equivale efectivamente o o a la cantidad dada. Finalmente, se demuestra que no hay m´s que una a representaci´n de un n´mero en una base (≥ 2) dada. o u
  • 50. 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:
  • 51. 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
  • 52. 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.
  • 53. ´ 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 u 2.5 Comentarios bibliogr´ficos a El material incluido en este cap´ ıtulo sobre la representaci´n de los n´meros o u reales en coma flotante s´lo es una aproximaci´n conceptual. En [Gol91] se o o encontrar´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 a redondeo, el manejo de las excepciones producidas por el desbordamiento y su concreci´n en los sistemas normalizados por la IEEE. o Aunque el sistema de numeraci´n sexagesimal no puede considerarse posi- o cional (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 mediante su posici´n, este sistema es probablemente el precursor de los sistemas posicio- o nales. Para completar la referencia hist´rica, debe decirse que, en la antigua o Babilonia, tambi´n se conoc´ un sistema de coma flotante, que seguramente e ıa es 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 o y los hallados en diversas m´quinas. a Los convenios presentados en este cap´ ıtulo constituyen tan s´lo una pe- o que˜a parte de los ideados para mantener o proteger la informaci´n. Se han n o escogido algunos de los c´digos m´s ilustrativos y los m´s difundidos, aun- o a a que faltan otros, tales como el llamado binario reflejado y los de Gray. Una introducci´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 o es la criptolog´ que estudia mecanismos para ocultarla, cifr´ndola en claves ıa, a secretas (criptograf´ as´ como para descifrarla (criptoan´lisis). En [Dew88, ıa), ı a Dew89] puede encontrarse una sencilla introducci´n a estos temas. o
  • 54. Cap´ ıtulo 3 Estructura f´ ısica de un computador 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 conceptos b´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 a profesional) se encuentra una gran cantidad de profesionales que requie- ren conocer los computadores con un cierto detalle. Al menos, siempre es necesario 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 e dos dispositivos de entrada y salida, E/S).
  • 55. 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 n con una sola palabra; literalmente se debe entender como “conjunto de utiles duros”; en el contexto que nos ocupa, el hardware de un computa- ´ dor es el conjunto de dispositivos f´ ısicos que lo componen, mientras que otra palabra inglesa, software, designa los programas que puede ejecutar el computador. En cierto modo, el hardware es comparable al cerebro o, m´s ge- a neralmente, al cuerpo f´ ısico del computador mientras que el software ser´ lo equivalente a las ideas que pueblan el cerebro. Es conveniente ıa se˜alar, a pesar de su evidencia, que el hardware y el software son per- n fectamente in´tiles aisladamente: de nada nos sirve un computador si u no tenemos ning´n programa que ejecutar, y de nada nos sirve tener u muchos programas si no disponemos de un computador que los ejecute. Nuestra visi´n del sistema formado por el hardware y el software es o funcional, y en la ultima parte del cap´ ´ ıtulo ser´ patente esta relaci´n a o de dependencia mutua: explicaremos el funcionamiento del hardware siguiendo la ejecuci´n de algunos programas sencillos, escritos en su o propio lenguaje. 3.1 Componentes de un computador Para introducir los conceptos b´sicos que estudiaremos dentro de a esta secci´n consideramos un computador como una unidad de pro- o ducci´n. Una unidad de producci´n adquiere materia prima, la elabora o o y, finalmente, vende la materia elaborada. Esto mismo es lo que hace un computador: toma algunos datos, los procesa y, finalmente, devuelve el resultado obtenido al procesar la informaci´n. o M´s concretamente, consideremos una panader´ ideal. En esta pa- a ıa nader´ se compra harina, levadura, . . . (entrada de datos) que posterior- ıa mente 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 se realiza mediante los perif´ricos. Dentro de la panader´ podemos encon- e ıa trar dos zonas bien diferenciadas e indispensables: la primera es la zona
  • 56. 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. a de 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 e de trabajo es la unidad central de proceso o UCP que, a su vez, consta de la unidad de control o UC (el encargado que controla los procesos de amasado y horneado) y la unidad aritm´tica y l´gica o UAL (zona e o de amasado y horno). Naturalmente, entre las distintas zonas deben existir pasillos de comunicaci´n para poder sincronizar las acciones de o cada uno; en un computador esta informaci´n se env´ y recibe a trav´s o ıa e de los buses. En las siguientes secciones estudiaremos cada una de las partes que componen la estructura f´ısica de un computador. La figura 3.1 presenta un esquema de la misma.
  • 57. 62 Cap´ ıtulo 3. Estructura f´ ısica de un computador 3.1.1 Memoria principal Mencion´bamos en el p´rrafo anterior que la memoria representa el a a almac´n donde se guarda la informaci´n, en esta secci´n estudiaremos e o o algunos detalles del almacenamiento de informaci´n en la memoria y de o los 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 a salida de la ejecuci´n. Estudiaremos la memoria de un computador desde o un punto de vista f´ ısico (distintos medios de almacenamiento) y desde un 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 principio del cap´ıtulo: en el almac´n encontramos estanter´ repletas de bandejas e ıas iguales, y cuando un trabajador entra en el almac´n, bien trae o bien e retira algunas de estas bandejas. La unidad m´ ınima a la que se accede no es una barra de pan (bit) sino una bandeja completa (palabra). La longitud de palabra de memoria viene representada por la capacidad de cada bandeja. No podemos acceder a cada bit de la memoria aisladamente; la m´ınima cantidad de memoria a la que podemos acceder est´ formada a por una palabra de memoria. F´ ısicamente, la memoria est´ dividida a en celdas (con una capacidad de informaci´n de un bit), agrupadas en o palabras de memoria. Funcionamiento de la memoria Para acceder a cada palabra de memoria debemos poder referirnos a ellas. Esto se hace asignando una direcci´n num´rica binaria a cada pa- o e labra a modo de “direcci´n postal”. La direcci´n de memoria determina o o una 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
  • 58. 3.1. Componentes de un computador 63 entre 0 y 220 − 1. Para poder denotar todas las palabras de memoria disponibles necesitaremos al menos 20 d´ ıgitos ya que, en general, con d bits es posible direccionar 2d palabras de memoria. T´ngase en cuenta e que, en principio, la longitud de palabra de memoria no tiene relaci´n o con la longitud de las direcciones de memoria; en el apartado sobre op- timizaci´n de memorias tendremos la oportunidad de profundizar algo o m´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 o de memoria. Tanto la UCP como la memoria se sirven de unas cuantas palabras de acceso muy r´pido, llamadas registros. Para las operacio- a nes de lectura y escritura, los dispositivos de memoria disponen de dos registros: 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 o quiere escribir; puesto que debe tener capacidad para albergar cualquier direcci´n de memoria, es un registro de d bits siguiendo la notaci´n o o anterior. Por su parte, el RIM alberga la palabra le´ o que se va a ıda escribir en la direcci´n dada por el RD y, por lo tanto, tiene tantos bits o como la longitud de palabra de memoria. La memoria est´ conectada a con la UCP y con los perif´ricos a trav´s de los buses de direcciones, de e e datos y de control que describiremos m´s adelante. a El proceso de lectura o escritura se puede dividir en los siguientes pasos: 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.
  • 59. 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. o Clasificaci´n de las memorias o La memoria se encarga de intercambiar informaci´n con el procesador o seg´n las necesidades de ´ste. Con la tecnolog´ actual los procesado- u e ıa res alcanzan velocidades de varios millones de c´mputos por segundo, o lo que obliga a la memoria a tener una velocidad semejante a fin de no menguar la eficiencia del computador. Por otra parte, la capacidad de memoria es otra caracter´ ıstica interesante, ya que, en principio,1 no podr´ıamos ejecutar programas que no pudieran ser cargados completa- mente en memoria. Las caracter´ ısticas de velocidad y capacidad est´n a re˜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- u zado podemos destacar varios niveles jer´rquicos de memoria: de m´s a a r´pida y cara (por lo que suelen tener menor capacidad) a menos r´pida a a y mayor capacidad: 1. Memoria principal 2. Memoria secundaria 3. Memoria auxiliar Los dos ultimos tipos de memoria ser´n desarrollados en la secci´n de ´ a o perif´ricos, pues pueden ser considerados como perif´ricos de almacena- e e miento. 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 memorias de s´lo lectura que hace las veces de manual de comportamiento de la o m´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.
  • 60. 3.1. Componentes de un computador 65 Las memorias de s´lo lectura reciben el nombre gen´rico de memorias o e ROM (acr´nimo del ingl´s Read Only Memory). Los computadores vie- o e nen dotados con una memoria de este tipo donde se almacena la rutina de arranque. Otras aplicaciones de este tipo de memoria las encontra- mos en las lavadoras autom´ticas (los programas de lavado se almacenan a en una ROM) y en los juguetes electr´nicos. En este tipo de memoria o la 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 u contenido 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- e rias podemos distinguir las RAM est´ticas y las RAM din´micas. Las a a est´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 o dentro del microchip, generalmente construido con semiconductores). Por otra parte, son memorias vol´tiles en el sentido de que necesitan a la 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 o dicamente, ya que se va descargando con el tiempo. Esta p´rdida de e informaci´n es debida a que est´n construidas usando peque˜os conden- o a n sadores. 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 a Optimizaci´n de memorias o Sabiendo la necesidad de contar con memorias cada vez m´s r´pidas a a y con m´s capacidad se han ideado m´todos de optimizaci´n para la me- a e o moria principal. Dependiendo del aspecto por optimizar encontramos las 2 El tiempo requerido para leer o escribir una palabra de memoria. En una memoria est´tica puede ser de unos 20 ns, mientras que en una din´mica puede alcanzar los 80 a a ns.
  • 61. 66 Cap´ ıtulo 3. Estructura f´ ısica de un computador memorias cach´ y la memoria virtual que, respectivamente, aumentan e la rapidez y la capacidad de la memoria principal. Las memorias cach´ son memorias hasta mil veces m´s r´pidas que e a a las usuales pero, debido a su alto coste, suelen tener una capacidad muy peque˜a. La idea que define las memorias cach´ no puede ser m´s n e a simple: se trata de guardar en registros los contenidos de las posiciones de memoria de uso m´s frecuente, de modo que sea mucho m´s r´pido a a a acceder a la informaci´n que hay en ellas. o El funcionamiento de la memoria cach´ ejerce una acci´n de filtro e o sobre las direcciones de memoria que solicita la UCP. La secuencia de acciones que se producen en las operaciones de lectura y escritura con memoria 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´. e Existen distintas estrategias para seleccionar las direcciones que se guar- dan en la memoria cach´ de modo que se mantengan en ella las direc- e ciones m´s usadas (obs´rvese que el conjunto de direcciones de memoria a e m´s utilizadas variar´ con la fase del programa que se est´ ejecutando). a a e Una 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 e cidad aparente de la memoria se asemejar´ mucho a la velocidad de la a memoria cach´. e La memoria virtual se desarrolla con el prop´sito de poder hacer uso o de 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 o que cupieran en memoria mediante la t´cnica del solapamiento (over- e lay). Esta t´cnica tiene el serio inconveniente de que los programas no e
  • 62. 3.1. Componentes de un computador 67 son transportables, puesto que, en general, no funcionar´ en un com- ıan putador con menos memoria. Para solventar estos problemas se desarroll´ la memoria virtual como o un m´todo autom´tico para realizar el solapamiento. La idea consiste en e a usar la memoria secundaria, generalmente un disco duro, como memo- ria principal. Un programador que dispone de memoria virtual tiene la impresi´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 o son la paginaci´n y la segmentaci´n. Estas t´cnicas utilizan programas o o e de gesti´n de memoria que forman parte del sistema operativo; en el o cap´ ıtulo 4 se presentar´n m´s detalles sobre ellas. a a 3.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 o a ella como el procesador. La UCP est´ formada por la unidad de control a (UC), que clasifica y organiza las instrucciones recibidas (encargado), y la unidad aritm´tica y l´gica (UAL), que las ejecuta (donde se “amasa e o y cuece” la informaci´n). o F´ısicamente el procesador es un microchip y consta de unos circuitos electr´nicos que permiten realizar operaciones elementales con la infor- o maci´n. El procesador se conecta con el resto de los componentes de o un computador mediante unas patillas met´licas, cada una de las cuales a transporta informaci´n binaria, a trav´s de los buses de comunicaci´n o e o que estudiaremos m´s adelante. a El cometido de la UC consiste en recibir la instrucci´n que se va a o ejecutar, determinar su tipo (c´lculo aritm´tico, l´gico, . . . ), determi- a e o nar si esa instrucci´n necesita argumentos almacenados en la memoria, o leer (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 o parte, la labor de la UAL es la de ejecutar las instrucciones aritm´ticas e
  • 63. 68 Cap´ ıtulo 3. Estructura f´ ısica de un computador y l´gicas, una vez que la UC ha determinado su tipo y ha le´ sus ar- o ıdo gumentos (si los hubiera). Las instrucciones que llegan a la UAL son muy sencillas, y se reducen a un c´lculo aritm´tico elemental (seg´ n a e u el tipo de procesador, “elemental” significar´ bien suma-resta o bien a suma-resta-multiplicaci´n-divisi´n), un c´lculo l´gico (and, or, . . . ), o o o a o una instrucci´n de salto o bifurcaci´n. o o Unidad de control La UC se encarga de clasificar las instrucciones que recibe, controlar su ejecuci´n y leer las zonas de la memoria que almacenan los argumentos o de estas instrucciones. La UC est´ dotada de unos cuantos registros a internos de memoria que usa para almacenar datos elementales durante la ejecuci´n de una instrucci´n elemental. Esta memoria dispone de o o un cierto n´mero de registros con un cometido particular, entre los que u destacan 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 a y, por su parte, el contador de programa almacena la direcci´n de la o siguiente instrucci´n que debe ser ejecutada. Existen, adem´s, otros o a registros que almacenan los resultados parciales de la ejecuci´n de una o instrucci´n. o El funcionamiento de la UC est´ regido por los impulsos de un reloj a que sincroniza la realizaci´n de las distintas operaciones y determina la o velocidad 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 n instrucci´n puede descomponerse en peque˜os pasos como los descritos o n a 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.
  • 64. 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 o Unidad aritm´tica y l´gica e o La unidad aritm´tica y l´gica es el horno donde se cuece la infor- e o maci´n; su tarea consiste en recibir instrucciones junto con sus argu- o mentos y ejecutarlas, dando a cambio el resultado de su operaci´n. o Esta unidad consta de un(os) operador(es) que ejecuta(n) f´ısicamente las instrucciones recibidas, una serie de registros para almacenar infor- maci´n mientras se ejecuta una instrucci´n (entre estos registros destaca o o el registro acumulador , al que se har´ referencia de nuevo cuando estu- a diemos el direccionamiento de las instrucciones) y algunos se˜alizadores n de estado que indican resultados interesantes obtenidos al realizar un c´mputo (resultado cero, overflow o desbordamiento, . . . ) o Los operadores son dispositivos f´ ısicos (circuitos electr´nicos) que o pueden 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 de una palabra varios lugares hacia la izquierda o hacia la derecha. Depen- diendo de la acci´n del desplazamiento sobre los extremos de la palabra o podemos 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.
  • 65. 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 o a bit. La primera de estas operaciones s´lo depende de un argumento, o mientras que las restantes necesitan dos argumentos. Las operaciones aritm´ticas m´s importantes que se realizan en la e a UAL son las de suma, resta, multiplicaci´n y divisi´n, la de cambio de o o signo y la de extensi´n de signo. Esta ultima operaci´n se hace necesa- o ´ o ria cuando se transmite informaci´n a un elemento con mayor longitud o de palabra pues es necesario completar los bits restantes sin alterar la informaci´n. En general las operaciones de multiplicar y dividir se hacen o usando sumas y restas mediante un algoritmo apropiado; s´lo computa- o dores muy potentes (y caros) disponen de operadores particulares que las realicen directamente. Se puede mejorar la capacidad de c´lculo num´rico de algunos proce- a e sadores a˜adiendo un coprocesador matem´tico. Los dispositivos de este n a tipo complementan la UAL del procesador por otra m´s potente; con ma- a yores y m´s numerosos registros operativos, con una representaci´n inter- a o na de los datos de mayor precisi´n y con instrucciones num´ricas m´s o e a complejas (funciones exponenciales, logar´ıtmicas y trigonom´tricas). e Para ello, comparten el flujo de instrucciones y datos del procesador y cuando detectan alguna instrucci´n num´rica toman el control del o e programa, ejecutan la instrucci´n, calculan el resultado y devuelven el o control al procesador. 3.1.3 Perif´ricos e Damos en esta secci´n una visi´n general de los perif´ricos. Pode- o o e mos considerar perif´ricos de entrada, de salida y de almacenamiento; e
  • 66. 3.1. Componentes de un computador 71 asimismo podemos distinguir entre perif´ricos locales y perif´ricos remo- e e tos, seg´n su conexi´n al computador. Un perif´rico local, como el rat´n, u o e o se encuentra cerca de la UCP conectado mediante cables que hacen las veces de prolongador de los buses del computador. Para un perif´rico e remoto, como una impresora l´ser del centro de c´lculo, la conexi´n se a a o realiza a trav´s de una red de comunicaciones. e A continuaci´n se enumeran algunos de los perif´ricos m´s impor- o e a tantes: 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
  • 67. 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. a De 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.
  • 68. 3.1. Componentes de un computador 73 Perif´ricos de almacenamiento e Aunque se trata en realidad de perif´ricos de entrada y salida, suelen e estudiarse aparte. Los perif´ricos de almacenamiento son tambi´n co- e e nocidos como memorias secundarias y memorias auxiliares. La mayor´ ıa de estos dispositivos almacenan la informaci´n de forma magn´tica. El o e primero de todos los dispositivos de almacenamiento magn´tico fue la e unidad (lectora y grabadora) de cinta magn´tica, y posteriormente se e desarrollaron las unidades de discos fijos (tambi´n llamados discos du- e ros) y las unidades de discos flexibles. En una cinta magn´tica el acceso a la informaci´n es secuencial (te- e o nemos que hacer correr la cinta hasta que aparezca la informaci´n que o buscamos); esto hace que sea un medio muy lento. Generalmente las cintas magn´ticas, debido a su gran capacidad, se utilizan para hacer e peri´dicamente copias de seguridad (backup) de la informaci´n alma- o o cenada 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 o contenida en un disco duro. Los discos magn´ticos reciben este nombre por su forma y porque e su superficie es magn´tica (ciertamente no es un nombre muy original, e aunque s´ autoexplicativo) y son dispositivos de acceso directo, esto es, ı no tenemos que recorrer toda la informaci´n que hay delante de la que o necesitamos. Los discos magn´ticos necesitan organizarse l´gicamente para po- e o der albergar informaci´n de un modo ordenado; dar formato a un disco o magn´tico es dotarlo de la organizaci´n l´gica necesaria para cada mo- e o o delo de computador (no es lo mismo el formato del DOS, que usan los compatibles con IBM, que el formato usado por los computadores Ma- cintosh). La informaci´n se almacena siguiendo c´ o ırculos conc´ntricos llamados e pistas que a su vez se dividen en sectores que contienen un cierto n´mero u de palabras (celdas). Para indicar una direcci´n se especifica la pista y o el sector donde comienza la informaci´n, por lo cual una transferencia o
  • 69. 74 Cap´ ıtulo 3. Estructura f´ ısica de un computador de 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 e bastante complejas y, por lo tanto, se suele dejar al sistema operativo la gesti´n de todas las peque˜as tareas que hay que llevar a cabo, en el o n cap´ıtulo 4 veremos que el sistema operativo es el software encargado de facilitar este tipo de tareas a los usuarios del computador. Entre los distintos tipos de disco destacan los discos duros (hard disk ), que disponen de una gran capacidad de almacenamiento (de 20 a 800 Mb). Suelen ser fijos (no se pueden extraer del computador) y suelen 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 e extra´ ıbles y por eso pueden ser usados para transferir informaci´n de o un computador a otro (que pueda leer discos flexibles). Estos discos tienen una capacidad mucho menor que un disco duro (entre 360 Kb y 2’88 Mb) y el tiempo de acceso a la informaci´n almacenada es bastante o grande. Actualmente coexisten discos flexibles de dos tama˜os distintos, n de 5 1 y de 3 1 (pulgadas), de similares prestaciones. Los computadores 4 2 compatibles con IBM pueden utilizar discos flexibles de 5 1 y de 3 1 , 4 2 mientras 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 4 acaben 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 capacidad y a velocidad de acceso y adem´s son intercambiables. a 3.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 o tantemente y, obviamente, la comunicaci´n debe establecerse a trav´s o e de un medio f´ ısico que conecte la UCP con los dispositivos E/S y con el exterior. La comunicaci´n entre los distintos componentes se realiza o a trav´s de l´ e ıneas que transportan informaci´n binaria. Este transporte o puede llevarse a cabo de dos modos:
  • 70. 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 o que transporten, y cada uno de estos conjuntos de l´ ıneas recibe el nombre de bus. Un bus transmite la informaci´n en paralelo. o Atendiendo al tipo de informaci´n que transmiten, los buses de co- o municaci´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 la longitud de la palabra de m´quina, aunque a veces s´lo tienen la mitad, a o lo que incide negativamente en la velocidad del computador pero suele abaratar el precio. Si el n´mero de celdas de memoria accesibles es 2d , u los 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 distintas marcas y modelos de procesador. Por el bus de datos la UC recibe (el c´digo binario de) una ins- o trucci´n, la interpreta y prepara su ejecuci´n. Dependiendo del tipo de o o
  • 71. 76 Cap´ ıtulo 3. Estructura f´ ısica de un computador instrucci´n, la UC puede generar algunos c´digos de control que ser´n o o a enviados a trav´s del bus de control; en su caso, averiguar´ a trav´s del e a e bus de direcciones en qu´ posici´n (de la memoria principal) encuentran e o los argumentos de la instrucci´n, esta informaci´n viajar´ hasta la UC o o a por el bus de datos y, finalmente, el resultado del c´mputo ser´ trans- o a portado de nuevo a trav´s del bus de datos hacia la memoria o hacia un e perif´rico. e Existen dispositivos electr´nicos para el control de los buses que, en o ciertos 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 o se puede hacer de dos formas distintas: utilizando la propia memoria principal o trav´s de una memoria independiente para E/S. En el primer e caso cada controlador de dispositivo tiene asignada una direcci´n de o memoria. Cuando la UCP quiere leer o escribir en el dispositivo, lo hace en la direcci´n que dicho dispositivo tiene asignada, utilizando las o mismas instrucciones de escritura o lectura de memoria. En el segundo caso, el lenguaje m´quina debe disponer de instrucciones especializadas a para el acceso a este ´rea de E/S. a Los controladores de prop´sito general cumplen un determinado pro- o tocolo est´ndar de comunicaciones y disponen de los necesarios conecto- a res en el exterior del computador. Cualquier perif´rico que se atenga a e dicho protocolo puede ser conectado a ellos, facilitando su utilizaci´n. o
  • 72. ´ 3.2. Lenguajes de maquina 77 Entre los protocolos m´s extendidos cabe citar el RS -232 para los a puertos 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 o ceros 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 o instrucciones expresadas en su lenguaje de m´quina, y cada instrucci´n a o especifica una acci´n particular sobre algunos operandos. Una instruc- o ci´n es una lista de ceros y unos: una parte de la lista es el c´digo de la o o operaci´n que ha de realizarse, el resto determina d´nde se encuentran o o los argumentos de la instrucci´n (si los hubiera). Todo lo relacionado o con la especificaci´n de d´nde est´n los argumentos de la instrucci´n o o a o recibe el nombre de direccionamiento. A las instrucciones de m´quinaa se les asignan nombres nemot´cnicos, m´s f´ciles de recordar que listas e a a de ceros y unos. Estas instrucciones son muy elementales, por lo tanto es necesario realizar un gran esfuerzo de traducci´n entre el lenguaje natural y el o c´digo m´quina. En el cap´ o a ıtulo 5 estudiaremos la jerarqu´ de niveles ıa que permiten a un programador de aplicaciones escribir sus programas en lenguajes a medio camino entre el lenguaje natural y la codificaci´n o en binario. Hay dos tendencias b´sicas en el dise˜o de juegos de instrucciones: a n pocas instrucciones (algunas decenas) simples pero de ejecuci´n muy o r´pida o muchas instrucciones (unas 200) complejas, de ejecuci´n algo a o m´s lenta. La primera se conoce como RISC (del ingl´s, Reduced Instruc- a e tion Set Computer : computador con juego de instrucciones reducido) y la segunda como CISC (Complex Instruction Set Computer : computa- dor con juego de instrucciones complejo).
  • 73. 78 Cap´ ıtulo 3. Estructura f´ ısica de un computador 3.2.1 Formato de las instrucciones La elecci´n del formato de las instrucciones de un procesador depende o en buena parte de las especificaciones fijadas por el equipo de dise˜o del n procesador y de otras consideraciones que veremos a continuaci´n.o Entre las operaciones que se ejecutan en un procesador, algunas no tienen operandos, otras tienen uno, dos o a lo sumo tres. En muchos de los casos los operandos vienen expresados por sus direcciones de me- moria, por lo que se suele hablar de instrucciones de una, dos o tres direcciones. Pueden existir instrucciones sin operando, bien porque el operando no aparezca expl´ıcitamente, siendo uno de los registros del procesador, o porque la propia instrucci´n no lo necesite, como cuando se repite un o proceso o se regresa de una llamada a un subprograma. En el otro extremo se sit´an las operaciones binarias, que precisan u tres direcciones para llevarse a cabo: las de sus dos argumentos y la de d´nde ha de colocarse el resultado obtenido. o Lo ideal en un juego de instrucciones es que todas tengan el mismo formato. Adoptar, por ejemplo, un juego de instrucciones de tres di- recciones es sencillo: basta con ignorar los argumentos a˜adidos para n igualar el formato. Tambi´n es posible elegir un juego de instrucciones con menos de tres e operandos. Las operaciones de tres argumentos se traducen entonces como sigue (considerando una operaci´n aritm´tica cualquiera): o e Si el juego de instrucciones es de dos direcciones, ´stas representan e a ambos argumentos, y el resultado de la ejecuci´n se almacena en la o primera o segunda direcci´n suministrada. o En las instrucciones de una direcci´n s´lo se especifica la de uno de o o los argumentos. En el caso de que se trate de una instrucci´n binaria, se o hace 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 o por la instrucci´n, y el resultado de la instrucci´n se almacena en el o o registro acumulador (ver secci´n 3.3.2). o
  • 74. ´ 3.2. Lenguajes de maquina 79 3.2.2 Tipos de Instrucciones Las instrucciones del juego de un procesador pueden ser divididas seg´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
  • 75. 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. o 3.3 Un ejemplo de recapitulaci´n o En este apartado vamos a desarrollar un ejemplo explicativo de un conjunto 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- n trucciones 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 a direcciones, 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 n es de 16 bits, es decir que en cada direcci´n de memoria se almacenan 16 o
  • 76. ´ 3.3. Un ejemplo de recapitulacion 81 bits, y que en cada operaci´n de lectura o escritura de memoria se trabaja o con 16 bits. (En muchos sistemas el tama˜o de palabra de memoria es n de 8 bits. Por ello, la formaci´n de un dato de 16 bits requiere la lectura o de dos posiciones consecutivas de memoria empezando, por ejemplo, por la posici´n par.) o 3.3.1 UCP con acumulador Como hemos visto (apartado 3.1.1), los registros son memorias de gran velocidad utilizadas por la UCP y la memoria principal para re- alizar sus operaciones. Su tama˜o depende del contenido que vayan a n almacenar. En nuestro caso, el registro de direcci´n de memoria tendr´ o ıa 12 bits y el de intercambio de memoria 16 bits. El contador de programa tiene que almacenar una direcci´n de me- o moria, luego tendr´ 12 bits, mientras que el registro de instrucci´n, que a o tiene que almacenar la instrucci´n completa, tendr´ 16 bits. Adem´s o a a existir´ un registro acumulador, que desempe˜a en este caso un papel a n fundamental 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 actual del registro acumulador y como segundo operando se toma el contenido de la direcci´n que aparece en la instrucci´n y el resultado se almacena o o nuevamente en el acumulador. Por lo tanto, en las instrucciones de dos operandos el registro acumulador hace el doble papel de operando y de destinatario del resultado. Supongamos que queremos sumar el contenido de la posici´n de me- o moria 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- o dor, a continuaci´n llamamos a la operaci´n suma con la direcci´n 150; o o o como veremos, esta instrucci´n suma al acumulador el contenido de la o direcci´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
  • 77. 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- a cribir´ ıa: SUMAR 100 150 200 El lenguaje m´quina se simplifica al tener una unica direcci´n, pero las a ´ o operaciones se complican al tener que cargar y almacenar los operandos del acumulador. En las operaciones de cambio de signo o de complementaci´n, sola- o mente tenemos un operando. La operaci´n se realiza sobre el contenido o del acumulador, donde se almacena tambi´n el resultado. La direcci´n e o pasada como argumento no se tiene en cuenta. En las operaciones de E/S, el contenido de una posici´n de memoria o se recibe o env´ a un dispositivo externo. En este caso, no se utiliza el ıa registro 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 de m´quina de una direcci´n simplificado. La notaci´n M [d] representa a o o el contenido de la direcci´n d de la memoria. La instrucci´n CARgar d o o deposita el contenido de la posici´n de memoria d en el acumulador. o La instrucci´n ALMacenar d realiza el proceso contrario: guarda el o contenido 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 un dato de una posici´n de memoria destinada a un dispositivo externo y lo o almacena en la direcci´n de memoria d; la segunda toma el contenido de o la posici´n de memoria d y lo env´ a la direcci´n de memoria destinada o ıa o al dispositivo externo.3 3 Por ser este un modelo muy simplificado, no se tiene en cuenta la comunicaci´n o directa con el dispositivo.
  • 78. ´ 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
  • 79. 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- o nido del acumulador, almacenando el resultado en dicho registro. El mismo proceso pero aplicando la multiplicaci´n o la divisi´n es o o realizado 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- o dor. 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 o direcci´n de memoria d y del acumulador, efect´an la operaci´n and u o u o or 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 u dencia del valor del acumulador. La instrucci´n CONDici´n d, toma el valor del acumulador, comprueba o o si es mayor que cero, y en caso afirmativo carga en el registro contador de programa la direcci´n d. En consecuencia, la siguiente instrucci´n que o o ejecutar´ el procesador ser´ la contenida en la direcci´n d, produci´ndose a a o e una ruptura de la secuencia de ejecuci´n. Si no se cumple la condici´n o o prosigue la ejecuci´n secuencial. o Por ultimo, la instrucci´n END se˜ala el final del programa. ´ o n 3.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 a pasos elementales y transferencias de datos de unos ´rganos a otros de o la 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 o m´quina. a La ejecuci´n de una instrucci´n comienza cuando se actualiza el re- o o gistro contador de programa. La UC env´ esta direcci´n a los circuitos ıa o de selecci´n de memoria a trav´s del bus de direcciones y la se˜al de o e n
  • 80. ´ 3.3. Un ejemplo de recapitulacion 85 lectura a trav´s del bus de control. La direcci´n queda almacenada en e o el registro de direcci´n de memoria y al recibir la se˜al de lectura, se o n lee la instrucci´n. La instrucci´n se env´ a trav´s del bus de datos y se o o ıa e recibe en el registro de instrucci´n de la UC. De esta forma, la UC tiene o disponible la instrucci´n para ser decodificada y ejecutada. o Supongamos que la instrucci´n para ejecutar sea: o SUM 1000(10 equivalente en binario a: 0100 001111101000 La 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 n enviar la direcci´n, a trav´s del bus de direcciones, al registro de di- o e recci´n de la MP, efectuar la operaci´n de lectura y, finalmente, enviar o o el contenido de la direcci´n 1000 a un registro operativo de la UAL, a o trav´s del bus de datos. e A continuaci´n se env´ la se˜al de control correspondiente a la suma o ıa n a la UAL, quien suma al contenido del acumulador el valor del registro operativo, 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 u n a una cierta potencia a ∈ IN. El programa devolver´ el valor 1 si a es a cero 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 al resultado. Usaremos una posici´n adicional de memoria para almacenar o la constante 1 que usaremos para decrementar la potencia. La descripci´n del proceso ser´ la siguiente: o ıa
  • 81. 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 programa La entrada del proceso es la direcci´n d6. o Para traducirlo a lenguaje m´quina tenemos que fijar una direcci´n a o inicial, por ejemplo la 100, y convertir cada instrucci´n en sus equiva- o lentes, 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
  • 82. ´ 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- o alizando la comparaci´n a > 0. Veamos un ejemplo de ejecuci´n del o o programa 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 programa Veamos 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
  • 83. 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. o 3.4 Observaciones complementarias El conjunto de instrucciones de m´quina presentado como ejemplo a est´ muy simplificado. Los lenguajes de m´quina reales pueden tener a a hasta cientos de instrucciones, la mayor´ de ellas con distintas modali- ıa dades de direccionamiento. Los procesadores disponen tambi´n de numerosos registros operati- e vos auxiliares, que se utilizan en la ejecuci´n de las instrucciones y en la o formaci´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 a conviene 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 e operaciones de E/S y de las situaciones de error o desbordamiento.
  • 84. 3.4. Observaciones complementarias 89 3.4.1 Tipos de direccionamiento Cada procesador dispone de unas reglas precisas y determinadas para la definici´n de las direcciones o registros donde se encuentran los datos. o Estas reglas constituyen los modos de direccionamiento del procesador y pueden llegar a ser bastante complejas. Un procesador puede tener decenas de modos de direccionamiento diferentes, en los que participan registros especializados. Se llama direcci´n absoluta al valor num´rico que cada posici´n de o e o memoria tiene asignado y por el cual se accede a ella. En general, la direcci´n contenida en las instrucciones de lenguaje m´quina no es la di- o a recci´n absoluta, sino que ´sta se forma desplazando una cierta direcci´n o e o llamada 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 o zadas las necesarias operaciones sobre la direcci´n contenida en la ins- o trucci´n, se toman los datos. o Un registro puede contener un dato para operar con ´l, pero tambi´n e e puede contener una direcci´n donde se encuentre el dato. (En los ejem- o plos 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]
  • 85. 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:
  • 86. 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 Subrutinas Pilas Las pilas son estructuras secuenciales de datos cuyo acceso se realiza por un extremo. Es semejante a la acci´n de apilar una serie de libros o sobre una mesa: se puede poner un libro sobre la pila o quitar el del extremo superior o cima, pero no insertar ni sacar libros intermedios; para acceder a uno de los libros de la parte inferior hay que retirar previamente los anteriores. Se dice que estas estructuras son de tipo LIFO (Last In First Out: ultimo en entrar primero en salir). ´ La mayor´ de los procesadores disponen de una pila para almacenar ıa ordenadamente ciertos valores y operaciones. Sobre una pila se definen dos operaciones b´sicas: meter y sacar datos. Para su funcionamiento a se utiliza un puntero que se˜ala a la cima de la pila. Para meter un n dato en la pila se decrementa el valor del puntero para que apunte a una posici´n sobre la actual, y a continuaci´n, se transfiere el dato a esta o o posici´n. Para sacar el dato, se env´ su valor y despu´s se incrementa o ıa e el valor del puntero. De esta forma la posici´n anteriormente ocupada o queda liberada. Estas operaciones suelen expresarse por sus mnemot´cnicos en ingl´s: e e PUSH d y POP d. La primera introduce el valor contenido en la direcci´n d o en la pila, y la segunda saca el valor del extremo de la pila y lo deposita en la direcci´n d. o
  • 87. 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
  • 88. 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 a Llamadas a subrutinas Un subprograma es un conjunto de instrucciones que realizan una acci´n concreta que se puede repetir varias veces a lo largo del pro- o grama, como hemos visto en el ejemplo del apartado 3.3.4. En vez de repetir 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 lenguajes de m´quina disponen de instrucciones para realizar las llamadas a sub- a programa, 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 o del subprograma: CALL d Esta instrucci´n llama al subprograma situado en la direcci´n d. Para o o ello, la carga en el registro contador de programa, en forma semejante a las instrucciones de salto COND o GOTO. Sin embargo, una vez que el subprograma haya sido ejecutado, hay que volver al programa principal, por lo que se hace necesario conocer
  • 89. 94 Cap´ ıtulo 3. Estructura f´ ısica de un computador y almacenar la direcci´n de retorno, normalmente la direcci´n siguiente o o a 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, la instrucci´n de llamada debe almacenar la direcci´n de retorno al pro- o o grama principal, que es la direcci´n siguiente a la de llamada, en la pila. o Cuando se llega a la ultima instrucci´n del subprograma el procesador ´ o saca la direcci´n de retorno de la pila y la carga en el registro contador o de programa, con lo cual prosigue la ejecuci´n del programa principal. o Los subprogramas deben terminar en una instrucci´n que indique al o procesador que debe volver al programa principal. Suele expresarse con el mnemot´cnico: e RET que indica el RETorno desde un subprograma. 3.4.3 Interrupciones El trabajo del procesador puede verse interrumpido por distintos motivos; operaciones de E/S, errores, paradas para depuraci´n, etc. o Una interrupci´n del procesador es similar a lo que sucede cuando o estamos leyendo un libro y suena el tel´fono: el dispositivo externo, e el tel´fono, avisa de su disposici´n a realizar una operaci´n de E/S; el e o o procesador, el lector, almacena su estado de proceso (se fija en la p´gina a y el lugar de la p´gina donde se encuentra leyendo), y pasa a ejecutar un a subprograma de servicio de la llamada telef´nica (responde al tel´fono, o e toma notas, etc., y por ultimo cuelga). A continuaci´n el procesador ´ o reanuda su estado anterior a la llamada y prosigue con su proceso (el lector 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- a ducirse por los controladores del sistema y de dispositivos, a trav´s del e bus de control (interrupciones de hardware).
  • 90. 3.5. Otras arquitecturas 95 Se puede establecer una jerarqu´ de interrupciones dependiente de ıa su 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 o de servicio, que contiene las instrucciones necesarias para atender la interrupci´n. Antes de atender la interrupci´n, el procesador almacena el o o contenido de los registros, generalmente en una estructura de tipo pila. A continuaci´n se ejecuta el subprograma, de forma similar a las llamadas o de subprogramas (subrutinas). Una vez atendida la interrupci´n, el o procesador recupera los contenidos de sus registros de la pila y prosigue la ejecuci´n del programa principal. o Para el tratamiento de las interrupciones los lenguajes de m´quina a suelen disponer de instrucciones espec´ ıficas, que en forma nemot´cnica e suelen expresarse como: INT t IRET La primera genera una INTerrupci´n de tipo t, y entre otras acciones o llama al subprograma de servicio t. La segunda marca el fin de dicho subprograma y provoca el retorno de la interrupci´n. o 3.5 Otras arquitecturas En los ultimos a˜os se ha introducido una gran variedad de nuevas ar- ´ n quitecturas de computadores, especialmente orientados al procesamiento en paralelo, esto es, con capacidad para realizar varias operaciones si- mult´neamente. Este modo de funcionamiento contrasta con el procesa- a miento secuencial, en que las instrucciones se ejecutan una tras otra. Actualmente, la mayor´ de los computadores incorpora algunas ca- ıa racter´ ısticas paralelas a bajo nivel sin que por eso puedan ser llamados ´ con propiedad computadores paralelos. Estos disponen en general de varios procesadores o Unidades de Procesamiento (UP). En esta secci´n se presentan, muy brevemente, algunos esquemas o b´sicos que siguen las distintas arquitecturas paralelas existentes en la a
  • 91. 96 Cap´ ıtulo 3. Estructura f´ ısica de un computador actualidad. 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 o muy general los computadores paralelos pueden clasificarse en alguna de las 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
  • 92. 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
  • 93. 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. o 3.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.
  • 94. ´ 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].
  • 95. Cap´ ıtulo 4 Sistemas 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 a como elemento decorativo. Un sistema operativo constituye, probable- mente, la parte m´s importante del conjunto de software que acompa˜a a a n cualquier computador moderno. El sistema operativo controla todos los recursos del computador y ofrece la base sobre la cual pueden escribirse los programas de aplicaci´n. o El objetivo de este cap´ ıtulo consiste en exponer los elementos b´sicos a de 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 a un sistema operativo y las funciones que debe realizar. Posteriormente se establece una clasificaci´n, no exhaustiva, de los sistemas operativos o seg´n sus caracter´ u ısticas m´s sobresalientes. a
  • 96. 102 Cap´ ıtulo 4. Sistemas Operativos 4.1 Cometido de un sistema operativo 4.1.1 Funciones de los sistemas operativos En el cap´ıtulo anterior se ha mostrado someramente la estructura interna de un computador, con su(s) procesador(es), sus memorias prin- cipal y secundaria, y los perif´ricos. Si todo programador de aplicaciones e tuviera que controlar “a mano” todos los componentes de la estructura interna del computador cuando hace sus programas, muy probablemente, no existir´ tantos programas en el mercado. Por poner un ejemplo, em- ıan plear la instrucci´n escribir archivo es mucho m´s simple que tener o a que preocuparse por mover las cabezas lectoras del disco hasta una po- sici´n adecuada, esperar que se estabilicen, dirigir la informaci´n desde o o la 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 fundamental para conseguirlo consiste en ocultar los escabrosos detalles del hardware puro con software (el sistema operativo) especialmente dise˜ ado para n permitir 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 simple entre el programador o usuario y otros aspectos del hardware, como son el manejo de interrupciones, relojes, gesti´n de memoria y otras o caracter´ ısticas de bajo nivel. Seg´n este enfoque, el sistema operativo tiene la misi´n de presentar u o al usuario una m´quina virtual que sea m´s f´cil de programar que el a a a hardware puro y, por lo tanto, aumente la efectividad del computador al evitar la necesidad de trabajar a bajo nivel. Por consiguiente, puede considerarse un sistema operativo como un interfaz adecuado entre el usuario y el hardware. Un sistema operativo tambi´n tiene la funci´n de controlar y admi- e o nistrar de forma ordenada el uso de todos los recursos del computador. Esta funci´n se hace especialmente necesaria cuando un computador est´ o a siendo compartido por varios usuarios simult´neamente; en este caso, a la necesidad de distribuir convenientemente el tiempo de trabajo de la
  • 97. 4.1. Cometido de un sistema operativo 103 UCP, los espacios de memoria y los perif´ricos es evidente. Desde este e punto de vista, la tarea del sistema operativo es llevar el control de qui´n e est´ utilizando cada recurso y dirimir los posibles conflictos entre varios a procesos 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 a las funciones de un sistema operativo, ya que este concepto ha evolu- cionado con su desarrollo. En general, un sistema operativo debe poder desempe˜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. o 4.1.2 Formas de trabajo de los sistemas operativos Los sistemas operativos han evolucionado para cubrir las distintas necesidades de proceso sobre m´quinas de tama˜o y potencia muy di- a n versos. 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 operativos de prop´sito general y los dedicados. o Los primeros, que son los m´s utilizados, se dise˜an con una intenci´n a n o de polivalencia, de forma que sobre ellos puedan ejecutarse programas diversos: editores, compiladores y aplicaciones de todo tipo. Dentro de los sistemas operativos de prop´sito general puede distinguirse entre mo- o nousuario y multiusuario, dependiendo de si pueden atender o no a m´s a de un proceso al mismo tiempo. Claramente, los sistemas multiusuario son m´s complejos pues, adem´s de desempe˜ ar todas las funciones pro- a a n pias de uno monousuario, deben atender a otros aspectos, tales como el
  • 98. 104 Cap´ ıtulo 4. Sistemas Operativos reparto del tiempo de trabajo del (los) procesador(es) entre los distintos usuarios, la separaci´n entre los datos de los mismos, etc. o En los sistemas operativos de prop´sito general, hay dos formas de o trabajo b´sicas: el modo interactivo y el proceso por lotes. En el primero, a el 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 a o ´rdenes y las respuestas tienen lugar de un modo casi inmediato. En un proceso por lotes, los diferentes trabajos junto con sus datos se suceden entre s´ de forma que su ejecuci´n se realice autom´ticamente, ı, o a sin ning´n tipo de comunicaci´n entre el usuario y el sistema, hasta la u o finalizaci´n del trabajo. o Dentro de los sistemas operativos dedicados, se suele distinguir entre los 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- o cuencia. En la mayor´ de estos procesos, la variable tiempo tiene una ıa importancia relevante; por ejemplo, en un horno industrial, un retraso en la reducci´n de la temperatura puede tener funestas consecuencias. o En estos procesos, se dice que el sistema debe operar en tiempo real. Los sistemas de consulta deben permitir al usuario el acceso a una o varias bases de datos de una forma c´moda, sin tener que conocer los o detalles internos de su organizaci´n y funcionamiento. de su estructura. o Se puede citar como ejemplo un sistema de consultas de historias cl´ ınicas en un hospital. Por ultimo, los sistemas transaccionales permiten la realizaci´n de ´ o operaciones sobre el contenido de bases de datos. Se han extendido enormemente 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 de billetes en agencias de viajes, etc. Estos sistemas deben garantizar la opacidad de la informaci´n confi- o dencial, actualizar r´pidamente la base de datos y evitar ciertas opera- a ciones simult´neas sobre los mismos datos (por ejemplo, dos personas a que reservan el mismo asiento).
  • 99. ´ 4.2. Conceptos basicos de los sistemas operativos 105 4.2 Conceptos b´sicos de los sistemas a operativos 4.2.1 Procesos Es importante el concepto de proceso para entender c´mo funcio- o nan los sistemas operativos. Un proceso consiste, esencialmente, en una rutina de acciones del sistema que puede ser ejecutada independiente- mente de otro proceso e, incluso, en paralelo. Un programa de usuario en ejecuci´n puede considerarse un proceso, aunque un proceso puede o involucrar la ejecuci´n de m´s de un programa y, rec´ o a ıprocamente, un programa o rutina de instrucciones puede estar involucrado en m´s de a un 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´ ımeras que desaparecen una vez completada su misi´n. Podr´ arg¨irse que los o ıa u procesos son consumidores de recursos en lugar de ser recursos por s´ ı mismos; sin embargo, una vez que han entrado en el estado transitorio de ser procesos, pueden ser “manejados” por otros procesos. La gesti´n de procesos es una tarea fundamental de los sistemas o operativos; concretamente, la mayor´ de los sistemas operativos deben ıa soportar la ejecuci´n concurrente de procesos y resolver los problemas o que ´sta plantea, ofreciendo medios para la sincronizaci´n de los pro- e o cesos, controlando su exclusi´n mutua respecto de ciertos recursos, y o evitando, en la medida de lo posible, las situaciones de bloqueo. Estos conceptos se explican a continuaci´n. o Dos o m´s procesos se dicen concurrentes cuando se est´n ejecutando a a simult´neamente. Cuando existen m´s procesadores que procesos, cada a a proceso se ejecutar´ sin conflicto en un procesador (paralelismo); si, por a el contrario, existen m´s procesos que procesadores puede obtenerse una a “simultaneidad aparente” (concurrencia) haciendo que los procesadores alternen cortos per´ıodos de tiempo de dedicaci´n a los distintos procesos. o Si dos procesos concurrentes utilizan recursos distintos podr´n con- a
  • 100. 106 Cap´ ıtulo 4. Sistemas Operativos vivir sin interferencias pero si, por el contrario, los procesos necesitan los mismos recursos puede surgir conflicto. Sup´ngase que ambos recursos o pretenden acceder a una impresora: es absolutamente inviable conmu- tar la dedicaci´n de la impresora entre ambos procesos ya que, en ese o caso, el resultado ser´ ca´tico. Este es un caso t´ ıa o ıpico de necesidad de exclusi´n mutua de dos procesos respecto a un recurso. o Dos procesos concurrentes pueden necesitar cooperar al realizar sus tareas; por ejemplo, un proceso que genera l´ıneas de texto que env´ ıa a un buffer y otro que las consume, tom´ndolas del buffer de datos y a envi´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 ´ a en ejecuci´n concurrente se bloqueen mutuamente, en el sentido de que o cada uno de ellos necesita un recurso que el otro posee. Llegados a este punto la ejecuci´n se detiene, ya que cada proceso espera que el otro o libere la informaci´n (o el recurso) que necesita. Esta situaci´n se llama o o bloqueo (en ingl´s deadlock ). e 4.2.2 Archivos La informaci´n es almacenada por el ordenador en dispositivos, como o por ejemplo los discos. Para que el usuario pueda ignorar la estructura f´ ısica del disco, el sistema operativo debe presentar la informaci´n al- o macenada de una forma organizada, que permita acceder a ella de una manera l´gica y sencilla. o En este contexto, se entender´ por archivo un conjunto de infor- a maci´n relacionada (definida por el usuario o no). En ´l pueden estar o e contenidos datos o programas. Un sistema operativo debe gestionar los archivos de una forma eficiente; para ello son necesarias operaciones ta- les como la creaci´n, modificaci´n y borrado de archivos. El sistema o o operativo debe proporcionar estas operaciones, permitiendo al usuario referirse a los archivos mediante nombres simb´licos. o Al manipular los archivos, el computador puede acceder a ellos de dos modos, dependiendo del medio de almacenamiento en que reside el
  • 101. ´ 4.2. Conceptos basicos de los sistemas operativos 107 archivo (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 o y manipulaci´n. Para facilitarla, el sistema operativo presenta al usuario o la posibilidad de agruparlos en compartimentos, llamados directorios. El sistema operativo deber´ manejar la organizaci´n de directorios, ocul- a o tando al usuario los detalles particulares de la localizaci´n f´ o ısica de los archivos y directorios, facilit´ndole en cambio operaciones para gestionar a c´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 a y/o m´s (sub)directorios. La figura 4.1 muestra un ejemplo de sistema a de 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- u pio nada nos impide que coloquemos una carpeta dentro de otra (salvo quiz´ la limitaci´n de espacio).1 a o Una operaci´n fundamental en la gesti´n de un sistema de archivos o o es 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 a Apple Macintosh y Windows.
  • 102. 108 Cap´ ıtulo 4. Sistemas Operativos Ra´ ız ˆˆˆ ˆ ˆˆˆ ˆˆˆ ˆˆ alumnos profesores juegos $$ˆˆˆˆ 33€€ €€ 7d $$$ $ e ˆˆ 33 7 d e ˆ d trivial e adictivos Pedro 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 a archivo tras archivo, pero si el sistema contiene muchos archivos esta t´ctica llevar´ mucho tiempo y, como esto es lo habitual, se han ideado a a estrategias para hacer el acceso m´s eficiente. a La idea de directorio de trabajo permite agilizar la b´squeda de archi- u vos en el sistema; para ello es fundamental la noci´n de camino (en ingl´s o e path) desde la ra´ del ´rbol hasta una rama determinada; por ejemplo, ız a en el ´rbol de directorios de la figura 4.1 los juegos adictivos tienen el path a juegosadictivos. Si el directorio de trabajo fuera juegos enton- ces adictivostetris (camino relativo al directorio de trabajo) tiene el mismo significado que juegosadictivostetris (camino absoluto). Para la optimizaci´n de la b´squeda de archivos se suele buscar s´lo o u o en el directorio de trabajo y en algunos otros paths especificados por el usuario. Otra prestaci´n ofrecida por la mayor´ de los grandes sistemas ope- o ıa rativos es la protecci´n de la informaci´n. Debido a la facilidad con que o o puede borrarse la informaci´n almacenada, los sistemas operativos ofre- o cen dos mecanismos principalmente para asegurar archivos y directorios contra los descuidos, propios o ajenos: • un sistema de copias de seguridad (backup), que se pone en mar-
  • 103. ´ 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 o multiusuario, consiste en permitir el acceso y garantizar que el trabajo de cada usuario es privado, ocult´ndolo a los dem´s. Este efecto se a a consigue por lo general mediante un sistema de marcas, que identifica al propietario de los distintos archivos y directorios, y de contrase˜as, n que permite reconocer el usuario concreto que se encuentra ante cada terminal. 4.2.3 N´ cleo u Se emplea frecuentemente el t´rmino n´cleo o kernel para referirse a e u aquella parte del sistema operativo m´s cercana a la m´quina y que, por a a lo tanto, siempre est´ almacenada en la memoria principal (RAM). El a n´cleo es un c´digo muy frecuentemente usado por otros programas de u o un nivel superior (aplicaciones o utilidades). Por esta raz´n se presenta, o aparentemente, como una ampliaci´n del conjunto de instrucciones de o la 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.
  • 104. 110 Cap´ ıtulo 4. Sistemas Operativos 4.2.4 Multiprogramaci´n o En un sistema de multiprogramaci´n el computador puede ejecutar o varios programas simult´neamente. a La idea b´sica es aprovechar la mayor rapidez del procesador respecto a de los perif´ricos, discos o impresoras, en atender una petici´n, o bien e o aprovechar el tiempo que tarda un usuario en introducir sus ordenes a ´ trav´s del teclado. Con todo esto, se aprovecha mejor la potencia del e procesador que, a fin de cuentas, es el elemento m´s caro del computador. a Para poder trabajar con multiprogramaci´n, el sistema operativo o debe disponer de un mecanismo que permita que la memoria sea asignada correctamente, y compartida entre los distintos trabajos que se ejecutan. A diferencia de la memoria, en la que pueden caber varios programas a la vez, la UCP en un instante concreto est´ dedicada solamente a un a programa de usuario o bien a realizar una de las m´ltiples tareas precisas u para la gesti´n del sistema. Hace falta un mecanismo que planifique esta o actividad y su dise˜o es fundamental para el sistema operativo; este n mecanismo 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 o trabajos que est´n esperando turno se ponen “en cola”, de la cual se debe a extraer el candidato m´s id´neo para utilizar la UCP en cada momento. a o El proceso de selecci´n entre los miembros de esta cola es realizado por o el planificador, pudiendo existir m´s de uno, por ejemplo, para controlar a los sistemas de tiempo compartido a corto, medio y largo plazo. Para elegir el mecanismo adecuado hay que tener en cuenta cu´l es a el uso principal del computador. Si s´lo se est´n ejecutando procesos o a por lotes (v´ase p´g. 104 o la secci´n A.2.5) durante la noche es posible e a o realizarlos uno tras otro, pero si existen usuarios realizando consultas puede ponerse como objetivo que ninguno de ellos est´ m´s de un de- e a terminado n´mero de segundos sin atenci´n. Las disciplinas de gesti´n u o o de colas van desde la m´s simple, consistente en una cola en la que el a primero que llega es el primero que es atendido, hasta mecanismos muy complejos en m´quinas con varios procesadores, donde las decisiones se a
  • 105. ´ 4.2. Conceptos basicos de los sistemas operativos 111 toman teniendo en cuenta otros par´metros adem´s del tiempo, como a a por ejemplo la prioridad (importancia) de cada proceso. En los sistemas medios tiene inter´s conocer el mecanismo denomi- e nado round-robin, que ha sido especialmente dise˜ado para sistemas de n tiempo compartido en los que hay varios usuarios en distintas terminales compartiendo un computador. Cada uno de ellos debe tener la impresi´n o de que el sistema trabaja s´lo para ´l; para ello, se define una unidad o e de tiempo (llamado quantum) que oscila entre 10 y 100 milisegundos, en funci´n del sistema, y la cola se trata como si fuera una circunferencia o de forma que el algoritmo va concediendo una parte de tiempo fija a cada usuario, transcurrido el tiempo asignado se le retira el control de la 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 de programas que regulan la comunicaci´n de la m´quina con el usuario o a y se˜alan las reglas que rigen esta comunicaci´n. Esto es lo que se n o denomina 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 u embargo, cada vez m´s se tiende a la utilizaci´n de interfaces gr´ficos a o a por lograrse con ellos una mayor productividad a costa de una menor fatiga del usuario, ya que ´ste no necesita conocer los comandos precisos e para activar cada una de las opciones disponibles. El sistema pionero del interfaz gr´fico ha sido el de los computadores a Apple-Macintosh. Actualmente existe un potente interfaz gr´fico para a
  • 106. 112 Cap´ ıtulo 4. Sistemas Operativos el sistema dos como es windows. El sistema unix tambi´n tiene varios e sistemas de ventanas como open-look y open-windows. Reciente- mente, ha aparecido una versi´n de windows independiente de dos: el o sistema 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 sea ejecutado debe estar en la memoria principal, habr´ que gestionar la a ocupaci´n de memoria por parte de los programas que el procesador o est´ atendiendo. a Para optimizar la memoria del computador existen dos soluciones extremas: tener una memoria real muy grande (lo cual resulta caro) o tener los datos en los discos y hacerlos entrar y salir todas las veces que haga falta (lo que resulta ineficiente). Entre ambas soluciones existen varias 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
  • 107. ´ 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 o programa s´lo con una parte de ´ste en la memoria, de manera que se o e pueda solicitar m´s memoria en cuanto sea preciso. a La mayor ventaja que tiene este sistema es que permite trabajar con programas mayores que el total de la memoria f´ ısica disponible. Con los computadores modernos no es frecuente que tengamos programas m´s a grandes que el total de la memoria disponible, por lo cual la introducci´n o
  • 108. 114 Cap´ ıtulo 4. Sistemas Operativos de memoria virtual puede parecer un lujo excesivo. Sin embargo, puede ocurrir que muchas partes de un programa no suelen ejecutarse salvo en muy raras ocasiones, como es el c´digo para el manejo de las condiciones o de error, tablas internas o rutinas que tratan s´lo casos especiales que o afectan a muy pocos de los datos. Con la t´cnica de memoria virtual e bastar´ mantener en la memoria el n´cleo del programa, consigui´ndose, ıa u e en cualquier caso, un mejor aprovechamiento de la memoria f´ ısica, que es cara. La idea de memoria virtual puede ser implantada en un sistema ope- rativo concreto mediante varias soluciones, siendo las m´s corrientes las a de paginado y las de segmentaci´n. o Memoria virtual paginada.- Las t´cnicas de paginaci´n consisten e o en la separaci´n de los conceptos de espacio de direcciones y posiciones o de memoria, o lo que es lo mismo, entre memoria l´gica y memoria o f´ ısica. Para comprender mejor en qu´ consiste la t´cnica de paginado e e consideraremos el siguiente ejemplo: Sup´ngase un computador con un campo de direcciones de 16 bits o y una memoria principal de 8Kb, en palabras de un byte. En principio se pueden direccionar (espacio de direccionamiento) 216 = 65536 = 64K palabras de memoria (de un byte) pero s´lo existe espacio f´ o ısico para 8·1024 = 8192 palabras, para direcciones de memoria desde 0 hasta 8191. Como la memoria l´gica es mucho mayor que la realmente disponible o habr´ que dise˜ar un m´todo que soporte llamadas, por ejemplo, a la a n e direcci´n 8195 sin que se genere un desagradable mensaje de error. Una o posible soluci´n para evitar los errores cuando se producen llamadas a o memoria con direcciones superiores a las realmente disponibles, como la 8195, ser´ usar aritm´tica modular y considerarla simplemente como ıa e la direcci´n 3 = 8195 − 8192 (del mismo modo que sabemos que las 15 o horas son las 3 de la tarde: 3 = 15 − 12). Esta alternativa implicar´ a la inclusi´n de una funci´n de conversi´n entre direcciones l´gicas y o o o o direcciones f´ ısicas. En un sistema con memoria virtual paginada se ejecutar´ los si- ıan guientes pasos cuando se recibe la llamada a la direcci´n 8195, que no o
  • 109. ´ 4.2. Conceptos basicos de los sistemas operativos 115 se 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 virtual se refleja de forma clara la divisi´n entre programas y datos. La idea o consiste en dividir el espacio de direcciones en segmentos, cada uno de los cuales corresponder´ a una rutina, un programa o un conjunto de a datos; en este caso se estar´ explotando el concepto de modularidad de a los programas construidos estructuradamente. La segmentaci´n es una t´cnica que organiza el espacio l´gico de me- o e o moria en segmentos (bloques independientes) de tama˜o variable, que n se colocan en la memoria f´ ısica mediante algoritmos de localizaci´n de o espacio libre. Puesto que cada segmento constituye un espacio de direc- ciones distinto, diferentes segmentos pueden crecer o encoger de manera independiente, sin que se afecten entre s´ por supuesto, aunque los seg- ı; mentos pueden crecer, un segmento se puede llenar y, en este caso, se producir´ un mensaje de error. a La especificaci´n de una direcci´n en una memoria segmentada (tam- o o bi´n llamada bidimensional) debe proporcionar dos componentes: un e n´mero de segmento y la direcci´n dentro del segmento. Cada segmento u o forma una entidad l´gica que el programador puede tener en cuenta para o asignarle distintos tipos de protecci´n; por ejemplo, si un segmento con- o tiene un procedimiento, entonces se especificar´ que es un segmento de a
  • 110. 116 Cap´ ıtulo 4. Sistemas Operativos ejecuci´n, prohibi´ndose la escritura; si contiene una pila se especificar´ o e a como de lectura y escritura, pero no de ejecuci´n. Esta pr´ctica es de o a gran utilidad en la detecci´n de errores de programaci´n. o o 4.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 n y potencia del hardware que manejan, y divide los sistemas operativos entre los grandes sistemas (mainframes), los de computadores de gama media (minis) y en los microcomputadores o micros. Cuanto m´s po- a tente, y por lo tanto m´s cara, sea la m´quina a la que va dirigido a a el sistema, mayor es el inter´s existente en optimizar los recursos, es- e forz´ndose el dise˜ador en conseguir una gesti´n de tareas din´mica y a n o a eficiente que permita gestionar simult´neamente m´ltiples programas sin a u intervenci´n del operador, con independencia de los dispositivos, etc. o Otro importante criterio de clasificaci´n es la divisi´n entre sistemas o o propietarios y sistemas abiertos, es decir, si el fabricante del hardware dispone de control exclusivo sobre el mismo o bien se trata de un sistema abierto a toda la comunidad industrial. En computadores peque˜os y medios es ya una norma la utilizaci´n n o de 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-Macintosh o algunos derivados de unix como aix o ultrix. La ventaja de un sistema abierto es la independencia de la m´quina a sobre la que se instala, por lo que tanto los programas fuente como las bases de datos o las transacciones, pueden ser transferidas de un hardware suministrado por un fabricante a otro distinto, independizando al usuario de los proveedores. Las ventajas de un sistema propietario es haber sido dise˜ado para un n hardware espec´ıfico, y por lo tanto obtiene de ´l las mejores prestaciones e posibles. Las interfaces a las bases de datos, monitores de teleproceso y otros productos del fabricante est´n exhaustivamente probados, por a
  • 111. 4.4. Ejercicios 117 lo que (al menos en teor´ existir´n menos problemas para utilizar tal ıa) a sistema. 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 a b´sicos de los sistemas operativos, sus funciones y sus principales modos de a funcionamiento. 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 a cesariamente incompleta, de dos de los sistemas operativos m´s conocidos y a difundidos 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
  • 112. 118 Cap´ ıtulo 4. Sistemas Operativos que se distribuyen al comprar un pc lo mantendr´n al d´ sobre las sucesivas a ıa actualizaciones del dos, proporcion´ndole una informaci´n mucho m´s com- a o a pleta. Para profundizar m´s en este sistema, un libro muy detallado sobre el a dos es [Jam90]. La bibliograf´ sobre unix es muy extensa, desde introducciones muy ge- ıa nerales hasta libros sobre parcelas muy especializadas. Una buena referencia que 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 o introducir los requisitos necesarios para abordar una muy interesante secci´n o de desarrollo de aplicaciones.
  • 113. Cap´ ıtulo 5 Lenguajes 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 n representar expresiones e instrucciones de forma inteligible para las com- putadoras. Los lenguajes de programaci´n son, en gran medida, comparables o a los lenguajes naturales: sus s´ ımbolos b´sicos constituyen su alfabeto, a y con ellos se construye el vocabulario del lenguaje, cuyos elementos se llaman tokens. Estos tokens se combinan de acuerdo con las reglas sint´cticas del lenguaje, formando expresiones y sentencias cuyo signifi- a cado viene dado por la sem´ntica del lenguaje. a Los lenguajes de programaci´n son sin embargo considerablemente o m´s simples que los naturales en su sintaxis y, especialmente, en su a sem´ntica. a En este cap´ıtulo se introducen distintos aspectos relacionados con los lenguajes de programaci´n. En primer lugar, hacemos una presen- o taci´n evolutiva, mostrando las aportaciones hechas por los lenguajes o
  • 114. 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 a ensambladores 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 o efect´a, cada vez en mayor medida, a trav´s de procedimientos formales, u e evit´ndose toda ambig¨edad y facilitando el estudio de las propiedades a u de 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 o que facilitan hoy d´ las distintas fases de desarrollo de programas. ıa 5.1 Lenguajes de bajo y alto nivel 5.1.1 Lenguajes orientados a la m´quina a Hablando estrictamente, los unicos s´ ´ ımbolos que comprenden los computadores son dos: el cero y el uno. Combin´ndolos apropiada- a mente, se forman las instrucciones, como se ha descrito en el cap´ ıtulo 3. La interpretaci´n de estas instrucciones est´ dirigida a componentes o a f´ ısicos de la m´quina subyacente, tales como el registro acumulador o a
  • 115. 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 ensamblador las direcciones de los operandos. Por estas razones tan obvias, estos rudimentarios lenguajes se llaman lenguajes orientados a la m´quina o, a m´s brevemente, lenguajes de m´quina. a a El programa de la figura 5.1 est´ escrito en el lenguaje m´quina a a definido en el cap´ ıtulo 3. Resulta evidente que, aun siendo los lenguajes m´quina el medio de a expresi´n natural para las computadoras, son ciertamente aparatosos o para el programador humano que deba redactarlos, leer o modificar los programas escritos en ellos. Presentan adem´s el inconveniente de no a ser transportables, esto es, no ser comprendidos por m´quinas diferentes. a Los lenguajes evolucionados han surgido para superar estas deficiencias. El primer paso para hacer m´s humana la programaci´n consisti´ a o o en introducir el uso de identificadores nemot´cnicos para referir instruc- e ciones y nombrar las direcciones de los operandos mediante s´ ımbolos en lugar 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
  • 116. 122 Cap´ ´ ıtulo 5. Lenguajes de programacion un lenguaje simb´lico como se indica en la figura 5.2. o Aunque el paso dado es importante, los lenguajes simb´licos con- o sisten s´lo en una representaci´n m´s inteligible de las instrucciones o o a de m´quina. El siguiente paso consisti´ en incorporar en los lengua- a o jes simb´licos macroinstrucciones, para representar secuencias de ins- o trucciones de utilizaci´n frecuente. Estos lenguajes se conocen como o ensambladores. Enseguida se comprendi´ la necesidad de escribir programas que tra- o dujeran textos escritos en ensamblador a textos escritos en lenguaje m´quina. Estos programas traductores se llaman tambi´n ensambla- a e dores. 5.1.2 Lenguajes de alto nivel A diferencia de los lenguajes orientados a la m´quina, los lenguajes a de alto nivel se componen de “t´rminos” y “frases” relacionados con el e problema en resoluci´n. As´ por ejemplo, una ecuaci´n de segundo grado o ı o ax2 + bx + c = 0 se podr´ resolver en un lenguaje de alto nivel como se ıa indica en la figura 5.3. Por razones obvias, se dice que los lenguajes de alto nivel est´n orien- a tados al problema. Esta ventaja es doble: por un lado, permiten al programador concentrar su atenci´n sobre el problema, ignorando los o detalles propios de la m´quina concreta que lo ha de resolver; por otra a parte, como el discurso de los programas de alto nivel es independiente de la m´quina, son altamente compatibles (transportables) entre m´quinas a a diferentes. En la figura 5.4 se clasifican los lenguajes de programaci´n, de m´s o a evolucionados a m´s cercanos a la m´quina. a a En los ultimos a˜os se ha desarrollado una generaci´n de lenguajes ´ n o de muy alto nivel, que incorporan diversos mecanismos para aumen- tar su capacidad expresiva en alg´n aspecto. En el apartado siguiente u introducimos algunos de esos modelos.
  • 117. 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
  • 118. 124 Cap´ ´ ıtulo 5. Lenguajes de programacion 5.1.3 Paradigmas de programaci´n o Programaci´n imperativa—programaci´n declarativa o o La forma tradicional de programar recibe el nombre de programaci´n o imperativa, ya que un programa no es m´s que una secuencia de ´rdenes a o o instrucciones que deb´ ser ejecutados por el computador. Este mo- ıan delo de computaci´n ha influido fuertemente en la naturaleza de los o lenguajes de programaci´n; aunque la evoluci´n de ´stos ha permitido o o e esconder muchas caracter´ ısticas de bajo nivel, los lenguajes convencio- nales todav´ presentan un estilo de programaci´n basado en dotar al ıa o computador de procedimientos para resolver problemas, dici´ndole c´mo e o se resuelven. Este paradigma de programaci´n obliga al programador a o tener siempre presentes los detalles particulares del computador que eje- cutar´ sus programas. a Algunos de los lenguajes imperativos m´s difundidos en la actualidad a son el COBOL, BASIC, FORTRAN, Pascal, Modula 2 y C. Una de las opciones para hacer m´s simple el trabajo de programar a consiste en separar al programador del modelo computacional subya- cente. De este modo se podr´ concentrar en el desarrollo del programa a como una especificaci´n clara y concisa de la respuesta a un problema. o Al elegir esta soluci´n se est´ optando por un estilo declarativo de pro- o a gramaci´n, llamado as´ porque lo que se hace es “declarar” (especificar) o ı el problema que se quiere resolver en lugar de proporcionar la secuencia de acciones que el computador debe ejecutar para hallar la respuesta. En lugar de indicar c´mo operar, en programaci´n declarativa se o o indica qu´ resolver. Por lo tanto, los lenguajes declarativos est´n m´s e a a cerca del enunciado que de la resoluci´n propiamente dicha. Por eso se o les considera lenguajes de muy alto nivel. Dentro del paradigma de programaci´n declarativa se han desarro- o llado dos enfoques: la programaci´n funcional y la programaci´n l´gica. o o o
  • 119. 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- o ciones que el computador debe evaluar. La tarea primordial del pro- gramador es la construcci´n de una funci´n que resuelva un problema o o dado; esta funci´n puede depender de otras funciones subsidiarias y esta o dependencia se expresa en una notaci´n que obedece los principios ma- o tem´ticos elementales. El papel del computador no es otro que el de a evaluar las funciones e imprimir los resultados. Esta caracter´ıstica ha permitido que los lenguajes funcionales no dependan de ning´n modelo u particular de arquitectura, en contraste con la mayor´ de los lenguajes ıa imperativos. La programaci´n funcional tiene sus ra´ o ıces en la l´gica y en las ma- o tem´ticas. En los programas funcionales se hace uso de conceptos y a notaciones familiares a toda persona que tenga conocimientos elementa- les de matem´ticas; de hecho, la derivaci´n de programas funcionales a a o partir de su especificaci´n se suele realizar mediante razonamiento ecua- o cional (aplicando las ecuaciones que definen las funciones implicadas en el programa). Un programa funcional puede interpretarse, bien como un conjunto de definiciones (declaraciones) de propiedades o bien como un conjunto de reglas de computaci´n. La primera interpretaci´n la realiza el pro- o o gramador que est´ especificando (declarando) el problema, diciendo qu´ a e se busca en lugar de c´mo se encuentra; por el contrario, el computador o
  • 120. 126 Cap´ ´ ıtulo 5. Lenguajes de programacion entiende el programa como un conjunto de reglas de reescritura que le permitir´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 fue el LISP, aunque no se considera completamente funcional por tener tambi´n caracter´ e ısticas no funcionales. Otros ejemplos de lenguajes fun- cionales desarrollados en la actualidad son el Hope, ML y Miranda. El ejemplo de la figura 5.5 muestra, en el estilo de estos lenguajes, la so- luci´n de la ecuaci´n de segundo grado. o o Programaci´n l´gica o o En programaci´n imperativa, un programa no es otra cosa que el o gui´n de las acciones que el computador debe seguir, y su ejecuci´n o o consiste en obedecer esas ´rdenes. En programaci´n l´gica, un programa o o o consiste en una serie de sentencias de la l´gica matem´tica que describen o a un 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 o relaciones entre objetos. Las siguientes sentencias por ejemplo establecen una parte del pedi- gree de un perro:
  • 121. 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”, ıan etc. Establecen hechos ciertos sobre objetos concretos. Las reglas esta- blecen tambi´n verdades, aunque se refieren a objetos gen´ricos,1 por lo e e que 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, sus padres), y que se verifica para X = laika X = pipo ´ ofreciendo las dos soluciones. Esta es una caracter´ıstica propia de los lenguajes l´gicos: la posibilidad de dar muchas respuestas a un objetivo o planteado. 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 u gen´ricos con palabras empezadas en may´scula. e u
  • 122. 128 Cap´ ´ ıtulo 5. Lenguajes de programacion con lo que se observa otra peculiaridad de los lenguajes l´gicos: los o argumentos de una relaci´n pueden representar datos o resultados de la o misma, 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 u hijo 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 o su hijo (de A) o bien si N es hijo de alg´n X y A es un antepasado de u ese X. Este modelo de programaci´n est´ fuertemente basado en la l´gica o a o de primer orden. El lenguaje de programaci´n l´gica por antonomasia o o es 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 o datos iniciales, y evoluciona efectuando acciones que alteran los valores de esos datos. Como se ve, datos e instrucciones est´n separados de a forma que, en principio, cualquier instrucci´n tiene acceso a cualquier o objeto. 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
  • 123. 5.1. Lenguajes de bajo y alto nivel 129 en ´l, como agentes interactuantes. Una descripci´n de objetos tiene dos e o aspectos: los valores de sus propiedades f´ ısicas, y las acciones (m´todos) e que 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 e el 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, pueden evolucionar en paralelo, por lo que este enfoque es un modelo id´neo o para la programaci´n concurrente. o En el paradigma de la POO un programa se puede entender como un modelo f´ısico que simula el comportamiento de una parte (real o imaginaria) del mundo. Esta perspectiva difiere de la imperativa, en la que se hace mayor hincapi´ en las manipulaciones de estructuras de e datos 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 ısica que a las Matem´ticas en el sentido de que, en lugar de describir una a parte del mundo mediante ecuaciones matem´ticas, lo que se hace es a construir literalmente un modelo f´ ısico. Uno de los primeros lengua- jes orientados a los objetos se llam´ ACTOR, porque este paradigma o nos presenta los objetos como actores sobre un escenario, dispuestos a interpretar 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
  • 124. 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 o tada a objetos puede resumirse en los siguientes pasos:
  • 125. ´ ´ 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- o gramaci´n orientada a los objetos son Smalltalk y C++. Otros lengua- o jes, est´n incorporando algunas de las caracter´ a ısticas de la programaci´n o orientada 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 del vocabulario de un lenguaje se agrupan entre s´ formando estructuras ı, sint´cticas, que posteriormente son interpretadas por un traductor. En a este apartado estudiamos c´mo se describen los dos aspectos, sintaxis y o sem´ntica, de un lenguaje de programaci´n. a o Por ejemplo, dir´ ıamos que en castellano son v´lidas sint´cticamente a a las “frases” compuestas por “sujeto” y “predicado”; en cuanto al signi- ficado, se entiende que el sujeto es quien realiza la acci´n, mientras que o el predicado precisa la acci´n que se lleva a cabo. o En este caso especial´ ısimo, la descripci´n de cierta estructura del o castellano se ha llevado a cabo en el propio idioma castellano. Por el contrario, los lenguajes de programaci´n no suelen describirse mediante o lenguajes de programaci´n, sino mediante los metalenguajes, llamados o as´ porque son lenguajes cuyo cometido es describir otros lenguajes. ı 5.2.1 Sintaxis La sintaxis estudia la forma de combinar los tokens de un lenguaje para formar frases correctas. Se concreta en una serie de reglas que
  • 126. 132 Cap´ ´ ıtulo 5. Lenguajes de programacion expresan las estructuras sint´cticas v´lidas en el lenguaje. El recono- a a cimiento de esas estructuras es necesario para dotarlas de significado y ejecutar las acciones que representan. Ejemplos de esas reglas, dados en nuestro idioma y para ´l, son los e siguientes: • 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 de s´ ımbolos terminales, que son los elementos v´lidos de dicho lenguaje. a Las aplicaci´n de las reglas (tambi´n llamadas producciones), permiten o e sustituir 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´ ı ´ ımbolo inicial , no terminal, que es el embri´n del que surgen las frases por la o aplicaci´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 a taci´n BNF y los diagramas sint´cticos, que introducimos seguidamente. o a Notaci´n BNF o Una de las formas m´s extendidas para describir la sintaxis de los a lenguajes de programaci´n es la notaci´n BNF (Backus-Naur Form), o o utilizada por sus autores para el desarrollo del lenguaje Algol 60. Dado que la notaci´n BNF es un lenguaje que nos permite describir la sintaxis o de otro lenguaje, pertenece al grupo de los metalenguajes. Para describir una producci´n en BNF hay que expresar la equiva- o lencia 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
  • 127. ´ ´ 5.2. Descripcion de los lenguajes de programacion 133 veces metas´ ımbolos), que no pertenecen al lenguaje sino a BNF. Dichos metas´ı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 los otros s´ ımbolos no terminales, y pantal´n, camisa, sombrero, gris y ne- o gro son los s´ ımbolos terminales. Las frases v´lidas generadas por esa a gram´tica son: a pantal´n gris o pantal´n marr´n o o camisa gris camisa marr´n o sombrero gris sombrero marr´n o Observaciones • 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
  • 128. 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 a ticas de un lenguaje es mediante diagramas o grafos sint´cticos. La a
  • 129. ´ ´ 5.2. Descripcion de los lenguajes de programacion 135 sintaxis del lenguaje Pascal, por ejemplo, fue inicialmente expresada de esta 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 a el s´ ımbolo inicial y los s´ ımbolos no terminales dentro de cuadrados o rect´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 ! ! !
  • 130. 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 o frases correctas, pues es suficiente con seguir el sentido de las flechas e ir insertando los correspondientes s´ımbolos seg´n aparecen en el diagrama. u Rec´ ıprocamente, si al ir leyendo los s´ımbolos de una frase se sigue uno de los caminos contemplados en el diagrama sint´ctico, esa frase es a correcta desde el punto de vista sint´ctico. a Tanto la notaci´n BNF como los diagramas sint´cticos son equiva- o a lentes, si bien, en general ´stos ultimos son de m´s f´cil comprensi´n e ´ a a o y se aconsejan como punto de partida en la definici´n de lenguajes de o programaci´n. o Ejemplo Un identificador en Pascal se expresa mediante una letra aislada o seguida por una secuencia de letras o n´meros o el car´cter de u a subrayado, “ ”. 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´ ı:
  • 131. ´ ´ 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 e sintaxis correcta de los lenguajes. La sem´ntica de un lenguaje trata a del significado asociado con los programas correctos en ´l, esto es, de su e funcionamiento. Es claro que lo m´s natural y r´pido para explicar un lenguaje es a a proceder informalmente, a trav´s de ejemplos o, m´s a´n, matizando e a u el exacto funcionamiento de cada construcci´n sint´ctica (declaraci´n, o a o sentencia, etc.) No obstante, en los ultimos a˜os, ha surgido la nece- ´ n sidad 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- ı u males de los lenguajes naturales y se consigue un entorno formal que facilita 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 a dado por el modo con que la m´quina lleva a cabo su evaluaci´n o su a o ejecuci´n. As´ la interpretaci´n de un programa consiste en reproducir o ı, o la historia de los cambios de estado que producen sus construcciones al interpretarse. La sem´ntica operacional de un lenguaje se define dando la funci´n de a o transici´n (⇒) que asocia a una construcci´n sint´ctica, en cada estado, o o a el nuevo estado. Abreviadamente, escribimos K: E ⇒ E
  • 132. 138 Cap´ ´ ıtulo 5. Lenguajes de programacion para indicar que, al interpretar la construcci´n sint´ctica K en el estado o a E, se origina el estado E . Por ejemplo, si representamos el estado inicial de una m´quina me- a diante {. . . , A = 2, B = 5, . . .}, la ejecuci´n de o begin A := A + B; B := A − B; A := A − B end produce 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 a la ejecuci´n (sem´ntica operacional estructural ) o ignorarlos (sem´ntica o a a
  • 133. ´ ´ 5.2. Descripcion de los lenguajes de programacion 139 natural ):    begin           ...   ...    A := A + B;              A=2   A=5  B := A − B; : ⇒       B=5     B=2     A := A − B               ... ... end Sem´ntica denotacional a El significado de una construcci´n sint´ctica viene dado por el efecto o a que produce. En lugar de explicar c´mo se efect´ a cada construcci´n o u o sint´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 o un significado a cada significante. Los significantes son las posibles construcciones v´lidas del lenguaje, a y est´n definidos por las reglas sint´cticas, agrupados en distintas cate- a a gor´ ıas: declaraciones, expresiones, instrucciones, etc. Los significantes son 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 a a literales, variables, expresiones y funciones num´ricas; puesto que el e efecto de una instrucci´n de asignaci´n consiste en alterar el estado de la o o memoria, 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 o y la salida, que podr´ consistir matem´ticamente en un vector y sendas ıan a listas. Si representamos esas tres entidades mediante M , I y O, el estado de 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)
  • 134. 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 , . . .). a Como se ve, el efecto asociado a cada construcci´n K se precisa mediante o una funci´n, S[[K]], llamada su funci´n sem´ntica. o o a Siguiendo con el ejemplo anterior, podemos interpretar la instrucci´n o compuesta 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 a interpretar las dem´s construcciones sint´cticas (tales como las decla- a a raciones, los identificadores, los literales o las expresiones) se necesita igualmente formalizar sus conjuntos dominio y codominio asociados. Los modelos matem´ticos correspondientes a estas entidades se llaman de- a notaciones, de donde procede el nombre de este enfoque de la sem´ntica. a Sem´ntica axiom´tica a a Este enfoque atiende a las “propiedades” que tiene la interpretaci´n o de cada sentencia I. Estas propiedades se expresan a trav´s de aserciones e sobre el estado de la m´quina abstra´ antes y despu´s de esa sentencia. a ıda, e Se escribe {C0 } I {C1 } para expresar que, si se verifica C0 al comienzo de la instrucci´n I, o cuando ´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 o s´lo que llegaremos a C1 “si ´sta termina” o e
  • 135. 5.3. Procesadores de lenguajes 141 estado previo a I se llama precondici´n, y la postcondici´n (C1 ) se refiere o o al 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 a piedades que verifica un programa, gracias al empleo de la l´gica de o predicados. 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 e gramas escritos en lenguajes de alto nivel, gracias a los traductores, pro- gramas que convierten programas escritos en lenguajes evolucionados en programas 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 respectivamente al programa inicial y al final. Estos t´rminos se aplican tambi´n a los e e lenguajes respectivos. El proceso de traducci´n se lleva a cabo en varias fases; en cada o una de ellas, pueden aflorar algunos de los errores, de diversa ´ ındole, cometidos por el programador. Por otra parte, una componente esencial
  • 136. 142 Cap´ ´ ıtulo 5. Lenguajes de programacion que manejan estas etapas es la tabla de s´ ımbolos, estructura de datos que contiene los identificadores que intervienen en el programa, junto con su descripci´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.
  • 137. 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
  • 138. 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- o dalidades 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. e Entre ambas modalidades, existen traductores mixtos, que en una pri- mera fase desarrollan una semicompilaci´n, que incluye diversas com- o probaciones l´xicas y sint´cticas, y produce una representaci´n del pro- e a o grama fuente en un c´digo intermedio; y en una fase posterior ejecutan o la interpretaci´n de ese c´digo intermedio. o o 5.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 ıan programas independientes. Entre ellos se pueden citar los siguientes:
  • 139. 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
  • 140. 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 programas que 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, o se acelera notablemente el proceso de creaci´n de programas, y se puede o disponer de recursos y ayudas a la programaci´n que ser´ impensables o ıan en 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
  • 141. 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.
  • 142. 148 Cap´ ´ ıtulo 5. Lenguajes de programacion 5.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
  • 143. ´ 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. o 5.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 a significativas sobre aspectos tan diversos como el estudio de las gram´ticas y a la teor´ de aut´matas, la sem´ntica, el desarrollo de traductores y entornos de ıa o a programaci´n y los diferentes paradigmas. Adem´s de in´til, ser´ vano pre- o a u ıa tenderlo en un texto introductorio y general como es ´ste, incluso limit´ndonos e a al terreno de las aplicaciones por profesionales no inform´ticos. a Encontramos que el estudio de los distintos mecanismos expresivos comunes a 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
  • 144. 150 Cap´ ´ ıtulo 5. Lenguajes de programacion de especificaciones. En el segundo tomo de este texto adoptamos el primer punto de vista; en [GGSV93] se adopta el segundo. Para ampliar conocimientos sobre los entornos de programaci´n, tampoco o parece haber nada tan recomendable como empezar por uno concreto. Las ultimas versiones de Turbo Pascal, de Borland ([Tur92]) son ejemplares en ´ ambos aspectos, lo que explica su gran difusi´n, tanto en el ambiente educativo o como en el de las aplicaciones. Naturalmente, la formaci´n lograda as´ dotar´ al estudiante de un punto o ı a de vista imperativo. No es ´ste un grave inconveniente (ya que ´ste ha sido y e e sigue siendo todav´ el paradigma de mayor difusi´n) siempre que su educaci´n ıa o o haya 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 vista panor´mica sobre los lenguajes de programaci´n de la pasada d´cada. Un libro a o e cl´sico sobre programaci´n en lenguaje Pascal es [Gro86]. Sobre programaci´n a o o funcional, [BW88] y [Bai90] son buenas introducciones, respectivamente en los lenguajes Miranda y Hope. En [GGSV93] se consideran ambos enfoques, el imperativo y el funcional. Una buena introducci´n al Prolog puede hallarse o en [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 e referencias sobre el tema proliferan. [Pas86], [Tho89] y [Weg89] son art´ ıculos introductorios a este modelo de programaci´n. o Finalmente, en [Wir86a] puede verse una explicaci´n ampliada de la no- o taci´n BNF y diagramas de flujo, as´ como una introducci´n a los problemas o ı o que plantea el an´lisis sint´ctico y la compilaci´n de programas en lenguajes a a o de alto nivel.
  • 145. Cap´ ıtulo 6 Bases 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 . . . . . . . . . . . . . . 165 6.1 Bases de datos y SGBD 6.1.1 Archivos y SGA En el cap´ ıtulo 2 se vio la posibilidad que tienen los computadores de trabajar con datos elementales (tales como n´meros reales, enteros, u caracteres y valores l´gicos) o de organizarlos en estructuras m´s com- o a plejas, tales como vectores o tablas. En el 4 se introdujeron los archivos como organizaci´n b´sica de la informaci´n, almacenada en un disposi- o a o tivo f´ ısico; entonces no fue preciso distinguir en ellos ning´n tipo de or- u ganizaci´n: pod´ considerarse como listas de elementos de caracteres. o ıan Ahora interesa considerar un archivo como una lista de datos del mismo tipo, cada dato de un archivo es un registro, y puede tener una estructura compuesta por varios datos de distinto tipo, llamados cam- pos. Considerando el fichero de los alumnos de un colegio como s´ ımil
  • 146. 152 Cap´ ıtulo 6. Bases de datos de archivo, cada ficha es un registro, y cada dato consignado en ella constituye un campo. La utilizaci´n de los archivos en inform´tica ha permitido desarrollar o a programas 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 a empresa, el de proveedores, el de art´ ıculos de un inventario, etc. Los programas desarrollados para gestionar archivos se llaman en general sistemas de gesti´n de archivos (SGA). Debido a su directa aplicabilidad, o la utilizaci´n de los archivos y los SGA han evolucionado much´ o ısimo en los ultimos a˜os, originando las bases de datos y, correspondientemente, ´ n los programas dedicados a su gesti´n.o 6.1.2 Bases de datos y SGBD Hablando en t´rminos muy amplios, una base de datos consiste en e una colecci´n de datos, organizados de forma integrada en archivos, junto o con un conjunto de programas dedicados a su gesti´n. Estos programas o forman 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 n operaciones 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 e pr´stamo y devoluci´n, elaboraci´n de informes sobre los clientes o so- e o o cios morosos, sobre las calificaciones de los alumnos de un curso en una asignatura y un largo etc´tera. e Sin embargo, en los SGA el programador deb´ controlar artesanal- ıa mente m´ltiples detalles, tales como la descripci´n pormenorizada de los u o datos, su almacenamiento en los dispositivos, la concordancia de cada rutina que maneje esos datos con la descripci´n de los mismos, la con- o cordancia de los datos cuando se repitan en distintos archivos, etc. M´s a a´n, el programador es responsable de que cada modificaci´n de los datos u o o de los programas se vea reflejada en todos esos puntos. En cambio, los SGBD controlan autom´ticamente operaciones como a el almacenamiento de los datos en los dispositivos f´ ısicos, as´ como el ı
  • 147. 6.1. Bases de datos y SGBD 153 acceso de los programas a los mismos; adem´s, aseguran la consistencia a de los datos repetidos y de los programas que los manejan, etc. Gracias a estas ventajas, con los SGBD es posible concentrar m´s a atenci´n en el problema (a su nivel) y mucha menos en los detalles (de o bajo 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 n permite, 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. n En 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 bases de 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 a ambos 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
  • 148. 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 a complejos y potentes, tienen mayores requerimientos de hardware y soft- ware, este problema se est´ atenuando con el aumento de potencia que a los computadores personales est´n experimentando hoy en d´ y con el a ıa abaratamiento 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 n intr´ ı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 n con 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 y facilita muchas otras. 6.1.3 Niveles de una base de datos La complejidad de una base de datos puede superarse dotando al sistema de una organizaci´n l´gica que facilite su manejo. Seg´n las o o u normas del ANSI/SPARC1 ([Stu75]), esta organizaci´n debe constar de o 1 American National Standard Institute.
  • 149. ´ 6.2. El modelo entidad-relacion 155 los tres niveles siguientes, de m´s pr´ximo al problema a m´s cercano a a o a la 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 n conceptual y l´gico, existen dos grupos de modelos: los basados en ob- o jetos, y los basados en registros. El modelo entidad-relaci´n es seguramente el m´s ampliamente acep- o a tado entre los primeros. En ´l se concibe la realidad como un conjunto de e objetos (llamados entidades y caracterizadas por atributos) y relaciones entre los mismos. En los ejemplos mencionados, constituye una entidad cada 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. ıan Considerando ahora este conjunto de entidades, podemos identificar en ellas los atributos siguientes: t´ ıtulo, autor, editorial, signatura, n´mero u de registro, etc.
  • 150. 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 o los “pr´stamos”. Tambi´n es posible caracterizar las relaciones con atri- e e butos (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- a tura 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
  • 151. ´ 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 e tra la figura 6.1.
  • 152. 158 Cap´ ıtulo 6. Bases de datos 6.3 Modelos de bases de datos basados en registros Tradicionalmente, se han considerado diferentes enfoques a la hora de organizar una base de datos. Cada uno adoptaba una concepci´n o distinta de la realidad, dependiendo del tipo de estructura de datos m´s a adecuado para construir un modelo del problema planteado. En el modelo jer´rquico subyace una estructura de datos arbores- a cente. Ejemplos de esta estructura son la genealog´ de los toros de lidia ıa y la organizaci´n de directorios de un disco. Esta orientaci´n se suele o o usar 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- a tan unos con otros mediante l´ıneas llamadas arcos. El ejemplo arquetipo de grafo es una red de carreteras: los arcos son los diferentes tramos, y los 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 o red la base de datos consiste en un conjunto de entidades (que son los nodos de un grafo), caracterizadas por atributos y relacionadas mediante relaciones (que son los arcos). En el modelo en red, a las relaciones se les llama ligaduras, y son siempre binarias, si bien es posible construir relaciones de cualquier orden combinando dichas relaciones binarias. En la actualidad, los modelos jer´rquico y en red se consideran am- a pliamente superados por el modelo relacional, que est´ muy desarrollado a y extensamente difundido, funcionando en equipos grandes y peque˜os.n Debido a su importancia, le dedicamos el siguiente apartado. 6.3.1 El modelo relacional El enfoque relacional considera una base de datos como un conjunto de tablas,2 que representan entidades o relaciones. Dados n conjuntos de 2 Llamadas relaciones, de donde viene el nombre de este modelo.
  • 153. 6.3. Modelos de datos basados en registros 159 entidades 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- o junto del producto cartesiano E1 × ... × En . Visto un conjunto de entidades como una tabla, cada fila representa una 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- o tidades vinculadas por ella. En realidad, no es preciso consignar cada entidad completa, sino que basta con incluir los atributos necesarios para determinarla un´ ıvocamente. Este conjunto de atributos se llama clave de 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 ıa dos relaciones, que almacenan respectivamente los datos personales de los 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 o clave de la segunda la forman los atributos nombreAs y nombreAl. En realidad, no se han establecido las relaciones concretas entre las entidades (para lo cual se requerir´ rellenar las tablas con los datos re- ıa ales) sino s´lo el encabezamiento de cada tabla asociada al que llamamos o esquema de la relaci´n. o 3 Se supondr´ para simplificar que los nombres de los alumnos no pueden repetirse, a y que tambi´n las asignaturas tienen nombres distintos. e
  • 154. 160 Cap´ ıtulo 6. Bases de datos Las relaciones establecidas para describir nuestro modelo no son las unicas posibles. De hecho, el planteamiento puede mejorarse f´cilmente, ´ a sustituyendo 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 e natura 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 o actualizaciones de la informaci´n. o Este proceso (llamado normalizaci´n) no siempre resulta tan senci- o llo. Sin embargo, mediante su empleo se llega a describir una base de datos gracias a relaciones naturales y sin redundancias, con las ventajas mencionadas. 6.4 Lenguajes asociados a los SGBD Visto el SGBD como un intermediario, deber´ proporcionar al admi- a nistrador un medio con que definir la base de datos durante su creaci´n o o realizar posteriores reestructuraciones, de acuerdo con los nuevos reque- rimientos, facilit´ndole el establecimiento de relaciones entre los datos. a Finalmente, deber´ poner al alcance del usuario toda la informaci´n para a o que ´ste la manipule de un modo flexible y eficiente. e Los SGBD proporcionan lenguajes de alto nivel para que los usuarios soliciten sus operaciones, ya que la propia base de datos oculta muchos detalles de la representaci´n y el almacenamiento de las relaciones, y o dichos 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
  • 155. 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. o 6.4.1 Lenguajes relacionales Se han desarrollado dos enfoques de los lenguajes relacionales: el a ´lgebra relacional y el c´lculo relacional, aunque la mayor´ de los len- a ıa guajes de consulta comercializados actualmente incluyen caracter´ısticas de 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 como Informix-SQL, Ingres y Oracle. A continuaci´n presentamos brevemente o los 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
  • 156. 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
  • 157. 6.5. Elementos de un SGBD 163 6.5 Elementos de un SGBD Siguiendo la presentaci´n por capas que se hizo de los sistemas ope- o rativos, 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
  • 158. 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 o computador.
  • 159. ´ 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. o 6.7 Comentarios bibliogr´ficos a Las bases de datos constituyen, ya se ha dicho, un area de directa aplicaci´n ´ o en muy diversos campos del mundo empresarial. Pero tampoco puede negarse
  • 160. 166 Cap´ ıtulo 6. Bases de datos la contribuci´n de los SGA, que tambi´n han evolucionado considerablemente, o e ofreciendo un elevado nivel, muy cercano a los problemas reales, proporcionando un ambiente sencillo, apto para su uso por no profesionales de la inform´tica. a Un ejemplo de SGA es el dBase, cuyo reducido coste, sencillo manejo y escasos requerimientos f´ısicos la hacen tremendamente asequible. Entre los numerosos libros que se han escrito sobre ella, encontramos en [Bye90] una referencia b´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 e entornos 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 a datos 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- a dido en la actualidad (DB2, Oracle, Informix, Arity, RDB, etc.) En [HH89] se presenta este lenguaje, desde su fundamentaci´n en la l´gica del primer orden o o hasta su utilizaci´n en algunos SGBD comercializados. o Entre los numerosos textos sobre esta tem´tica, indicamos [KS93], [Dat93] a y [MP93], muy completos y actualizados. En los a˜os noventa ha surgido un nuevo enfoque de bases de datos, el de n las orientadas al objeto, que est´ despertando un vivo inter´s y tiene una gran a e y r´pida acogida. [SH90] es un estudio comparado de sus principios con los del a modelo relacional.
  • 161. Cap´ ıtulo 7 Historia de los instrumentos 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 a desarrollo; por eso, junto al inter´s que despierta el origen de los ins- e trumentos de c´lculo y la inform´tica, surge la necesidad de conocer, a a siquiera someramente, su alcance en la actualidad, as´ como la de ima- ı ginar las expectativas de futuro previsibles. 7.1 Precursores de los computadores digitales 7.1.1 La antig¨ edad u Desde que los hombres aprendieron a contar han necesitado apoyarse en el c´lculo para manipular cantidades y buscar m´todos para facili- a e tarlo. Estos m´todos fueron bastante rudimentarios hasta que los sabios e
  • 162. 168 Cap´ ´ ıtulo 7. Historia de los instrumentos de calculo y astr´nomos hind´es recogieron la herencia greco-babil´nica inventando o u o la numeraci´n posicional actual. o Con el desarrollo de esos m´todos, fue necesario anotar n´meros (ya e u fueran considerados datos, cantidades auxiliares o resultados finales), apareciendo as´ los primeros instrumentos de c´mputo: el uso de los ı o dedos con tal objeto condujo a las primeras t´cnicas de c´lculo digital; y e a parecida finalidad tuvo el uso de piedras (calculi, t´rmino latino del que e procede la palabra c´lculo) entre los romanos, el de los nudos (quipa) a sobre una cuerda, o las muescas practicadas por diversos pueblos sobre varas de madera. Desde entonces, los avances se han debido a progresos en los m´todos, e en los instrumentos y en la integraci´n de ambos. o Dos utensilios de esta ´poca merecen ser citados: la m´quina anal´- e a o gica de Antic´ıteros, precursora de los calendarios astron´micos bizanti- o nos; y especialmente el ´baco, que apareci´ entre el tercer y el primer a o milenio a. C., y puede ser considerado como la primera m´quina digital, a ya basada en la numeraci´n posicional. o 7.1.2 Antecedentes del c´lculo mec´nico a a Los aut´matas de reloj que todav´ adornan los campanarios de las o ıa iglesias medievales (a partir de finales del s. XIII) son automatismos mec´nicos dise˜ados para reproducir una secuencia fija de movimientos. a n Precisamente se les ha llamado aut´matas de programa interior para o expresar as´ que la serie de sus movimientos est´ intr´ ı a ınsecamente descrita en su maquinaria. 7.1.3 La m´quina de Pascal a Hacia la mitad del s. XVII, Pascal construy´ una calculadora, capaz o de sumar y restar, bas´ndose en la pieza fundamental de los engranajes a de los molinos: la rueda dentada. El funcionamiento de la m´quina de a Pascal puede compararse al de un cuentakil´metros: cada rueda posee o diez posiciones y, a cada vuelta, provoca en la siguiente un arrastre de una posici´n. o
  • 163. 7.1. Precursores de los computadores digitales 169 Son directos descendientes de la m´quina de Pascal las m´quinas a a electromec´nicas de oficina, hoy ya en desuso, y las UAL de los actuales a computadores, cambiando las ruedas dentadas por circuitos electr´nicos. o En 1673, Leibnitz perfeccion´ la m´quina de Pascal, incorpor´ndole o a a la multiplicaci´n (por adici´n repetida del multiplicando en diferentes o o o ´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- o gresos consistieron en perfeccionamientos menores hasta finales del siglo XIX, en que se supo incorporar a las m´quinas de c´lculo una aportaci´n a a o procedente 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- a rior, debido a que las instrucciones son aportadas por el hombre junto con los datos, como ocurre con las calculadoras m´s simples. No obs- a tante, sus instrucciones son demasiado simples como para poder consi- derarse un programa. Esta noci´n apareci´ cabalmente con la m´quina o o a de Jacquard, mec´nico franc´s que en 1790 concibi´ la idea de un telar a e o autom´tico, capaz de tejer sus dibujos obedeciendo secuencias de ins- a trucciones previamente registradas en tarjetas perforadas. El telar de Jacquard 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 o concepto 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 ıa tarjetas (descriptoras de operaciones) y ejecut´ndolas sucesivamente. a La gran aportaci´n de Babbage consiste en reunir las dos siguientes o caracter´ ısticas: • la flexibilidad de las calculadoras de Pascal y Leibnitz, que operan sobre distintos datos, pero carecen de automatismo, estando su
  • 164. 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 a cias. Repetidamente se ha sostenido que la complejidad de esta m´quina a rozaba probablemente los l´ımites de la mec´nica; sin embargo, estudios a recientes [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 o 7.1.5 La tabulaci´n mec´nica o a El desarrollo de los estados modernos fue lo que determin´ la nece- o sidad de procesar grandes vol´menes de datos: siguiendo un mandato u constitucional en EE.UU., era necesario realizar un censo de la poblaci´no cada diez a˜os. En 1886 se hizo patente la imposibilidad de obtener los n resultados del censo de 1880 antes de 1890. Consciente de esta situaci´n, o Hollerit, funcionario de la oficina de censos, ide´ un sistema de tabu- o laci´n de los datos basado en tarjetas perforadas similares a las del telar o de Jacquard. 1 Entre los muchos campos que abarc´ Babbage citamos los primeros m´todos que o e posteriormente originaron la Investigaci´n Operativa. o
  • 165. 7.2. Nacimiento de los computadores 171 Con su sistema, Hollerit consigui´ procesar el censo de 1890 en la o cuarta parte del tiempo requerido para el de 1880. Su m´todo fue tan e eficiente que abandon´ la Oficina de Censos, e inaugur´ una compa˜´ de o o nıa desarrollo de m´quinas electromagn´ticas (incorporando a su invento los a e avances en electromec´nica y electricidad, construidos para perfeccionar a el 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 o perdur´ hasta finales de los a˜os setenta. o n 7.2 Nacimiento y evoluci´n de los o computadores digitales En la primera mitad del siglo XX, gracias a los avances en tecnolog´ ıa electr´nica, se crearon las primeras calculadoras electromec´nicas, que o a funcionaban a base de rel´s. e Al poseer los rel´s dos estados (abierto y cerrado), constituyen el ele- e mento ideal para representar los dos d´ ıgitos de la numeraci´n binaria (0 o y 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- e paces de albergar resultados parciales. Adem´s, estos instrumentos eran a capaces de seguir secuencias de instrucciones almacenadas previamente sobre tarjetas perforadas. Los primeros computadores que funcionaron a base de tecnolog´ ıa el´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.
  • 166. 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 a por la electricidad: el tubo de rayos cat´dicos, el transistor, los circuitos o impresos 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 n tareas muy espec´ ıficas. Por ello, carec´ por completo de versatilidad, ıan debido a la dificultad que entra˜aba reprogramarlas. n 7.2.1 El modelo de von Neumann En 1945, von Neumann dio el paso definitivo, incorporando a las m´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 o esencia 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 cableado 7.2.2 Generaciones tecnol´gicas o Las m´quinas basadas en el modelo de von Neumann se comercia- a lizaron en los a˜os cincuenta (1952-55) y, desde entonces, la carrera ha n sido y sigue siendo imparable. De esta d´cada parten las siguientes ge- e neraciones tecnol´gicas: o 2 Electronic Numerical Integrator And Calculator. 3 Tambi´n conocido como M´quinas de von Neumann. e a
  • 167. 7.2. Nacimiento de los computadores 173 Primera generaci´n o Las v´lvulas electr´nicas desplazaron a los rel´s, y los computadores a o e adquirieron velocidad y potencia. Citamos entre los computadores de la primera generaci´n el ENIAC, terminado en 1946, y el UNIVAC,4 pri- o mera m´quina con la arquitectura de von Neumann. El modus operandi a era 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 ellos permanec´ inactivo. ıa Segunda generaci´n o El aumento de potencia se debe a una innovaci´n de los laboratorios o Bell en 1948: el transistor. En cuanto al modo de trabajar, se introdujo la simultaneidad de las operaciones de c´lculo con las de carga y salida, a reduci´ndose los per´ e ıodos de ocio del procesador. Para aumentar la velocidad de las operaciones de carga/salida, que retrasaban todo el proceso, se introdujo el uso de cintas magn´ticas, e m´s r´pidas que las tarjetas perforadas. Este modo de trabajar se llama a a off-lining. Tercera generaci´n o Tecnol´gicamente, los avances en velocidad y potencia se deben a la o incorporaci´n de circuitos integrados (1952) y memorias de semiconduc- o tores (1971). 4 UNIVersal Automatic Computer.
  • 168. 174 Cap´ ´ ıtulo 7. Historia de los instrumentos de calculo En esta generaci´n el trabajo se caracteriza por explotar la simul- o taneidad del procesamiento con las operaciones de entrada/salida me- diante la multiprogramaci´n, consistente en que varios programas co- o existen en memoria, y cuando uno de ellos debe realizar una operaci´n o de entrada/salida, el procesador no se detiene, sino que se dedica a otro programa. As´ la UCP nunca est´ ociosa habiendo trabajo por hacer, ı, a facilit´ndose adem´s la asignaci´n de prioridades a los programas que se a a o encuentran a la espera. Cuarta generaci´n o Se incorporan nuevas tecnolog´ de fabricaci´n y de integraci´n de ıas o o los 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.
  • 169. 7.3. Evolucion de los lenguajes y de la metodolog´ ´ ıa 175 7.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 e emprenden la carrera de su evoluci´n particular: para evitar la codifi- o caci´n de programas a bajo nivel, es preciso que sea la m´quina la que o a adquiera lenguajes pr´ximos al humano. o A la aparici´n del FORTRAN (FORmula TRANslator system) si- o guieron el Algol y el Cobol, intentando acercarse a un lenguaje univer- sal. La avalancha posterior de lenguajes y dialectos demostr´ que esas o tentativas de universalidad resultaron vanas. Por otra parte, la actividad de la programaci´n experiment´ en los o o a˜os sesenta un desarrollo mucho m´s r´pido que las t´cnicas emplea- n a a e das en ´l; esta cr´ e ıtica situaci´n se conoce como crisis del software. No o exist´ una metodolog´ de la programaci´n: cada programador desarro- ıa ıa o llaba sus propios m´todos o “trucos” para programar, y se consideraba e a la programaci´n m´s como un arte que como una t´cnica. Muy pronto o a e surgi´ la necesidad de sistematizar la programaci´n, desarrollando he- o o rramientas y h´bitos de dise˜o met´dicos y disciplinados para conseguir a n o que los programas fueran correctos, eficientes y mantenibles. La tesis de la programaci´n estructurada y las aportaciones de Dahl, Dijkstra, o Hoare [DDH72] y el propio Wirth, vinieron a conferir a la programaci´no un car´cter de disciplina. a Aparece as´ la programaci´n estructurada y modular y comienzan a ı o aplicarse t´cnicas de dise˜o de algoritmos como el m´todo de los refi- e n e namientos sucesivos. En este contexto nace el lenguaje Pascal, que fue creado con el prop´sito de ense˜ar a programar de una forma met´dica y o n o disciplinada. De hecho, se considera como un lenguaje ideal para entrar en contacto con la programaci´n, por lo que es el primero que muchas o universidades vienen ense˜ando durante a˜os. Los nuevos lenguajes de n n programaci´n que aparecen a partir de los a˜os setenta incorporan estas o n t´cnicas, facilitando su desarrollo y aplicaci´n. e o Posteriormente, los lenguajes de programaci´n han seguido evolucio- o nando, y paralelamente las t´cnicas de desarrollo de algoritmos. En el e
  • 170. 176 Cap´ ´ ıtulo 7. Historia de los instrumentos de calculo cap´ ıtulo 5 se han recogido algunos de los modelos de programaci´n m´s o a empleados. 7.4 Tecnolog´ actual, tendencias y ıa perspectivas A partir de la aparici´n del computador personal al principio de los o a˜os ochenta, la inform´tica ha dejado de ser un coto cerrado de un n a grupo restringido de especialistas y se ha popularizado, alcanzando a usuarios 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 ın las finanzas, la gesti´n, la investigaci´n, el control de procesos industria- o o les (dise˜o, concepci´n y fabricaci´n asistidas por computador), la edu- n o o caci´n, la edici´n, la composici´n musical, etc., y el n´mero de usuarios o o o u que 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 o de “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 o computador y disminuir el tiempo de aprendizaje, y para lograrlo se recurre a modelos m´s intuitivos que muestran al computador como a un escritorio o mesa de trabajo, a las aplicaciones como tareas y los ficheros de datos como carpetas de documentos, mediante entornos de tipo gr´fico (4.2.5). a A su vez, se ha dado una notable evoluci´n tecnol´gica: los com- o o putadores son cada vez m´s potentes y m´s baratos. Se puede afirmar a a que esta evoluci´n es m´s r´pida en el campo del hardware que en el o a a software. Aparecen computadores con enormes posibilidades, pero los programas capaces de aprovecharlas llegan con varios a˜os de retraso. n La mayor capacidad de proceso est´ permitiendo la entrada de la a inform´tica en campos en los que su presencia era limitada, y la creaci´n a o de actividades enteramente nuevas, como son: 1. Visi´n artificial: reconocimiento de formas o
  • 171. 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 o Como tal revoluci´n, tiene importantes repercusiones de ´ o ındole econ´-o mica y social. La utilizaci´n de la inform´tica genera un aumento de o a la productividad y de la calidad de la producci´n. En consecuencia, las o empresas se ven obligadas a informatizarse para poder competir en el mercado. El aumento de la productividad puede significar tambi´n un e aumento del desempleo o del ocio. Para imaginar c´mo ser´n los computadores del futuro, quiz´s lo m´s o a a a razonable 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 o limita en tama˜o y en velocidad. De ah´ que la investigaci´n se oriente n ı o hacia la superaci´n de las configuraciones tradicionales (basadas en el o modelo de von Neumann) por otras arquitecturas y redes m´s avanzadas a (paralelas, neuronales, ...) llamadas a veces “arquitecturas de flujo de datos” (v´ase el cap´ e ıtulo 3). En ellas, un programa no se compone de instrucciones que se ejecutan “de arriba abajo”, sino de segmentos que pueden “resolverse” en cuanto los datos precisos est´n disponibles. Los e datos fluyen a trav´s de complicadas redes, compitiendo por acaparar la e
  • 172. 178 Cap´ ´ ıtulo 7. Historia de los instrumentos de calculo atenci´n de los recursos (principalmente los procesadores, que trabajan o simult´neamente). a 7.4.1 Inteligencia artificial El ambicioso objetivo que se persigue es dotar a los computadores del futuro con una serie de capacidades que se engloban bajo el t´rmino e gen´rico de Inteligencia Artificial. Esta disciplina se ocupa en la actua- e lidad 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 del proceso cognitivo. En particular, todas ellas necesitan sustituir el empleo de datos por el de conocimientos, lo que plantea el dif´ problema de ıcil su representaci´n. o 7.4.2 Las comunicaciones Otro aspecto de la inform´tica con tremendo auge en la actualidad a es el de las comunicaciones, ya que se abre la posibilidad de acceder a la informaci´n de origen remoto, tratarla autom´ticamente y enviar los o a resultados 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 a y ya casi empiezan a parecernos algo natural. Como ejemplos podemos citar desde el uso de los cajeros autom´ticos hasta la posibilidad de a efectuar reservas de avi´n o de hotel desde puntos remotos, la consulta o del cat´logo de una biblioteca en una ciudad de otro pa´ el correo a ıs, electr´nico, etc. o
  • 173. ´ 7.5. Comentarios bibliograficos 179 7.5 Comentarios bibliogr´ficos a [JM90] y [Ber86] son dos buenas recopilaciones, con car´cter general, so- a bre la historia pasada de los instrumentos de c´lculo, desde la calculadora de a Pascal 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 o moderna. Especialmente interesantes son las citas de escritos de von Neumann recogidas en ´l. e En [Swa93] se presentan los avatares en que se vio envuelta la construcci´n o de la m´quina anal´ a ıtica de Babbage, demostrando que el proyecto era viable, a pesar de no verse finalizado: En este art´ ıculo se describe la construcci´n de la o m´quina anal´ a ıtica con motivo del segundo centenario del nacimiento de Charles Babbage, y de acuerdo con sus planos originales. Aunque los computadores digitales actuales tienen su origen en el modelo de von Neumann (1945), la invenci´n del primer computador electr´nico es o o anterior, y se debe a J. V. Atanasoff, que construy´ el primer computador o digital entre 1937 y 1942. De hecho, es posible que los creadoes del ENIAC copiaran algunas de sus ideas ([Mac88]). Sobre computaci´n avanzada en la actualidad y perspectivas de futuro de o la inform´tica pueden consultarse [Com87] y [Sim85]. [La 91] trata sobre este a mismo tema, en relaci´n con las comunicaciones. o
  • 174. Ap´ndice A e Introducci´n al DOS o El dos es, hoy en d´ el sistema operativo m´s difundido para com- ıa, a putadores PC de IBM y compatibles. Dada la gran difusi´n de ´stos, o e se comprende la importancia que tiene conocer el dos. Aunque los PCs pueden comunicarse con otros a trav´s de redes, su e modo habitual de trabajar es aut´nomo, por lo que el dos es un sistema o operativo monousuario. Su cometido (v´ase el cap´ e ıtulo 4) consiste en gestionar los recursos del sistema, controlando el uso de los dispositivos (como las unidades de disco, la impresora, el rat´n), administrando la o memoria principal y facilitando la ejecuci´n de programas y la organi- o zaci´n de archivos dentro de los discos. o El dos es en realidad un programa (o mejor dicho un conjunto de programas) grabado en un disco.1 Cuando se enciende un equipo, se empieza cargando este programa en la memoria principal y se efect´anu las tareas de puesta en marcha (v´ase la secci´n A.3); entonces entra en e o funcionamiento un int´rprete de mandatos, que espera las ´rdenes del e o usuario (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 o que se encuentra este programa de arranque del dos, que es actualmente el caso m´s habitual. a 1 De hecho, ´se es el significado de las siglas que forman su nombre: “Disk Operating e System”, que quiere decir en ingl´s Sistema Operativo de Disco. e
  • 175. 182 ´ ´ Apendice A. Introduccion al DOS A.1 Organizaci´n de recursos o A.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 e en 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 puntos finales, a excepci´n de las unidades de disco que deben llevarlos obliga- o toriamente. A.1.2 Archivos Un archivo del dos no es m´s que un documento, aunque en vez de a estar 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- e tenido de los archivos, desde el punto de vista del dos, algunos archivos son “de datos” y otros son “programas”, escritos en lenguaje de m´quina a o del dos. Los archivos se nombran mediante palabras, llamadas identificadores, formadas por letras, d´ ıgitos y los caracteres siguientes: ~ ! @ # $ % ^ ( ) - _ { } ’
  • 176. ´ A.1. Organizacion de recursos 183 Los identificadores de los archivos tienen dos partes: nombre (de un m´ximo de ocho letras) y extensi´n (de un m´ximo de tres), siendo esta a o a ultima opcional. Al escribir el identificador de un archivo, estas dos ´ partes se separan mediante un punto. Usando la notaci´n EBNF (v´ase o e el cap´ ıtulo 5), esta descripci´n puede expresarse as´ o ı: identificador ::= nombre[.extensi´n] o Ateni´ndonos a estas reglas, conviene elegir los nombres de los archivos e relacionados con su contenido. En cuanto a las extensiones, su elecci´n o depende 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 o pueden coincidir con los identificadores propios de dispositivos. Con frecuencia, se necesita realizar ciertas operaciones con un grupo de archivos m´s o menos grande. Si esos archivos fueron bautizados si- a guiendo ciertas pautas, es posible identificarlos gen´ricamente mediante e un patr´n o plantilla de archivo. Para ello, se usan los caracteres co- o mod´ * 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 a cualquier 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
  • 177. 184 ´ ´ Apendice A. Introduccion al DOS A.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 organizar jer´rquicamente los archivos de un disco. a En general, los identificadores de los directorios siguen las mismas reglas que los archivos, aunque en el caso de los directorios es bastante frecuente omitir la extensi´n. Adem´s de los identificadores corrientes, o a existen 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 a ficamente en el ejemplo de la figura A.1, donde los identificadores de los directorios y subdirectorios se˜alan puertas (de entrada), y los archivos n est´n representados directamente por sus identificadores. Otro modo a m´s sencillo e igualmente util de representarlos es como ´rboles, seg´n a ´ a u se muestra en la figura A.2. Es importante tener en cuenta que los archivos contenidos en cada unidad 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 ız unidad tiene un directorio actual. Adem´s, es posible referirse a cualquier directorio o conjunto de ar- a chivos indicando una ruta de acceso desde la posici´n actual, esto es, el o directorio de trabajo2 (v´ase 4.2.2). Con este fin, el s´ e ımbolo sirve para concatenar los pasos hacia dicha posici´n. o As´ por ejemplo, considerando que el disco C: est´ organizado seg´n ı a u la estructura anterior, es posible referirse a los archivos ejerci.tex y examen.tex desde diversos lugares: 2 Esta posici´n se conoce frecuentemente como directorio “por defecto”, a causa de o una traducci´n dudosa de su nombre default directory, en ingl´s. o e
  • 178. ´ 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
  • 179. 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.
  • 180. ´ A.2. Ordenes del DOS 187 • Desde cualquier lugar del disco C: escuela*.tex • Desde cualquier lugar, incluso desde otro disco: C:escuela*.tex A.1.4 Prompt El prompt 3 es un indicador con el que el dos expresa que est´ es- a perando nuestras ordenes, listo para ejecutarlas. El dos puede indicar ´ esta disposici´n de diversas formas, a nuestro capricho, pero la m´s ex- o a tendida 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, el e a prompt C:ESCUELACLASES indica que la posici´n de trabajo actual es el subdirectorio CLASES, del o directorio ESCUELA, en el disco C:. A la derecha del prompt aparece el cursor, 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 e usuario la comunicaci´n con el computador. o Empecemos por poner unos cuantos ejemplos de ´rdenes, junto con o su funcionamiento. En adelante, usaremos letra de molde para reprodu- cir el intercambio de informaci´n entre computador y usuario; lo escrito o por el computador aparece en letra vertical y lo escrito por el usuario en letra oblicua: 3 Aunque en espa˜ol significa incitar o incitaci´n, s´lo usamos el t´rmino ingl´s, sin n o o e e traducir.
  • 181. 188 ´ ´ Apendice A. Introduccion al DOS C:CD pascal C:PASCALA: 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 libres A:FORMAT B: Comando o archivo no se encuentra A:C:DOSFORMAT B: ... ... ... A:CLS Debe advertirse que en el lenguaje del dos no se distingue entre las letras may´sculas y las min´sculas. Esto afecta a los identificadores (ya u u sea para dispositivos, archivos o directorios), as´ como a las ´rdenes que ı o estudiaremos. Por otra parte, los comandos del dos pueden agruparse en dos ca- tegor´ıas: ´rdenes (internas) del dos y programas (externos). El dos o conoce 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 o tras 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 o programas 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 e observaci´n consiste en que, cuando se ordena un comando externo o o programa, para que ´ste pueda ejecutarse deber´ darse alguna de las e a siguientes circunstancias:
  • 182. ´ 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 a usuales. Interesa saber de cada uno si es externo o interno, su prop´sito o y su sintaxis correcta. Usaremos las reglas EBNF (introducidas en el cap´ ıtulo 5) escribiendo los s´ ımbolos terminales con letra vertical y los no terminales con letra oblicua, en vez de distinguirlos con may´sculas u y min´sculas, o de usar los metas´ u ımbolos y , por tener ´stos otro e cometido. 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 CLS no tiene argumentos); y las opciones son espec´ ıficas de cada comando, como /W, y alteran el funcionamiento del mismo. En estas descripciones sint´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]
  • 183. 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 e conjunto de archivos. Cuando esas partes opcionales se omiten, se asume que se trata del disco de trabajo actual, del (sub)directorio abierto, de todos los archivos a la vista, etc. A.2.1 ´ Ordenes b´sicas a CLS (interna) • Prop´sito: Borra la pantalla, situando el prompt y el cursor en su o comienzo. • Sintaxis: CLS Cambio de unidad (interna) • Prop´sito: Establece una nueva unidad de trabajo. o • Sintaxis: unidad FORMAT (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.
  • 184. ´ A.2. Ordenes del DOS 191 A.2.2 Manejo de archivos DIR (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.
  • 185. 192 ´ ´ Apendice A. Introduccion al DOS COPY (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 o DEL (interna) • Prop´sito: Borra un archivo o un grupo de ellos de un disco. o • Sintaxis: (ERASE | DEL) [posici´n][archivo(s)] o REN (interna) • Prop´sito: Renombra el identificador de un archivo o grupo de o ellos. • Sintaxis: (REN | RENAME) [posici´n][archivo(s)] [archivo(s)] o TYPE (interna)
  • 186. ´ A.2. Ordenes del DOS 193 • Prop´sito: Muestra en la pantalla el contenido de un archivo. o • Sintaxis: TYPE [posici´n][archivo(s)] o PRINT (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 o A.2.3 Manejo de directorios CD (interna) • Prop´sito: Cambia el directorio de trabajo actual. o • Sintaxis: (CHDIR | CD) [unidad]camino TREE (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
  • 187. 194 ´ ´ Apendice A. Introduccion al DOS • Sintaxis: (MKDIR | MD) [unidad]camino RD (interna) • Prop´sito: Borra un subdirectorio, que debe estar vac´ o ıo. • Sintaxis: (RMDIR | RD) [unidad]camino PATH (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 o A.2.4 Indicadores del sistema Durante el funcionamiento del dos existen unos cuantos datos de referencia, 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.
  • 188. ´ A.3. Configuracion del DOS 195 A.2.5 Procesamiento por lotes Cuando se necesita ejecutar repetidamente una secuencia de ´rdenes, o es posible definir un lote de ´rdenes (v´ase 4.1.2) (por ejemplo, la se- o e cuencia cd pascal, turbo y cd ..), agrup´ndolas bajo un nombre (como a pascal.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 ´ o bat4 obligatoriamente. Sin embargo, en su posterior utilizaci´n puede o omitirse 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.bat donde el retorno de carro representa el final de l´ ınea, y la combinaci´n o Ctrl+Z la marca del fin de archivo. En un archivo bat pueden usarse, adem´s de las ´rdenes usuales del a o dos, otras espec´ ıficas (ECHO, REM, PAUSE, GOTO, IF, FOR), con las que se pueden 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: a el sistema b´sico de entrada y salida (del ingl´s, Basic Input/Output a e System). Se trata de un conjunto de rutinas situadas en la memoria ROM del computador que realiza tareas b´sicas como las pruebas de que a los perif´ricos est´n conectados o el programa para poder leer los ficheros e a del dos, bien del disco duro o bien de discos flexibles. Estas rutinas no son suministradas por el fabricante del sistema operativo sino que son 4 En ingl´s, batch significa lote. e
  • 189. 196 ´ ´ Apendice A. Introduccion al DOS entregadas con el hardware, por lo que se suele utilizar la expresi´n o firmware para hacer referencia a este tipo de software introducido en la ROM. Ya se ha dicho que el dos est´ grabado en un disco. En efecto, a cuando se enciende el computador, el programa de la ROM extrae del disco un programa generador del dos que, en l´ ıneas generales, da los siguientes 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 (o creados) por el usuario para configurar el funcionamiento del dos seg´n u sus 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´
  • 190. ´ 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.
  • 191. 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:UTILESepsilon A.4 Otros aspectos de inter´s e A.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
  • 192. ´ A.4. Otros aspectos de interes 199 de desviar la salida de esas ´rdenes hacia otro dispositivo, mediante los o operadores de redireccionamiento: . . . DIR /w lpt1: o confeccionar un archivo con ella: . . . DIR /w dirlist.txt e 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 contenido consiste unicamente en el car´cter “s”: ´ a si.txt ; s es posible conseguir que una orden capte su entrada del mismo, as´ ı: . . . DEL *.* SI ... Los siguientes programas, llamados filtros, permiten sacar partido del 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
  • 193. 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 posible convertir un archivo en argumento de un programa: . . . SORT agenda.txt adela 2008586 bernardo 7388196 ... zutano 5494389 Otra interesante utilidad consiste en convertir una salida por la pan- talla en el argumento de un programa: . . . DIR | SORT pudi´ndose combinar con el redireccionamiento: e . . . DIR | SORT DirOrden.txt
  • 194. ´ A.4. Otros aspectos de interes 201 A.4.2 Atributos y protecci´n de archivos o Los sistemas operativos ofrecen mecanismos de protecci´n de la in- o formaci´n que gestionan. Su inter´s se da mayormente en sistemas mul- o e tiusuario, en los que resulta esencial mantener lo privado del trabajo de los usuarios, pero incluso en un sistema monousuario como el dos, son de 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 atributos de un archivo o de un grupo de ellos: [posici´n]ATTRIB [±R][±A] [archivo(s)] o Estos 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 sistema A.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 n memoria; sin embargo, los desarrollos posteriores del hardware y el soft- ware se encontraron pronto con limitaciones de memoria. Este problema oblig´ a introducir algunas ampliaciones del concepto de memoria. En o este apartado se dar´ una visi´n sobre los diferentes tipos de memoria a o que 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.
  • 195. 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 o expandida o extendida. Memoria expandida La memoria expandida es el tipo de memoria m´s flexible que un PC a puede tener, lo cual tambi´n hace que sea la m´s compleja de todas. Esta e a memoria permite al procesador acceder a m´s memoria de la disponible a bajo el l´ ımite de los 640 Kb. La memoria expandida no puede ser gestionada directamente por el dos; para ello se utilizan programas (tales como EMM7 , EMM386 y QEMM) que se cargan normalmente en el archivo de configuraci´no config.sys. Es importante conocer c´mo act´a el EMM para comprender mejor o u las diferencias entre las memorias expandida y extendida. Cuando el EMM se ejecuta lo que hace es buscar un trozo de memoria sin utilizar en los 384 Kb superiores del primer Mb; este trozo de memoria, usualmente de 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
  • 196. ´ A.4. Otros aspectos de interes 203 hacen de pivotes para mover informaci´n entre la memoria convencional o y la memoria expandida. El programa EMM se encarga de gestionar el intercambio de informaci´n entre las p´ginas de memoria y la memoria o a expandida. La instalaci´n de memoria expandida representa la instalaci´n de o o un subsistema completo de hardware y software. El hardware consiste en una tarjeta de memoria dise˜ada especialmente, y el software es el n archivo 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 e se accede a ella como si se tratara de un puerto de entrada/salida. En la figura A.4 se intenta reflejar la forma en que el procesador ve a la memoria expandida. Memoria extendida La memoria extendida es la que est´ por encima del primer megabyte a de memoria. S´lo puede accederse a ella a trav´s del modo protegido de o e los procesadores 80286 o superior. La diferencia m´s importante entre a memoria expandida y extendida es que los programas que trabajen en modo real no pueden tener acceso directo a la memoria extendida. El modo protegido es usado para acceder a una mayor cantidad de memoria y de funciones.8 Cuando un procesador (80286 o superior) pasa a modo protegido entonces el sistema puede controlar la operaci´n de o m´ltiples programas en la memoria y cambiar m´s f´cilmente de una u a a tarea a otra. Estos procesadores tambi´n pueden ejecutar los programas e escritos para procesadores 8088 y 8086 trabajando en modo real, aunque en este caso no pueden acceder directamente a la memoria superior al primer Mb. Una de las principales ventajas de disponer de memoria extendida en un PC trabajando en modo real es su uso como un disco virtual 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 a disco duro, el uso de un disco RAM disminuir´ el tiempo que tarde a 8 Utilizando la mayor anchura del bus de direcciones.
  • 197. 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 o funcionamiento, pues la referencia a archivos contenidos en un disco RAM es la misma que si estuvieran en un disco duro. La desventaja del uso de un disco RAM es que, a diferencia de un disco duro o un disco flexible, la informaci´n escrita en un disco RAM es vol´til (s´lo o a o permanece mientras el computador est´ funcionando). e
  • 198. Ap´ndice B e Introducci´n a UNIX o El sistema operativo unix fue dise˜ado como un sistema de tiempo n compartido con una interfaz de usuario (shell ) simple y manejable, de la que existen distintas versiones. Se trata de un sistema pensado inicialmente para equipos peque˜os, n por lo que los algoritmos fueron seleccionados por su simplicidad y no por su eficacia o rapidez. Las ventajas que presenta unix sobre otros sistemas de gran difusi´n o se basan en que el software desarrollado sobre unix es f´cilmente trans- a portable entre m´quinas de distintos fabricantes, pues no necesita un a hardware determinado y puede correr sobre procesadores de distinta fi- losof´ ıa. No obstante lo anterior, los sistemas grandes hasta hace poco han preferido usar un sistema propietario a uno abierto, aunque la tendencia actual apunta hacia la adopci´n generalizada de este sistema por parte o de todos los grandes fabricantes. B.1 Breve descripci´n t´cnica o e Considerando el sistema operativo como la capa de software situada directamente sobre el hardware, dentro de ´l podemos distinguir a su e vez dos subcapas:
  • 199. 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 a Una caracter´ıstica importante de unix es que todo se considera como un archivo (desde los ficheros de datos hasta los perif´ricos y las unidades e de disco flexible). Un archivo para unix no es m´s que una secuencia de a bytes 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 ıa hasta 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 directorio ra´ 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- o ciar la potencia de unix, pues aparecen los mecanismos que permiten que varios procesos trabajen sobre la m´quina simult´neamente optimizando a a as´ 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 o existe 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 n miento 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.
  • 200. ´ B.2. Una sesion con UNIX 207 la prioridad, y cuanto m´s tiempo de la UCP ha consumido un proceso, a menor se hace su prioridad. No todos los sistemas unix utilizan el mismo mecanismo para la gesti´n de la memoria. Los primeros sistemas utilizaban exclusivamente o el mecanismo de swapping: un proceso se retira tanto m´s f´cilmente a a cuanto 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 e eliminar la fragmentaci´n externa, existiendo sistemas que utilizan el o procedimiento de paginaci´n por demanda (en ingl´s demand-paging). o e B.2 Una sesi´n con UNIX o Puesto que unix es un sistema multiusuario, lo que debemos hacer antes de iniciar una sesi´n de trabajo es presentarnos al sistema. Al o arrancar el computador, o al efectuar una conexi´n remota, unix pedir´ o a nuestro 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 de usuario, supongamos que es popeye, el sistema pedir´ nuestra clave de a acceso: login:popeye password: Como es l´gico, el sistema no nos permitir´ acceder a menos que o a se introduzcan un nombre de usuario y su clave de acceso correctos (debe tenerse en cuenta que unix distingue entre letras may´sculas y u min´sculas) que el administrador debe habernos proporcionado. En la u primera conexi´n al sistema, lo primero que debemos hacer es cambiar la o clave de acceso de modo que nadie m´s la conozca (esto se hace mediante a el comando passwd). Si todo ha ido bien, el sistema aceptar´ la petici´n de entrada, nos co- a o locar´ en nuestro directorio de trabajo y en pantalla aparecer´ el prompt a a del sistema, que en el shell sh generalmente es $.
  • 201. 208 ´ ´ Apendice B. Introduccion a UNIX Un servicio importante que ofrece todo sistema unix es el de ayuda interactiva, llamada tambi´n ayuda en l´ 2 . El comando man hace una e ınea llamada al manual, y puede ser usado para obtener informaci´n acerca o de un comando, su sintaxis y sus posibles opciones (flags), su sem´ntica a e incluso de sus bugs o situaciones en las que dicho comando no realiza su labor correctamente. Por ejemplo, $man passwd da completa informaci´n acerca del comando passwd, recu´rdese que $ o e es el prompt del sistema, y no hay que teclearlo. En un sistema multiusuario, uno puede estar interesado por saber qu´ e personas est´n trabajando simult´neamente en el sistema. Esto se puede a a saber, y se dispone de dos comandos para ello: who y finger: la orden who proporciona los nombres de usuario de todas aquellas personas que se encuentran conectadas al sistema, mientras que finger proporciona informaci´n m´s detallada acerca de ellas. o a Una vez que sepamos qui´nes est´n conectados al sistema, podemos e a establecer contacto directo con ellos mediante los comandos write o talk, 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 o sistema mediante exit o logout para impedir que alguien no autorizado pueda acceder al sistema. Sobre el asunto de la seguridad de los archivos se tratar´ en la siguiente secci´n. a o B.3 Gesti´n de archivos o Este apartado resultar´ bastante f´cil a aquellos usuarios que est´n a a e familiarizados con dos, ya que muchas de las caracter´ ısticas del sistema de archivos de unix fueron adoptadas por dos. 2 En ingl´s, on line. e
  • 202. ´ B.3. Gestion de archivos 209 B.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 sus primeros catorce caracteres. Est´ permitido usar cualquier car´cter AS- a a CII en el nombre de un archivo salvo “/”, que sirve para indicar el camino (absoluto o relativo) del nombre de un archivo; sin embargo, es mejor 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 ın cierto patr´n; esta labor la realiza el shell, y se detallar´ m´s ade- o a a lante. Por ultimo, no se debe olvidar que unix distingue entre letras ´ may´sculas y min´sculas. u u B.3.2 Tipos de archivos en UNIX En unix podemos encontrar varios tipos de archivos: los archivos ordinarios, los directorios, los v´ ınculos, los v´ ınculos simb´licos y los ar- o chivos especiales. De los archivos ordinarios y de los directorios poco hay que a˜adir a lo dicho en 4.2.2, por lo cual s´lo incidiremos en los n o v´ ınculos, simb´licos o no, y los archivos especiales. o V´ ı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
  • 203. 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. o Archivos 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.e Estos permisos otorgan la posibilidad de que el archivo pueda ser le´ ıdo, modificado o ejecutado, tanto por el propietario del archivo como por otros 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 directorio actual 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 ./tema2 drw-r----- 1 popeye 1024 Sep 1 19:32 ./fig Los permisos asociados a cada archivo aparecen codificados en la forma 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
  • 204. ´ 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, o que sirve para cambiar los permisos asociados con un archivo. La sintaxis de este comando es la siguiente $chmod nmk archivo donde n, m y k son n´meros del 0 al 7, que indican los permisos del u due˜o, de su grupo y de otros, respectivamente. Cada d´ n ıgito octal (pues var´ entre 0 y 7) se determina sumando 4 para activar el permiso de ıa lectura, sumando 2 para activar el permiso de escritura y sumando 1 para 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 o archivo (y el administrador del sistema). As´ por ejemplo, si “prest´- ı a semos” alguno de nuestros archivos a otro usuario, ´ste no podr´ cam- e ıa biar sus permisos. Para que pudiera hacerlo, se deber´ cambiar la pro- ıa piedad del archivo; por ejemplo, si el usuario popeye quiere ceder la propiedad del archivo espinacas al usuario cocoliso deber´ hacer uso a del comando chown (del ingl´s CHange OWNer ): e $chown cocoliso espinacas B.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 comandos suelen ser bastante similares a los de dos y generalmente consisten en abreviaturas de su funci´n. A continuaci´n se presentan algunos de los o o
  • 205. 212 ´ ´ Apendice B. Introduccion a UNIX m´s com´nmente utilizados; la mayor parte de ellos tienen opciones, que a u pueden 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, u es el programa que durante m´s tiempo se estar´ usando durante una a a
  • 206. B.4. El shell de UNIX 213 sesi´n de trabajo con unix. En esta secci´n se hace una breve intro- o o ducci´n a las caracter´ o ısticas principales del (los) shell de unix. Existen distintas versiones de shell, cada una de ellas con sus propias particularidades; en esta secci´n s´lo se presentar´ sucintamente el shell o o a sh 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 a utilidades adicionales. Cada vez que se lanza sh se ejecuta el archivo .profile (el nombre comienza con un punto) que hace las veces del archivo autoexec.bat de dos. Este archivo se utiliza para la personalizaci´n del entorno de tra- o bajo: la definici´n de la variable PATH, fijar el tipo de terminal, cambiar o el prompt por defecto, . . . B.4.1 Encauzamiento de la entrada y salida Una primera utilidad del shell es la posibilidad de redireccionamiento de entrada/salida. Los operadores de redirecci´n son los mismos que los o de 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 o de uno a la entrada del siguiente mediante el s´ ımbolo |. La idea, que consiste en hacer que la salida de un comando sea la entrada de otro sin necesidad de utilizar archivos temporales, ya debe ser conocida por los usuarios de dos. B.4.2 Caracteres comod´ ın Otra importante utilidad que podemos obtener de un shell es el uso de caracteres comod´ El shell permite el uso de caracteres comod´ de ın. ın tres tipos: *, ? y [...]. El signo de interrogaci´n identifica a cualquier car´cter, del mismo o a modo que en dos; sin embargo, el asterisco es interpretado de forma distinta, como muestra el siguiente ejemplo: $ls cap*tex
  • 207. 214 ´ ´ Apendice B. Introduccion a UNIX que 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 u chivos que satisfacen el patr´n especificado. o El ultimo tipo de car´cter comod´ permite indicar un rango de ca- ´ a ın racteres para confrontar con un car´cter del nombre de un archivo, por a ejemplo la orden $cat cap[1-4].tex parte1.tex concatena los archivos cap1.tex, cap2.tex, cap3.tex y cap4.tex poni- ´ndolos en el archivo parte1.tex. Entre los corchetes se pueden espe- e cificar rangos tanto num´ricos como alfab´ticos. e e B.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 o que realizan tareas sencillas, definiendo as´ tareas m´s complejas. Esto se ı a consigue mediante los llamados guiones de shell (en ingl´s shell scripts), e que son la contrapartida unix de los archivos de extensi´n .bat de dos. o B.5 UNIX como sistema multitarea Como sistema multitarea unix proporciona herramientas para poder ejecutar varios programas simult´neamente; el shell permite, de forma a f´cil, controlar la ejecuci´n de los distintos procesos mediante la in- a o troducci´n del concepto de ejecuci´n en modo subordinado (en ingl´s o o e background ). 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 u estructura 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 ejecuta los procesos en modo subordinado. Por ejemplo la l´ ınea de comandos 3 N´tese la diferencia con dos. o
  • 208. 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 a archivo 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 sistema imprime dos n´meros y presenta el prompt a la espera de nuevas ´rdenes. u o El n´mero entre corchetes es el identificador del trabajo y el otro n´mero u u es 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 a trabajo se usa como argumento de comandos que permiten terminar un trabajo subordinado (kill); suspenderlo sin terminar (stop); reanudar en modo subordinado un trabajo suspendido (bg); y pasar un trabajo de modo subordinado a modo principal (fg). Por ejemplo $stop %1 suspende el trabajo con el identificador [1], y $fg %1 reanuda el trabajo en modo principal. (N´tese que se usa el signo % o antes de introducir el identificador de trabajo.) Para la gesti´n eficiente del sistema, podemos modificar la priori- o dad con la que se ejecutan los procesos haciendo uso de los siguientes comandos: at hora orden indica al sistema a qu´ hora se deber´ ejecutar la orden. e a nice 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.
  • 209. 216 ´ ´ Apendice B. Introduccion a UNIX nohup 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- a ral, cuando se emplea la palabra unix no se hace una simple referencia al n´cleo del sistema operativo ni siquiera en sentido amplio, sino al n´cleo u u del sistema junto con programas de aplicaciones destinados a crear un entorno de uso general. Lo m´s importante de esta riqueza adicional puede resumirse en la a posibilidad de que varios usuarios usen el computador al mismo tiempo (cosa que no puede hacerse en un pc bajo dos) y en la posibilidad de que un usuario haga varias cosas a la vez se˜alando las prioridades que n se 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.
  • 210. 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
  • 211. 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
  • 212. 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
  • 213. 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.
  • 214. 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. a B.8 Diferencias entre DOS y UNIX Aunque dos est´ dise˜ado para sistemas PC monousuario, muchas a n de sus caracter´ ısticas est´n fuertemente influidas por el sistema unix. En a particular, dos se parece a unix en el dise˜o de su sistema de archivos, n int´rprete de comandos y en algunas de las ´rdenes de manipulaci´n de e o o archivos. Debido a esto, un usuario familiarizado con las ordenes de dos ´ no tendr´ demasiados problemas para comenzar a manejar un sistema a unix, o viceversa. La mayor parte de los comandos usuales de dos tienen su contrapar- tida unix, e incluso tienen nombres muy similares, por ejemplo mkdir est´ presente en ambos sistemas; la tabla de la figura B.1 muestra la a equivalencia entre la mayor´ de los comandos m´s usuales de dos y ıa a unix. Dejando a un lado las caracter´ ısticas multitarea y multiusuario de
  • 215. 222 ´ ´ Apendice B. Introduccion a UNIX unix, las diferencias m´s importantes entre dos y unix para la l´ a ınea de comandos 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
  • 216. 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.
  • 217. 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.
  • 218. 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.
  • 219. 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.
  • 220. 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.
  • 221. ´ Indice alfab´tico e acceso MIMD, 96 directo, 73, 107 memoria compartida, 96 secuencial, 73, 107 memoria distribuida, 97 acciones SIMD, 96 sem´nticas, 142 a sincr´nica, 96 o acumulador, 78 ASCII, 46 a ´lgebra relacional, 161 at, 215, 219 algoritmo, 18, 22, 23 atributos, 109, 201 de Euclides, 27 ATTRIB, 201 an´lisis a AUTOEXEC.BAT, 196 l´xico, 142 e awk, 218 sint´ctico, 142 a ayuda archivo, 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, 195 arquitectura 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
  • 222. ´ ´ Indice alfabetico 229 de paridad, 50 chmod, 211, 216 bloqueo, 106 chown, 216 BNF, notaci´n, 132 o cinta magn´tica, 73 e BREAK, 194 CLS, 190 buffer, 106 cmp, 219 bus, 61, 63, 74 COBOL, 124, 126 de control, 63, 75 coma de datos, 63, 75 fija, 39 de direcciones, 63, 75 flotante, 40 byte, 30 comm, 219 COMP, 192 C, 124 compactaci´n, 113 o C++, 131 compartici´n, 113 o c´lculo relacional, 162 a compilaci´n o c´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, 216 c´mputo, 24 o computador, 18 call, 218 comunicaci´no camino, 108, 189 en paralelo, 75 absoluto, 108 en serie, 75 relativo, 108 concurrencia de procesos, 105 campo, 151 CONFIG.SYS, 196 CASE, 164 conjunto de entidades, 155 cat, 212, 216 consola, 72 CD, 193 contador de programa, 68 cd, 212, 216 contrase˜as, 109 n CHDIR, 193 copias de seguridad, 108
  • 223. 230 ´ ´ Indice alfabetico coprocesador, 70 flexible, 73, 74 COPY, 192 virtual, 203 cp, 212, 217 dise˜o descendente, 24 n diskette, 74 DATE, 194 disquette, 74 date, 218 DOS, 181 deadlock, 106 debugger, 145 EBNF, 134 DEL, 192 ECHO, 195 demand-driven, arquitecturas, 97 echo, 219 demand-paging, 207 ed, 220 depuraci´n, 27 o editor, 145 integrada, 147 EEPROM, 65 depurador, 145 egrep, 219 diagrama sint´ctico, 134 a EMM, 202 diccionario de datos, 163 encapsulaci´n, en POO, 129 o diff, 219 encauzamiento, 198, 213 DIR, 191 enlazador, 145 direcci´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, 192 direccionamiento, 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 a directo, 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
  • 224. ´ ´ Indice alfabetico 231 find, 212, 219 Ingres, 161 finger, 208, 218 instrucciones de m´quina, 78 a firmware, 196 int´rprete, 144 e floppy, 74 interactivo, trabajo, 104 FOR, 195 interfaz de usuario, 111 FORMAT, 190 de mandatos, 111 formato de un disco, 73 gr´fico, 111 a FORTRAN, 124 interrupci´n, 94, 109 o fragmentaci´n o de hardware, 94 externa, 112 de software, 94 interna, 112 jobs, 215, 220 generaci´n de c´digo, 143 o o GOTO, 195 Kbyte, 31 grep, 219 kernel, 109 guiones de shell, 214 de unix, 206 kill, 215, 220 hardware, 18, 60 kilobyte, 31 herencia, en POO, 130 hojas de c´lculo, 20 a l´piz optico, 71 a ´ lenguaje identificador, 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 a IEEE-754, 41 de manipulaci´n de datos, 161 o IF, 195 de muy alto nivel, 123 impresora, 72 de programaci´n, 18, 119 o incertidumbre, 49 declarativo, 123 indicador ensamblador, 122 del DOS, 194 relacional, 161 inform´tica, 17 a simb´lico, 121, 123 o informaci´n, 49 o transportable, 122 anal´gica, 30 o LIFO, 91 digital, 30 linker, 1145 Informix, 161 ln, 212, 217
  • 225. 232 ´ ´ Indice alfabetico login, 207 mkdir, 212 logout, 208 ML, 126 lote de procesos, 104 modelo lp, 217 E-R, 155 ls, 210, 212, 217 en red, 158 entidad-relaci´n, 155 o macroinstrucciones, 122 jer´rquico, 158 a mail, 217 relacional, 158 mainframe, 116 m´dem, 72 o man, 212, 218 modo Mbyte, 31 protegido, 203 MD, 193 real, 203 megabyte, 31 subordinado, 214 megaherzio, 68 Modula-2, 124 memoria, 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, 220 mensaje, en POO, 129 nivel de una B. D. mesg, 208, 218 conceptual, 155 MHz, 68 de visi´n, 155 o microcomputador, 116 externo, 155 microinstrucci´n, 84 o f´ ısico, 155 minicomputador, 116 interno, 155 Miranda, 126 l´gico, 155 o MKDIR, 193 nohup, 216, 220
  • 226. ´ ´ Indice alfabetico 233 objeto, en POO, 128 PRINT, 193 octeto, 30 procesador, 24, 67 optimizaci´n de c´digo, 144 o o vectorial, 96 Oracle, 161 procesadores de textos, 20 orden del DOS, 187 procesamiento externa, 188 en paralelo, 95 interna, 188 secuencial, 95 overlay, 66 proceso, 105 por lotes, 104, 195 paginaci´n, 67, 114 o profile, 213 bajo demanda, 207 programa palabra de memoria, 31, 62 fuente, 26, 141, 144 pantalla, 71 gr´fico, 20 a paquetes integrados, 21 objeto, 26, 141, 144 paradigmas de programaci´n, 124 o traductor, 26 Pascal, 124 transportable, 121 passwd, 207 programaci´n, 24 o PATH, 108, 194 declarativa, 124 path, 213 estructurada, 24 PAUSE, 195 funcional, 125 PC, 181 imperativa, 124 AT, 202 l´gica, 126 o XT, 201 modular, 24 perif´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, 72 permisos, 210 ps, 220 pila, 91 puerto pista, 73 en paralelo, 75 planificaci´n, 110 o en serie, 75 plotter, 72 pwd, 212, 217 polimorfismo, en POO, 130 POO, 128 RAM, 65
  • 227. 234 ´ ´ Indice alfabetico RAM-drive, 203 axiom´tica, 140 a rat´n, 71 o denotacional, 139 RD, 63 operacional, 137 RD, 194 sensores, 71 red, 72 servidor de red, 72 local, 72 SGA, 152 remota, 72 SGBD, 152 refinamiento por pasos, 24 shell, 206 registro, 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, 213 reglas sint´cticas, 119 a scripts, 214 relaci´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 operativo REM, 195 transaccional, 104 REN, 192 sist. de gesti´n de archivos, 152 o RENAME, 192 sist. de gesti´n de B. D., 152 o resta por complementaci´n, 34 o sistema de numeraci´n o RIM, 63 binario, 33 rm, 212, 217 decimal, 31 RMDIR, 194 hexadecimal, 33 rmdir, 212, 217 octal, 33 ROM, 65 posicional, 31 round-robin, 206 sexagesimal, 31 scheduling, 110 sistema operativo, 19, 101, 102 sector, 73 abierto, 116 secuencial, acceso, 73 de consulta de B. D., 104 sed, 220 de control de procesos, 104 segmentaci´n, 67, 114, 115 o de prop´sito general, 103 o segmento, 115 dedicado, 103 sem´ntica, 119, 137 a monousuario, 103
  • 228. ´ ´ Indice alfabetico 235 multiusuario, 103 UC, 61, 67 propietario, 116 UCP, 61, 67 Smalltalk, 131 unidad, 147 software, 19, 60 unidad aritm. y l´gica, 61, 69 o de aplicaciones, 20 unidad central de proceso, 61, 69 solapamiento, 66 unidad de control, 61, 67 SORT, 199 uniq, 219 sort, 219 UNIX, 205 SQL, 161 stop, 215, 220 v´ ınculo, 209 streamer, 73 especial, 210 subordinado, modo, 214 simb´lico, 209 o subprograma, 93 VER, 194 subrutina, 93 VERIFY, 194 swapping, 207 vi, 220 VLSI, 174 tabla de seguimiento, 146 tableta gr´fica, 71 a wall, 218 tail, 219 wc, 219 talk, 218 who, 208, 218 teclado, 71 write, 218 tee, 220 zcat, 217 TIME, 194 time, 220 tokens, 119, 142 traductor, 141 transmisi´n o en paralelo, 75 en serie, 75 traza de un programa, 146 TREE, 193 tubos, 198 Turbo Pascal, 131 TYPE, 192 UAL, 61