Logo Passei Direto
Buscar
Material
páginas com resultados encontrados.
páginas com resultados encontrados.

Prévia do material em texto

SISTEMAS OPERACIONALES
Mateus Buogo
2SISTEMAS OPERACIONALES
ÍNDICE
CENTRO UNIVERSITÁRIO UNIFTEC
Rua Gustavo Ramos Sehbe n.º 107.
Caxias do Sul/RS, Brasil
RECTOR
Claudino José Meneguzzi Júnior
PRORRECTORA ACADÉMICA
Débora Frizzo
PRORRECTOR ADMINISTRATIVO
Altair Ruzzarin
DIRECTORA DE EDUCACIÓN A DISTANCIA
(EAD)
Lígia Futterleib
Desarrollado por el Núcleo de 
Educación a Distancia (EAD)
Diseñadora Educativa
Sabrina Maciel
Diagramación, Ilustración y Alteración 
de Imagen
Gabriel Olmiro de Castilhos, Jaimerson 
Cabral
Traductora
Paula Verónica L. S. Feiten,
Renata Meneghel
INTRODUCCIÓN 3
SISTEMAS OPERACIONALES 4
El Sistema Operacional 5
Historia 5
Tipos de Sistemas Operacionales 8
Estructura de los Sistemas Operacionales 8
System Call 10
Modos de Acceso 11
Síntesis Final 12
GESTIÓN DE PROCESO 14
La Gestión de Procesos 15
Planificación de Procesos 19
Turnaround 22
Síntesis Final 29
THREADS 31
Los Threads 32
¿Por qué usar Threads? 34
Síntesis Final 34
COMUNICACIÓN ENTRE PROCESOS 36
La Comunicación 37
Regiones Críticas 38
Síntesis Final 42
DEADLOCK 44
El Deadlock 45
Síntesis Final 50
GESTIÓN DE MEMORIA 52
La Gestión de Memoria 53
Memoria RAM 55
Buffering 56
Mono programación sin cambio de procesos o paginación 57
Multiprogramación 57
Síntesis Final 62
GESTIÓN DE DISPOSITIVOS DE ENTRADA Y SALIDA 64
Dispositivos de Entrada y de Salida 65
Conceptos básicos del hardware 66
Chipset 67
Módulos de Entrada y de Salida 67
Drivers de Dispositivos 68
DMA 69
Discos Rígidos 70
Síntesis Final 72
SISTEMA DE ARCHIVOS 74
Los Sistema de Archivos 75
Archivo 76
Formatos 78
Directorios 78
Intercambio de Archivos 79
Trabas en Archivos y Semántica de Acceso 80
Control de Acceso 81
Sistemas de Archivos NTFS y EXT 81
Síntesis Final 83
EL LINUX 85
Historia 86
Entendiendo el sistema 88
Estructura del Sistema 89
Kernel 90
Directorios 91
El famoso ROOT 93
Seguridad en el Linux 94
Síntesis Final 97
REFERENCIAS 99
3SISTEMAS OPERACIONALES
INTRODUCCIÓN
Algún día usted ya se preguntó ¿cómo tantos aparatos 
tecnológicos son administrados? Ya se preguntó ¿cómo su 
videojuego funciona o cómo la computadora de a bordo de 
su coche controla tantos sensores? Usted sabe ¿cómo el 
traje del Hombre de Hierro consigue administrar tantas 
armas? 
La respuesta para todas esas preguntas es “Sistemas 
Operacionales”. Ellos están diseminados en varios disposi-
tivos que ni podemos imaginar. Al término de esta materia, 
ustedes estarán con la mente más abierta y entenderán el 
motivo por el cual los sistemas dominan el mundo.
Vamos a “surfear” entre sus GESTIÓNs y entender 
cómo todo es procesado y accedido. Al final, ustedes sabrán, 
no apenas cómo ellos funcionan, pero tendrán la capacidad 
de abstraer conceptos y aplicarlos en su día a día, al final, 
¡de nada sirve un conocimiento que no puede ser aplicado!
Vamos, ¡bienvenidos al mundo de los Sistemas Ope-
racionales!
4SISTEMAS OPERACIONALES
SISTEMAS 
OPERACIONALES
¿Sabía que los sistemas operacionales dominan 
el mundo y usted ni lo sabía? Sin ellos nuestra 
vida sería vacía, sin diversión y mucho más 
difícil. ¿Estoy exagerando? Vamos a desvelar 
los misterios de los Sistemas Operacionales, y 
usted sacará sus propias conclusiones.
Algún día usted ya se preguntó ¿cómo tantos aparatos 
tecnológicos son administrados? Ya se preguntó ¿cómo su 
videojuego funciona o cómo la computadora de a bordo de 
su coche controla tantos sensores? Usted sabe ¿cómo el traje 
del Hombre de Hierro consigue administrar tantas armas? 
La respuesta para todas esas preguntas es “Sistemas 
Operacionales”. Ellos están diseminados en varios dispositivos 
que ni podemos imaginar. Al término de esta materia, ustedes 
estarán con la mente más abierta y entenderán el motivo por 
el cual los sistemas dominan el mundo.
Desvendaremos los misterios de los Sistemas 
Operacionales, y usted sacará sus propias 
conclusiones.
5SISTEMAS OPERACIONALES
Vamos a “surfear” entre sus GESTI-
ÓNs y entender cómo todo es procesado 
y accedido. Al final, ustedes sabrán, no 
apenas cómo ellos funcionan, pero ten-
drán la capacidad de abstraer conceptos 
y aplicarlos en su día a día, al final, ¡de 
nada sirve un conocimiento que no puede 
ser aplicado!
Vamos, bienvenidos al mundo de 
los Sistemas Operacionales!
El Sistema Operacional
Actualmente, existen muchos sis-
temas operacionales, los cuales son de-
sarrollados con finalidades específicas, 
variando su complejidad y función. Un sis-
tema operacional no está preso y restricto 
a una computadora, podemos tener siste-
mas operacionales utilizados en máquinas 
industriales, cajero electrónico bancarias, 
robot, dispositivos médicos, máquinas de 
café, heladeras, coches, entre tantos otros.
La principal función de un siste-
ma operacional es la administración de 
recursos, siempre recuerde eso, un SO es 
responsable por administrar recursos de 
hardware tales como procesador, memo-
ria, red, sonido, vídeo, almacenaje, entre 
otros. Otra función del SO es hacer la 
interface del hardware para el usuario, 
dejarlo transparente, facilitar la utilización 
del equipo, permitir que exista interacción 
entre el usuario y el hardware, de forma 
muy sencilla.
Acostumbro a comparar el sistema 
operacional a un maestro de una orquesta. 
Pues, cada músico de la orquesta represen-
ta un recurso de hardware que el sistema 
puede acceder. De esa manera, para que 
todo ocurra bien y sin problemas, debe 
existir harmonía entre todos los músicos 
(recursos), para que cada uno toque su 
instrumento de la manera correcta, a la 
hora cierta (intercambio de recursos) y la 
música sea creada. El SO orquesta todos 
los accesos a los recursos, pudiendo com-
partirlos entre los procesos.
Pero, antes de entender cómo ellos 
funcionan, estudiaremos un poco de la 
historia de ellos.
Historia
No nos alargaremos mucho en la his-
toria de los sistemas operacionales, pues 
conocer la historia es muy interesante, pero 
en el contexto de tecnología, todo evolucio-
na muy rápido y paradigmas son quebrados 
y tecnologías abandonadas, pero algunos 
conceptos aún son inmutables desde la dé-
cada de 1950.
En el inicio, la computación era sin 
forma y vacía. Computadoras enormes sur-
gieron en 1950 y tenían que ser operadas 
por personas. No existía un concepto de 
sistema operacional, todas las operaciones 
eran realizadas en el propio hardware, de 
forma mecánica y sin ninguna diversión, 
apenas trabajo y más trabajo.
Uno de los primeros sistemas fue el 
proyecto Mark I, de 1944, proyectado y 
desarrollado
en conjunto entre IBM y la Univer-
sidad de Harvard en EUA. En 1946, el 
gobierno americano presentó su compu-
tadora electrónica digital, utilizada para 
cálculos militares, a la cual denominaron 
ENIAC (Electronic Numerical Integrator 
Analyzer and Computer).
6SISTEMAS OPERACIONALES
¿Notaron las fechas? La Segunda 
Guerra Mundial trajo un avance de tec-
nología enorme. Infelizmente, la guer-
ra hace que una corrida de tecnología 
empiece, donde el más actualizado lleva 
una enorme ventaja. Las primeras gran-
des computadoras eran usadas para fines 
militares.
Una curiosidad. ¿Saben el motivo 
por el cual llamamos a los errores de los 
sistemas de bug? Antiguamente las com-
putadoras eran con válvulas. Entonces, 
ellos generaban mucho calor incandes-
cente, lo que atraía insectos para dentro 
de las salas de las computadoras, al final, 
ellos adoran el calor de una ampolleta. 
Las válvulas eran sensibles y debían ser 
manoseadas con mucho cuidado, pero, 
los pobres insectos no sabían eso e iban 
corriendo, o mejor, volando hasta las 
válvulas y cuando tocaban en ellas, se 
quemaban. Así, cuando una válvula se 
quemaba, ¿qué era dicho? “¡Ocurrió un 
bug!”. En inglés, bug, significa insecto. 
Es por eso que hablamos que “ocurrió 
un bug” cuando ocurre algún error en 
el sistema.
Un tiempo después, Von Neumann 
creó un nuevo concepto. Él inició los 
proyectos de sistemas computacionales 
basados en una arquitectura compuesta 
por tres elementos básicos, siendo: Proce-
sador,Memoria y Dispositivos de Entrada 
y de Salida (I/O). Este concepto es apli-
cado hasta los días de hoy, Von Neumann 
fue uno de los principales nombres de la 
era de la tecnología. Con un mismo har-
dware, era posible efectuar varias tareas, 
sin necesitar alterar el hardware, como 
era hecho en las otras computadoras.
En la estructura propuesta por Von 
Neumann, un mismo hardware tenía ca-
pacidad para ejecutar diferentes tipos de 
tareas sin necesitar cualquier modifica-
ción física, bastaba que una secuencia de 
instrucciones estuviera almacenada en la 
computadora. De esa manera, surgieron 
los conceptos de programas y computa-
dora programable, junto con el concepto 
de programación de computadoras.
De esa manera, fueron ocurriendo 
evoluciones en las computadoras y junto 
con ellas, los sistemas operacionales tam-
bién evolucionaron. Podemos dividir las 
computadoras en 4 generaciones:
Primera Generación
• Generación de las Válvulas (Bugs) – 
1937 hasta 1955
• Características: Existían muchas vál-
vulas y después de horas de trabajo 
ellas paraban por sobrecalentamiento. 
Tenían un consumo de energía muy 
grande para mantener las válvulas.
• Aplicación: Campo científico y mi-
litar
• Descripción: No había concepto de 
Sistema Operacional, todo el trabajo 
era realizado con lenguaje de máqui-
na. En esta época surgió el lenguaje 
Asembly.
Segunda Generación
• Generación de los Transistores – 
1955 hasta 1965.
7SISTEMAS OPERACIONALES
• Características: La principal carac-
terística era el menor consumo de 
energía y tamaño.
• Aplicación: Área científica, militar, 
administrativa y gerencial.
• Descripción: En esta generación 
surge el concepto de sistema ope-
racional. Cuando el S.O. era único y 
vinculado a apenas una computado-
ra, o sea, cada sistema creado rodaría 
solamente en una máquina X de la 
empresa Z, entonces, no era hecho 
en gran escala y sin gran soporte. 
El sistema era enyesado.
Tercera Generación
• Generación de los Circuitos Integra-
dos – 1965 hasta 1975
• Características: Computadoras más 
compactas y rápidas, siendo que tam-
bién consumían menos energía y es 
el inicio del desarrollo de Sistemas 
Operacionales.
• Aplicación: Comercio y ramo Cien-
tífico
• Descripción: Las empresas que sobre-
vivían del comercio empezaron a dar 
atención a las computadoras, que sólo 
eran usadas para cálculos científicos 
y de ingeniería. Luego, fue creada la 
Familia de Computadoras, que eran 
una serie de máquinas con la misma 
arquitectura, compartiendo el mismo 
conjunto de instrucciones, volviéndose 
compatibles e impulsando el desarrollo 
de aplicaciones. En esa misma época, 
un grupo de Científicos empezaron 
a desarrollar diversas herramientas 
importantes para la computación, 
entre los científicos, los que más se 
destacaron fueron Ken Thompson, 
que creó el Lenguaje B y Dennis Ri-
tchie, que, a partir del Lenguaje B, 
creó el Lenguaje C, revolucionando 
toda la computación (gracias a ella, 
tenemos Java, PHP, C++, etc.). En ese 
tiempo, algunos de los científicos que 
se destacaron fueron Ken Thompson, 
como ya citado, por haber creado el 
Lenguaje B, y Dennis Ritchie que, 
a partir de ese Lenguaje (B), creó el 
Lenguaje C, revolucionando toda la 
computación.
Cuarta Generación
• Generación de los Microprocesa-
dores
• Características: Busca de procesa-
dores más rápidos y miniaturización 
de los componentes 
• Aplicación: Uso Personal, Pequeñas 
y Grandes Empresas
• Descripción: Con la popularización 
de las computadoras y la llegada de 
tecnologías que proporcionaron su 
miniaturización y baja de precio, las 
computadoras personales empiezan 
a ser cada vez más buscadas y sur-
gieron los Sistemas Operacionales 
domésticos, con interfaces gráfi-
cas y mucho más sencillas para ser 
utilizadas. Debido a las ideas del 
pasado, hoy, la informática es de la 
manera que la conocemos y, gracias 
a Jobs, Gates y Torvalds, llegamos 
a la evolución de la computación 
personal y libre.
8SISTEMAS OPERACIONALES
Tipos de Sistemas Operacionales
Como dijimos al inicio, existen 
muchos tipos de sistemas operacionales. 
Los agruparemos de acuerdo con algunas 
características para facilitar su entendi-
miento y su estudio, comprendiendo sus 
aplicaciones.
Sistemas Monotarea
Los sistemas monotareas pueden 
ejecutar apenas una tarea por vez y nada 
más. Su gestión es más sencilla y consume 
menos recursos de hardware, puesto que 
apenas una tarea es ejecutada de cada vez. 
El sistema más famoso fue el MS-DOS.
El hecho de ejecutar apenas una 
tarea por vez no quiere decir que son sis-
temas malos. Pueden ser aplicados en ta-
reas sencillas, que no demanden mucha 
capacidad de procesamiento, pudiendo 
ser utilizado en hardware más sencillos 
y baratos.
Sistemas Multitareas
Ellos vinieron para sustituir a los 
monoprogramables, son más complejos 
y eficientes. En los sistemas multipro-
gramables podemos tener varios progra-
mas dividiendo los mismos recursos. Las 
principales ventajas del uso de sistemas 
multiprogramables son el aumento de la 
productividad y la reducción de costos, 
pues hay el intercambio de los diversos 
recursos del sistema.
Gracias a la invención de los sistemas 
multitareas, podemos disfrutar de todo el 
entretenimiento propuesto en nuestras 
computadoras, videojuegos y dispositivos 
similares.
Sistemas de Multiprocesadores
Si los sistemas multitareas ya nos 
proporcionan mucha diversión y eficiencia, 
los que soportan más de un procesador 
nos proporcionan mucha más velocidad 
para nuestra diversión y trabajo. Un sis-
tema operacional capaz de administrar 
más de una unidad de procesamiento en 
un hardware específico, consigue obtener, 
de forma exponencial, la mejora de perfor-
mance en la ejecución de innúmeras tareas.
Estructura de los Sistemas 
Operacionales
Antes de empezar a hablar de la 
estructura de los sistemas operacionales, 
hagamos una revisión rápida del hardwa-
re. Esencialmente, el hardware está com-
puesto por CPU, memoria, controladores 
de ratón y teclado, controlador de disco, 
controlador de vídeo y controladores de 
I/O, en general.
El CPU es responsable por el proce-
samiento de los procesos que están abier-
tos en el sistema. La memoria RAM es 
responsable por hospedar los procesos que 
están aguardando para ser procesados y los 
datos de los usuarios que fueron requeridos 
al disco rígido.
Los controladores de ratón y de te-
clado envían interrupciones para que la 
CPU efectúe alguna tratativa o acción. Los 
controladores de vídeos son responsables 
9SISTEMAS OPERACIONALES
por la conexión gráfica de la computa-
dora, llevando la imagen para la pantalla 
del usuario. Los controladores de discos 
administran el acceso físico a los discos 
rígidos y a la unidad de
almacenaje. Por fin, los controlado-
res generales de I/O conectan el mundo 
externo con la placa madre.
Así, el sistema operacional es res-
ponsable por volver transparente la capa 
de hardware para el usuario, o sea, él debe 
permitir que el usuario utilice la computa-
dora sin que sea necesario preocuparse con 
la forma como el hardware funciona, así 
como, volver el hardware transparente es el 
principal objetivo del sistema operacional.
Siempre que la computadora es 
conectada ocurre un proceso llamado 
bootstrapping. En ese modo, luego que 
la energía empieza a pasar por la placa 
madre, la BIOS de la computadora sube y 
efectúa pruebas básicas del hardware para 
verificar su integridad.
En el caso de que ocurra algún pro-
blema de verificación que impida el buen 
funcionamiento de la computadora, a par-
tir del sistema operacional, el proceso de 
boot es abortado y algún error aparecerá 
en la pantalla.
En el caso de que no sean verifica-
das fallas de hardware, el proceso de boot 
ocurre normalmente y el sistema operacio-
nal empieza a ser cargado del disco rígido 
o unidad de almacenaje, para la memoria 
RAM, donde será procesado y tendrá el 
poder de controlar toda la capa de har-
dware, pudiendo acceder a los recursos.
KernelEl primer archivo que es cargado 
en memoria RAM es el Kernel del siste-
ma operacional. El sistema operacional es 
formado por algunos conjuntos de rutinas 
que proveen servicios para los usuarios, 
aplicaciones y también al propio sistema. 
Llamamos de núcleo del sistema o Kernel 
a ese conjunto de rutinas.
El Kernel es la principal parte del 
sistema operacional. Él acumula innúme-
ras funciones de gestión; hace la gestión 
de procesos, memoria, dispositivos de 
I/O, archivos, redes, entre tantos otros. 
Podemos afirmar que el Kernel es el res-
ponsable por servir a los usuarios, dejando 
el hardware transparente, no solamente 
para los usuarios, pero también para las 
aplicaciones.
10SISTEMAS OPERACIONALES
System Call
Muy bien, el Kernel es responsable 
por el GESTIÓN total del sistema ope-
racional y también del acceso a todos los 
recursos del hardware. Cada proceso o 
aplicación que necesita tener acceso a los 
recursos de hardware necesita “conversar” 
con el Kernel para conseguir comunicar-
se con la capa de hardware. El sistema 
no permite que ningún proceso acceda 
directamente el hardware sin la interven-
ción del Kernel, pues él posee todos los 
GESTIÓNs necesarios para controlar y 
organizar ese acceso.
Una de las herramientas utilizadas 
por el Kernel son las System Calls, o Lla-
madas de Sistema. Las System Calls son 
responsables por el intercambio de recursos 
de forma organizada y protegida, como 
protección de memoria o la monopolizaci-
ón del procesador. El sistema debe impe-
dir que los programas de usuario accedan 
directamente los recursos de hardware.
Usted debe estar preguntándose: 
¿Por qué los procesos y aplicaciones no 
pueden acceder directamente a los recursos 
de hardware?, pues hay una explicación 
muy sencilla para eso. Un programa mal 
desarrollado podría comprometer todo 
el sistema operacional causando grandes 
problemas.
Un ejemplo bien sencillo, imagi-
nemos que un programador cree que su 
programa es más importante que todos 
los otros y resuelve designar el recurso 
de la CPU, exclusivamente para él. ¿Qué 
ocurriría?
Primero, el sistema trabaría, pues, 
junto con los procesos de los usuarios y 
de las aplicaciones, están en ejecución 
los procesos del sistema operacional. Al 
monopolizar el procesador para un úni-
co proceso, todos los otros no ganarían 
derecho de uso de la CPU, luego, todo 
el sistema trabaría. Pero, seamos menos 
radicales. Suponiendo que el proceso no 
asigne todo el procesador para él, pero sí 
los recursos de audio de la computadora, 
entonces, en el caso de que el otro proceso 
necesite acceder al dispositivo de sonido, 
él no conseguirá y trabaría el programa 
e, incluso, el sistema. Monopolio en el 
sistema operacional no puede ocurrir.
De esa manera, para acceder a las 
capas de hardware, los procesos y aplica-
ciones se comunican con las System Calls 
y ellas administran el intercambio de los 
recursos, para que no haya monopolio en 
ninguna circunstancia, ya que eso puede 
comprometer todo el sistema operacional. 
Las system calls trabajan de forma muy 
estrecha con el Kernel, con el objetivo de 
garantizar toda la gestión y transparencia 
del hardware.
11SISTEMAS OPERACIONALES
Modos de Acceso
Como ya percibimos, el sistema ope-
racional tiene que ser muy organizado para 
conseguir administrar todos los hardware y 
garantizar su buen funcionamiento, junto 
con aplicativos y programas que son ejecu-
tados con él. Una técnica muy importante 
utilizada en los sistemas son los modos de 
accesos.
Algunas instrucciones que pueden 
comprometer el sistema no pueden ser ac-
cedidas por cualquier usuario o programa.
Con el objetivo de proteger la inte-
gridad del sistema, las instrucciones privi-
legiadas no pueden ser accedidas por pro-
grama de usuarios, siendo que solamente 
las instrucciones
no privilegiadas están disponibles 
para los programas de usuarios.
Esa división ocurre con los modos de 
acceso al sistema, siendo ellos, el modo de 
acceso usuario y el modo de acceso Kernel. 
Instrucciones muy específicas del sistema 
que pueden comprometer su funciona-
miento, son ejecutadas solamente por los 
procesos del propio sistema, con system 
calls específicas, con privilegios en modo 
Kernel. Básicamente, el modo usuario de 
acceso consigue efectuar operaciones que 
no comprometen el sistema, ya, el modo 
Kernel ejecuta operaciones que impactan 
en la gestión del sistema, como asignación 
de memoria, alteración de orden de plani-
ficación de procesos entre otros.
Los modos de acceso contribuyen 
también para que ningún proceso asigne los 
recursos de forma monopólica, impidiendo 
el buen funcionamiento del sistema.
Arquitecturas
Los sistemas operacionales no son 
todos iguales. Cada uno es desarrollado 
de acuerdo con una finalidad específica 
y poseen una arquitectura singular. Es-
tudiaremos, rápidamente, algunas de las 
arquitecturas más comunes.
Arquitectura Monolítica
La arquitectura monolítica es una de 
las más sencillas. Prácticamente, todo el 
código de desarrollo de esa estructura es 
asignado en apenas un bloque de progra-
mación. El SO entero es ejecutado como 
un único programa en el modo núcleo.
En este tipo de arquitectura el siste-
ma y las rutinas pueden interactuar libre-
mente unas con las otras. Es un sistema 
formado por varios procedimientos que 
son compilados separadamente y después 
unidos, formando un único y gran progra-
ma ejecutable.
La gran ventaja de esa arquitectura 
es su simplicidad para programación y 
también el alto desempeño que ellas pose-
en, ya que no son peajes entre los recursos 
y todo es accedido mucho más rápido. Sin 
embargo, toda ventaja posee su desventaja.
La desventaja principal de la arqui-
tectura monolítica es que los niveles de 
funcionalidad no son bien separados. El 
12SISTEMAS OPERACIONALES
exceso de libertad vuelve al sistema muy 
vulnerable, o sea, en el caso de que ocur-
ra cualquier problema en una parte del 
sistema, todo él será afectado y parará de 
funcionar correctamente.
Arquitectura de Capas
Muy bien, ya que dejar todo el 
sistema en un único bloque lo deja muy 
vulnerable, la solución es separarlos en 
capas. Esa arquitectura divide el sistema 
operacional en sistemas sobrepuestos unos 
a los otros. Cada módulo ofrece un con-
junto de funciones que, a su vez, puede 
ser utilizado por otros módulos dentro del 
sistema operacional.
La ventaja de la estructuración en 
capas es justamente lo opuesto de la des-
ventaja de los sistemas monolíticos. Esa ló-
gica permite aislar el sistema operacional, 
facilitando su alteración y debug, además 
de crear una jerarquía en los niveles de 
modos, protegiendo las capas más internas 
del sistema, luego, si un problema ocurre 
en una de las capas, las otras no serán 
afectadas.
Pero, como la vida no es “un mar de 
rosas”, la ventaja de protección trae para 
los sistemas en capas la desventaja de la 
lentitud. Sistemas en Capas tienden a ser 
más lentos, pues existen varios peajes de 
acceso a los recursos e intercambios, con 
el objetivo de proteger el sistema, entonces 
queda la duda: ¿Es mejor tener un sistema 
con performance, pero con más oportuni-
dades de fallas, o es mejor tener un sistema 
muy seguro y con menos performance?
La respuesta es muy sencilla: De-
pende, todo depende. 
Síntesis Final
Llegamos al final de este capítulo 
y creo haber cumplido el objetivo de pre-
sentar lo que es un sistema operacional y 
dónde ellos pueden ser encontrados. Actu-
almente, todo y cualquier dispositivo más 
“inteligente” necesita un sistema siendo 
ejecutado para controlarlo. Estudiamos 
su historia y su arquitectura, para que, 
de esa manera podamos entender mejor 
cómo manipular los sistemas en nuestro 
día a día, entendiendo sus limitaciones y 
sus funcionalidades.
Los conceptos básicos de los sis-
temas fueron presentados, entonces, les 
pido los que recuerden durante toda su 
carrera en la tecnología, pues, aprender 
conceptos y tenerlos bien fundamentados, 
los volverán profesionalesmejores y más 
asertivos en los proyectos que desarrollen.
EJERCICIOS
1) Cuando el sistema es iniciado ocurre el proceso de 
bootstrapping. Ese proceso hace una verificación de la “salud” 
de la computadora. Entonces, explique cuál es la importancia 
de las verificaciones efectuadas en el bootstrapping para el 
buen funcionamiento del sistema operacional.
2) Podemos afirmar que existen 2 funciones macros básicas 
de un sistema operacional. La primera es efectuar la gestión 
de todos los recursos de hardware disponibles y controles 
de acceso a ellos. Conforme esto, apunte cuál es la segunda 
función básica y muy importante del sistema operacional.
3) Las arquitecturas de los sistemas operacionales pueden 
ser divididas en Monolítica y en Capas. La estructura en capa 
trae una mayor seguridad y confiabilidad para el sistema, pues 
permite aislar partes del sistema como si fueran capas, y, en 
el caso de que ocurra un problema en una capa, no afectará 
la otra.
Ante ese contexto, ¿cuál es la mayor diferencia y ventaja al 
utilizar una estructura en Capas? ¿Cuál es el punto negativo 
al escoger este abordaje?
4) ¿Por qué el Kernel debe ser el primero a ser cargado en 
memoria RAM en el proceso de inicialización del sistema?
5) Diferencie System Call de Kernel y apunte cuál es la función 
de ellas dentro del sistema operacional.
6) Muchas instrucciones son restrictas y solamente accedidas 
por el sistema. Existen los modos de acceso para garantizar la 
seguridad e integridad del sistema operacional. ¿Cuáles son 
ellos? Explique cada uno.
14SISTEMAS OPERACIONALES
GESTIÓN DE 
PROCESO
Procesos, procesos y procesos. ¿Por qué 
todo en un Sistema Operacional acaba en 
procesos?
¿Cuántas veces nos deparamos con un programa trabado 
y luego después una caja se abre pidiendo: “¿Desea encerrar 
el proceso?” o a veces el programa queda en el estado de “no 
respondiendo”. Al final ¿qué son procesos? ¿Para qué sirven?
Podemos afirmar que todo dentro de un sistema ope-
racional puede ser resumido a procesos. Definitivamente, 
toda capa lógica del sistema es fundamentada en procesos y 
comprende su funcionamiento, permitiéndonos desarrollar 
sistemas cada vez más robustos y con performance.
En esta etapa, comprenderemos cómo el administrador 
de procesos de un sistema operacional trabaja y cuál es su im-
portancia para el buen funcionamiento de todos los programas 
y aplicaciones utilizados en él. 
En esta etapa, comprenderemos cómo el 
administrador de procesos de un sistema 
operacional trabaja
15SISTEMAS OPERACIONALES
La Gestión de Procesos
La Gestión de Proceso es, de lejos, 
el principal dentro de un sistema opera-
cional, aquí, detallaremos bastante ese 
asunto. Prácticamente, todo dentro de un 
sistema operacional es un proceso, y saber 
administrar los procesos, de forma cohe-
rente, es un factor fundamental para que 
un sistema operacional tenga éxito en su 
implementación.
Antiguamente, teníamos compu-
tadoras que ejecutaban apenas una tarea 
(hasta hoy ella ejecuta apenas una tarea 
por vez, pero son innúmeras tareas) y la 
organización de los procesos era mucho 
más sencilla, pues el programador del sis-
tema sabía el orden en que cada proceso 
sería ejecutado y cuáles procesos serían 
ejecutados. Así, con la evolución de las 
computadoras surgió un nuevo paradigma. 
Ahora, los programadores de los sistemas 
no saben cuántos procesos serán ejecuta-
dos y ni el orden en que serán requeridos, 
de esa manera, ese aspecto trajo grandes 
problemas para los sistemas operacionales.
Aún, tenemos que llevar en conside-
ración que la informática, al contrario de 
lo que todos dicen, es una ciencia exoté-
rica y no exacta. Muchas rarezas ocurren, 
aun contrariando la lógica booleana que 
impregna la computación, siendo agra-
vado por el factor “usuario”. Nosotros, 
usuarios, complicamos aún más el buen 
funcionamiento de los procesos dentro de 
un sistema operacional, pues cada vez más 
queremos hacer muchas cosas al mismo 
tiempo. Creo que todos ya jugaron un 
juego online, oyendo música y con el chat 
abierto. Sólo en ese contexto, innúmeros 
procesos que surgieron de la nada, en el 
medio de las rutinas del sistema operacio-
nal y que deben ser atendidas, al final, el 
sistema operacional fue creado para “ser-
vir” al usuario y él debe conseguir hacer 
eso.
En este momento, surge el primer 
punto que debe ser analizado. Abra el ad-
ministrador de tareas del sistema opera-
cional que usted está usando y vea cuántos 
procesos están en este momento siendo eje-
cutados. Teóricamente, todos están siendo 
ejecutados al mismo tiempo, ¿cierto?
Ahora, haga otra prueba. Aún con el 
administrador de procesos abierto, coloque 
una música para tocar en su computadora. 
Perciba que el proceso del player de au-
dio será cargado en la lista de procesos en 
ejecución, luego, para usted es perceptible 
que todo está siendo ejecutado al mismo 
tiempo.
Vean, entonces, que llegamos en 
la primera “rareza” de las muchas que 
desvelaremos durante nuestras clases. El 
procesador trabaja apenas con un proce-
so por vez. ¡Sí, pueden creerlo! Nada, en 
la computadora, es ejecutado al mismo 
tiempo, pues, físicamente el procesador 
consigue procesar apenas un proceso de 
cada vez en su núcleo.
Conforme Tanenbaum (2005, pag. 
53), “Estrictamente hablando, mientas en 
cada instante la CPU ejecuta solamente un 
programa, en el transcurso de un segundo 
ella puede trabajar sobre varios progra-
mas, dando, a los usuarios, la ilusión de 
paralelismo.
16SISTEMAS OPERACIONALES
Por lo tanto, tenemos la ilusión 
que todo está siendo ejecutado al mismo 
tiempo, pero no lo está, todo gira en un 
pseudo-paralelismo, siendo ejecutado uno 
de cada vez. ¿Usted aún está oyendo la 
música que pedí para ser ejecutada? En-
tonces, usted puede estar preguntándose: 
“Si cada proceso es ejecutado de forma 
individual, ¿por qué la música no salta o 
pierde calidad?”, hago mías las palabras del 
autor Tanenbaum, dentro de 1 segundo el 
procesador consigue procesar varios pro-
cesos y muy rápidamente. El cambio de 
procesos en la CPU es tan rápido que, para 
nosotros, seres humanos, es imperceptible 
ese cambio, luego, la música parece estar 
siendo ejecutada al mismo tiempo, junto 
con los otros procesos, cuando, en realidad, 
no lo está.
La Gestión de Proceso tiene como 
tareas las siguientes acciones, entre otras, 
dentro del Sistema Operacional:
• Escalonamiento de procesos;
• Sincronización de procesos;
• Tratativas de DeadLocks;
• Mecanismos de protección y segu-
ridad.
Como vimos, existen varios procesos 
ejecutando, en un compás frenético, en 
el sistema operacional. La difícil tarea de 
administrar cada uno de ellos hace que el 
administrador de procesos utilice algunas 
técnicas para organizarlos. Un descriptor 
de proceso llamado Proces Control Block 
es utilizado para esa finalidad de gestión.
De esa manera, el bloque de con-
trol del proceso almacena informaciones 
sobre cada proceso. Esas informaciones 
son utilizadas por el administrador para 
determinar cuál proceso tendrá derecho 
de uso de la CPU, además de su prioridad 
de procesamiento. Algunas informaciones 
adicionales y muy importantes también es-
tán descritas en él. Básicamente, el Proces 
Control Block almacena las informaciones 
de los procesos y sirve de referencia para 
el administrador de procesos.
Creación de procesos 
Bueno, los procesos no aparecen 
del “más allá”, todos los procesos deben 
ser creados. El administrador de procesos 
debe tener la capacidad de administrar 
eso de forma muy hábil. Como cita Ta-
nenbaum (2005, pág. 54):
“sin embargo, en sistemas de propó-
sito general, es necesaria alguna manera 
de crear y terminar procesos durante la 
operación, cuando sea necesario.”
Básicamente, contamos con 4 accio-
nes que generan la creación de procesos 
en los sistemas operacionales:
• Inicio del sistema;
• Ejecución de una System Call de 
creación de procesos por un proceso 
en ejecución;
• Una requisición del usuario paracrear un nuevo proceso;
• Inicio de un job en lote.
17SISTEMAS OPERACIONALES
Muchos procesos son creados con 
la inicialización del sistema operacional. 
Cuando el Kernel es cargado en memo-
ria, él ya crea los procesos de gestión del 
sistema operacional para que él pueda 
ser ejecutado. Algunos procesos cargan 
en primer plano, interactuando con los 
usuarios; otros procesos son ejecutados 
en segundo plano, no integrando a un 
usuario, pero realizando alguna función 
específica. (Tanembaum, 2005).
Algunos procesos son creados por 
otros procesos. Es extraña esa afirmativa 
¿no? Pero es de esa manera que funciona. 
Un proceso que está en ejecución puede 
crear un nuevo proceso, si es necesario. 
De forma práctica, usted está jugando su 
juego preferido en su computadora y decide 
jugar online con sus amigos. El proceso 
del juego ya existe y está en ejecución, 
pero, en el instante que usted quiera jugar 
online. Así, el proceso del game crea un 
proceso de llamada de sistema para que él 
pueda obtener acceso al hardware de red y 
consiga hacer que usted se conecte en un 
servidor del juego por internet. Un proceso 
creando un nuevo proceso para ayudarlo.
Con los sistemas multitareas y la 
globalización de las computadoras perso-
nales, los sistemas, cada vez más, surgen 
con innúmeros “accesorios” de nuevos pro-
gramas y aplicaciones para los usuarios. 
Una de las mayores fuentes de creación 
de procesos son los usuarios. Un proceso 
es creado para atender una requisición de 
usuario. Cada programa que usted ejecuta 
en su computadora es un nuevo proceso 
que está siendo generado, por lo tanto, el 
usuario requiere la creación de muchos 
procesos mientras está utilizando la com-
putadora.
La creación de procesos a través 
de job en lote, es aplicado en situaciones 
específicas. También, una herramienta 
de backup es un ejemplo de job en lote. 
Los Jobs de backup son ejecutados por 
el administrador de backup, eso, si hay 
recurso disponible para él en una hora 
determinada. Esa acción del software de 
backup, generará nuevos procesos para 
colecta de los datos de backup.
En ese contexto de creación de pro-
cesos, tenemos los árboles de procesos. 
Cada proceso llamado de “padre” puede 
crear procesos “hijos” vinculados a ellos, 
pero los procesos hijos pueden crear nuevos 
procesos vinculados a los mismos. Enton-
ces, tendremos una Jerarquía de Procesos. 
En sistemas Unix, esa jerarquía es aplicada, 
pero en el sistema operacional Windows 
no, pues todos los procesos son creados 
de forma igual.
El Unix llama esa jerarquía de “Gru-
po de Procesos”, y cuando el proceso “pa-
dre” es afectado, todos sus hijos también lo 
serán, o sea, en el caso de que el proceso 
padre sea “muerto”, todos sus hijos son 
encerrados también.
En el Windows, al contrario del 
Unix, cuando un proceso padre es “muer-
to”, sus hijos no mueren junto, eso no es 
muy efectivo contra los virus, pues no sirve 
de nada matar sólo el proceso que generó el 
virus, se deben eliminar por completo to-
dos los procesos, matando todos sus hijos.
18SISTEMAS OPERACIONALES
Término de Procesos
Todos los procesos tienen su final. 
Ningún proceso puede ser ejecutado de 
forma infinita (teóricamente él no puede), 
todos ellos son creados y después encer-
rados. De forma bien sencilla y práctica, 
existen 4 principales motivos para que un 
proceso sea terminado:
• Salida normal: Cuando no ocurre 
ningún error a la vida de un proceso 
acabado, cuando el mismo terminó 
de hacer su trabajo, así de sencillo. 
Él tenía una tarea “X” para ser eje-
cutada y después de terminarla, el 
proceso es encerrado, desocupando 
el área de memoria y saliendo de la 
fila de planificación;
• Salida por error: Un proceso es en-
cerrado de error, cuando es desig-
nado a él que realice una tarea y no 
puede realizarla por falta de algún 
elemento, entonces, él es encerrado, 
por ejemplo, si usted es un progra-
mador y tiene que compilar el código 
fuente de un sistema. Usted guardó 
el archivo con el nombre codigo1.
py, entonces, ejecuta el comando de 
compilación referenciando el archivo 
codigo.py. El compilador (proceso) 
buscará el archivo codigo1.py, pero, 
ese archivo no existe, entonces, él 
reportará un error y será encerrado.
• Salida por Error Fatal: Aun usando 
el ejemplo relatado anteriormente. 
Usted ejecutó el compilador e hizo 
la referencia cierta al nombre del 
archivo del código fuente. Entonces, 
el compilador empezará a realizar 
el trabajo de compilación, pero, al 
desarrollar el código, usted se equi-
vocó en algunas líneas dentro de él, 
luego, el compilador no conseguirá 
terminar la compilación, debido al 
error, y encerrará el proceso. Er-
rores fatales son errores asociados 
a equivocaciones de código de los 
programas, que los impiden de ser 
ejecutados de forma íntegra.
• Cancelación por otro proceso: Un 
proceso puede encerrar otro proceso. 
El ejemplo más clásico y común de 
eso es cuando necesitamos encerrar 
un programa que no está más res-
pondiendo y está trabado. Al abrir 
el administrador de procesos, pode-
mos forzar su encerramiento. En el 
Windows, al forzar el encerramien-
to de un proceso, estamos creando 
un nuevo proceso llamado taskkill.
exe que “matará” el proceso que está 
trancado. En el Linux, utilizamos el 
proceso kill para “matar” procesos 
de forma abrupta.
Estado de los Procesos
El administrador de procesos es 
extremamente organizado, y para garan-
tizar que ellos sean ejecutados de forma 
ordenada, el sistema se organiza a través 
de 3 estados para los procesos, dándoles 
derecho o no de uso de la CPU.
El primer estado es el de En Eje-
cución. El proceso recibe ese status cuando 
está en ejecución en la CPU. Mientras esté 
en ejecución en la CPU, su status, en el 
bloque de control de procesos, estará como 
“En Ejecución”.
El segundo estado es “Listo”. Un 
proceso está con el status de Listo cuando 
él está en la fila de procesos aguardando 
19SISTEMAS OPERACIONALES
su vez para ser procesado. El proceso ya 
tiene todas las informaciones necesarias 
para ser ejecutado, basta aguardar su vez 
en la fila del planificador. En el bloque de 
control de proceso, el status del proceso 
queda como “Listo”.
El tercer estado es “Bloqueado”. Ese 
status es rotulado en el proceso cuando 
él está aguardando algún evento externo 
para ser procesado. De forma muy inte-
ligente, procesos bloqueados no están en 
la fila para ejecución y, de esa manera, 
optimiza el uso de la CPU que se con-
centrará solamente en procesos Listos. Un 
ejemplo sencillo del status bloqueado es 
la utilización de un editor de texto. Para 
el editor de texto es muy importante que 
el usuario interactúe con el teclado. En el 
caso de que él esté abierto, y el usuario no 
esté digitando, el sistema puede bloquear 
el proceso del editor de texto, retirándolo 
de la fila, quedando en el aguardo para 
la interacción del usuario en el teclado, 
con el objetivo ponerlo nuevamente en 
la fila de Listos. En el bloque de control 
de procesos, su status es registrado como 
“Bloqueado”.
Perciban que en todos los casos 
comentamos sobre el registro de él en el 
bloque de control de proceso. Pues una de 
sus funciones es registrar el estado de cada 
proceso para que el planificador pueda 
decidir cuál proceso planificará para el 
procesamiento. Estudiaremos los plani-
ficadores que están a continuación.
Otra característica muy importante 
es que ningún proceso puede ser retirado 
del estado de “Bloqueado” y ser actualiza-
do para el status de “En Ejecución”. Todos 
los procesos sólo serán ejecutados si están 
pasado por la fila de “Listos”, o sea, en el 
caso de que un proceso esté bloqueado, 
él deberá ser actualizado para la fila de 
listos y sólo, más adelante, ganará derecho 
de uso de la CPU, así como, entrar en el 
status de “en ejecución”.
Planificación de Procesos
Como ya vimos, existen innúmeros 
procesos que están siendo ejecutados en el 
sistema operacional, pero la CPU ejecuta 
apenas un proceso de cada vez. Éstees el 
gran desafío del administrador de pro-
cesos. Garantizar que todos los procesos 
sean procesados y que la CPU no se quede 
de alguna manera ociosa, optimizando, al 
máximo, el procesamiento.
Para organizar el procesamiento, el 
administrador utiliza la técnica de plani-
ficadores de procesos. El planificador es 
un subsistema del sistema operacional, 
responsable por decidir cuál proceso tendrá 
derecho de uso de la CPU. Cada planifi-
cador posee un algoritmo específico que 
decide cuál proceso será ejecutado y cuál 
será el orden de ejecución. La decisión 
del planificador es tomada en virtud de 
algunas informaciones de los procesos y 
de la lógica donde será implementado.
Algunos algoritmos son preferentes 
y otros son no preferentes. Cuando hay 
preferencia, el algoritmo del planificador 
puede interferir en el orden de la fila de 
procesamiento, alterándola de la forma que 
quiera, retirando o concediendo el derecho 
de uso de CPU a un proceso.
En planificadores no preferentes, no 
hay esa f lexibilidad, y, una vez que la fila 
20SISTEMAS OPERACIONALES
del planificador está formada, el orden de 
procesamiento de los procesos será siempre 
la misma, sin sufrir alteración.
Planificación FIFO
Un planif icador con una lógica 
FIFO trabaja de una forma muy sencilla. 
Todos los procesos forman una fila en 
el planificador. Cada proceso posee una 
prioridad y un tiempo de ejecución. El 
tiempo de ejecución es cuánto de tiempo, 
asignado de la CPU, él necesita para ser 
procesado y finalizado. El algoritmo de 
FIFO mira para la fila de procesos que 
están aguardando para ser procesados y 
escoge el que llegó primero para ganar 
derecho de uso de la CPU.
En la lógica del FIFO, el primer 
proceso que entre en la fila será el primero 
que será procesado, o sea, el primero que 
llegue será el primero que salga (FIFO es 
anagrama de First in First out).
Podemos comparar el FIFO a una 
fila de banco, donde cada persona posee 
una clave de espera, y son llamadas por 
las asistentes de acuerdo con el orden de 
llegada y claves de espera.
El FIFO es un algoritmo no prefe-
rente, o sea, el orden de procesamiento de 
la fila no puede ser alterada por el sistema, 
independientemente del número de pro-
cesos o prioridad, cada proceso aguardará 
el tiempo necesario para ser procesado. A 
partir del momento que el proceso gana 
derecho de uso de la CPU, él sólo saldrá 
de ella, después de que esté con su pro-
cesamiento completo, o sea, si un proce-
so demora 10ms para ser procesado, él 
mantendrá la CPU con él por 10ms y sólo 
después cederá el derecho de acceso a ella.
Planificación SJF – Proceso más corto 
primero
La planificación SJF (Shortest Job 
Frist), también es no preferente. La orga-
nización de la fila de ese algoritmo es un 
poco diferente del FIFO. El SJF organiza 
la fila de espera de acuerdo con el proceso 
que posee menor tiempo estimado de pro-
cesamiento y lo pone delante de la fila. En 
una analogía, podemos tomar los cajeros 
rápidos de los supermercados. Los clientes 
que poseen hasta 10 ítems, no necesitan 
enfrentar una fila larga y demorada, ellos 
son atendidos primero en cajeros especia-
les, pues poseen menos ítems.
En la computadora no tenemos un 
procesador para procesos menores y otro 
procesador para procesos mayores, tene-
mos apenas una CPU, por lo tanto, el SJF 
organiza la fila de forma que los procesos 
con menor tiempo estimado de ejecución 
sean procesados antes que los demás.
Planificación por Prioridad
Este algoritmo, diferente de los 
otros, puede ser, tanto preferente como 
no preferente, depende de cómo él será 
implementado en el sistema.
El algoritmo de FIFO no lleva en 
consideración el tiempo de ejecución de 
cada proceso ni su prioridad. El algoritmo 
SJF lleva en consideración solamente el 
tiempo de ejecución de cada proceso. El 
Planificación por Prioridad, en contra-
partida, analiza solamente la prioridad 
de cada proceso.
21SISTEMAS OPERACIONALES
La fila es organizada siempre de ma-
nera que los procesos de mayor prioridad 
ganen derecho de uso de la CPU antes de 
los otros. En los casos donde es preferente, 
el sistema puede alterar el orden de la fila 
de procesamiento a cualquier instante, en 
el caso de que llegue un proceso de mayor 
prioridad que los demás que están en la 
fila, aguardando para ser procesados.
Un óptimo ejemplo de eso es la fila 
de ancianos en el banco. Por más que sea 
su vez de ser atendido por causa del orden 
de llegada, si un anciano llega al banco, 
él ganará la prioridad de atención y usted 
tendrá que esperar hasta que él sea aten-
dido. En el caso de que lleguen muchos 
ancianos, usted se quedará esperando hasta 
que todos sean atendidos.
En este caso, tenemos un gran pro-
blema. Procesos con prioridad menor pue-
den quedar infinitamente esperando en la 
fila para ser procesados, a eso le damos el 
nombre de starvation.
No es interesante, para el sistema, 
que un proceso se quede infinitamente 
esperando y nunca sea procesado, por eso 
se creó una técnica denominada aging. 
¿Cómo resolver el problema de espera? 
Sencillo, basta incrementar la prioridad 
de esos procesos que están hace un buen 
tiempo esperando, haciendo que sean más 
prioritarios y puedan ganar el derecho de 
uso de la CPU, eso es el aging.
Planificación Round Robin
Algoritmo nativamente preferen-
te. Es utilizado en sistemas de tiempo 
compartido. El Round Robin no lleva en 
consideración la prioridad ni el tiempo de 
ejecución de los procesos. Él divide la CPU 
en time-slice o cuantum, que es un pedazo 
de tiempo fijo, el cual, generalmente, está 
entre 100ms y 300ms.
Cada proceso gana derecho de uso 
de la CPU por 100ms y después pierde ese 
derecho, yendo para el final de la fila. Así, 
en vez de que el proceso ocupe la CPU 
durante todo su tiempo de ejecución y 
salga solamente después de que esté ter-
minado (como en los otros algoritmos), él 
22SISTEMAS OPERACIONALES
se queda por 100ms, y, en el caso de que 
no haya sido completo, irá para el final de 
la fila, esperando nuevamente su vez para 
usar la CPU.
Suponiendo que un proceso posea su 
tiempo de ejecución de 400ms, él ganará 
derecho de uso de la CPU por 100ms y 
después irá para el final de la fila. Ese pro-
ceso será repetido 4 veces, hasta que esté 
con su procesamiento completo. Debido 
a esa característica, el tiempo de espera 
de los procesos es mayor que en los otros 
algoritmos.
Además de eso, como es preferente, 
el orden de la fila de procesamiento puede 
ser alterada por el sistema siempre que sea 
necesario, no siendo una constante dentro 
del sistema.
Turnaround
Un concepto muy importante que 
debemos saber es el Turnaround. Una de 
las formas de medir la eficiencia de un 
planificador es con el cálculo de Turnarou-
nd medio que él posee. Podemos usar ese 
valor para decidir cuál planificador es más 
eficaz en la organización de determinados 
procesos. Pues, no existe un planificador 
mejor o peor que otro, lo que tenemos son 
situaciones diferenciadas y cada planifica-
dor debe ser aplicado de forma coherente 
a cada una de ellas.
El Turnaround consiste en la suma 
del tiempo que el proceso quedó esperando 
para ser procesado con su tiempo de pro-
cesamiento, generando, así, el tiempo total 
que el proceso demoró para ser finalizado.
Turnaround – planificador FIFO
El planificador FIFO es uno de los 
más sencillos. El primero que entra en la 
fila, es el primero que será procesado. De 
la misma manera, el cálculo de Turnarou-
nd medio del planificador FIFO es muy 
sencillo.
Utilicemos el siguiente ejemplo:
Imaginemos que 5 procesos entran 
en el planificador para ser ejecutados. Los 
procesos P1, P2, P3, P4 y P5 en el orden 
de llegada, de acuerdo con la tabla que está 
a seguir:
Proceso Tiempo de Procesamiento Prioridad
P2 1 0
P3 3 4
P1 2 8
P5 1 3
P4 4 2
23SISTEMAS OPERACIONALES
Entonces, con la lógica del FIFO, tendremos la siguiente secuencia de procesamiento: P2, P3, P1, P5 E P4. Siguiendo la 
lógica del planificadorpodemos representar gráficamente el procesamiento de esta forma:
Tiempo de procesamiento 
Ahora, repetiremos la misma tabla, pero calcularemos el Turnaround de cada uno de los procesos de forma individual, 
recordando que el Turnaround es la suma del tiempo de espera más el tiempo de procesamiento:
Proceso P2: Esperó 0, pues fue el primero que llegó y tiene su tiempo de procesamiento de 1, luego su Turnaround es 1.
Proceso P3: Esperó 1 y su tiempo de procesamiento es 3, luego su Turnaround es 4.
Proceso P1: Esperó 4 y su tiempo de procesamiento es 2, luego su Turnaround es 6.
Proceso P5: Esperó 6 y su tiempo de procesamiento es 1, luego su Turnaround es 7.
Proceso P4: Esperó 7 y su tiempo de procesamiento es 4, luego su Turnaround es 11.
 
 P4 P4 P4 P4
 P5 
 P1 P1 
 P3 P3 P3 
