SlideShare ist ein Scribd-Unternehmen logo
1 von 119
Downloaden Sie, um offline zu lesen
libro abierto / serie apuntes                                                                                                            Pablo Ruiz M´zquiz
                                                                                                                                                     u




                                Sistemas Operativos
                                                                                                                                           ¬¬¬¬0.5.0




                                                                 Programa 1                                                                    Programa 2
                                   ¦   ¦    ¦                                                                                     ¨    ¨   ¨         

                                   §   §    §                                                                                     ©    ©   ©         




                                   ¦   ¦    ¦                                                                                     ¨    ¨   ¨         

                                   §   §    §                                                                                     ©    ©   ©         




                                   ¦   ¦    ¦                                                                                     ¨    ¨   ¨         
                                   §   §    §                                                                                     ©    ©   ©         




                                       P1 inactivo P1 inactivo P1 inactivo P2 inactivo P2 inactivo P2 inactivo

                                                                                               (a) Ejecución secuencial                                             Tiempo

                                                                                                                                               Programa 1
                                                                                                       

                                                          !   !    !                    #        #       #




                                                                                                       

                                                          !   !    !                    #        #       #




                                                                                                       
                                                          !   !    !                    #        #       #




                                                                                                                                               Programa 2
                                                                          ¢   ¢    ¢                            ¤   ¤    ¤

                                                ¡   ¡    ¡                £   £    £                            ¥   ¥    ¥




                                                                          ¢   ¢    ¢                            ¤   ¤    ¤

                                                ¡   ¡    ¡                £   £    £                            ¥   ¥    ¥




                                                                          ¢   ¢    ¢                            ¤   ¤    ¤

                                                ¡   ¡    ¡                £   £    £                            ¥   ¥    ¥




                                       P1           P2           P1           P2                P1                  P2

                                                                                                                                                                    Tiempo
                                                                                               (b) Ejecución multiprogramada




  Un libro libre de Alqua
004.451
SSOO




                                                               ALQ
       Sistemas Operativos




                    † lomo para ediciones impresas
Dedicado
A mi hermana In´s
               e
http://alqua.org/libredoc/SSOO




 Pablo Ruiz M´zquiz
             u        pablo@alqua.org   http://alqua.org/people/pablo




            Sistemas Operativos
                          versi´n 0.5.0
                               o
                       15 de abril de 2004




alqua,madeincommunity
c
                                           copyleft
  Copyright (c) 2004 Pablo Ruiz M´zquiz.
                                 u
  This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike License. To
  view a copy of this license, visit http://creativecommons.org/licenses/by-nc-sa/1.0/ or send a letter to
  Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.

  Copyright (c) 2004 Pablo Ruiz M´zquiz.
                                 u
  Este trabajo cae bajo las provisiones de la licencia Atribuci´n-No Comercial-Comparte Igual de Creative
                                                               o
  Commons. Para ver una copia de esta licencia visite http://creativecommons.org/licenses/by-nc-sa/1.0/
  o escriba una carta a Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.




Serie apuntes
´
Area Sistemas operativos

CDU 004.451



Editores
 Pablo Ruiz M´zquiz
             u           pablo@alqua.org




                                       Notas de producci´n
                                                        o

                                                      ´
            Plantilla latex-book-es-b.tex, v. 0.1 (C) Alvaro Tejero Cantero.
                                   compuesto con software libre
´
Indice general


Portada                                                                                                   I


Copyleft                                                                                                 VI

´
Indice general                                                                                          VII


1. Introducci´n a los Sistemas Operativos
              o                                                                                          1
   1.1. Definici´n de Sistema Operativo . . . . . . . . . . . . . . . . . . . . . .
                 o                                                                                  .    1
   1.2. Relaci´n con la m´quina subyacente . . . . . . . . . . . . . . . . . . . .
               o          a                                                                         .    2
        1.2.1. Componentes b´sicos de la arquitectura Von Neuman . . . . . .
                                a                                                                   .    2
        1.2.2. Registros del procesador . . . . . . . . . . . . . . . . . . . . . . .               .    3
        1.2.3. Ejecuci´n de instrucciones . . . . . . . . . . . . . . . . . . . . . .
                       o                                                                            .    4
        1.2.4. Interrupciones . . . . . . . . . . . . . . . . . . . . . . . . . . . .               .    5
   1.3. Funciones y objetivos de los Sistemas Operativos . . . . . . . . . . . . .                  .    7
        1.3.1. El Sistema Operativo como Interfaz Usuario/Computadora . . .                         .    7
        1.3.2. El Sistema OPerativo como administrador de recursos . . . . . .                      .    9
        1.3.3. Facilidad de evoluci´n del Sistema Operativo . . . . . . . . . . .
                                     o                                                              .    9
   1.4. Evoluci´n hist´rica de los Sistemas Operativos . . . . . . . . . . . . . .
                 o     o                                                                            .   10
        1.4.1. Proceso en serie. Primera generaci´n (1945-1955) . . . . . . . . .
                                                     o                                              .   10
        1.4.2. Sistemas sencillos de proceso por lotes. Segunda generaci´n (1955-
                                                                              o
                 1965) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .            . 11
        1.4.3. Multiprogramaci´n. Tercera Generaci´n (1965-1980) . . . . . . .
                                  o                      o                                          . 11
        1.4.4. Computadoras personales. Cuarta Generaci´n (1980-1990) . . . .
                                                                o                                   . 13

2. Gesti´n de procesos
        o                                                                                               15
   2.1. Procesos y tareas . . . . . . . . . . . . . . . . . . . . . . . . . .   .   .   .   .   .   .   15
        2.1.1. Divisi´n impl´
                     o       ıcita y expl´
                                         ıcita de tareas . . . . . . . . . .    .   .   .   .   .   .   15
        2.1.2. Tipos de procesos y relaci´n entre procesos concurrentes
                                           o                                    .   .   .   .   .   .   16
        2.1.3. El sistema operativo y los procesos . . . . . . . . . . . .      .   .   .   .   .   .   17
   2.2. Creaci´n y terminaci´n de procesos . . . . . . . . . . . . . . . .
               o             o                                                  .   .   .   .   .   .   18
   2.3. Estados de un proceso . . . . . . . . . . . . . . . . . . . . . . .     .   .   .   .   .   .   19
        2.3.1. Modelo de dos estados . . . . . . . . . . . . . . . . . . .      .   .   .   .   .   .   19
        2.3.2. Modelo de 5 estados . . . . . . . . . . . . . . . . . . . .      .   .   .   .   .   .   21
        2.3.3. Procesos suspendidos . . . . . . . . . . . . . . . . . . . .     .   .   .   .   .   .   23
   2.4. Estructuras de control del sistema operativo . . . . . . . . . . .      .   .   .   .   .   .   27



                                                                                                        vii
´
INDICE GENERAL


         2.4.1.   Tablas de memoria, de E/S, de archivos y de procesos . .                                          .   .   .   .   .   27
         2.4.2.   Bloque de control de procesos (BCP) . . . . . . . . . . . .                                       .   .   .   .   .   28
         2.4.3.   Estados del sistema y listas de procesos . . . . . . . . . .                                      .   .   .   .   .   30
         2.4.4.   Conmutaci´n de procesos . . . . . . . . . . . . . . . . . .
                             o                                                                                      .   .   .   .   .   31
         2.4.5.   Servicios del sistema operativo para la gesti´n de procesos
                                                               o                                                    .   .   .   .   .   32

3. Planificaci´n de procesos
              o                                                                                                                         35
   3.1. Concepto y criterios de planificaci´n . . . . . . . . . . . . . . . . . . . .
                                            o                                                                                       .   35
        3.1.1. Utilizaci´n del procesador: . . . . . . . . . . . . . . . . . . . . .
                        o                                                                                                           .   35
        3.1.2. Productividad . . . . . . . . . . . . . . . . . . . . . . . . . . . .                                                .   35
        3.1.3. Tiempo de retorno . . . . . . . . . . . . . . . . . . . . . . . . . .                                                .   36
        3.1.4. Tiempo de espera . . . . . . . . . . . . . . . . . . . . . . . . . .                                                 .   36
        3.1.5. Tiempo de respuesta . . . . . . . . . . . . . . . . . . . . . . . . .                                                .   36
   3.2. Tipos de planificadores . . . . . . . . . . . . . . . . . . . . . . . . . . . .                                              .   36
        3.2.1. Planificador a largo plazo (PLP) . . . . . . . . . . . . . . . . . .                                                  .   36
        3.2.2. Planificador a corto plazo (PCP) . . . . . . . . . . . . . . . . . .                                                  .   37
        3.2.3. Planificador a medio plazo (PMP) . . . . . . . . . . . . . . . . .                                                    .   38
   3.3. Algoritmos de planificaci´n . . . . . . . . . . . . . . . . . . . . . . . . .
                                 o                                                                                                  .   38
        3.3.1. Algoritmo First Come First Serve (FCFS) . . . . . . . . . . . . .                                                    .   39
        3.3.2. Algoritmo por reparto circular de tiempo (RR, Round-Robin) . .                                                       .   39
        3.3.3. Planificaci´n con expropiaci´n basada en prioridades (ED, Event-
                          o                   o
                Driven) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .                                             . 42
        3.3.4. Planificaci´n MLQ (Multiple level queues) . . . . . . . . . . . . .
                          o                                                                                                         . 43

4. Programaci´n Concurrente
               o                                                                                                                        45
   4.1. Multitarea, multiprogramaci´n y multiproceso . . . . . . . . . . . . . . .
                                     o                                                                                              .   45
   4.2. Principios de concurrencia . . . . . . . . . . . . . . . . . . . . . . . . . .                                              .   45
   4.3. Comunicaci´n y sincronizaci´n de procesos . . . . . . . . . . . . . . . .
                    o                o                                                                                              .   46
        4.3.1. Posibilidades de interacci´n de procesos . . . . . . . . . . . . . .
                                         o                                                                                          .   46
        4.3.2. Necesidad de sincronizaci´n de los procesos: regi´n cr´
                                         o                        o     ıtica y exclu-
                si´n mutua . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
                  o                                                                                                                 .   47
   4.4. Soluciones software para la exclusi´n mutua . . . . . . . . . . . . . . . .
                                           o                                                                                        .   49
        4.4.1. Algoritmo de Dekker . . . . . . . . . . . . . . . . . . . . . . . . .                                                .   49
        4.4.2. Algoritmo de Peterson . . . . . . . . . . . . . . . . . . . . . . . .                                                .   50
        4.4.3. Sem´foros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
                    a                                                                                                               .   56
        4.4.4. Monitores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .                                              .   58
        4.4.5. Paso de mensajes . . . . . . . . . . . . . . . . . . . . . . . . . . .                                               .   60
        4.4.6. Soluciones hardware para la exclusi´n mutua . . . . . . . . . . .
                                                    o                                                                               .   63

5. Interbloqueos                                                                                                                        73
   5.1. Principios de interbloqueo . . . . .    .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   73
        5.1.1. Recursos reutilizables . . .     .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   73
        5.1.2. Recursos consumibles . . .       .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   73
        5.1.3. Condiciones de interbloqueo      .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   74



viii                                                                                Sistemas Operativos - 0.5.0
´
                                                                           INDICE GENERAL


   5.2. Prevenci´n de interbloqueos . . . . . . . . . . . . . .
                 o                                                 .   .   .   .   .   .   .   .   .   .   .   .    74
   5.3. Detecci´n de interbloqueos . . . . . . . . . . . . . . .
               o                                                   .   .   .   .   .   .   .   .   .   .   .   .    75
   5.4. Predicci´n de interbloqueo. Algoritmo del banquero
                o                                                  .   .   .   .   .   .   .   .   .   .   .   .    76
        5.4.1. Negativa de iniciaci´n de procesos . . . . . .
                                   o                               .   .   .   .   .   .   .   .   .   .   .   .    77
        5.4.2. Negativa de asignaci´n de recursos . . . . . .
                                    o                              .   .   .   .   .   .   .   .   .   .   .   .    78

6. Gesti´n de memoria
        o                                                                                                           81
   6.1. Reubicaci´n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
                  o                                                                                            .    81
   6.2. Asignaci´n de memoria con particiones fijas . . . . . . . . . . . . . . . .
                o                                                                                              .    82
   6.3. Asignaci´n de memoria con particiones din´micas . . . . . . . . . . . . .
                o                                     a                                                        .    84
   6.4. Asignaci´n de memoria con paginaci´n simple . . . . . . . . . . . . . . .
                o                             o                                                                .    84
   6.5. Asignaci´n de memoria con segmentaci´n simple . . . . . . . . . . . . .
                o                                o                                                             .    87
   6.6. Memoria virtual . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .                          .    88
        6.6.1. Estructuras Hardware y de control . . . . . . . . . . . . . . . . .                             .    88
        6.6.2. Hiperpaginaci´n y cercan´ de referencias . . . . . . . . . . . . .
                             o            ıa                                                                   .    89
        6.6.3. Memoria virtual con paginaci´n y buffer de traducci´n adelantada
                                              o                         o
               (TLB) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .                         . 90
        6.6.4. Software del SO para la gesti´n de memoria virtual . . . . . . . .
                                              o                                                                . 90

´
Indice alfab´tico
            e                                                                                                       95

Historia                                                                                                            97

Creative Commons Deed                                                                                               99

Manifiesto de Alqua                                                                                                 101

El proyecto libros abiertos de Alqua                                                                               105

Otros documentos libres                                                                                            109




http://alqua.org/libredoc/SSOO                                                                                      ix
´
INDICE GENERAL




x                Sistemas Operativos - 0.5.0
1 Introducci´n a los Sistemas Operativos
            o


1.1.    Definici´n de Sistema Operativo
               o

   Un sistema operativo puede ser contemplado como una colecci´n organizada de exten-
                                                                o
siones software del hardware, consistentes en rutinas de control que hacen funcionar al
computador y proporcionan un entorno para la ejecuci´n de programas. Adem´s, estos
                                                        o                      a
programas utilizan las facilidades proporcionadas por el sistema operativo para obtener
acceso a recursos del sistema inform´tico como el procesador, archivos y dispositivos
                                       a
de entrada/salida (E/S). De esta forma, el SO constituye la base sobre la cual pueden
escribirse los programas de aplicaci´n, los cuales invocar´n sus servicios por medio de
                                     o                    a
llamadas al sistema. Por otro lado, los usuarios pueden interactuar directamente con el
SO a trav´s de ´rdenes concretas. En cualquier caso, el SO act´a como interfaz entre
           e     o                                               u
los usuarios/aplicaciones y el hardware de un sistema inform´tico.
                                                              a

   El rango y la extensi´n de los servicios proporcionados por un SO dependen de varios
                         o
factores. As´ las funciones visibles al usuario est´n en gran medida determinadas por la
            ı,                                      a
necesidades y caracter´ısticas del entorno objetivo que el SO est´ destinado a soportar. Por
                                                                  a
ejemplo, un SO destinado al desarrollo de programas en un entorno interactivo puede
tener un conjunto bastante diferente de llamadas y ´rdenes que un sistema operativo
                                                         o
dise˜ado para soporte en tiempo de ejecuci´n a una aplicaci´n de tiempo real dedicada,
    n                                         o                 o
tal como el control del motor de un coche, el control del reactor de una central nuclear
o el sistema de actualizaciones derivado de las operaciones de un cajero autom´tico de
                                                                                    a
una entidad bancaria.

   Internamente, un SO act´a como gestor de los recursos del sistema inform´tico tales
                           u                                                 a
como el procesador, la memoria, los archivos y los dispositivos de E/S. En esa funci´n,
                                                                                    o
el SO mantiene actualizada la informaci´n relativa al estado de sistemas que soportan
                                        o
la ejecuci´n concurrente de programas, el SO resuelve las peticiones conflictivas de re-
          o
cursos de manera que preserve la integridad del sistema y al hacerlo intenta optimizar
el rendimiento final.

   En general, el SO presenta al usuario el equivalente de una m´quina virtual que sea
                                                                  a
m´s f´cil de utilizar que la m´quina subyacente y uno de sus objetivos primarios es incre-
  a a                         a
mentar la productividad de los recursos que ofrece al sistema mediante una planificaci´no
lo m´s ´ptima posible de ellos.
    a o



                                                                                          1
1 Introducci´n a los Sistemas Operativos
            o


1.2.     Relaci´n con la m´quina subyacente
               o          a
1.2.1.    Componentes b´sicos de la arquitectura Von Neuman
                       a
   A un nivel muy alto, un sistema inform´tico que implemente la arquitectura Von
                                           a
Neuman cl´sica consta de 3 componentes b´sicos: memoria principal, unidad central
            a                               a
de proceso y dispositivos de entrada/salida. La unidad central de proceso, a su ves,
est´ constituida por la unidad aritm´tico-l´gica, la unidad de control y un conjunto
   a                                  e    o
de registros. Los componentes b´sicos mencionados se encuentran interconectados para
                                a
llevar a cabo la funci´n principal del computador, que consiste en la ejecuci´n de las
                      o                                                      o
sentencias que forman los procesos. As´ pues, se tienen cuatro elementos estructurales
                                        ı
