Sistemas Operativos: Una Visión General
1. ¿Qué es un sistema operativo?
Un sistema operativo es un conjunto de programas, servicios y funciones que gestionan y coordinan el funcionamiento del hardware y del software.
2. Objetivos de un sistema operativo
- Seguridad: Protección contra manipulaciones que dañen la información o el sistema.
- Abstracción: Ocultar detalles de bajo nivel para ofrecer una visión simplificada a los niveles superiores.
3. Elementos de un sistema operativo
Los elementos principales son: el núcleo, la API del núcleo, los drivers para dispositivos, el sistema de archivos y el intérprete de comandos (shell).
4. Función del núcleo de un sistema operativo
El núcleo transforma los recursos reales del ordenador en recursos estándares y cómodos de usar. Reside siempre en la memoria.
5. API del núcleo de un sistema operativo
Es el conjunto de servicios que ofrece el núcleo a los procesos.
6. Driver o controlador
Un driver es el código que implementa una interfaz estándar para interactuar con un dispositivo específico.
7. Sistema de ficheros de un sistema operativo
Estructura un disco en una jerarquía de directorios y archivos; proporciona abstracción para facilitar el manejo de los discos.
8. Shell o intérprete de comandos
Proceso que lee las órdenes interactivas del usuario y ejecuta los programas indicados. No forma parte del núcleo.
9. Funciones de un sistema operativo
Gestión de: procesos, memoria, sistema de ficheros, dispositivos de E/S, red y protección.
Gestión de Procesos y Memoria
10. Gestión de procesos
Se encarga de ubicar un proceso en el procesador en todo momento.
11. Diferencia entre programa y proceso
- Programa: Lista de instrucciones. Ente pasivo. Se almacena en ficheros.
- Proceso: Ejecución de un programa. Ente activo.
12. Gestión de memoria
Normalmente asociada a la gestión de procesos: asignación y liberación de memoria al crear y eliminar procesos. Es transparente al programador.
13. Gestión de ficheros
Un fichero es una abstracción para definir una colección de información no volátil.
14. Gestión de dispositivos de entrada/salida
Proporciona una interfaz de alto nivel sencilla de utilizar.
15. Gestión de la red
Programas de aplicación que facilitan el acceso a recursos remotos. Comprende varios niveles: manejadores (drivers) de tarjetas de red, protocolos de comunicación (TCP/IP, Netbios…) y aplicaciones para el uso de la red.
16. Multiprogramación
Ejecuta varios programas simultáneamente para un mejor aprovechamiento de los recursos, ofreciendo una falsa apariencia de ejecución paralela.
17. Procesamiento distribuido
Sistemas operativos que manejan un conjunto de ordenadores conectados (Cliente-Servidor, Sistemas Cooperativos). División de aplicaciones en partes residentes en distintos ordenadores.
18. Sistema multiprocesador
Varios procesadores unidos y gestionados por un único sistema operativo. Los programas se pueden ejecutar en cualquier procesador, permitiendo la redistribución de cargas.
19. Clasificación de sistemas operativos
Según la utilización de recursos, la interactividad, el número de usuarios y el tipo de aplicaciones.
20. Bloque de control de proceso (PCB)
Estructura de datos que almacena información acerca del proceso.
21. Estados posibles de un proceso
- En ejecución
- Preparado/activo
- Bloqueado/suspendido
22. Planificador
Indica al ordenador qué procesos deben ejecutarse y los estados que deben adoptar.
23. Algoritmos de planificación
- Round-Robin: Asignación de tiempos de ejecución por rondas.
- FCFS (Primero en llegar, primero en ser atendido): El primer proceso se ejecuta hasta que termina.
- SJF (El más corto primero): Prioriza procesos de corta duración.
- SRTF (Primero el de tiempo restante más breve): Asignación basada en el tiempo restante para terminar.
24. Procesos ligeros
Múltiples hilos de ejecución en el mismo espacio de direcciones.
Gestión de Memoria
25. Esquemas de gestión de memoria
- Particiones fijas: Problema de fragmentación interna.
- Particiones variables: Problema de fragmentación externa.
- Memoria virtual: Permite ejecutar procesos que no caben completamente en memoria RAM.
- Paginación: Divide la memoria en marcos y los programas en páginas.
- Segmentación: Divide la memoria en segmentos de longitud variable.
- Hiperpaginación: Evita mantener todas las tablas de páginas en memoria.
E/S y Sistemas de Archivos
26. Direccionamiento de dispositivos de E/S
- Buses separados para memoria y E/S
- E/S mapeada en memoria
27. Estrategias para la transferencia de información
- E/S controlada por programa: La CPU realiza cada transferencia.
- E/S por acceso directo a memoria (DMA): Para dispositivos rápidos y grandes bloques de datos.
28. Sincronización de las operaciones de E/S
- Polling: Comprobar constantemente el estado del dispositivo.
- Interrupciones: El dispositivo lanza una interrupción al terminar.
29. Técnicas de E/S
- Buffering: Uso de buffers para evitar bloqueos.
- Spooling: Escritura de datos en disco para su posterior procesamiento.
30. Estructura de un sistema de directorios
- Un nivel
- Árbol de directorios
- Grafos de directorios
31. Formas de acceso a los bloques de un disco
- Secuencial
- Secuencial indexado
- Directo
32. Tipos de formateo
- Bajo nivel: Estructura física del disco.
- Alto nivel: Dependiente del sistema operativo.
33. Métodos de asignación de bloques de un fichero
- Asignación contigua: Bloques consecutivos. Ventajas: fácil acceso secuencial y directo. Desventajas: problemas con el crecimiento de ficheros.
- Asignación enlazada: Bloques enlazados. Ventajas: fácil acceso secuencial, no provoca fragmentación externa. Desventajas: acceso directo ineficaz.
- Asignación indexada: Mejora de la enlazada. Reúne punteros a bloques en un bloque de índices.
Comandos de Linux
A continuación se listan algunos comandos de Linux con sus descripciones:
Comandos de Listado de Archivos
- Listar todos los archivos del directorio /etc que empiecen con ‘t’ en orden inverso:
ls -r /etc/t*
- Listar todos los archivos del directorio /dev que empiecen con ‘tty’ y tengan 5 caracteres:
ls /dev/tty??
- Listar todos los archivos del directorio /dev que empiecen con ‘tty’ y acaben en ‘1’, ‘2’, ‘3’ o ‘4’:
ls /dev/tty*[1-4]
- Listar todos los archivos del directorio /dev que empiecen con ‘t’ y acaben en ‘c1’:
ls /dev/t*c1
- Listar todos los archivos, incluyendo los ocultos, del directorio raíz:
ls -a /
- Listar todos los archivos del directorio /etc que no empiecen con ‘t’:
ls -i"t" /etc/
- Listar todos los archivos del directorio /usr y sus subdirectorios:
ls -r /usr/
Comandos de Navegación y Verificación
- Cambiarse al directorio /tmp:
cd /tmp
- Verificar el directorio actual:
pwd
Comandos de Búsqueda
- Visualizar la lista de ficheros que pertenecen a root:
find / -type f -user root
- Visualizar la lista de ficheros del directorio /usr/include:
find /usr/include/ -type f
Comandos de Movimiento
- Mover el directorio dir31 y sus subdirectorios debajo de dir2:
mv dir3/dir31 dir2/