Tipo: Libro impreso / Print book
Encuadernación / Binding: Tapa blanda / Paperback
Tamaño / Size: 17 x 23 cm
Páginas / Pages: 338
Resumen / Summary:
Autor / Author: Martín Silva
Editorial / Publisher: Alfaomega
Entrega / Delivery : Nacional / International
Envio desde / Ships from: Colombia
Condición / Condition: Nuevo / New
Tabla de contenido / Table of contents:
Mensaje del editor
Agradecimientos
Sobre el autor Prólogo
Introducción
Funciones y objetivos de los sistemas operativos
Funciones
Estructuras de los sistemas operativos
Gestión de procesos
Gestión de la memoria principal
Gestión de archivos
Gestión de dispositivos de entrada y salida
Servicios
Tipos de sistemas operativos
El núcleo del sistema operativo
Estructura y funcionamiento de la computadora
Componentes de una computadora
Dinámica de una operación de entrada y salida
El vector de interrupciones
Hardware de las interrupciones
Tratamiento de la interrupción
Tratamiento diferido
Clock tick
Llamadas al sistema
El proceso de arranque
Evolución de los sistemas operativos
La API de Windows
Trabajos prácticos
Práctica con Linux
procfs
Llamadas a sistema
Apagando Linux
Práctica con Windows
ProcFeatures
Ejemplo 1
Ejemplo 2
Corelnfo
Ejemplo 1
Ejemplo 2
Llamadas a sistema
Administrador de tareas
Una analogía
Procesos
Estados de un proceso
Bloque de control de procesos
Creación y terminación de procesos
Jerarquía de procesos
Planificador y activador
Cambio de contexto
Procesos ligeros, hilos o threads
Motivaciones para el uso de hilos
Modelos de organización
Aspectos del diseño de hilos
Creación de los hilos
Terminación de los hilos
Sincronización de los hilos
Planificación de los hilos
Manejo de señales
Implementación
Ventajas y desventajas de los dos enfoques
Fibras
Comunicación
Procesos independientes
Procesos cooperantes
Procesos concurrentes
Paradigmas de comunicación entre procesos
Memoria compartida
Pase de mensajes
Puerto
Señales
Temporizadores
Socket
Tubería
Cola de mensajes
Archivos
Archivos proyectados en memoria
Excepciones
Trabajos prácticos
Práctica con Linux
Estados de los procesos
Obtener el PID
Crear procesos con fork()
Práctica con Windows
tlist
Ejemplo 1
Ejemplo 2
Información de los procesos con el Administrador de Tareas
Memoria
Funciones y operaciones del administrador de memoria
Modelo de memoria de un proceso
Fases en la generación de un ejecutable
Formato del ejecutable
El formato COFF
El formato ELF
El formato PE
Mapa de memoria de un proceso
Diferentes esquemas de administración
Mono programación
Partición absoluta única
Partición reubicable única
Superposiciones
Multiprogramación
Múltiples particiones fijas
Múltiples particiones variables
Algoritmos de selección de la partición:
Cola de procesos por partición:
Cola única:
Sistema de compañeras
Slab Allocator
Reubicación
Paginación simple
Segmentación simple
Segmentación con paginación
Tablas de páginas y de segmentos
Memoria asociativa
Tabla de páginas invertida
Ventaja adicional del paginado: las páginas compartidas
Intercambio
Memoria virtual
Paginación por demanda
Ejemplo
Localidad de referencia
Traba de páginas
Tamaño de la página
Algoritmos de reemplazo de páginas
El rendimiento de los algoritmos
Políticas de asignación
Ejemplo
Hiperpaginación
Conjunto de trabajo
Prepaginado
Segmentación
Trabajos prácticos
Práctica con Linux
Estadísticas de la memoria virtual en Linux
El programa mapa.c
La estructura de ELF
El archivo /proc/pid/maps
Práctica con Windows
Memoria virtual en Windows
La estructura de PE
PhysMem
CacheSet
Planificación
Conceptos
Supuestos subyacentes
Características
Contexto
Desalojo
Colas
Criterios
Notación de Landau
Tipos de planificación
Algoritmos de planificación
FCFS (First-Come, First-Serve)
El efecto convoy
SJF (Shortest-Job-First)
SRPT (Shortest-Remaining-Processing-Time)
Por prioridad
RR (Round-Robin)
Colas multiniveles
MLQ
MLFQ
Planificación en POSIX
Planificación en Linux
Primeras versiones
Version 0.96
Versión 1.2
Version 2.0.33
Versión 2.2
Versión 2.4
Versión 2.6.8.1
Versiones recientes
Versión 2.6.21
Versión 2.6.23
Planificación en Windows
Niveles de prioridad
Base de datos del activador
Práctica con Linux
Cambio de contexto
Una analogía
Sincronización
Antecedentes
Alternativas de sincronización
Sección crítica
Exclusión mutua
Soluciones hardware
Inhabilitación de las interrupciones
Instrucciones especiales de máquina
TSL
CAS
Fetch-and-add
Read-modify-write
Load-link/store-conditional
Soluciones libres de espera
Soluciones software
El problema de la sección crítica
Algoritmo de Dekker
Algoritmo de Peterson
Requisitos de una solución
Variables mutex
Variables de condición
Spinlock
Problemas clásicos
Los filósofos comensales
El peluquero dormilón
Problema del productor-consumidor
Problema de los lectores-escritores
Comunicación cliente-servidor
Semáforos
Monitores
Sintaxis de un monitor
Sincronización en pase de mensajes
Características de la sincronización
Memoria intermedia o buffer
Buffer nulo
Buffer de mensaje único
Buffer de capacidad ilimitada
Buffer de capacidad limitada
Sincronización en tuberías
Sincronización mediante señales
Bloqueo mutuo
Condiciones para que se cumpla el interbloqueo
Grafos de asignación de recursos
Métodos para el tratamiento del bloqueo mutuo
Prevención
Cómo evitar el bloqueo mutuo
El algoritmo del banquero
Detección del interbloqueo
Recuperación del interbloqueo
Algoritmo del avestruz
Sincronización en POSIX
Señales
Mutex
Mutex no bloqueante
Semáforos para hilos
Semáforos para procesos
Variables de condición
Memoria compartida
Proyectar un archivo compartido
Acceso compartido a un archivo
Sincronización en Linux
Operaciones atómicas
Spinlock
Full spinlock
Lectores y escritores
Mutex
Sincronización en Windows
Sincronización con IRQL alto
Spinlocks
Sincronización con IRQL bajo
Llamada a Procedimiento Local
Mailslots
Trabajos prácticos
Tuberías
Otro ejemplo:
Autoevaluación
Almacenamiento
Conceptos
Archivos
Tipos
Atributos
Operaciones
Particiones
Nombres
Sistema de archivos
Directorio
Directorio de un nivel
Directorio de dos niveles
Estructura de árbol
Estructura de grafo
Entradas de directorio
Designación de un archivo
Directorio raíz por proceso
Otros tipos de objetos
Journaling
Arquitectura del software
Estructuras asociadas
Organización de los archivos
Gestión del espacio libre en disco
Técnicas de asignación
Implementaciones
Sistemas de archivos en Windows
FAT - File Allocation Table
NTFS
Sistema de archivos de UNIX
Sistemas de archivos en Linux
Second Extended File System
Virtual File System
Third Extended File System
ReiserFS
Fourth Extended File System
Sistemas de archivos sin almacenamiento
procfs
debugfs
sysfs
ramfs
Trabajos prácticos
Particiones y sistemas de archivos
Directorios, archivos y enlaces
Permisos
Sistemas de entrada y salida
Dispositivos de entrada y salida
Organización de las funciones de entrada y salida
Aspectos del diseño
Objetivos
Mecanismo y política
Estructura lógica de las funciones
Subsistema de entrada y salida del núcleo
Planificación de la entrada y salida
Almacenamiento intermedio
Memoria intermedia nula
Memoria intermedia sencilla
Memoria intermedia doble
Memoria intermedia circular
Caché
Spool
Manejo de errores
Estructuras de datos
Planificación del acceso a discos
Estructura de un disco
Planificación del acceso al disco
Distintos tipos de algoritmos de planificación
FCFS
SSTF
SCAN
C-SCAN
LOOK
El ascensor Linus
El planificador con fecha límite
El planificador de entrada y salida anticipatorio
CFQ
Manejadores de dispositivos
Ventanas al núcleo
Desventajas
devfs
Conexión en caliente
El nuevo modelo de dispositivos de Linux
Colectores, dispositivos y clases
sysfs
udev
HAL en Linux
DeviceKit
D-Bus
Netlink sockets
Cómo funciona todo junto
Trabajos prácticos
¿Cómo creamos archivos especiales?
Autoevaluación
Multiprocesamiento
Múltiples procesadores
Aplicaciones paralelas
Ley de Amdahl
Taxonomía de Flynn
Arquitecturas de múltiples procesadores
Procesamiento simétrico y asimétrico
Multiprocesadores simétricos
Ventajas
Organizaciones
Afinidad
Granularidad
Paralelismo
Independiente
De grano grueso y muy grueso
De grano medio
De grano fino
Serialización de datos
Diseño
Procesos o hilos simultáneos y concurrentes
Planificación
Asignación de hilos a procesadores
Uso de la multiprogramación en procesadores individuales
Expedición de un proceso
Planificación de procesos
Planificación de multiprocesadores
Sincronización
Estructuras de datos locales a la CPU
Spinlocks
Semáforos - mutexes
Traba de lectura rápida
Leer-Copiar-Actualizar
Barrera
Gestión de la memoria
Arquitectura de Acceso Uniforme a Memoria (UMA)
Arquitectura de Acceso No Uniforme a Memoria (NUMA)
Arquitectura de Memoria de Sólo Caché (COMA)
Coherencia y consistencia
Ordenamiento y consistencia de la memoria
Modelos de consistencia
Modelo de consistencia estricta
Modelo de consistencia secuencial Modelo de consistencia causal
Modelo de consistencia PRAM
Modelo de consistencia de procesador
Modelo de orden de almacenamiento total
Modelo de consistencia débil
Modelo de consistencia de liberación
Modelo relajado de consistencia de liberación
Ordenamiento explícito en memoria
Las barreras de memoria del hardware
Multiprocesamiento en Windows
La base de datos del activador
Sincronización en el núcleo
Gestión de la memoria
Multiprocesamiento en Linux
Gestión de la memoria
Bibliografía