principales.

       Memoria principal: Com´nmente conocida como memoria RAM. En ella se encon-
                               u
       trar´ el programa en c´digo m´quina a ejecutar, los datos de entrada y los resulta-
           a                 o      a
       dos. La memoria est´ formada por un conjunto de celdas id´nticas que pueden ser
                           a                                       e
       accedidas de forma aleatoria mediante los distintos registros de direccionamiento.
       Esta memoria es normalmente vol´til y tambi´n se conoce como memoria real.
                                        a           e

       La unidad aritm´tico-l´gica permite efectuar un conjunto de opoeraciones aritm´ti-
                         e     o                                                       e
       cas y l´gicas de los datos. Estos datos, que pueden proceder de memoria principal o
              o
       ser el resultado de operaciones previas, se almacenar´n en los registros de entrada
                                                             a
       de que esta unidad dispone. El resultado de la operaci´n, as´ como la informa-
                                                                 o     ı
       ci´n relativa al estado de terminaci´n de la misma, quedar´n almacenados en los
         o                                   o                      a
       correspondientes registros.

       La unidad de control es la que se encarga de hacer funcionar al conjunto, para lo
       cual lleva a cabo las siguientes funciones:

         • Lee de memoria las instrucciones m´quina que forman el programa.
                                             a
         • Interpreta cada instrucci´n le´
                                    o    ıda.
         • Lee los datos de memoria referenciados por la instrucci´n.
                                                                  o
         • Ejecuta la instrucci´n.
                               o
         • Almacena el resultado de cada instrucci´n.
                                                  o

       Finalmente, la unidad de Entrada/Salida se encarga de realizar la transferencia de
       informaci´n entre la memoria (o los registros) y los perif´ricos. La E/S se puede
                 o                                               e
       efectuar bajo el gobierno de la unidad de control (E/S programada) o de forma in-
       dependiente (DMA). El transporte de datos se realiza, pues, entre el computador
       y su entorno exterior. Dicho entorno consta de una gran variedad de dispositi-
       vos externos que incluye a los dispositivos de memoria secundaria, los equipos de
       comunicaci´n y los terminales.
                   o

Adem´s de los descritos anteriormente, los sistemas inform´ticos disponene de un con-
      a                                                     a
junto de elementos de interconexi´n (buses de datos). Estos elementos est´n constituidos
                                 o                                       a



2                                                             Sistemas Operativos - 0.5.0
1.2 Relaci´n con la m´quina subyacente
                                                          o          a


por mecanismos que permiten la comunicaci´n entre los componentes que conforman el
                                             o
sistema inform´tico, es decir, su funci´n es la de interconectar procesadores, memoria
               a                       o
principal y m´dulos de E/S.
             o

1.2.2.   Registros del procesador
  Dentro del procesador hay un conjunto de registros que ofrecen un nivel de memoria
que es m´s r´pido y peque˜o que la memoria principal. Los registros del procesador
         a a                n
pueden clasificarse de la siguiente forma:

     Registros visibles de usuario: Un registro visible al usuario es aqu´l que puede ser
                                                                         e
     referenciado por medio de lenguaje m´quina que ejecuta el procesador, siendo, por
                                           a
     lo general, accesible a todos los programas, tanto de aplicaci´n como de sistema.
                                                                     o
     Un programador de lenguaje de m´quina o ensamblador puede minimizar las refe-
                                         a
     rencias a memoria principal mediante un uso ´ptimo de estos registros. Los tipos
                                                     o
     de registro normalmente disponibles son: registros de datos, registros de direcci´n
                                                                                      o
     y registros de c´digos de condici´n.
                     o                 o

         • Los registros de datos pueden ser asignados por el programador a diversas
           funciones. En muchos casos, son de prop´sito general y pueden ser empleados
                                                   o
           por instrucciones que lleven a cabo cualquier tipo de operaci´n sobre un da-
                                                                        o
           to determinado. Sin embargo, suelen establecerse ciertas restricciones como
           dedicar algunos registros para operaciones en coma flotante.
         • Los registros de direcci´n guardan direcciones de memoria principal que pue-
                                   o
           den contener datos, instrucciones o parte de una direcci´n efectiva utilizada
                                                                   o
           para calcularla. Como ejemplo de registros de direcci´n podemos incluir los
                                                                o
           siguientes:
             ◦ Registro ´ındice: Se utiliza en el direccionamiento indexado que consiste
               en sumar un ´ ındice a un valor base para obtener la direcci´n efectiva.
                                                                           o
             ◦ Puntero de segmento: Cuando se utiliza direccionamiento segmentado la
               memoria se divide en segmentos, que son bloques de palabras de tama˜o    n
               variable. Una referencia a memoria consta de un segmento particular y
               un desplazamiento dentro del segmento.
             ◦ Puntero de pila: Si existe un direccionamiento de pila visible para los
               usuarios, la pila estar´, por lo general, en memoria principal, existiendo
                                      a
               un registro dedicado a se˜alar la cima de la pila, para poder sacar (pop)
                                          n
               e introducir (push) elementos en ella.
         • Una ultima categor´ de registros que son, al menos, parcialmente visibles
                ´               ıa
           para los usuarios, son aqu´llos que contienen c´digos de condici´n (tambi´n
                                     e                    o                  o        e
           denominados indicadores o flags). Los c´digos de condici´n son bits activados
                                                    o               o
           por el hardware como resultado de determinadas operaciones. Por ejemplo,
           una operaci´n aritm´tica puede producir un resultado positivo, negativo, cero,
                       o        e
           con acarreo o con desbordamiento, lo que se reflejar´ en el correspondiente bit
                                                              a



http://alqua.org/libredoc/SSOO                                                         3
1 Introducci´n a los Sistemas Operativos
            o


           o flag de control y que puede consultarse posteriormente, por ejemplo, como
           parte de una operaci´n de salto condicional. Es importante tener en cuenta que
                                o
           los c´digos de condici´n pueden ser consultados por las aplicaciones de usuario
                o                o
           pero no modificados por ´stas. Los bits de c´digo de condici´n se sgrupan en
                                     e                  o                o
           uno o m´s registros que forman parte de los determinados registros o palabras
                    a
           de control que veremos a continuaci´n.
                                                o

     En algunas m´quinas, una llamadaa un procedimiento o subrutina provocar´ que
                    a                                                              a
     los registros visibles de usuario se salven autom´ticamente, para luego restaurarlos
                                                      a
     y continuar con la ejecuci´n normal. Este proceso de salvar y restaurar lo lleva a
                                 o
     cabo el procesador como parte de las instrucciones de llamada y retorno. Esto per-
     mite que cada procedimiento pueda utilizar los registros de forma independiente.
     En otras m´quinas, sin embargo, es responsabilidad del programador salvar los re-
                 a
     gistros que considere relevantes antes de efectuar una llamada a un procedimiento.

     Los registros de control y estado son utilizados por el procesador para el control de
     las operaciones o por rutinas privilegiadas del sistema operativo para controlar la
     ejecuci´n de los programas. En la mayor´ de las m´quinas, la mayor parte de estos
             o                                ıa         a
     registros no son visibles para los usuarios. Adem´s de los registros MAR, MBR,
                                                         a
     IOAR, IOBR, que se utilizan en funciones de direccionamiento e intercambio de
     datos entre la unidad procesadora y la memoria principal y los dispositivos de
     E/S, la unidad de control tiene asociados una serie de registros, entre los que cabe
     destacar el contador de programa (PC, program counter ), que indica la direcci´n   o
     de la siguiente instrucci´n m´quina a ejecutar, el puntero de pila (SP, stack poin-
                              o    a
     ter ), que sirve para manejar la pila del sistema en memoria principal, el registro
     de instrucci´n (RI) que permite almacenar la instrucci´n m´quina a ejecutar, y el
                  o                                           o    a
     registro de estado (SR) o palabra de estado del programa (PSW, program status
     word ) que almacena junto con el contador de programa (PC) diversa informaci´n     o
     producida por la ultima instrucci´n del programa ejecutada (bits de estado aritm´-
                        ´              o                                                 e
     tico) e informaci´n sobre la forma en que ha de comportarse la computadora (bits
                       o
     de nivel de ejecuci´n que determinan el modo en que la computadora ejecuta las
                          o
     instrucciones, usuario o sistema o supervisor, y bits de control de interrupciones
     que establecen las instrucciones que se pueden aceptar).

1.2.3.   Ejecuci´n de instrucciones
                o
   La tarea b´sica que realiza un computador es la ejecuci´n de instrucciones. El punto
              a                                            o
de vista m´s sencillo es considerar que el procesamiento de instrucciones consiste en
            a
una sencuencia sencilla que se repite a alta velocidad (cientos de millones de veces por
segundo). Esta secuencia consiste en 3 pasos: lectura de memoria de la instrucci´n m´-
                                                                                    o    a
quina apuntada por el PC, incremento del contador del programa - para que apunte a
la siguiente instrucci´n m´quina - y ejecuci´n de la instrucci´n.
                      o   a                 o                 o
   Esta secuencia tiene 2 prioridades fundamentales: es lineal, es decir, ejecuta de forma
consecutiva las instrucciones que est´n en direcciones consecutivas, y forma un bucle
                                       a



4                                                            Sistemas Operativos - 0.5.0
1.2 Relaci´n con la m´quina subyacente
                                                          o          a


infinito. Esto significa que la unidad de control de la computadora est´ continua e inin-
                                                                        a
terrumpidamente realizando esta secuencia.
  Podemos decir, por tanto, que lo unico que sabe hacer la computadora es repetir a
                                     ´
gran velocidad esta secuencia. Esto quiere decir, que para que realice algo util, se ha de
                                                                            ´
tener cargados en memoria un programa m´quina con sus datos y hemos de conseguir
                                             a
que el contador de program apunte a la instrucci´n m´quina inicial del programa.
                                                  o    a
  El esquema de ejecuci´n lineal es muy limitado, por lo que se a˜aden unos mecanismos
                        o                                         n
que permiten alterar esta ejecuci´n lineal. En esencia, todos ellos se basan en algo muy
                                 o
simple; modifican el contenido del programa, con lo que se consigue que se salte o bifurque
a otro segmento del programa o a otro programa (que, l´gicamente, tambi´n ha de residir
                                                       o                  e
en memoria). Los tres mecanismos b´sicos de ruptura de secuencia son los siguientes.
                                     a

     Las instrucciones m´quina de salto o bifurcaci´n, que permiten que el programa
                        a                          o
     rompa su secuencia lineal de ejecuci´n pasando a otro fragmento de s´ mismo.
                                         o                               ı

     Las interrupciones externas o internas, que hacen que la unidad de control modi-
     fique el valor del contador de programa saltando a otro programa.

     La instrucci´n de m´quina“TRAP”, que produce un efecto similar a la interrupci´n,
                 o      a                                                          o
     haciendo que se salte a otro programa.

Si desde el punto de vista de la programaci´n son especialmente interesantes las instruc-
                                           o
ciones de salto, desde el punto de vista de los SSOO son mucho m´s importantes las
                                                                     a
interrupciones y las interrupciones de TRAP. Por tanto, centraremos nuestro inter´s en
                                                                                    e
resaltar los aspectos fundamentales de estos dos mecanismos.

1.2.4.   Interrupciones
   Casi todos los computadores tienen un mecanismo mediante el cual otros m´dulos   o
(E/S, memoria) pueden interrumpir la ejecuci´n normal del procesador. Las interrupcio-
                                               o
nes aparecen, principalmente, como una v´ para mejorar la eficiencia del procesamiento
                                           ıa
debido a que la mayor´ de los dispositivos externos son mucho m´s lentos que el proce-
                       ıa                                          a
sador.
   Con las interrupciones, el procesador se puede dedicar a la ejecuci´n de otras instruc-
                                                                      o
ciones mientras una operaci´n de E/S est´ en proceso. Cuando el dispositivo de E/S
                              o              a
est´ disponible, es decir, cuando est´ preparado para aceptar m´s datos del procesador,
   e                                 e                           a
el m´dulo de E/S de dicho dispositivo enviar´ una se˜al de solicitud de interrupci´n al
     o                                         a       n                              o
procesador. El procesador responde suspendiendo la operaci´n del programa en curso y
                                                              o
saltando a un programa que da servicio al dispositivo de E/S en particular, conocido co-
mo rutina de tratamiento de interrupciones (Interrupt handler), reanudando la ejecuci´n o
original despu´s de haber atendido al dispositivo.
               e
   Desde el punto de vista del programa de usuario una interrupci´n es solamente eso:
                                                                     o
una interrupci´n de la secuencia normal de ejecuci´n. Cuando el tratamiento de la inte-
               o                                   o
rrupci´n termina, la ejecuci´n contin´a. El programa no tiene que disponer de ning´n
       o                      o        u                                                u
c´digo especial para dar cabida a las interrupciones; el procesador y el sistema operativo
 o



http://alqua.org/libredoc/SSOO                                                          5
1 Introducci´n a los Sistemas Operativos
            o


son los responsables de suspender el pograma de usuario y de reanudarlo despu´s en el
                                                                                    e
mismo punto.
   Para dar cabida a las interrupciones, se a˜ade un ciclo de interrupci´n al ciclo de
                                                n                            o
instrucci´n. En el ciclo de interrupci´n el procesador comprueba si ha ocurrido alguna
         o                              o
interrupci´n, lo que se indicar´ con la presencia de alguna se˜al de interrupci´n. Si no hay
           o                   a                              n                o
interrupciones pendientes, el procesador sigue con el ciclo de lectura y trae la pr´xima
                                                                                      o
instrucci´n del programa en curso. Si hay una interrupci´n pendiente, el programador
         o                                                   o
suspende la ejecuci´n del programa en curso y ejecuta una rutina de tratamiento de
                     o
interrupci´n. Esta rutina, generalmente, forma parte del sistema operativo, determina la
           o
naturaleza de la interrupci´n y realiza cuantas acciones sean necesarias. Una interrupci´n
                            o                                                             o
desencadena una serie de sucesos tanto en el hardware del procesador como en el software.
Estos sucesos pueden secuenciarse de la siguiente forma:

    1. El dispositivo emite una se˜al de interrupci´n al procesador.
                                  n                o

    2. El procesador finaliza la ejecuci´n de la instrucci´n en curso antes de responder a
                                       o                 o
       la interrupci´n.
                    o

    3. El procesador pregunta por la interrupci´n comprueba que hay una y env´ una
                                               o                                 ıa
       se˜al de reconocimiento al dispositivo que gener´ la interrupci´n, de forma que
         n                                             o              o
       ´ste suspende su se˜al de interrupci´n.
       e                  n                o

    4. El procesador necesita ahora prepararse para transferor el control a la rutina de
       interrupci´n. Para empezar, hace falta salvar la informaci´n necesaria para rea-
                 o                                               o
       nudar la ejecuci´n del programa en curso en el punto de la la interrupci´n. La
                       o                                                          o
       m´ınima informaci´n es la palabra de estado del programa (PSW) y la ubicaci´n
                         o                                                            o
       de la pr´xima instrucci´n a ejecutar.
               o              o

    5. El procesador carga ahora el contador de programa con la ubicaci´n de entrada
                                                                       o
       del programa de tratamiento de interrupci´n.
                                                o

    6. La rutina de interrupci´n suele comenzar salvando el contenido de los registros del
                              o
       procesador porque la rutina puede utilizarlos y se perder´ la informaci´n que la
                                                                 ıa             o
       ejecuci´n del proceso interrumpido hibiera dejado en ellos.
              o

    7. La rutina de tratamiento de la interrupci´n procesa la interrupci´n realizando las
                                                o                       o
       acciones requeridas para atenderla.

    8. Tras completar el tratamiento de la interrupci´n, se recuperan de la pila los valores
                                                      o
       de los registros que se salvaron y se restauran en los correspondientes registros.

    9. El paso final es restaurar los valores del la PSW y del contador de programa tambi´n
                                                                                        e
       a partir de la pila y continuar con la ejecuci´n del programa interrumpido. Estas
                                                      o
       acciones se llevan a cabo como resultado de ejecutar la instrucci´n m´quina para
                                                                           o    a
       retorno de interrupci´n, RETI, que incluyen la mayor´ de las computadoras en su
                             o                                 ıa
       lenguaje m´quina.
                  a



6                                                              Sistemas Operativos - 0.5.0
1.3 Funciones y objetivos de los Sistemas Operativos


Las computadoras incluyen varias se˜ales de solicitud de interrupci´n, cada una de las
                                     n                               o
cuales tiene una determinada prioridad. En caso de activarse al tiempo varias de es-
tas se˜ales, se tratar´ la de mayor prioridad, quedando las dem´s a la espera de ser
       n              a                                            a
atendidas. Adem´s la computadora incluye un mencanismo de inhibici´n selectiva que
                  a                                                      o
permite detener todas o determinadas se˜ales de interrupci´n. Las se˜ales inhibidas no
                                         n                  o          n
son atendidas hasta que pasen a estar desinhibidas. La informaci´n de inhibici´n de
                                                                     o           o
