2.3. La tercera generación
Texto íntegro de la conversión. Las figuras y la disposición de las notas se pueden consultar en el PDF.
2.3. La tercera generación
La tercera generación de computadores surge a mediados de la década de 1960 y tecnológicamente se basa en los circuitos integrados. Estas máquinas nuevas son mucho más pequeñas que las de la segunda generación y también son mucho más rápidas.
Con la aparición de computadores más pequeños y fiables gracias a las nuevas tecnologías y a la posibilidad de incrementar la producción de computadores, los costes de fabricación se abaratan y así nace un sector informático comercial muy importante. Los computadores se ponen al alcance de empresas medianamente grandes y empieza el uso comercial de la informática. Otro aspecto muy importante de esta nueva generación es el hecho de que se introducen mecanismos nuevos, como interrupciones, protección o búsqueda de una concurrencia máxima de operación. Paralelamente, se desarrollan el hardware y el software, que dieron lugar a los elementos siguientes:
Notas y pies de figura de la fuente
Figura 4 La serie IBM 360. El primer grupo de computadores construidos con circuitos integrados fue el de la serie 360 de IBM.
Página 14
-
periféricos más eficaces y rápidos;
-
terminales remotos (con los que se puede acceder a bases de datos y actualizar cuentas corrientes, entre otros);
-
lenguajes de programación de uso general, pensados para que pudieran ser utilizados por diferentes computadores con características de hardware muy diversas. Se estandarizan los lenguajes de alto nivel ya existentes (Fortran, Algol, Cobol, PL/1) y aparecen otros, como el Basic y el Pascal.
Una de las técnicas más innovadoras de esta generación es la multiprogramación, que permite solapar la ejecución de diversos programas.
En el procesamiento de datos comerciales, el tiempo de espera en razón de operaciones de entrada/salida puede representar el 90% del tiempo total de ejecución. Si nuestro computador está ejecutando únicamente un programa, estaremos desperdiciando el procesador todo este tiempo de espera. La solución del problema será la introducción de la multiprogramación, es decir, la capacidad de multiplexar la utilización del procesador entre diversos programas de manera que, aparentemente, el procesador esté ejecutando diversos programas de forma simultánea.
Durante la ejecución de un programa, generalmente podemos distinguir entre fases de cálculo intensivo y fases en las que se efectúan operaciones de entrada/salida de manera intensiva. Eso se ilustra en la figura 5, en la que las fases de cálculo intensivo se indican mediante rectángulos grises y las de entrada/salida, con rectángulos blancos. La ejecución secuencial de dos programas se muestra en el punto a. Ejecución secuencial. Para simplificarlo, supondremos que los programas tienen un comportamiento idéntico.
Figura 5
Rectángulos oscuros: fases de cálculo intensivo. Rectángulos claros: fases de entrada/salida.
Página 15
Tal como se puede deducir de la figura 5, durante la ejecución secuencial de los dos programas, la CPU o bien los dispositivos de entrada/salida están inactivos en algún momento. Una manera de solucionar este problema es asignar alguna otra tarea a la CPU o a los dispositivos de entrada/salida cuando, por algún motivo, estén inactivos. Si es posible ejecutar los programas de manera concurrente, éstos pueden proporcionar trabajo tanto a la CPU como a los dispositivos en cualquier momento durante la ejecución de los dos programas.
En el punto b. Ejecución concurrente de la figura 5 se muestra un posible escenario de la ejecución concurrente de los dos programas. El procesador empieza ejecutando el primer proceso, el proceso A, y, cuando éste lleva a cabo una operación de entrada/salida, el procesador, en lugar de quedarse inactivo, pasa a ejecutar el segundo proceso, el proceso B, que se supone que se encuentra en la memoria esperando a ser ejecutado. Cuando este segundo proceso se acaba o bien solicita una operación de entrada/salida, el procesador vuelve a ejecutar el proceso A. El proceso sigue alternando la ejecución de los dos procesos hasta que finalizan los dos.
Tal como se puede ver en el esquema de la figura 5, con la ejecución concurrente, o multiprogramada, se puede incrementar considerablemente el rendimiento del computador: el tiempo de ejecución de los dos programas queda reducido de diez unidades en la ejecución secuencial a seis unidades en la ejecución concurrente y la utilización del sistema en este segundo caso es de un 100%. El ejemplo que hemos presentado, aunque es muy representativo, no es real, ya que generalmente la distribución de las fases de cálculo y programación son más variables, de manera que no siempre se consigue que el procesador y los dispositivos estén activos.
Para aumentar la utilización de los recursos del sistema computador, los sistemas multiprogramados permiten la ejecución concurrente de más de dos programas, de los que se dice que están compitiendo por los recursos del sistema. El número de programas que están activamente en competencia por los recursos del sistema determina el grado de multiprogramación.
La aparición de la multiprogramación permite desarrollar sistemas con múltiples usuarios conectados simultáneamente mediante terminales a un sistema computador. En este caso, el sistema multiprogramado puro no es muy eficiente, ya que, tal como hemos explicado anteriormente, la CPU deja de ejecutar un programa y pasa a ejecutar otro que esté pendiente de ejecución siempre que el programa que se está ejecutando establece una operación de entrada/salida o bien cuando finaliza. A causa de este funcionamiento, el tiempo de respuesta que tiene un usuario que está conectado en modo interactivo puede ser considerablemente largo.
Página 16
Para solucionar este problema, se propone un nuevo mecanismo llamado tiempo compartido (time sharing). Con este mecanismo, los diferentes programas que compiten por los recursos del sistema, entre los cuales está la CPU, tienen asignada la CPU durante un periodo de tiempo limitado, llamado quantum6. Así, cuando un programa deja de ejecutarse, libera la CPU por alguno de los tres motivos siguientes:
- porque el programa finaliza,
- porque el programa inicia una operación de entrada/salida,
- porque ha pasado un cuanto de tiempo en ejecución.
El cuanto de tiempo es lo bastante pequeño para que los programas de los diferentes usuarios que están conectados al sistema progresen de forma concurrente y cada usuario tenga la impresión de que es el único que utiliza el sistema.
En esta generación, podemos enmarcar el nacimiento del sistema operativo UNIX, precursor del sistema operativo Linux. Ken Thompson, un científico de los laboratorios Bell, decidió implementar una versión simplificada de un ambicioso –pero sin éxito– proyecto de sistema operativo llamado MULTICS. Las buenas críticas de la primera versión del UNIX le animaron a escribir una nueva versión para una de las máquinas más populares de la época (PDP-11) y, por primera vez en la historia de los sistemas operativos, utilizando un lenguaje de alto nivel (el lenguaje C, creado para la ocasión). Como AT&T (propietaria de los laboratorios Bell) no estaba autorizada a hacer negocio en el sector informático, hacia 1974 empezó a distribuir el código fuente del UNIX a las universidades que lo pedían. A partir de ese momento, muchas universidades empezaron a utilizar, estudiar y mejorar el UNIX. Hacia 1984, AT&T recibió la autorización para operar en el sector informático y empezó a comercializar el UNIX System III y, posteriormente, el UNIX System V. Ahora bien, la Universidad de Berkeley también distribuyó su versión del UNIX (BSD), que entre otras mejoras incorporaba el protocolo de comunicaciones TCP/IP, que ha resultado clave en el desarrollo de la red Internet. Además, muchas empresas comercializaron sus versiones del UNIX (como HP-UX, AIX, Solaris, Sun-OS o Ultrix). Esta gran familia de sistemas operativos no era totalmente compatible, por lo que se iniciaron diversos esfuerzos para estandarizar el sistema operativo UNIX. El esfuerzo más destacado fue POSIX (portable operating system interface).
Notas y pies de figura de la fuente
(6)En el sistema operativo Linux, la duración del cuanto es un parámetro de configuración que se puede escoger entre los valores 1 ms, 4 ms y 10 ms.
Ver fragmento extraído sin normalizar
2.3. La tercera generación
La tercera generación de computadores surge a mediados de la década de 1960
y tecnológicamente se basa en los circuitos integrados. Estas máquinas nuevas
son mucho más pequeñas que las de la segunda generación y también son
mucho más rápidas.
Con la aparición de computadores más pequeños y fiables gracias a las nuevas
tecnologías y a la posibilidad de incrementar la producción de computadores,
los costes de fabricación se abaratan y así nace un sector informático comercial
muy importante. Los computadores se ponen al alcance de empresas media-
namente grandes y empieza el uso comercial de la informática. Figura4
La serie IBM 360. El primer grupo de
computadores construidos con circuitos
integrados fue el de la serie 360 de IBM.
Otro aspecto muy importante de esta nueva generación es el hecho de que se
introducen mecanismos nuevos, como interrupciones, protección o búsqueda
de una concurrencia máxima de operación. Paralelamente, se desarrollan el
hardware y el software, que dieron lugar a los elementos siguientes:
## Página 14
<!-- source-page: 14 -->
GNUFDL • PID_00169381 14 Introducción a los sistemas operativos
• periféricos más eficaces y rápidos;
• terminales remotos (con los que se puede acceder a bases de datos y actua-
lizar cuentas corrientes, entre otros);
• lenguajes de programación de uso general, pensados para que pudieran
ser utilizados por diferentes computadores con características de hardwa-
re muy diversas. Se estandarizan los lenguajes de alto nivel ya existentes
(Fortran, Algol, Cobol, PL/1) y aparecen otros, como el Basic y el Pascal.
Una de las técnicas más innovadoras de esta generación es la multiprograma-
ción, que permite solapar la ejecución de diversos programas.
En el procesamiento de datos comerciales, el tiempo de espera en razón de
operaciones de entrada/salida puede representar el 90% del tiempo total de
ejecución. Si nuestro computador está ejecutando únicamente un programa,
estaremos desperdiciando el procesador todo este tiempo de espera. La solu-
ción del problema será la introducción de la multiprogramación, es decir, la
capacidad de multiplexar la utilización del procesador entre diversos progra-
mas de manera que, aparentemente, el procesador esté ejecutando diversos
programas de forma simultánea.
Durante la ejecución de un programa, generalmente podemos distinguir entre
fases de cálculo intensivo y fases en las que se efectúan operaciones de entra-
da/salida de manera intensiva. Eso se ilustra en la figura 5, en la que las fa-
ses de cálculo intensivo se indican mediante rectángulos grises y las de entra-
da/salida, con rectángulos blancos. La ejecución secuencial de dos programas
se muestra en el punto a. Ejecución secuencial. Para simplificarlo, supondremos
que los programas tienen un comportamiento idéntico.
Figura 5
Rectángulos oscuros: fases de cálculo intensivo. Rectángulos claros: fases de entrada/salida.
## Página 15
<!-- source-page: 15 -->
GNUFDL • PID_00169381 15 Introducción a los sistemas operativos
Tal como se puede deducir de la figura 5, durante la ejecución secuencial de
los dos programas, la CPU o bien los dispositivos de entrada/salida están inac-
tivos en algún momento. Una manera de solucionar este problema es asignar
alguna otra tarea a la CPU o a los dispositivos de entrada/salida cuando, por
algún motivo, estén inactivos. Si es posible ejecutar los programas de mane-
ra concurrente, éstos pueden proporcionar trabajo tanto a la CPU como a los
dispositivos en cualquier momento durante la ejecución de los dos programas.
En el punto b. Ejecución concurrente de la figura 5 se muestra un posible escena-
rio de la ejecución concurrente de los dos programas. El procesador empieza
ejecutando el primer proceso, el proceso A, y, cuando éste lleva a cabo una
operación de entrada/salida, el procesador, en lugar de quedarse inactivo, pasa
a ejecutar el segundo proceso, el proceso B, que se supone que se encuentra en
la memoria esperando a ser ejecutado. Cuando este segundo proceso se acaba
o bien solicita una operación de entrada/salida, el procesador vuelve a ejecu-
tar el proceso A. El proceso sigue alternando la ejecución de los dos procesos
hasta que finalizan los dos.
Tal como se puede ver en el esquema de la figura 5, con la ejecución concu-
rrente, o multiprogramada, se puede incrementar considerablemente el ren-
dimiento del computador: el tiempo de ejecución de los dos programas que-
da reducido de diez unidades en la ejecución secuencial a seis unidades en la
ejecución concurrente y la utilización del sistema en este segundo caso es de
un 100%. El ejemplo que hemos presentado, aunque es muy representativo,
no es real, ya que generalmente la distribución de las fases de cálculo y pro-
gramación son más variables, de manera que no siempre se consigue que el
procesador y los dispositivos estén activos.
Para aumentar la utilización de los recursos del sistema computador, los siste-
mas multiprogramados permiten la ejecución concurrente de más de dos pro-
gramas, de los que se dice que están compitiendo por los recursos del sistema.
El número de programas que están activamente en competencia por los recur-
sos del sistema determina el gradodemultiprogramación.
La aparición de la multiprogramación permite desarrollar sistemas con múl-
tiples usuarios conectados simultáneamente mediante terminales a un siste-
ma computador. En este caso, el sistema multiprogramado puro no es muy
eficiente, ya que, tal como hemos explicado anteriormente, la CPU deja de
ejecutar un programa y pasa a ejecutar otro que esté pendiente de ejecución
siempre que el programa que se está ejecutando establece una operación de
entrada/salida o bien cuando finaliza. A causa de este funcionamiento, el tiem-
po de respuesta que tiene un usuario que está conectado en modo interactivo
puede ser considerablemente largo.
## Página 16
<!-- source-page: 16 -->
GNUFDL • PID_00169381 16 Introducción a los sistemas operativos
Para solucionar este problema, se propone un nuevo mecanismo llamado (6)En el sistema operativo Linux, la
tiempocompartido (time sharing). Con este mecanismo, los diferentes pro- duración del cuanto es un paráme-
tro de configuración que se puede
gramas que compiten por los recursos del sistema, entre los cuales está la CPU, escoger entre los valores 1 ms, 4
tienen asignada la CPU durante un periodo de tiempo limitado, llamado quan- ms y 10 ms.
tum6. Así, cuando un programa deja de ejecutarse, libera la CPU por alguno
de los tres motivos siguientes:
• porque el programa finaliza,
• porque el programa inicia una operación de entrada/salida,
• porque ha pasado un cuanto de tiempo en ejecución.
El cuanto de tiempo es lo bastante pequeño para que los programas de los
diferentes usuarios que están conectados al sistema progresen de forma con-
currente y cada usuario tenga la impresión de que es el único que utiliza el
sistema.
En esta generación, podemos enmarcar el nacimiento del sistema operativo
UNIX, precursor del sistema operativo Linux. Ken Thompson, un científico
de los laboratorios Bell, decidió implementar una versión simplificada de un
ambicioso –pero sin éxito– proyecto de sistema operativo llamado MULTICS.
Las buenas críticas de la primera versión del UNIX le animaron a escribir una
nueva versión para una de las máquinas más populares de la época (PDP-11) y,
por primera vez en la historia de los sistemas operativos, utilizando un lengua-
je de alto nivel (el lenguaje C, creado para la ocasión). Como AT&T (propieta-
ria de los laboratorios Bell) no estaba autorizada a hacer negocio en el sector
informático, hacia 1974 empezó a distribuir el código fuente del UNIX a las
universidades que lo pedían. A partir de ese momento, muchas universidades
empezaron a utilizar, estudiar y mejorar el UNIX. Hacia 1984, AT&T recibió
la autorización para operar en el sector informático y empezó a comercializar
el UNIX System III y, posteriormente, el UNIX System V. Ahora bien, la Uni-
versidad de Berkeley también distribuyó su versión del UNIX (BSD), que en-
tre otras mejoras incorporaba el protocolo de comunicaciones TCP/IP, que ha
resultado clave en el desarrollo de la red Internet. Además, muchas empresas
comercializaron sus versiones del UNIX (como HP-UX, AIX, Solaris, Sun-OS o
Ultrix). Esta gran familia de sistemas operativos no era totalmente compatible,
por lo que se iniciaron diversos esfuerzos para estandarizar el sistema operativo
UNIX. El esfuerzo más destacado fue POSIX (portable operating system interface).