Sistemas Operativos

Sesión 2: ¿Qué hace realmente tu computadora?

La pregunta fundamental
  • Tu computadora tiene UNA CPU (procesador central)
  • Pero 100+ procesos quieren usarla AL MISMO TIEMPO
  • ¿Cómo es posible que todo funcione sin conflictos?
  • ¿Quién decide quién usa la CPU ahora?
¿Qué es un Sistema Operativo?

Un Sistema Operativo (SO) es un PROGRAMA ESPECIAL que:

  • Corre 'siempre' en tu computadora (incluso cuando no lo ves)
  • Controla el hardware (CPU, RAM, disco, impresora, etc.)
  • Ejecuta otras aplicaciones (Chrome, VS Code, Spotify, etc.)
  • Decide qué aplicación usa la CPU en cada momento
  • Protege a las aplicaciones entre sí (si una falla, no cae todo)
  • Proporciona interfaz para que el usuario interactúe
Analogía del Gerente

Imagina un restaurante:

HARDWARE = Recursos disponibles
(cocineros, mesas, dinero, ingredientes)


APLICACIONES = Clientes que llegan pidiendo servicio
(comer, beber, pagar)

SISTEMA OPERATIVO = El gerente que decide:

  • A qué clientes atender primero
  • En qué orden
  • Cuántos recursos asignar a cada uno
  • Cómo evitar que un cliente ocupe todo

LECCIÓN: Sin un buen gerente → CAOS. Sin un buen SO → INESTABILIDAD.

Funciones Principales
  • Gestión de procesos
    (crear, terminar, ordenar procesos)
  • Gestión de memoria RAM
    (asignar espacio, proteger espacios)
  • Gestión de entrada/salida (E/S)
    (teclado, ratón, red, impresora)
  • Gestión de archivos
    (carpetas, lectura, escritura, eliminación)
  • Aislamiento de procesos
    (un proceso no afecta a otro)
  • Control de permisos
    (quién puede acceder a qué)
  • Protección de memoria
    (evitar accesos no autorizados)
  • Seguridad en hardware
    (controlar quién accede a qué dispositivo)
Dos 'mundos' en tu computador

El Usuario (Lo que ves)

  • Escritorio (fondo, iconos)
  • Ventanas de aplicaciones
  • Menús (inicio, barra de tareas)
  • Archivos y carpetas (explorador)
  • Interfaz gráfica amigable

El Kernel (El corazón invisible)

  • Procesos invisibles (50-100+)
  • Drivers de dispositivos
  • Gestión de memoria y CPU
  • Servicios del sistema
Tres Componentes Clave

PROCESOS

Instancias de aplicaciones corriendo:
Ejemplo: Chrome es UNA aplicación, pero puede tener 50 procesos (una pestaña = un proceso). Cada proceso es independiente: uno falla, no caen todos.

CPU

El recurso LIMITADO que TODOS quieren usar:
Tu computadora tiene 1 (o pocos) CPUs. 100+ procesos quieren usarla AHORA. Solamente 1 puede usar CPU en cada instante.

SCHEDULER (Planificador)

El 'árbitro' del SO:
Es un ALGORITMO (programa) que decide: ¿A quién le doy la CPU ahora? ¿Por cuánto tiempo? ¿Cuándo cambio a otro proceso?

El Problema de Coordinación

100+ PROCESOS compiten por 1 CPU → ¿Cómo decidir?

OPCIÓN 1: FIFO (First In, First Out)
Regla: El primero que llega, es el primero que atiende.
✓ Simple y justo   ✗ Lento, esperas mucho tu turno.

OPCIÓN 2: ROUND ROBIN (Turnos iguales de tiempo)
Regla: Cada proceso obtiene 30 ms, luego al siguiente.
✓ Más justo, todos obtienen tiempo   ✗ Cambios frecuentes cuesta recursos.

OPCIÓN 3: PRIORIDADES (Tareas críticas primero)
Regla: Procesos importantes van antes.
✓ Rápido para lo importante   ✗ Injusto con procesos secundarios.

Context Switching - El Costo Oculto

Cada vez que el SO cambia de proceso, SUCEDE:

  • COSTO 1: Guardar estado del proceso anterior (dónde estaba, registros, variables locales)
  • COSTO 2: Cargar estado del nuevo proceso (acceder a memoria, restaurar contexto)
  • COSTO 3: Limpiar la caché del procesador (datos del proceso anterior se descartan)
  • COSTO 4: El nuevo proceso tarda en 'volver a concentrarse'

ANALOGÍA HUMANA: Trabajar en Excel → Cambiar a escribir en Word. Cada cambio requiere 'adaptación mental'. Si cambias cada 30 segundos, pierdes productividad.

EN TU COMPUTADORA: Esto sucede cada MILISEGUNDO (1000x más rápido). Por eso el context switching es uno de los costos mayores.

Tipos de Sistemas Operativos