P2 
 T=11
 T=7 P4 P4 P4 P4
 T=6 P5 
 T=4 P1 P1 
T=1 P3 P3 P3 
P2 
24SISTEMAS OPERACIONALES
Tiempo de procesamiento 
Ahora que sabemos el Turnarou-
nd de cada uno de los procesos, podemos 
calcular el Turnaround medio del plani-
ficador FIFO sumando todos y dividien-
do por el número de procesos que fueron 
ejecutados.
Turnaround medio: (1 + 4 + 6 +7 + 
11)/5 = 5,8
Turnaround – planificador SJF
El planificador SJF utiliza como 
criterio de planificación la priorización 
de procesos con tiempo de procesamiento 
menor, siendo así, los más “cortos” son 
procesados primero.
Utilizaremos el mismo ejemplo:
Imaginemos que 5 procesos entran 
en el planificador para ser ejecutados. Los 
procesos P1, P2, P3, P4 y P5 en el orden 
de llegada, de acuerdo con la tabla que 
está a seguir:
Entonces, con la lógica del SJF tendremos la siguiente secuencia de procesa-
miento: P2, P5, P1, P3 y P4. Fíjese en los procesos P2 y P5, ellos poseen tiempo igual 
de procesamiento, en estos casos, el primero que llegue será procesado. Siguiendo la 
lógica del planificador, podemos representar gráficamente el procesamiento de esta 
forma:
Proceso Tiempo de Procesamiento Prioridad
P2 1 0
P3 3 4
P1 2 8
P5 1 3
P4 4 2
 
 P4 P4 P4 P4
 P3 P3 P3 
 P1 P1 
 P5 
P2 
25SISTEMAS OPERACIONALES
Tiempo de procesamiento 
 Ahora, repetiremos la misma tabla, pero calcularemos el Turnaround de cada 
