of 367 /367
FUNDAMENTOS DE SISTEMAS OPERATIVOS Fuente: http://github.org/gwolf/sistop Compilación: 2015/10/29-11:48:34 Versión 7CE245D

Fundamentos de sistemas operativos de sistemas operativos

Embed Size (px)

Text of Fundamentos de sistemas operativos de sistemas operativos

  • FUNDAMENTOS DE SISTEMAS OPERATIVOS

    Fuente: http://github.org/gwolf/sistopCompilacin: 2015/10/29-11:48:34 Versin 7CE245D

  • UNIVERSIDAD NACIONAL AUTNOMA DE MXICODr. Jos Narro Robles

    RectorDr. Eduardo Brzana Garca

    Secretario GeneralIng. Leopoldo Silva Gutirrez

    Secretario AdministrativoDra. Estela Morales CamposCoordinadora de Humanidades

    INSTITUTO DE INVESTIGACIONES ECONMICASDra. Vernica Villarespe Reyes

    DirectoraMtra. Berenice Ramrez Lpez

    Secretaria AcadmicaAristeo Tovas Garca

    Secretario TcnicoMara Soledad Simn Pinero

    Jefa del Departamento de Ediciones

    FACULTAD DE INGENIERADr. Carlos Agustn Escalante Sandoval

    DirectorIng. Gonzalo Lpez de Haro

    Secretario GeneralDr. Boris Escalante Ramrez

    Jefe de la Divisin de Ingeniera ElctricaMtra. Mara Cuairn Ruidaz

    Jefa de la Unidad de Apoyo Editorial

  • FUNDAMENTOS DESISTEMAS OPERATIVOS

    Gunnar Wolf

    Esteban Ruiz

    Federico Bergero

    Erwin Meza

    UNIVERSIDAD NACIONAL AUTNOMA DE MXICOINSTITUTO DE INVESTIGACIONES ECONMICAS

    FACULTAD DE INGENIERA

  • Esta investigacin, arbitrada por pares acadmicos, se privilegia con el aval de la institucin editora.

    Fundamentos de sistemas operativos / Gunnar Wolf [y tres ms]. Primera edicin. Mxico D.F. : UniversidadNacional Autnoma de Mxico, Instituto de Investigaciones Econmicas : Facultad de Ingeniera, 2015.367 p. : ilustraciones ; 28 cm.

    Bibliografa: pginas 359-367ISBN 978-607-02-6544-0

    1. Sistemas operativos (Computadoras). 2. Sistemas de software. 3. Organizacin de archivos (Informtica).I. Wolf, Gunnar, autor. II. Universidad Nacional Autnoma de Mxico. Instituto de Investigaciones Econmi-cas. III. Universidad Nacional Autnoma de Mxico. Facultad de Ingeniera.

    005.43-scdd21 Biblioteca Nacional de Mxico

    Primera edicin8 de abril de 2015

    D. R. UNIVERSIDAD NACIONAL AUTNOMA DE MXICOCiudad Universitaria, Coyoacn, 04510, Mxico D.F.INSTITUTO DE INVESTIGACIONES ECONMICASCircuito Mario de la Cueva s/nCiudad de la Investigacin en Humanidades 04510, Mxico D.F.FACULTAD DE INGENIERAAv. Universidad 3000Ciudad Universitaria 04510, Mxico D.F.

    ISBN 978-607-02-6544-0

    Diseo de portada: Victoria JimnezDiseo de interiores y formacin: Gunnar WolfCorreccin y cuidado de la edicin: Marisol Simn

    Impreso y hecho en Mxico

    Copia este libro!Los textos que componen este libro se publican bajo formas de licenciamiento quepermiten la copia, la redistribucin y la realizacin de obras derivadas siempre y

    cuando stas se distribuyan bajo las mismas licencias libres y se cite la fuente.

    El copyright de los textos individuales corresponde a los respectivos autores.

    El presente trabajo est licenciado bajo un esquema Creative CommonsAtribucin CompartirIgual (CC-BY-SA) 4.0 Internacional.

    http://creativecommons.org/licenses/by-sa/4.0/deed.es

    Compartir no es delito.La versin electrnica de este libro est disponible en:

    http://sistop.org/

    http://creativecommons.org/licenses/by-sa/4.0/deed.eshttp://sistop.org/
  • ndice general

    Presentacin 11

    1. Punto de partida 171.1. Qu es un sistema operativo? . . . . . . . . . . . . . . . . . . . . 17

    1.1.1. Por qu estudiar los sistemas operativos? . . . . . . . . 171.2. Funciones y objetivos del sistema operativo . . . . . . . . . . . . 181.3. Evolucin de los sistemas operativos . . . . . . . . . . . . . . . . 19

    1.3.1. Proceso por lotes (batch processing) . . . . . . . . . . . . . 191.3.2. Sistemas en lotes con dispositivos de carga (spool) . . . . 201.3.3. Sistemas multiprogramados . . . . . . . . . . . . . . . . . 201.3.4. Sistemas de tiempo compartido . . . . . . . . . . . . . . . 21

    1.4. Y del lado de las computadoras personales . . . . . . . . . . . . 221.4.1. Primeros sistemas para entusiastas . . . . . . . . . . . . . 221.4.2. La revolucin de los 8 bits . . . . . . . . . . . . . . . . . . 231.4.3. La computadora para fines serios: la familia PC . . . . 231.4.4. El impacto del entorno grfico (WIMP) . . . . . . . . . . . 241.4.5. Convergencia de los dos grandes mercados . . . . . . . . 25

    1.5. Dispositivos mviles . . . . . . . . . . . . . . . . . . . . . . . . . 271.5.1. Resea histrica . . . . . . . . . . . . . . . . . . . . . . . . 271.5.2. Caractersticas diferenciadoras . . . . . . . . . . . . . . . 31

    1.6. Seguridad informtica . . . . . . . . . . . . . . . . . . . . . . . . 351.6.1. Cdigo malicioso . . . . . . . . . . . . . . . . . . . . . . . 36

    1.7. Organizacin de los sistemas operativos . . . . . . . . . . . . . . 371.8. Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39

    1.8.1. Preguntas de autoevaluacin . . . . . . . . . . . . . . . . 391.8.2. Lecturas relacionadas . . . . . . . . . . . . . . . . . . . . 41

    2. Relacin con el hardware 432.1. Introduccin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 432.2. Unidad de procesamiento . . . . . . . . . . . . . . . . . . . . . . 43

    2.2.1. Jerarqua de almacenamiento . . . . . . . . . . . . . . . . 442.2.2. Interrupciones y excepciones . . . . . . . . . . . . . . . . 46

    5

  • 6 NDICE GENERAL

    2.3. Las terminales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 492.4. Dispositivos de almacenamiento . . . . . . . . . . . . . . . . . . 492.5. Relojes y temporizadores . . . . . . . . . . . . . . . . . . . . . . . 502.6. Canales y puentes . . . . . . . . . . . . . . . . . . . . . . . . . . . 51

    2.6.1. Contencin . . . . . . . . . . . . . . . . . . . . . . . . . . 522.6.2. Acceso directo a memoria (DMA) . . . . . . . . . . . . . . 53

    2.7. Interfaz del sistema operativo: llamadas al sistema . . . . . . . . 542.7.1. Llamadas al sistema, arquitecturas y API . . . . . . . . . 55

    2.8. Referencia a los componentes . . . . . . . . . . . . . . . . . . . . 572.9. Cuando dos cabezas piensan mejor que una . . . . . . . . . . . . 58

    2.9.1. Multiprocesamiento . . . . . . . . . . . . . . . . . . . . . 582.9.2. Cmputo distribuido . . . . . . . . . . . . . . . . . . . . . 622.9.3. Amdahl y Gustafson: qu esperar del paralelismo? . . . 63

    2.10. Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 662.10.1. Preguntas de autoevaluacin . . . . . . . . . . . . . . . . 662.10.2. Temas de investigacin sugeridos . . . . . . . . . . . . . 672.10.3. Lecturas relacionadas . . . . . . . . . . . . . . . . . . . . 68

    3. Administracin de procesos 693.1. Concepto y estados de un proceso . . . . . . . . . . . . . . . . . 69

    3.1.1. Estados de un proceso . . . . . . . . . . . . . . . . . . . . 693.1.2. Informacin asociada a un proceso . . . . . . . . . . . . . 70

    3.2. Procesos e hilos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 713.2.1. Los hilos y el sistema operativo . . . . . . . . . . . . . . . 723.2.2. Patrones de trabajo con hilos . . . . . . . . . . . . . . . . 72

    3.3. Concurrencia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 753.3.1. Introduccin . . . . . . . . . . . . . . . . . . . . . . . . . . 753.3.2. Problema: el jardn ornamental . . . . . . . . . . . . . . . 763.3.3. Mecanismos de sincronizacin . . . . . . . . . . . . . . . 863.3.4. Problema productor-consumidor . . . . . . . . . . . . . . 953.3.5. Bloqueos mutuos e inanicin . . . . . . . . . . . . . . . . 973.3.6. Problema de los lectores y los escritores . . . . . . . . . . 983.3.7. La cena de los filsofos . . . . . . . . . . . . . . . . . . . . 1003.3.8. Los fumadores compulsivos . . . . . . . . . . . . . . . . . 1023.3.9. Otros mecanismos . . . . . . . . . . . . . . . . . . . . . . 105

    3.4. Bloqueos mutuos . . . . . . . . . . . . . . . . . . . . . . . . . . . 1103.4.1. Prevencin de bloqueos . . . . . . . . . . . . . . . . . . . 1133.4.2. Evasin de bloqueos . . . . . . . . . . . . . . . . . . . . . 1153.4.3. Deteccin y recuperacin de bloqueos . . . . . . . . . . . 1203.4.4. Algoritmo del avestruz . . . . . . . . . . . . . . . . . . . 124

    3.5. Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1263.5.1. Preguntas de autoevaluacin . . . . . . . . . . . . . . . . 1263.5.2. Temas de investigacin sugeridos . . . . . . . . . . . . . 1283.5.3. Lecturas relacionadas . . . . . . . . . . . . . . . . . . . . 129

  • NDICE GENERAL 7

    4. Planificacin de procesos 1314.1. Tipos de planificacin . . . . . . . . . . . . . . . . . . . . . . . . . 131

    4.1.1. Tipos de proceso . . . . . . . . . . . . . . . . . . . . . . . 1334.1.2. Midiendo la respuesta . . . . . . . . . . . . . . . . . . . . 134

    4.2. Algoritmos de planificacin . . . . . . . . . . . . . . . . . . . . . 1374.2.1. Objetivos de la planificacin . . . . . . . . . . . . . . . . 1384.2.2. Primero llegado, primero servido (FCFS) . . . . . . . . . . 1394.2.3. Ronda (Round Robin) . . . . . . . . . . . . . . . . . . . . . 1404.2.4. El proceso ms corto a continuacin (SPN, shortest process

    next) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1424.2.5. Ronda egosta (SRR, selfish round robin) . . . . . . . . . . . 1444.2.6. Retroalimentacin multinivel (FB, multilevel feedback) . 1454.2.7. Lotera . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1484.2.8. Esquemas hbridos . . . . . . . . . . . . . . . . . . . . . . 1494.2.9. Resumiendo . . . . . . . . . . . . . . . . . . . . . . . . . . 151

    4.3. Planificacin de hilos . . . . . . . . . . . . . . . . . . . . . . . . . 1544.3.1. Los hilos POSIX (pthreads) . . . . . . . . . . . . . . . . 155

    4.4. Planificacin de multiprocesadores . . . . . . . . . . . . . . . . . 1564.4.1. Afinidad a procesador . . . . . . . . . . . . . . . . . . . . 1564.4.2. Balanceo de cargas . . . . . . . . . . . . . . . . . . . . . . 1574.4.3. Colas de procesos: una o varias? . . . . . . . . . . . . . . 1584.4.4. Procesadores con soporte a hilos hardware . . . . . . . . . 158

    4.5. Tiempo real . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1604.5.1. Tiempo real duro y suave . . . . . . . . . . . . . . . . . . 1614.5.2. Sistema operativo interrumpible (prevenible) . . . . . . . 1624.5.3. Inversin de prioridades . . . . . . . . . . . . . . . . . . . 162

    4.6. Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1634.6.1. Preguntas de autoevaluacin . . . . . . . . . . . . . . . . 1634.6.2. Temas de investigacin sugeridos . . . . . . . . . . . . . 1644.6.3. Lecturas relacionadas . . . . . . . . . . . . . . . . . . . . 165

    5. Administracin de memoria 1675.1. Funciones y operaciones . . . . . . . . . . . . . . . . . . . . . . . 167

    5.1.1. Espacio de direccionamiento . . . . . . . . . . . . . . . . 1675.1.2. Hardware: la unidad de manejo de memoria (MMU) . . . 1685.1.3. La memoria cach . . . . . . . . . . . . . . . . . . . . . . . 1695.1.4. El espacio en memoria de un proceso . . . . . . . . . . . 1725.1.5. Resolucin de direcciones . . . . . . . . . . . . . . . . . . 173

    5.2. Asignacin de memoria contigua . . . . . . . . . . . . . . . . . . 1745.2.1. Particin de la memoria . . . . . . . . . . . . . . . . . . . 175

    5.3. Segmentacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1785.3.1. Permisos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1795.3.2. Intercambio parcial . . . . . . . . . . . . . . . . . . . . . . 1805.3.3. Ejemplificando . . . . . . . . . . . . . . . . . . . . . . . . 181

  • 8 NDICE GENERAL

    5.4. Paginacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1825.4.1. Tamao de la pgina . . . . . . . . . . . . . . . . . . . . . 1845.4.2. Almacenamiento de la tabla de pginas . . . . . . . . . . 1855.4.3. Memoria compartida . . . . . . . . . . . . . . . . . . . . . 188

    5.5. Memoria virtual . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1915.5.1. Paginacin sobre demanda . . . . . . . . . . . . . . . . . 1935.5.2. Rendimiento . . . . . . . . . . . . . . . . . . . . . . . . . . 1955.5.3. Reemplazo de pginas . . . . . . . . . . . . . . . . . . . . 1965.5.4. Asignacin de marcos . . . . . . . . . . . . . . . . . . . . 2045.5.5. Hiperpaginacin . . . . . . . . . . . . . . . . . . . . . . . 208

    5.6. Consideraciones de seguridad . . . . . . . . . . . . . . . . . . . . 2105.6.1. Desbordamientos de buffer (buffer overflows) . . . . . . . 2105.6.2. Ligado esttico y dinmico de bibliotecas . . . . . . . . . 218

    5.7. Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2205.7.1. Preguntas de autoevaluacin . . . . . . . . . . . . . . . . 2205.7.2. Temas de investigacin sugeridos . . . . . . . . . . . . . 2225.7.3. Lecturas relacionadas . . . . . . . . . . . . . . . . . . . . 224

    6. Organizacin de archivos 2276.1. Introduccin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2276.2. Concepto de archivo . . . . . . . . . . . . . . . . . . . . . . . . . 229

    6.2.1. Operaciones con archivos . . . . . . . . . . . . . . . . . . 2296.2.2. Tablas de archivos abiertos . . . . . . . . . . . . . . . . . 2316.2.3. Acceso concurrente: bloqueo de archivos . . . . . . . . . 2326.2.4. Tipos de archivo . . . . . . . . . . . . . . . . . . . . . . . 2336.2.5. Estructura de los archivos y mtodos de acceso . . . . . . 2356.2.6. Archivos especiales . . . . . . . . . . . . . . . . . . . . . . 2386.2.7. Transferencias orientadas a bloques . . . . . . . . . . . . 239

    6.3. Organizacin de archivos . . . . . . . . . . . . . . . . . . . . . . 2406.3.1. Evolucin del concepto de directorio . . . . . . . . . . . . 2406.3.2. Operaciones con directorios . . . . . . . . . . . . . . . . . 2466.3.3. Montaje de directorios . . . . . . . . . . . . . . . . . . . . 249

    6.4. Control de acceso . . . . . . . . . . . . . . . . . . . . . . . . . . . 2516.4.1. Sistemas FAT . . . . . . . . . . . . . . . . . . . . . . . . . . 2526.4.2. Modelo tradicional Unix . . . . . . . . . . . . . . . . . . . 2536.4.3. Listas de control de acceso . . . . . . . . . . . . . . . . . . 254

    6.5. Sistemas de archivos remotos . . . . . . . . . . . . . . . . . . . . 2566.5.1. Network File System (NFS) . . . . . . . . . . . . . . . . . 2566.5.2. Common Internet File System (CIFS) . . . . . . . . . . . . 2576.5.3. Sistemas de archivos distribuidos: Andrew File System . 259

    6.6. Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2606.6.1. Preguntas de autoevaluacin . . . . . . . . . . . . . . . . 2606.6.2. Temas de investigacin sugeridos . . . . . . . . . . . . . 2616.6.3. Lecturas relacionadas . . . . . . . . . . . . . . . . . . . . 262

  • NDICE GENERAL 9

    7. Sistemas de archivos 2637.1. Plasmando la estructura en el dispositivo . . . . . . . . . . . . . 263

    7.1.1. Conceptos para la organizacin . . . . . . . . . . . . . . . 2637.1.2. Diferentes sistemas de archivos . . . . . . . . . . . . . . . 2657.1.3. El volumen . . . . . . . . . . . . . . . . . . . . . . . . . . 2667.1.4. El directorio y los i-nodos . . . . . . . . . . . . . . . . . . . 2677.1.5. Compresin y desduplicacin . . . . . . . . . . . . . . . . . 2737.1.6. Sistemas de archivos virtuales . . . . . . . . . . . . . . . 276

    7.2. Esquemas de asignacin de espacio . . . . . . . . . . . . . . . . . 2787.2.1. Asignacin contigua . . . . . . . . . . . . . . . . . . . . . 2787.2.2. Asignacin ligada . . . . . . . . . . . . . . . . . . . . . . . 2797.2.3. Asignacin indexada . . . . . . . . . . . . . . . . . . . . . 2807.2.4. Las tablas en FAT . . . . . . . . . . . . . . . . . . . . . . . 283

    7.3. Fallos y recuperacin . . . . . . . . . . . . . . . . . . . . . . . . . 2857.3.1. Datos y metadatos . . . . . . . . . . . . . . . . . . . . . . 2877.3.2. Verificacin de la integridad . . . . . . . . . . . . . . . . . 2887.3.3. Actualizaciones suaves . . . . . . . . . . . . . . . . . . . . 2887.3.4. Sistemas de archivo con bitcora . . . . . . . . . . . . . . 2907.3.5. Sistemas de archivos estructurados en bitcora . . . . . . 291

    7.4. Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2927.4.1. Preguntas de autoevaluacin . . . . . . . . . . . . . . . . 2927.4.2. Temas de investigacin sugeridos . . . . . . . . . . . . . 2937.4.3. Lecturas relacionadas . . . . . . . . . . . . . . . . . . . . 293

    A. Software libre y licenciamiento 297A.1. Software libre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297

    A.1.1. Free as in Freedom: el proyecto GNU . . . . . . . . . . . . . 297A.1.2. El software libre antes de GNU . . . . . . . . . . . . . . . 298A.1.3. El software propietario como anomala histrica . . . . . . 299A.1.4. Esquemas libres de licenciamiento . . . . . . . . . . . . . 300

    A.2. Obras culturales libres . . . . . . . . . . . . . . . . . . . . . . . . 302A.2.1. La familia de licencias Creative Commons . . . . . . . . . . 303

    A.3. El licenciamiento empleado para la presente obra . . . . . . . . 305A.4. Lecturas relacionadas . . . . . . . . . . . . . . . . . . . . . . . . . 306

    B. Virtualizacin 309B.1. Introduccin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 309B.2. Emulacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 310

    B.2.1. Emulando arquitecturas inexistentes . . . . . . . . . . . . 311B.2.2. De lo abstracto a lo concreto . . . . . . . . . . . . . . . . . 313B.2.3. Emulacin o simulacin? . . . . . . . . . . . . . . . . . . 314

    B.3. Virtualizacin asistida por hardware . . . . . . . . . . . . . . . . 315B.3.1. El hipervisor . . . . . . . . . . . . . . . . . . . . . . . . . . 316B.3.2. Virtualizacin asistida por hardware en x86 . . . . . . . . 316

  • 10 NDICE GENERAL

    B.4. Paravirtualizacin . . . . . . . . . . . . . . . . . . . . . . . . . . . 318B.4.1. Paravirtualizacin y software libre . . . . . . . . . . . . . 319B.4.2. Paravirtualizacin de dispositivos . . . . . . . . . . . . . 319

    B.5. Contenedores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 320B.6. Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 322

    B.6.1. Preguntas de autoevaluacin . . . . . . . . . . . . . . . . 322B.6.2. Temas de investigacin sugeridos . . . . . . . . . . . . . 324B.6.3. Lecturas relacionadas . . . . . . . . . . . . . . . . . . . . 324

    C. El medio fsico y el almacenamiento 327C.1. El medio fsico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 327

    C.1.1. Discos magnticos rotativos . . . . . . . . . . . . . . . . . 327C.1.2. Almacenamiento en estado slido . . . . . . . . . . . . . 335

    C.2. RAID: Ms all de los lmites fsicos . . . . . . . . . . . . . . . . . 339C.2.1. RAID nivel 0: divisin en franjas . . . . . . . . . . . . . . . 340C.2.2. RAID nivel 1: espejo . . . . . . . . . . . . . . . . . . . . . . 341C.2.3. Los niveles 2, 3 y 4 de RAID . . . . . . . . . . . . . . . . . 342C.2.4. RAID nivel 5: paridad dividida por bloques . . . . . . . . 342C.2.5. RAID nivel 6: paridad por redundancia P+Q . . . . . . . 344C.2.6. Niveles combinados de RAID . . . . . . . . . . . . . . . . 345

    C.3. Manejo avanzado de volmenes . . . . . . . . . . . . . . . . . . 346C.3.1. LVM: el Gestor de Volmenes Lgicos . . . . . . . . . . . 347C.3.2. ZFS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 348

    C.4. Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349C.4.1. Preguntas de autoevaluacin . . . . . . . . . . . . . . . . 349C.4.2. Temas de investigacin sugeridos . . . . . . . . . . . . . 349C.4.3. Lecturas relacionadas . . . . . . . . . . . . . . . . . . . . 349

    Acerca de los autores 351

    ndice de figuras 352

    Bibliografa 359

  • Presentacin

    Acerca del libro

    Este libro busca brindar a estudiantes y docentes de las carreras de inge-niera en computacin, informtica, Ciencias de la Computacin y similares unmaterial completo, general y autocontenido sobre la materia de sistemas opera-tivos. No se asume conocimiento previo sobre la temtica, aunque se utilizarnconceptos de estructuras de datos y algoritmos bsicos.

    Justificacin

    Actualmente hay vasta bibliografa sobre sistemas operativos, sin embargola gran mayora est escrita en ingls, y cuando estn disponibles en castellano,su traduccin deja mucho que desear, llevando a conceptos confusos y difci-les de comprender. La intencin de los autores es que el presente texto proveaun material redactado originalmente en castellano, revisado por docentes lati-noamericanos utilizando la terminologa ms adecuada para los alumnos de laregin y eliminando muchos de los errores de traduccin.

    Generalmente el material de cursos de sistemas operativos est compues-to por partes de distintos libros, artculos de investigacin, recursos en lnea,software, ejercitacin, etc. Por ello, el alumno debe recurrir a distintas fuentesdurante el curso. El presente libro pretende ser de utilidad tanto para alumnoscomo para docentes como una nica publicacin autocontenida. Cabe remar-car tambin que el material bibliogrfico generalmente est protegido por de-recho de autor, es costoso y en muchos casos de difcil acceso (sobre todo laspublicaciones en ingls).

    Los contenidos de la bibliografa clsica de sistemas operativos estn basa-das en re-ediciones y compendio de libros de hace varias dcadas que incluyentemas obsoletos o desactualizados. Hay tambin desarrollos y tendencias nue-vas en el rea que an no han sido integradas en la bibliografa clsica, y muchomenos a las traducciones. Tambin se quiere revisar y actualizar los conceptosclsicos de sistemas operativos inlcuyendo material de publicacin reciente.

    11

  • 12 PRESENTACIN

    Este libro se desarroll dentro del marco del Proyecto LATIn (EuropeAid2011), enfocado a la creacin de libros de texto con un esquema de licencia-miento libre, derivados de la creacin y colaboracin de grupos de trabajo mul-tinacionales, para la regin latinoamericana.

    Pblico objetivo

    Este libro est apuntado tanto a estudiantes de carreras de informtica,computacin e ingenieras como a los aficionados de la computadora interesa-dos en conocer un poco ms de lo que realmente ocurre dentro de un sistemade cmputo y el papel que cumple el sistema operativo.

    Al finalizar el libro se espera que el lector haya adquirido conocimientos yhabilidades como:

    Administrar, disear y desarrollar un sistema operativo.

    Conociendo el funcionamiento general de los sistemas operativos, podersacar mejor provecho de la computadora

    Conocer y saber aprovechar no slo los sistemas, sino las metodologas yprincipales formas de interaccin del software libre

    Se asume tambin que el lector est familiarizado con algn lenguaje deprogramacin de alto nivel, y al menos en un nivel bsico con C. Aunquelos ejemplos de cdigo estn dados en diversos lenguajes de programacin(Bash, Perl, c, PascalFC, Python, Ruby, Ensamblador, entre otros), stos son tansencillos que pueden ser fcilmente escritos en el lenguaje de eleccin del lectorsin mayor esfuerzo.

    Resultar muy conveniente tener acceso a una computadora con sistemaoperativo Linux (GNU) u otro Unix libre.

    Estructura temtica

    El texto comprende los siguientes captulos:

    1. Punto de partida. Para comenzar a hablar de sistemas operativos, es necesa-rio, en primer trmino, enmarcar qu es un sistema operativo y cules sonsus funciones principales. Tambin es importante detallar algunos pun-tos que, contrario a la percepcin comn, no pueden considerarse parte desus funciones.

    Este tema se presenta apoyado en la evolucin histrica del cmputo, ha-ciendo nfasis en por qu este proceso evolutivo en particular desembocen los sistemas operativos que se tienen hoy en da.

  • 13

    2. Relacin con el hardware. Partiendo de que una de las principales tareasdel sistema operativo es presentar una abstraccin regular del hardware alos procesos que se ejecuten, resulta importante presentar cmo ste estestructurado, y cmo el sistema operativo puede comunicarse con l.

    Este captulo aborda la jerarqua de almacenamiento, el mecanismo de inte-rrupciones y excepciones y el papel que desempean para las llamadas al sis-tema, las caractersticas base de diversos tipos de dispositivo del sistema,el concepto de canales (o buses) de comunicacin, el mecanismo de accesodirecto a memoria, y una introduccin a un tema que puede ser visto comoeje conductor a lo largo de todo el libro: La importancia y complejidad dela concurrencia, y su relacin con el paralelismo y multiprocesamiento.

    3. Administracin de procesos. La entidad principal con la que interacta unsistema operativo (ya sea para brindarle servicios o para imponerle res-tricciones) es el proceso. Este captulo inicia presentando los diferentesestados de los procesos y la relacin entre stos y sus hermanos meno-res (los hilos), y los principales modelos empleados para el multiproce-samiento.

    Todos los sistemas operativos modernos tienen que enfrentar a la concu-rrencia: la incertidumbre del ordenamiento en el tiempo entre eventos re-lativos a los diferentes procesos e hilos. La parte medular de este captulopresenta a las primitivas de sincronizacin: mutexes, semforos y monito-res. Para ilustrarlas, se emplean los patrones y problemas clsicos que sehan seguido a lo largo de su desarrollo histrico.

    Pero las primitivas pueden solamente utilizarse entre procesos que coope-ran deliberadamente entre s. Un sistema operativo debe instrumentar pro-teccin y separacin, incluso entre procesos que compiten o que sencilla-mente no saben el uno acerca del otro. Por ello, la ltima seccin de estecaptulo aborda los diferentes mecanismos que hay para evitar las situa-ciones de bloqueo mutuo.

    4. Planificacin de procesos. Para que varios procesos coexistan en un sistemade cmputo, el primer recurso que el sistema operativo debe multiplexar orepartir entre todos ellos es el tiempo de cmputo: el uso del procesador.Este captulo presenta los diferentes niveles de planificador que formanparte de un sistema operativo, y analiza al planificador a corto plazo (tam-bin conocido como despachador). Se presentan los principales algoritmos,y se ilustra cmo los sistemas operativos modernos van empleando tc-nicas mixtas de varios de ellos.

    Por ltimo, se abordan tres temas brevemente: los diferentes modelos deplanificacin de hilos y su relacin con los procesos, las particularidadesde la planificacin en un entorno con multiprocesadores reales, y las ne-cesidades de planificacin de tiempo real.

  • 14 PRESENTACIN

    5. Administracin de memoria. Los programas slo se vuelven procesos cuan-do se les asigna memoria y tiempo de cmputo: cuando dejan de ser elresultado de una compilacin guardada estticamente para convertirseen una entidad dinmica. Este captulo presenta, en primer lugar, la vi-sin desde dentro de la memoria por parte de cada uno de los procesos: elespacio de direccionamiento y el acomodo clsico de las regiones de unproceso en la memoria que le es asignada.

    Para que los distintos procesos compartan la memoria del sistema, vemosque a lo largo de la historia se han presentado diferentes esquemas. Seexplican someramente los esquemas de particin contigua fija y variable,para profundizar posteriormente en los que ofrecen mayor flexibilidad alsistema operativo y se mantienen en uso al da de hoy: la segmentaciny la paginacin. De esta ltima, se contina para presentar la abstraccinque ha liberado a los sistemas operativos para sobrecomprometer la memo-ria de forma eficiente y prcticamente transparente: la memoria virtual.

    Al manejar la memoria de un proceso surgen puntos importantes a to-mar en cuenta en lo relativo a la seguridad en cmputo; la parte finalde este captulo presenta la vulnerabilidad conocida como desbordamientode buffer (buffer overflow), y algunas estrategias de mitigacin que se hanimplementado con el paso de los aos para mitigar su peligrosidad.

    6. Organizacin de archivos. De cara al usuario, probablemente la principalabstraccin llevada a cabo por el sistema operativo es la organizacin dela informacin sobre un medio persistente. Hoy en da, la norma es queesta organizacin se realice en archivos estructurados sobre una estructurajerrquica llamada directorio. Este captulo se centra en explicar esta abs-traccin, sin entrar an en detalles respecto a cmo se llega a un respaldofsico de la misma.

    Estos conceptos parecen tan omnipresentes y universales que podra pen-sarse que no requieren mayor anlisis. Sin embargo, resulta importanteabordar las diferencias semnticas derivadas del desarrollo histrico dedistintos sistemas. En este captulo se presentan varios conceptos cuyainstrumentacin en un medio que asegure la persistencia se describir enel siguiente captulo.

    Por ltimo, se incluye un breve repaso de distintos tipos de sistemas dearchivos en red, enfatizando nuevamente en los cambios semnticos de-rivados de la distinta historia de cada instrumentacin.

    7. Sistemas de archivos. Este captulo presenta la contraparte obligada del an-terior: cmo se estructuran los dispositivos de almacenamiento a largoplazo, a los cuales se hace referencia genricamente como discos, cmo sevan plasmando las estructuras mediante las cuales el usuario organiza lainformacin en bloques dentro de un dispositivo, qu problemas pueden

  • 15

    derivar del uso de estos sistemas de archivos, y qu mtodos para evitarloso resolverlos se han implementado?

    Este captulo basa sus ejemplos en un sistema de archivos bastante viejoy simple, pero an en muy amplio uso en el cmputo moderno: la familiaFAT.

    Los siguientes temas resultan muy importantes para la comprensin y parael desarrollo futuro de la materia, pero dado que son empleados por el siste-ma operativo (y no necesariamente son parte integral del mismo), se presentancomo apndices

    A. Software libre y licenciamiento. Estudiar sistemas operativos cruza nece-sariamente la temtica del software libre. Uno de los principios fundamen-tales del desarrollo histrico es la libertad de aprender, esto es, todo softwa-re que se diga libre debe permitir a sus usuarios comprender sus estructu-ras bsicas, la relacin entre ellas, y la lgica general de su programacin.

    Hoy en da hay una gran cantidad de sistemas operativos libres, tantode propsito general como enfocados a un nicho. El movimiento ideolgicodel software libre, contrario a cualquier pronstico que pudiera haber-se hecho al iniciarse en 1984, claramente ha cambiado el desarrollo delcmputo. Todos los sistemas operativos que pueden ser estudiados deprimera mano, constatando la instrumentacin de sus principios son nece-sariamente (aunque con una definicin ligeramente laxa) software libre.

    Hacia el ao 2000 se fue haciendo claro que estas ideas no pueden apli-carse nicamente al software. Poco a poco fue definindose una nocinmucho ms amplia, la de los bienes culturales libres. El presente libro buscabrindar una contribucin a esta ltima categora.

    El primer apndice aborda brevemente estos temas, as como los princi-pales modelos de licenciamiento libre utilizados.

    B. Virtualizacin. La virtualizacin es una herramienta muy til, y est cadavez ms al alcance de todos, para el aprendizaje de los sistemas opera-tivos. Hay una gran cantidad de recursos para comprender desde losprimeros momentos del arranque de la computadora. Empleando im-genes de mquinas virtuales, pueden comprenderse y desmenuzarse losdistintos elementos del sistema operativo, e incluso observar el resultadode realizar modificaciones sobre un sistema operativo real. Es, por tanto,una herramienta muy importante para acompaar al aprendizaje de estamateria.

    La virtualizacin es tambin una tecnologa que permea cada vez msaspectos del uso profesional del cmputo, y comprenderlo ayudar allector a elegir las herramientas especficas a emplear.

  • 16 PRESENTACIN

    Pero hablar de la virtualizacin como un todo ignorara aspectos funda-mentales de la riqueza que presenta este campo. Al igual que con losconceptos presentados a lo largo del libro, la virtualizacin es presenta-da a partir de su perspectiva histrica, y detallando hacia las distintasmodalidades que se han desarrollado con el paso del tiempo.

    C. El medio fsico y el almacenamiento. En el captulo 7 se presenta cmo seconcretiza la abstraccin de archivos y directorios para plasmarlo en ungran arreglo lineal de datos, en una entidad an abstracta a la cual se si-gue haciendo referencia con el nombre genrico de disco. Este apndice seocupa de los detalles fsicos del acomodo de la informacin en su medio.

    Pero un disco va mucho ms all de un dispositivo que simplemente vuel-ca dicho arreglo a un medio persistente. En primer trmino, los discosmagnticos rotativos (el medio dominante de almacenamiento) presentanpeculiaridades que los sistemas operativos tuvieron que saber resolver.El desarrollo de la tecnologa, sin embargo, fue arrebatando estas reas delmbito del sistema operativo, entregndolas a la optimizacin realizadadentro del hardware controlador.

    Por otro lado, la tecnologa de almacenamiento en estado slido ha llega-do a niveles de madurez que en determinados mercados ya la colocanclaramente por encima de los discos magnticos. Esto implica cambiosimportantes para el modo en que el sistema operativo debe estructurar ymodificar la informacin.

    Por ltimo, un volumen ya no necesariamente se refiere a un nico mediofsico. Este apndice aborda tanto a RAID, el primer mecanismo que sepopulariz para agregar varias unidades para mejorar, tanto la capacidadmxima y la confiabilidad de un volumen, como al manejo avanzado devolmenes, en que el sistema operativo incorpora la lgica de RAID conla del manejo de sistemas de archivos para lograr mucho mayor flexibili-dad.

    Licenciamiento

    Este libro fue desarrollado como parte del Proyecto LATIn (EuropeAid2011), que busca la creacin de libros de texto libres para nivel universitario,y enfocado a Latinoamrica.

    Cualquier parte de este libro puede ser reproducido y utilizado para todofin, bajo los trminos de la licencia Creative Commons-Atribucin-CompartirIgual(CC-BY-SA) versin 4.0 (Creative Commons 2013).

    Este modelo de licenciamiento se presenta y explica en la seccin A.2.1.

  • Captulo 1

    Punto de partida

    1.1. Qu es un sistema operativo?

    El sistema operativo es el principal programa que se ejecuta en toda compu-tadora de propsito general.

    Los hay de todo tipo, desde muy simples hasta terriblemente complejos, yentre ms casos de uso hay para el cmputo en la vida diaria, ms variedadhabr en ellos.

    A lo largo del presente texto, no se hace referencia al sistema operativo co-mo lo ve o usa el usuario final, o como lo vende la mercadotecnia el ambientegrfico, los programas que se ejecutan en ste, los lenguajes de programacinen los cuales estn desarrollados y en que ms fcilmente se puede desarrollarpara ellos, e incluso el conjunto bsico de funciones que las bibliotecas baseofrecen son principalmente clientes del sistema operativo se ejecutan sobrel, y ofrecen sus interfaces a los usuarios (incluidos, claro, los desarrolladores).La diferencia en el uso son slo cuando mucho consecuencias del diseo deun sistema operativo. Ms an, con el mismo sistema operativo como pue-den constatarlo comparando dos distribuciones de Linux, o incluso la formade trabajo de dos usuarios en la misma computadora es posible tener entornosoperativos completamente dismiles.

    1.1.1. Por qu estudiar los sistemas operativos?

    La importancia de estudiar este tema radica no slo en comprender los me-canismos que emplean los sistemas operativos para cumplir sus tareas sinoen entenderlos para evitar los errores ms comunes al programar, que puedenresultar desde un rendimiento deficiente hasta prdida de informacin.

    Como desarrolladores, comprender el funcionamiento bsico de los siste-mas operativos y las principales alternativas que ofrecen en muchos de suspuntos, o saber disear algoritmos y procesos que se ajusten mejor al sistema

    17

  • 18 CAPTULO 1. PUNTO DE PARTIDA

    operativo en que vayan a ejecutarse, puede resultar en una diferencia cualita-tiva decisiva en el producto final.

    Parte de las tareas diarias de los administradores de sistemas incluye en-frentarse a situaciones de bajo rendimiento, de conflictos entre aplicaciones,demoras en la ejecucin, y otras similares. Para ello, resulta fundamental com-prender lo que ocurre tras bambalinas. Los sistemas de archivos resultan unrea de especial inters para administradores de sistemas: cmo comparar lasvirtudes y desventajas de tantos sistemas existentes, por qu puede resultarconveniente mezclar distintos sistemas en el mismo servidor, cmo evitar lacorrupcin o prdida de informacin? Lo que es ms, cmo recuperar infor-macin de un disco daado?

    En el rea de la seguridad informtica, la relacin resulta obvia. Desde elpunto de vista del atacante, si le interesa localizar vulnerabilidades que permi-tan elevar su nivel de privilegios, cmo podra lograrlo sin comprender cmose engranan los diversos componentes de un sistema? La cantidad de tareasque debe cubrir un sistema operativo es tremenda, y se vern ejemplos de si-tios donde dicho atacante puede enfocar sus energas. Del mismo modo, paraquien busca defender un sistema (o una red), resulta fundamental comprendercules son los vectores de ataque ms comunes y nuevamente la relacin en-tre los componentes involucrados para poder remediar o, mejor an, prevenirdichos ataques.

    Y claro est, puede verse al mundo en general, fuera del entorno del cmpu-to, como una serie de modelos interactuantes. Muchos de los mtodos y algo-ritmos que se abordan en esta obra pueden emplearse fuera del entorno delcmputo; una vez comprendidos los problemas de concurrencia, de compe-tencia por recursos, o de proteccin y separacin que han sido resueltos en elcampo de los sistemas operativos, estas soluciones pueden ser extrapoladas aotros campos.

    El camino por delante es largo, y puede resultar interesante y divertido.

    1.2. Funciones y objetivos del sistema operativo

    El sistema operativo es el nico programa que interacta directamente conel hardware de la computadora. Sus funciones primarias son:

    Abstraccin Los programas no deben tener que preocuparse de los detalles deacceso a hardware, o de la configuracin particular de una computadora.El sistema operativo se encarga de proporcionar una serie de abstraccio-nes para que los programadores puedan enfocarse en resolver las nece-sidades particulares de sus usuarios. Un ejemplo de tales abstraccioneses que la informacin est organizada en archivos y directorios (en uno omuchos dispositivos de almacenamiento).

  • 1.3. EVOLUCIN DE LOS SISTEMAS OPERATIVOS 19

    Administracin de recursos Una sistema de cmputo puede tener a su dis-posicin una gran cantidad de recursos (memoria, espacio de almacena-miento, tiempo de procesamiento, etc.), y los diferentes procesos que seejecuten en l compiten por ellos. Al gestionar toda la asignacin de recur-sos, el sistema operativo puede implementar polticas que los asignen deforma efectiva y acorde a las necesidades establecidas para dicho sistema.

    Aislamiento En un sistema multiusuario y multitarea cada proceso y cadausuario no tendr que preocuparse por otros que estn usando el mis-mo sistema Idealmente, su experiencia ser la misma que si el sistemaestuviera exclusivamente dedicado a su atencin (aunque fuera un siste-ma menos poderoso).

    Para implementar correctamente las funciones de aislamiento hace faltaque el sistema operativo utilice hardware especfico para dicha protec-cin.

    1.3. Evolucin de los sistemas operativos

    No se puede comenzar a abordar el tema de los sistemas operativos sin revi-sar brevemente su desarrollo histrico. Esto no slo permitir comprender porqu fueron apareciendo determinadas caractersticas y patrones de diseo quese siguen empleando dcadas ms tarde, sino (como resulta particularmentebien ejemplificado en el discurso de recepcin del premio Turing de FernandoCorbat, Acerca de la construccin de sistemas que fallarn, (Corbat 2007)), ade-cuar un sistema a un entorno cambiante, por mejor diseado que ste estuvie-ra, lleva casi inevitablemente a abrir espacios de comportamiento no previstoel espacio ms propicio para que florezcan los fallos. Conocer los factoresque motivaron a los distintos desarrollos puede ayudar a prever y prevenirproblemas.

    1.3.1. Proceso por lotes (batch processing)

    Los antecedentes a lo que hoy se conoce como sistema operativo puedenencontrarse en la automatizacin inicial del procesamiento de diferentes pro-gramas, surgida en los primeros centros de cmputo: cuando en los aos cin-cuenta aparecieron los dispositivos perforadores/lectores de tarjetas de papel,el tiempo que una computadora estaba improductiva esperando a que estu-viera lista una tarea (como se designaba a una ejecucin de cada determinadoprograma) para poder ejecutarla disminuy fuertemente ya que los programa-dores entregaban su lote de tarjetas perforadas (en ingls, batches) a los ope-radores, quienes las alimentaban a los dispositivos lectores, que lo cargabanen memoria en un tiempo razonable, iniciaban y monitoreaban la ejecucin, yproducan los resultados.

  • 20 CAPTULO 1. PUNTO DE PARTIDA

    En esta primer poca en que las computadoras se especializaban en tareasde clculo intensivo y los dispositivos que interactuaban con medios externoseran prcticamente desconocidos, el papel del sistema monitor o de control erabsicamente asistir al operador en la carga de los programas y las bibliotecasrequeridas, la notificacin de resultados y la contabilidad de recursos emplea-dos para su cobro.

    Los sistemas monitores se fueron sofisticando al implementar proteccionesque evitaran la corrupcin de otros trabajos (por ejemplo, lanzar errneamen-te la instruccin leer siguiente tarjeta causara que el siguiente trabajo encoladoperdiera sus primeros caracteres, corrompindolo e impidiendo su ejecucin),o que entraran en un ciclo infinito, estableciendo alarmas (timers) que interrum-piran la ejecucin de un proceso si ste duraba ms all del tiempo estipulado.Estos monitores implicaban la modificacin del hardware para considerar di-chas caractersticas de seguridad y ah se puede hablar ya de la caractersticabsica de gestin de recursos que identifica a los sistemas operativos.

    Cabe aadir que el tiempo de carga y puesta a punto de una tarea seguarepresentando una parte importante del tiempo que la computadora dedicabaal procesamiento: un lector de cintas rpido procesaba del orden de cientos decaracteres por minuto, y a pesar de la lentitud relativa de las computadorasde los aos cincuenta ante los estndares de hoy (se mediran por miles deinstrucciones por segundo, KHz, en vez de miles de millones como se hace hoy,GHz), esperar cinco o diez minutos con el sistema completamente detenidopor la carga de un programa moderadadamente extenso resulta a todas lucesun desperdicio.

    1.3.2. Sistemas en lotes con dispositivos de carga (spool)

    Una mejora natural a este ltimo punto fue la invencin del spool: un me-canismo de entrada/salida que permita que una computadora de propsitoespecfico, mucho ms econmica y limitada, leyera las tarjetas y las fuera con-virtiendo a cinta magntica, un medio mucho ms rpido, tenindola lista paraque la computadora central la cargara cuando terminara con el trabajo ante-rior. Del mismo modo, la computadora central guardarba sus resultados encinta para que equipos especializados la leyeran e imprimieran para el usuariosolicitante.

    La palabra spool (bobina) se tom como acrnimo inverso hacia SimultaneousPeripherial Operations On-Line, operacin simultnea de perifricos en lnea.

    1.3.3. Sistemas multiprogramados

    A lo largo de su ejecucin, un programa normalmente pasa por etapas conmuy distintas caractersticas: durante un ciclo fuertemente dedicado al clculonumrico, el sistema opera limitado por el CPU (CPU-bound), mientras que al leer

  • 1.3. EVOLUCIN DE LOS SISTEMAS OPERATIVOS 21

    o escribir resultados a medios externos (incluso mediante spools) el lmite es im-puesto por los dispositivos, esto es, opera limitado por entrada-salida (I-O bound).La programacin multitareas o los sistemas multiprogramados buscaban ma-ximizar el tiempo de uso efectivo del procesador ejecutando varios procesos almismo tiempo.

    El hardware requerido cambi fuertemente. Si bien se esperaba que cadausuario fuera responsable con el uso de recursos, result necesario que apare-ciera la infraestructura de proteccin de recursos: un proceso no debe sobrees-cribir el espacio de memoria de otro (ni el cdigo, ni los datos), mucho menosel espacio del monitor. Esta proteccin se encuentra en la Unidad de Manejo deMemoria (MMU), presente en todas las computadoras de uso genrico desde losaos noventa.

    Ciertos dispositivos requieren bloqueo para ofrecer acceso exclusivo/ni-co: cintas e impresoras, por ejemplo, son de acceso estrictamente secuencial, ysi dos usuarios intentaran usarlas al mismo tiempo, el resultado para ambos secorrompera. Para estos dispositivos, el sistema debe implementar otros spoolsy mecanismos de bloqueo.

    1.3.4. Sistemas de tiempo compartido

    El modo de interactuar con las computadoras se modific drsticamentedurante los aos sesenta, al extenderse la multitarea para convertirse en siste-mas interactivos y multiusuarios, en buena medida diferenciados de los anterio-res por la aparicin de las terminales (primero teletipos seriales, posteriormenteequipos con una pantalla completa como se conocen hasta hoy).

    En primer trmino, la tarea de programacin y depuracin del cdigo sesimplific fuertemente al poder hacer el programador directamente cambios ysometer el programa a la ejecucin inmediata. En segundo trmino, la compu-tadora nunca ms estara simplemente esperando a que est listo un progama: mien-tras un programador editaba o compilaba su programa, la computadora seguacalculando lo que otros procesos requirieran.

    Un cambio fundamental entre el modelo de multiprogramacin y de tiempocompartido es el tipo de control sobre la multitarea (se ver en detalle en elcaptulo 3).

    Multitarea cooperativa o no apropiativa (Cooperative multitasking). La imple-mentaron los sistemas multiprogramados: cada proceso tena control delCPU hasta que ste haca una llamada al sistema (o indicara su disposicina cooperar por medio de la llamada yield: ceder el paso).

    Un clculo largo no era interrumpido por el sistema operativo, en conse-cuencia un error de programador poda congelar la computadora com-pleta.

    Multitarea preventiva o apropiativa (Preemptive multitasking). En los sistemas

  • 22 CAPTULO 1. PUNTO DE PARTIDA

    de tiempo compartido, el reloj del sistema interrumpe peridicamente alos diversos procesos, transfiriendo forzosamente el control nuevamente alsistema operativo. ste puede entonces elegir otro proceso para continuarla ejecucin.

    Adems, fueron naciendo de forma natural y paulatina las abstraccionesque se conocen hoy en da, como los conceptos de archivos y directorios, y el c-digo necesario para emplearlos iba siendo enviado a las bibliotecas de sistema y,cada vez ms (por su centralidad) hacia el ncleo mismo del, ahora s, sistemaoperativo.

    Un cambio importante entre los sistemas multiprogramados y de tiempocompartido es que la velocidad del cambio entre una tarea y otra es muchoms rpido: si bien en un sistema multiprogramado un cambio de contexto podaproducirse slo cuando la tarea cambiaba de un modo de ejecucin a otro, enun sistema interactivo, para dar la ilusin de uso exclusivo de la computadora,el hardware emita peridicamente al sistema operativo interrupciones (seales)que le indicaban que cambie el proceso activo (como ahora se le denomina a unainstancia de un programa en ejecucin).

    Diferentes tipos de proceso pueden tener distinto nivel de importancia yasea porque son ms relevantes para el funcionamiento de la computadora mis-ma (procesos de sistema), porque tienen mayor carga de interactividad (porla experiencia del usuario) o por diversas categoras de usuarios (sistemas concontabilidad por tipo de atencin). Esto requiere la implementacin de diver-sas prioridades para cada uno de stos.

    1.4. Y del lado de las computadoras personales

    Si bien la discusin hasta este momento asume una computadora centralcon operadores dedicados y mltiples usuarios, en la dcada de los setentacomenzaron a aparecer las computadoras personales, sistemas en un inicio verda-deramente reducidos en prestaciones y a un nivel de precios que los ponan alalcance, primero, de los aficionados entusiastas y, posteriormente, de cualquie-ra.

    1.4.1. Primeros sistemas para entusiastas

    Las primeras computadoras personales eran distribuidas sin sistemas ope-rativos o lenguajes de programacin; la interfaz primaria para programar-las era mediante llaves (switches), y para recibir sus resultados, se utilizabanbancos de LEDs. Claro est, esto requera conocimientos especializados, y lascomputadoras personales eran an vistas slo como juguetes caros.

  • 1.4. Y DEL LADO DE LAS COMPUTADORAS PERSONALES 23

    Figura 1.1: La microcomputadora Altair 8800, primera computadora personal con dis-tribucin masiva, a la venta a partir de 1975 (imagen de la Wikipedia: Altair 8800).

    1.4.2. La revolucin de los 8 bits

    La verdadera revolucin apareci cuando poco tiempo ms tarde, comen-zaron a venderse computadoras personales con salida de video (tpicamentepor medio de una televisin) y entrada por un teclado. Estas computadoraspopularizaron el lenguaje BASIC, diseado para usuarios novatos en los sesen-ta, y para permitir a los usuarios gestionar sus recursos (unidades de cinta,pantalla posicionable, unidades de disco, impresoras, modem, etc.) llevabanun software mnimo de sistema nuevamente, un proto-sistema operativo.

    Figura 1.2: La Commodore Pet 2001, en el mercado desde 1977, una de las primerascon intrprete de BASIC (imagen de la Wikipedia: Commodore PET).

    1.4.3. La computadora para fines serios: la familia PC

    Al aparecer las computadoras personales serias, orientadas a la oficinams que al hobby, a principios de los ochenta (particularmente representadaspor la IBM PC, 1981), sus sistemas operativos se comenzaron a diferenciar de losequipos previos al separar el entorno de desarrollo en algn lenguaje de progra-macin del entorno de ejecucin. El papel principal del sistema operativo ante elusuario era administrar los archivos de las diversas aplicaciones mediante una

  • 24 CAPTULO 1. PUNTO DE PARTIDA

    sencilla interfaz de lnea de comando, y lanzar las aplicaciones que el usuarioseleccionaba.

    La PC de IBM fue la primer arquitectura de computadoras personales endesarrollar una amplia familia de clones, computadoras compatibles diseadaspara trabajar con el mismo sistema operativo, y que eventualmente capturaroncasi 100% del mercado. Prcticamente todas las computadoras de escritorio yporttiles en el mercado hoy derivan de la arquitectura de la IBM PC.

    Figura 1.3: La computadora IBM PC modelo 5150 (1981), iniciadora de la arquitec-tura predominantemente en uso hasta el da de hoy (imagen de la Wikipedia: IBMPersonal Computer).

    Ante las aplicaciones, el sistema operativo (PC-DOS, en las versiones dis-tribuidas directamente por IBM, o el que se populariz ms, MS-DOS, en losclones) ofreca la ya conocida serie de interfaces y abstracciones para adminis-trar los archivos y la entrada/salida a travs de sus puertos. Cabe destacar que,particularmente en sus primeros aos, muchos programas se ejecutaban direc-tamente sobre el hardware, arrancando desde el BIOS y sin emplear el sistemaoperativo.

    1.4.4. El impacto del entorno grfico (WIMP)

    Hacia mediados de los ochenta comenzaron a aparecer computadoras coninterfaces usuario grficas (Graphical User Interfaces, textscguis) basadas en elparadigma WIMP (Windows, Icons, Menus, Pointer; Ventanas, Iconos, Menes,Apuntador), que permitan la interaccin con varios programas al mismo tiem-po. Esto no necesariamente significa que sean sistemas multitarea: por ejemplo,la primer interfaz de MacOS permita ver varias ventanas abiertas simultnea-mente, pero slo el proceso activo se ejecutaba.

    Esto comenz, sin embargo, a plantear inevitablemente las necesidades deconcurrencia a los programadores. Los programas ya no tenan acceso directo

  • 1.4. Y DEL LADO DE LAS COMPUTADORAS PERSONALES 25

    Figura 1.4: Apple Macintosh (1984), populariz la interfaz usuario grfica (GUI)(imagen de la Wikipedia: Macintosh).

    a la pantalla para manipular a su antojo, sino que a una abstraccin (la ven-tana) que poda variar sus medidas, y que requera que toda la salida fueraestrictamente mediante las llamadas a bibliotecas de primitivas grficas quecomenzaron a verse como parte integral del sistema operativo.

    Adems, los problemas de proteccin y separacin entre procesos concu-rrentes comenzaron a hacerse evidentes: los programadores tenan ahora queprogramar con la conciencia de que compartiran recursos, con el limitante(que no tenan en las mquinas profesionales) de no contar con hardware es-pecializado para esta proteccin. Los procesadores en uso comercial en losochenta no manejaban anillos o niveles de ejecucin ni unidad de administracinde memoria (MMU), por lo que un programa fallado o daino poda corromperla operacin completa del equipo. Y si bien los entornos que ms xito tuvie-ron (Apple MacOS y Microsoft Windows) no implementaban multitarea real, shubo desde el principio sistemas como la Commodore Amiga o la Atari ST quehacan un multitasking apropiativo verdadero.

    Naturalmente, ante el uso comn de un entorno de ventanas, los progra-mas que se ejecutaban sin requerir de la carga del sistema operativo cayeronlentamente en el olvido.

    1.4.5. Convergencia de los dos grandes mercados

    Conforme fueron apareciendo los CPU con caractersticas suficientes en elmercado para ofrecer la proteccin y aislamiento necesario (particularmente,

  • 26 CAPTULO 1. PUNTO DE PARTIDA

    Figura 1.5: Commodore Amiga 500 (1987), la computadora ms popular de la fa-milia Amiga, con amplias capacidades multimedia y multitarea apropiativa; unaverdadera maravilla para su momento (imagen de la Wikipedia: Amiga).

    Intel 80386 y Motorola 68030), la brecha de funcionalidad entre las computado-ras personales y las estaciones de trabajo y mainframes se fue cerrando.

    Hacia principios de los 1990, la mayor parte de las computadoras de ar-quitecturas alternativas fueron cediendo a las presiones del mercado, y haciamediados de la dcada slo quedaban dos arquitecturas principales: la deriva-da de IBM y la derivada de la Apple Macintosh.

    Los sistemas operativos primarios para ambas plataformas fueron respon-diendo a las nuevas caractersticas del hardware: en las IBM, la presencia deMicrosoft Windows (originalmente un entorno operativo desde su primera edi-cin en 1985, evolucionando hacia un sistema operativo completo ejecutandosobre una base de MS-DOS en 1995) se fue haciendo prevalente hasta ser lanorma. Windows pas de ser un sistema meramente de aplicaciones propias yque operaba nicamente por reemplazo de aplicacin activa a ser un sistemade multitarea cooperativa y, finalmente un sistema que requera proteccin enhardware (80386) e implementaba multitarea apropiativa.

    A partir del 2003, el ncleo de Windows en ms amplio uso fue reempla-zado por un desarrollo hecho de inicio como un sistema operativo completoy ya no como un programa bajo MS-DOS: el ncleo de nueva tecnologa (Win-dows NT), que, sin romper compatibilidad con los APIs histricos de Windows,ofreci mucho mayor estabilidad.

    Por el lado de Apple, la evolucin fue muy en paralelo: ante un sistemaya agotado y obsoleto, el MacOS 9, en 2001 anunci una nueva versin de susistema operativo que fue en realidad un relanzamiento completo: MacOS X esun sistema basado en un ncleo Unix BSD, sobre el microkernel Mach.

    Y otro importante jugador que entr en escena durante los aos noventafue el software libre, por medio de varias implementaciones distintas de siste-mas tipo Unix, principalmente, Linux y los *BSD (FreeBSD, NetBSD, OpenBSD).Estos sistemas implementaron, colaborativamente y bajo un esquema de desa-

  • 1.5. DISPOSITIVOS MVILES 27

    rrollo geogrficamente distribuido, software compatible tanto con las PC co-mo con el que se ejecutaba en las estaciones de trabajo a gran escala, con altaconfiabilidad, y cerrando por fin la divergencia del rbol del desarrollo de lacomputacin en fierros grandes y fierros chicos.

    Al da de hoy, la arquitectura derivada de Intel (y la PC) es el claro ganadorde este proceso de 35 aos, habiendo conquistado casi la totalidad de los casosde uso, incluso las mquinas Apple. Hoy en da, la arquitectura Intel ejecutadesde subporttiles hasta supercomputadoras y centros de datos; el sistemaoperativo especfico vara segn el uso, yendo mayoritariamente hacia Win-dows, con los diferentes Unixes concentrados en los equipos servidores.

    En el frente de los dispositivos embebidos (las computadoras ms pequeas,desde microcontroladores hasta telfonos y tabletas), la norma es la arquitec-tura ARM, tambin bajo versiones especficas de sistemas operativos Unix yWindows (en ese orden).

    1.5. Dispositivos mviles

    En los ltimos aos, buena parte del desarrollo en el mundo del cmputo seha volcado hacia el modelo de cmputo representado, genricamente, por losdispositivos mviles. Dado el inters que estas plataformas han despertado, setorna necesario abordar el tema, aunque sea ms para anotar similitudes quediferencias con el resto de los equipos de cmputo. Para hacer esto, sin embar-go, es necesario primero abordar la definicin: en qu consiste un dispositivomvil, cules son los lmites de su definicin, qu fronteras se le pueden definir?

    Es difcil encontrar lmites claros y duros para lo que este concepto abarca;en el transcurso de esta seccin se abordan las caractersticas de las compu-tadoras diseadas no slo en el nivel del hardware, sino de interfaz usuario,para que su propietario las cargue consigo y las convierta en un asistente parasus actividades cotidianas, para la organizacin de su vida diaria. Partiendo deesta definicin se tiene que un telfono inteligente ser tratado como dispositivomvil, pero una computadora porttil no, puesto que su interfaz es la mismade una computadora estndar.

    Claro, esta definicin indudablemente rpida e imperfecta deja una granrea gris, y permite cierta ambigedad. Por ejemplo, las ms recientes versio-nes de algunos entornos de usuario (notablemente, la interfaz primaria de Win-dows 8, o los entornos GNOME y Unity de Linux) buscan unificar la experiencia,incorporando conceptos del multitouch a los escritorios y acercando los casosde uso. Tmense, pues, estos lineamientos como meramente indicativos.

    1.5.1. Resea histrica

    Tener una plataforma de cmputo mvil ha sido uno de los anhelos msreiterados del cmputo; ya en 1975, antes de la aparicin de todos los sistemas

  • 28 CAPTULO 1. PUNTO DE PARTIDA

    reseados en la seccin 1.4 (a excepcin de la Altair 8800) IBM lanz al mercadosu primer computadora porttil: La IBM 5100, de 25 Kg de peso y con una pan-talla de 5 pulgadas (equivalente a un telfono celular grande del da de hoy).Esta computadora tuvo un xito muy limitado en buena medida por su pre-cio: 9 000 dlares en su configuracin ms bsica la dejaban claramente fueradel alcance del mercado de los entusiastas de la poca, y la incomodidad desu pequea pantalla llev al entorno corporativo a preferir seguir usando lasminicomputadoras con terminales estndar para la poca.

    Este mercado tambin vio una importante convergencia, en este caso desdeabajo: la miniautrizacin vivida en la dcada de los setenta fue, a fin de cuentas,iniciada por el CPU Intel 4004, diseado expresamente para las calculadoras Bu-sicom. Durante esa poca nacieron las calculadoras porttiles. stas comenza-ron implementando nicamente las operaciones aritmticas bsicas, pero conel paso del tiempo aparecieron las calculadoras cientficas, incluyendo operacio-nes trigonomtricas. En 1974, Hewlett-Packard lanz al mercado la HP-65 laprimer calculadora de bolsillo plenamente programable.

    Para 1984, ya ante la franca popularizacin de las aplicaciones ofimticas,la empresa britnica Psion lanz la Psion Organiser, que se anunciaba como laprimer computadora de bolsillo prctica del mundo: era vendida con reloj, cal-culadora, una base de datos sencilla, y cartuchos de expansin con aplicacionesejemplo (ciencia, matemticas y finanzas), adems de un entorno de programa-cin para que el usuario desarrollara sus propias aplicaciones.

    Figura 1.6: Psion Organiser, anunciada como la primer computadora de bolsillo prcticadel mundo en 1984. En la imagen, un dispositivo de su segunda generacin (imagende la Wikipedia: Psion Organiser).

    El hardware del Organiser original era, claro est, muy limitado. Con slo 4KB de ROM y 2 KB de memoria no inclua un sistema operativo, y el lenguaje deprogramacin disponible al usuario era meramente un ensamblador. No tenerun sistema operativo significa que, en vez de hacer las llamadas al sistema nece-sarias para realizar transferencias (como se ver en la secc. 2.7 y en el cap. 7), elprogramador tena que avanzar y transferir byte por byte. Dos aos ms tarde,

  • 1.5. DISPOSITIVOS MVILES 29

    la segunda generacin del Organiser sali al mercado con un sistema operativomonotarea y mucho mayor espacio de almacenamiento. Varias generacionesms tarde, este sistema operativo es el que hacia 1998 se convirti en Symbian,que fuera el dominante del mercado de celulares durante la mayor parte de ladcada del 2000.

    Figura 1.7: Sharp ZQ-770, diseo bajo uno de los formatos de PDA (Asistente Per-sonal Digital) ms popularizados de la dcada de los noventa (imagen de la Wiki-pedia: Sharp Wizard).

    Siguiendo los pasos del Organiser, muchas otras empresas fueron creandopequeos equipos con aproximadamente la misma funcionalidad bsica (lis-ta de contactos, notas y agenda) e interfaz usuario, definiendo el trmino deAsistente Digital Personal (Personal Digital Assistant, PDA). Hubo diferentes hitosdurante la dcada de los noventa, aunque destaca particularmente la platafor-ma Palm. Esta fue la primera plataforma con xito al incorporar una interfazusuario tctil con escritura basada en reconocimiento de la letra (que era traza-da por medio de una pluma especial, o stylus, en la pantalla).

    El siguiente paso natural fue unir la funcionalidad del cada vez ms popu-lar telfono celular con la del PDA. Ya desde 1996 se comercializaron equiposofreciendo la funcionalidad integrada, y el trmino smartphone (telfono inteli-gente) se emple por primera vez en 1998. Como se ver en la seccin 1.5.2, elreto de mantener la sealizacin estable signific que muchos de estos telfo-nos resultaban en una suerte de Frankenstein, con dos personalidades claramentediferenciadas.

    En el ao 2007, Apple present su hoy icnico iPhone. Desde un punto devista tcnico, la principal innovacin de este equipo fue una nueva interfazgrfica denominada multitouch (multitoque), que permite al usuario interactuardirectamente con sus dedos (por medio de toques combinados o gestos y ya norequiriendo de un stylus) e incluso de la inclinacin del dispositivo. Y si bien eltelfono mismo no represent un salto en las capacidades del hardware, Applelogr disear una interfaz innovadora como ya lo haba hecho en 1984 con laMacintosh que se convirti rpidamente en estndar para todo un mercado.

    Hasta este punto, prcticamente la totalidad de dispositivos en el segmentoreconocido como mvil eran reconocibles por su tamao: casi todos los disposi-

  • 30 CAPTULO 1. PUNTO DE PARTIDA

    Figura 1.8: El iPhone, de Apple, introdujo la primera interfaz usuario multitouch ydeton la popularidad de los telfonos inteligentes y con ello, del cmputo mvil(imagen de la Wikipedia: iPhone 2).

    tivos mencionados en esta seccin estn hechos para caber en el bolsillo de unacamisa. Sin embargo, a este segmento deben agregarse las tabletas. La historiade su desarrollo y adopcin se parecen a la aqu presentada respecto a la inter-faz de los telfonos inteligentes (e incluso, llevada ms al extremo): Es posibleencontrar antecedentes desde 1915,1 numerosas descripciones literarias en laciencia ficcin a lo largo del siglo XX, y varias implementaciones funcionalesdesde inicios de la dcada de los noventa. Sin embargo, las tabletas parecieronpor largos aos estar destinadas a nunca conquistar al mercado, hasta el ao2010, en que Apple lanz un equipo con la misma interfaz de su iPhone perodel tamao de una computadora porttil estndar.

    Todos los sistemas disponibles hoy en da, claro est, tienen muchsima ma-yor complejidad que la del Psion Organizer, y hay varias familias de sistemasoperativos de uso frecuente; se describirn a continuacin, y muy a grandesrasgos, slo algunos de los sistemas en uso. En la presente seccin se enume-ran nicamente con su informacin general, y en la siguiente se mencionanalgunas de sus caractersticas tcnicas.

    iOS El sistema operativo de Apple, y diseado exclusivamente para el hard-ware producido por dicha compaa. Fue el primero en implementar lainterfaz usuario multitouch y, en buena medida, se puede ver como elresponsable de la explosin y universalizacin en el uso de dispositivosmviles. Al igual que el sistema operativo que emplean para sus equiposde escritorio, MacOS X, iOS est basado en el ncleo Darwin, derivado deFreeBSD, un sistema libre tipo Unix.

    Android Diseado por la compaa Google, basa la mayor parte de su opera-cin en software libre (un ncleo Linux, mquina virtual Java, y muchasde las bibliotecas de sistema comunes en sistemas Linux), agregando una

    1El registro de patente 1 117 184 de los Estados Unidos (Goldberg 1914) se refiere a una mquinapara reconocer los caracteres escritos en una hoja.

  • 1.5. DISPOSITIVOS MVILES 31

    capa de servicios propietarios. La estrategia de Google ha sido inversaa la de Apple: en vez de fabricar sus propios dispositivos, otorga licen-cias para el uso de este sistema operativo a prcticamente todos los fa-bricantes de hardware, con lo que la amplia mayora de los modelos detelfonos inteligentes y tabletas corren sobre Android.

    Windows Phone Microsoft ofrece una versin de su sistema operativo, com-patible en API con el Windows de escritorio, pero compilado para proce-sador ARM. Este sistema operativo no ha logrado conquistar gran popu-laridad, en claro contraste con su dominacin en el cmputo tradicionalde escritorio; el principal fabricante que vende equipos con Windows Pho-ne es Nokia (que, despus de haber sido la compaa lder en telefona,fue adquirida por Microsoft mismo).

    Symbian Si bien este sistema operativo ya est declarado como oficialmentemuerto, su efecto en el desarrollo temprano del segmento fue fundamen-tal, y no puede ser ignorado. Symbian fue la plataforma principal paraNokia en su poca de gloria, as como para muchos otros fabricantes.Casi todas las empresas que antiguamente operaban con Symbian hanmudado su oferta a sistemas Android.

    Firefox OS La fundacin Mozilla, responsable del navegador Firefox (y here-dera del histrico Netscape) est intentando entrar al mercado mbil coneste sistema, basado (al igual que Android) en el ncleo de Linux, peroorientado a ofrecer una interfaz de programacin siguiendo completa-mente los estndares y lenguajes para uso en la Web. Esta plataformahace una apuesta mucho ms agresiva que las dems a un esquema deconexin permanente a la red de datos.

    1.5.2. Caractersticas diferenciadoras

    Resultar claro, a partir de los sistemas recin presentados, as como la granmayora de los sistemas operativos empleados para dispositivos mviles, quela diferenciacin entre el segmento mvil y el cmputo tradicional no est en elsistema operativo mismo, sino en capas superiores. Sin embargo, la diferenciava mucho ms all de un cambio en la interfaz usuario; las caractersticas deestos dispositivos indudablemente determinan cuestiones de fondo. A conti-nuacin, se exponen algunas de las caractersticas ms notorias.

    Almacenamiento en estado slido

    La primer caracterstica notoria al manipular un telfono o una tableta esque ya no se hace con la nocin de fragilidad que siempre acompa al cmpu-to: los discos duros son dispositivos de altsima precisin mecnica, y un pe-queo golpe puede significar su avera absoluta y definitiva. Los dispositivos

  • 32 CAPTULO 1. PUNTO DE PARTIDA

    mviles operan con almacenamiento en estado slido, esto es, en componenteselectrnicos sin partes mviles. La evolucin y las caractersticas del almacena-miento en estado slido sern cubiertas en la seccin C.1.2.

    Al estar principalmente orientados a este medio de almacenamiento, en l-neas generales, los sistemas operativos mviles no emplean memoria virtual,tema que ser cubierto en la seccin 5.5. No pueden, por tanto, mantener enejecucin programas que excedan del espacio real de memoria con que cuenteel sistema y esto conlleva importantes consideraciones de diseo.

    Multitarea, pero monocontexto

    La forma de uso de las computadoras dio un salto cualitativo, tanto en elmundo corporativo hacia la dcada de los sesenta como en el personal haciainicios de los noventa, con la introduccin de sistemas con capacidades mul-titarea (vase la seccin 1.3.3). Los usuarios se han acostumbrado a que susequipos hagan muchas cosas (aparentemente) al mismo tiempo, y es ya una ex-pectativa comn el poder tener abierta una cantidad arbitraria, a veces inclusoexcesiva, de programas en ejecucin, al grado de que prcticamente los usua-rios promedio del cmputo reconocen perfectamente la hiperpaginacin (queser descrita en la seccin 5.5.5) por sus sntomas.

    La popularizacin del cmputo mvil llev, sin embargo, a una fuerte re-duccin en las expectativas de multitarea. Esto principalmente por dos razones;la primera es que, al carecer los dispositivos mviles de memoria virtual, la me-moria disponible se vuelve nuevamente un bien escaso, y el sistema operativose ve obligado a limitar al nmero de procesos interactivos en ejecucin.2

    Esta distincin tambin puede explicarse por el modelo de uso de estosdispositivos: comparadas con las pantallas de equipos de escritorio, donde laspantallas ms frecuentemente utilizadas son de 17 pulgadas,3 los telfonos vanen general de las 3.5 a las 5 pulgadas. Una interfaz usuario diseada para untipo de pantalla no puede resultar satisfactoria en el otro.

    Las interfaces usuario empleadas por los sistemas mviles abandonan elmodelo de interaccin WIMP presentado en la seccin 1.4.4, as como la metforadel escritorio, para volver a la de un slo programa visible en todo momento.

    Al buscar satisfacer las necesidades de un mercado mucho ms amplio ymucho menos versado en los detalles del cmputo, todas estas interfaces con-llevan importante simplificaciones. Una de las ms notorias es que los usuarios

    2Formalmente, no es el sistema operativo mismo, sino que el software de sistema, que monitoreael uso y rendimiento, y toma decisiones a ms alto nivel. En todas las plataformas mencionadas,hay una fuerte distincin entre los programas que operan como servicios y se mantienen activos enel fondo y aquellos que operan en primer plano, con interfaz grfica e interaccin directa con elusuario.

    3La medida ms habitual para las pantallas indica las pulgadas que miden en diagonal. Trasmuchos aos en que la relacin de dimensin vertical contra horizontal o aspecto de las pantallasfuera de 3:4, este formato se ha ido reemplazando por el de 9:16, por lo que la medida en pulgadaspor s sola ahora lleva una carga de ambigedad.

  • 1.5. DISPOSITIVOS MVILES 33

    ya no solicitan la finalizacin de un programa: los programas van siendo lan-zados (y utilizados uno por uno), y si caben en memoria son mantenidos abiertospara evitar las demoras de volver a inicializar. El sistema define polticas pormedio de las cuales estos programas sern finalizados y evacuados de la memo-ria al llegar a determinados umbrales.

    Consumo elctrico

    Una de las reas en que ms visible ha sido el desarrollo cualitativo durantelos ltimos aos es la optimizacin del consumo elctrico de los equipos decmputo. Y si bien no puede negarse la importancia del ahorro elctrico en lasoficinas y centros de datos, donde el trabajo diario cada vez depende ms delcmputo, tampoco puede ignorarse la importancia de popularizacin de lascomputadoras porttiles. Y agregando algunos patrones particulares a estosdispositivos, la popularizacin del cmputo mvil ha llevado a una verdaderarevolucin en este aspecto.

    El ahorro del consumo elctrico tiene dos principales vertientes: por un la-do, el desarrollo de hardware ms eficiente energticamente, con independen-cia del modo en que opere y, por el otro, la creacin de mecanismos por mediode los cuales un equipo de cmputo pueda detectar cambios en el patrn deactividad (o el operador pueda indicarle un cambio en la respuesta esperada),y ste reaccione reduciendo su demanda (lo cual tpicamente se obtiene redu-ciendo la velocidad de ciertos componentes del equipo).

    El primer esquema de ahorro de energa con amplio soporte, tanto por partede hardware de diversos fabricantes, como de prcticamente todos los sistemasoperativos ampliamente utilizado, fue APM (Advanced Power Management, Ges-tin Avanzada de la Energa). Pasado cierto tiempo, fue reemplazado por ACPI(Advanced Configuration and Power Interface, Interfaz Avanzada de Configura-cin y Energa); la principal diferencia entre ambas es que, mientras que bajoAPM los diferentes niveles de energa se implementaban en el firmware de lacomputadora o cada uno de sus dispositivos, en ACPI la responsabilidad recaeen el sistema operativo; esto brinda mucho mayor flexibilidad a la implemen-tacin, a cambio de una mayor complejidad para los desarrolladores.

    Pero la verdadera diferencia en el tema que esta seccin aborda es la fre-cuencia de los cambios de estado: un servidor o computadora de escritoriotiene slo un evento constante (el ajuste de frecuencia del procesador depen-diendo de la carga, potencialmente hasta decenas de veces por segundo); unacomputadora porttil debe adoptar diferentes perfiles dependiendo de si estconectada a la red elctrica u operando por batera, o si tiene la tapa (pantalla)abierta o cerrada. Los usuarios de computadoras porttiles tpicamente buscantrabajar conectados a la red elctrica tanto como sea posible, dado que es voxpopuli que esto mejorar la vida til de su batera. Y si bien estos cambios deentorno se presentan (y guardan una innegable complejidad), su ocurrencia esmuy baja.

  • 34 CAPTULO 1. PUNTO DE PARTIDA

    En el cmputo mvil, los eventos son muchos y muy distintos. En primerlugar, los dispositivos mviles operan bajo una filosofa de siempre encendido:A pesar de que el usuario no est atento a su dispositivo, ste tiene que estarencendido y al pendiente del entorno algunos ejemplos casi obvios:

    En caso de entrar una llamada telefnica, tiene que responder inmediata-mente alertando al usuario. La interfaz usuario del telfono puede pare-cer apagada, pero su lgica (y en particular su sealizacin a las distintasredes a las que est conectado) se mantiene activa.

    El equipo tiene que estar siempre alerta a las condiciones cambiantes dered (tanto telefnica como de datos), midiendo la seal de las antenas ce-lulares ms cercanas; mantenerse asociado a una antena remota requierems energa que a una cercana.

    Dado que estos equipos estn diseados para moverse junto con el usua-rio, convirtindose en un asistente o una extensin para sus actividadesdiarias, optimizan su funcionamiento para operar como norma desde subatera, no conectados a la red elctrica. Valga en este caso la compara-cin: un telfono que brinde menos de un da de operacin autnoma se-ra sin duda evaluado como extremadamente incmodo e imprctico, entanto una computadora porttil se considera muy eficiente si permite laoperacin autnoma por seis horas.

    El ahorro de energa que permite estos patrones de uso no slo se debe alhardware cada vez ms eficiente que emplean los dispositivos mviles, sinoque a una programacin de las aplicaciones en que los desarrolladores explci-tamente buscan patrones eficientes, fcil suspensin, y minimizando la necesi-dad de despertar al hardware.

    Entorno cambiante

    Los centros de datos, las computadoras de escritorio, e incluso las porttilestienen una forma de operacin bastante estable: durante el transcurso de unasesin de trabajo (e incluso durante la vida entera del equipo, en el caso de losservidores) su visin del mundo no est sujeta a mayores cambios. Un usuariopuede mantener por largos periodos su configuracin de consumo energtico. Lasinterfaces y direcciones de red son tpicamente estables, y si hubiera un proble-ma de seal, la reparacin o reubicacin se hara en la infraestructura de red,no en el equipo cliente. El formato de la pantalla, claro est, es tambin estable.

    Uno de los cambios ms difciles de implementar en el software del sistemafue precisamente el de brindar la plasticidad necesaria en estos diferentes as-pectos: el dispositivo mvil debe ser ms enrgico en sus cambios de perfil deenerga, respondiendo a un entorno cambiante. Puede aumentar o disminuirla luminosidad de la pantalla dependiendo de la luminosidad circundante, o

  • 1.6. SEGURIDAD INFORMTICA 35

    desactivar determinada funcionalidad si est ya en niveles crticos de carga.Con respecto a la red, debe poder aprovechar las conexiones fugaces mientrasel usuario se desplaza, iniciando eventos como el de sincronizacin. Y encar-gndose de detener (tan limpiamente como sea posible) los procesos que vandejando de responder. Por ltimo, claro, la interfaz usuario: los dispositivosmviles no tienen una orientacin # nica natural, como s la tienen las compu-tadoras. Las interfaces usuario deben pensarse para que se puedan reconfigurargilmente ante la rotacin de la pantalla.

    El jardn amurallado

    Una consecuencia indirecta (y no tcnica) del nacimiento de las platafor-mas mviles es la popularizacin de un modelo de distribucin de softwareconocido como jardn amurallado o, lo que es lo mismo, una plataforma cerrada.

    Partiendo de que los telfonos inteligentes, en un primer momento, y lastabletas y dispositivos similares posteriormente, buscan satisfacer un mercadomucho mayor al de los entusiastas del cmputo,4 Apple anunci en julio del2008 (un ao despus del lanzamiento del iPhone) su tienda de aplicaciones oapp store. La peculiaridad de sta con relacin al modelo de cmputo que haimperado histricamente es que, si bien cualquier desarrollador puede crearuna aplicacin y enviarla, Apple se reserva el derecho de aprobarla, o elimi-narla en cualquier momento. Esto es, este modelo le permite erigirse en juez,determinando qu puede o no ejecutar un usuario.

    Este mismo modelo fue adoptado por Google para su sistema Android, enun principio bajo el nombre Mercado Android, y desde el 2012 como Google Play.Microsoft hizo lo propio con su Windows Phone Store.

    Este modelo de autorizacin y distribucin de software, sin embargo, rom-pe con lo que Jonathan Zittrain (2008) define como la generatividad de los equi-pos de cmputo y de la red en general. Para ampliar el debate en este entido,el libro de Zittrain se ha vuelto referencia obligada, y est disponible completoen lnea.

    1.6. Seguridad informtica

    No puede perderse de vista la importancia de la seguridad informtica. Pue-de verse el efecto de este concepto en prcticamente todos los componentesque conforman a un sistema operativo. Para no ir ms lejos, las funciones prin-cipales presentadas en la seccin 1.2 cruzan necesariamente por criterios deseguridad. Algunas consideraciones podran ser, por ejemplo:

    4Y tambin como respuesta a que algunos usuarios encontraron cmo romper la proteccin ypoder desarrollar e instalar aplicaciones extraoficiales en esta plataforma, diseada originalmentepara slo correr software de Apple.

  • 36 CAPTULO 1. PUNTO DE PARTIDA

    Abstraccin El sistema operativo debe asegurarse no slo de proveer las abs-tracciones necesarias, sino tambin de que ninguno de sus usuarios pue-da evadir dichas abstracciones. Por ejemplo, el que un usuario tenga de-recho a modificar un archivo que est alojado en determinada unidad dedisco, no debe poder escribir directamente al disco; su acceso debe estarlimitado a la interfaz que el sistema le ofrece.

    Administracin de recursos Si el sistema operativo defini determinada po-ltica de asignacin de recursos, debe evitar que el usuario exceda lasasignaciones aceptables, sea en el curso de su uso normal, o incluso antepatrones de uso oportunista Esto es, conociendo los mecanismos y po-lticas, un usuario no debe poder lograr que el sistema le permite el usopor encima de lo definido.

    Aislamiento Si el sistema operativo ofrece separacin entre los datos, procesosy recursos de sus distintos usuarios, ninguno de ellos debe accidental ointencionalmente tener acceso a la informacin que otro haya marca-do como privada. Adems, retomando el inciso anterior, ninguno de losusuarios debe poder lograr que, por sus acciones, el sistema penalice aotros ms all de lo que la poltica de asignacin de recursos estipule.

    Claro est, estos tres incisos son presentados nicamente como ejemplo; alo largo de la obra se presentarn varios casos relacionados con los distintostemas que se abordan.

    Naturalmente, todo problema que se plantee relativo a la seguridad infor-mtica puede ser abordado (por lo menos) desde dos puntos de vista anta-gonistas: el de la proteccin, que busca definir y proteger los aspectos en queintervenga la seguridad para un problema dado, y el del ataque, que busca lasdebilidades o vulnerabilidades en determinada implementacin de un esquemade seguridad que permitan, a quien las conozca, violar los lmites que el admi-nistrador del sistema busca imponerle. Y claro, si bien el tipo de anlisis paraestos puntos de vista es muy distinto, comprender ambos resulta no nicamen-te legtimo sino necesario para una formacin profesional completa.

    Todas las reas que aborda la presente obra tienen aspectos que puedenanalizarse desde la seguridad informtica, y ms que dedicar un captulo enparticular a este tema, la apuesta es por abordar la seguridad de forma trans-versal.

    1.6.1. Cdigo malicioso

    Los sistemas operativos, al igual que todo programa de cmputo, presentanimperfecciones, errores u omisiones, tanto en su diseo como en su implemen-tacin. El cdigo malicioso (tambin conocido como malware) consiste en progra-mas diseados para aprovechar dichas vulnerabilidades para adquirir privilegiosde ejecucin o acceso a datos que de otro modo no habran logrado.

  • 1.7. ORGANIZACIN DE LOS SISTEMAS OPERATIVOS 37

    Si la vulnerabilidad que aprovecha el cdigo malicioso es resultado de unerror en la implementacin, el desarrollador del sistema operativo tpicamentepodr corregirla y poner esta correccin (coloquialmente denominada parche) adisposicin de los usuarios; en los sistemas operativos modernos, la instalacinde estas correcciones se efecta de forma automatizada. Por otro lado, si lavulnerabilidad es consecuencia de una debilidad en el diseo, su correccinpuede ser mucho ms compleja, incluso puede ser imposible de resolver, comoel caso presentado en la seccin 5.6.1.5

    Cabe mencionar que una gran cantidad de cdigo malicioso ataca a unacapa particularmente dbil de todo sistema de cmputo: al usuario. Un aspec-to frecuente (y de muy difcil solucin) de estos programas es que engaan alusuario presentndose como cdigo legtimo, y si ste reacciona como el cdi-go malicioso busca, le permitir la ejecucin en el sistema con sus privilegios.

    El cdigo malicioso tiende a agruparse y clasificarse de acuerdo a su com-portamiento, particularmente de cara al usuario: virus, gusanos, caballos de troya,exploits, y muchos ms. Sin embargo, y dado que sus diferencias radican par-ticularmente en sus mltiples comportamientos ante el usuario o como programaen ejecucin (y se comportan en lneas generales del mismo modo ante el siste-ma operativo), se determin que entrar en detalles al respecto resultara fueradel mbito de la presente obra.

    1.7. Organizacin de los sistemas operativos

    La complejidad del tema de los sistemas operativos requiere que se haga deuna forma modular. En este texto no se busca ensear cmo se usa un determi-nado sistema operativo, ni siquiera comparar el uso de uno con otro (fuera dehacerlo con fines de explicar diferentes implementaciones).

    En el nivel que se estudiar, un sistema operativo es ms bien un gran pro-grama, que ejecuta otros programas y les provee un conjunto de interfaces paraque puedan aprovechar los recursos de cmputo. Hay dos formas primarias deorganizacin interna del sistema operativo: los sistemas monolticos y los sis-temas microkernel. Y si bien no se puede marcar una lnea clara a rajatablaque indique en qu clasificiacin cae cada sistema, no es difcil encontrar lneasbases.

    Monolticos La mayor parte de los sistemas operativos histricamente han si-do monolticos: esto significa que hay un slo proceso privilegiado (justa-

    5El caso de los desbordamientos de buffer no se debe directamente al diseo de uno de los siste-mas operativos en particular. Su existencia, as como su presencia generalizada por ms de 40 aosdespus de haberse descrito, puede explicarse por la imposibilidad de resolverse este problemasin el consumo reiterado de recursos de cmputo con operaciones demasiado frecuentes. En es-te caso en particular, el desbordamiento puede evitarse nicamente usando lenguajes con gestinautomtica de memoria, mucho ms lentos que los lenguajes de bajo nivel, o concientizando a losdesarrolladores de las prcticas responsables de programacin.

  • 38 CAPTULO 1. PUNTO DE PARTIDA

    mente el sistema operativo) que opera en modo supervisor, y dentro delcual se encuentran todas las rutinas para las diversas tareas que realiza elsistema operativo.

    Figura 1.9: Esquematizacin de los componentes en un sistema monoltico.

    Microkernel El ncleo del sistema operativo se mantiene en el mnimo posi-ble de funcionalidad, descargando en procesos especiales sin privilegios lastareas que implementan el acceso a dispositivos y las diversas polticasde uso del sistema.

    Figura 1.10: Esquematizacin de los componentes en un sistema microkernel.

    La principal ventaja de disear un sistema siguiendo un esquema monolti-co es la simplificacin de una gran cantidad de mecanismos de comunicacin,que lleva a una mayor velocidad de ejecucin (al requerir menos cambios de

  • 1.8. EJERCICIOS 39

    contexto para cualquier operacin realizada). Adems, al manejarse la comu-nicacin directa como paso de estructuras en memoria, el mayor acoplamientopermite ms flexibilidad al adecuarse para nuevos requisitos (al no tener quemodificar no slo al ncleo y a los procesos especiales, sino tambin la interfazpblica entre ellos).

    Por otro lado, los sistemas microkernel siguen esquemas lgicos ms lim-pios, permiten implementaciones ms elegantes y facilitan la comprensin porseparado de cada una de sus piezas. Pueden auto-repararse con mayor facilidad,dado que en caso de fallar uno de los componentes (por ms que parezca serde muy bajo nivel), el ncleo puede reiniciarlo o incluso reemplazarlo.

    Sistemas con concepciones hbridas No se puede hablar de concepciones ni-cas ni de verdades absolutas. A lo largo del libro se vern ejemplos deconcepciones hbridas en este sentido: sistemas que son mayormente mono-lticos pero que manejan algunos procesos que pareceran centrales me-diante de procesos de nivel usuario como los microkernel (por ejemplo,los sistemas de archivos en espacio de usuario, FUSE, en Linux).

    Figura 1.11: Esquematizacin de los componentes en un sistema hbrido.

    1.8. Ejercicios

    1.8.1. Preguntas de autoevaluacin

    1. En qu se diferencia la multitarea apropiativa de la cooperativa? Paratodas las opciones, lase: A diferencia de la multitarea cooperativa, laapropiativa. . . (Seleccione al menos una respuesta.)

    a) Es inmune a que un clculo demasiado largo o un ciclo infinito dejena la computadora efectivamente congelada.

    b) Es la ms utilizada hoy en da.

    c) Ocurre slo cuando el proceso hace una llamada al sistema.

  • 40 CAPTULO 1. PUNTO DE PARTIDA

    d) Se emplea principalmente en sistemas multiusuario.

    e) Requiere apoyo de hardware.

    2. Un sistema operativo ofrece una serie de recursos o caractersticas prin-cipales, tanto a sus usuarios como a sus programadores. Estos puedenagruparse en aislamiento, administracin de recursos y abstraccin.

    De las siguientes afirmaciones, cul responde a cada uno de dichos con-ceptos, y cul no corresponde a una funcin del sistema operativo?

    Instrumentar polticas que repartan la atencin del sistema de formaefectiva y acorde a las necesidades establecidas entre los diferentesprocesos o usuarios.

    Cada proceso y cada usuario no tendrn que preocuparse por otrosque estn usando el mismo sistema; idealmente, su experiencia serla misma que si el sistema estuviera exclusivamente dedicado a suatenc