🖥️ DESKTOP/PERSONAL
Ejemplos: Windows, macOS, Ubuntu
Optimizado para: Facilidad de uso, múltiples apps
Usuarios: Personas (tu computadora)

🖲️ SERVIDOR
Ejemplos: Linux, Windows Server
Optimizado para: Confiabilidad, rendimiento
Usuarios: Centros de datos, nube

📱 MÓVIL
Ejemplos: Android, iOS
Optimizado para: Batería, touch, memoria limitada
Usuarios: Teléfonos, tablets

TIEMPO REAL
Ejemplos: VxWorks, FreeRTOS
Optimizado para: Decisiones en milisegundos
Usuarios: Autos, robots, equipo médico

¿Por qué importa?

Como estudiante de desarrollo de software, entender el SO te permite:

  • DIAGNOSTICAR problemas de rendimiento: "¿Mi computadora está lenta? ¿Es hardware o decisiones del SO?"
  • TOMAR MEJORES DECISIONES profesionales: "¿Qué SO usar para esta aplicación? ¿Cómo optimizar?"
  • ESCRIBIR SOFTWARE MÁS EFICIENTE: "¿Qué hace el SO detrás de mi código? ¿Cómo puedo usar menos recursos?"
  • DISEÑAR SOLUCIONES escalables y robustas: "Sistemas embebidos, redes, aplicaciones críticas"
  • ENTENDER TU COMPUTADORA: "De verdad, no es 'magia', es DISEÑO INTELIGENTE"
La Evolución del SO - Historia (I)
  • GENERACIÓN 1 (1940s-1950s): Máquinas de Cálculo
    ENIAC (1946). NO había SO (programadores trabajaban directamente con hardware).
  • GENERACIÓN 2 (1955-1965): Batch Processing
    IBM System/360 (1964). Surgieron los primeros SO (FORTRAN Monitor System). Función: Automatizar carga de trabajos (batch = lotes). Problema: Mucho tiempo inactivo de CPU.
  • GENERACIÓN 3 (1965-1980): Multiprogramación
    Necesidad: Usar CPU constantemente. OS/360, Unix (1969), Multics. Logro: Varios procesos en memoria simultáneamente. Eficiencia > 70%.
La Evolución del SO - Historia (II)
  • GENERACIÓN 4 (1980-2000): Computadoras Personales
    Apple Macintosh (1984), MS-DOS (1981), Windows (1985). Paradigma nuevo: Interfaz gráfica (GUI). Prioridad cambió: Usabilidad > Eficiencia. Las personas usan computadoras, no solo expertos.
  • GENERACIÓN 5 (2000-hoy): Móviles, Nube, IoT
    Smartphones con Android/iOS (capacidades de PC). Cloud Computing (AWS, Azure): SO distribuido. IoT: Millones de mini SO en dispositivos. Desafío nuevo: Eficiencia energética + Conectividad.
Unix vs Windows - Bifurcación Histórica

UNIX (BSD, Linux, macOS)

Creador: Ken Thompson, Dennis Ritchie
Filosofía: "Haz una cosa y hazla bien". Modular y simple, Open source (Linux). Domina servidores.

Mercado:
✓ Servidores (>90% web usan Linux)
✓ Supercomputadoras (99% Linux)
✓ Android (Linux kernel)
✓ macOS (Unix-based)

WINDOWS (MS-DOS, Win 11)

Creador: Bill Gates, Microsoft
Filosofía: "Accesible para todos". Interfaz amigable, Propietario. Domina usuarios finales.

Mercado:
✓ Computadoras personales (~70% desktop)
✓ Servidores empresariales (Windows Server)
✗ Bajo en servidores vs Linux

Estructura Básica y Componentes
┌─────────────────────────────────────────┐ │ APLICACIONES (Word, Chrome, etc) │ ← Lo que VES ├─────────────────────────────────────────┤ │ SISTEMA DE LLAMADAS (System Calls) │ ← Interfaz SO-Apps ├─────────────────────────────────────────┤ │ KERNEL (Núcleo del SO) │ ← El corazón invisible │ ┌───────────────────────────────────┐ │ │ │ • Gestor de Procesos │ │ │ │ • Gestor de Memoria │ │ │ │ • Gestor de E/S │ │ │ │ • Gestor de Archivos │ │ │ └───────────────────────────────────┘ │ ├─────────────────────────────────────────┤ │ CONTROLADORES (Drivers) │ ← Traducen a Hardware ├─────────────────────────────────────────┤ │ HARDWARE (CPU, RAM, Disco, etc) │ ← El que hace el trabajo └─────────────────────────────────────────┘

1. KERNEL: Gestiona recursos (Hardware directamente). 2. SHELL: Traduce comandos usuario (CLI o GUI). 3. SISTEMA DE ARCHIVOS: Organiza datos (NTFS, ext4). 4. ADMIN. DE DISPOSITIVOS: Controla periféricos (Drivers). 5. UTILIDADES: Servicios, red, antivirus.