uno de los procesos de forma individual, recordando que el Turnaround es la suma 
del tiempo de espera más el tiempo de procesamiento:
Proceso P2: Esperó 0, pues fue el primero que llegó y tiene su tiempo de procesa-
miento de 1, luego su Turnaround es 1.
Proceso P5: Esperó 1 y su tiempo de procesamiento es 1, luego su Turnaround es 2.
Proceso P1: Esperó 2 y su tiempo de procesamiento es 2, luego su Turnaround es 4.
Proceso P3: Esperó 4 y su tiempo de procesamiento es 3, luego su Turnaround es 7.
Proceso P4: Esperó 7 y su tiempo de procesamiento es 4, luego su Turnaround es 11.
Tiempo de procesamiento 
Ahora que sabemos el Turnaround de cada uno de los procesos, podemos cal-
cular el Turnaround medio del planificador SJF, sumando todos y dividiendo por el 
número de procesos que fueron ejecutados.
Turnaround medio: (1 + 2 + 4 +7 + 
11)/5 = 5
Turnaround – planificador por Prioridad
El planificador por Prioridad utiliza 
como criterio de planificación la prioriza-
ción de procesos, de manera que, cuanto 
mayor sea su prioridad, antes él será pro-
cesado.
Utilizaremos el mismo ejemplo:
Imaginemos que 5 procesos entran 
en el planificador para ser ejecutados. Los 
procesos P1, P2, P3, P4 y P5 en el orden 
de llegada, de acuerdo con la tabla que 
está a seguir:
 T=11
 T=7 P4 P4 P4 P4
 T=4 P3 P3 P3 
 T=2 P1 P1 
T=1 P5 
P2 
Proceso
Tiempo de 
Procesamiento
Prioridad
P2 1 0
P3 3 4
P1 2 8
P5 1 3
P4 4 2
26SISTEMAS OPERACIONALES
Entonces, con la lógica del planificador por Prioridad, tendremos la siguiente secuencia de procesamiento: P1, P3, P5, P4 
y P2. Siguiendo la lógica del planificador, podemos representar gráficamente el procesamiento de esta forma:
Tiempo de procesamiento 
Una vez más, repetiremos la misma tabla, pero calcularemos el Turnaround de cada uno de los procesos de forma indivi-
dual, recordando que el Turnaround es la suma del tiempo de espera más el tiempo de procesamiento:
Proceso P1: Esperó 0, pues fue el primero que llegó y tiene su tiempo de procesamiento de 2, luego su Turnaround es 2.
Proceso P3: Esperó 2 y su tiempo de procesamiento es 3, luego su Turnaround es 5.
Proceso P5: Esperó 5 y su tiempo de procesamiento es 1, luego su Turnaround es 6.
Proceso P4: Esperó 6 y su tiempo de procesamiento es 4, luego su Turnaround es 10.
Proceso P2: Esperó 10 y su tiempo de procesamiento es 1, luego su Turnaround es 11.
 
 P2
 P4 P4 P4 P4 
 P5 
 P3 P3 P3 
P1 P1 
 T=11
 T=10 P2
 T=6 P4 P4 P4 P4 
 T=5 P5 
T=2 P3 P3 P3 
P1 P1 
27SISTEMAS OPERACIONALES
Tiempo de procesamiento 
Ahora que sabemos el Turnaround 
de cada uno de los procesos, podemos cal-
cular el Turnaround medio del planifica-
dor SJF, sumando todos y dividiendo por el 
número de procesos que fueron ejecutados.
Turnaround medio: (2 + 5 + 6 + 10 + 
11)/5 = 6,8
Turnaround – planificador Round Robin
El planificador por Round Robin 
no considera ni el orden de llegada, ni el 
tiempo de procesamiento y mucho menos 
su prioridad. Para la planificación Round 
Robin es aplicado un pedazo de tiempo 
fijo para cada proceso y ellos se quedan 
ganando y perdiendo el uso de CPU hasta 
el término de su procesamiento.
Utilizaremos el mismo ejemplo:
Imaginemos que 5 procesos entran 
en el planificador para ser ejecutados. Los 
procesos P1, P2, P3, P4 y P5 en el orden 
de llegada, de acuerdo con la tabla que está a seguir: 
Entonces, con la lógica del planificador Round Robin no tendremos una lógica 
de procesamiento fija como en los otros, pues ella será variable. Siguiendo la lógica 
del planificador, podemos representar gráficamente el procesamiento de esta manera:
Tiempo de procesamiento 
Cada proceso gana uso de la CPU y pierde hasta que esté completo su proce-
samiento. Los procesos P2 y P5 poseen apenas 1 tiempo de procesamiento, por eso, 
aparecen apenas 1 vez en la representación. El proceso P1 terminó su procesamiento 
en el ciclo 6, de todo el procesamiento. Ya, el proceso P3 terminó en el ciclo 9, y, 
por fin, el proceso P4 en el ciclo 11 de procesamiento. De esta manera, el cálculo del 
Proceso Tiempo de Procesamiento Prioridad
P2 1 0
P3 3 4
P1 2 8
P5 1 3
P4 4 2
 
 P5 
 P4 
 P3 P4 
 P2 P3 P4 P4
P1 P1 P3 
28SISTEMAS OPERACIONALES
SISTEMAS OPERACIONAIS
Turnaround es un poco más complejo, pues el proceso espera más que una vez para 
ser procesado y cuando gana uso de CPU, que ni siempre es terminado.
Veamos, el cálculo será así:
P1: Durante todo el proceso acumuló una espera de 4 y posee tiempo de procesa-
miento de 2, luego el Turnaround es 6.
P2: Durante todo el proceso acumuló una espera de 1 y posee tiempo de procesa-
miento de 1, luego el Turnaround es 2.
P3: Durante todo el proceso acumuló una espera de 6 y posee tiempo de procesa-
miento de 3, luego el Turnaround es 9.
P4: Durante todo el proceso acumuló una espera de 7 y posee tiempo de procesa-
miento de 4, luego el Turnaround es 11.
P5: Durante todo el proceso acumuló una espera de 4 y posee tiempo de procesa-
miento de 1, luego el Turnaround es 5.
Tiempo de procesamiento 
Ahora que sabemos el Turnarou-
nd de cada uno de los procesos, podemos 
calcular el Turnaround medio del plani-
ficador Round Robin, sumando todos y 
dividiendo por el número de procesos que 
fueron ejecutados.
Turnaround medio: (6 + 2 + 9 + 11 
+ 5)/5 = 6,6
 
 P5 
 P4 
 P3 P4 
 P2 P3 P4 P4
P1 P1 P3 
29SISTEMAS OPERACIONALES
Síntesis Final
Llegamos al final de este capítulo,que, desde mi punto de vista, es el prin-
cipal que debe ser recordado y estudiado, 
pues, todo dentro de un sistema operacio-
nal se resume a procesos. Conseguimos, en 
esta etapa, comprender qué es un proceso, 
cómo trabaja con él el sistema, cómo es 
realizada la planificación de ellos, con el 
objetivo de compartir la CPU entre todos.
Aprendimos los principales algorit-
mos de planificación y su aplicabilidad. 
No existe un planificador mejor que otro, 
existe el que más se adecua a las necesi-
dades para las cuales fueron destinados.
Por lo tanto, concluimos esa etapa, 
volviéndonos más aptos para, en los pró-
ximos capítulos, seguir desvelando más 
misterios sobre los sistemas operacionales.
EXERCÍCIOS
Considerando la siguiente tabla, responda las preguntas. 
Supongamos que existen 5 procesos que llegan juntos a la CPU, 
en este orden de llegada:
1) Calcule el Turnaround medio del algoritmo FIFO.
2) Calcule el Turnaround medio del algoritmo SJF.
3) Calcule el Turnaround medio del algoritmo por Prioridad, 
siendo 0 la prioridad menor.
4) ¿En cuál de los algoritmos hubo menor tiempo de Turnaround 
medio?
5) EL proceso P1, tuvo su tiempo de espera mayor ¿en cuál de 
los algoritmos de planificación?
6) El proceso P5 fue ejecutado antes, pero ¿en cuál de los 
planificadores?
Proceso Tiempo de Procesamiento Prioridad
P1 2 0
P2 4 4
P3 3 2
P4 1 1
P5 2 5
31SISTEMAS OPERACIONALES
THREADS
Si un proceso en un hardware de un núcleo 
de procesamiento, trabaja muy rápido, ¿qué 
ocurría si tuviéramos más procesos y más 
núcleos de procesamiento? ¡Ocurriría algo 
mágico y exotérico!
La necesidad voraz de los usuarios y las demandas cada 
vez más “pesadas” de procesamiento estaban sobrecargando 
los procesadores, que tenían solamente un núcleo de pro-
cesamiento. Entonces, primero, para optimizar el uso de la 
CPU, fueron creadas las threads, donde hubo una ganancia 
de performance, pero, la magia sólo ocurrió realmente cuando 
los procesadores con más núcleos de procesamientos fueron 
creados. Luego, analizamos que cosas exotéricas realmente 
ocurren y la magia del paralelismo existe en los sistemas 
operacionales.Desvelemos los misterios de las Threads y sus 
aplicaciones en esta etapa de la clase.
32SISTEMAS OPERACIONALES
Los Threads
El poder computacional viene evo-
lucionando de forma extraordinaria en los 
últimos 30 años. Cada día, nuevos har-
dware son desarrollados, tecnologías son 
implementadas y crece la necesidad por 
alta performance en la ejecución de progra-
mas. Las Threads surgen en el escenario 
computacional como herramienta para 
maximizar el desempeño de los sistemas.
Entonces, los científicos de la com-
putación descubrieron una forma de ma-
ximizar el uso de la CPU y optimizar el 
procesamiento, a partir de las Threads. 
Una vez que los procesos son complejos 
y muchas veces necesitan efectuar varias 
tareas, acceder a varios recursos para con-
cluir sus tareas.
Un proceso puede dividirse en va-
rias actividades, que pueden ser ejecuta-
das competitivamente. Esas tareas son las 
Threads, siendo comprendida como una 
división que permite optimizar el tiempo 
de procesamiento y recursos utilizados por 
los procesos.
En hardware que poseen apenas un 
núcleo de procesamiento, las Threads son 
ejecutadas una de cada vez, igual a los 
procesos; ya, en hardware, que poseen 
más de un núcleo de procesamiento, ellas 
pueden ser ejecutadas de forma paralela.
¿Recuerdan que estudiamos la lógica 
de procesamiento? ¿Qué hablamos sobre 
pseudo-paralelismo y también que la CPU 
ejecuta un proceso de cada vez? Entonces, 
¿cómo explicar que las Threads pueden 
ser ejecutadas al mismo tiempo? Calma 
chicos, eso está correcto.
No solamente las Threads, pero 
también los procesos pueden ser ejecuta-
dos al mismo tiempo en arquitecturas que 
poseen más de un núcleo de procesamien-
to. Vean bien, solamente en arquitecturas 
que posean más que un núcleo de proce-
samiento. Pero ¿dónde podemos ver eso?
Al inicio, cada procesador tenía ape-
nas un núcleo de procesamiento, enton-
ces, los procesos eran ejecutados uno de 
cada vez. Más tarde, con la evolución de 
la tecnología, los procesadores empezaron 
a incorporar más de un núcleo de procesa-
miento. ¿Se recuerdan cuándo Intel lanzó 
el procesador Dual Core? Primero, apenas 
grandes servidores tenían procesadores así, 
ya que eran muy caros para nosotros, me-
ros mortales, pero, como toda tecnología, 
ella se volvió accesible para computadoras 
personales.
De esa manera, actualmente casi 
todos los nuevos procesadores ya tienen 
más de un núcleo de procesamiento, ha-
ciendo que el tiempo de ejecución de los 
procesos sea optimizado y ejecutado al 
mismo tiempo. Tenemos realmente el 
paralelismo de procesamiento. Entonces, 
usted se pregunta, ¿Cuál es la relación de 
eso con los Threads?, éste es el momento 
donde la magia ocurre.
Todos los Thread se comportan 
igual a un proceso. Si tenemos más de 
un núcleo de procesamiento, podemos 
ejecutar más de un proceso/Thread por 
vez. Si el sistema consigue ejecutar más 
cosas, él se quedará más rápido. En pro-
cesadores con cuatro núcleos, tenemos 4 
tareas siendo ejecutadas al mismo tiempo.
33SISTEMAS OPERACIONALES
Para mejorar, aún más, la perfor-
mance de los procesadores, los fabricantes 
insertan otra tecnología en ellos, la de 
multithread. A su vez, esos procesadores 
son desarrollados para optimizar, aún más, 
el uso de los threads.
¿Cuál será la afirmativa correcta? 
¿Cuál está equivocada?
La respuesta para esa pregunta es 
la siguiente. “Depende, todo depende”.
Un hardware sólo optimiza un siste-
ma o programa que fue bien desarrollado 
por los programadores.
Ejemplifiquemos mejor. Suponien-
do que tenemos un procesador, con cuatro 
núcleos de procesamiento y capacidad para 
8 Threads, pero, en el desarrollo de un 
sistema operacional nuevo, el programador 
no consideró las buenas prácticas de pro-
gramación para utilizar más de un núcleo 
y Threads. ¿Qué ocurrirá cuando él sea 
ejecutado? Él usará solamente un 25% de 
la capacidad del procesador, dejando un 
75% de CPU ociosa. Vean que ni todo es 
hardware, el software debe acompañar las 
evoluciones.
Otro ejemplo más práctico. Supo-
niendo que usted tendrá que adquirir un 
servidor para ejecutar una base de datos. 
¿Cuál es la mejor opción de compra entre 
las 3 afirmativas
citadas? La respuesta es la fatídica 
“Depende, todo depende”. Normalmente, 
los desarrolladores de base de datos ponen 
a disposición la configuración de hardwa-
re recomendada para ejecutar el sistema, 
justamente para optimizar el hardware y 
maximizar el desempeño de la aplicación.
Por lo tanto, a la hora de escoger el 
tipo de hardware, vea las especificaciones 
de los fabricantes de los sistemas, el cual 
optimizará, de forma correcta, el sistema. 
Así, no hay mejor o peor, y sí el hardware 
que se adecua mejor a la necesidad. Puede 
ser que, para un determinado sistema, sea 
mejor más Threads y menos núcleos, y 
para otro, sea, al contrario, su desempeño 
queda optimizado con más núcleos y me-
nos Threads.
Existen 2 tipos de threads. Las 
que son creadas por el Kernel del sistema 
operacional y las que son creadas por los 
programas de usuario.
Las threads de usuarios son aquéllas 
utilizadas a partir de bibliotecas específicas 
y que complementan el sistema opera-
cional, o sea, son implementadas arriba 
del Kernel por los programas de usuario. 
No son vitales para el funcionamiento del 
sistema operacional.
Ahora, les dejo un consejo.
Reflexionemos sobre algunas 
cuestiones:
• El mejor procesador es el que posee 
más núcleos de procesamiento y el 
mayor número de Threads.
• El mejor procesador es el que posee 
menos núcleos de procesamiento, 
pero, mayor número de Threads.
• El mejor procesador es el que posee 
más núcleos de procesamiento, pero 
menor número de Threads.
34SISTEMAS OPERACIONALES
Las Threads del sistema operacio-
nal, del Kernel, son aquéllas soportadas 
directamente por el sistema operacional,y, por lo tanto, son nativas de este siste-
ma. Ellas son creadas directamente por el 
Kernel y son de extrema importancia para 
el sistema operacional.
¿Por qué usar Threads?
Hablamos bastante sobre threads, 
ahora entenderemos las ventajas de utili-
zarlas. ¿Cuál es el objetivo de dividir los 
procesos en tareas menores?
La principal razón para existir 
es que en muchas aplicaciones ejecutan 
múltiples actividades al mismo tiempo, y 
descomponer en múltiples Threads deja 
más fácil el modelo de programación. El 
programador puede optimizar el acceso 
a los recursos. Si el proceso es muy com-
plejo, es complicado conseguir una buena 
performance de procesamiento, teniendo 
en vista todos los accesos a los recursos 
que él hace. Entonces, es bueno para la 
práctica segmentar los procesos en tareas 
menores para optimizar su
procesamiento, aún más, aplicándo-
se en procesadores con multithread.
Para el sistema operacional, crear 
una Thread es mucho más rápido que un 
proceso, de esta manera, tendremos op-
timización del tiempo de procesamiento 
y ejecución del proceso principal.
Con las Threads también podemos 
compartir recursos y datos entre ellas, 
como afirma Tanembaum (2005, p.63) 
“Sólo que ahora, con los Threads, adicio-
namos un nuevo elemento: la capacidad 
para que entidades paralelas compartan un 
espacio de direcciones y todos sus datos 
entre ellas mismas. Eso es esencial para 
ciertas aplicaciones, en las cuales múltiples 
procesos (con sus espacios de direcciones 
separadas) no funcionarán.”
En suma, la gran función de las 
Threads es optimizar el procesamiento, 
garantizando mayor performance.
Síntesis Final
Llegamos al final de esa etapa, un 
poco más breve que las demás, pero, de 
mucha importancia para comprender el 
funcionamiento del sistema. Actualmente, 
las Threads son ampliamente implemen-
tadas, debido al avance de la tecnología 
en la construcción de hardware más ro-
bustos que soportan múltiples núcleos de 
procesamiento.
EJERCICIOS
1) ¿Qué son Threads?
2) ¿Cuándo podemos extraer lo máximo que las Threads pueden 
ofrecernos?
3) ¿Cuál es la principal ganancia que tenemos al utilizar Threads 
en la programación?
4) ¿Por qué no podemos afirmar que un núcleo con gran 
capacidad de Threads es mejor que uno que posee más núcleos 
de procesamiento?
5) Para rodar una base de datos, ¿es mejor un procesador con 
muchas Threads?
36SISTEMAS OPERACIONALES
COMUNICACIÓN 
ENTRE PROCESOS
La comunicación es algo de extrema importancia 
en nuestro día a día. Pero, al final, ¿qué lengua 
hablan ellos?
Habíamos estudiado que todo lo que está dentro del 
sistema operacional es un proceso, y no estábamos mintiendo. 
Aún estamos hablando sobre procesos y ahora hablaremos 
de algo muy importante, la comunicación entre los procesos.
Dentro del sistema, los procesos son creados y destrui-
dos de forma frenética, y si ellos no “conversan” de la manera 
correcta, ocurrirán grandes problemas en el sistema. Puedo 
afirmar que muchas veces ellos entran en “discusión”, pelean 
e, incluso, se matan entre ellos. ¿Tiene alguna duda? ¡Verifi-
quemos entonces!
Para los procesos eso no es diferente, 
comunicación entre ellos es de extrema 
importancia.
37SISTEMAS OPERACIONALES
La Comunicación
Creo que usted ya consigue percibir 
cuán complejo es gestionar un sistema 
operacional. Prácticamente, todo es un 
proceso con prioridad, tiempo de ejecuci-
ón, preferente, etc. En este escenario, la 
harmonía entre los procesos debe ser total 
para que no ocurran problemas de asigna-
ción de recursos entre ellos, y que puedan 
comprometer el sistema.
La comunicación entre los procesos 
debe llevar algunos criterios en conside-
ración. Muchas veces un proceso necesita 
informaciones que son repasadas de otro 
proceso para poder dar secuencia a un 
procesamiento. ¿Está confuso? Sí, sé que 
pareció un poco confuso, entonces, vamos 
a ejemplificar.
Usaremos un ejemplo del sistema 
operacional Linux. ¿Nunca oyó hablar so-
bre Linux? No se asuste, hablaremos sobre 
él más adelante. Algo que debe quedar 
claro, es que todos los comandos ejecu-
tados en un sistema son un proceso, así 
como, prácticamente, todo en el sistema. Entonces, tenemos un comando para listar 
los procesos que están en ejecución en el Linux, llamado PS. Cuando lo ejecutamos, 
el sistema nos muestra una lista enorme de procesos. 
Normalmente, queremos descubrir si un proceso específico está en ejecución, 
puesto que, buscarlo en una lista enorme de procesos dificulta mucho. Entonces, 
podemos concatenar 2 comandos, de forma que un segundo comando filtre mejor 
las informaciones. Usamos en este caso el GREP.
Si utilizamos el GREP solo, él no hará nada, pues depende de la salida de un 
primer proceso para que pueda filtrar las informaciones. Si hay falla en esa comuni-
cación el comando tendrá su salida inconsistente. 
38SISTEMAS OPERACIONALES
Otro punto importante de la comu-
nicación entre procesos es la delimitación 
de áreas que pueden ser accedidas por cada 
proceso. Imaginemos que usted va a jugar 
un juego y, al mismo tiempo, quiere dejar 
un player de música abierto en la compu-
tadora con su música favorita tocando. Los 
2 procesos querrán acceder los recursos de 
audio, entonces, la orquestación de asigna-
ción de él debe ser rigurosa, para que los 
2 procesos sean atendidos. Otro punto de 
atención es que 2 procesos no pueden estar 
en la región crítica, pues pueden generar 
un gran problema.
Existe, también, la dependencia en-
tre los procesos. Muy parecido con nuestro 
primer caso, pero en él, un proceso depen-
de exclusivamente de otro proceso o grupo 
de procesos para poder ser ejecutado. Por 
esos motivos, es muy importante que haya 
una orquestación entre todos los procesos 
del sistema operacional.
Regiones Críticas
Muchos procesos pueden compartir 
recursos, una vez que ellos son finitos en 
las computadoras. Las áreas de intercambio 
de recursos son las Regiones Críticas. Para 
explicar mejor qué es una región crítica, 
usaremos un ejemplo de fácil comprensión.
Usaremos un banco como ejemplo, 
y su base de datos de clientes y cuentas 
corrientes. Como ejemplo, tomaremos, 
específicamente, una cuenta de determi-
nado cliente. Ese cliente es jubilado y por 
eso vive entrando dinero en su cuenta, 
con bastante frecuencia. Ese jubilado es 
fan de Elba Ramalho, y vive comprando 
CDs por Internet.
Existen procesos en el sistema de 
base de datos del banco que reciben la 
información que algún dinero fue abona-
do en la cuenta del cliente, yendo en su 
cuenta y aumentando su saldo. Ya, otros 
procesos reciben la información que él hizo 
una compra, y, entonces, retirarán de su 
cuenta el valor correspondiente. 
Todo muy sencillo, ¿verdad? Ni tan-
to, cosas extrañas y exotéricas acostumbran 
a ocurrir en sistemas operacionales con 
pseudo-paralelismo, que quedan conmu-
tando los procesos.
Imaginemos que el jubilado tiene 
mil reales en su cuenta, y recibirá más 
mil de décimo tercer salario. El proceso 
específico de aumento de saldo de la cuen-
ta recibe la información de ese depósito, 
verifica el valor de la cuenta del jubilado 
y hace la suma, pero aún no actualiza el 
valor en la tabla. El próximo paso de ese 
proceso es poner en la cuenta el valor final, 
que es de 2 mil reales.
En ese momento, la CPU alerta “en 
proceso, su tiempo aquí ya acabó, ahora es 
la vez de que otro proceso ejecute”. O sea, 
antes de actualizar el valor en la cuenta, 
hubo una conmutación, salió un proceso 
y entrará otro proceso que ganó derecho 
de uso de la CPU.
En ese momento, el banco recibe 
la información de que el jubilado gastó 
cien reales en CDs de Elba Ramalho. El 
proceso responsable por descontar el di-
39SISTEMAS OPERACIONALES
nero, va a la cuenta del jubilado y ve que 
él tiene mil reales en la cuenta (recuerde: 
no dio tiempo para que el proceso anterior 
actualizara el valor para 2 mil). Entonces, 
retira R$ 100,00 de su cuenta, y actualiza 
informando que ahora él tiene R$ 900,00 
en lacuenta corriente.
Hasta ahora, todo correcto. El sof-
tware está haciendo lo que fue requerido 
para que él hiciera. El proceso de débito 
terminó, entonces el sistema operacional 
llamará a aquel proceso anterior de crédito 
para la cuenta, con el objetivo de que sea 
concluido. ¿Recuerda dónde él paró? Sí, él 
iba a actualizar el valor para R$ 2.000,00 
en la cuenta del jubilado. Y, por increíble 
que parezca, es eso lo que él hace, es su 
último paso, sencillamente, colocar dos mil 
como saldo final en la cuenta del jubilado.
Al final de cuentas, el jubilado tenía 
mil, recibió más mil, gastó cien y se quedó 
con dos mil en la cuenta. ¿Percibieron? 
Sencillamente conmutar, parar un pro-
ceso e iniciar otro no funciona, acceder 
un mismo dato (en este caso, una varia-
ble que almacena el saldo del cliente del 
banco) exige más cuidado, pues cuando 
dos o más procesos actúan juntos, en un 
mismo local de memoria, cosas extrañas 
y casi improbables pueden ocurrir debido 
al cambio de procesos.
Entonces, ¿cuál es la solución para 
esto? La idea base es sencilla, no permitir 
que dos o más procesos accedan esos re-
cursos compartidos, o sea, la región crítica, 
por motivos obvios de integridad del sis-
tema. Pero, quédense tranquilos (o no), la 
posibilidad de que el banco se equivoque, 
hoy en día, es muy pequeña, o sea, al usted 
gastar, saldrá de su cuenta.
En suma, la Región Crítica forma 
parte del programa que está en memoria 
compartida. Cuando los procesos disputan 
competitivamente esas áreas, damos el 
nombre de condición de corrida.
Tratativas para Regiones Críticas
MMuy bien, podemos percibir que 
tratar de esas regiones es algo preponde-
rante para el buen funcionamiento del 
Sistema Operacional, entonces no pode-
mos descuidarlas, por más que a veces 
aparezcan algunas “pantallas azules” con 
códigos hexadecimales en nuestras pan-
tallas, debemos saber si existen formas de 
cuidar esos accesos.
Para evitar ese problema, debemos 
encontrar un modo de impedir que más de 
un proceso lea y escriba al mismo tiempo 
en la memoria compartida, o sea, necesi-
tamos una exclusión mutua, para impedir 
que otro proceso use una variable que ya 
esté siendo usada por otro proceso. Esen-
cialmente, si un proceso ya está usando 
algún recurso de la región crítica, sola-
mente él podrá usar ese recurso mientras 
tenga derecho de uso de la CPU.
40SISTEMAS OPERACIONALES
Una buena solución para el acceso a 
las regiones críticas debe obedecer 4 pre-
misas
• Nunca 2 procesos pueden estar si-
multáneamente en sus regiones crí-
ticas;
• Nada puede ser afirmado sobre la ve-
locidad o sobre el número de CPUs, 
entonces la solución para ese proble-
ma no puede llevar en consideración 
la arquitectura de hardware;
• Ningún proceso ejecutando fuera de 
su región crítica puede bloquear otro 
proceso, o sino, tendríamos un festi-
val de “bloqueos” entre los procesos;
• Ningún proceso debe esperar eterna-
mente para entrar en su región crí-
tica, o sea, no puede haber procesos 
que asignen, de forma infinita, los 
recursos para sí.
Básicamente, una de las maneras más 
sencillas para hacer esa gestión es utilizar 
una lógica parecida con la de los baños. 
¿Usted ya vio, en la empresa que trabaja o 
en algún lugar público una placa de “ocu-
pado” o “libre” en la puerta?
Cuando un proceso entra en una re-
gión crítica, él puede señalizar el sistema 
con una variable que habla “sistema, yo 
estoy usando el recurso por algún tiempo, 
no permita que ningún otro proceso asigne 
el recurso o entre en la región crítica”. De 
esa manera, todos los otros procesos serán 
excluidos de forma mutua, hasta que el 
recurso sea liberado.
Sin embargo, tenemos otro proble-
ma que surge en ese contexto. Perciba que 
los problemas sólo empeoran y son cada 
vez más complejos. Después de todo eso, 
usted dará más valor para las personas que 
desarrollaron el sistema operacional que 
está usando.
Normalmente, los procesos asignan 
más de un recurso, pues, nosotros, como 
usuarios, exigimos cada vez más de ellos. 
Entonces, supongamos que un proceso A 
necesite el recurso X e Y para ser ejecutado. 
Luego, el proceso A asigna el recurso X e Y 
para él. El proceso B necesita los recursos X 
y Z para ser ejecutado. Como el proceso A 
ya está con el recurso X asignado, el proceso 
B asigna el proceso Z para él. Ya, el proceso 
C necesita solamente el recurso Z para ser 
procesado, sin embargo, el recurso Z está 
asignado para B y él sólo dejará el recurso 
Z cuando concluya su procesamiento, pero 
el proceso A está con 2 recursos asignados 
y no los dejará hasta que concluya su eje-
cución.
¿Percibieron el looping que fue gene-
rado? Para ejemplificar esto mejor, existe el 
famoso algoritmo de los filósofos chinos.
Observemos la siguiente imagen:
Fuente: TANENBAUM, Andrew S. – Sistemas Operacionales mo-
dernos, 2003
41SISTEMAS OPERACIONALES
Tenemos 5 filósofos y apenas 5 hashis 
(palillos). Si usted ya comió comida china 
con hashis, sabe que son necesarios 2 para 
conseguir comer, en el caso contrario la 
pasta no se “pegará” en los palillos. Si todos 
los filósofos decidieran comer al mismo 
tiempo, cada uno se quedaría con un hashi 
en la mano y no tendrán el segundo hashi 
para comer.
Bueno, entonces, ¿cómo resolver ese 
problema de forma que todos puedan comer 
y nadie se muera de hambre?
Es muy sencillo, y la resolución es 
más o menos la siguiente: El primer filósofo 
(proceso) mira para su derecha y para su 
izquierda, en el caso de que exista 1 hashi 
a cada lado, él asigna el recurso para comer 
por un determinado tiempo. En el caso de 
que el segundo
filósofo quiera comer, él mirará para 
su derecha y para su izquierda y si hay ape-
nas un recurso disponible, él no asignará 
ninguno para él y esperará nuevamente su 
vez para comer. Así que el primer filósofo 
termine de comer (en un tiempo determi-
nado, o sino, un filósofo goloso asigna los 
recursos y no los suelta más), él soltará los 2 
hashis. En el próximo orden de ejecución, el 
segundo filósofo verificará si los 2 recursos 
están disponibles, y, en el caso de que lo 
estén, él asignará los mismos y comerá por 
un determinado tiempo.
¿Entendieron la lógica de asignaci-
ón de los recursos? Es, más o menos, eso 
que los sistemas operacionales hacen para 
poder administrar los recursos y no trabar 
en un looping infinito de espera de recur-
sos, atendiendo a aquellas 4 premisas para 
una buena resolución de problemas para el 
acceso a las regiones críticas.
Sin embargo, ¿creen que los proble-
mas acabaron? Aún tenemos otro problema 
más clásico en modelos de cliente x servidor. 
Un sistema de servidor sirve para atender 
innúmeras requisiciones de usuarios dis-
tintos.
Un sistema de servidor sólo necesita 
ejecutar algunas funciones en el caso de que 
sus clientes las necesiten. Dejar todo siem-
pre rodando en las filas de procesamiento 
puede grabar el poder de procesamiento y 
utilizar el recurso de forma indebida.
De esa manera, usaremos otro 
ejemplo lúdico, el del barbero dormilón. 
Imaginemos una barbería. El barbero se 
mantiene despierto mientras hay clientes 
en la barbería. Cuando no hay clientes, él 
duerme para recuperar sus energías. En el 
caso de que él esté durmiendo y un cliente 
llegue, él deberá despertar al barbero para 
que empiece a trabajar.
Si llega más de un cliente para cortar-
se el pelo, él deberá esperar su vez para ser 
atendido en una fila, hasta que el barbero 
esté disponible.
Eso es más o menos lo que ocurre 
en los sistemas. Si el sistema está ocioso, él 
no mantendrá todos los recursos disponi-
bles. El primer proceso que requiera algún 
recurso “despertará el sistema”. En el caso 
de que más de un proceso quiera usar un 
recurso, él se quedará en una fila de espera 
hasta que llegue su vez de procesamiento.
En suma, ésas son técnicas de inter-
cambio de recursos de forma segura dentro 
del sistema operacional.
42SISTEMAS OPERACIONALES
Síntesis Final
Llegamos al final de más un ca-
pítulo, donde pudimoscomprender un 
poco más sobre el funcionamiento de los 
sistemas operacionales. El intercambio de 
recursos es el gran desafío impuesto para 
los sistemas. Cada vez más, nuevos pro-
cesos son creados dentro de los sistemas y 
hay más aplicaciones siendo ejecutadas al 
mismo tiempo, lo que vuelve el intercam-
bio de recursos algo crítico para el sistema.
Por lo tanto, comprender la forma 
con que el sistema organiza ese intercam-
bio nos permite mejorar las aplicaciones 
desarrolladas y optimizar los sistemas, 
con el objetivo de atendernos mejor, con 
mayor seguridad y escalabilidad.
EJERCICIOS
1) ¿Qué son regiones críticas?
2) ¿Por qué las regiones críticas son tan “críticas”?
3) ¿Cuáles son las 4 premisas que deben ser atendidas para una buena 
tratativa de accesos a las regiones críticas?
4) ¿Cuál es la lógica del algoritmo de los filósofos?
5) ¿Cuál es el problema de tener clientes servidor en los modelos?
44SISTEMAS OPERACIONALES
DEADLOCK
La pelea por recursos y el egoísmo entre los 
procesos son constantes. El resultado de una 
disputa entre los procesos es el Deadlock.
¿Aún estamos hablando de procesos? Sí, estamos. Uste-
des no creyeron cuando les dije que los procesos son la parte 
más importante de los sistemas, ¿verdad? Bueno, vamos para 
más un gran problema que el sistema debe ser capaz de ad-
ministrar, el Deadlock.
En esta parte de la clase, entenderemos qué son los 
Deadlocks, el motivo de ser tan indeseables y también cómo 
tratar de ellos.
Pero, ¿cómo ser el juez de esta pelea? ¡Veamos!
45SISTEMAS OPERACIONALES
El Deadlock
Como ya vimos en los capítulos 
anteriores, el SO debe ser capaz de ad-
ministrar recursos. Algunos de ellos o, 
prácticamente, todos, sólo pueden ser acce-
didos por un proceso de cada vez, y es ahí 
que toda la magia del sistema operacional 
ocurre. El SO garantiza el acceso limitado 
de tiempo para cada proceso, así como 
esos recursos de forma exclusiva, para que 
nada malo ocurra.
Ahora, imaginemos qué ocurre si 
un proceso asigna un recurso para él, de 
forma exclusiva, y, en el medio del camino, 
él necesita un recurso que ya está asignado 
para otro proceso, que también asignó 
de forma exclusiva. El primer proceso se 
queda esperando el segundo proceso para 
tomar el recurso, pero, el segundo proce-
so no liberará el recurso, pues necesita, 
justamente, del recurso del primer pro-
ceso. Eso entra en un looping infinito. 
Confuso, ¿verdad? Entenderemos con un 
ejemplo más práctico. Supongamos, por 
ejemplo: 2 procesos, donde cada uno desea 
grabar en CD un documento obtenido de 
un scanner. El proceso A pide permiso 
para usar el scanner y es concedido. El 
proceso B que es programado diferente, 
solicita primero el permiso para grabar el 
CD y también es autorizado. Entonces, el 
proceso A pide para usar el scanner, pero 
es negado hasta que el proceso B libere el 
grabador. Infelizmente, el proceso B pide 
para usar el Scanner, sólo que es negado 
hasta que A libere el scanner. Perciban, en 
este caso, uno esperará, de forma infinita, 
que el otro libere el recurso.
Entonces, tendremos algo que todos 
los programadores de sistemas operacio-
nales odian, el temido DEADLOCK. 
El término Deadlock (bloqueo perpetuo) 
significa un evento que jamás ocurrirá, 
viniendo a trabar el sistema.
Para reiterar, los recursos de la 
computadora son impresoras, unidades 
de cintas, tablas, direcciones de memo-
ria, registrador, o sea, todo “aquello que 
puede ser usado” por el sistema. Tanto los 
recursos de hardware, como los recursos de 
softwares. Existen 2 tipos de recursos: los 
recursos preferentes y los no preferentes.
Los recursos preferentes son aquéllos 
que pueden ser retirados del proceso que 
los detienen, sin que haya perjuicios en su 
ejecución. Un buen ejemplo de eso, es un 
documento que está en la fila de impresión 
y es cancelado. Lo máximo que ocurrirá 
es que el documento no sea imprimido y 
tenga que ser enviado nuevamente para la 
fila de impresión. Retirar el documento 
de la fila no ocasiona ningún problema, 
apenas una repetición de trabajo, tal vez.
Ya, los recursos no preferentes son 
lo opuesto, como ya era de esperarse. En 
el caso de que ellos sean retirados de los 
procesos que los detienen, algún proble-
ma serio o irreversible ocurrirá. Un buen 
ejemplo para eso es un grabador de CD. 
En el caso de que el recurso del grabador 
sea retirado del proceso durante la gra-
bación del CD, no tendrá cómo retomar 
la grabación y el CD no será grabado de 
forma correcta. No hay como revertir eso 
y el CD será perdido.
46SISTEMAS OPERACIONALES
Como vía de regla, los deadlocks 
ocurren con recursos no preferentes, pero, 
todos saben que la informática es una 
ciencia exotérica y cosas extrañas pueden 
ocurrir.
Para que haya un deadlock, es ne-
cesario que 4 variables existan, en el caso 
contrario, no tenemos deadlock. Ellas son:
• Los procesos exigen control exclusivo 
de los recursos que solicitan, lo que de-
nominamos “condición de exclusión 
mutua”. Cuando un proceso “toma” 
un recurso para sí, él lo asigna y no 
libera más el recurso, excluyendo los 
demás procesos.
• Los procesos mantienen asignados 
recursos mientras solicitan nuevos 
recursos, lo que denominamos de 
“condición de espera por recursos”. 
Además de que el proceso no libera 
recursos, él va asignando cada vez más 
recursos para él, sin liberarlos.
• Los recursos no pueden ser retirados 
de los procesos que los mantienen 
asignados mientras estos procesos no 
finalizan su utilización, lo que deno-
minamos “condición de ausencia de 
preferente”. Es lógico, sin preferente 
en los recursos, los procesos pueden 
asignarlos por tiempo indeterminado. 
Si hay preferente de recursos, basta 
que el SO retire su proceso, luego no 
tenemos deadlock.
• Se forma una cadena circular de pro-
cesos donde cada proceso solicita un 
recurso asignado por el próximo pro-
ceso en la cadena, lo que denomina-
mos “condición de espera circular”. El 
ejemplo del proceso del grabador de 
CD y del scanner, que dimos al inicio 
del capítulo, es un óptimo ejemplo 
de eso.
Modelaje de Deadlock
Para entender mejor cómo funcionan 
los deadlocks, existe un modelaje expues-
to por Tanenbaum. La representación es 
hecha a través de grafos dirigidos, donde 
un cuadrado representa un recurso y un 
círculo un proceso. Cuando un proceso 
asigna un recurso, una flecha, desde recurso 
al proceso, es trazada y cuando un proceso 
necesita del recurso, una flecha, desde el 
proceso al recurso, es trazada.
La representación de la ocurrencia de 
DeadLock está en el grafo que está a seguir, 
también ejemplificado por Tanenbaum.
Fuente: TANENBAUM, Andrew S. – Sistemas Operacionales mo-
dernos, 2003
Deadlock
A
a
CB A CB A CB
A CBA CBA CB
b c
(c)
(g)(f )(e)
(d)
(j)
(i)(h)
(b)(a)
Requisitaa1. r
Requisitab2. s
Requisitac3. t
T TRequisitaa4. s
Requisita
Requisita
Libera
Libera
r
s
R
s
Requisita
Requisita
Libera
Libera
r
s
R
s
Requisita
Requisita
Libera
Libera
t
r
t
r
S
Requisitab5. t
Requisitac6. r
R SR TSR
TSRTSRTSR
47SISTEMAS OPERACIONALES
 Para no haber DeadLock, la secuencia de asignación debe ser esta:
Tratativas para DeadLocks
Los deadlocks son muy indeseables, como ya se esperaba, pues ellos traban todo 
el sistema operacional. Entonces, en este contexto, nada más inteligente que tratar los 
deadlocks en el sistema. Básicamente, utilizamos 4 técnicas para tratativas de deadlocks 
en los sistemas operacionales.
La primera técnica es, sencillamente, ignorar el problema. Exactamente lo que 
usted está leyendo, sencillamente, podemos ignorar el problema y rezar para que él no 
ocurra. 
La segunda técnica es detectar y recuperar los deadlocks, o sea, el sistema per-
mite que ellos ocurran y después que ellos se concreticen, el propio sistema busca una 
forma de corregirlo, haciendo que nada 
malo ocurra.
La tercera técnica es un poco más 
elaborada y tiene como objetivo evitar, de 
forma dinámica, que el deadlock ocurra, a 
través de asignación dinámicade recursos 
de forma cuidadosa, evitando que ocurra 
el problema. Y, por fin, la cuarta técnica es 
prevenir que el deadlock ocurra, impidiendo 
que una de las 4 condiciones necesarias, 
para que haya deadlock, surja en el sistema.
Perciban que ni siempre tratar dea-
dlock es evitarlo o prevenirlo, a veces, los 
sistemas apenas aceptan que ellos puedan 
ocurrir.
Algoritmo del Avestruz
Bueno, conoceremos más profunda-
mente las técnicas de tratativas de deadlo-
ck. La primera y más barata es el Algo-
ritmo del Avestruz. ¿Qué hace el avestruz 
cuando ocurre algún problema o cuando 
él está con miedo? Sencillamente, mete la 
cabeza debajo de la tierra e ignora todo 
a su alrededor (claro que eso no resuelve 
Fuente: TANENBAUM, Andrew S. – Sistemas Operacionales modernos, 2003
48SISTEMAS OPERACIONALES
nada, pero él lo hace). El sistema operacio-
nal hace la misma cosa. Cuando ocurre el 
deadlock, él ignora y deja que todo trabe 
(cualquier pantalla azul que ya pasó en su 
vida no es mera coincidencia...).
Esa forma de tratar el deadlock es 
utilizada por los sistemas, llevando en con-
sideración algunas ponderaciones. A veces 
el deadlock es raro y el costo de prevención 
es muy alto, también monetariamente, con 
horas de desarrollo cuando está en tiempo 
de procesamiento, pues son más y más 
procesos de controles que deben ser im-
plementados. Puede ser displicencia, pero, 
el uso de este tipo de algoritmo es hecho 
con base en informaciones estadísticas de 
la ocurrencia de los deadlocks.
Detección y Recuperación de Deadlocks
Muy bien, en sistemas mejor desar-
rollados, ignorar que el deadlock existe no 
es una buena práctica. Entonces, veamos 
lo que puede ser hecho. El sistema puede 
aplicar algoritmos de detección y recupe-
ración de deadlock.
El objetivo es permitir que los blo-
queos ocurran y, a partir de eso, detectarlos 
y recuperarlos a través de algoritmos de-
sarrollados para este fin. Estos algoritmos 
poseen la tarea de descubrir las causas de 
las ocurrencias de deadlock y eliminar 
nuevas ocurrencias.
Recuperación por medio de pre-
ferente: Ese algoritmo retira un recurso, 
pasible de preferente, de un proceso en-
tregándolo a otro proceso y después de-
volviéndolo para el primer proceso. De esa 
manera, no hay ocurrencia del deadlock, 
pues, ningún proceso se queda esperando 
infinitamente para obtener el recurso, él 
es compartido a través de su preferente, si 
es necesario, con el objetivo de liberar el 
recurso. El sistema puede retirar recurso 
de los procesos. 
Recuperación por medio de rever-
sión de estado: Guardar el estado del 
proceso para que pueda ser revertido a 
su estado interior (chekpoint) en el caso 
de que ocurra el deadlock, liberando los 
recursos que están asignados. Un ejemplo 
muy bueno para eso es para los amantes de 
juegos. Sabe, ¿cuándo usted está jugando y 
su personaje muere y usted no vuelve para 
el inicio del juego, sino que para una etapa 
antes de la muerte del personaje, un paso 
antes de cair en el agujero? Es más o menos 
eso lo que el algoritmo hace. Él guarda el 
último estado “bueno” del proceso, y en el 
caso de que ocurra el deadlock, él hace que 
el proceso/recurso vuelva un paso atrás e 
impida que él genere el deadlock.
Recuperación por medio de eli-
minación de proceso: Sencillamente, el 
proceso está “muerto” y nada más. Trági-
co ¿verdad? El sistema escoge el proceso 
menos crítico y lo “mata”, de esa manera, 
los recursos son liberados y el deadlock 
no ocurre. Matar procesos es una prácti-
ca muy común para destrabar sistemas o 
procesos que están con problemas. En el 
Windows utilizamos el comando taskkill 
y en el Linux el kill (nombres sugestivos, 
¿verdad?).
49SISTEMAS OPERACIONALES
Prevención de DeadLocks
Muy bien, vimos cómo detectar y 
recuperar deadlocks, pero también existen 
técnicas de prevención. Mientras más com-
pleja es la tratativa del deadlock, mayor su 
costo monetario y de procesamiento del 
sistema, pero el SO se queda mucho más 
seguro y estable. Veremos algunas técnicas 
de prevención.
Prevención Dinámica: Este algo-
ritmo previene, a través de procedimien-
tos de asignación que analizan y mapean 
la posibilidad de formación de cadenas 
circulares, los looping de requisición de 
recursos, y por consecuencia, los deadlo-
cks. Luego, son algoritmos complejos y 
es posible un gran consumo de recursos, 
aumentando el tiempo de respuesta del 
sistema operacional en determinados pro-
cesos más complejos.
Caminos Seguros e Inseguros: La 
gran cuestión de estudio es, “¿Existe algún 
algoritmo capaz de realmente evitar Dea-
dlock?”, la respuesta es “Sí, existe”. Recuer-
de que todo en informática está dentro de 
una cuestión mayor aún, “Depende, todo 
depende”, entonces, teóricamente, existen 
técnicas capaces de evitar deadlock, pero 
todo en informática es algo exotérico.
Algunos algoritmos, los más efica-
ces, utilizan técnicas de camino de estados 
seguros y caminos de estados inseguros.
En los caminos de Estado Seguro 
existe una secuencia de asignaciones que 
garantiza que todos los procesos sean con-
cluidos. Es seguro, pues el sistema esca-
lonando, cuidadosamente, cada recurso y 
entregando de forma racional, puede evitar 
el deadlock. Así, el sistema sólo libera el 
proceso para asignar el recurso, si todos 
están en un estado seguro, en el caso con-
trario, no será liberado para asignarlos.
En los caminos de Estados In-
seguros existe una o más secuencias de 
asignaciones que pueden impactar en la 
conclusión de los procesos, generando de-
adlock. Los sistemas no pueden garantizar 
la conclusión de todos los procesos. Cuan-
do la lógica de asignación nos dice que 
generará una situación de espera infinita 
por un recurso o una condición circular de 
asignación, el SO impide la asignación de 
los recursos, evitando el deadlock. Esta-
do inseguro no es sinónimo de deadlock, 
apenas en el estado inseguro tenemos la 
mayor probabilidad de surgir un deadlock.
Algoritmo del Banquero
¿Quién mejor para saber compartir 
recursos que el banco? Los bancos toman 
nuestro dinero y distribuyen entre sus 
agencias, pero, nuestro dinero no está todo 
en una única de ellas. El recurso, dinero 
de los bancos, está distribuido de forma 
que pueda atender a todos los saques de 
sus clientes. Pero, ¿imagine si todos los 
clientes decidieran sacar todo su dinero 
en una única agencia? No es posible, pues 
la agencia no comportaría tanto dinero. 
Pero, ¿cuál es la probabilidad de que todos 
los clientes saquen todo su dinero en la 
misma agencia del banco? Prácticamente 
es imposible ¿verdad?
50SISTEMAS OPERACIONALES
El Algoritmo del banquero es un algoritmo de asigna-
ción de recursos con prevención de deadlock desarrollado por 
Edsger Dijkstra. Él prueba la seguridad por la simulación de 
la asignación del máximo predeterminado posible de montan-
tes de todos los recursos, en seguida, hace una verificación de 
estados seguros para probar la posibilidad de condiciones de 
deadlock para todas las otras actividades pendientes, antes de 
decidir si la asignación debe proseguir.
El algoritmo asigna recursos de forma racional, que 
pueda atender a todos los procesos que necesiten de ellos, de 
manera similar a lo que el banquero hace y, al final, todos están 
contentos con sus recursos.
Síntesis Final
Llegamos al final de una etapa más y aún estamos ha-
blando de procesos, pero pueden quedarse tranquilos que desde 
ahora en adelante no hablaremos más de procesos de una forma 
directa, ahora avanzaremos para otras partes de la arquitectura 
del sistema. 
Por lo tanto, comprender cómo los procesos funcionan y 
cuáles son los problemas que pueden ocurrir con ellos, como el 
deadlock, nos capacitará para que podamos desarrollar aplicacio-
nes cada vez más estables y sin problemas. En todos los encer-
ramientos les comenté sobre “desarrollar aplicaciones mejores”, 
ese asunto debe ser recurrente, pues, el mayor desafío es crear 
aplicaciones estables en el medio de un universo exotérico de los 
sistemasoperacionales.
EJERCICIOS
1) Compartir recursos es el gran desafío del sistema 
operacional. Muchos procesos requieren recursos, que muchas 
veces no están libres para uso. En el medio del intercambio 
nos deparamos con algunos problemas como el Deadlock. 
Explique ¿qué es deadlock y el motivo por el cuál ellos son tan 
indeseados?
2) El preferente es una característica de algunos tipos de 
sistemas y muchas veces es usado en los planificadores de 
procesos. Ese concepto también es utilizado con recursos, 
pudiendo ser preferentes o no. Explique la diferencia entre 
recursos preferentes y no preferentes.
3) Los deadlocks no surgen del limbo. Para que exista deadlock 
son necesarias 4 situaciones de forma simultánea. De esa 
manera, apunte cuáles son ellas y explíquelas.
4) Existen algunas técnicas para tratativas del deadlock con el 
objetivo de optimizar el uso del sistema operacional. Explique 2 
técnicas de detección o recuperación de deadlock.
5) Además de las técnicas de detección y recuperación de 
deadlock, el sistema puede aún aplicar técnicas de prevención 
de él, que son muy interesantes para el sistema. Apunte 2 de 
esas técnicas.
52SISTEMAS OPERACIONALES
GESTIÓN DE 
MEMORIA
Hoy, mi memoria está RAM, duermo y me 
olvido de las cosas. ¿Entendió la broma? 
¿No? Entonces vamos a estudiar cómo la 
memoria RAM funciona.
La Gestión de Memoria, así como el de proceso, es una 
pieza fundamental para el buen funcionamiento del sistema 
operacional. La memoria ni siempre fue en abundancia. La 
facilidad en adquirir memoria RAM es algo nuevo. A inicios 
de la programación y de las computadoras, la memoria RAM 
era escasa, por eso, debería ser administrada de forma muy 
precisa por el sistema.
Comprenderemos cómo los sistemas modernos admi-
nistran las memorias y entenderemos cuáles técnicas eran y 
aún son utilizadas para hacerla magia de multiplicación de 
memoria RAM.Confíe en la importancia de la memoria RAM al 
estudiar este capítulo.
53SISTEMAS OPERACIONALES
La Gestión de Memoria
Encerramos toda la parte de GES-
TIÓN de procesos y ahora avanzaremos 
un poco más. Entraremos en la gestión 
de Memoria que es de extrema importan-
cia para el buen funcionamiento del SO. 
No menospreciando las demás gestiones, 
pero, la de memoria y procesos son más 
importantes, sin ellas el SO no funciona 
o cualquier problema en ellas impacta en 
todo el SO de forma crítica.
La memoria que con la que tra-
bajaremos en esa gestión es la principal, 
que está relacionada directamente con la 
CPU, a través de filamentos y rutas en la 
placa madre. La memoria es un recurso 
importantísimo para el Sistema Operacio-
nal y debe ser administrado con mucho 
cuidado. Los programas, cada vez más, 
tienden a crecer y a ocupar más espacio 
en la memoria.
Con los sistemas multitareas y la 
creatividad de los usuarios, la gestión de 
memoria debe estar muy bien esquema-
tizada. Piense, ahora, en este momento. 
Usted debe estar con el navegador abierto 
en la página de Uniftec, buscando ma-
terial de estudio, al mismo tiempo que 
su software de downloads preferido está 
abierto, junto con su player de música fa-
vorito y, tal vez, también tenga un software 
de mensajes abierto para conversar con 
sus amigos, todo eso siendo ejecutado y 
ocupando espacio en la memoria RAM. 
La orquestación de la memoria debe ser 
impecable para que todo funcione.
Jerarquía de las Memorias
Existe una jerarquía de memorias. 
Cada tipo de memoria fue criada para 
algún objetivo específico y desempeña 
funciones diferenciadas.
El primer nivel de la jerarquía es 
muy pequeño, en el hardware de la com-
putadora. Ella es una memoria volátil, muy 
rápida y de costo muy alto. La memoria 
Caché, normalmente localizada dentro 
del slot del procesador o, incluso, fijada 
junto a la base del procesador. Esa memo-
ria posee un acceso extremamente rápido, 
pues, físicamente está “colocada” junto al 
procesador, pero es muy cara, realmente 
cara.
Normalmente, las computadoras po-
seen algunos megabytes solamente, entre 
2 y 8 megabytes. El sistema operacional 
carga en memoria Caché los programas 
que son más utilizados o que necesitan 
una ejecución muy rápida. Mientras mayor 
es el caché, más rápido es el acceso a los 
programas.
Ejemplif icaremos mejor. Un al-
bañil está haciendo una pared y necesita 
ladrillos, él le pide al ayudante para que 
vaya a buscarlos. Entonces, el ayudante 
toma los ladrillos y se los trae al albañil 
para que los ponga en la pared. La ve-
locidad de la memoria y del procesador 
son diferentes, siendo, la memoria RAM, 
mucho más lenta, realmente mucho más 
lenta, de esa manera, se usa el caché para 
agilizar las cosas. El ayudante deja algu-
nos ladrillos al lado del albañil y continúa 
trayendo más para que el albañil no pare.
54SISTEMAS OPERACIONALES
Avanzando ahora para el segundo 
nivel de memoria. Una gran área de me-
moria principal, volátil, con decenas de 
megabytes de velocidad y costo medio. Ésa 
es la memoria RAM o memoria princi-
pal. Su tiempo de acceso es más lento que 
la Caché, pero mucho más rápida que la 
memoria de almacenaje, como los HDs. 
Mientras más memoria RAM se dispone 
para el Sistema Operacional, más rápido 
serán los cambios de procesos y acceso a 
las informaciones.
Luego, no podemos decir que sola-
mente la memoria RAM deja la computa-
dora más rápida. Veamos, nuevamente, un 
ejemplo. De nada sirve comprar un Ferrari 
y ponerle un motor de un Volkswagen 
modelo escarabajo 1970 dentro de él. Por 
más que el carenado sea del Ferrari, lo que 
hace que el coche ande es el motor de un 
Volkswagen modelo escarabajo. De esa 
forma, la Memoria RAM debe andar, lado 
a lado, con la capacidad de procesamiento 
y direccionamiento del procesador, todo 
en harmonía.
En un tercer nivel de memoria tene-
mos una memoria no volátil, con centenas 
de gigabytes, de costo bajo y velocidad 
baja. Son nuestros HDs convencionales, 
con brazos mecánicos y discos internos, o, 
incluso, nuestros CDs y DVDs. Las me-
morias de almacenaje tienden a ser mucho 
más lentas en su tiempo de acceso, y sirven 
apenas para almacenar datos. Su valor en 
comparación con las otras dos memorias 
es mucho más bajo.
Arriesgo a insertar un nivel más de 
memoria. Una memoria no volátil, de cos-
to alto y velocidad alta. Los HDs SSD o 
sólidos. Como no hay nada mecánico en 
ellos, el tiempo de acceso es mucho más 
rápido, realmente mucho más rápido. Esa 
tecnología aún es ara, pero, como todas 
las nuevas tecnologías, quedará accesible 
en algún tiempo. HDs
SSD realmente dejan los sistemas 
mucho más rápidos, por lo tanto, considere 
cambiar su HD convencional por un SSD, 
con el objetivo de mejorar la performance 
de su computadora, pero, recuerde, no 
sirve de nada tener un Ferrari con motor 
de Volkswagen modelo escarabajo.
El sistema operacional debe admi-
nistrar todas esas memorias, sin embargo, 
la gestión de memoria está restricta a las 
memorias volátiles, las demás son traba-
jadas como dispositivos de entrada y de 
salida, que estudiaremos más adelante.
¿Cómo funcionan las cosas?
Como les vengo diciendo en los 
otros capítulos, mis queridos alumnos, las 
cosas funcionan de forma exotérica en in-
formática, pero racional. Veamos algunas 
reglas básicas de cómo son ejecutados los 
programas dentro del sistema operacional.
Usted enciende su computadora, 
y el proceso de bootstraping ocurre. El 
administrador de boot del HD (veremos 
eso en el próximo capítulo) tomará los ar-
chivos del sistema operacional y los dejará 
en la memoria RAM. Realmente chicos, 
el Sistema Operacional es ejecutado en 
la memoria RAM, el HD está allí, so-
lamente, para guardar los archivos de los 
sistemas para que él pueda iniciar.
55SISTEMAS OPERACIONALES
Después que los archivos de los 
sistemas están en memoria RAM, ellos 
son procesados y el sistema y encarga del 
hardware de la computadora. Al apagar 
la computadora todos los datos de la me-
moria RAM son perdidos y en la próxima 
inicialización, el administradorde boot 
carga nuevamente todos los archivos del 
SO en memoria RAM, para ser ejecutado 
nuevamente.
Una regla básica que no puede ser 
olvidada jamás. Todo y cualquier proceso/
programa/software, sólo puede ser ejecu-
tado si está asignado en memoria RAM, 
en el caso contrario él no será ejecutado.
Básicamente, ésta es la lógica: Todos 
los programas ejecutables son un archivo 
que reside en disco:
• Al ser ejecutado, primero necesita 
ser cargado en la memoria.
• El administrador de procesos decide 
cuál proceso será ejecutado.
• El administrador de memoria de-
cide dónde colocar el proceso en la 
memoria.
• Solamente, después de la carga en 
la memoria, el proceso estará dis-
ponible para rodar.
La función del administrador de 
memoria es cargar los programas en me-
moria RAM, liberar espacio en la memoria 
de programas que ya fueron ejecutados y 
administrar toda conmutación de memoria 
entre los niveles de memoria.
Podemos clasificar los sistemas de 
dos formas referentes al GESTIÓN de 
memoria. Tenemos los sistemas, que du-
rante la ejecución llevan y traen archivos y 
datos entre la memoria principal y el disco 
rígido, así como tenemos sistemas que sen-
cillamente no hacen eso, apenas cargan sus 
informaciones en memoria principal y no 
hay esa conmutación, como por ejemplo, 
algunos sistemas embarcados con los que 
trabajaremos más adelante.
Memoria RAM
Memoria RAM o memoria princi-
pal es el componente de hardware respon-
sable por almacenar los datos que serán 
ejecutados. Como ella es volátil, al perder 
energía eléctrica los datos serán perdidos.
El acceso a la memoria RAM fun-
ciona a través de direcciones. Cada célula 
de memoria posee direcciones hexadeci-
males que almacenarán los datos. Así, el 
sistema referencia esas direcciones para 
saber la localización de los datos alma-
cenados.
¿Ustedes ya vieron un error que 
ocurría, con alguna frecuencia, en un 
sistema operacional propietario, donde 
aparecía una pantalla azul con errores y 
un mensaje de volcado de memoria física? 
Abajo de ese mensaje aparecían códigos 
hexadecimales de regiones de memorias 
que fueron afectadas. De esa forma, una 
dirección con problema físico en la memo-
ria compromete el buen funcionamiento 
del sistema operacional.
56SISTEMAS OPERACIONALES
Memoria Caché
La memoria Caché es una memo-
ria volátil de alta velocidad. El tiempo de 
acceso a un dato en ella es mucho menor 
que si él estuviera asignado en la memoria 
principal.
Cada vez que el procesador hace re-
ferencia a un dato que está en la memoria 
principal, él “busca” antes en la memoria 
caché. Si él encuentra el dato en la me-
moria caché, no es necesario acceder a la 
memoria principal, dejando más rápido 
el proceso.
Memoria Secundaria
La memoria secundaria es un medio 
permanente, o sea, no volátil, de almace-
naje de programas y datos. Mientras la 
memoria RAM necesita estar energizada 
para mantener las informaciones, la me-
moria secundaria no necesita alimentación 
eléctrica para mantener sus datos almace-
nados por tiempo indeterminado.
Buffering
Puedo afirmar que sin el buffer 
nuestra vida no sería tan divertida como 
ella es actualmente. La velocidad con 
que el procesador y la memoria trabajan 
es mucho más rápida que la velocidad 
que los dispositivos periféricos trabajan. 
El buffer surge para intentar minimizar 
la disparidad que existe entre los dispo-
sitivos.
El tiempo de acceso que un HD 
posee es inferior al tiempo de acceso de la 
memoria principal. Para los devotos a los 
juegos, el buffer es el responsable por sus 
horas de diversión sin los indeseables lags 
que pueden ocurrir. La manera frenética 
con que los juegos funcionan necesita que 
las informaciones sean almacenadas en 
una forma de buffer, con el objetivo de 
optimizar el procesamiento de la CPU. 
Entonces, a cada loading que él realiza, 
ocurre la conmutación de la memoria, el 
cambio de informaciones entre el HD y 
la RAM y también un cierto buffer.
La onda de streaming por internet 
también necesita buffer. El Netf lix, You-
tube, Spotify, entre otros, sólo funcionan 
correctamente, porque existe un buffer de 
datos cargado previamente y actualizado 
durante todo el proceso para que no haya 
interrupciones en la exhibición de los 
vídeos y músicas.
En suma, el buffer carga infor-
maciones antes de iniciar la ejecución. 
Podemos utilizar el mismo ejemplo del 
albañil. Su buffer es un alto de ladrillos 
extras que él mantiene antes de necesitar 
comprar más ladrillos. Así, hasta que 
los ladrillos nuevos lleguen, él usa los 
ladrillos extras.
Como definición más formal, invo-
caré a nuestro amigo Tanenbaum (2010):
“El buffer debe tener la capacidad 
de almacenar diversos registros, para que 
permita que existan datos leídos en el 
buffer, pero aún no procesados (opera-
ciones de lectura), o procesados, aún no 
grabados (operación de grabación). De esa 
57SISTEMAS OPERACIONALES
manera, el dispositivo de entrada podrá 
leer diversos registros antes que la CPU 
los procese, o la CPU podrá procesar 
diversos registros antes de que el dis-
positivo de salida realice la grabación. 
Eso es extremamente eficiente, pues, de 
esa manera, es posible compatibilizar la 
diferencia existente entre el tiempo en 
que la CPU procesa los datos y el tiempo 
en que el dispositivo de E/S realiza las 
operaciones de lectura y grabación.”
Mono programación sin cambio 
de procesos o paginación
Cada sistema operacional posee una 
finalidad. Ni todos los sistemas son pro-
gramados para ejecutar inúmeros procesos, 
algunos sistemas apenas realizan pequeñas 
tareas, siempre iguales y siempre de la mis-
ma manera, sin variar su comportamiento.
Normalmente, sistemas embarcados 
trabajan de esa manera, pues ejecutan ape-
nas una tarea y siempre igual. Sin embar-
go, eso lo estudiaremos en los próximos 
capítulos.
Cuando se utiliza un esquema más 
sencillo de programación de gestión de 
memoria en el sistema operacional, ella es 
compartida entre el programa y el sistema 
y solamente un programa es ejecutado de 
cada vez. Cuando el sistema es organiza-
do de esa manera, solamente un proceso 
puede ser ejecutado en cada instante. El 
SO carga todo el programa en la memoria, 
mientras está siendo ejecutado. Cuando 
sea finalizado, el SO liberará el área en la 
RAM para que otro programa sea cargado 
en el espacio, antes ocupado por el primer 
programa.
De esa manera, el intercambio de 
memoria RAM es muy sencilla, pues, el 
sistema ya sabe cuánto de espacio cada pro-
grama ocupará en memoria, basta asignar 
el área cuando sea cargado. Son sistemas 
que realizan actividades específicas y re-
petidas, sin variación.
Multiprogramación
Algunos sistemas operacionales son 
desarrollados para ejecutar tareas especí-
ficas, pero otros sistemas no. Muchos SO 
son desarrollados para ejecutar innúmeras 
actividades y atender solicitudes diversas. 
Sistemas de ese tipo tienden a asignar áreas 
de memorias fijas o variables, de acuerdo 
con cada necesidad. Entonces, tenemos la 
multiprogramación con particiones fijas 
y la multiprogramación con particiones 
variables.
58SISTEMAS OPERACIONALES
Aún tenemos algunos problemas 
en la multiprogramación, como no saber 
en cuál dirección de memoria el progra-
ma será cargado, así como la protección 
que debe ser realizada para que ningún 
programa invada el espacio del otro. Así, 
el administrador de memoria debe garan-
tizar esa seguridad y resolución de esos 
programas.
Multiprogramación con Particiones Fijas
La manera más sencilla de trabajar 
con sistemas de multiprogramación, en lo 
que se refiere a la gestión de memoria, es 
dividir el espacio de memoria en particio-
nes fijas de tamaños variados.
Cuando un nuevo proceso llega para 
ser asignado en memoria RAM, el sistema 
busca la menor partición existente, que 
sea suficiente para asignar el programa 
dentro de ella. Pero, esto genera un gran 
problema de desperdicio de memoria, pues, 
la partición de memoria que fue asignada 
es exclusiva del proceso quela ganó, y, en 
el caso de que sobre memoria libre, ella 
será perdida.
La mejor forma de escoger donde cada proceso será asignado, es utilizar una 
fila única de todos los procesos e investigar en ella el tamaño de cada uno de ellos, 
así como ir asignando, de forma más inteligente, el espacio que cada uno ocupará.
Observe la siguiente imagen, donde la figura (b) representa la fila única de 
asignación de memoria:
Multiples 
�las de entrada
700K
400K
100K
0
(a) (b)
Particion 4
Particion 3
Particion 2
Particion 1
Sistema 
operacional
Particion 4
Particion 3
Particion 2
Particion 1
Sistema 
operacional
Fila de 
entrada única
Fonte: TANENBAUM, Andrew S. – Sistemas Operacionais modernos, 2003
59SISTEMAS OPERACIONALES
Multiprogramación con Particiones 
Variables
Ya percibimos que utilizar particio-
nes fijas no es una idea muy inteligente 
para sistemas de multiprogramación, te-
niendo en vista el número de procesos y 
programas que existen. Entonces, fueron 
desarrolladas técnicas de particiones va-
riables que se adecuan a cada proceso.
Las particiones varían de acuerdo 
con la necesidad de cada proceso, llevando 
en consideración su tamaño, localizaci-
ón y número de particiones, mejorando 
la utilización de memoria. Cada proceso 
usará, solamente, el área que sea necesaria. 
Pero, esa técnica dificulta el proceso de 
asignación y desasignación de memoria.
Aun con ese cuidado, todavía pode-
mos tener espacios vacíos entre los procesos 
en la memoria, oriundos de la asignación y 
desasignación de ellos, en RAM. Enton-
ces, existen técnicas de compactación de 
memoria, que tienen el objetivo de “tapar” 
esos agujeros, pero la utilización de ellas 
acarrea el uso excesivo de la CPU, gravan-
do los procesos, luego, debe ser muy bien 
pensada antes de ser utilizada.
Cambios de Procesos
Los sistemas están en constante 
evolución y los programas también. Hoy, 
tenemos muchas memorias RAM insta-
ladas en nuestras computadoras, pero, ni 
siempre fue así. Hubo una época donde la 
memoria RAM era cara y muy limitada, 
por causa de las arquitecturas que existían. 
Cada programa peleaba por cada byte li-
bre que existía. Actualmente, las cosas 
cambiaron, pero ni tanto. Los programas 
son desarrollados para usar el máximo de 
memoria que puedan y cada día aparecen 
más programas nuevos que consumen más 
memoria RAM.
Aquí surge más un problema. Ni 
siempre existe memoria RAM suficiente 
para todos los programas que están siendo 
ejecutados. Nosotros queremos, cada vez 
más, apilar procesos y programas abiertos 
al mismo tiempo. No basta jugar un juego, 
tenemos que jugar y al mismo tiempo estar 
descargando algo y oyendo música, mien-
tras colocamos el status del skype como 
ausente. Todo eso consumiendo memoria 
RAM y tiempo de procesamiento.
Pero, entonces, ¿cómo resolver ese 
problema antiguo y actual? Para eso, sur-
gieron dos técnicas que solucionarán ese 
problema de falta de memoria RAM, ellas 
son: técnica de Swapping y Memoria Vir-
tual.
Swapping
Tenemos una computadora con 16 
MB de memoria RAM (sí señores, ya 
hubo una época donde las computadoras 
personales tenían eso de memoria RAM 
y en ella debería estar asignada el área de 
memoria del sistema operacional, que es 
intocable) y también el área que los pro-
cesos ocuparán. Teníamos el problema de 
que los 16 MB se llenaban y el usuario 
pedía para que un nuevo programa fuera 
abierto. No habiendo más espacio en la 
memoria, ¿qué podemos hacer?
60SISTEMAS OPERACIONALES
Bueno, fue desarrollada una solución 
muy inteligente para eso. Cuando insta-
lamos un sistema operacional (de forma 
automática o no), tenemos que definir un 
área de Swapping en el HD. Un espacio en 
memoria secundaria, que estará “muerto”, 
exclusivo para ser usado para el cambio 
de procesos.
Volviendo a nuestro ejemplo. Nues-
tra computadora está con 16 MB de me-
moria RAM llena, y un nuevo programa 
es abierto por el usuario. En ese momento, 
el sistema escoge un proceso o programa 
que está más ocioso o que impacta menos 
en la utilización del SO, luego lo retira de 
la memoria RAM, llevando sus datos para 
el área de Swapping, liberando espacio en 
la memoria RAM, permitiendo que un 
nuevo programa sea abierto en aquel local.
Cuando el usuario necesite el pro-
grama que fue retirado de la memoria 
RAM, el administrador irá hasta la me-
moria secundaria (HD), verificará si el 
programa está en el área de swapping y lo 
cargará nuevamente en la memoria RAM, 
para que pueda ser ejecutado. Sin embargo, 
¿qué pasa si a la hora de cargar el progra-
ma nuevamente, la memoria está llena? 
Él hace nuevamente el mismo proceso. 
Desasigna un área, llevando los datos para 
swapping, liberando el espacio necesario.
Normalmente, el tamaño de área 
de swapping es equivalente al tamaño de 
la memoria RAM. Así, si tenemos 1 GB 
de memoria RAM, podemos tener 1 GB 
de memoria de swapping en el HD. Pero, 
perciban que eso no es una constante, en-
tonces, pensemos. ¿Si tenemos una com-
putadora actual con 16 GB de memoria 
RAM, es inteligente mantener 16 GB de 
memoria swapping? Claro que no. Esa ló-
gica se aplica más en computadoras viejas 
y más lentas. Ya que los sistemas operacio-
nales actuales, poseen una optimización 
para el uso de swapping. Entonces, antes 
de que usted piense en alterar cualquier 
cosa en un sistema, piénselo muy bien.
Memoria Virtual – Paginación
Ya entendimos lo que es swapping o 
cabio de procesos. Ahora, avanzaremos un 
poco más en esa construcción de memoria 
virtual. El área de swappping en sí, abriga 
las páginas de memoria. Pero ¿qué es eso?
Veamos otro concepto, el de Me-
moria Virtual y Paginación de memoria. 
La CPU necesita asignar los procesos en 
direcciones de memoria y si él consigue 
leer solamente 16 MB, no asignará nada 
más además de los 16 MB. Sin embargo, 
¿cómo resolver nuestro problema de me-
moria? En algún momento un científico de 
informática inventó algo llamado MMU 
(Memory Management Unit), una pieza 
física que conversa directamente con el 
procesador y lo engaña de forma vergon-
zosa.
La MMU sirve para engañar el 
procesador y mostrar más direcciones de 
memoria para él. De forma bien práctica, 
tenemos 16 MB de memoria RAM y la 
MMU engaña al procesador, diciéndole 
que tenemos 32 MB de memoria RAM.
61SISTEMAS OPERACIONALES
La MMU está localizada muy cerca del procesador, de acuerdo con la siguiente 
imagen:
De esa manera, ocurre la multiplicación lógica de memoria RAM y todos los 
problemas están resueltos ¿verdad? ¡Por supuesto que no! Entonces, entendamos como 
la MMU trabaja con la técnica de memoria virtual.
Observemos la imagen que está a 
continuación:
La MMU trabaja con el concepto 
de Páginas Virtuales. Cada página virtual 
recibe una dirección que es presentada al 
procesador. Entonces, la MMU hace la 
conversión de esa dirección virtual para 
la dirección física correspondiente a una 
moldura de página. Observe en la figura 
anterior.
La CPU envía direcciones
virtuales para la MMU
Memoria Controlador
de disco
Bus
La MMU envía direcciones
físicas para la memoria
CPU
Chip de la
CPU
Unidad de
gerenciamiento
de memoria
(MMU)
Fonte: TANENBAUM, Andrew S. – Sistemas Operacionais modernos, 2003
Fuente: TANENBAUM, Andrew S. – Sistemas Operacionales mo-
dernos, 2003
}
}
Página virtual
Espacio
de dirección
física
Moldura de página
60K-64K
56K-60K
52K-56K
48K-52K
44K-48K
40K-44K
36K-40K
32K-36K
28K-32K
24K-28K
20K-24K
16K-20K
12K-16K
8K-12K
4K-8K
0K-4K
X
X
X
X
7
X
5
X
X
X
3
4
0
6
1
2
28K-32K
24K-28K
20K-24K
16K-20K
12K-16K
8K-12K
4K-8K
0K-4K
62SISTEMAS OPERACIONALES
Bueno, tenemos las páginas virtuales 
y las molduras de páginas, pero ¿cómo fun-
ciona eso? El administrador de memoria 
se queda monitoreando la memoria RAM, 
cuando ella está con un porcentaje lleno, 
entonces, él empieza a hacer el swapping 
de los datos para el disco rígido. El ad-
ministrador toma las páginas que están 
en la memoria y las disloca para el área 
de paginación de la memoria secundaria,liberando espacio para que nuevas páginas 
entren en las molduras. Cuando el pro-
cesador necesita una página que no está 
en la memoria RAM, el administrador 
carga la página en la memoria principal 
para ser procesado. Eso es repetido de 
forma frenética durante todo el tiempo de 
ejecución del sistema operacional.
Así, como existe la planificación 
de procesos, podemos decir que existe un 
planificador de página. Existen varios al-
goritmos que son utilizados para escalonar 
el cambio de página y decidir cuál página 
sale y cuál página se queda. Un consejo: 
Busque más sobre ellos.
Los principales son:
• Óptimo
• NRU
• FIFO
• Segunda Oportunidad
• Reloj
• LRU
• Working set
• WSClock
Esas técnicas tienden a mantener el 
sistema operacional funcional, sin que él 
trabe por falta de memoria. Pero, existe un 
gran costo para que eso ocurra. Todo ese 
proceso deja el sistema muy lento. Toda 
lógica de memoria virtual, paginación, 
swapping, es muy lenta. Por eso, son téc-
nicas usadas apenas para no “trabar” el 
sistema, no siendo aconsejable trabajar en 
el límite de memoria y utilizarlas mucho, 
pues el sistema se quedará muy lento.
Síntesis Final
Concluimos el estudio sobre GES-
TIÓN de memoria y abordamos los prin-
cipales aspectos relevantes sobre el asun-
to. Aprendimos cuál es la función de la 
memoria, los tipos de memoria y cuáles 
son los desafíos que un sistema posee al 
administrar memorias. Por lo tanto, creo 
que estamos aptos para avanzar para los 
próximos módulos, que, desde mi punto 
de vista, existen para agregar valor a la 
utilización del sistema. En ese sentido, 
es muy importante llevar con nosotros los 
conceptos y técnicas de gestión de memo-
ria, para comprender mejor los problemas 
que ocurren en nuestro día a día.
EJERCICIOS
11) Tan importante como el procesador y la gestión de procesos, 
son las memorias y la gestión de memoria, que también 
desempeñan una función visceral para que el sistema pueda ser 
utilizado. Conocer los tipos de memorias nos permite entender 
cómo funciona el sistema. A partir de eso, cite la jerarquía de 
memoria, junto con su característica.
2) Todos los procesamientos ocurren de forma muy rápida y el 
acceso a los datos debe ser rápido. Explique cuál es el motivo 
por el cual todos los programas deben ser cargados en la 
memoria principal para ser procesados.
3) Ni siempre tuvimos memoria sobrando en las computadoras, 
al inicio había poca memoria y muchos programas para ser 
ejecutados. Entonces, surgió la técnica de memoria virtual. 
Explique cómo la MMU funciona y el concepto de memoria 
virtual.
4) Junto con la técnica de Memoria Virtual, tenemos la técnica 
de swapping, utilizada para mantener el sistema funcionando, 
aun cuando no hay más memoria disponible. Explique qué es y 
cómo funciona el swapping.
5) Para asignar las áreas de memoria que serán utilizadas por 
los programas, el sistema utiliza dos técnicas, la de particiones 
fijas y la de particiones variables. Explique cómo ellas funcionan 
y cuáles son los puntos fuertes y débiles de cada una de ellas.
64SISTEMAS OPERACIONALES
GESTIÓN DE 
DISPOSITIVOS DE 
ENTRADA Y SALIDA
La diversión sólo está completa con nuestra 
computadora, en virtud de los dispositivos de 
entrada y de salida.
El gran objetivo del sistema operacional en conectar el 
hardware para el usuario y facilitar la usabilidad del sistema 
es extendido y completo, junto con los inúmeros dispositivos 
de entrada y salida que existen.
En esa etapa, entenderemos cuáles son las funciones 
de esos dispositivos y su importancia en la evolución de los 
sistemas operacionales, junto a las facilidades que ellos nos 
proporcionan.Le garantizo que usted también llegará a esa 
conclusión. ¿Acepta el desafío? ¡Vamos!
65SISTEMAS OPERACIONALES
Dispositivos de Entrada y de 
Salida
Hasta ahora, durante el curso, es-
tudiamos todo lo que es básico para que 
un sistema operacional funcione. Incluso, 
sobre poseer procesador y memoria en una 
placa que interconecte todo eso. El funcio-
namiento básico es lo más importante de la 
computadora, se resume a eso: procesador 
y memoria, el resto son apenas futilidades. 
Sin embargo, como todo en la vida, son 
las futilidades que dejan las cosas mucho 
más interesantes y legales.
Con el avance de la computación 
personal, muchos “accesorios” tuvieron 
que ser agregados a las computadoras para 
dejarlas cada vez más atrayentes y con más 
funcionalidades. Las computadoras de-
jaron de ser apenas grandes “armatostes” 
utilizados por empresas y se volvieron una 
herramienta de diversión y entretenimien-
to. De esa manera, el sistema operacional 
tuvo que evolucionar en varios aspectos.
Lo que estudiaremos, en este mo-
mento, no es algo que haya sido desarrolla-
do por causa de los usuarios domésticos, 
surgió mucho antes de eso, pero podemos 
percibir que fue junto con la computación 
personal que las cosas evolucionaron más.
Cuando la memoria RAM y el 
procesador no eran más suficientes para 
atender las necesidades, algunos periféri-
cos tuvieron que ser acoplados a la placa 
madre de la computadora y los sistemas 
empezaron una importante evolución.
Entonces, surgieron los dispositivos 
de Entrada y de Salida (E/S) o como varios 
autores utilizan, Input y Output (I/O). Los 
dispositivos de entrada y de salida (E/S) 
son utilizados para establecer la comuni-
cación entre la computadora y el mundo 
externo. A través de esos dispositivos, la 
CPU y la memoria principal pueden es-
tablecer comunicación, tanto con usuarios 
como con memorias secundarias.
Los dispositivos de E/S son dividi-
dos, básicamente en 2 categorías. Tenemos 
los dispositivos que desempeñan la fun-
ción de memoria secundaria, como HDs, 
cintas, disquetes, entre otros, y también 
los que son responsables por la interface 
hombre –máquina.
Entre los dispositivos de memoria 
secundaria, destacamos los HDs. Con la 
crecente necesidad de almacenar informa-
ciones, los HDs fueron evolucionando en 
tecnología y capacidad. Actualmente, las 
unidades de almacenaje son importantes 
para almacenar, no sólo los archivos de 
los usuarios, pero también todos los ar-
chivos del sistema operacional. El siste-
ma debe ser capaz de entender cómo esos 
dispositivos funcionan para que pueda 
acceder los datos que están grabados en 
ellos y también efectuar un control sobre 
eso (estudiaremos, en el próximo capítulo, 
los Sistemas de Archivos que realizan esa 
actividad).
A partir de todo eso, aparece la 
pregunta: “¿pero usted no dijo que eran 
apenas futilidades? ¿Cómo un sistema 
puede subsistir sin el HD, por ejemplo, 
para salvar sus archivos?”, Veremos, más 
adelante, que, podemos sí, tener un sistema 
operacional sin tener un HD instalado en 
la computadora.
Ya, los dispositivos de interface 
hombre - máquina, no almacenan infor-
66SISTEMAS OPERACIONALES
maciones, sin embargo realizan toda la 
interface entre la computadora y el ser 
humano. Podemos destacarlos como ver-
daderos “accesorios”, los cuales son agre-
gados a la computadora y donde el sistema 
posee la difícil misión de administrarlos.
Partiendo del más básico y esen-
cial, tenemos dispositivos como teclado 
y ratón, también, algunas interconexiones 
que, desde los inicios, ya eran utilizadas 
para interconectar la computadora con 
los usuarios, piezas fundamentales para 
facilitar la utilización de las computado-
ras. El sistema operacional debe entender 
cómo esos dispositivos funcionan para 
que sea posible su utilización. Dentro de 
eso, ya podemos destacar que el grado de 
importancia de procesamientos de esos 
dispositivos es alto. La priorización para 
procesar interrupciones de teclado, por 
ejemplo, es necesaria para que, en caso de 
que ocurran problemas, podamos tener el 
control del sistema.
El ratón y el teclado fueron conce-
bidos junto a las computadoras, y pose-
en su debida importancia. Sin embargo, 
como el ser humano nunca está satisfe-
cho y percibió que puede “colgar” muchas 
otras cosas en la computadora, asícomo 
el sistema debe ser capaz de administrar 
todo. Vamos, desde pantuf las USB que 
calientan en el inverno, hasta dispositi-
vos de reconocimiento de movimientos 
capaces de conducir una cirugía remota. 
La variedad de dispositivos es enorme. 
Para los gamers, así como yo, no podemos 
olvidarnos de los joystick y gamepads, que 
fueron siendo creados a lo largo del tiempo 
para proporcionarnos horas de diversión 
infinita delante de consolas.
Básicamente, podemos clasificar 
todo lo que es externo a la placa madre, 
como dispositivos de entrada y de salida, 
incluyendo impresoras, plotters, webcam, 
ratón, teclado, entre otras cosas. Cada día, 
usamos nuestra creatividad y creamos algo 
nuevo y el sistema operacional debe saber 
administrar todas ellas, al final, como ya 
vimos, la principal función del SO es dejar 
el hardware lo más transparente posible 
para el usuario.
Conceptos básicos del hardware
Bueno chicos, sé que esta materia 
es Sistemas Operacionales y no Arqui-
tectura de Computadoras o Fundamentos 
Computacionales, pero tenemos que re-
ver algunas cosas para entender cómo los 
dispositivos de E/S funcionan y cómo el 
sistema operacional necesita entenderlos 
para administrarlos. Entonces, entende-
remos, primero, cómo las interconexiones 
funcionan.
Bus
Veamos la definición teórica de bus 
retirado del Wikipédia:
“En Arquitectura de Computado-
ras, un bus es un conjunto de líneas de 
comunicación (conductor eléctrico o fibra 
óptica) que permiten la interconexión entre 
dispositivos de un sistema de computa-
ción (CPU; Memoria Principal; HD y 
otros periféricos), o entre varios sistemas 
de computación.”
67SISTEMAS OPERACIONALES
Vamos a resumir y a entender mejor. 
Un bus es el que permite una conexión físi-
ca entre todos los componentes de la placa 
madre. Tenemos algunos bus patrones 
como el IDE, SATA, SCSI, PCI, AGP, 
que facilitan la interconexión y comunica-
ción de los periféricos a la placa principal 
de la computadora. A continuación sigue 
una foto de una placa madre, evidenciando 
los bus:
Chipset 
Inicialmente las computadoras te-
nían un circuito integrado para controlar 
cada una de las interfaces y bus que exis-
tían, al final, no había tantos así. Pero, 
con la evolución, fueron necesarios más 
circuitos y las placas fueron quedando cada 
vez mayores.
Así, es de nuestro cotidiano sa-
ber que no queremos más computadoras 
grandes e imponentes, mientras más pe-
queñas, mejor para nosotros. Entonces, 
una brillante idea surgió. De manera mu-
cho más práctica y fácil, pues realizamos 
una combinación de varios circuitos en un 
solo, que tenía como objetivo, hacer que él 
desempeñara la función de varios chips. 
De esa manera, surgieron los llama-
dos chipsets que, al pie de la letra, sig-
nifica “conjunto de chips”. Los diversos 
circuitos fueron encapsulados en dos chips, 
responsables, cada uno, por una parte de 
las funciones. El chipset de Puente Sur y 
chipset de Puente Norte.
Es muy importante saber para qué 
sirven ellos, ya que el sistema debe con-
versar muy bien con ellos y entender cómo 
funcionan. La centralización también 
mejora la capacidad de procesamiento y 
comunicación de la CPU con los demás 
periféricos.
El Chipset de Puente Norte es res-
ponsable por hacer la comunicación de 
la CPU con las memorias. Él controla la 
memoria RAM, los bus de Vídeo, y posee 
una interface con el chipset de Puente Sur. 
Esencialmente, la función del Chipset de 
Puente Norte es el control de memorias, 
facilitando el transporte de informaciones 
de las memorias hasta el procesador.
El Chipset de Puente Sur es respon-
sable por controlar prácticamente todo el 
resto. Ese “resto” serían la comunicación 
con los HDs, puertas USB y Paralelas, 
Sonido, Red, Bus PCI, DMA, entre otros. 
De forma resumida, todos los dispositivos 
onboard hasta la placa madre son admi-
nistrados por él.
Módulos de Entrada y de Salida
Entendemos, ahora, que el proce-
sador y las memorias son interconectados 
a los dispositivos a través de los bus que 
conducen los pulsos electrónicos, llevando 
los datos y las interrupciones. Aún tene-
mos un detalle importante para entender, 
68SISTEMAS OPERACIONALES
al final, los periféricos no son conectados 
directamente en la placa madre.
Al inicio de la computación, cada 
empresa desarrollaba también su patrón de 
conexión e interconexión, con una forma 
propietaria y singular para cada computado-
ra, así como el sistema operacional debería 
ser desarrollado de forma específica para 
entender las instrucciones. 
En este sentido, se crearon los mó-
dulos de Entrada y de Salida, básicamente, 
con 2 objetivos macros. El primero era pro-
veer una interface entre los periféricos y el 
bus de las placas, facilitando su conexión y 
desconexión. El segundo objetivo completa 
el primero y enfoca en la estandarización 
de conexiones. Cuando tenemos patrones 
iguales para todos los fabricantes de compu-
tadoras, conseguimos desarrollar sistemas 
operacionales que sean de mejor adaptación 
a las necesidades de los usuarios, por eso, la 
estandarización fue un gran avance.
Los módulos de Entrada y de Salida 
son las conexiones serial, paralela, usb, ps2, 
entre otras, todas las que utilizamos para 
conectar los periféricos a la placa madre. 
Actualmente, el módulo USB viene ganan-
do cada vez más espacio y, prácticamente, 
asume casi todas las funciones de interco-
nexión de los dispositivos.
Vea la figura siguiente, para entender 
mejor:
Drivers de Dispositivos 
Ahora, dejaremos de lado la parte 
física de la computadora y nos concentra-
remos en la parte lógica, donde el sistema 
operacional trabaja. Entendimos cómo el 
hardware funciona, bien superficialmen-
te, y sabemos cómo las cosas ocurren. Sin 
embargo, comprender cómo funcionan las 
cosas nos ayuda a desarrollar sistemas cada 
vez más optimizados y estables.
Actualmente, tenemos innúmeros 
fabricantes de hardware y los Sistemas Ope-
racionales deben adaptarse a todos ellos. 
Pero, tenemos un enorme problema ante 
la variedad de hardware existente. Para 
que el sistema operacional consiga acceder 
al hardware y utilizarlo, es necesario que 
tenga las informaciones, así como que el 
hardware entienda cómo él funciona.
Cuando teníamos pocos fabricantes, 
era mucho más sencillo, los sistemas ya sa-
bían cómo funcionaban las cosas, entonces, 
era sólo hacerlas funcionar. Pero, con el 
paso del tiempo todo cambió e innúmeros 
fabricantes fueron surgiendo y el código 
del sistema no consiguió comportar más 
todas las instrucciones de acceso de todos 
los fabricantes.
Para facilitar la comunicación entre 
los programas y los dispositivos de har-
dware de la computadora, existen módulos 
especiales dentro del Sistema Operacional, 
que sirven como puente de comunicación, 
o un traductor, entre los dispositivos y su 
computadora, esos módulos son conocidos 
como driver de dispositivo.
Para entender lo que son los drivers 
de dispositivo, veamos el siguiente ejemplo: 
cada dispositivo, incluyendo la impresora, el 
69SISTEMAS OPERACIONALES
ratón y, así sucesivamente, habla una lengua 
diferente con un patrón de comunicación 
diferente. Entonces, cuando conectamos 
una impresora nueva, la computadora in-
tenta comunicarse y la impresora responde 
en su propia lengua, sólo que la compu-
tadora no entiende lo que ella habla. Ella 
necesita un intérprete que pueda entender 
el lenguaje de la impresora y la de ella, para 
poder traducir las instrucciones y explicar 
cómo funciona el dispositivo.
Algunos módulos de driver son pa-
trón y utilizados por todos los fabricantes, 
como, por ejemplo, los drivers de USB, un 
ejemplo claro de auxilio que la estandari-
zación trajo para la evolución del sistema, 
pero, muchos dispositivos no poseen drivers 
nativos en los SO y sin ellos, el sistema no 
consigue comunicarse con el hardware. 
Entonces, driver es un traductor de ins-
trucciones del hardware para el sistema.
¿Se acuerdan que hablamos del Chip-
set? Él es muy importante para optimizarla 
utilización de la computadora, teniendo en 
vista sus funciones, pero ¿qué puede ocurrir 
si el driver de chipset está desactualizado 
en el sistema operacional? El sistema no 
entenderá cómo el chipset trabaja correc-
tamente y, sencillamente, podría trabar el 
sistema o perder toda la optimización extra 
que el hardware le garantiza.
Tener drivers bien instalados y ac-
tualizados es fundamental para el buen 
funcionamiento del SO, por otro lado, un 
driver mal instalado o configurado puede 
comprometer todo el SO.
Hagamos un paréntesis aquí. ¿Saben 
el motivo por el cual los productos de Apple 
son mucho más performáticos que los de 
los competidores? La gran magia de Apple 
es desarrollar un sistema operacional total-
mente comprometido con el hardware, que 
es desarrollado por ella. Piensen conmigo: 
hoy, Apple sólo necesita preocuparse en 
desarrollar sistemas que funcionen cor-
rectamente en su hardware propietario. 
Todo el equipo de sistema está a algunos 
pasos de los ingenieros que proyectaron el 
hardware y pueden pedir para ellos detalles 
importantes sobre el funcionamiento del 
aparato, optimizar al máximo toda la lógica 
operacional.
Ahora, usaremos el ejemplo del An-
droid, Sistema Operacional mantenido por 
la grandiosa Google, que funciona desde 
una cafetera hasta un tanque de guerra.
Aun siendo de código libre, el sis-
tema no consigue abrazar, de forma 100% 
satisfactoria, todo lo que le es propuesto que 
haga. Nunca tendrá la misma estabilidad de 
Apple, que desarrolla apenas para hardware 
creado por ella.
¿Cómo podemos esperar que el Win-
dows tenga la misma performance de un 
IOS, sin él es proyectado para ser ejecutado 
en innúmeros tipos de hardware diferentes? 
Aun con los drivers bien instalados, nunca 
será la misma cosa.
DMA
Bueno, vimos que todos los procesos 
de transmisión de datos ocurren entre la 
CPU y las memorias. Mientras más rápido 
dejemos la comunicación entre CPU, me-
morias y periféricos, más rápido trabajará 
el sistema y la CPU se quedará menos 
tiempo ociosa.
70SISTEMAS OPERACIONALES
Antiguamente, todas las transferen-
cias de datos entre memoria y periféricos 
exigía la intervención de la CPU, lo que 
robaba tiempo de procesamiento y dejaba 
el sistema más lento. La solución de ese 
problema fue la implementación de un 
controlador en la placa madre, junto con 
una técnica de transferencia de datos de-
nominada DMA (Direct Memory Acces). 
Vea la siguiente imagen:
La técnica de DMA permite que 
un bloque de datos sea transferido entre 
memoria y periféricos, sin la necesidad de 
que la CPU ejecute alguna tarea, excep-
to al inicio y al final de la transferencia. 
Así, cuando el sistema desee leer o grabar 
un bloque de datos, serán pasadas, de la 
CPU para el controlador, las informacio-
nes, entonces él realizará la transferencia 
entre el periférico y la memoria principal, 
optimizando el tiempo de acceso, dejando 
la CPU libre para procesar otros datos.
Discos Rígidos
Ahora, al final de este módulo, nos 
enfocaremos en el funcionamiento de los 
discos rígidos, pues, son importantes para 
almacenar los archivos de los sistemas, y 
necesitaremos de ese conocimiento para el 
próximo módulo de Sistemas de Archivos.
Un disco rígido es formado por va-
rios discos que son de metal, vidrio o cerá-
mica, apilados unos sobre los otros a una 
distancia muy pequeña. Esos discos son 
llamados de bandejas. Observe la imagen 
que está en la columna al lado:
Los discos giran muy rápido, cerca 
de 7200 RPM para discos más nuevos, al-
rededor de un eje en el sentido opuesto de 
los brazos de un reloj. Como sabemos, la 
computadora funciona de manera binaria 
y los datos son almacenados bit a bit, gra-
bando 0 ó 1 en el disco. Sobre los discos, 
hay una fina capa magnética de algunos 
micrones de espesura, revestida por una 
película protectora, donde los datos son 
almacenados de forma magnética.
La aguja de lectura y grabación tra-
bajan por inducción, o sea, son capaces de 
generar un campo magnético entre ellas y 
la superficie del disco. Cuando el bit que 
será grabado es 1, la inducción polariza la 
superficie positivamente, en el caso con-
trario no, el bit será 0.
Cabe resaltar algo muy importante, 
que el brazo de grabación jamás toca en 
el disco, él solamente graba por inducci-
ón magnética. En el caso de que la aguja 
toque, físicamente, el disco, él generará 
un “agujero”, al cual llamamos de Bad 
block, de la misma manera, cualquier de-
fecto físico en el disco también puede ser 
llamado Bab block.
71SISTEMAS OPERACIONALES
Los Bad block son extremamen-
te indeseables y no poseen corrección, es 
algo que se agrava con el tiempo. Por eso, 
los HDs poseen vida útil y, en el caso de 
que no tomemos algunos cuidados, ellos 
se averiarán mucho antes, debido a eso, 
evite apagar la computadora por el “bo-
tón”, haga todo el proceso para apagarla 
correctamente, eso preservará más el disco.
Antes de volverse utilizable el HD 
necesita ser segmentado, para que el siste-
ma operacional consiga guardar los datos 
en él y montar su sistema de archivos. En-
tonces, es realizada la técnica de Forma-
teo de Bajo Nivel. El Formateo de Bajo 
Nivel segmenta el HD en Pistas, Sectores 
y Cilindros.
Las Pistas son guardadas desde la 
periferia del disco hasta su centro. Pode-
mos tomar como analogía la grabación de 
los discos de Vinil. Estas pistas poseen una 
distancia entre ellos y siguen por todo el 
disco. Los HDs graban tanto en la parte 
superior como en la inferior de los discos, 
y el brazo de grabación puede leer las 2 
caras.
Las pistas son separadas entre dos 
radios que se llaman Sectores, y poseen 
tamaño de, por lo mínimo, 512 bytes por 
sector, en general. La imagen que está a 
continuación ilustra mejor:
Los Cilindros son como “columnas” 
compuestas por varios sectores, uno abajo 
del otro. El HD graba en cilindros, dis-
tribuyendo las informaciones en todas las 
caras de todos los discos, disminuyendo el 
tiempo de acceso y lectura. Conforme la 
imagen que sigue en la columna al lado:
Bueno, ahora tenemos el HD total-
mente segmentado. Y daremos un paso 
adelante, con el objetivo de entender lo 
que llamados de Formateo en nuestro día a 
día. El sistema operacional, antes de copiar 
sus archivos para el HD, efectúa la insta-
lación de su sistema de archivos. Cuando 
él hace eso, un conjunto de sectores del 
HD son direccionados como una única 
unidad lógica, llamada Clúster. Un clúster 
es la menor parcela del HD, que puede ser 
accedida por el sistema operacional. El ta-
maño de cada clúster varía de acuerdo con 
el sistema de archivos escogido. Usando 
FAT 16, cada clúster tiene hasta 32 KB, 
usando FAT 32, cada clúster posee apenas 
4 KB, así como, usando NTFS cada clúster 
posee entre 512 bytes y 4 KB.
En la construcción del Clúster tene-
mos un gran problema: un archivo grande 
es dividido y ocupa más de un clúster, 
pero un archivo pequeño, ocupa un clúster 
entero y ningún nuevo archivo puede ser 
guardado en él, o sea, si un clúster tiene 
4 KB de tamaño y un archivo de 1 KB es 
guardado en él, tendremos el desperdicio 
de 3 KB. Mientras menores sean los clús-
72SISTEMAS OPERACIONALES
teres, menor será la cantidad de espacio 
desperdiciada en el HD. La estrategia del 
tamaño de cada clúster es restricta a cada 
lógica de construcción del sistema ope-
racional.
Síntesis Final
Al finalizar este módulo estamos 
aptos para avanzar para el próximo que 
está, de cierta forma, interconectado a él, 
pues él sólo existe debido a que existen 
los dispositivos de entrada y de salida. 
Así, conseguimos comprender el fun-
cionamiento de los periféricos que están 
conectados a la computadora y cómo el 
sistema debe administrarlos.
Por lo tanto, con este conocimiento, 
conseguiremos resolver mejor los proble-
mas de interconexión entre dispositivos y 
el sistema operacional.
EJERCICIOS
1) Comprender el funcionamiento del hardware es importante 
para desarrollar sistemas cada vez estables y performáticos. 
Expliquepara qué sirven los chipsets y los bus.
2) Interconectar los dispositivos de entrada y de salida de la 
placa madre, es una tarea desarrollada por los módulos de 
entrada y de salida. Cuando surgieron no había un patrón y cada 
fabricante tenía su propio modelo. De esa manera, ¿cuáles son 
las ventajas que la estandarización de esos módulos trajeron 
para los sistemas?
3) Cada vez más los procesadores se vuelven más rápidos y 
el tiempo de acceso a los dispositivos debe ser mucho menor. 
Explique cuál es la técnica/hardware utilizado para acelerar 
el acceso a las informaciones de los dispositivos en tiempo de 
procesamiento.
4) El HD, cuando es creado, no posee nada, siendo necesario que 
sean creados sectores, senderos y cilindros. Explique ¿cuál es la 
técnica utilizada para preparar el HD con esas divisiones?
5) Un clúster es un conjunto de sectores. Cuando utilizamos 
clúster tenemos un gran problema. Explique ¿cuál es ese 
problema? y ¿por qué él es un desafío para los sistemas 
Operacionales?
74SISTEMAS OPERACIONALES
SISTEMA DE 
ARCHIVOS
Siempre, al oír una música, ver un vídeo o guardar 
un archivo, usted sólo está haciendo eso, porque 
existe un sistema de archivo administrándolo todo 
para usted.
En los últimos tiempos, podemos decir que antigua-
mente, el uso de una computadora consistía en recuperar y 
presentar informaciones almacenadas, como documentos, 
imágenes, músicas, vídeos, entre otros. Esa afirmativa es 
verídica y no tenemos como negarla. Cada vez más tenemos 
unidades de almacenaje mayores y, nosotros, como usuarios, 
conseguimos llenar cada byte disponible con algún archivo.
¡Archivos, cómo generamos archivos! Algunos son más 
organizados y dividen todo dentro de directorios, por tipo, 
fecha, tamaño, calidad, entre otras características. Pero, tam-
bién existen, así como yo, las personas que guardan todos 
sus archivos sueltos y perdidos en una carpeta o, incluso, en 
el Desktop de sus computadoras. Entonces, cabe al sistema 
conseguir administrar todos los archivos, almacenándolos de 
forma íntegra e indexable.
¡Preste atención para aprender todo sobre 
Sistema de Archivos en este capítulo!
75SISTEMAS OPERACIONALES
Sin embargo, no hablaremos que so-
lamente los usuarios utilizan las unidades 
de almacenaje. El propio sistema necesita 
almacenar sus archivos de inicialización 
en algún local seguro, para que puedan 
ser cargados en memoria RAM durante 
el proceso de start del sistema. Al final, 
todos estamos rehenes del almacenaje de 
datos.
De esa manera, en ese contexto, sur-
gió el Sistema de Archivos, donde cada 
sistema operacional posee su lógica de 
almacenaje, búsqueda y GESTIÓN de 
la información, de sí propio y del usuario.
Los Sistema de Archivos
EEntonces, empezaremos a enten-
der esta última, pero no menos importante, 
parte de funcionamiento del sistema ope-
racional. Recapitularemos algo del capítulo 
anterior. ¿Se acuerdan de la formación del 
clúster en los HDs? Entonces, los sistemas 
de archivos trabajan directamente con el 
clúster. Cuando hacemos el formateo de 
los HDs, estamos insertando, en ellos, 
el sistema de archivo que utilizará para 
almacenar los archivos del sistema, que 
servirán para inicializarlo cada vez que 
la computadora o dispositivo sea iniciado.
El sistema de archivo debe garanti-
zar métodos para acceso a los archivos al-
macenados. Fíjese que siempre hablaremos 
de archivos, nunca de datos o informacio-
nes, pues, para el sistema operacional todo 
es un archivo, cuando sea almacenado.
Además de eso, el sistema de archivo 
debe garantizar técnicas de integridad de 
esos archivos para que ellos no sean cor-
rompidos, tanto los de usuarios como los 
de sistema. Eso me hace recordar un siste-
ma operacional que corrompía los archivos 
de inicialización con facilidad, y cuando 
era iniciado, un mensaje desagradable apa-
recía, sugestionando que un determinado 
archivo estaba faltando o corrompido y la 
inicialización sería suspendida. Los sis-
temas más actuales ya poseen una gran 
protección de sus archivos y son capaces 
de recuperar archivos preponderantes para 
su funcionamiento, pero el índice de esos 
errores disminuyó mucho. Sólo quien vivió 
esa época sabe la af licción que nos daba 
cuando faltaba energía eléctrica y la com-
putadora se apagaba solo.
Otra función importantísima del 
sistema de archivo es saber dónde los ar-
chivos están almacenados, de forma física 
en el HD o unidad de almacenaje.
Al final, ¿de qué nos sirven los ar-
chivos guardados si no conseguimos loca-
lizarlos? Los sistemas de archivos indexan 
todo contenido para poder accederlo siem-
pre que sea necesario. Ellos aún necesitan 
garantizar que los usuarios puedan crear, 
alterar y excluir archivos, así como realizar 
su duplicación y transferencia de datos en-
tre ellos, soportando también operaciones 
de backup y restore.
Otro punto importante del siste-
ma de archivo es el intercambio de ellos 
entre los usuarios, sean ellos usuarios de 
red o usuarios locales dentro del sistema. 
Naturalmente, grandes desafíos apare-
cen en ese ámbito, pues, el intercambio es 
fundamental para el buen funcionamiento 
del sistema, pero, cuando un archivo es 
76SISTEMAS OPERACIONALES
compartido, la probabilidad de que él sea 
corrompido, perdido o dañado, aumenta 
de forma exponencial.
Los sistemas de archivos aún deben 
garantizar seguridad y auditoría de acceso 
a los archivos. Éste es el gran diferencial 
del Linux sobre el Windows, en lo que 
se refiere a seguridad. Estudiaremos eso 
mejor más adelante, ahora nos basta saber 
que los sistemas de archivos deben garan-
tizar la seguridad de acceso a los archivos.
Por supuesto, contribuyendo para 
uno de los objetivos principales del sistema 
operacional, así, los sistemas de archivos 
ofrecen una interface amigable para que 
el usuario interactúe con los archivos, ga-
rantizando transparencia y facilidad de 
utilización.
En suma, podemos afirmar que los 
sistemas de archivos son responsables por 
organizar los archivos del sistema ope-
racional y del usuario, con el objetivo de 
controlar, organizar y garantizar la inte-
gridad y seguridad de ellos.
Archivo
Si estamos estudiando un sistema 
de archivos, tenemos que entender qué es 
un archivo. De forma teórica, los archivos 
son un conjunto de datos en un dispositivo 
físico no volátil y posee un nombre. Para 
ser más sencillo, prácticamente todo lo 
que está en un dispositivo de almacenaje 
es un archivo, incluso, un directorio es un 
archivo (veremos eso, más adelante, en el 
Linux). El archivo es la unidad básica de 
almacenaje de información.
Para diferenciar y clasificar archivos, 
ellos poseen algunos atributos que varían 
de acuerdo con cada sistema de archivo o 
sistema operacional, pero, los más básicos 
son éstos:
• Nombre: Sé que parece un poco 
extraño hablar que cada archivo 
posee un nombre, al final, estamos 
acostumbrados a dar nombre para 
cada archivo, pero, el nombre es de 
suma importancia, pues, es él que 
lo identifica. ¿Ya intentó guardar un 
archivo sin nombre, crear 2 archivos 
con el mismo nombre en un único 
directorio? Intente hacer esas prue-
bas, verá que no es posible, pues, 
para el sistema el archivo es único. 
Usted puede guardar archivos con el 
mismo nombre, solamente, si están 
en directorios diferentes. A veces, 
el sistema tampoco permite que 2 
archivos sean cargados en memo-
ria con el mismo nombre, causando 
conflicto.
• Tipo: El tipo de archivo indica cuál 
formato posee, o sea, si él es un mp3 
o un jpeg o incluso, aquél su control 
financiero en una planilla xls. Al-
gunos sistemas operacionales usan 
parte del nombre del archivo para 
identificar el contenido, en la for-
ma de una extensión: “.doc”, “.jpg”, 
“.mp3”, “.xls”, etc. El Linux no uti-
liza eso, él trabaja directamente con 
el contenido del archivo.
• Tamaño: Todos los archivos poseen 
indicación de su tamaño. Es impor-
tante que el usuario tenga conoci-
miento del tamaño para manipular 
mejor el archivo.
• Fecha:Para fines de auditoría y 
gestión, mantener las fechas de los 
77SISTEMAS OPERACIONALES
archivos es importante.
• Propietario: En los sistemas mul-
tiusuarios es importante identificar 
el propietario del archivo para que 
ningún otro usuario pueda tener 
acceso o administrar el archivo de 
otro. Para la construcción de privile-
gios de acceso, también es necesaria 
la información del propietario del 
archivo.
• Permiso de Acceso: Los permisos 
indican cuáles usuarios tienen ac-
ceso a aquel archivo y cuáles formas 
de acceso son permitidas (lectura, 
escrita, remoción).
• Localización: Piensen conmigo, ¿es 
más fácil encontrar una calle en el 
GPS o quedarse dando vueltas por la 
ciudad hasta llegar a ella? La locali-
zación de los archivos es importante 
para facilitar su gestión en el sistema 
y es un atributo importantísimo.
Esencialmente, ésos son los atribu-
tos básicos de los archivos. Cuando es-
tudiemos el Linux, veremos algunos de 
gestión del sistema de archivos.
Operaciones
Bueno, ahora tenemos los archivos 
almacenados en nuestras unidades de alma-
cenaje, pero, los usuarios no dejan esos ar-
chivos estáticos y mucho menos el sistema. 
Algunas operaciones deben ser realizadas 
sobre ellos. Al final, no sirve de nada tener 
archivos que no pueden ser manipulados. 
Generalmente, las operaciones son imple-
mentadas a través de llamadas de sistemas, 
o sea, los usuarios y los programas dependen 
de la interacción con el Kernel, a través de 
las systems call, para poder tener acceso a 
los archivos.
Las operaciones más básicas que pue-
den ser realizadas son las siguientes:
• Crear: De forma simplista, la creaci-
ón de un archivo implica en separar el 
espacio para él dentro del dispositivo 
de almacenaje, así, como definir sus 
atributos como nombre, localizaci-
ón, propietario, permisos de acceso, 
entre otros;
• Abrir: Parece obvio, pero, antes que 
una aplicación manipule los datos en 
un archivo, ella le solicita al sistema 
operacional su “abertura”. Primero, el 
sistema verificará si el archivo exis-
te, analizará cuáles son los permisos 
vinculados al archivo y si permiten su 
abertura. Y, por fin, el sistema loca-
lizará su contenido en el dispositivo 
de almacenaje.
• Leer: Si el sistema consigue abrir 
el archivo, entonces, eso le permite 
transferir los datos presentes en el 
archivo para un área de memoria, 
para que la aplicación pueda acceder 
los datos.
• Escribir: Cuando escribimos en un 
archivo, estamos actualizando su 
contenido, o sea, estamos transfi-
riendo los datos de la memoria de 
la aplicación para el archivo en el 
dispositivo de almacenaje, siendo que 
los nuevos datos pueden ser adiciona-
dos al final del archivo o sobrescribir 
datos ya existentes.
• Alterar atributos: Podemos también 
modificar atributos y otras caracte-
rísticas del archivo, como nombre, 
localización, propietario, permisos, 
entre otros.
78SISTEMAS OPERACIONALES
• Cerrar: Al término del uso del archi-
vo, la aplicación debe informarle al 
sistema operacional que él no es más 
necesario y, así, liberar sus estruc-
turas de GESTIÓN en la memoria 
del Kernel.
• Retirar: Esta operación elimina el 
archivo del dispositivo, descartan-
do sus datos, luego libera el espacio 
ocupado por él en el dispositivo de 
almacenaje para que un nuevo archi-
vo sea guardado.
Formatos
De forma esencial, todo el archivo 
es apenas una secuencia de bytes que está 
estructurado de diversas formas y, con eso, 
consigue representar innúmeros tipos de 
informaciones que están contenidas en 
él. Para el sistema operacional un archi-
vo equivale a muchos datos sin ningún 
sentido.
Algunos formatos básicos como 
archivos binarios, bibliotecas y ejecuta-
bles, consiguen ser interpretados por el 
propio Kernel del sistema operacional, y 
nada más. El sistema, normalmente, no 
interpreta todo y cualquier tipo de archi-
vo, solamente, los que son esenciales para 
su buen funcionamiento. Un sistema que 
sólo interpreta archivos importantes para 
él, no sería de gran valor para nosotros, 
¿verdad? Al final, necesitamos manipular 
una variedad enorme de archivos.
Para abrir formatos desconocidos, 
el sistema operacional depende de inter-
pretadores
o software que lo ayudan en esa ta-
rea. Muchos formatos son propietarios y 
exclusivos de algunos fabricantes de sof-
tware, lo que permite que sean abiertos, 
solamente, por programas y aplicativos 
desarrollados por ellos.
Ejemplificaremos mejor: uno de 
los formatos más conocido de documen-
tos de texto es el creado por el Microsoft 
Word, el cual genera archivos en el for-
mato .DOCX. De esa manera, el siste-
ma operacional, por sí solo, no consigue 
interpretar el contenido del archivo, no 
consigue abrirlo. Entonces, es necesario 
instalar el Microsoft Word para poder 
abrir el archivo y manipular su contenido. 
Esa misma lógica se aplica para todos los 
formatos que conocemos, como jpeg, mp3, 
pdf, dwg, entre tantos otros.
Directorios
¿Recuerdan cuándo les dije que para 
el sistema de archivos casi todo es un archi-
vo? Bueno, un directorio es un archivo. Es 
exactamente lo que usted leyó, un directorio 
es un archivo.
Intentaremos explicar un poco mejor.
El sistema de archivo sólo gerencia 
archivos, sólo que, si todos los archivos 
quedaran sueltos dentro de las unidades de 
almacenaje, todo sería mucho más complejo 
y desorganizado, generando lentitud en la 
búsqueda de archivos, pérdida de archivos, 
entre otros tantos problemas.
A partir de eso, surgió una idea, crear 
directorios, con el objetivo de organizar 
los archivos y poder trabajar de forma más 
precisa con los permisos de accesos y pro-
tección de algunos datos. Los directorios 
son archivos que contienen una lista de 
79SISTEMAS OPERACIONALES
otros archivos y también de directorios, 
funcionando más o menos, desde mi punto 
de vista, como un índice, donde quedan 
almacenadas las coordenadas para llegar 
hasta los archivos.
Los directorios son manipulados de 
una forma muy similar a los archivos, te-
niendo los mismos atributos y operaciones, 
con la diferencia de que algunas operacio-
nes, cuando son aplicadas en el directorio, 
serán replicadas de forma jerárquica para 
todos los archivos y subdirectorios que es-
tán debajo de él. Por ejemplo, si tenemos 
un directorio
llamado Música y tenemos “dentro” 
de él un CD completo de Elba Ramalho, 
todos los archivos estarán vinculados con 
la carpeta raíz, Música, y, en el caso de que 
borremos el directorio Música, todos los 
archivos relacionados a él también serán 
retirados.
Para tener una idea de cómo está 
estructurada la jerarquía de carpetas, abra 
el prompt de comando del DOS (CMD), 
en su computadora, y digite el comando 
TREE, el resultado será algo así:
Intercambio de Archivos
Un gran desafío del sistema de archivos es administrar el intercambio de los 
archivos del sistema entre usuarios y procesos. Es muy común que más de un usuario 
tenga permiso de acceso a un archivo. En un sistema operacional podemos deparar-
80SISTEMAS OPERACIONALES
nos con una situación donde dos usuarios 
quieren acceder el mismo archivo al mismo 
tiempo. Ese tipo de situación puede gene-
rar un gran problema, como corromper el 
archivo o perder los datos que están en él.
Usualmente, el acceso simultáneo 
a un archivo, solamente para su lectura, 
no acarrea problemas, o sea, más de un 
usuario o proceso pueden acceder un ar-
chivo al mismo tiempo si ellos sólo van a 
“leerlo”, sin alterar nada dentro de él. El 
gran problema ocurre
cuando ese acceso simultáneo entre 
los procesos tiene el objetivo de alterar los 
datos que están dentro del archivo.
Ese acceso genera una condición 
de disputa entre los procesos o usuarios 
para ver quién tendrá acceso al archivo. 
Podemos llamar esas situaciones de race 
conditions, que pueden llevar a la incon-
sistencia de los datos y a otros problemas.
Un ejemplo muy claro de eso es 
cuando estamos con un intercambio en 
el sistema operacional de un directorio, 
con varios archivos.DOCX en ellos. El 
primer usuario que abra uno de los archi-
vos ganará el derecho de acceso y edición, 
ya, el segundo usuario que abra el mismo 
archivo, conseguirá el acceso apenas como 
“solamente lectura”, justamente para pro-
teger la integridad del archivo.
Trabas en Archivos y Semántica 
de Acceso
Acceso simultáneo es algo indeseab-
le, como ya pudimos percibir, pues, puede 
corromper el archivo, entonces, algunas 
tratativas de acceso deben ser realizadas, 
con el objetivo de protegerlos. Como so-
lución más sencilla y usada, la mayoría de 
las veces, tenemos la técnica de exclusión 
mutua.
La exclusión mutua es muy sencilla, 
ella se denomina por el hecho de que un 
archivo, está asignado a un usuario o a un 
proceso. El sistema sencillamente suspende 
cualquier otro que quiera el mismo archivo, 
hasta que él esté liberado y, de esta manera, 
lo esté protegiendo. Quien llegue antes, 
tiene el derecho de manipular el archivo, y 
los demás usuarios podrán usarlo solamente 
en modo de lectura. Esas trabas de acceso, 
propuestas por el sistema, pueden ser obli-
gatorias (madatory locks) o recomendadas 
(advisory locks).
De esa manera, tenemos una solución 
de trabas en los archivos, pero, ni siempre 
ellas atienden nuestras necesidades, enton-
ces, tenemos algunas técnicas de semántica 
de acceso para ayudarnos y, así, no perder 
los archivos. Ellas son:
• Semântica UNIX: En esta técnica, 
toda alteración realizada en un ar-
chivo es inmediatamente visible para 
todos los procesos. Esa semántica es 
la más común en sistemas de archi-
vos locales, o sea, para acceso a los 
archivos en los dispositivos locales.
• Semántica de sesión: En esta lógi-
ca, cada proceso usa un archivo en 
una sesión que tiene inicio con su 
abertura y que termina cuando él es 
cerrado. Las alteraciones realizadas 
en un archivo de una sesión, estarán 
solamente visibles después de que 
el proceso cierre el archivo. Así, las 
sesiones competidoras de acceso a un 
81SISTEMAS OPERACIONALES
archivo compartido consiguen ver los 
contenidos diferentes para el mismo 
archivo. La respectiva semántica es 
normalmente aplicada a los sistemas 
de archivos de red.
• Semántica inmutable: En esa semán-
tica, un archivo puede ser compartido 
por varios procesos, siendo marcado 
como inmutable, o sea, su contenido 
no puede ser alterado. Esa técnica es 
la forma más sencilla para conseguir 
la consistencia del archivo entre los 
procesos que comparten su acceso y, 
en vista de eso, es usada en sistemas 
de archivos distribuidos.
Control de Acceso
Una de las principales funciones 
del sistema de archivos es garantizar la 
seguridad de acceso a los que están al-
macenados. Existen archivos del propio 
sistema que sólo pueden ser accedidos por 
usuarios autorizados o con privilegios de 
administración del sistema, con el objetivo 
de proteger los archivos preponderantes 
para el buen funcionamiento del sistema 
operacional. Básicamente, para contro-
lar el acceso a los archivos, vinculamos, a 
ellos, el propietario del archivo y también 
los permisos de acceso de cada usuario o 
grupo (lectura, escrita y ejecución) sobre él.
En sistemas operacionales multiu-
suarios, queda muy clara esa distinción de 
acceso a los archivos. Usaremos el ejemplo 
clásico del Windows. Tenemos 2 usuarios 
registrados en el sistema, el ususario1 y el 
usuario2. Todos los archivos creados por 
el usuario1 estarán vinculados a él como 
dueño y tendrá permisos de control total 
sobre él. En el caso de que intentemos 
acceder a los archivos con el usuario2, apa-
recerá un mensaje de “acceso negado” y los 
archivos no abrirán. Para que el usuario2 
tenga acceso a los archivos, es necesario 
que el usuario1 le dé ese permiso, pudiendo 
escoger si, solamente, permitirá la lectura 
del archivo o si también liberará altera-
ciones de escrita en él. 
Existen otros tantos permisos y for-
mas de acceso, pero de forma simplona, 
es más o menos así que funciona. Más 
adelante, en el Linux, estudiaremos me-
jor toda esa parte de permiso de acceso e 
intercambio de archivos.
Sistemas de Archivos NTFS y EXT
Ya entendimos cuáles son las fun-
ciones de un sistema de archivos, ahora 
conoceremos los sistemas de archivos más 
populares que tenemos. 
NTFS
El NTFS es un sistema de archivos 
desarrollado por Microsoft y utilizado en 
gran escala en sus sistemas operaciona-
les. El primer sistema que usó el NTFS 
fue el Windows NT, sistema operacional 
para uso en servidores, siendo su primera 
versión de 1993.
En la época del lanzamiento del 
Windows NT, Microsoft utilizaba el sis-
tema de archivos FAT. Ese sistema de 
archivo funcionaba bien en aplicaciones 
domésticas, pero tenía una serie de res-
tricciones como, baja tolerancia a fallas, 
82SISTEMAS OPERACIONALES
inviabilidad de uso de permisos de archi-
vos y limitaciones con volumen de datos 
mayores (archivos mayores que 4GB).
Con el crecimiento de la compu-
tación doméstica surgió la necesidad de 
almacenar archivos mayores, sumada a 
las fallas del sistema de archivos FAT, 
hicieron que Microsoft decidiera invertir 
en el NTFS como su sistema de archivo 
patrón en los servidores y en los desktops.
Una de las principales características 
del NTFS es que él consigue recuperar 
archivos en casos de fallas. De esa manera, 
el NTFS consigue revertir los datos a la 
condición anterior al incidente. Podemos 
comparar eso a un checkpoint que existe 
en los juegos, cuando, el jugador “mue-
re” él no regresa hasta el inicio del juego, 
él vuelve a un paso antes de “morir”, así, 
funcionan los archivos. El sistema guarda 
logs que le permite deshacer acciones que 
comprometieron los archivos, como la des-
conexión inesperada del sistema en el caso 
de que falte energía eléctrica. Pero, no se 
eludan, que el NTFS no hace milagros, 
él puede ser muy bueno, pero hay fallas 
donde no es posible efectuar rollback, por 
lo tanto, es mejor no confiar 100% en estos 
mecanismos.
Otra característica de evolución del 
NTFS fue el perfeccionamiento de permi-
sos de acceso a los archivos, volviéndose 
mucho más seguro y estable con sus atri-
butos de seguridad.
EXT
Si, en el lado del Windows tenemos 
el sistema de archivos NTFS, en el lado del 
Linux tenemos el EXT. El patrón EXT 
fue creado para el UNIX y como el Linux 
es basado en Unix, acabó siendo la base 
de creación de los sistemas operacionales 
del Linux.
El primer EXT surgió en 1992, 
siendo incorporado por Linus Torvalds 
al Linux 0.96. Así, como el sistema de 
archivo de Microsoft fue evolucionando, 
el del Linux también lo fue, pasando por el 
EXT2, EXT3 y llegando al actual EXT4, 
lanzado en el 2006 y utilizado hasta los 
días de hoy.
Entre las mejoras que el patrón EXT 
tuvo, hasta llegar al EXT4, podemos re-
saltar el aumento del file system. El patrón 
EXT3 conseguía asignar una partición 
de, por lo máximo, 32 TB y manipular 
archivos de hasta 2 TB. Ya, el EXT4 con-
sigue asignar para particiones hasta 1EB 
(exabyte) y 16TB para los archivos.
Otro punto importante es el mayor 
número de subdirectorios posibles. El 
patrón tenía un límite de subdirectorios 
por carpetas de 32000. Ya, en el EXT4 
no tenemos esa limitación, el número de 
subdirectorios es ilimitado.
Así como el patrón NTFS, el EXT4 
también posee su técnica de recuperación 
de archivos. Ella es llamada Journaling y 
tiene su funcionamiento prácticamente 
igual al del NTFS. La técnica de recu-
peración del NTFS también puede ser 
llamada journaling, de esa manera, esa 
mejora trajo más estabilidad para el Linux.
83SISTEMAS OPERACIONALES
MBR
Bueno, ya entendimos cómo fun-
ciona el sistema de archivos y ya conoci-
mos los más populares, entonces, ahora 
tenemos que aprender una cosa más que 
dejamos para el final. Haremos una co-
nexión entre los dispositivos de entrada y 
de salida y el sistema de archivos en este 
momento.
Ya vimos cómo funciona el HD con 
rutas, sectores y cilindros y que para que el 
sistema operacional pueda ser cargado en 
memoria RAM sus archivosdeben estar 
almacenados en el HD, siendo necesario 
que el sistema de archivo esté “instalado” 
para organizar los archivos y garantizarles 
integridad.
En el HD existe una ruta llamada 
Ruta Cero o MBR (Master Boot Recor-
der). La MBR posee 512 bytes de tamaño 
y en ella están almacenadas las informa-
ciones sobre los sistemas operacionales 
instalados y dónde están guardados (su 
dirección) los archivos de inicialización 
para que el sistema pueda ser cargado de 
forma organizada.
Cuando instalamos el sistema ope-
racional en el HD necesitamos efectuar 
la instalación de algo más importante, el 
Administrador de Boot (Boot Manager). 
Él es responsable por cargar los archivos 
del sistema durante el proceso de boot, él 
se encuentra instalado dentro de la MBR.
Los administradores de boot más 
populares son el NTLDR y el BOOTM-
GR utilizados por Microsoft. Po el lado 
del Linux tenemos como más populares 
el LILO y el GRUB.
Cabe ponderar que si la MBR es 
corrompida el sistema operacional no ini-
ciará más, pues, sin ella el proceso de boot 
no sabe dónde están localizados los archi-
vos del sistema, con el objetivo de cargarlos 
en memoria. En el caso de que ocurra la 
pérdida de la MBR, basta reinstalarla, no 
siendo necesario reinsertar todo el sistema 
operacional.
Síntesis Final
Finalizando esta etapa, ya encer-
ramos esa descubierta inicial de cómo 
funcionan los sistemas. En este capítulo, 
conseguimos comprender cómo el sistema 
operacional almacena sus archivos y cómo 
garantiza su integridad, administrando 
también el control de acceso y de seguri-
dad de ellos.
Por lo tanto, ya con todo ese cono-
cimiento, daremos secuencia y entrare-
mos en el submundo del Linux, en una 
inmersión rasa, la cual nos capacitará para 
ir más fundo.
Ejercicios
11) Para que sea posible utilizar el HD para guardar archivos es 
necesario que un sistema de archivo esté “instalado” en él. De 
esa manera, ¿cuáles son las principales funciones del sistema 
de archivos?
2) Para organizar mejor el sistema operacional, él dividió los 
datos en archivos y directorios, pero, para él todo es la “misma 
cosa”. A partir de eso, ¿por qué un directorio es “la misma cosa” 
que un archivo?
3) Protección de datos es, con toda seguridad, una función 
primordial de un sistema de archivos y, para eso, fue 
desarrollada la técnica de journaling. ¿Qué es journaling y por 
qué él es tan importante?
4) Para que la computadora sepa dónde están los archivos de 
inicialización, ella necesita un “GPS” que indique dónde están los 
archivos, por eso existe la MBR. ¿Qué y dónde queda guardada 
la MBR?
5) El sistema operacional no consigue abrir cualquier tipo de 
archivo. Para las extensiones desconocidas, ¿cómo abre él los 
archivos?
85SISTEMAS OPERACIONALES
EL LINUX
Windows no es el único sistema existente. 
Ahora, entraremos en el submundo del Linux y 
descubriremos cuán fantástico él es.
No soy un activista del software libre, mucho menos un 
defensor de softwares propietarios, pero, puedo decir que tengo 
un cariño especial por Linux, sin embargo, consumo muchas 
soluciones de softwares propietarios. Digo eso, pues mi obje-
tivo no será hablar mal del Windows o decir que el Linux es 
el mejor sistema de todos los tiempos, pero sí poder abrir las 
mentes de todos para nuevas tecnologías y cómo ellas pueden 
ayudarnos en nuestro día a día.
Durante mi trayectoria personal, profesional y docente 
en el área de la tecnología, pude permear variados mundos e 
intercambiar muchas experiencias con amigos, compañeros 
y, principalmente, con alumnos. Inicio este capítulo con una 
conclusión: concluyo que no existe sistema mejor o peor, pues, 
todas las tecnologías cuando bien empleadas cumplen su papel.
Nosotros, mientras profesionales de tecnología, tenemos 
la obligación de conocer todas las herramientas que están a 
nuestra disposición para que, de esa manera, podamos crear 
softwares cada vez mejores, más robustos, escalables y, princi-
palmente, adaptables. Entonces, si usted nunca instaló el Linux 
o ni sabe qué es eso, le pido que abra su mente para un nuevo 
Abra su mente y prepárese para aprender qué es 
Linux
86SISTEMAS OPERACIONALES
mundo de posibilidades y de libertad. En 
el caso de que usted ya sea un activista de 
software libre, ayúdenos en los foros de 
discusión, exponiendo sus experiencias y 
enseñándonos, pues quiero mucho aprender 
más con ustedes.
Sin más dilación, podemos resumir, 
en esta introducción, que el Linux es un 
sistema operacional libre, gratuito y que 
se adapta a cualquier necesidad. Excelen-
te para desarrolladores, muy seguro para 
publicación de aplicaciones y con más per-
formance para ejecución de base de datos. 
Entonces, era eso, ¡conozcamos más de este 
sistema operacional que encanta a tantos!
Historia 
Nuestro conocido Bill Gates em-
pezó el dominio de los sistemas opera-
cionales en 1981, con el lanzamiento del 
MS-DOS para PC y fue evolucionando 
hasta llegar en las diversas versiones del 
Windows que, hasta hoy, ocupa el mayor 
pedazo de mercado. A pesar de eso, Mi-
crosoft es una novata en el ramo de siste-
mas operacionales. Mientras era lanzado el 
MS-DOS, el abuelo UNIX ya era maduro 
y usado en computadoras de gran porte. 
Apenas un punto de vista mío: Bill Gates 
fue inteligente al enfocarse en computa-
doras personales e hizo un buen trabajo 
de marketing.
El UNIX empezó su vida en 1969, 
en una computadora que costaba en la 
época US$ 72.000, llamado de PDP-7. 
Él tenía increíbles 8 Kbytes de memoria 
RAM y utilizaba cintas magnéticas para 
almacenaje. Su poder de procesamiento 
era menor que una agenda electrónica. 
En esa época, GESTIÓN de memoria 
del sistema era algo crucial, pues, había 
poca memoria física y los programadores 
tenían que escribir códigos de los sistemas 
capaces de liberar memoria después de su 
ejecución, en el caso contrario, todo
trabaría. Querido programador, 
piense que programar en Java puede ser 
difícil, pero, hacer que las cosas funcionen 
con 8 Kbytes de RAM, es mucho más 
difícil.
Como podemos percibir, existían 
limitaciones enormes de hardware, enton-
ces, el sistema operacional debería ser muy 
ajustado y exponencialmente optimizado, 
para que pudiera extraer el máximo de 
desempeño de la computadora. Ante esas 
necesidades, el Unix surgió y fue evolu-
cionando a lo largo del tiempo. Más un 
complemento mío: Los desarrolladores 
de Microsoft no pensaron mucho en de-
sempeño y optimización cuando crearon 
el Windows Vista, ¿verdad?
El Unix era un sistema “desagra-
dable” siendo usado ampliamente para 
“cosas serias”, como aplicaciones militares, 
bancos y otras áreas donde no puede ha-
ber margen para fallas. La evolución del 
sistema lo volvió muy robusto y estable, 
siendo utilizados hasta hoy en aplicaciones 
críticas y “serias”.
Cerca de los años 1980, las compu-
tadoras personales eran vistas como equi-
pos limitados y no conseguían rodar un 
sistema Unix, por eso, no hubo inversiones 
en el desarrollo de Unix para desktops do-
mésticos. Así, con el tiempo, la plataforma 
87SISTEMAS OPERACIONALES
se fue desgastando y el Windows tomando 
cada vez más cuerpo en la computación 
personal.
Sin embargo, en 1991, el visionario 
Linus Torvalds empezó a trabajar en un 
sistema Unix para rodar en su computa-
dora personal, una 386. En la época, exis-
tía un sistema llamado Minix, utilizado 
en el medio académico, basado en Unix. 
Torvalds lo utilizaba para rodar editores, 
compiladores y otras herramientas de de-
sarrollo para avanzar el Kernel del Linux. 
Cuando el Minix no era más necesario, él 
empezó a utilizar su propio sistema Linux, 
o sea, el Linux pasó a ser desarrollado 
dentro del propio Linux.
Así, como todo buen nerd, el hobby 
de Torvalds era programar. El Linux era 
un proyecto pequeño, desarrollado por un 
programador, pero, él colocó el software 
bajo la licencia GPL, lo que creó oportu-
nidad para que otros programadores adop-
taran el proyecto, pudiendo contribuir con 
mejoras y correcciones.Eso permitió que 
varios esfuerzos fueran canalizados para 
desarrollar el Linux y evolucionarlo hasta 
el código que tenemos hoy, que permanece 
en constante evolución.
Juntamente como Linux, otros 
proyectos pudieron ser registrados. Ya 
que, el sistema solo no es de gran valor 
para desktops, pues, el Kernel del sistema 
solo no hace nada, él necesita aplicaciones 
y softwares que funcionen en él para que 
los usuarios puedan realizar sus activi-
dades. De esa manera, proyectos como 
OpenOffice, Gnome, Firefox, entre otros, 
ganaron cuerpo y fueron siendo integrados 
al Linux, permitiendo una experiencia 
diferenciada con él.
Otro marco en la historia del Linux 
hasta los días de hoy es el Knoppix y la 
posibilidad de ejecutar el sistema a través 
de un Live CD. En el 2002, la tecnología 
del Knoppix permitió rodar el sistema 
operacional a través del CD-ROM, sin que 
sea necesario que el HD esté conectado. 
Hoy, prácticamente, todas las versiones 
del Linux permiten que usted ejecute el 
sistema a través de un pendrive o un Live 
CD. Al contrario de que el proceso de 
boot cargue el sistema del HD, él busca, 
en el CD o en el pendrive, los archivos de 
inicialización y carga en memoria RAM, 
lo que permite probar el sistema sin tener 
que instalar el file system en el HD y 
efectuar la copia de los archivos.
El Linux es un software libre, to-
talmente libre y de código abierto. Esa 
característica es su punto fuerte, pero, 
también es su “talón de Aquiles”. Con el 
paso de los años, innúmeras distribuciones 
del Linux surgieron, realmente muchas. 
Inicialmente, podría colocar un número 
estimado, pero ese número es controver-
tido y no preciso (Google no me ayudó 
mucho ahora). Como hay muchas distri-
buciones, siendo extremamente complejo 
que alguien mantenga aplicaciones que 
funcionen en todas ellas. Otra dificultad 
es con el desarrollo de algunos drivers 
específicos, es mucho más sencillo que 
un fabricante desarrolle un drive para un 
número limitado de sistemas y mucho más 
barato.
Algunas distribuciones son consi-
deradas principales, por ser más robustas 
y poseer una comunidad más activa e, 
88SISTEMAS OPERACIONALES
incluso, patrocinada. Podemos destacar, 
como distribuciones seminales, el Red 
Hat, Slackware, Debian, Ubuntu (basado 
en Kernel Debian) y Suse. Disculpen si 
dejé alguna distribución que a usted le 
guste para fuera, pero creo que son esas 
las más “viejas” y que sirvieron de base 
para todas las otras. Miraremos Ubuntu 
durante nuestra clase, pues, creo que sea 
muy didáctica y sencilla para el manoseo 
de iniciantes.
Ahora que conocimos un poco del 
sistema, daremos secuencia y entendere-
mos cómo él funciona.
Entendiendo el sistema
Bueno, querido alumno, a partir de 
este momento, le pido que abra su mente 
para cosas nuevas. El Linux posee muchas 
características del sistema que lo originó, 
el Unix. Así, para quien viene del universo 
diseñado por Microsoft, el Linux pare-
ce algo exotérico, con su organización de 
carpeta, forma de instalación de programas 
y el uso de archivos, pero, ni todo es tan 
complicado así, basta un poco de tiempo y 
un primer contacto para que usted vea que 
el sistema es muy interesante y completo.
El Linux es famoso por su versatili-
dad en el modo CLI (command line inter-
face), siendo utilizado, en su gran mayoría, 
en servidores. La falta de ambiente gráfico 
tal vez sea la experiencia más disruptiva 
que un usuario, que viene del Windows, 
sufra, pero, no todo es hecho en línea de 
comando y existen ambientes gráficos muy 
utilizados en desktops. Todos los usuarios 
del Linux, aun los que utilizan la versión 
Desktop, optan por realizar
varias tareas en el modo CLI, ya que 
permite más agilidad en la ejecución de 
varias tareas.
Como la principal idea de un Cen-
tro Universitario es romper paradigmas e 
incentivar su cuerpo académico para nue-
vos desafíos, enfocaremos el estudio en la 
versión más básica del Linux, sin ambiente 
gráfico, para abstraer conceptos y entender 
mejor la estructura del sistema.
Uno de los grandes diferenciales del 
Linux es la cantidad de documentación dis-
ponibles en internet. Existe una comunidad 
muy activa que alimenta foros, portales, 
blogs y sitios especializados en la utilización 
del Linux, prácticamente, todo el material 
está disponibles de forma gratuita.
Entonces, nos sumergiremos un poco 
más en la estructura del sistema, entende-
remos cómo funciona y aprenderemos a 
utilizar esa herramienta tan poderosa que 
es el Linux.
89SISTEMAS OPERACIONALES
Estructura del Sistema
Dentro de su Windows, accediendo el menú Mi Computa-
dora, usted verá que hay una unidad de disco “C”, dentro de ella 
existen carpetas como Archivos de Programas (que almacenan los 
archivos de los programas instalados), también, hay una carpeta 
llamada Usuarios y dentro de cada usuario están los archivos 
pertinentes, incluyendo Desktop, Documentos, Imágenes, entre 
otras. En suma, es una partición llamada “C”, donde quedan todos 
los archivos del sistema, más o menos como muestra la imagen:
De esa manera, tenemos la primera quiebra de paradigma. 
En el Linux no tendremos una partición “C”, pero sí un punto 
de montaje “/”, el cual puede ser comparado con una analogía a 
la partición “C” del Windows, pero, dentro de ella, la estructura 
de carpetas es esotéricamente diferente, más o menos como la 
siguiente imagen:
Puedo pensar que, después de visualizar esa imagen, usted 
debe haber hecho por lo menos 5 minutos de silencio, o debe 
haberse trabado, pensando:
“¿Qué tipo de pantalla negra con cosas escritas es esa? “, 
no se desespere, al final todo acabará bien.
 