las interrupciones suele incluirse en la parte del registro de estado que solamente es
modificable en nivel de n´cleo, por lo que su modificaci´n queda restringida al sistema
                          u                              o
operativo.
   Las interrupciones se pueden generar por diversas causas, que se pueden clasificar de
la siguiente forma:

       Excepciones de programa. Hay determinadas causas que hacen que un programa
       presente un problema en su ejecuci´n, por lo que deber´ generarse una interrupci´n,
                                         o                   a                         o
       de forma que el SO trate dicha causa. Ejemplos de errores de este tipo son el
       desbordamiento de operaciones matem´ticas, al divisi´n entre cero, el intento de
                                              a               o
       acceso a una zona de memoria no permitida, etc.
       Interrupciones de reloj.
       Interrupciones de E/S. Los controladores de los dispositivos de E/S necesitan in-
       terrumpir para indicar que han terminado una operaci´n o un conjunto de ellas.
                                                             o
       Excepciones del hardware como la detecci´n de un error de paridad en la memoria.
                                               o
       Instrucciones de TRAP. Estas instrucciones permiten que un programa genere una
       interrupci´n y se utilizan fundamentalmente para solicitar los servicios del SO.
                 o


1.3.     Funciones y objetivos de los Sistemas Operativos
  Como ya se ha visto, un sistema operativo act´a como interfaz entre la m´quina
                                                   u                             a
desnuda y los programas de aplicaciones o el propio usuario. por otro lado, el sistema
operativo tambi´n se encarga de gestionar los recursos del sistema inform´tico para
                e                                                           a
obtener un uso lo m´s ´ptimo posible de ´stos. A continuaci´n, trataremos las funciones
                    a o                 e                  o
del sistema operativo desde estos dos puntos de vista, as´ como las caracter´
                                                         ı                  ısticas que
debe presentar para mantener una capacidad de evoluci´n adecuada.
                                                       o

1.3.1.    El Sistema Operativo como Interfaz Usuario/Computadora
   Un sistema operativo debe hacer que la interacci´n del usuario o de los programas
                                                         o
de aplicaci´n con el computador resulte sencilla y f´cil y debe construirse de modo que
           o                                           a
permita el desarrollo efectivo, la verificaci´n y la introducci´n de nuevas funciones en el
                                             o                 o
sistema y, a la vez, no interferir en los servicios ya proporcionados.
   El Hardware y el Software que se utilizan para proveer al usuario de aplicaciones puede
contemplarse de forma estratificada o jer´rquica. Este usuario final no tiene que preocu-
                                            a
parse de la arquitectura del computador y contempla el sistema inform´tico en t´rminos
                                                                         a         e



http://alqua.org/libredoc/SSOO                                                          7
1 Introducci´n a los Sistemas Operativos
            o


de aplicaciones. Estas aplicaciones pueden construirse con un lenguaje de programaci´n  o
y son desarrolladas por los programadores de aplicaciones.
   Si se tuviera que desarrollar un programa de aplicaci´n con un conjunto de instruc-
                                                          o
ciones totalmente responsables del control del hardware, dicho programa tendr´ una  ıa
tarea abrumadora y compleja. Para facilitar esta tarea, se ofrecen una serie de progra-
mas de sistema. Algunos de estos programas implementan funciones muy utilizadas que
ayudan a la creaci´n de aplicaciones de usuario, la gesti´n de archivos y el control de los
                    o                                    o
dispositivos de E/S. El programa de sistema m´s importante es el sistema operativo.
                                                a
   El sistema operativo oculta al programador los detalles del hardware y le proporcio-
na una interfaz c´moda para utilizar el sistema y act´a como mediador, ofreciendo al
                   o                                    u
programador y a los programas de aplicaci´n un conjunto de servicios y utilidades que
                                           o
faciliten su tarea.
   De forma resumida el sistema operativo ofrece servicios en las siguientes ´reas:
                                                                               a

     Creaci´n de programas: El sistema operativo ofrece una gran variedad de servicios
            o
     como los editores y depuradores (debuggers), para ayudar al programador en la
     creaci´n de programas. Normalmente, estos servicios est´n en forma de programas
           o                                                a
     de utilidad que no forman realmente parte del sistema operativo, pero que son
     accesibles a trav´s de ´l.
                      e     e

     Ejecuci´n de programas: Para ejecutar un programa es necesario realizar un cierto
             o
     n´mero de tareas. Las instrucciones y los datos deben cargarse en memoria prin-
      u
     cipal, los archivos y los dispositivos de E/S deben inicializarse y deben prepararse
     otros recursos. El sistema operativo administra todas estas tareas por el usuario.

     Acceso a los dispositivos de E/S: Cada dispositivo de E/S requiere un conjunto
     propio y peculiar de instrucciones o se˜ales de control para su funcionamiento.
                                             n
     El sistema operativo, ayudado por los manejadores o drivers de dispositivo tiene
     en cuenta estos detalles de forma que el programador pueda pensar en forma de
     lecturas y escrituras simples desde o hacia el dispositivo.

     Acceso controlado a los archivos: El sistema operativo se ocupa del formato de los
     archivos y del medio de almacenamiento. En el caso de sistemas de varios usuarios
     trabajando simult´neamente, es el sistema operativo el que brinda los mecanismos
                       a
     para controlar que el acceso a los archivos se lleve a cabo de una forma correcta.

     Acceso al sistema: En el caso de un sistema compartido o p´blico, el sistema
                                                                     u
     operativo controla el acceso al sistema como un todo y a los recursos espec´ ıficos
     del sistema. Las funciones de acceso deben brindar proteci´n a los recursos y a los
                                                               o
     datos ante usuarios no autorizados y debe resolver conflictos en la propiedad de
     los recursos.

     Detecci´n y respuesta a errores: Cuando un sistema inform´tico est´ en funcio-
             o                                                   a        a
     namiento pueden producirse varios errores. El sistema operativo debe dar una
     respuesta que elimine la condici´n de error con el menor impacto posible sobre las
                                     o
     aplicaciones que est´n en ejecuci´n.
                         a            o



8                                                             Sistemas Operativos - 0.5.0
1.3 Funciones y objetivos de los Sistemas Operativos


     Contabilidad: Un sistema operativo debe recoger estad´ısticas de utilizaci´n de los
                                                                               o
     diversos recursos y supervisar par´metros de rendimiento tales como el tiempo de
                                       a
     respuesta.


1.3.2.   El Sistema OPerativo como administrador de recursos
   Un SO debe perseguir una utilizaci´n lo m´s ´ptima y equilibrada posible de los
                                           o       a o
recursos que administra. De esta forma se obtendr´ un alto rendimiento del sistema
                                                        a
inform´tico gobernado.
        a
   El SO es el responsable de la gesti´n de los recursos de la m´quina y mediante su
                                         o                          a
administraci´n tiene el control sobre las funciones b´sicas de la misma. El SO no es nada
             o                                        a
m´s que un programa pero la diferencia clave es su prop´sito. El SO dirige al procesador
  a                                                       o
en el empleo de otros recursos del sistema y en el control del tiempo de ejecuci´n de los
                                                                                  o
programas de usuario.
   Una parte del SO reside en memoria principal. En esta parte est´ el n´cleo (kernel )
                                                                       a     u
que incluye funciones del SO utilizdas con m´s frecuencia aunque, en un momento dado,
                                               a
puede incluir otras partes en uso. El resto de la memoria, que contiene datos y programas
de usuario, es administrada conjuntamente por el SO y por el hardware de control de
memoria. El SO decide cu´ndo puede utilizarse un dispositivo de E/S por parte de un
                            a
programa en ejecuci´n y controla el acceso y la utilizaci´n de los archivos. El procesador
                     o                                    o
es, en s´ mismo, un recurso y es el SO el que debe determinar cu´nto tiempo de procesador
        ı                                                       a
debe dedicarse a la ejecuci´n de un programa usuario en particular. En el caso de sistemas
                           o
multiprocesador, la decisi´n debe tomarse entre todos los procesadores.
                           o


1.3.3.   Facilidad de evoluci´n del Sistema Operativo
                             o
  Un SO importante evolucionar´ en el tiempo por una serie de razones:
                              a

     Actualizaciones del hardware y nuevos tipos de hardware: Las mejoras introducidas
     en los componentes hardware del computador deben tener soporte en el sistema
     operativo. Un ejemplo es el aprovechamiento del sistema operativo del hardware
     de paginaci´n que acompa˜a a la memoria de algunos sistemas inform´ticos.
                o              n                                           a

     Nuevos servicios: Como respuesta a nuevas necesidades, el sistema operativo am-
     pliar´ su oferta de servicios para a˜adir nuevas medidas y herramientas de control.
          a                              n

     Correcciones: El sistema operativo tiene fallos que se descubrir´n con el curso del
                                                                     a
     tiempo y que es necesario corregir.

La necesidad de hacer cambios en un SO de forma regular introduce ciertos requisitos en
el dise˜o. Una afirmaci´n obvia es que el sistema debe tener una construcci´n modular,
       n               o                                                  o
con interfaces bien definidas entre los m´dulos y debe estar bien documentado.
                                        o



http://alqua.org/libredoc/SSOO                                                          9
1 Introducci´n a los Sistemas Operativos
            o


1.4.     Evoluci´n hist´rica de los Sistemas Operativos
                o      o
   Para intentar comprender los requisitos b´sicos de un SO y el significado de las ca-
                                             a
racter´
      ısticas principales de un sistema operativo contempor´neo, resulta util considerar
                                                           a             ´
c´mo han evolucionado los sistemas operativos a los largo de los a˜os.
 o                                                                n

1.4.1.    Proceso en serie. Primera generaci´n (1945-1955)
                                            o
   En los primeros computadores, de finales de los 40 hasta mediados de los 50, el progra-
ma interactuaba directamente con el hardware: no hab´ sistema operativo. La operaci´n
                                                        ıa                              o
con estas m´quinas se efectuaba desde una consola dotada con indicadores luminosos y
             a
conmutadores o a trav´s de un teclado hexadecimal. Los programas se arrancan cargan-
                        e
do el registro contador de programas con la direcci´n de la primera instrucci´n. Si se
                                                      o                           o
deten´ el programa por un error, la condici´n de error se indicaba mediante los indica-
      ıa                                      o
dores luminosos. El programador pod´ examinar los registros relevantes y la memoria
                                        ıa
principal para comprobar el resultado de la ejecuci´n o para determinar la causa del
                                                      o
error.
   El siguiente paso significativo de la evoluci´n en el uso de sistemas inform´ticos vino
                                                o                               a
con la llegada de dispositivos de E/S tales como tarjetas perforadas y cintas de papel
y con los traductores de lenguajes. Los programas. codificados ahora en un lenguaje
de programaci´n, se traducen a un forato ejecutable mediante un programa como un
                o
compilador o un int´rprete. Otro programa, llamado cargador, automatiza el proceso de
                     e
cargar en memoria estos programas en c´digo ejecutable. El usuario coloca un programa
                                           o
y sus datos de entrada en un dispositivo de entrada y el cargador transfiere la informaci´n
                                                                                        o
desde el dispositivo a la memoria. Despu´s de transferir el control al programa cargado
                                            e
por medios manuales o autom´ticos, comienza la ejecuci´n del mismo. El programa en
                                a                          o
ejecuci´n lee sus datos desde el dispositivo de entrada asignado y puede producir ciertos
        o
resultados en un dispositivo de salida tal como una impresora o la pantalla.
   Estos primeros sistemas presentaban dos problemas principales:

       Planificaci´n: La mayor´ de las instalaciones empleaban un formulario de reserva
                  o              ıa
       de tiempo de m´quina. Normalmente, un usuario pod´ reservar bloques de tiempo,
                       a                                      ıa
       m´ltiplos, por ejemplo, de media hora. Si la ejecuci´n del programa terminaba antes
         u                                                 o
       del plazo asignado, el tiempo restante se desperdiciaba. Tambi´n pod´ suceder que
                                                                       e     ıa
       el programa no terminara dentro del plazo asignado, con lo que el programadir no
       pod´ saber si el programa hab´ terminado satisfactoriamente o no.
           ıa                          ıa

       Tiempo de preparaci´n: Un programa aun siendo sencillo requer´ un tiempo de
                             o                                         ıa
       preparaci´n bastante grande ya que en primer lugar se cargaba un compilador
                o
       y un programa en lenguaje de alto nivel (programa fuente) en la memoria. A
       continuaci´n, se salvaba el programa ya compilado (programa objeto) y, por ultimo,
                 o                                                                ´
       se montaba y cargaba este programa objeto junto con las funciones comunes.

Este modo de trabajo pod´ denominarse proceso en serie porque refleja el hecho de los
                        ıa
que usuarios ten´ que acceder al computador en serie.
                ıan



10                                                            Sistemas Operativos - 0.5.0
1.4 Evoluci´n hist´rica de los Sistemas Operativos
                                                  o      o


1.4.2.   Sistemas sencillos de proceso por lotes. Segunda generaci´n
                                                                  o
         (1955-1965)
   Las primeras m´quinas eran muy caras y, por tanto, era importante maximizar la
                   a
utilizaci´n de las mismas. El tiempo desperdiciado en la planificaci´n y la preparaci´n
         o                                                             o                  o
era inaceptable.
   Para mejorar el uso, se desarroll´ el concepto de sistema operativo por lotes (batch). El
                                    o
primer sistema operativo por lotes fue desarrollado a mediados de los 50 por la General
Motoros para usar en un IBM 701.
   La idea central que est´ detr´s del esquema sencillo de proceso por lotes es el uso de
                           a     a
un elemento de software conocido como monitor. Con el uso de esta clase de sistema
operativo, los usuarios ya no ten´ acceso directo a la m´quina. En su lugar, el usuario
                                  ıan                       a
deb´ entregar los trabajos en tarjetas o en cinta al operador del computador, quien
    ıa
agrupaba secuencialmente los trabajos por lotes y ubicaba los lotes enteros en un dis-
positivo de entrada para su empleo por parte del monitor. Cada programa se constru´        ıa
de modo tal que volviera al monitor al terminar el procesamiento y, en ese momento, el
monitor comenzaba a cargar autom´ticamente el siguiente programa.
                                      a
   Para obtener provecho del potencial de utilizaci´n de recursos, un lote de trabajos
                                                       o
debe ejecutarse autom´ticamente sin intervenci´n humana. Para este fin, deben pro-
                        a                          o
porcionarse algunos medios que instruyan al sistema operativo sobre c´mo debe tratar
                                                                          o
cada trabajo individual. Estas intrucciones son suministradas generalmente por medio
de ´rdenes del sistema operativo incorporadas al flujo de lotes. Las ´rdenes del sistema
    o                                                                  o
operativo son sentencias escritas en un Lenguaje de Control de Trabajos (JCL, Job Con-
trol Language). Entre las ´rdenes t´
                           o         ıpicas de un JCL se incluyen las marcas de comienzo
y finalizaci´n de un trabajo, las ´rdenes para cargar y ejecutar programas y las ´rdenes
           o                      o                                                 o
que anuncian necesidades de recursos tales como el tiempo esperado de ejecuci´n y los
                                                                                    o
requisitos de memoria. Estas ´rdenes se hallan incoporadas al flujo de los trabajos, junto
                               o
a los programas y a los datos del usuario.
   Una parte residente en memoria del SO por lotes, a veces llamado monitor de lotes, lee,
interpreta y ejecuta estas ´rdenes. En respuesta a ellas, los trabajos del lote se ejecutan
                            o
de uno en uno.


1.4.3.   Multiprogramaci´n. Tercera Generaci´n (1965-1980)
                        o                   o
   Incluso con las mejoras anteriores, el proceso por lotes dedica los recursos del sistema
inform´tico a una unica tarea a la vez.
       a            ´
   En el curso de su ejecucic´n, la mayor´ de los programas oscilan entre fases intensivas
                             o            ıa
de c´lculo y fases intensivas de operaciones de E/S. Esto queda indicado en la figura 1.1
     a
donde los periodos de c´lculo intensivo se indican mediante cuadros sombreados y las
                          a
operaciones de E/S mediante zonas en blanco. El problema es que los dispositivos de
E/S son muy lentos comparados con el procesador. El procesador gasta parte del tiempo
ejecutando hasta que encuentra una instrucci´n de E/S. Entonces debe esperar a que
                                                o
concluya la instrucci´n de E/S antes de continuar.
                      o
   Esta ineficiencia no es necesaria. Se sabe que hay memoria suficiente para almacenar



http://alqua.org/libredoc/SSOO                                                            11
1 Introducci´n a los Sistemas Operativos
            o

                                               Programa 1                                                                  Programa 2
                 ¦   ¦    ¦                                                                                   ¨    ¨   ¨         
                 §   §    §                                                                                   ©    ©   ©         




                 ¦   ¦    ¦                                                                                   ¨    ¨   ¨         

                 §   §    §                                                                                   ©    ©   ©         




                 ¦   ¦    ¦                                                                                   ¨    ¨   ¨         
                 §   §    §                                                                                   ©    ©   ©         




                     P1 inactivo P1 inactivo P1 inactivo P2 inactivo P2 inactivo P2 inactivo

                                                                             (a) Ejecución secuencial                                           Tiempo


                                                                                                                           Programa 1
                                                                                     
                                        !   !    !                    #        #       #




                                                                                     

                                        !   !    !                    #        #       #




                                                                                     
                                        !   !    !                    #        #       #




                                                                                                                           Programa 2
                                                        ¢   ¢    ¢                            ¤   ¤    ¤

                              ¡   ¡    ¡                £   £    £                            ¥   ¥    ¥




                                                        ¢   ¢    ¢                            ¤   ¤    ¤
                              ¡   ¡    ¡                £   £    £                            ¥   ¥    ¥




                                                        ¢   ¢    ¢                            ¤   ¤    ¤
                              ¡   ¡    ¡                £   £    £                            ¥   ¥    ¥




                     P1           P2           P1           P2                P1                  P2

                                                                                                                                                Tiempo
                                                                             (b) Ejecución multiprogramada


                          Figura 1.1: Ejecuci´n secuencial vs multiprogramaci´n
                                             o                               o




en memoria el sistema operativo (monitor residente) y un programa usuario. Suponga-
mos que hay espacio suficiente para almacenar el sistema operativo y dos programas
de usuario. Ahora, cuando un trabajo necesite esperar por una operaci´n de E/S, el
                                                                         o
procesador puede cambiar a otro trabajo que est´ listo para ser ejecutado. Si amplia-
                                                 e
mos la memoria para almacenar varios programas, podremos conmutar entre todos de
forma que el procesador permanezca ocupado el mayor tiempo posible, evitando as´ el ı
desperdicio de tiempo que suponen las esperas hasta que se completen las operaciones de
E/S. Este concepto es conocido como multiprogramaci´n o multitarea y es el punto
                                                        o
central de los sistemas operativos modernos.

   Como sugiere la figura 1.1 se pueden lograr ganancias significativas de rendimiento
intercalando la ejecuci´n de los programas, o, multiprigramando, que es como se le de-
                       o
nomina a este modo de operaci´n. Con un solo procesador no es posible la ejecuci´n
                                  o                                                 o
paralela de programas, y como m´ximo, s´lo un programa puede tener el control del
                                    a      o
procesador en un instante determinado. El ejemplo presentado en la figura 1.1 (b) con-
sigue un 100 % de utilizaci´n del procesador s´lo con dos programas activos. Aunque
                            o                  o
conveniente para ilustrar la idea b´sica en la multiprogramaci´n, no se deben esperar
                                    a                          o
resultados tan espectaculares en programas reales, ya que las distribuciones de las fa-
ses de computaci´n y E/S tienden a ser m´s variables. Para aumentar la utilizaci´n de
                  o                        a                                      o
recursos, los sistemas de multiprogramaci´n reales permiten generalmente que m´s de
                                          o                                       a
dos programas compitan por los recursos del sistema al mismo tiempo. El n´mero de
                                                                              u
programas en competencia activa por los recursos de un sistema inform´tico se denomina
                                                                     a
grado de multiprogramaci´n. En principio, mayores grados de multiprogramaci´n deben
                          o                                                   o
dar lugar a una mayor utilizaci´n de recursos.
                                o

  La multiprogramaci´n ha sido tradicionalmente empleada para aumentar la utilizaci´n
                       o                                                              o
de los recursos de un sistema inform´tico y para soportar m´ltiples usuarios simult´nea-
                                    a                      u                       a
mente activos.



12                                                                                                                                      Sistemas Operativos - 0.5.0
1.4 Evoluci´n hist´rica de los Sistemas Operativos
                                                o      o


1.4.4.   Computadoras personales. Cuarta Generaci´n (1980-1990)
                                                 o
   Con el desarrollo de la tecnolog´ LCI (Large Scale Integration) de construcci´n de
                                      ıa                                            o
circuitos, que permit´ fabricar chips con miles de transistores en un cent´
                        ıa                                                ımetro cuadrado
de silicio, se inicio la era de la computadora personal. En t´rminos de arquitectura, las
                                                              e
computadoras personales no eran muy distintas de las minicomputadoras del tipo PDP-
11, pero en t´rminos de precio s´ eran bastante distintas. Las computadoras personales
               e                    ı
m´s poderosas reciben el nombre gen´rico de estaciones de trabajo, pero en realidad s´lo
  a                                      e                                             o
son computadoras personales grandes.
   La amplia disponibilidad de poder de c´mputo condujo, junto con un nivel gr´fico
                                               o                                     a
bastante adecuado, al crecimiento de la industria de producci´n de software para las
                                                                  o
computadoras personales. Gran parte de este software ten´ adem´s, la ventaja de pre-
                                                            ıa,      a
sentar una gran amiganilidad con el usuario.
   Dos sistemas operativos han dominado la escena de las computadoras personales y las
estaciones de trabajo: MS-DOS de Microsoft y UNIX de ATT. MS-DOS tuvo un amplio
uso en el IBM PC y otras m´quinas que incorporaban el microprocesador 8088 de Intel
                                a
o alguno de sus sucesores. UNIX, su contendiente principal, domin´ las computadoras
                                                                       o
que no utilizaban microprocesadores de Intel, as´ como las estaciones de trabajo, en
                                                    ı
particular las que poseen chips RISC de altas prestaciones.
   Un interesante desarrollo que comenz´ a llevarse a cabo a mediados de la d´cada
                                             o                                      e
de los 80 ha sido el crecimiento de las redes de computadoras personales con sistemas
operativos en red y sistemas operativos distribuidos. En un sistema operativo en red, los
usuarios son conscientes de la existencia de varias computadoras y pueden conectarse
con m´quinas remotas. Cada m´quina ejecuta su propio sistema operativo local y tiene
       a                           a
su propio usuario. Un sistema operativo distribuido, por el contrario, presenta al usuario
un conjunto de computadores independientes como si se tratara de un solo sistema. En
un sistema operativo distribuido los usuarios no deben ser conscientes del lugar donde
su programa va a ejecutarse o la ubicaci´n de los archivos a los que desea acceder, esas
                                            o
cuestiones deben ser manejadas autom´ticamente y de forma eficiente por el sistema
                                           a
operativo.




http://alqua.org/libredoc/SSOO                                                         13
1 Introducci´n a los Sistemas Operativos
            o




14                                         Sistemas Operativos - 0.5.0
2 Gesti´n de procesos
       o
2.1.     Procesos y tareas
Proceso una definici´n tradicional de proceso es la de instancia de un programa en
                     o
     ejecuci´n. La ejecuci´n de tal programa es indicada al SO mediante una acci´n u
            o             o                                                     o
     orden especializada.
El SO responde en ese punto creando un nuevo proceso. En general, esta actividad
consiste en la creaci´n e iniciliazaci´n de estructuras de datos en el SO para monitorizar
                      o               o
y controlar el progreso de proceso en cuesti´n. Una vez creado, el proceso pasar´ a estar
                                              o                                    a
activo y competir´ por la utilizaci´n de recursos del sistema como el procesador y los
                    a                 o
dispositivos I/O.
   Un proceso evoluciona c´ ıclicamente entre per´ıodos de ejecuci´n activa y de espera por
                                                                  o
la terminaci´n de actividades de I/O. Cuando un proceso queda inactivo por especificar
             o
una operaci´n de I/O y quedar a la espera de que ´sta se complete, el SO puede planificar
            o                                       e
la ejecuci´n de otro proceso.
          o
   Desde este punto de vista, un proceso es una entidad individualmente planificable,
que puede ser asignada al procesador y ejecutada por ´ste. El SO controla, pues, din´-
                                                          e                              a
micamente la evoluci´n de los procesos registrando la informaci´n correspondiente a sus
                        o                                         o
cambios cuando ´stos se produzcan. Esta informaci´n es utilizada por el SO para sus
                   e                                   o
labores de planificaci´n y gesti´n sobre el conjunto de procesos que en un determinado
                        o         o
momento pueden coexistir en el sistema inform´tico.
                                                  a
   De esta forma adem´s de la plantilla est´tica constituida por el programa ejecutable
                          a                   a
en que se basa, un proceso posee ciertos atributos que ayudan al SO en su gesti´n.      o
Los atributos de un proceso incluyen su estado actual, unidad de planificaci´n, derechos
                                                                               o
de acceso, nivel de prioridad entre otros datos. Desde el punto de vista del usuario, un
proceso no es m´s que la ejecuci´n de un conjunto de instrucciones que llevan a cabo una
                 a                 o
determinada tarea, mientras que para el SO es una entidad que atraviesa din´micamente
                                                                               a
un conjunto de estados y que solicita los recursos del sistema que le son necesarios. De
esta forma, el acceso a tales recursos debe ser planificado de forma que se consiga un
rendimiento en la utilizaci´n de los mismos lo m´s ´ptimo posible.
                            o                       a o

2.1.1.   Divisi´n impl´
               o      ıcita y expl´
                                  ıcita de tareas
  Dependiendo del SO y del entorno objetivo de ejecuci´n de programas, la divisi´n
                                                           o                           o
de un trabajo en tareas que ser´n ejecutadas como procesos independientes as´ como la
                                 a                                              ı
asignaci´n inicial de los atributos de esos procesos pueden ser efectuadas o bien por el
        o
SO o bien por el desarrollador de la aplicaci´n. En otras palabras, lo que constituir´ un
                                             o                                       a
proceso independiente puede provenir de:



                                                                                        15
2 Gesti´n de procesos
       o


 1. Divisi´n impl´
          o      ıcita de tareas definida por el sistema.

 2. Divisi´n expl´
          o      ıcita de tareas definida por el desarrollador.

En general, la divisi´n impl´
                       o        ıcita de tareas se aplica en sistemas operativos multitarea
para multiplexar la ejecuci´n de una serie de programas y explotar los beneficios de
                               o
la concurrencia entre una serie de aplicaciones. La divisi´n expl´
                                                              o       ıcita en tareas permite
mejoras adicionales en el rendimiento al explotar la concurrencia inherente o propia de
una determinada aplicaci´n o programa. La divisi´n impl´
                            o                         o      ıcita en tareas significa que los
procesos son definidos por el sistema, esta divisi´n aparece com´nmente en sistemas de
                                                    o                u
multiprogramaci´n de prop´sito general tales como los sistemas de tiempo compartido.
                  o           o
En este enfoque cada programa remitido para su ejecuci´n es tratado por el SO como
                                                              o
un proceso independiente.
   El SO asignar´ valores iniciales a lo atributos del proceso tales como la prioridad de
                  a
planificaci´n y los derechos de acceso en el momento de la creaci´n del proceso bas´ndose
           o                                                        o                  a
en el perfil del usuario y en valores predeterminados del sistema.
   La divisi´n expl´
            o       ıcita significa que los desarrolladores definen expl´  ıcitamente cada pro-
ceso y alguno de sus atributos, t´     ıpicamente una unica aplicaci´n queda dividida en
                                                        ´              o
varios procesos relacionados con objeto de mejorar su rendimiento. La divisi´n expl´
                                                                                   o     ıcita
se utiliza en situaciones donde se desea elevar la eficiencia o controlar expl´  ıcitamente las
actividades del sistema.
   Entre las razones m´s comunes para aplicar la divisi´n expl´
                         a                                 o      ıcita de tareas se incluyen

 1. Ganancia de velocidad: algunas de las tareas independientes en que quede dividida
    la aplicaci´n podr´n ejecutarse de forma concurrente con la consiguiente mejora
               o      a
    en el tiempo total de ejecuci´n de la aplicaci´n.
                                 o                o

 2. Mejora en el rendimiento de la utilizaci´n de dispositivos de I/O con latencia:
                                               o
    dedicando tareas expl´ıcitas a la realizaci´n de operaciones I/O, ´stas podr´n ser
                                               o                      e         a
    planificadas por el SO de forma concurrente con tareas de computaci´n intensiva
                                                                           o
    con la consiguiente ganancia en el rendimiento.

 3. Multiprocesamiento: los procesos independientes que constituyen una aplicaci´n
                                                                                o
    pueden ser perfectamente portados para su ejecuci´n en un entorno multiprocesa-
                                                     o
    dor con lo que se conseguir´ paralelismo real.
                               ıa

 4. Computaci´n distribuida: de igual forma, cada tarea independiente puede ser asig-
              o
    nada a un procesador que forme parte de un sistema distribuido, siendo necesaria
    una sincronizaci´n con el resto de procesadores que se ocupan de sus respectivas
                    o
    tareas.

2.1.2.   Tipos de procesos y relaci´n entre procesos concurrentes
                                   o
  En principio, podemos realizar una clasificaci´n muy general de los procesos entre
                                               o
procesos de usuario y procesos de sistema. Un proceso de usuario es aquel creado por



16                                                              Sistemas Operativos - 0.5.0
2.1 Procesos y tareas


el SO como respuesta a una de ejecuci´n del usuario o de una aplicaci´n que ejecuta a
                                            o                               o
instancias de ´ste.
              e
   Un proceso de sistema es un proceso que forma parte del propio SO y que desempe˜a          n
alguna de sus labores caracter´  ısticas, como por ejemplo, la elecci´n del siguiente proceso
                                                                      o
a ejecutar o bien la prestaci´n de un servicio determinado como el acceso a un recurso de
                             o
I/O del sistema. Cualquiera que sea la naturaleza de los procesos, ´stos pueden mantener
                                                                       e
fundamentalmente dos tipos de relaciones: Competici´n y/o Colaboraci´n.
                                                           o                 o
   En virtud de la compartici´n de recursos de un solo sistema, todos los procesos concu-
                               o
rrentes compiten unos con otros por la asignaci´n de los recursos del sistema necesarios
                                                     o
para sus operaciones respectivas. Adem´s, una colecci´n de procesos relacionados que
                                              a              o
representen colectivamente una sola aplicaci´n l´gica, suelen cooperar entre s´ La coope-
                                                  o o                              ı.
raci´n es habitual entre los procesos creados como resultado de una divisi´n expl´
    o                                                                          o        ıcita de
tareas. Los procesos cooperativos intercambian datos y se˜ales de sincronizaci´n necesa-
                                                                n                     o
rios para estructurar su progreso colectivo. Tanto la competici´n como la colaboraci´n
                                                                     o                        o
de procesos requiere una cuidada asignaci´n y protecci´n de los recursos en t´rminos
                                                 o             o                        e
de aislamiento de los diferentes espacios de direcciones. La cooperaci´n depende de la
                                                                           o
existencia de mecanismos para la utilizaci´n controlada de los datos compartidos y el
                                                o
intercambio de se˜ales de sincronizaci´n.
                   n                       o
   Los procesos cooperativos comparten t´     ıpicamente algunos recursos y atributos adem´s  a
de interactuar unos con otros. Por esta raz´n, con frecuencia se agrupan en lo que se
                                                   o
denomina una familia de procesos. Aunque dentro de una familia son posibles relaciones
complejas entre sus procesos miembro, la relaci´n m´s com´nmente soportada por los
                                                      o   a        u
sistemas operativos es la relaci´n padre-hijo. Esta relaci´n se establece cuando el SO
                                   o                             o
crea un nuevo proceso a instancias de otro ya existente. Los procesos hijos heredan
generalmente los atributos de sus procesos padres en el momento de su creaci´n y tambi´n
                                                                                 o            e
pueden compartir recursos con sus procesos hermanos.


2.1.3.    El sistema operativo y los procesos
   Todos los SSOO de multiprogramaci´n est´n construidos en torno al concepto de
                                         o     a
proceso. Los requisitos principales que debe cumplir un SO para con los procesos son los
siguientes:


 1. El SO debe intercalar la ejecuci´n de procesos para optimizar la utilizaci´n del
                                     o                                        o
    procesador ofreciendo a la vez un tiempo de respuesta razonable.

 2. El SO debe asignar los recursos del sistema a los procesos en conformidad con una
    pol´
       ıtica espec´
                  ıfica que evite situaciones de interbloqueo.

 3. El SO podr´ tener que dar soporte a la comunicaci´n entre procesos y ofrecer
                ıa                                       o
    mecanismos para su creaci´n, labores que pueden ser de ayuda en la estructuraci´n
                             o                                                     o
    de aplicaciones.



http://alqua.org/libredoc/SSOO                                                               17
2 Gesti´n de procesos
       o


2.2.    Creaci´n y terminaci´n de procesos
              o             o
   Cuando se a˜ade un proceso a los que ya est´ admisnitrando el SO, hay que construir
               n                                a
las estructuras de datos que se utilizan para gestionar y controlar el proceso y asignar
el espacio de direcciones que va a utilizar dicho proceso. Estas acciones constituyen la
creaci´n de un nuevo proceso.
      o
   Son cuatro los sucesos comunes que llevan a la creaci´n de un proceso.
                                                        o

 1. Nueva tarea en un sistema de proceso por lotes.

 2. Nueva conexi´n interactiva.
                o

 3. Nuevo proceso creado por el SO para dar un servicio.

 4. Un proceso generado por otro ya existente.

Por otro lado, en cualquier sistema inform´tico debe existir alguna forma de que un
                                            a
proceso indique su terminaci´n. Un trabajo por lotes debe incluir una instrucci´n de
                             o                                                     o