90SISTEMAS OPERACIONALES
Accediendo el Linux en modo gráfico, esa misma pantalla negra y llena de 
caracteres es más o menos igual a la próxima pantalla:
El gran desafío, que los primeros pasos en el Linux nos proponen, es conseguir 
abstraer la pantalla gráfica, a través de la visualización del modo texto. Entiendo, 
que esa dinámica es algo que lleva tiempo para conseguir absorber, entonces, demos 
secuencia a la clase, pues, poco a poco, ella quedará cada vez más clara para nosotros.
Kernel
La principal parte del sistema operacional es el Kernel. Nada funciona si el 
Kernel no existe o si él está con problemas, por eso, empezaremos el estudio de 
la estructura a través de él. Si entramos 
en la carpeta /boot del Linux, veremos 
que allí dentro existe un archivo llamado 
vmlinuz.x.x.x.x.x y es ese archivo que con-
tiene el Kernel del sistema, que es el pri-
mero que será cargado en memoria RAM, 
en la inicialización de la computadora.
A inicios del Linux, todos los dri-
vers y otros componentes del sistema eran 
compilados junto con el Kernel. Al inicio 
no había grandes problemas en lo que se 
refiere eso, pues, no había tantos fabri-
cantes, los módulos eran pequeños y todo 
estaba bien.
Sin embargo, como sabemos, la tec-
nología evoluciona de forma frenética y, 
cada vez más, nuevos dispositivos vienen 
surgiendo, más drivers están siendo de-
sarrollados y más códigos están siendo 
integrados al Kernel. Entonces, empezaron 
a existir 2 problemas: el primero era que, 
si todos los drivers fueran incorporados 
al Kernel, él se quedaría gigantesco, pe-
sado y complejo, lo que inviabilizaría una 
utilización más limpia y estable, para el 
cual la solución sería escoger cuáles dri-
91SISTEMAS OPERACIONALES
vers podrían ser incorporados al Kernel, 
así, todos los problemas serían resueltos, 
¿verdad? En la vida nada es tan sencillo 
así, y no es diferente con el Linux.
En el caso de que varios drivers sean 
retirados, el Kernel sería ajustado, con 
más performance y estable, sin embargo, 
corría el riesgo de necesitar cargar algún 
componente de hardware y el sistema no 
ser capaz de accederlo, comprometiendo 
su funcionamiento. En ese caso, no podría 
ser muy grande y ni muy pequeño.
De esa manera, los activistas del 
Linux pensaron en una solución, en 1999, 
y lanzaron el Kernel en la versión 2.2, 
donde eraposible resolver ese problema. 
La técnica consiste en dividir los drivers 
en módulos externos al Kernel, pero que se 
comunican con él y amplían los horizontes 
del Linux. Hasta hoy, el Linux permanece 
con la misma lógica de construcción. La 
modularización permite una versatilidad 
enorme del sistema y que puede adaptarse 
a cualquier dispositivo.
Los módulos están conectados di-
rectamente al Kernel para la forma que 
fueron desarrollados. Así, en el caso de 
que un módulo de una distribución X de 
Linux sea llevado para una distribución Y, 
es muy probable que él no funcione, pues, 
los interpretadores son diferentes en sus 
modos de acceso al hardware.
Directorios
El primer gran susto para quien está 
llegando del mundo de Microsoft es la es-
tructura de directorios del Linux. En el 
Windows tenemos la idea de que existe una 
carpeta llamada Windows, que concentra 
todos los archivos del sistema y la carpeta 
Archivos de Programas, que almacena los 
archivos de los softwares y aplicaciones, 
también, usted puede crear y organizar sus 
archivos y carpetas da forma que quiera y 
donde quiera.
En el Linux es exactamente la misma 
cosa, sólo que, al contrario, así de sencillo. 
El directorio raíz del sistema está tomado de 
carpetas con archivos del sistema y en ese 
se espera que usted almacene sus archivos 
dentro de la carpeta /home y nada más. Us-
ted, incluso, puede guardar sus archivos en 
otras carpetas, alterar algunos permisos de 
accesos, pero no es recomendado. Digamos 
que el Linux limita el acceso del usuario 
común a sus directorios y es por eso que él 
funciona tan bien.
Una vez más, hablaremos diremos 
para que el concepto sea bien grabado. Una 
de las primeras cosas a habituarse es que, 
en el Linux, no existen unidades para par-
ticiones diferentes como en el Windows, 
donde aparece C:\, D:\ y E:\ entre otras. 
En el Linux todo forma parte del directorio 
raíz, representado por “/”.
Entenderemos ahora los directorios 
que quedan en el “/” y para qué sirve cada 
uno de ellos. Éstos son:
• /BIN: Almacena los ejecutables de 
algunos comandos básicos del siste-
ma, como el “su”, “tar”, “cat”, “rm”, 
“pwd”, etc. Esos ejecutables son 
básicos para la administración del 
Linux. Mantenerlos en un directorio 
separado permite, por ejemplo, que 
se queden accesibles desde el inicio 
del boot del sistema, pudiendo ser 
utilizados aun antes de que todo el 
sistema sea cargado.
92SISTEMAS OPERACIONALES
• /SBIN: Ese directorio complementa 
el /BIN. En él están guardados los 
ejecutables de los comandos utiliza-
dos, exclusivamente por el ROOT 
(más adelante estudiaremos el 
ROOT). Son comandos de adminis-
tración del sistema operacional que 
permiten la creación de usuarios y 
grupos, entre otras funciones. Perciba 
que en el Linux todo “comando” es 
un ejecutable.
• /USR: Lo más interesante de este 
directorio es que la mayoría de las 
personas pronuncian “user” cuando 
en realidad es “USR”, siendo ana-
grama de Unix System Resources. 
Podemos decir que ése es uno de los 
mayores directorios del Linux en lo 
que se refiere al número de archivos. 
Están almacenados en ese directo-
rio los ejecutables y las bibliotecas 
de todos los principales programas 
instalados.
• /USR/BIN: Ese directorio almacena 
los binarios de los programas. Cer-
ca de 2000 mil programas y atajos 
son almacenados en él y, como los 
ejecutables de prácticamente todos 
los programas, están allí, el número 
de archivos va creciendo conforme 
nuevos programas son instalados.
• /USR/lib: Ése también es un di-
rectorio grande, que almacena mu-
chos archivos. Las bibliotecas de los 
programas están almacenadas aquí, 
siendo muy semejantes a las dll’s del 
Windows y de extrema importancia 
para el buen funcionamiento de los 
programas y del sistema.
• /BOOT: En ese directorio el Kernel 
está almacenado, como ya lo vimos, 
pero también los archivos de confi-
guración del administrador de boot 
están en este local. Si usamos el Grub 
como administrador de boot, en la 
carpeta /BOOT encontraremos sus 
archivos de configuración guardados. 
Un consejo, eviten alterar los archivos 
del administrador de boot, pues cual-
quier deslizamiento de configuración 
puede comprometer, de forma seria, 
la inicialización del sistema y sólo 
generará dolor de cabeza.
• /DEV: Si encontró una locura el 
Linux hasta aquí, entonces se sor-
prenderá con el directorio /DEV. Ése 
sí que un directorio exótico. Usted 
puede olvidarse de la función de la 
mitad de los directorios del Linux 
que nada cambiará en su vida, pero 
si se olvida de la función del DEV, le 
garantizo que pasará por dificultades. 
Todos los archivos que están alma-
cenados en este directorio, como el 
“/dev/sda”, “/dev/dsp”, “/dev/modem”, 
entre otros, no son archivos alma-
cenados en el HD literalmente, son 
punteros para dispositivos de har-
dware. Es tan exótico, que se vuelve 
complicado para explicar. Imagine-
mos que somos programadores y que 
nuestro programa necesita acceder a 
una placa de sonido de la computa-
dora. Entonces, pasaremos los pa-
rámetros del /dev/dsp para él y así 
usamos el hardware. Pero, ¿por qué 
es tan importante saber su funciona-
miento? En él están contenidas todas 
las informaciones de hardware de la 
computadora, así podemos identi-
ficar problemas, mapear unidades 
de discos y crear puntos de montaje 
cuando sea necesario.
• /ETC: Puedo afirmar que éste es 
un directorio del Linux que debe ser 
estudiado y aprendido. No siendo 
exotérico, ni complicado, pero de ex-
trema importancia para el sistema. 
93SISTEMAS OPERACIONALES
Dentro de ese directorio están los 
archivos de configuración del siste-
ma. Toda y cualquier configuración 
puede ser hecha con los archivos que 
están dentro del /, etc. Ni siempre los 
archivos poseen un nombre patrón 
entre las versiones, pero todos están 
dentro de este directorio. Para poner 
la configuración de IP en el Linux, 
el archivo está localizado en /etc/ne-
twork/interfaces.
• /MNT: Ese directorio recibe ese 
nombre porque puede ser utilizado 
para efectuar los puntos de montaje 
del sistema. Antiguamente, si colo-
cábamos un CD dentro de la uni-
dad de CDROM nada ocurría en 
el Linux. Para poder acceder el CD 
teníamos que montarlo en el sistema, 
y ¿cómo era hecho esto? Teníamos 
que ir a la carpeta /DEV, localizar, 
dentro de ella, si existía el hardware 
del CDROM y, en el caso de que 
hubiera, era necesario ejecutar el 
comando “mount /dev/cdrom /mnt/
cdrom”. De esa manera, dentro de la 
carpeta /MNT tendríamos una car-
peta llamada CDROM, que permitía 
acceder al dispositivo. Actualmente, 
el Linux hace los puntos de montaje 
automáticos, pero, aun así, los puntos 
de montaje son muy utilizados en 
servidores.
De esa manera, de forma rápida, 
busqué explanar un poco sobre los direc-
torios. Entiendo que sea confuso, pero, para 
aprender, es necesario poner las manos en la 
masa. Yo demoré un tiempo para compren-
der, pero, después todo queda claro. No se 
asusten, prueben y prueben, es muy bueno.
El famoso ROOT
Cuando pedimos para alguien lo que 
sabe de Linux, les puedo afirmar que un 
90% de las respuestas es que el sistema es 
seguro. Para muchos el Linux es sinóni-
mo de seguridad y ellas están correctas. El 
Linux es muy seguro debido a su estructura 
de carpetas y permisos de acceso.
Parte de esa seguridad está vincula-
da al famoso ROOT. Todos los sistemas 
basados en Unix poseen un usuario con 
accesos irrestrictos a archivos, directorios y 
procesos. Siendo un usuario capaz de borrar 
cualquier archivo y alterar todas las reglas 
de permisos de acceso, ése es el ROOT.
El Windows posee su usuario de 
administración máxima del sistema, que 
es el Administrador (a veces él está activo 
y otras veces no está activo en el sistema). 
El problema es que el Windows, debido 
a su arquitectura y a su forma de trabajar, 
permite explotar muchas vulnerabilidades 
que pueden dejarlo inseguro y expuesto a 
amenazas.
En el Linux, el usuario de admi-
nistración es el Root.Diferentemente del 
Windows, el Linux es estructurado de tal 
forma que solamente el usuario Root con-
sigue alterar configuraciones del sistema 
o acceder directorios críticos del sistema, 
siendo muy poco probable que haya una 
vulnerabilidad sencilla para ser explotada.
Entenderemos, un poco mejor, el 
Root. Cada archivo y proceso del Linux 
posee un dueño, o sea, quien es el propie-
tario del archivo determina quién puede o 
no puede accederlo. El dueño del archivo 
tiene acceso irrestricto a sus pertenencias, 
lo que puede ocurrir es que algunos archi-
vos pueden estar bloqueados para algunos 
usuarios y abiertos para otros.
Para los procesos y archivos relacio-
94SISTEMAS OPERACIONALES
nados al funcionamiento del sistema ope-
racional, tenemos como dueño el usuario 
Root, o sea, solamente el root o usuarios 
con privilegios
de súper usuario podrán accederlos y 
alterarlos. En suma, el Root es quien manda 
en todo.
Sin embargo, como diría el “Tío Ben 
Parker”: “Con grandes poderes, vienen 
grandes responsabilidades”. Cuando uti-
lizamos el usuario root para usar el sistema 
Linux, debemos tener la consciencia de que 
todo lo que pidamos para ser realizado, lo 
será. El sistema tiene convicción de que el 
usuario es inteligente y sabe lo que está ha-
ciendo cuando está logado como root y toda 
y cualquier acción que él ejecute, será rea-
lizada. Cuando estamos utilizando el root 
debemos tener una atención redoblada para 
cada comando ejecutado, pues, podemos 
comprometer todo el sistema operacional, 
en el caso de que ejecutemos algo errado.
Uno de los motivos de que la segu-
ridad sea vinculada al Linux está también 
en el concepto del Root. Como dijimos, 
solamente él posee licencia para acceder 
contenidos sensibles del sistema e, incluso, 
instalar aplicaciones nuevas. ¿Ya escucharon 
hablar que no existe virus para Linux? La 
verdad es que para que un virus sea insta-
lado en el Linux usted tendrá que efectuar 
su download, alterar los permisos de acceso 
del archivo dándole permiso de ejecuci-
ón, dependiendo del caso, tal vez, incluso, 
compilarlo y, principalmente, estar logado 
como root en el sistema.
Decir que no existe virus para Linux 
es complicado, pues, todo en informática 
depende de tiempo y dinero, pero pode-
mos afirmar que es mucho más complicado 
infectar una máquina con Linux, ya que 
ningún software es instalado sin el permiso 
del root. Ahora, si va a descargar el archivo, 
alterar los permisos, compilarlo y ejecutar 
como root, no culpe el sistema, pues, fue 
usted que quiso hacer eso y recuerde, el 
Linux cree que usted es suficientemente 
inteligente para saber lo que está haciendo.
Como buena práctica, logamos en 
el Linux como root, solamente, cuando lo 
necesitamos, en el caso contrario, lo me-
jor es usar su usuario personal para evitar 
cualquier sorpresa indeseada.
Aún tenemos algunas versiones del 
Linux que poseen una forma de elevación 
de privilegios para los usuarios, al contra-
rio de utilizar el usuario root. Como es el 
caso de las versiones que son basadas en 
Kernel Debian. Existe el comando “SUDO 
SU” que eleva al usuario para privilegios de 
root. Algunos defienden esa arquitectura 
y otros creen que sea una falla de segu-
ridad. Ejecutando el comando “sudo su 
nombre_del_usuario”, él eleva al usuario 
para nivel de root. El root viene desacti-
vado por patrón en estas versiones, pero es 
posible activarlo.
Seguridad en el Linux
Si hay algo que podemos sacarnos el 
sombrero para el Linux es el hecho de su 
estructura de carpetas y permisos de acceso 
que garantizan seguridad para el sistema. 
Si usted no tiene permiso de acceso a un 
archivo, no lo accederá, así como, no existe 
“darse una manera”, pues, realmente no 
accederá.
95SISTEMAS OPERACIONALES
El objetivo de esta clase no es volvernos expertos en Linux, es entender un 
poco de su estructura. Quien tenga interés en entender mejor el sistema puede surfear 
en internet entre innúmeros sitios de la comunidad Linux, pues conseguirá todo y 
cualquier apoyo para aclarar sus dudas y aprender un poco más.
Veamos cómo los archivos aparecen en el Linux. Ejecutando el comando ls -la, 
el sistema nos regresa algunas informaciones importantes, vea la imagen:
Desmembremos: la primera columna puede aparecer con 3 símbolos, también 
puede aparecer con la “d”. Así, siempre que tenga la letra “d” al inicio de la línea, 
significa que es un directorio. Consecuentemente, observe el directorio CACHÉ, él 
está con la letra “d” al inicio.
El segundo símbolo puede ser un “- “, que significa que es un archivo, entonces, 
siempre que aparezca “-“ sepa que es un archivo.
El tercer símbolo es la “l”. Para indicar que es un atajo el Linux inserta una “l” 
al inicio de la línea. Siempre que haya un “- “, recuerde que es un atajo.
Más adelante, aparecerán 3 bloques 
de 3 caracteres cada uno. Es allí que la 
magia del permiso de acceso ocurre. El 
primer bloque de 3 caracteres representa 
los permisos del dueño del archivo. El 
segundo bloque de 3 caracteres representa 
el permiso de un grupo y el último bloque 
el permiso para los otros usuarios.
Entonces, tenemos algo así: 
Cada una de las letras representan 
una acción. La letra “r” representa READ, 
o sea, permiso para leer el archivo. Da de-
recho a abrir el archivo y ver su contenido. 
La letra “w” representa WRITER, o sea, 
permiso para escribir el archivo y editarlo. 
Y, la letra “x” representa EJECUCIÓN, 
o sea, permite que el archivo pueda ser 
ejecutado. El permiso de ejecución es muy 
bueno dentro del Linux, pues, si usted 
crea algún script y no le da permiso para 
96SISTEMAS OPERACIONALES
ejecución, él no hará nada. Entonces, vol-
viendo a la cuestión de seguridad, aunque 
usted descargue un archivo malicioso, él 
sólo afectará el sistema si usted le da per-
miso para ejecución, en el caso contrario, 
será apenas un archivo suelto (diferente 
del Windows que sale ejecutando cosas, 
aunque usted no lo haya autorizado).
De esa manera, supongamos que 
tenemos un archivo llamado AULA.TXT, 
cuyo permiso es R W - R - - - - -, pode-
mos afirmar que el archivo da permiso de 
lectura y escrita para el dueño del archivo, 
permite que los usuarios del grupo lean 
el archivo y los demás usuarios no poseen 
permiso para hacer nada en el archivo.
Entonces, ustedes se preguntan: 
“Pero, ¿cómo pondremos los permisos en 
los archivos por la línea de comando?”. 
Hace algún tiempo fue creado un método 
muy interesante y práctico para hacer eso. 
El comando CHMOD nos ayuda en esta 
jornada. Observe la tabla que sigue:
Cuando queremos alterar el permiso 
de un archivo, basta ejecutar el comando 
CHMOD, junto con la referencia nu-
mérica para cada bloque de caracteres de 
permiso. Usemos el mismo ejemplo dado. 
El archivo AULA.TXT con el permiso 
R W – R - -- --. Segmentando eso en 3 
bloques, tenemos RW- / R - - / - - -. Ya, 
si miramos la tabla, podemos observar que 
existe un número para cada combinación, 
así, la forma numérica para representar ese 
permiso de acceso es 6 4 0.
Para alterar el permiso de acceso 
del archivo para que el propietario ten-
ga permiso para leer, escribir y ejecutar 
el archivo; para que el grupo pueda leer 
y escribir el archivo y los otros usuarios 
apenas puedan leer el archivo, ¿cómo que-
daría el comando? Él quedaría chmod 7 
6 4 clase.txt.
Después de la aplicación del co-
mando el sistema mostrará la siguiente 
línea para aula.txt al inicio del archivo 
- rwxrw-r--
Algo, muy importante, que tenemos 
que ponderar es la utilización de los per-
misos 777. Muchos utilizan el comando 
CHMOD 777 para “agilizar” alguna con-
figuración que están haciendo en el siste-
ma, pero eso permite que cualquier usuario 
tenga acceso para leer, editar y ejecutar 
aquel archivo. Ese tipo de configuración 
genera una falla grave de seguridad en el 
sistema y no debemos utilizarlo.
Está cierto, sé que parece un bicho 
de 7 cabezas, pero como les dije, enten-
der el Linux es una cuestión de quebrar 
paradigmas. No será en estaclase que 
entenderemos todo el sistema, pero es un 
inicio para saber cómo él funciona. Para 
aprender Linux, solamente “colocando las 
manos en la masa”.
Número Permissão
0 - - -
1 - - x
2 - w -
3 - wx
4 r - -
5 r – x
6 rw -
7 rwx
97SISTEMAS OPERACIONALES
Síntesis Final
Muy bien, estimado aluno, llegamos 
al final del módulo teórico sobre Linux. 
El objetivo de este capítulo fue mostrar 
un poco del universo Linux para usted. 
Sé que pareció un poco confuso lo que 
abordamos, por eso, le pido atención y 
enfoque en el material de apoyo y en las 
videoclases, donde aprenderemos a instalar 
el sistema y a poner las manos en la masa 
para abstraer los conceptos aplicando, en 
la práctica, las enseñanzas que tuvimos 
no solamente en este módulo, pero todo 
lo que vimos durante el semestre. 
El Linux posee una vasta documen-
tación en internet, que aborda cada tópico 
que estudiamos de forma excelente. Por 
lo tanto, los desafíos del Linux apenas 
empezaron y fueron evidenciados para 
usted. Acepte el desafío de aprender un 
nuevo sistema y abra su mente para cosas 
nuevas.
Ejercicios
1 – El sistema operacional Linux usa el comando chmod para 
configurar los permisos de uso de sus archivos y directorios. 
Como ejemplo, en un archivo con el nombre concurso.txt, 
inicialmente con los permisos rwxrwxrwx, después de usar el 
comando chmod 557, ¿cuáles serán los nuevos permisos del 
archivo?
2 – Los permisos de acceso protegen el sistema de archivos 
del Linux del acceso indebido de personas o programas no 
autorizados. La secuencia correcta para proteger archivos y 
directorios es:
a) lectura, escrita y ejecución (r,w,x).
b) ejecución, lectura y escrita (x,r,w).
c) escrita, ejecución y lectura (w,x,r).
3 – Escriba los niveles de permiso de los siguientes comandos 
de chmod:
a) Chmod 576 clase.txt:
b) Chmod 607 clase.txt
c) Chmod 352 clase.txt
4 – Al digitar el comando ls –la en la carpeta /home, fue 
localizado un archivo llamado prueba.txt con niveles de permiso 
774. ¿Cuál es el nivel de permiso de él?
5 – Informe cuál sería el parámetro del comando CHMOD para 
tener las siguientes salidas:
a) – rwxrwxr- -
b) – rw - - - - r - -
c) – rwx- - -rw –
d) –r- - rwxrw –
6 – Explique cuál es el motivo para que el comando CHMOD 777 
sea evitado al máximo?
99SISTEMAS OPERACIONALES
FLYNN, Ida M.; MCHOES, Ann Mclver. Introdução aos Sistemas Operacionais. São Paulo: Pioneira Thomson Learning, 2002.
MORIMOTO, Carlos E. Linux, Guia Prático. São Paulo: GDH Press e Sul Editores, 2009
OLIVEIRA, Rômulo Silva de; CARISSIMI, Alexandre da Silva; TOSCANI, Simão Sirineo. Sistemas Operacionais. 4ª. Ed. Porto Alegre: 
Bookman, 2010.
TANENBAUM, Andrew S. Sistemas Operacionais Modernos. 2ª.Ed. São Paulo: Pearson, 2003.
TANENBAUM, Andrew S.; Woodhull, Albert. Sistemas Operacionais: Projeto e Implementação. 2ª. Ed. Porto Alegre: Bookman, 1999.
REFERENCIAS

Mais conteúdos dessa disciplina