detenci´n halt o una llamada expl´
       o                          ıcita a un servicio del sistema operativo para indicar
su terminaci´n, mientras que en una aplicaci´n interactiva, ser´ la acci´n del usuario la
            o                                o                  a       o
que indique cu´ndo termine el proceso.
              a
  Todas estas acciones provocan al final una petici´n de servicio al SO para terminar el
                                                   o
proceso demandante. Adem´s, una serie de errores pueden llevarnos a la terminaci´n de
                           a                                                       o
un proceso. A continuaci´n se enumeran algunas de las condiciones m´s habituales de
                         o                                              a
terminaci´n de procesos:
         o

 1. Terminaci´n normal: Un proceso termina de ejecutar su conjunto de instrucciones
               o
    y finaliza.

 2. Tiempo l´ımite excedido: El proceso requiere m´s tiempo para completar su ejecu-
                                                  a
    ci´n del que el sistema establece como m´ximo.
      o                                      a

 3. No disponibilidad de memoria: Tiene lugar cuando un proceso necesita m´s me-
                                                                          a
    moria de la que el sistema puede proporcionar.

 4. Violaci´n de l´
           o      ımites: Ocurre cuando un proceso trata de acceder a una posici´n de
                                                                                o
    memoria a la que no puede hacerlo.

 5. Error de protecci´n: Se produce si un proceso intenta utilizar un recurso o un
                      o
    archivo para el que no tiene permiso o trata de utilizarlo de forma incorrecta.

 6. Error aritm´tico: Aparece si el proceso intenta hacer un c´lculo prohibido como
                e                                             a
    la divisi´n por cero o trata de almacenar un n´mero mayor del que el hardware
             o                                     u
    acepta.

 7. Superaci´n del tiempo m´ximo de espera por un recurso: En este caso, el proceso
            o                 a
    se encuentra a la espera de obtener un recurso o de que tenga lugar un determinado
    evento durante un tiempo que alcanza el l´ ımite establecido.



18                                                           Sistemas Operativos - 0.5.0
Ssoo 0 5-0 (1)
Ssoo 0 5-0 (1)
Ssoo 0 5-0 (1)
Ssoo 0 5-0 (1)
Ssoo 0 5-0 (1)
Ssoo 0 5-0 (1)
Ssoo 0 5-0 (1)
Ssoo 0 5-0 (1)
Ssoo 0 5-0 (1)
Ssoo 0 5-0 (1)
Ssoo 0 5-0 (1)
Ssoo 0 5-0 (1)
Ssoo 0 5-0 (1)
Ssoo 0 5-0 (1)
Ssoo 0 5-0 (1)
Ssoo 0 5-0 (1)
Ssoo 0 5-0 (1)
Ssoo 0 5-0 (1)
Ssoo 0 5-0 (1)
Ssoo 0 5-0 (1)
Ssoo 0 5-0 (1)
Ssoo 0 5-0 (1)
Ssoo 0 5-0 (1)
Ssoo 0 5-0 (1)
Ssoo 0 5-0 (1)
Ssoo 0 5-0 (1)
Ssoo 0 5-0 (1)
Ssoo 0 5-0 (1)
Ssoo 0 5-0 (1)
Ssoo 0 5-0 (1)
Ssoo 0 5-0 (1)
Ssoo 0 5-0 (1)
Ssoo 0 5-0 (1)
Ssoo 0 5-0 (1)
Ssoo 0 5-0 (1)
Ssoo 0 5-0 (1)
Ssoo 0 5-0 (1)
Ssoo 0 5-0 (1)
Ssoo 0 5-0 (1)
Ssoo 0 5-0 (1)
Ssoo 0 5-0 (1)
Ssoo 0 5-0 (1)
Ssoo 0 5-0 (1)
Ssoo 0 5-0 (1)
Ssoo 0 5-0 (1)
Ssoo 0 5-0 (1)
Ssoo 0 5-0 (1)
Ssoo 0 5-0 (1)
Ssoo 0 5-0 (1)
Ssoo 0 5-0 (1)
Ssoo 0 5-0 (1)
Ssoo 0 5-0 (1)
Ssoo 0 5-0 (1)
Ssoo 0 5-0 (1)
Ssoo 0 5-0 (1)
Ssoo 0 5-0 (1)
Ssoo 0 5-0 (1)
Ssoo 0 5-0 (1)
Ssoo 0 5-0 (1)
Ssoo 0 5-0 (1)
Ssoo 0 5-0 (1)
Ssoo 0 5-0 (1)
Ssoo 0 5-0 (1)
Ssoo 0 5-0 (1)
Ssoo 0 5-0 (1)
Ssoo 0 5-0 (1)
Ssoo 0 5-0 (1)
Ssoo 0 5-0 (1)
Ssoo 0 5-0 (1)
Ssoo 0 5-0 (1)
Ssoo 0 5-0 (1)
Ssoo 0 5-0 (1)
Ssoo 0 5-0 (1)
Ssoo 0 5-0 (1)
Ssoo 0 5-0 (1)
Ssoo 0 5-0 (1)
Ssoo 0 5-0 (1)
Ssoo 0 5-0 (1)
Ssoo 0 5-0 (1)
Ssoo 0 5-0 (1)
Ssoo 0 5-0 (1)
Ssoo 0 5-0 (1)
Ssoo 0 5-0 (1)
Ssoo 0 5-0 (1)
Ssoo 0 5-0 (1)
Ssoo 0 5-0 (1)
Ssoo 0 5-0 (1)
Ssoo 0 5-0 (1)
Ssoo 0 5-0 (1)
Ssoo 0 5-0 (1)
Ssoo 0 5-0 (1)

Weitere ähnliche Inhalte

Ähnlich wie Ssoo 0 5-0 (1)

Faith & Hope Counselling Services,
Faith & Hope Counselling Services,Faith & Hope Counselling Services,
Faith & Hope Counselling Services,Sreevaru Surender
 
08 ver pacis conductus
08 ver pacis conductus08 ver pacis conductus
08 ver pacis conductusalexner
 
Infor ION BI 10.4 New Functionality
Infor ION BI 10.4 New FunctionalityInfor ION BI 10.4 New Functionality
Infor ION BI 10.4 New Functionalityadamrakich
 
Advanced Theft Protection (ATP)
Advanced Theft Protection (ATP)Advanced Theft Protection (ATP)
Advanced Theft Protection (ATP)Ton Schuiten
 
دليل المعلم العلوم - السادس الاساسي
دليل المعلم  العلوم - السادس الاساسيدليل المعلم  العلوم - السادس الاساسي
دليل المعلم العلوم - السادس الاساسيReyad Ibrahim - bard college
 
"Desarrollo económico en el Estado Plurinacional de Bolivia"
"Desarrollo económico en el Estado Plurinacional de Bolivia""Desarrollo económico en el Estado Plurinacional de Bolivia"
"Desarrollo económico en el Estado Plurinacional de Bolivia"Gobernabilidad
 
Lista de precios de automatización 01032012 rev.0
Lista de precios de automatización 01032012 rev.0Lista de precios de automatización 01032012 rev.0
Lista de precios de automatización 01032012 rev.0Daniel García
 
Encontrando Solucion Artemio
Encontrando Solucion ArtemioEncontrando Solucion Artemio
Encontrando Solucion Artemioartemio929
 

Ähnlich wie Ssoo 0 5-0 (1) (10)

Faith & Hope Counselling Services,
Faith & Hope Counselling Services,Faith & Hope Counselling Services,
Faith & Hope Counselling Services,
 
08 ver pacis conductus
08 ver pacis conductus08 ver pacis conductus
08 ver pacis conductus
 
Nature Inc
Nature IncNature Inc
Nature Inc
 
Infor ION BI 10.4 New Functionality
Infor ION BI 10.4 New FunctionalityInfor ION BI 10.4 New Functionality
Infor ION BI 10.4 New Functionality
 
Advanced Theft Protection (ATP)
Advanced Theft Protection (ATP)Advanced Theft Protection (ATP)
Advanced Theft Protection (ATP)
 
دليل المعلم العلوم - السادس الاساسي
دليل المعلم  العلوم - السادس الاساسيدليل المعلم  العلوم - السادس الاساسي
دليل المعلم العلوم - السادس الاساسي
 
"Desarrollo económico en el Estado Plurinacional de Bolivia"
"Desarrollo económico en el Estado Plurinacional de Bolivia""Desarrollo económico en el Estado Plurinacional de Bolivia"
"Desarrollo económico en el Estado Plurinacional de Bolivia"
 
Obladi Oblada
Obladi ObladaObladi Oblada
Obladi Oblada
 
Lista de precios de automatización 01032012 rev.0
Lista de precios de automatización 01032012 rev.0Lista de precios de automatización 01032012 rev.0
Lista de precios de automatización 01032012 rev.0
 
Encontrando Solucion Artemio
Encontrando Solucion ArtemioEncontrando Solucion Artemio
Encontrando Solucion Artemio
 

Ssoo 0 5-0 (1)

  • 1. libro abierto / serie apuntes Pablo Ruiz M´zquiz u Sistemas Operativos ¬¬¬¬0.5.0 Programa 1 Programa 2 ¦ ¦ ¦ ¨ ¨ ¨ § § § © © © ¦ ¦ ¦ ¨ ¨ ¨ § § § © © © ¦ ¦ ¦ ¨ ¨ ¨ § § § © © © P1 inactivo P1 inactivo P1 inactivo P2 inactivo P2 inactivo P2 inactivo (a) Ejecución secuencial Tiempo Programa 1 ! ! ! # # # ! ! ! # # # ! ! ! # # # Programa 2       ¢ ¢ ¢ ¤ ¤ ¤ ¡ ¡ ¡ £ £ £ ¥ ¥ ¥       ¢ ¢ ¢ ¤ ¤ ¤ ¡ ¡ ¡ £ £ £ ¥ ¥ ¥       ¢ ¢ ¢ ¤ ¤ ¤ ¡ ¡ ¡ £ £ £ ¥ ¥ ¥ P1 P2 P1 P2 P1 P2 Tiempo (b) Ejecución multiprogramada Un libro libre de Alqua
  • 2.
  • 3. 004.451 SSOO ALQ Sistemas Operativos † lomo para ediciones impresas
  • 5. http://alqua.org/libredoc/SSOO Pablo Ruiz M´zquiz u pablo@alqua.org http://alqua.org/people/pablo Sistemas Operativos versi´n 0.5.0 o 15 de abril de 2004 alqua,madeincommunity
  • 6. c copyleft Copyright (c) 2004 Pablo Ruiz M´zquiz. u This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike License. To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-sa/1.0/ or send a letter to Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA. Copyright (c) 2004 Pablo Ruiz M´zquiz. u Este trabajo cae bajo las provisiones de la licencia Atribuci´n-No Comercial-Comparte Igual de Creative o Commons. Para ver una copia de esta licencia visite http://creativecommons.org/licenses/by-nc-sa/1.0/ o escriba una carta a Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA. Serie apuntes ´ Area Sistemas operativos CDU 004.451 Editores Pablo Ruiz M´zquiz u pablo@alqua.org Notas de producci´n o ´ Plantilla latex-book-es-b.tex, v. 0.1 (C) Alvaro Tejero Cantero. compuesto con software libre
  • 7. ´ Indice general Portada I Copyleft VI ´ Indice general VII 1. Introducci´n a los Sistemas Operativos o 1 1.1. Definici´n de Sistema Operativo . . . . . . . . . . . . . . . . . . . . . . o . 1 1.2. Relaci´n con la m´quina subyacente . . . . . . . . . . . . . . . . . . . . o a . 2 1.2.1. Componentes b´sicos de la arquitectura Von Neuman . . . . . . a . 2 1.2.2. Registros del procesador . . . . . . . . . . . . . . . . . . . . . . . . 3 1.2.3. Ejecuci´n de instrucciones . . . . . . . . . . . . . . . . . . . . . . o . 4 1.2.4. Interrupciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 1.3. Funciones y objetivos de los Sistemas Operativos . . . . . . . . . . . . . . 7 1.3.1. El Sistema Operativo como Interfaz Usuario/Computadora . . . . 7 1.3.2. El Sistema OPerativo como administrador de recursos . . . . . . . 9 1.3.3. Facilidad de evoluci´n del Sistema Operativo . . . . . . . . . . . o . 9 1.4. Evoluci´n hist´rica de los Sistemas Operativos . . . . . . . . . . . . . . o o . 10 1.4.1. Proceso en serie. Primera generaci´n (1945-1955) . . . . . . . . . o . 10 1.4.2. Sistemas sencillos de proceso por lotes. Segunda generaci´n (1955- o 1965) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 1.4.3. Multiprogramaci´n. Tercera Generaci´n (1965-1980) . . . . . . . o o . 11 1.4.4. Computadoras personales. Cuarta Generaci´n (1980-1990) . . . . o . 13 2. Gesti´n de procesos o 15 2.1. Procesos y tareas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 2.1.1. Divisi´n impl´ o ıcita y expl´ ıcita de tareas . . . . . . . . . . . . . . . . 15 2.1.2. Tipos de procesos y relaci´n entre procesos concurrentes o . . . . . . 16 2.1.3. El sistema operativo y los procesos . . . . . . . . . . . . . . . . . . 17 2.2. Creaci´n y terminaci´n de procesos . . . . . . . . . . . . . . . . o o . . . . . . 18 2.3. Estados de un proceso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 2.3.1. Modelo de dos estados . . . . . . . . . . . . . . . . . . . . . . . . . 19 2.3.2. Modelo de 5 estados . . . . . . . . . . . . . . . . . . . . . . . . . . 21 2.3.3. Procesos suspendidos . . . . . . . . . . . . . . . . . . . . . . . . . . 23 2.4. Estructuras de control del sistema operativo . . . . . . . . . . . . . . . . . 27 vii
  • 8. ´ INDICE GENERAL 2.4.1. Tablas de memoria, de E/S, de archivos y de procesos . . . . . . . 27 2.4.2. Bloque de control de procesos (BCP) . . . . . . . . . . . . . . . . . 28 2.4.3. Estados del sistema y listas de procesos . . . . . . . . . . . . . . . 30 2.4.4. Conmutaci´n de procesos . . . . . . . . . . . . . . . . . . o . . . . . 31 2.4.5. Servicios del sistema operativo para la gesti´n de procesos o . . . . . 32 3. Planificaci´n de procesos o 35 3.1. Concepto y criterios de planificaci´n . . . . . . . . . . . . . . . . . . . . o . 35 3.1.1. Utilizaci´n del procesador: . . . . . . . . . . . . . . . . . . . . . o . 35 3.1.2. Productividad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 3.1.3. Tiempo de retorno . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 3.1.4. Tiempo de espera . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 3.1.5. Tiempo de respuesta . . . . . . . . . . . . . . . . . . . . . . . . . . 36 3.2. Tipos de planificadores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 3.2.1. Planificador a largo plazo (PLP) . . . . . . . . . . . . . . . . . . . 36 3.2.2. Planificador a corto plazo (PCP) . . . . . . . . . . . . . . . . . . . 37 3.2.3. Planificador a medio plazo (PMP) . . . . . . . . . . . . . . . . . . 38 3.3. Algoritmos de planificaci´n . . . . . . . . . . . . . . . . . . . . . . . . . o . 38 3.3.1. Algoritmo First Come First Serve (FCFS) . . . . . . . . . . . . . . 39 3.3.2. Algoritmo por reparto circular de tiempo (RR, Round-Robin) . . . 39 3.3.3. Planificaci´n con expropiaci´n basada en prioridades (ED, Event- o o Driven) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 3.3.4. Planificaci´n MLQ (Multiple level queues) . . . . . . . . . . . . . o . 43 4. Programaci´n Concurrente o 45 4.1. Multitarea, multiprogramaci´n y multiproceso . . . . . . . . . . . . . . . o . 45 4.2. Principios de concurrencia . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 4.3. Comunicaci´n y sincronizaci´n de procesos . . . . . . . . . . . . . . . . o o . 46 4.3.1. Posibilidades de interacci´n de procesos . . . . . . . . . . . . . . o . 46 4.3.2. Necesidad de sincronizaci´n de los procesos: regi´n cr´ o o ıtica y exclu- si´n mutua . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o . 47 4.4. Soluciones software para la exclusi´n mutua . . . . . . . . . . . . . . . . o . 49 4.4.1. Algoritmo de Dekker . . . . . . . . . . . . . . . . . . . . . . . . . . 49 4.4.2. Algoritmo de Peterson . . . . . . . . . . . . . . . . . . . . . . . . . 50 4.4.3. Sem´foros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . a . 56 4.4.4. Monitores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 4.4.5. Paso de mensajes . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 4.4.6. Soluciones hardware para la exclusi´n mutua . . . . . . . . . . . o . 63 5. Interbloqueos 73 5.1. Principios de interbloqueo . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 5.1.1. Recursos reutilizables . . . . . . . . . . . . . . . . . . . . . . . . . 73 5.1.2. Recursos consumibles . . . . . . . . . . . . . . . . . . . . . . . . . 73 5.1.3. Condiciones de interbloqueo . . . . . . . . . . . . . . . . . . . . . . 74 viii Sistemas Operativos - 0.5.0
  • 9. ´ INDICE GENERAL 5.2. Prevenci´n de interbloqueos . . . . . . . . . . . . . . o . . . . . . . . . . . . 74 5.3. Detecci´n de interbloqueos . . . . . . . . . . . . . . . o . . . . . . . . . . . . 75 5.4. Predicci´n de interbloqueo. Algoritmo del banquero o . . . . . . . . . . . . 76 5.4.1. Negativa de iniciaci´n de procesos . . . . . . o . . . . . . . . . . . . 77 5.4.2. Negativa de asignaci´n de recursos . . . . . . o . . . . . . . . . . . . 78 6. Gesti´n de memoria o 81 6.1. Reubicaci´n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o . 81 6.2. Asignaci´n de memoria con particiones fijas . . . . . . . . . . . . . . . . o . 82 6.3. Asignaci´n de memoria con particiones din´micas . . . . . . . . . . . . . o a . 84 6.4. Asignaci´n de memoria con paginaci´n simple . . . . . . . . . . . . . . . o o . 84 6.5. Asignaci´n de memoria con segmentaci´n simple . . . . . . . . . . . . . o o . 87 6.6. Memoria virtual . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88 6.6.1. Estructuras Hardware y de control . . . . . . . . . . . . . . . . . . 88 6.6.2. Hiperpaginaci´n y cercan´ de referencias . . . . . . . . . . . . . o ıa . 89 6.6.3. Memoria virtual con paginaci´n y buffer de traducci´n adelantada o o (TLB) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90 6.6.4. Software del SO para la gesti´n de memoria virtual . . . . . . . . o . 90 ´ Indice alfab´tico e 95 Historia 97 Creative Commons Deed 99 Manifiesto de Alqua 101 El proyecto libros abiertos de Alqua 105 Otros documentos libres 109 http://alqua.org/libredoc/SSOO ix
  • 10. ´ INDICE GENERAL x Sistemas Operativos - 0.5.0
  • 11. 1 Introducci´n a los Sistemas Operativos o 1.1. Definici´n de Sistema Operativo o Un sistema operativo puede ser contemplado como una colecci´n organizada de exten- o siones software del hardware, consistentes en rutinas de control que hacen funcionar al computador y proporcionan un entorno para la ejecuci´n de programas. Adem´s, estos o a programas utilizan las facilidades proporcionadas por el sistema operativo para obtener acceso a recursos del sistema inform´tico como el procesador, archivos y dispositivos a de entrada/salida (E/S). De esta forma, el SO constituye la base sobre la cual pueden escribirse los programas de aplicaci´n, los cuales invocar´n sus servicios por medio de o a llamadas al sistema. Por otro lado, los usuarios pueden interactuar directamente con el SO a trav´s de ´rdenes concretas. En cualquier caso, el SO act´a como interfaz entre e o u los usuarios/aplicaciones y el hardware de un sistema inform´tico. a El rango y la extensi´n de los servicios proporcionados por un SO dependen de varios o factores. As´ las funciones visibles al usuario est´n en gran medida determinadas por la ı, a necesidades y caracter´ısticas del entorno objetivo que el SO est´ destinado a soportar. Por a ejemplo, un SO destinado al desarrollo de programas en un entorno interactivo puede tener un conjunto bastante diferente de llamadas y ´rdenes que un sistema operativo o dise˜ado para soporte en tiempo de ejecuci´n a una aplicaci´n de tiempo real dedicada, n o o tal como el control del motor de un coche, el control del reactor de una central nuclear o el sistema de actualizaciones derivado de las operaciones de un cajero autom´tico de a una entidad bancaria. Internamente, un SO act´a como gestor de los recursos del sistema inform´tico tales u a como el procesador, la memoria, los archivos y los dispositivos de E/S. En esa funci´n, o el SO mantiene actualizada la informaci´n relativa al estado de sistemas que soportan o la ejecuci´n concurrente de programas, el SO resuelve las peticiones conflictivas de re- o cursos de manera que preserve la integridad del sistema y al hacerlo intenta optimizar el rendimiento final. En general, el SO presenta al usuario el equivalente de una m´quina virtual que sea a m´s f´cil de utilizar que la m´quina subyacente y uno de sus objetivos primarios es incre- a a a mentar la productividad de los recursos que ofrece al sistema mediante una planificaci´no lo m´s ´ptima posible de ellos. a o 1
  • 12. 1 Introducci´n a los Sistemas Operativos o 1.2. Relaci´n con la m´quina subyacente o a 1.2.1. Componentes b´sicos de la arquitectura Von Neuman a A un nivel muy alto, un sistema inform´tico que implemente la arquitectura Von a Neuman cl´sica consta de 3 componentes b´sicos: memoria principal, unidad central a a de proceso y dispositivos de entrada/salida. La unidad central de proceso, a su ves, est´ constituida por la unidad aritm´tico-l´gica, la unidad de control y un conjunto a e o de registros. Los componentes b´sicos mencionados se encuentran interconectados para a llevar a cabo la funci´n principal del computador, que consiste en la ejecuci´n de las o o sentencias que forman los procesos. As´ pues, se tienen cuatro elementos estructurales ı principales. Memoria principal: Com´nmente conocida como memoria RAM. En ella se encon- u trar´ el programa en c´digo m´quina a ejecutar, los datos de entrada y los resulta- a o a dos. La memoria est´ formada por un conjunto de celdas id´nticas que pueden ser a e accedidas de forma aleatoria mediante los distintos registros de direccionamiento. Esta memoria es normalmente vol´til y tambi´n se conoce como memoria real. a e La unidad aritm´tico-l´gica permite efectuar un conjunto de opoeraciones aritm´ti- e o e cas y l´gicas de los datos. Estos datos, que pueden proceder de memoria principal o o ser el resultado de operaciones previas, se almacenar´n en los registros de entrada a de que esta unidad dispone. El resultado de la operaci´n, as´ como la informa- o ı ci´n relativa al estado de terminaci´n de la misma, quedar´n almacenados en los o o a correspondientes registros. La unidad de control es la que se encarga de hacer funcionar al conjunto, para lo cual lleva a cabo las siguientes funciones: • Lee de memoria las instrucciones m´quina que forman el programa. a • Interpreta cada instrucci´n le´ o ıda. • Lee los datos de memoria referenciados por la instrucci´n. o • Ejecuta la instrucci´n. o • Almacena el resultado de cada instrucci´n. o Finalmente, la unidad de Entrada/Salida se encarga de realizar la transferencia de informaci´n entre la memoria (o los registros) y los perif´ricos. La E/S se puede o e efectuar bajo el gobierno de la unidad de control (E/S programada) o de forma in- dependiente (DMA). El transporte de datos se realiza, pues, entre el computador y su entorno exterior. Dicho entorno consta de una gran variedad de dispositi- vos externos que incluye a los dispositivos de memoria secundaria, los equipos de comunicaci´n y los terminales. o Adem´s de los descritos anteriormente, los sistemas inform´ticos disponene de un con- a a junto de elementos de interconexi´n (buses de datos). Estos elementos est´n constituidos o a 2 Sistemas Operativos - 0.5.0
  • 13. 1.2 Relaci´n con la m´quina subyacente o a por mecanismos que permiten la comunicaci´n entre los componentes que conforman el o sistema inform´tico, es decir, su funci´n es la de interconectar procesadores, memoria a o principal y m´dulos de E/S. o 1.2.2. Registros del procesador Dentro del procesador hay un conjunto de registros que ofrecen un nivel de memoria que es m´s r´pido y peque˜o que la memoria principal. Los registros del procesador a a n pueden clasificarse de la siguiente forma: Registros visibles de usuario: Un registro visible al usuario es aqu´l que puede ser e referenciado por medio de lenguaje m´quina que ejecuta el procesador, siendo, por a lo general, accesible a todos los programas, tanto de aplicaci´n como de sistema. o Un programador de lenguaje de m´quina o ensamblador puede minimizar las refe- a rencias a memoria principal mediante un uso ´ptimo de estos registros. Los tipos o de registro normalmente disponibles son: registros de datos, registros de direcci´n o y registros de c´digos de condici´n. o o • Los registros de datos pueden ser asignados por el programador a diversas funciones. En muchos casos, son de prop´sito general y pueden ser empleados o por instrucciones que lleven a cabo cualquier tipo de operaci´n sobre un da- o to determinado. Sin embargo, suelen establecerse ciertas restricciones como dedicar algunos registros para operaciones en coma flotante. • Los registros de direcci´n guardan direcciones de memoria principal que pue- o den contener datos, instrucciones o parte de una direcci´n efectiva utilizada o para calcularla. Como ejemplo de registros de direcci´n podemos incluir los o siguientes: ◦ Registro ´ındice: Se utiliza en el direccionamiento indexado que consiste en sumar un ´ ındice a un valor base para obtener la direcci´n efectiva. o ◦ Puntero de segmento: Cuando se utiliza direccionamiento segmentado la memoria se divide en segmentos, que son bloques de palabras de tama˜o n variable. Una referencia a memoria consta de un segmento particular y un desplazamiento dentro del segmento. ◦ Puntero de pila: Si existe un direccionamiento de pila visible para los usuarios, la pila estar´, por lo general, en memoria principal, existiendo a un registro dedicado a se˜alar la cima de la pila, para poder sacar (pop) n e introducir (push) elementos en ella. • Una ultima categor´ de registros que son, al menos, parcialmente visibles ´ ıa para los usuarios, son aqu´llos que contienen c´digos de condici´n (tambi´n e o o e denominados indicadores o flags). Los c´digos de condici´n son bits activados o o por el hardware como resultado de determinadas operaciones. Por ejemplo, una operaci´n aritm´tica puede producir un resultado positivo, negativo, cero, o e con acarreo o con desbordamiento, lo que se reflejar´ en el correspondiente bit a http://alqua.org/libredoc/SSOO 3
  • 14. 1 Introducci´n a los Sistemas Operativos o o flag de control y que puede consultarse posteriormente, por ejemplo, como parte de una operaci´n de salto condicional. Es importante tener en cuenta que o los c´digos de condici´n pueden ser consultados por las aplicaciones de usuario o o pero no modificados por ´stas. Los bits de c´digo de condici´n se sgrupan en e o o uno o m´s registros que forman parte de los determinados registros o palabras a de control que veremos a continuaci´n. o En algunas m´quinas, una llamadaa un procedimiento o subrutina provocar´ que a a los registros visibles de usuario se salven autom´ticamente, para luego restaurarlos a y continuar con la ejecuci´n normal. Este proceso de salvar y restaurar lo lleva a o cabo el procesador como parte de las instrucciones de llamada y retorno. Esto per- mite que cada procedimiento pueda utilizar los registros de forma independiente. En otras m´quinas, sin embargo, es responsabilidad del programador salvar los re- a gistros que considere relevantes antes de efectuar una llamada a un procedimiento. Los registros de control y estado son utilizados por el procesador para el control de las operaciones o por rutinas privilegiadas del sistema operativo para controlar la ejecuci´n de los programas. En la mayor´ de las m´quinas, la mayor parte de estos o ıa a registros no son visibles para los usuarios. Adem´s de los registros MAR, MBR, a IOAR, IOBR, que se utilizan en funciones de direccionamiento e intercambio de datos entre la unidad procesadora y la memoria principal y los dispositivos de E/S, la unidad de control tiene asociados una serie de registros, entre los que cabe destacar el contador de programa (PC, program counter ), que indica la direcci´n o de la siguiente instrucci´n m´quina a ejecutar, el puntero de pila (SP, stack poin- o a ter ), que sirve para manejar la pila del sistema en memoria principal, el registro de instrucci´n (RI) que permite almacenar la instrucci´n m´quina a ejecutar, y el o o a registro de estado (SR) o palabra de estado del programa (PSW, program status word ) que almacena junto con el contador de programa (PC) diversa informaci´n o producida por la ultima instrucci´n del programa ejecutada (bits de estado aritm´- ´ o e tico) e informaci´n sobre la forma en que ha de comportarse la computadora (bits o de nivel de ejecuci´n que determinan el modo en que la computadora ejecuta las o instrucciones, usuario o sistema o supervisor, y bits de control de interrupciones que establecen las instrucciones que se pueden aceptar). 1.2.3. Ejecuci´n de instrucciones o La tarea b´sica que realiza un computador es la ejecuci´n de instrucciones. El punto a o de vista m´s sencillo es considerar que el procesamiento de instrucciones consiste en a una sencuencia sencilla que se repite a alta velocidad (cientos de millones de veces por segundo). Esta secuencia consiste en 3 pasos: lectura de memoria de la instrucci´n m´- o a quina apuntada por el PC, incremento del contador del programa - para que apunte a la siguiente instrucci´n m´quina - y ejecuci´n de la instrucci´n. o a o o Esta secuencia tiene 2 prioridades fundamentales: es lineal, es decir, ejecuta de forma consecutiva las instrucciones que est´n en direcciones consecutivas, y forma un bucle a 4 Sistemas Operativos - 0.5.0
  • 15. 1.2 Relaci´n con la m´quina subyacente o a infinito. Esto significa que la unidad de control de la computadora est´ continua e inin- a terrumpidamente realizando esta secuencia. Podemos decir, por tanto, que lo unico que sabe hacer la computadora es repetir a ´ gran velocidad esta secuencia. Esto quiere decir, que para que realice algo util, se ha de ´ tener cargados en memoria un programa m´quina con sus datos y hemos de conseguir a que el contador de program apunte a la instrucci´n m´quina inicial del programa. o a El esquema de ejecuci´n lineal es muy limitado, por lo que se a˜aden unos mecanismos o n que permiten alterar esta ejecuci´n lineal. En esencia, todos ellos se basan en algo muy o simple; modifican el contenido del programa, con lo que se consigue que se salte o bifurque a otro segmento del programa o a otro programa (que, l´gicamente, tambi´n ha de residir o e en memoria). Los tres mecanismos b´sicos de ruptura de secuencia son los siguientes. a Las instrucciones m´quina de salto o bifurcaci´n, que permiten que el programa a o rompa su secuencia lineal de ejecuci´n pasando a otro fragmento de s´ mismo. o ı Las interrupciones externas o internas, que hacen que la unidad de control modi- fique el valor del contador de programa saltando a otro programa. La instrucci´n de m´quina“TRAP”, que produce un efecto similar a la interrupci´n, o a o haciendo que se salte a otro programa. Si desde el punto de vista de la programaci´n son especialmente interesantes las instruc- o ciones de salto, desde el punto de vista de los SSOO son mucho m´s importantes las a interrupciones y las interrupciones de TRAP. Por tanto, centraremos nuestro inter´s en e resaltar los aspectos fundamentales de estos dos mecanismos. 1.2.4. Interrupciones Casi todos los computadores tienen un mecanismo mediante el cual otros m´dulos o (E/S, memoria) pueden interrumpir la ejecuci´n normal del procesador. Las interrupcio- o nes aparecen, principalmente, como una v´ para mejorar la eficiencia del procesamiento ıa debido a que la mayor´ de los dispositivos externos son mucho m´s lentos que el proce- ıa a sador. Con las interrupciones, el procesador se puede dedicar a la ejecuci´n de otras instruc- o ciones mientras una operaci´n de E/S est´ en proceso. Cuando el dispositivo de E/S o a est´ disponible, es decir, cuando est´ preparado para aceptar m´s datos del procesador, e e a el m´dulo de E/S de dicho dispositivo enviar´ una se˜al de solicitud de interrupci´n al o a n o procesador. El procesador responde suspendiendo la operaci´n del programa en curso y o saltando a un programa que da servicio al dispositivo de E/S en particular, conocido co- mo rutina de tratamiento de interrupciones (Interrupt handler), reanudando la ejecuci´n o original despu´s de haber atendido al dispositivo. e Desde el punto de vista del programa de usuario una interrupci´n es solamente eso: o una interrupci´n de la secuencia normal de ejecuci´n. Cuando el tratamiento de la inte- o o rrupci´n termina, la ejecuci´n contin´a. El programa no tiene que disponer de ning´n o o u u c´digo especial para dar cabida a las interrupciones; el procesador y el sistema operativo o http://alqua.org/libredoc/SSOO 5
  • 16. 1 Introducci´n a los Sistemas Operativos o son los responsables de suspender el pograma de usuario y de reanudarlo despu´s en el e mismo punto. Para dar cabida a las interrupciones, se a˜ade un ciclo de interrupci´n al ciclo de n o instrucci´n. En el ciclo de interrupci´n el procesador comprueba si ha ocurrido alguna o o interrupci´n, lo que se indicar´ con la presencia de alguna se˜al de interrupci´n. Si no hay o a n o interrupciones pendientes, el procesador sigue con el ciclo de lectura y trae la pr´xima o instrucci´n del programa en curso. Si hay una interrupci´n pendiente, el programador o o suspende la ejecuci´n del programa en curso y ejecuta una rutina de tratamiento de o interrupci´n. Esta rutina, generalmente, forma parte del sistema operativo, determina la o naturaleza de la interrupci´n y realiza cuantas acciones sean necesarias. Una interrupci´n o o desencadena una serie de sucesos tanto en el hardware del procesador como en el software. Estos sucesos pueden secuenciarse de la siguiente forma: 1. El dispositivo emite una se˜al de interrupci´n al procesador. n o 2. El procesador finaliza la ejecuci´n de la instrucci´n en curso antes de responder a o o la interrupci´n. o 3. El procesador pregunta por la interrupci´n comprueba que hay una y env´ una o ıa se˜al de reconocimiento al dispositivo que gener´ la interrupci´n, de forma que n o o ´ste suspende su se˜al de interrupci´n. e n o 4. El procesador necesita ahora prepararse para transferor el control a la rutina de interrupci´n. Para empezar, hace falta salvar la informaci´n necesaria para rea- o o nudar la ejecuci´n del programa en curso en el punto de la la interrupci´n. La o o m´ınima informaci´n es la palabra de estado del programa (PSW) y la ubicaci´n o o de la pr´xima instrucci´n a ejecutar. o o 5. El procesador carga ahora el contador de programa con la ubicaci´n de entrada o del programa de tratamiento de interrupci´n. o 6. La rutina de interrupci´n suele comenzar salvando el contenido de los registros del o procesador porque la rutina puede utilizarlos y se perder´ la informaci´n que la ıa o ejecuci´n del proceso interrumpido hibiera dejado en ellos. o 7. La rutina de tratamiento de la interrupci´n procesa la interrupci´n realizando las o o acciones requeridas para atenderla. 8. Tras completar el tratamiento de la interrupci´n, se recuperan de la pila los valores o de los registros que se salvaron y se restauran en los correspondientes registros. 9. El paso final es restaurar los valores del la PSW y del contador de programa tambi´n e a partir de la pila y continuar con la ejecuci´n del programa interrumpido. Estas o acciones se llevan a cabo como resultado de ejecutar la instrucci´n m´quina para o a retorno de interrupci´n, RETI, que incluyen la mayor´ de las computadoras en su o ıa lenguaje m´quina. a 6 Sistemas Operativos - 0.5.0
  • 17. 1.3 Funciones y objetivos de los Sistemas Operativos Las computadoras incluyen varias se˜ales de solicitud de interrupci´n, cada una de las n o cuales tiene una determinada prioridad. En caso de activarse al tiempo varias de es- tas se˜ales, se tratar´ la de mayor prioridad, quedando las dem´s a la espera de ser n a a atendidas. Adem´s la computadora incluye un mencanismo de inhibici´n selectiva que a o permite detener todas o determinadas se˜ales de interrupci´n. Las se˜ales inhibidas no n o n son atendidas hasta que pasen a estar desinhibidas. La informaci´n de inhibici´n de o o las interrupciones suele incluirse en la parte del registro de estado que solamente es modificable en nivel de n´cleo, por lo que su modificaci´n queda restringida al sistema u o operativo. Las interrupciones se pueden generar por diversas causas, que se pueden clasificar de la siguiente forma: Excepciones de programa. Hay determinadas causas que hacen que un programa presente un problema en su ejecuci´n, por lo que deber´ generarse una interrupci´n, o a o de forma que el SO trate dicha causa. Ejemplos de errores de este tipo son el desbordamiento de operaciones matem´ticas, al divisi´n entre cero, el intento de a o acceso a una zona de memoria no permitida, etc. Interrupciones de reloj. Interrupciones de E/S. Los controladores de los dispositivos de E/S necesitan in- terrumpir para indicar que han terminado una operaci´n o un conjunto de ellas. o Excepciones del hardware como la detecci´n de un error de paridad en la memoria. o Instrucciones de TRAP. Estas instrucciones permiten que un programa genere una interrupci´n y se utilizan fundamentalmente para solicitar los servicios del SO. o 1.3. Funciones y objetivos de los Sistemas Operativos Como ya se ha visto, un sistema operativo act´a como interfaz entre la m´quina u a desnuda y los programas de aplicaciones o el propio usuario. por otro lado, el sistema operativo tambi´n se encarga de gestionar los recursos del sistema inform´tico para e a obtener un uso lo m´s ´ptimo posible de ´stos. A continuaci´n, trataremos las funciones a o e o del sistema operativo desde estos dos puntos de vista, as´ como las caracter´ ı ısticas que debe presentar para mantener una capacidad de evoluci´n adecuada. o 1.3.1. El Sistema Operativo como Interfaz Usuario/Computadora Un sistema operativo debe hacer que la interacci´n del usuario o de los programas o de aplicaci´n con el computador resulte sencilla y f´cil y debe construirse de modo que o a permita el desarrollo efectivo, la verificaci´n y la introducci´n de nuevas funciones en el o o sistema y, a la vez, no interferir en los servicios ya proporcionados. El Hardware y el Software que se utilizan para proveer al usuario de aplicaciones puede contemplarse de forma estratificada o jer´rquica. Este usuario final no tiene que preocu- a parse de la arquitectura del computador y contempla el sistema inform´tico en t´rminos a e http://alqua.org/libredoc/SSOO 7
  • 18. 1 Introducci´n a los Sistemas Operativos o de aplicaciones. Estas aplicaciones pueden construirse con un lenguaje de programaci´n o y son desarrolladas por los programadores de aplicaciones. Si se tuviera que desarrollar un programa de aplicaci´n con un conjunto de instruc- o ciones totalmente responsables del control del hardware, dicho programa tendr´ una ıa tarea abrumadora y compleja. Para facilitar esta tarea, se ofrecen una serie de progra- mas de sistema. Algunos de estos programas implementan funciones muy utilizadas que ayudan a la creaci´n de aplicaciones de usuario, la gesti´n de archivos y el control de los o o dispositivos de E/S. El programa de sistema m´s importante es el sistema operativo. a El sistema operativo oculta al programador los detalles del hardware y le proporcio- na una interfaz c´moda para utilizar el sistema y act´a como mediador, ofreciendo al o u programador y a los programas de aplicaci´n un conjunto de servicios y utilidades que o faciliten su tarea. De forma resumida el sistema operativo ofrece servicios en las siguientes ´reas: a Creaci´n de programas: El sistema operativo ofrece una gran variedad de servicios o como los editores y depuradores (debuggers), para ayudar al programador en la creaci´n de programas. Normalmente, estos servicios est´n en forma de programas o a de utilidad que no forman realmente parte del sistema operativo, pero que son accesibles a trav´s de ´l. e e Ejecuci´n de programas: Para ejecutar un programa es necesario realizar un cierto o n´mero de tareas. Las instrucciones y los datos deben cargarse en memoria prin- u cipal, los archivos y los dispositivos de E/S deben inicializarse y deben prepararse otros recursos. El sistema operativo administra todas estas tareas por el usuario. Acceso a los dispositivos de E/S: Cada dispositivo de E/S requiere un conjunto propio y peculiar de instrucciones o se˜ales de control para su funcionamiento. n El sistema operativo, ayudado por los manejadores o drivers de dispositivo tiene en cuenta estos detalles de forma que el programador pueda pensar en forma de lecturas y escrituras simples desde o hacia el dispositivo. Acceso controlado a los archivos: El sistema operativo se ocupa del formato de los archivos y del medio de almacenamiento. En el caso de sistemas de varios usuarios trabajando simult´neamente, es el sistema operativo el que brinda los mecanismos a para controlar que el acceso a los archivos se lleve a cabo de una forma correcta. Acceso al sistema: En el caso de un sistema compartido o p´blico, el sistema u operativo controla el acceso al sistema como un todo y a los recursos espec´ ıficos del sistema. Las funciones de acceso deben brindar proteci´n a los recursos y a los o datos ante usuarios no autorizados y debe resolver conflictos en la propiedad de los recursos. Detecci´n y respuesta a errores: Cuando un sistema inform´tico est´ en funcio- o a a namiento pueden producirse varios errores. El sistema operativo debe dar una respuesta que elimine la condici´n de error con el menor impacto posible sobre las o aplicaciones que est´n en ejecuci´n. a o 8 Sistemas Operativos - 0.5.0
  • 19. 1.3 Funciones y objetivos de los Sistemas Operativos Contabilidad: Un sistema operativo debe recoger estad´ısticas de utilizaci´n de los o diversos recursos y supervisar par´metros de rendimiento tales como el tiempo de a respuesta. 1.3.2. El Sistema OPerativo como administrador de recursos Un SO debe perseguir una utilizaci´n lo m´s ´ptima y equilibrada posible de los o a o recursos que administra. De esta forma se obtendr´ un alto rendimiento del sistema a inform´tico gobernado. a El SO es el responsable de la gesti´n de los recursos de la m´quina y mediante su o a administraci´n tiene el control sobre las funciones b´sicas de la misma. El SO no es nada o a m´s que un programa pero la diferencia clave es su prop´sito. El SO dirige al procesador a o en el empleo de otros recursos del sistema y en el control del tiempo de ejecuci´n de los o programas de usuario. Una parte del SO reside en memoria principal. En esta parte est´ el n´cleo (kernel ) a u que incluye funciones del SO utilizdas con m´s frecuencia aunque, en un momento dado, a puede incluir otras partes en uso. El resto de la memoria, que contiene datos y programas de usuario, es administrada conjuntamente por el SO y por el hardware de control de memoria. El SO decide cu´ndo puede utilizarse un dispositivo de E/S por parte de un a programa en ejecuci´n y controla el acceso y la utilizaci´n de los archivos. El procesador o o es, en s´ mismo, un recurso y es el SO el que debe determinar cu´nto tiempo de procesador ı a debe dedicarse a la ejecuci´n de un programa usuario en particular. En el caso de sistemas o multiprocesador, la decisi´n debe tomarse entre todos los procesadores. o 1.3.3. Facilidad de evoluci´n del Sistema Operativo o Un SO importante evolucionar´ en el tiempo por una serie de razones: a Actualizaciones del hardware y nuevos tipos de hardware: Las mejoras introducidas en los componentes hardware del computador deben tener soporte en el sistema operativo. Un ejemplo es el aprovechamiento del sistema operativo del hardware de paginaci´n que acompa˜a a la memoria de algunos sistemas inform´ticos. o n a Nuevos servicios: Como respuesta a nuevas necesidades, el sistema operativo am- pliar´ su oferta de servicios para a˜adir nuevas medidas y herramientas de control. a n Correcciones: El sistema operativo tiene fallos que se descubrir´n con el curso del a tiempo y que es necesario corregir. La necesidad de hacer cambios en un SO de forma regular introduce ciertos requisitos en el dise˜o. Una afirmaci´n obvia es que el sistema debe tener una construcci´n modular, n o o con interfaces bien definidas entre los m´dulos y debe estar bien documentado. o http://alqua.org/libredoc/SSOO 9
  • 20. 1 Introducci´n a los Sistemas Operativos o 1.4. Evoluci´n hist´rica de los Sistemas Operativos o o Para intentar comprender los requisitos b´sicos de un SO y el significado de las ca- a racter´ ısticas principales de un sistema operativo contempor´neo, resulta util considerar a ´ c´mo han evolucionado los sistemas operativos a los largo de los a˜os. o n 1.4.1. Proceso en serie. Primera generaci´n (1945-1955) o En los primeros computadores, de finales de los 40 hasta mediados de los 50, el progra- ma interactuaba directamente con el hardware: no hab´ sistema operativo. La operaci´n ıa o con estas m´quinas se efectuaba desde una consola dotada con indicadores luminosos y a conmutadores o a trav´s de un teclado hexadecimal. Los programas se arrancan cargan- e do el registro contador de programas con la direcci´n de la primera instrucci´n. Si se o o deten´ el programa por un error, la condici´n de error se indicaba mediante los indica- ıa o dores luminosos. El programador pod´ examinar los registros relevantes y la memoria ıa principal para comprobar el resultado de la ejecuci´n o para determinar la causa del o error. El siguiente paso significativo de la evoluci´n en el uso de sistemas inform´ticos vino o a con la llegada de dispositivos de E/S tales como tarjetas perforadas y cintas de papel y con los traductores de lenguajes. Los programas. codificados ahora en un lenguaje de programaci´n, se traducen a un forato ejecutable mediante un programa como un o compilador o un int´rprete. Otro programa, llamado cargador, automatiza el proceso de e cargar en memoria estos programas en c´digo ejecutable. El usuario coloca un programa o y sus datos de entrada en un dispositivo de entrada y el cargador transfiere la informaci´n o desde el dispositivo a la memoria. Despu´s de transferir el control al programa cargado e por medios manuales o autom´ticos, comienza la ejecuci´n del mismo. El programa en a o ejecuci´n lee sus datos desde el dispositivo de entrada asignado y puede producir ciertos o resultados en un dispositivo de salida tal como una impresora o la pantalla. Estos primeros sistemas presentaban dos problemas principales: Planificaci´n: La mayor´ de las instalaciones empleaban un formulario de reserva o ıa de tiempo de m´quina. Normalmente, un usuario pod´ reservar bloques de tiempo, a ıa m´ltiplos, por ejemplo, de media hora. Si la ejecuci´n del programa terminaba antes u o del plazo asignado, el tiempo restante se desperdiciaba. Tambi´n pod´ suceder que e ıa el programa no terminara dentro del plazo asignado, con lo que el programadir no pod´ saber si el programa hab´ terminado satisfactoriamente o no. ıa ıa Tiempo de preparaci´n: Un programa aun siendo sencillo requer´ un tiempo de o ıa preparaci´n bastante grande ya que en primer lugar se cargaba un compilador o y un programa en lenguaje de alto nivel (programa fuente) en la memoria. A continuaci´n, se salvaba el programa ya compilado (programa objeto) y, por ultimo, o ´ se montaba y cargaba este programa objeto junto con las funciones comunes. Este modo de trabajo pod´ denominarse proceso en serie porque refleja el hecho de los ıa que usuarios ten´ que acceder al computador en serie. ıan 10 Sistemas Operativos - 0.5.0
  • 21. 1.4 Evoluci´n hist´rica de los Sistemas Operativos o o 1.4.2. Sistemas sencillos de proceso por lotes. Segunda generaci´n o (1955-1965) Las primeras m´quinas eran muy caras y, por tanto, era importante maximizar la a utilizaci´n de las mismas. El tiempo desperdiciado en la planificaci´n y la preparaci´n o o o era inaceptable. Para mejorar el uso, se desarroll´ el concepto de sistema operativo por lotes (batch). El o primer sistema operativo por lotes fue desarrollado a mediados de los 50 por la General Motoros para usar en un IBM 701. La idea central que est´ detr´s del esquema sencillo de proceso por lotes es el uso de a a un elemento de software conocido como monitor. Con el uso de esta clase de sistema operativo, los usuarios ya no ten´ acceso directo a la m´quina. En su lugar, el usuario ıan a deb´ entregar los trabajos en tarjetas o en cinta al operador del computador, quien ıa agrupaba secuencialmente los trabajos por lotes y ubicaba los lotes enteros en un dis- positivo de entrada para su empleo por parte del monitor. Cada programa se constru´ ıa de modo tal que volviera al monitor al terminar el procesamiento y, en ese momento, el monitor comenzaba a cargar autom´ticamente el siguiente programa. a Para obtener provecho del potencial de utilizaci´n de recursos, un lote de trabajos o debe ejecutarse autom´ticamente sin intervenci´n humana. Para este fin, deben pro- a o porcionarse algunos medios que instruyan al sistema operativo sobre c´mo debe tratar o cada trabajo individual. Estas intrucciones son suministradas generalmente por medio de ´rdenes del sistema operativo incorporadas al flujo de lotes. Las ´rdenes del sistema o o operativo son sentencias escritas en un Lenguaje de Control de Trabajos (JCL, Job Con- trol Language). Entre las ´rdenes t´ o ıpicas de un JCL se incluyen las marcas de comienzo y finalizaci´n de un trabajo, las ´rdenes para cargar y ejecutar programas y las ´rdenes o o o que anuncian necesidades de recursos tales como el tiempo esperado de ejecuci´n y los o requisitos de memoria. Estas ´rdenes se hallan incoporadas al flujo de los trabajos, junto o a los programas y a los datos del usuario. Una parte residente en memoria del SO por lotes, a veces llamado monitor de lotes, lee, interpreta y ejecuta estas ´rdenes. En respuesta a ellas, los trabajos del lote se ejecutan o de uno en uno. 1.4.3. Multiprogramaci´n. Tercera Generaci´n (1965-1980) o o Incluso con las mejoras anteriores, el proceso por lotes dedica los recursos del sistema inform´tico a una unica tarea a la vez. a ´ En el curso de su ejecucic´n, la mayor´ de los programas oscilan entre fases intensivas o ıa de c´lculo y fases intensivas de operaciones de E/S. Esto queda indicado en la figura 1.1 a donde los periodos de c´lculo intensivo se indican mediante cuadros sombreados y las a operaciones de E/S mediante zonas en blanco. El problema es que los dispositivos de E/S son muy lentos comparados con el procesador. El procesador gasta parte del tiempo ejecutando hasta que encuentra una instrucci´n de E/S. Entonces debe esperar a que o concluya la instrucci´n de E/S antes de continuar. o Esta ineficiencia no es necesaria. Se sabe que hay memoria suficiente para almacenar http://alqua.org/libredoc/SSOO 11
  • 22. 1 Introducci´n a los Sistemas Operativos o Programa 1 Programa 2 ¦ ¦ ¦ ¨ ¨ ¨ § § § © © © ¦ ¦ ¦ ¨ ¨ ¨ § § § © © © ¦ ¦ ¦ ¨ ¨ ¨ § § § © © © P1 inactivo P1 inactivo P1 inactivo P2 inactivo P2 inactivo P2 inactivo (a) Ejecución secuencial Tiempo Programa 1 ! ! ! # # # ! ! ! # # # ! ! ! # # # Programa 2       ¢ ¢ ¢ ¤ ¤ ¤ ¡ ¡ ¡ £ £ £ ¥ ¥ ¥       ¢ ¢ ¢ ¤ ¤ ¤ ¡ ¡ ¡ £ £ £ ¥ ¥ ¥       ¢ ¢ ¢ ¤ ¤ ¤ ¡ ¡ ¡ £ £ £ ¥ ¥ ¥ P1 P2 P1 P2 P1 P2 Tiempo (b) Ejecución multiprogramada Figura 1.1: Ejecuci´n secuencial vs multiprogramaci´n o o en memoria el sistema operativo (monitor residente) y un programa usuario. Suponga- mos que hay espacio suficiente para almacenar el sistema operativo y dos programas de usuario. Ahora, cuando un trabajo necesite esperar por una operaci´n de E/S, el o procesador puede cambiar a otro trabajo que est´ listo para ser ejecutado. Si amplia- e mos la memoria para almacenar varios programas, podremos conmutar entre todos de forma que el procesador permanezca ocupado el mayor tiempo posible, evitando as´ el ı desperdicio de tiempo que suponen las esperas hasta que se completen las operaciones de E/S. Este concepto es conocido como multiprogramaci´n o multitarea y es el punto o central de los sistemas operativos modernos. Como sugiere la figura 1.1 se pueden lograr ganancias significativas de rendimiento intercalando la ejecuci´n de los programas, o, multiprigramando, que es como se le de- o nomina a este modo de operaci´n. Con un solo procesador no es posible la ejecuci´n o o paralela de programas, y como m´ximo, s´lo un programa puede tener el control del a o procesador en un instante determinado. El ejemplo presentado en la figura 1.1 (b) con- sigue un 100 % de utilizaci´n del procesador s´lo con dos programas activos. Aunque o o conveniente para ilustrar la idea b´sica en la multiprogramaci´n, no se deben esperar a o resultados tan espectaculares en programas reales, ya que las distribuciones de las fa- ses de computaci´n y E/S tienden a ser m´s variables. Para aumentar la utilizaci´n de o a o recursos, los sistemas de multiprogramaci´n reales permiten generalmente que m´s de o a dos programas compitan por los recursos del sistema al mismo tiempo. El n´mero de u programas en competencia activa por los recursos de un sistema inform´tico se denomina a grado de multiprogramaci´n. En principio, mayores grados de multiprogramaci´n deben o o dar lugar a una mayor utilizaci´n de recursos. o La multiprogramaci´n ha sido tradicionalmente empleada para aumentar la utilizaci´n o o de los recursos de un sistema inform´tico y para soportar m´ltiples usuarios simult´nea- a u a mente activos. 12 Sistemas Operativos - 0.5.0
  • 23. 1.4 Evoluci´n hist´rica de los Sistemas Operativos o o 1.4.4. Computadoras personales. Cuarta Generaci´n (1980-1990) o Con el desarrollo de la tecnolog´ LCI (Large Scale Integration) de construcci´n de ıa o circuitos, que permit´ fabricar chips con miles de transistores en un cent´ ıa ımetro cuadrado de silicio, se inicio la era de la computadora personal. En t´rminos de arquitectura, las e computadoras personales no eran muy distintas de las minicomputadoras del tipo PDP- 11, pero en t´rminos de precio s´ eran bastante distintas. Las computadoras personales e ı m´s poderosas reciben el nombre gen´rico de estaciones de trabajo, pero en realidad s´lo a e o son computadoras personales grandes. La amplia disponibilidad de poder de c´mputo condujo, junto con un nivel gr´fico o a bastante adecuado, al crecimiento de la industria de producci´n de software para las o computadoras personales. Gran parte de este software ten´ adem´s, la ventaja de pre- ıa, a sentar una gran amiganilidad con el usuario. Dos sistemas operativos han dominado la escena de las computadoras personales y las estaciones de trabajo: MS-DOS de Microsoft y UNIX de ATT. MS-DOS tuvo un amplio uso en el IBM PC y otras m´quinas que incorporaban el microprocesador 8088 de Intel a o alguno de sus sucesores. UNIX, su contendiente principal, domin´ las computadoras o que no utilizaban microprocesadores de Intel, as´ como las estaciones de trabajo, en ı particular las que poseen chips RISC de altas prestaciones. Un interesante desarrollo que comenz´ a llevarse a cabo a mediados de la d´cada o e de los 80 ha sido el crecimiento de las redes de computadoras personales con sistemas operativos en red y sistemas operativos distribuidos. En un sistema operativo en red, los usuarios son conscientes de la existencia de varias computadoras y pueden conectarse con m´quinas remotas. Cada m´quina ejecuta su propio sistema operativo local y tiene a a su propio usuario. Un sistema operativo distribuido, por el contrario, presenta al usuario un conjunto de computadores independientes como si se tratara de un solo sistema. En un sistema operativo distribuido los usuarios no deben ser conscientes del lugar donde su programa va a ejecutarse o la ubicaci´n de los archivos a los que desea acceder, esas o cuestiones deben ser manejadas autom´ticamente y de forma eficiente por el sistema a operativo. http://alqua.org/libredoc/SSOO 13
  • 24. 1 Introducci´n a los Sistemas Operativos o 14 Sistemas Operativos - 0.5.0
  • 25. 2 Gesti´n de procesos o 2.1. Procesos y tareas Proceso una definici´n tradicional de proceso es la de instancia de un programa en o ejecuci´n. La ejecuci´n de tal programa es indicada al SO mediante una acci´n u o o o orden especializada. El SO responde en ese punto creando un nuevo proceso. En general, esta actividad consiste en la creaci´n e iniciliazaci´n de estructuras de datos en el SO para monitorizar o o y controlar el progreso de proceso en cuesti´n. Una vez creado, el proceso pasar´ a estar o a activo y competir´ por la utilizaci´n de recursos del sistema como el procesador y los a o dispositivos I/O. Un proceso evoluciona c´ ıclicamente entre per´ıodos de ejecuci´n activa y de espera por o la terminaci´n de actividades de I/O. Cuando un proceso queda inactivo por especificar o una operaci´n de I/O y quedar a la espera de que ´sta se complete, el SO puede planificar o e la ejecuci´n de otro proceso. o Desde este punto de vista, un proceso es una entidad individualmente planificable, que puede ser asignada al procesador y ejecutada por ´ste. El SO controla, pues, din´- e a micamente la evoluci´n de los procesos registrando la informaci´n correspondiente a sus o o cambios cuando ´stos se produzcan. Esta informaci´n es utilizada por el SO para sus e o labores de planificaci´n y gesti´n sobre el conjunto de procesos que en un determinado o o momento pueden coexistir en el sistema inform´tico. a De esta forma adem´s de la plantilla est´tica constituida por el programa ejecutable a a en que se basa, un proceso posee ciertos atributos que ayudan al SO en su gesti´n. o Los atributos de un proceso incluyen su estado actual, unidad de planificaci´n, derechos o de acceso, nivel de prioridad entre otros datos. Desde el punto de vista del usuario, un proceso no es m´s que la ejecuci´n de un conjunto de instrucciones que llevan a cabo una a o determinada tarea, mientras que para el SO es una entidad que atraviesa din´micamente a un conjunto de estados y que solicita los recursos del sistema que le son necesarios. De esta forma, el acceso a tales recursos debe ser planificado de forma que se consiga un rendimiento en la utilizaci´n de los mismos lo m´s ´ptimo posible. o a o 2.1.1. Divisi´n impl´ o ıcita y expl´ ıcita de tareas Dependiendo del SO y del entorno objetivo de ejecuci´n de programas, la divisi´n o o de un trabajo en tareas que ser´n ejecutadas como procesos independientes as´ como la a ı asignaci´n inicial de los atributos de esos procesos pueden ser efectuadas o bien por el o SO o bien por el desarrollador de la aplicaci´n. En otras palabras, lo que constituir´ un o a proceso independiente puede provenir de: 15
  • 26. 2 Gesti´n de procesos o 1. Divisi´n impl´ o ıcita de tareas definida por el sistema. 2. Divisi´n expl´ o ıcita de tareas definida por el desarrollador. En general, la divisi´n impl´ o ıcita de tareas se aplica en sistemas operativos multitarea para multiplexar la ejecuci´n de una serie de programas y explotar los beneficios de o la concurrencia entre una serie de aplicaciones. La divisi´n expl´ o ıcita en tareas permite mejoras adicionales en el rendimiento al explotar la concurrencia inherente o propia de una determinada aplicaci´n o programa. La divisi´n impl´ o o ıcita en tareas significa que los procesos son definidos por el sistema, esta divisi´n aparece com´nmente en sistemas de o u multiprogramaci´n de prop´sito general tales como los sistemas de tiempo compartido. o o En este enfoque cada programa remitido para su ejecuci´n es tratado por el SO como o un proceso independiente. El SO asignar´ valores iniciales a lo atributos del proceso tales como la prioridad de a planificaci´n y los derechos de acceso en el momento de la creaci´n del proceso bas´ndose o o a en el perfil del usuario y en valores predeterminados del sistema. La divisi´n expl´ o ıcita significa que los desarrolladores definen expl´ ıcitamente cada pro- ceso y alguno de sus atributos, t´ ıpicamente una unica aplicaci´n queda dividida en ´ o varios procesos relacionados con objeto de mejorar su rendimiento. La divisi´n expl´ o ıcita se utiliza en situaciones donde se desea elevar la eficiencia o controlar expl´ ıcitamente las actividades del sistema. Entre las razones m´s comunes para aplicar la divisi´n expl´ a o ıcita de tareas se incluyen 1. Ganancia de velocidad: algunas de las tareas independientes en que quede dividida la aplicaci´n podr´n ejecutarse de forma concurrente con la consiguiente mejora o a en el tiempo total de ejecuci´n de la aplicaci´n. o o 2. Mejora en el rendimiento de la utilizaci´n de dispositivos de I/O con latencia: o dedicando tareas expl´ıcitas a la realizaci´n de operaciones I/O, ´stas podr´n ser o e a planificadas por el SO de forma concurrente con tareas de computaci´n intensiva o con la consiguiente ganancia en el rendimiento. 3. Multiprocesamiento: los procesos independientes que constituyen una aplicaci´n o pueden ser perfectamente portados para su ejecuci´n en un entorno multiprocesa- o dor con lo que se conseguir´ paralelismo real. ıa 4. Computaci´n distribuida: de igual forma, cada tarea independiente puede ser asig- o nada a un procesador que forme parte de un sistema distribuido, siendo necesaria una sincronizaci´n con el resto de procesadores que se ocupan de sus respectivas o tareas. 2.1.2. Tipos de procesos y relaci´n entre procesos concurrentes o En principio, podemos realizar una clasificaci´n muy general de los procesos entre o procesos de usuario y procesos de sistema. Un proceso de usuario es aquel creado por 16 Sistemas Operativos - 0.5.0
  • 27. 2.1 Procesos y tareas el SO como respuesta a una de ejecuci´n del usuario o de una aplicaci´n que ejecuta a o o instancias de ´ste. e Un proceso de sistema es un proceso que forma parte del propio SO y que desempe˜a n alguna de sus labores caracter´ ısticas, como por ejemplo, la elecci´n del siguiente proceso o a ejecutar o bien la prestaci´n de un servicio determinado como el acceso a un recurso de o I/O del sistema. Cualquiera que sea la naturaleza de los procesos, ´stos pueden mantener e fundamentalmente dos tipos de relaciones: Competici´n y/o Colaboraci´n. o o En virtud de la compartici´n de recursos de un solo sistema, todos los procesos concu- o rrentes compiten unos con otros por la asignaci´n de los recursos del sistema necesarios o para sus operaciones respectivas. Adem´s, una colecci´n de procesos relacionados que a o representen colectivamente una sola aplicaci´n l´gica, suelen cooperar entre s´ La coope- o o ı. raci´n es habitual entre los procesos creados como resultado de una divisi´n expl´ o o ıcita de tareas. Los procesos cooperativos intercambian datos y se˜ales de sincronizaci´n necesa- n o rios para estructurar su progreso colectivo. Tanto la competici´n como la colaboraci´n o o de procesos requiere una cuidada asignaci´n y protecci´n de los recursos en t´rminos o o e de aislamiento de los diferentes espacios de direcciones. La cooperaci´n depende de la o existencia de mecanismos para la utilizaci´n controlada de los datos compartidos y el o intercambio de se˜ales de sincronizaci´n. n o Los procesos cooperativos comparten t´ ıpicamente algunos recursos y atributos adem´s a de interactuar unos con otros. Por esta raz´n, con frecuencia se agrupan en lo que se o denomina una familia de procesos. Aunque dentro de una familia son posibles relaciones complejas entre sus procesos miembro, la relaci´n m´s com´nmente soportada por los o a u sistemas operativos es la relaci´n padre-hijo. Esta relaci´n se establece cuando el SO o o crea un nuevo proceso a instancias de otro ya existente. Los procesos hijos heredan generalmente los atributos de sus procesos padres en el momento de su creaci´n y tambi´n o e pueden compartir recursos con sus procesos hermanos. 2.1.3. El sistema operativo y los procesos Todos los SSOO de multiprogramaci´n est´n construidos en torno al concepto de o a proceso. Los requisitos principales que debe cumplir un SO para con los procesos son los siguientes: 1. El SO debe intercalar la ejecuci´n de procesos para optimizar la utilizaci´n del o o procesador ofreciendo a la vez un tiempo de respuesta razonable. 2. El SO debe asignar los recursos del sistema a los procesos en conformidad con una pol´ ıtica espec´ ıfica que evite situaciones de interbloqueo. 3. El SO podr´ tener que dar soporte a la comunicaci´n entre procesos y ofrecer ıa o mecanismos para su creaci´n, labores que pueden ser de ayuda en la estructuraci´n o o de aplicaciones. http://alqua.org/libredoc/SSOO 17
  • 28. 2 Gesti´n de procesos o 2.2. Creaci´n y terminaci´n de procesos o o Cuando se a˜ade un proceso a los que ya est´ admisnitrando el SO, hay que construir n a las estructuras de datos que se utilizan para gestionar y controlar el proceso y asignar el espacio de direcciones que va a utilizar dicho proceso. Estas acciones constituyen la creaci´n de un nuevo proceso. o Son cuatro los sucesos comunes que llevan a la creaci´n de un proceso. o 1. Nueva tarea en un sistema de proceso por lotes. 2. Nueva conexi´n interactiva. o 3. Nuevo proceso creado por el SO para dar un servicio. 4. Un proceso generado por otro ya existente. Por otro lado, en cualquier sistema inform´tico debe existir alguna forma de que un a proceso indique su terminaci´n. Un trabajo por lotes debe incluir una instrucci´n de o o detenci´n halt o una llamada expl´ o ıcita a un servicio del sistema operativo para indicar su terminaci´n, mientras que en una aplicaci´n interactiva, ser´ la acci´n del usuario la o o a o que indique cu´ndo termine el proceso. a Todas estas acciones provocan al final una petici´n de servicio al SO para terminar el o proceso demandante. Adem´s, una serie de errores pueden llevarnos a la terminaci´n de a o un proceso. A continuaci´n se enumeran algunas de las condiciones m´s habituales de o a terminaci´n de procesos: o 1. Terminaci´n normal: Un proceso termina de ejecutar su conjunto de instrucciones o y finaliza. 2. Tiempo l´ımite excedido: El proceso requiere m´s tiempo para completar su ejecu- a ci´n del que el sistema establece como m´ximo. o a 3. No disponibilidad de memoria: Tiene lugar cuando un proceso necesita m´s me- a moria de la que el sistema puede proporcionar. 4. Violaci´n de l´ o ımites: Ocurre cuando un proceso trata de acceder a una posici´n de o memoria a la que no puede hacerlo. 5. Error de protecci´n: Se produce si un proceso intenta utilizar un recurso o un o archivo para el que no tiene permiso o trata de utilizarlo de forma incorrecta. 6. Error aritm´tico: Aparece si el proceso intenta hacer un c´lculo prohibido como e a la divisi´n por cero o trata de almacenar un n´mero mayor del que el hardware o u acepta. 7. Superaci´n del tiempo m´ximo de espera por un recurso: En este caso, el proceso o a se encuentra a la espera de obtener un recurso o de que tenga lugar un determinado evento durante un tiempo que alcanza el l´ ımite establecido. 18 Sistemas Operativos - 0.5.0