Você está na página 1de 147

UNIVERSIDAD DE ORIENTE

NUCLEO DE ANZOTEGUI
COORDINACIN DE POSTGRADO
MAESTRA EN INFORMTICA GERENCIAL
SISTEMAS OPERATIVOS

Profesor: Realizado por:


Dr. Pedro Castillejo Ing. Yndira Marcano
Licda. Norelys Yendiz

Barcelona, octubre de 2015

0
INDICE

INTRODUCCIN....4

CAPITULO I.- ESTRUCTURA DEL HARDWARE.......6

1.- Diagrama de bloques de la estructura de hardware que soporta la implantacin del


Sistema Operativo GNU/Linux
1.1 Diagrama de Bloques de la estructura del Hardware....12
1.2 Descripcin del bloque procesador........................................................................ 12
1.3 Descripcin del bloque memoria...16
1.4 Descripcin del bloque perifricos..17

CAPITULO II. ESTRUCTURA DEL SISTEMA OPERATIVO

2.1.- Evolucin Histrica del Sistema operativo .....19

CAPTULO III.- Objetivos de diseo y diagrama del Sistema operativo GNU/LINUX


3.1 Diagrama de bloque del Sistema operativo GNU/LINUX... 30

CAPTULO IV.- Concepto de proceso y/o hilos


4.1 Procesos 31
4.2 Hilos....42
4.3 Procesos vs hilos..45

CAPTULO V.- Planificacin de procesos


5.1 Planificacin de procesos.47
5.2 Sincronizacin de procesos.48
5.3 Algoritmos de planificacin.54
5.4 Planificacin de sistemas Monoprocesamiento..57
5.5 Panificacin de sistemas de multiprocesamiento simtrico.62

CAPTULO VI.- Gestin de memoria principal


6.1 Memoria Fsica .65
6.2 Memoria virtual .67
6.3 Segmentacin ..69
6.4 Paginacin 71

CAPTULO VII.- Gestin de almacenamiento en GNU/LINUX


7.1 Planificacin y gestin de discos 73
7.2 Sistemas de archivos manejados por GNU/LINUX 85
7.3 Especificacin de los archivos y los directorios.98

CAPTULO VIII.- Gestin de E/S


8.1. Tratamiento de los errores de E/S...111

CAPTULO IX.- Seguridad y proteccin en GNU/LINUX


9.1 Seguridad 115
9.2 Seguridad Externa .116

1
9.3 Seguridad Interna 117
9.4 Seguridad del sistema archivos..117
9.5 Proteccin.119

CAPTULO X.- Discusin sobre las tendencias


10.1 Linux en Venezuela..120
10.2 Decreto 3390..123
10.3 Ley de Infogobierno ..123
10.4 Cuotas de mercado ...124
10.5. Comparacin de Linux con otros Sistemas Operativos 126

CAPTULO XI.- Distribucin Canaima GNU/Linux


11.1 Antecedentes.127
11.2 Programas de Sistemas .130
11.3 Lanzamientos .132
11.4 Ciclo de desarrollo .133
11.5. Cayapa Canaima ..136
11.6 Usos de Canaima GNU/Linux .137
11.7 Ediciones.138
11.8 Versiones.138

CONCLUSION.143
BIBLIOGRAFIA.144

2
INTRODUCCIN

El sistema operativo de un ordenador se puede definir, de una manera muy


burda, como el software (programa) encargado de gestionar y manejar el
hardware (piezas) del equipo. Crea una capa de abstraccin sobre la complejidad
de los circuitos y conexiones elctricas que componen un ordenador
proporcionando una interfaz amigable. Por ejemplo, cuando se copia un archivo
slo le tenemos que indicar al sistema operativo los ficheros de origen y dnde los
queremos pegar; no tenemos que saber que por debajo de eso hay un disco duro
compuesto de platos, stos a su vez de sectores, y stos de bloques y de un
cabezal con el que ir recorrindolos y realizando la escritura.

GNU es un sistema operativo 100% libre, creado por "Richard Stallman",


que est basado en Unix, que es otro sistema operativo, pero no tiene nada que
ver con Unix, porque su cdigo fue escrito desde 0.

Linux es un kernel, un ncleo, es el que ayuda al Hardware y al Software a


comunicarse, este Software fue creado por "Linus Torvalds".

GNU/Linux, es la mezcla de los dos Software, GNU y Linux. Una


distribucin GNU/Linux (coloquialmente llamada "distro") es una distribucin de
software basada en el sistema GNU/Linux que incluye determinados paquetes de
software para satisfacer las necesidades de un grupo especfico de usuarios.

GNU es un sistema operativo de software libre, es decir, respeta la libertad


de los usuarios. El desarrollo de GNU ha permitido que se pueda utilizar un
ordenador sin software que atropelle nuestra libertad.

Debido a la evolucin de la tecnologa y del uso de la red, estas


libertades son ahora an ms importantes que en 1983.

En la actualidad, el movimiento del software libre va mucho ms all del


desarrollo del sistema GNU.

3
Canaima GNU/Linux, surge inicialmente como respuesta a las necesidades
omticas y de otros procesos productivos de los usuarios nales de la
Administracin Pblica Nacional (APN), y para dar cumplimiento al decreto
presidencial Nro. 3.390 sobre el uso de Tecnologas de Informacin Libres en la
APN.

Es un proyecto socio-tecnolgico abierto, construido de forma colectiva,


centrado en el desarrollo de herramientas y modelos productivos basados en las
Tecnologas de Informacin Libres (TIL) de software y sistemas operativos cuyo
objetivo es generar capacidades nacionales, desarrollo endgeno, apropiacin y
promocin del libre conocimiento, sin perder su motivo original: la construccin de
una Nacin venezolana tecnolgicamente preparada.

Es importante sealar que no est limitada al uso en la APN, puede ser


usado por cualquier persona. Se encuentra equipado con herramientas omticas:
Procesador de palabras, Hojas de clculo, Presentaciones. Tambin incluye
herramientas para: Diseo grco, Planicacin de proyectos, Bases de datos.

La presente monografa trata sobre el Sistema operativo GNU/Linux y la


distribucin Canaima, para su comprensin.

4
CAPTULO I. ESTRUCTURA DEL HARDWARE

GNU/Linux tiene requisitos de Hardware poco exigentes. La computadora


necesaria es una 386 o compatible por lo menos. 1 MB de RAM es el mnimo
estricto, aunque se requieren 2 MB para arrancar a una velocidad aceptable, 4
para correr aplicaciones, u 8 si se va a usar la interfaz grfica. Si se requieren
tareas intensivas (como procesamiento de grficos, servidores, etc.), es
aconsejable tener 16 MB. Puede usarse cualquier dispositivo de vdeo, aunque si
se va a trabajar en X (la interfaz grfica) obviamente se aconseja una SVGA de 1
MB.

Algunas distribuciones ocupan solo un diskette, principalmente para uso


como Router o Firewall. Para instalar los utilitarios bsicos, se requieren de 15 a
25 MB en disco. Si se instalan algunas aplicaciones, el espacio ocupado llega de
80 a 100 MB, y si se instala X de 150 a 200 MB. A esto se le debe agregar el
espacio para usuarios, y de 10 a 40 MB para espacio de swap. Todo esto es
teniendo en cuenta aplicaciones elementales; para extender el sistema se
requerir ms espacio.

Prcticamente todos los procesadores basados en x86 (IA-32) utilizados en


ordenadores personales son compatibles, incluyendo todas las variedades de la
serie Pentium de Intel. Esto tambin incluye los procesadores AMD y VIA
(anteriormente Cyrix). Tambin se pueden usar procesadores nuevos como Athlon
XP e Intel P4 Xeon.

GNU Linux ha sido trasladado a la gran mayora de las plataformas


actuales, desde las computadoras de mano (Pam top) hasta las maquinas mas
grandes del planeta (supercomputadoras). Esto ha sido posible gracias a que su
nucleo ha sido codificado en lenguaje de alto nivel.

Para lograr un mayor entendimiento de la estructura del hardware con la que se


puede implementar los sistemas operativos GNU/Linux y detallar los componen de
los bloques del procesador, la memoria y los perifricos, se delimit la utilizacin

5
de una computadora de escritorio marca VIT modelo E2220-03, con las siguientes
caractersticas, ver figura 1, tabla 1.

Figura 1.1. Computadora de escritorio marca VIT modelo E2220-03

6
Tabla 1. Caractersticas equipo VIT modelo E2220-03.

Procesador

CPU Intel i7-3770 Ivy Bridge

Frecuencia FSB 1066Mhz/1333Mhz/1600Mhz

Interfaz Sockets 1150pins

Memoria RAM

Modelo DDR3-1066/1333/1600

Puerto 2

Capacidad unitaria 1GB, 2GB, 4GB, 8GB

Capacidad total HASTA 16GB

Controlador de E/S

Puerto teclado 1 Puerto PS/2

Puerto Raton 1 Puerto PS/2

Puerto USB 2.0 4 USB 2.0 (2 parte frontal, 2 parte


trasera)

Puerto USB 3.0 2 USB parte trasera

Puerto Serial 1

Puerto Paralelo 0

Puerto de tarjeta de sonido Realtek ALC662 en la parte frontal y


trasera, una salida de audio y micrfono.

Puerto de tarjeta de grfica 1 VGA

Disco Duro

Disco Duro 1 SATA 7200RPM

Tarjeta de Red

7
Integrada 1 chipset integrado RTL8111G y un
puerto RJ45

Otro Tarjeta inalmbrica 802.11b/g/n, PCIE


1X

Puerto PCI

Puertos 2 PCI

1 PCI-E 1X

1 PCI-E 16X

Lector de tarjetas memoria SD/MMC/MS

Unidad ptica 48x/32x/16x CD-RW/DV-RW

Puertos Entrada Salida

8 PUERTOS 2.0

4 PUERTOS 3.0

Puerto ps/2

Salida VGA

Salida de Audio 7.1

8
Figura 1.2. Diagrama parte delantera de la unidad principal, tomado de
(Manual del computador VIT Modelo E2220-03, 2015)

Tabla 2. Leyenda

A Unidad ptica B Indicador de disco

C Lector de tarjetas D Indicador fuente poder

E Interruptor fuente de poder F Puertos USB frontales

G Conectores frontales audio H Conectores frontales de micrfono

9
Figura 1.3. Diagrama parte trasera de la unidad principal, tomado de
(Manual del computador VIT Modelo E2220-03, 2015)

Tabla 3. Leyenda

A Etiqueta fuente de poder B Selector de Voltaje

C Conector alimentacin D Conector PS/2 para ratn

E Conector PS/2 para teclado F Puerto de vdeo -VGA

G Puerto USB H Conector RJ45

I Micrfono J Linea de salida

K Linea entrada L Puerto COM1

10
1.1 Diagrama de Bloques de la estructura del Hardware.

En la Figura 4 se muestra el diagrama de Bloques de la estructura de


Hardware seleccionada.

Dispositivos de entrada

Teclado Ratn

Dispositivos
CPU
Almacenamiento
Memoria
Microprocesador Discos
Intel Core i7-3770 ROM Flexibles
Ivy Bridge
Discos
UC ULA
Duros
RAM
1T
Memoria 8 Gb DDR3
7200rpm
cache 1600Mhz
Discos
pticos
CdRom
DVD

Dispositivos de Salida Otros Dispositivos E/S

Tarjeta Tarjeta
Monitor Impresora
Red Sonido
Tarjeta Lector
Video Memoria

Figura 1.4. Diagrama de Bloques de la Estructura de Hardware.

1.2 Descripcin del bloque procesador

Ivy Bridge es una actualizacin de la arquitectura Sandy Bridge. No


obstante, si bien el esquema de la arquitectura bsica se mantiene, los cambios
introducidos son muy importantes y hacen de los nuevos chips algo distinto.

11
Para empezar, los chips Ivy Bridge estn construidos en 22 nm, lo que
implica una reduccin de tamao considerable en relacin a los 32 nm de Sandy
Bridge. Esto tiene un impacto inmediato en el consumo elctrico: los chips Core i7
y Core i5 Ivy Bridge tienen un valor TDP (Thermal Design Power, o Thermal
Dissipated Power) de 77 Watts, bastante inferior a los 95 Watts que eran estndar
en los chips Sandy Bridge.

Lo interesante aqu es que los nuevos procesadores Intel vienen en el


formato desocket LGA 1155. Si bien el lanzamiento incluy un nuevo chipset, el
Z77, la mayora de los motherboards Z68 (actualizacin de BIOS mediante)
tambin pueden acomodar chips Ivy Bridge sin problema alguno. A continuacin
resumiremos algunas de las caractersticas de la nueva arquitectura, para pasar
rpidamente al anlisis del Core i5 que tuvimos oportunidad de probar:

Los procesadores Intel Core i7 de tercera generacin ofrecen un


desempeo superior para equipos "todo en uno" o estndar. Los procesadores
Intel Core i7 estn a la altura de sus tareas ms exigentes marcando una
diferencia que podr ver y experimentar en HD o 3D, tareas mltiples o
multimedia. Los procesadores Intel Core i7 incluyen tecnologas avanzadas que
ofrecen experiencias visuales e informticas ms rpidas, fluidas e intensas para
todas sus actividades favoritas de alta exigencia: desde editar una pelcula hasta
los juegos ms impactantes.

Caractersticas

La tecnologa Intel Turbo Boost 2.0impulsa de manera automtica e


inteligente la velocidad del procesador justo cuando lo necesita para que el
desempeo se adapte a usted.
La tecnologa de video Intel Quick Syncintegra el hardware de conversin
de video al procesador para acelerar el desempeo y editar, grabar y
compartir videos en un instante. Ahora sus videos esperan por usted, no a
la inversa.

12
Los Grficos Intel HD, en los procesadores Intel Core de tercera
generacin, integran el motor de grficos y el procesamiento de medios al chip
ofreciendo grficos muy vvidos para una mejor experiencia de juego.

La tecnologa Intel HD de Video Ntidole ofrece funciones visuales


impactantes y muy realistas, para verlas tal como fueron concebidas. Una
combinacin de tecnologas en Intel HD de video ntido redunda en
imgenes ms ntidas y fluidas con colores ms intensos, lo que torna
perfecta cada imagen.

Intel Insiderdesbloquea un mundo de pelculas HD premium y las muestra


en su equipo Ultrabook o "todo en uno", o en su equipo estndar, para que
pueda ver programacin de alta definicin que antes no estaba disponible
en su pantalla, o transmitirla por va inalmbrica a su HDTV con Intel
Wireless Display.

Intel Wireless Displayle permite transmitir fcilmente sus contenidos


favoritos por va inalmbrica a su HDTV para que pueda disfrutar de los
contenidos que se encuentran en su equipo Ultrabook o su PC en una
pantalla grande.

La tecnologa Intel Hyper-Threadingpermite que cada ncleo de procesador


trabaje en dos cosas al mismo tiempo: esto representa una ejecucin de
tareas mltiples inteligente de hasta 8 vas con un Intel Core i7, as podr
moverse sin dificultades de una aplicacin a otra.

La tecnologa Intel InTru 3Dsuma una nueva dimensin a su experiencia de


visualizacin para que pueda jugar, ver pelculas 3D con reproduccin de
Blu-ray 3D estreo usando lentes especiales para 3D y mucho ms. Lo ver
todo en una resolucin de alta definicin plena de 1080p, en su televisor en
HDMI.

13
Especificaciones

Velocidad 3.4GHz (3.9GHz Turbo)

Cache L2 4 x 256KB

Cache L3 8MB

Socket Socket 1155

Microarquitectura Ivy Bridge

Ncleos 4 Ncleos

Grficos Integrados Intel HD Graphics 4000

Frecuencia de Grficos 650MHz

Tecnologa de Fabricacin 22 nm

Soporta 64 bits SI

TDP 77 Watts

Disipador Incluido

Figura 1.5. Componentes del procesador Intel i7-3770 Ivy Bridge.

En Ivy Bridge cada ncleo (core) posee una cach interna L2 de 256 kB.
Luego, los 4 ncleos comparten una gran cach L3, que es de de 6 MB en el Core
i5 y 8 MB en el Core i7.

14
Una de las principales caractersticas de este procesador es el integrar
mltiples ncleos de forma nativa. Es decir, ncleos que comparten la memoria
cach y el juego de instrucciones, velocidades que van inicialmente desde los 2.66
Ghz. hasta por encima de los 4 Ghz.

Cada procesador ser capaz de ejecutar dos instrucciones por cada ciclo
de reloj, por lo que en un sistema que tenga instalado el Intel Core i7 con cuatro
ncleos, el sistema operativo le reportar que tiene instalado ocho ncleos.

Intel Core i7, contar con 2 vas (2-way) que permitir administrar hasta 16
hilos (threads) de ejecucin en un procesador de ocho cores, que es lo que
permite Intel Core i7 oen su defecto 8 hilos de ejecucin en un procesador Quad
core. Actualmente la tendencia es aprovechar los procesadores dual o quad core
para optimizar el rendimiento, veremos si este remozado HT logra hacer
diferencia.

1.3 Descripcin del bloque memoria

El procesador Intel Core i7 lleva integrado el controlador de memoria dentro


del propio procesador. Es una tecnologa de interconexin con el procesador
punto a punto desarrollada por Intel en competencia con la tecnologa
HyperTransport de AMD.

Esta tecnologa incluye un controlador de memoria dentro del propio


procesador. Reemplaza al Front Side Bus (FSB) de los procesador Xeon e
Itanium.

El rendimiento de esta tecnologa est reportado para ser de 4,8 a 6,4


Gigatransferencias por segundo (GT/s) por direccin, y un enlace puede ser 5, 10
o 20 bits de largo en cada direccin. Adems el ancho de banda provisto por un
enlace largo completo asciende de 12,0 a 16,0 GB/s por direccin, o de 24,0 a
32,0 GB/s por enlace.

15
Admite hastatres canales de memoria DDR3 a 1600 Mhz por lo que
empezaremos a ver placas con seis slots de memoria en vez de cuatro.

La memoria cach con una nueva arqitectura de tres niveles: la cach L1


con 32 Kb. de cach para intrucciones y otros 32 Kb para cach de datos; nueva
cach L2 por ncleo de latencia muy baja con 256 Kb por ncleo para datos e
instrucciones; y una nueva cach L3 compartida por todos los ncleos y con
diferentes configuraciones en Mb. segn el tipo de procesador, 8 Mb en el caso de
un Core i7 con cuatro ncelos, aunque con el tiempo se ir ampliando esta
memoria cach compartida.

La memoria Cache de nivel 3 (L3) es una memoria compartida por cada uno
de los ncleos del procesador, esto trae la ventaja de que se simplifica el diseo
de la arquitectura interna del procesador, pero hay que ser cuidadosos en la forma
en al que cada uno de los cores intenta acceder a la memoria para que no se
produzcan conflictos en los accesos, quizs con un switch interno que administre
las peticiones. Esto por que siempre ser mas optimo que cada core tenga su
propio cache y que acceda a el exclusivamente a que tener un solo Gran cache en
que dos, cuatro o mas ncleos intenten acceder a el provocando, colas o latencias
demasiado altas en los accesos, lo que provoca un contrasentido en la razn de
ser del la memoria Cache de un procesador, la cual es ahorrarse tiempos al tener
un cache externo o tratar de acceder a la memoria principal en tareas crticas.

1.4 Descripcin del bloque perifricos

El PCH controla ciertas rutas de datos y funciones de apoyo utilizados en


conjuncin con IntelCPUs.Estos incluyen marcando (elreloj del sistema),interfaz de
pantalla flexible(IED) yDirect Media Interface(DMI), aunque la IED slo se utiliza
cuando se requiere el chipset para soportar un procesador congrficos
integrados.Como tales, las funciones de E / S son reasignados entre este nuevo
eje central y la CPU en comparacin con la arquitectura anterior: algunas
funciones northbridge, los carriles del controlador de memoria y PCI-e, se

16
integraron en la CPU mientras que el PCH se hizo cargo de las funciones que
quedan en Adems de las funciones tradicionales del southbridge.

La arquitectura PCH reemplaza anterior de IntelArchitecture Hub,con su


diseo de abordar la eventual cuello de botella problemtica entre el procesador y
elmotherboard.Con el tiempo, la velocidad de la CPU sigui aumentando, pero el
ancho de banda delbus frontal(FSB) (conexin entre la CPU y la placa base) no lo
hizo, lo que resulta en un cuello de botella.

Bajo la Arquitectura Hub, una placa base tendra un chipset de dos piezas
que consiste en un chip northbridge y southbridge un chip.Como una solucin al
cuello de botella, varias funciones que pertenecen a los
tradicionalesNorthbridgeySouthbridgechipsets se reorganizan.El puente norte est
ahora eliminado por completo y sus funciones, el controlador de memoria y carriles
PCI Express paratarjetas de expansin,se ha incorporado en la matriz de la CPU o
paquete.

El PCH luego incorpora algunas de las funciones northbridge restantes (por


ejemplo, de cronometraje), adems de todas las funciones del southbridge.El reloj
del sistema antes era una conexin y ahora se fusiona con el PCH.Existen dos
conexiones diferentes entre el PCH y la CPU:Interfaz de pantalla flexible(IED)
yDirecto Media Interface(DMI).La IED slo se utiliza cuando el chipset requiere el
apoyo a un procesador con grficos integrados.Elmotor de administracin de
Inteltambin se traslad a la PCH empezando por losNehalemprocesadores y5-
Serieschipsets.

Con las funciones Northbridge integrados en la CPU, gran parte del ancho
de banda necesario para conjuntos de chips est ahora aliviado.

17
Figura 1.6. Componentes PCH procesador Intel i7-3770 Ivy Bridge.

CAPITULO II. ESTRUCTURA DEL SISTEMA OPERATIVO

2.1 Evolucin histrica del Sistema Operativo GNU /Linux

La historia de Linux comenz mucho antes de lo que la mayora de gente


piensa, ya que en 1969, Ken Thompson, de AT&T Bell Laboratories, desarroll el
sistema operativo Unix, adaptndolo a las necesidades de un entorno de
investigacin, sin saber la importancia que llegara a tener su trabajo. Un ao
despus Dennis Ritchie (creador del lenguaje de programacin C), colabor con
Ken Thompson para pasar el cdigo del sistema Unix a C. Lo que convierto a Unix
en un sistema operativo transportable.

Unix creci gradualmente hasta convertirse en un producto de software


estndar, distribuido por muchos vendedores tales como Novell e IBM. Sus
primeras versiones fueron distribuidas de forma gratuita a los departamentos
cientficos de informtica de muchas universidades de renombre.
En 1972, los laboratorios Bell empezaron a emitir versiones oficiales de Unix y a

18
otorgar licencias del sistema a distintos usuarios. En 1975, Berkeley lanz su
propia versin de Unix (BSD). Esta versin de Unix se convirti en la principal
competidora de la versin de los laboratorios Bell de ATT&T, pero no era la nica
ya que en 1980, Microsoft desarroll una versin de Unix para PC llamada Xenix.

En 1991 esta organizacin desarroll el SistemaV versin4, que


incorporaba casi todas las caractersticas que se encuentran en el SistemaV
versin3, BSDversin4.3, SunOS y Xenix. Como respuesta a esta nueva versin,
varias compaas, tales como IBM y Hewlett Packard, establecieron la Open
Software Foundation (OSF) para crear su propia versin estndar del Unix.
Debido a la proliferacin de versiones de Unix en las dcadas anteriores, el
Instituto de Ingenieros Elctricos y Electrnicos (IIEE) desarrollo un estndar del
Unix independiente para el American National Institute (ANSI). Este nuevo
estndar ANSI del Unix se llama Portable Operating System Interface for
Computer Environments (POSIX). Este estndar define una norma universal a la
cual se deben adherir todas las versiones de Unix.

En esa poca, los estudiantes utilizaban un programa llamado Minix, que


incorporaba diferentes caractersticas de Unix. Minix fue creado por el profesor
Andrew Tannenbaum. Director del Departamento de Sistemas de la Universidad
de Vrije, Amsterdam.

Profesor de Arquitectura de Ordenadores y Sistemas Operativos.


Licenciado en el MIT, y doctorado en la Universidad de Berkeley, California. En
1992 particip debate con Linus sobre la idea de este utilizar un ncleo monoltico
en vez de los basados en un micro ncleo que Tanenbaum crea que seran la
base de los sistemas operativos futuros.

Era el ao 1991 y Linus Torvalds ,que en aquel entonces era un estudiante


de informtica de la Universidad de Helsinki, empez aprogramar las primeras
lneas de cdigo de un sistema operativo(finalmente llamado LINUX ) como una
aficin y sin poderse imaginar la gran repercusin que traera.
Hubo una primera versin no oficial de Linux 0.01, pero esta solo inclua el
19
comienzo del ncleo, estaba escrita en lenguaje ensamblador y asuma que uno
tena acceso a un sistema Minix para su compilacin.

El 5 de octubre de 1991, Linus anuncio la primera versin oficial de Linux


(versin 0.02). Con esta versin Linus pudo ejecutar Bash (GNU Bourne Again
Shell) y gcc (El compilador GNU de C).Desde aquel entonces se han hecho
muchsimas versiones con ayuda de programadores de todo el mundo.
Linux es un sistema operativo compatible con Unix, sus dos caractersticas
principales y que los diferencian del resto de los sistemas operativos que
encontramos en el mercado son:

1. Es software libre, esto significa que no tenemos que pagar por el uso del
mismo.
2. El sistema viene acompaado del cdigo fuente (el sistema lo forman el ncleo
del sistema (kernel) mas un gran numero de libreras que hacen posible su
utilizacin).
Las plataformas en las que en un principio se puede utilizar Linux son:
Pentium, Pentium Pro, Pentium II/III/IV, Amiga y Atari, tambin existen versiones
para su utilizacin en otras plataformas, como Alpha, ARM, MIPS, PowerPC y
SPARC.
En los ltimos tiempos, ciertas casas de software comercial han empezado
a distribuir sus productos para Linux y la presencia del mismo en empresas
aumenta rpidamente por la excelente relacin calidad-precio que se consigue con
Linux.

Tux es el nombre de la mascota oficial de Linux. Creado por Larry Ewing en


1996, es un pequeo pingino de aspecto risueo y cmico. La idea de que la
mascota de kernel Linux fuera un pingino provino del mismo Linus Torvalds,
creador de kernel Linux.

Existen dos versiones sobre el origen de su nombre:


1. Los pinginos parecen vestir un esmoquin (que en ingls es tuxedo max,
abreviado tux).
20
2. Las letras que componen Tux provienen de las palabras Torvalds y Unix.
Hay quien dice que Tux era el nombre de un peluche que tenia Linus que era un
pingino llamado Tux.

El logotipo se puede usar y modificar sin restricciones, siempre que se


reconozca la autora de Larry Ewing, ya que es su trabajo y se debe reconocer su
autora tal y como se indica en su pgina.
LINUS TORVALDS

Naci el 28 de diciembre de 1969 en Finlandia, es un ingeniero de software


conocido por iniciar y mantener el desarrollo del kernel de Linux, basndose en
el sistema operativo libre Minix y en algunas herramientas, varias utilidades y los
compiladores desarrollados por el proyecto GNU. En la actualidad es responsable
de la coordinacin del proyecto.

Con tan solo 11 aos y la ayuda de su abuelo que era un matemtico y


estadstico de la poca, el cual al comprarse un Commodore enseo al joven
Linus a manejarlo. En 1988 entro en la Universidad de Helsinki en donde aprendi
sobre las ciencias de la computacin y conoci a Andew S.Tanenbaum el cual ese
mismo ao creo el sistema operativo Minix. Aprendi a programar en C y despus
de varios aos adquiriendo experiencia y tomar prestadas algunas ideas, cre en
1991 el primer Linux capaz de ejecutar BASH y disponer del compilador GCC. Le
llamo Linux, debido a su apodo dela universidad. Un ao ms tarde Linux adopto
GPL, una licencia que le aada libertades para poder manipular y redistribuir su
cdigo de manera totalmente libre, lo que ha permitido que Linux se mantenga
estable hasta nuestros das. Despus de estar diez aos estudiando y e
investigando, entro a trabajar en Transmeta, una empresa dedicada a la
fabricacin de microprocesadores para porttiles; ms tarde decidi abandonarla
para poder dedicarse completamente al sueo que haba creado, el desarrollo del
kernel Linux.

En la actualidad trabaja en los laboratorios Open Source Development Labs


en Oregn, con la intencin de seguir desarrollando su pasin, el kernel de Linux.

21
Torvalds posee la marca registrada Linux y supervisa el uso de la marca a travs
de la organizacin sin nimo de lucro Linux International, que se encarga de
difundir por el mundo los beneficios del S.O. A pesar de todo, Linus, con sus 36
aos, est felizmente casado con Tove y actualmente vive en Portland con sus
tres hijas: Patricia, Daniela y Celeste, un lugar mucho ms tranquilo para vivir con
su familia.

Algunas de las curiosidades que conocemos de Linus Torvalds es una


persona como otra cualquiera y a la que le encanta la cerveza, conducir, y estar
disfrutando con su familia. En 2001 lanzo su primer y nico libro, su propio
autobiografa, titulada Just For Fun: The Story of an Accidental Revolutionary,
que traducido al castellano es muy curioso y significa: Slo por diversin: la
historia de un revolucionario accidental.

Los motivos que llevaron a este genio a desarrollar su propio sistema


operativo fueron varias. Normalmente, Linus utilizaba un computador que usaba
para tener acceso por lnea telefnica a la red informtica de su Universidad, pero
debido a que este utilizaba Minix y este no era de su agrado, decidi crear uno l
mismo.

En los primeros intentos hizo un programa que arrancaba desde un


disquete, y consigui arrancar el computador y ejecutar dos procesos que
mostraban la cadena de caracteres AAAAABBBBB. Uno lo utilizara para leer
desde el mdem y escribir en la pantalla, mientras que el otro escribira al mdem
y leera desde el teclado. El otro motivo que le llevo a el desarrollo de su S.O fue,
la necesidad que tenia de poder descargar y subir archivos de su universidad,
pero para implementar esta funcionalidad en el software, era necesario crear un
controlador de disco. As que despus de un trabajo continuo y duro, cre un
controlador compatible con el sistema de archivos de Minix.
Podramos decir que por error decidi crear Linux partiendo desde cero al darse
cuenta, de que estaba creando algo ms que un simple emulador de terminal. En
un principio Linux se iba a llamar Freax (free+ freak + x), aunque despus se le

22
sigui conociendo como lo conocemos hoy en da. Despus de decidir seguir
desarrollando su sistema para construir un remplazo de Minix, sube al servidor de
su universidad Linux con 10.000 lneas de cdigo. A partir de ese momento Linux
empez a evolucionar rpidamente y hasta da de hoy no ha dejado de avanzar,
ganando terreno a otros sistemas operativos que no son de cdigo abierto. Linux
hoy en da sigue ganando adeptos en todas las partes del mundo debido a ser
gratuito y cada vez ms personas annimas contribuyen a su desarrollo y a
convertirse en el sistema ms estable y seguro.

La frase que utilizo al subir Linux al servidor fue:

Si suspiras al recordar aquellos das cuando los hombres eran hombres y


escriban sus propios drivers. Si te encuentras sin ningn proyecto interesante y te
gustara tener un verdadero sistema operativo que pudieras modificar a tu gusto, si
te resulta frustrante tener solo Minix. Entonces este artculo es para ti.
Lo que la gente desconoce es que Linus Torvalds solo escribe el 2% del sistema
operativo Linux, es decir unas 50.000 lneas de cdigo. El resto, se encarga de
escribirlo los millones de personas que por vocacin deciden mejorar este sistema,
aunque Linus se encarga personalmente de supervisarlo.

Torvalds siempre se ha mostrado ingenioso en sus respuestas sobre su


rival, Microsoft. En una de sus ltimas declaraciones explicaba que el caso
antimonopolio contra Microsoft no ha representado una gran diferencia o una
ayuda para Linux, pero lo que s ha conseguido es que la gente compruebe que
Microsoft no representa el sueo americano de la informtica; que tiene muchos
huecos por cubrir, muchas cosas que mejorar y un grave problema de marketing.
Probablemente esto nos ha abierto muchas puertas. Otra de las cualidades a
destacar de Torvalds quiz es que sea uno de los pocos miembros del movimiento
OPENSOURCE que se preocupa ms por el cdigo que por las leyes.

En 1996, un asteroide recibi el nombre de 9793 Torvalds en honor a Linus


Torvalds.

23
En 1997, recibe el premio Nokia Foundation Award y Lifetime Achievement
Award at Uniform.

En 1998 recibi el premio Pioneer Award de la EFF.

En 1999 recibi el ttulo de doctor honorfico en la Universidad de Estocolmo.


En 2000 recibi el ttulo de doctor honorfico en la Universidad de Helsinki.
En la votacin Persona del Siglo de la revista Time, Linus Torvalds obtuvo la
posicin nmero 17.

En 2001, comparti el premio Takeda Award para las artes sociales y


econmicas junto a Richard Stallman y Ken Sakamura.

La pelcula del 2001, Swordfish, contiene un personaje finlands (el hacker


nmero uno del mundo) llamado Axel Torvalds.

En 2004, fue nombrado como una de las personas ms influyentes del mundo en
el artculo de la revista Time.

En el verano de 2004, obtuvo el puesto nmero 16 en Suuret Suomalaiset.


En 2005, fue nombrado como uno de los mejores administradores
empresariales en una encuesta de la revista BusinessWeek.
En agosto de 2005, Linus Torvalds recibi el premio Vollum Award del Reed
College.
En 2006, la revista Business 2.0 lo nombr como una de las diez personas que
no tienen importancia debido a que el crecimiento e importancia de Linux haban
eclipsado el impacto individual de Linus.

En 2006, la revista Time lo nombra como uno de los hroes revolucionarios de


los ltimos 60 aos.

24
Richard Stallman

Richard Mathew Stallman es un activista del software libre y programador.


Sus mayores logros como programador son, entre otros, el editor de texto Emacs,
el compilador GCC y el depurador GDB y como activista destaca la referencia
moral, poltica y legal que supone para el movimiento del software libre.

Es tambin inventor del concepto copyleft, mtodo para licenciar software sin
privatizacin alguna.

Primeros aos

En 1971, Stallman se convirti en un hacker del Laboratorio de Inteligencia


Artificial (IAL) del Instituto Tecnolgico de Massachusetts (MIT). En los aos 80, la
cultura hacker que constitua la vida de Stallman empez a disolverse bajo la
presin de la comercializacin en la industria del software. En particular, otros
hackers del laboratorio de IA fundaron la compaa Symbolics, la cual intentaba
activamente remplazar el software libre del Laboratorio con su propio software
privado.
Entre 1983 y 1985, Stallman duplic por s mismo los esfuerzos de los
programadores de Symbolics para impedir que adquirieran un monopolio sobre los
ordenadores del laboratorio. Por ese entonces, sin embargo, l era el ltimo de su
generacin de hackers en el laboratorio.

Repercusiones morales y polticas

Las motivaciones polticas y morales de Richard Stallman lo han convertido


en una figura controvertida. Muchos programadores influyentes que se encuentran
de acuerdo con el concepto de compartir el cdigo, difieren con las posturas
morales, filosofa personal o el lenguaje que utiliza Stallman para describir sus
posiciones. Un resultado de estas disputas condujo al establecimiento de una
alternativa al movimiento del software libre, el movimiento de cdigo abierto.
Que las empresas tengan especial influencia en la poltica significa que la

25
democracia est enferma. El propsito de la democracia es asegurarse de que los
ricos no tengan una influencia proporcional a su riqueza. Y si tienen ms influencia
que t o que yo, eso significa que la democracia est fallando. Las leyes que
obtienen de esta forma no tienen autoridad moral, sino la capacidad de hacer
dao.
Stallman ha escrito muchos ensayos sobre la libertad del software y desde
principios de los noventa ha sido un franco defensor poltico del movimiento del
software libre. Las charlas que ha dado regularmente se titulan El Proyecto GNU
y el movimiento del Software Libre, Los Peligros de las Patentes del Software y
El Copyright y la Comunidad en la edad de las redes informticas.
Linus Torvalds ha criticado a Stallman por lo que l considera pensamiento en
blanco y negro y hacer ms dao que bien a la comunidad del software libre. La
acrrima apuesta de Stallman por el software libre inspire el Virtual Richard M.
Stallman (vrms), software que analiza los paquetes instalados en un sistema
Debian GNU/Linux e informar de aquellos que son de origen no libre.
En 1999 promovi la creacin de una enciclopedia libre, la GNUPedia,
considerada como un antecedente directo de la Wikipedia, la cual desbanc a la
primera.

Actividades recientes

En la actualidad, Stallman se encarga de difundir la ideologa GNU en todo


el mundo mediante charlas y conferencias. Esto hace que algunos le consideren
como un profeta o gur. Posee un buen nivel de espaol, y ha dado varias
conferencias en espaol en Espaa, Cuba y otros pases latinoamericanos (en
Universidades, etc.). En el ao 2004 realiz dos conferencias en la Universidad
Nacional Autnoma de Mxico (UNAM) en sus facultades de Ciencias e
Ingeniera, participando tambin en el Congreso Internacional de Software Libre
realizada el mismo ao en el mismo pas. Tambin ha sido invitado por cadenas
de televisin y prensa espaola en los que se le han hecho entrevistas en
castellano.
Ha dado conferencias en contra de las patentes de software, entre ellas en

26
Espaa cuando estaba pendiente de aprobarse una polmica ley en favor de las
patentes de software en Europa que fue rechazada por mayora absoluta de los
Eurodiputados.
En diciembre del 2006, invitado por varias organizaciones involucradas con
el software libre, imparti varias conferencias en Ecuador. En una de ellas,
realizada en la Universidad Central insisti ante ms de dos mil asistentes, que
deben asumir una posicin militante en el uso y difusin del software libre y la
lucha contra el monopolio del conocimiento. Su presencia sirvi de motivacin
para la formalizacin de los grupos de usuarios en la Asociacin de Software Libre
del Ecuador.

En el ao 2007 Stallman visit Cuba donde imparti una conferencia en la


Universidad de las Ciencias Informticas (UCI) a teatro lleno de sus seguidores en
el movimiento del Software Libre.

En octubre de ese ao, particip en el CLEI (Conferencia Latinoamericana


de Informtica), en esta ocasin habl sobre los principios del Software Libre, el
GNU, Copyleft entre otros; adems recalc la importancia de la colaboracin entre
prjimos y la divulgacin del conocimiento.

Stallman reconoci que hasta hace un tiempo, cuando le preguntaban por


qu distribucin de GNU/Linux usar, no saba cual aconsejar, pues todas
contenan software privativo, ahora, dice ya puede aconsejar varias en las que
todo su software es Software libre.

Premios y reconocimientos

Ha recibido numerosos premios y reconocimientos por su trabajo, entre


ellos una membresa en la MacArthur Foundation en 1990, elGrace Hopper Award
de la Association for Computing Machinery en 1991 por su trabajo en el editor
Emacs original, un Doctorado Honoris Causa del Royal Institute of Technology de
Suecia en 1996, el Pioneer award de la Electronic Frontier Foundation en 1998, el
Yuki Rubinski memorial award en 1999, y el Takeda award en 2001.

27
En 2004 recibi un Doctorado Honoris Causa otorgado por la Universidad
de Salta (Argentina). Ha sido el primer galardonado con el Premio Internacional
Extremadura de Conocimiento Libre que concedi la Junta de Extremadura el 7 de
febrero de 2007 en Badajoz en el marco de la III Conferencia Internacional de
Software Libre.
Tipos de Linux

La superioridad de Linux en seguridad, administracin de redes, servidores


web y otros aspectos frente a cualquiera de Microsoft Windows es incuestionable.
Si a esto le sumamos su libre distribucin en muchos de los casos, se convierten
en algo genial que va ganando adeptos.

En general, las distribuciones Linux pueden ser:

Comerciales o no comerciales.

Distribuciones fieles al software libre.

Diseadas las empresas y al hogar.

La diversidad de las distribuciones Linux es debido a cuestiones tcnicas,


de organizacin y de puntos de vista diferentes entre usuarios y proveedores. El
modo de licenciamiento del software libre permite que cualquier usuario con los
conocimientos e inters suficiente pueda adaptar o disear una distribucin de
acuerdo a sus necesidades. De todas las mencionadas anteriormente, las de uso
ms comn son las cuatro primeras que son las que voy a explicar a continuacin.

28
CAPTULO 3.- OBJETIVOS DE DISEO Y DIAGRAMA DEL
SISTEMA OPERATIVO GNU/LINUX

3.1 Diagrama de bloque del Sistema Operativo GNU/LINUX

El diagrama de bloques representa de forma grfica el funcionamiento


interno de un sistema, y se hace mediante bloques y sus relaciones, adems,
define la organizacin de todo el proceso interno, sus entradas y sus salidas.

Los objetivos de diseo del kernel de Linux son:

Rendimiento, eficiencia y velocidad: Permite obtener el mejor uso de los


recursos del sistema con la menor sobrecarga posible (rpido)

Estabilidad: Posee robustez y capacidad de recuperacin.

Flexibilidad y compatibilidad: Se utiliza en diferentes plataformas y es


compatible con muchos sistemas operativos comunes.

Seguridad y proteccin: Protege a los usuarios entre ellos y protege el


sistema de ataque malignos por parte de otros usuarios

Portabilidad: Se ejecuta en diferentes plataformas.

Extensibilidad y dinamismo: Mdulos cargables.

La Figura 3.1, muestra el diagrama de bloques del ncleo de Linux,

29
CAPTULO 4.- CONCEPTO DE PROCESO Y/O HILOS

4.1. Procesos

Se denomina proceso a una secuencia de instrucciones escrita en un


lenguaje de programacin, a una instancia de un programa en ejecucin, donde un
mismo programa puede dar lugar a varios procesos. Cada proceso ocupa un
espacio en memoria y maneja unos determinados datos, pero para el sistema
operativo un proceso no es sino un conjunto de estructuras de datos que se deben
gestionar, y que necesita ciertos recursos para realizar satisfactoriamente sus
operaciones como: Tiempo de CPU, Memoria, Archivos y Dispositivos de E/S (Ver
Figura 7).

30
Figura 4.1. Ejecucin de varios procesos en Linux.

Para el SO Linux los procesos son las entidades activas, son similares a los
procesos secuenciales clsicos, donde cada uno ejecuta un solo programa, y al
principio tiene un solo hilo de control. En otras palabras, tiene un contador del
programa que lleva la cuenta de la siguiente instruccin a ejecutar. Linux permite
que un proceso cree hilos adicionales, una vez que empieza a ejecutarse.

Por ser Linux un sistema multiprogramacin, multitarea y multiusuario,


permite la ejecucin de varios procesos de forma independiente y al mismo
tiempo, sin interferir unos con otros, incluyendo que cada usuario puede tener
diversos procesos activos a la vez, Cada proceso tiene la "ilusin" que es el nico
proceso en el sistema y que tiene acceso exclusivo a todos los servicios de este
(Tanenbaum, 2009, pag 739).

A los procesos frecuentemente se les refiere como tareas. El contexto de un


programa que est en ejecucin es lo que se llama un proceso. Este contexto
puede ser mas procesos hijos que se hayan generado del principal (proceso
padre), los recursos del sistema que este consumiendo, sus atributos de seguridad
(tales como su propietario y permisos de archivos as como roles y dems de
SELinux), etc.

31
Desde el punto de vista de un proceso ejecutndose en Linux, el kernel es
un proveedor de servicios. Cada proceso existe por separado y el espacio de
memoria reservado a cada uno de ellos est protegido para que no pueda ser
modificado. Aqu, se est llevando a cabo un sistema multiproceso real (ver Figura
8).

Desde un punto de vista interno, la cosa es distinta. Solo hay un proceso en


marcha en el ordenador que puede acceder a todos los recursos, el sistema
operativo. El resto de tareas se llevarn a cabo como co-rutinas, las cuales, de
una forma totalmente independiente, deciden por ellas mismas a qu tarea y
cundo pasarn el control. Debido a esto, un fallo en la programacin del kernel
podra bloquear todo el sistema.

Figura 4.2. Procesos desde una vista interna y externa, tomado de (Diez et
al,2010).

Prcticamente todo lo que se est ejecutando en el sistema en cualquier


momento es un proceso, incluyendo el shell, el ambiente grfico que puede tener
mltiples procesos, etc. La excepcin a lo anterior es el kernel en s, el cual es un
conjunto de rutinas que residen en memoria y a los cuales los procesos a travs
de llamadas al sistema pueden tener acceso.

32
En las estaciones de trabajo de un solo usuario, es muy comn que estn
ejecutndose docenas de procesos en un segundo plano, los cuales son llamados
demonios, es decir, son procesos que se inician a travs de una secuencia de
comandos de Shell cuando se empieza el sistema, siendo uno de los demonios
ms comunes el Cron, que se despierta una vez por minuto para revisar si hay
trabajo por hacer. De ser as, realiza el trabajo. Despus regresa a la inactividad
hasta que sea hora de la siguiente verificacin. (Tanenbaum, 2009, pag 740).

En Linux es indispensable el Cron, debido por su posibilidad de programar


las actividades para que se lleven a cabo minutos, horas, das o incluso meses
despus, en la Figura 5.3, se muestran los parmetros de ejecucin de Cron.

Figura 4.3. Parmetros de ejecucin del demonio Cron, tomado de(Telecogeek,


2013)

33
Creacin

Para gestionar la informacin de un proceso, el sistema utiliza una


estructura de datos llamada PCB (Process Control Block), donde un proceso
incluye, no slo el programa que ejecuta, sino toda la informacin necesaria para
diferenciar una ejecucin del programa de otra, Toda esta informacin se
almacena en el kernel, en el PCB.

En Linux, las propiedades de un proceso se agrupan en tres: la identidad, el


entorno, y el contexto:

Identidad: Define quin es (identificador, propietario, grupo) y qu puede


hacer el proceso (recursos a los que puede acceder).
Entorno: Parmetros (argv en un programa en C) y variables de entorno
(HOME, PATH, USERNAME, etc).
Contexto: Toda la informacin que define el estado del proceso, todos sus
recursos que usa y que ha usado durante su ejecucin.

En la identidad del proceso se define quien es y por lo tanto determina que


puede hacer.

Process ID (PID): Es un identificador nico para el proceso. Se utiliza para


identificar un proceso dentro del sistema. En llamadas a sistema identifica al
proceso al cual queremos enviar un evento, modificar, entre otros. El kernel
genera uno nuevo para cada proceso que se crea

Credenciales: Cada proceso est asociado con un usuario (userID) y uno o


ms grupos (groupID). Estas credenciales determinan los derechos del proceso a
acceder a los recursos del sistema y ficheros.

Para cada proceso hay un descriptor del tipo task_struct residente en


memoria, en todo momento. El kernel organiza todos los procesos en una lista
doblemente enlazada de estructuras de tareas. Adems Linux mantiene una task,
que es un vector lineal de punteros a cada estructura task_struct definida en un

34
instante dado. La estructura task_struct contiene informacin de varios tipos (Bello
et al, 2014, pag. 53):

Estado: es la fase en la que se encuentra un proceso en su ejecucin de un


proceso (en ejecucin, interrumpible, no interrumpible, parado y zombie).
Informacin de planificacin: es la informacin que se necesita para la
planificacin de procesos en Linux. Un proceso puede ser normal o en
tiempo real y tiene una prioridad. Los procesos en tiempo real se planifican
antes que los procesos normales y se utilizan prioridades relativas dentro
de cada categora. El tiempo en el que un proceso puede ejecutarse se
controla mediante un contador.
Identificadores: Cada proceso tiene un nico identificador de proceso, y
tiene tambin identificadores de usuario y de grupo. Un identificador de
grupo se utiliza para asignar privilegios de acceso a recursos de un grupo
de usuarios.
Comunicacin entre procesos: Linux soporta el mecanismo de IPC de UNIX
Vnculos: Cada proceso incluye un vnculo con su proceso padre, vnculos
con sus hermanos (procesos con el mismo padre) y vnculos con todos sus
hijos.
Tiempos y temporizadores: Incluye el instante de creacin del proceso y la
cantidad de tiempo del procesador consumido hasta el instante. Un proceso
puede tener tambin asociados uno o ms temporizadores de intervalo. Un
proceso define un temporizador de intervalo mediante una llamada al
sistema; cuando el tiempo termina se enva una seal al proceso. Un
temporizador puede ser de un solo uso o peridico.
Sistema de archivos: Incluye punteros a cualquier archivo abierto por el
proceso.
Memoria virtual: Define la memoria virtual asignada al proceso.
Contexto especfico del procesador: La informacin de registros y pila que
forma el contexto del proceso (espacio de direccionamiento del proceso).

35
La forma de crear los procesos en Linux es simple, se crea una copia
exacta del proceso original utilizando la llamada al sistema fork, la bifurcacin es
realizada por el proceso padre y proceso nuevo se le denomina hijo, tanto el padre
como el hijo poseen imgenes propias de memoria privadas, implementado que
los cambios que realiza el padre de sus variables no son visibles para el hijo y
viceversa (Tanenbaum, 2009, pag 740).

Para que no hay dificultad entre un proceso padre e hijo, por poseer
imgenes de memoria, variables registros y todo lo dems idntico, la llamada al
sistema fork devuelve dos valores, un cero (0) para el hijo y un valor distinto de
cero (0), el PID (Process Identifer, Identificador de proceso) del hijo, al padre. Por
lo general, ambos procesos revisan el valor de retorno y actan de acuerdo con el
resultado de retorno, en la Figura 10, se muestra el algoritmo de la creacin de un
proceso (Tanenbaum, 2009, pag 740).

Figura 4.4. Algoritmo de creacin de un proceso, tomado de (Tanenbaum, 2009,


pag 741).

Los PIDs son los que denominan a los procesos, cuando uno de estos se
crea, el padre recibe el PID del hijo, con la llamada al sistema de getpid un
proceso hijo puede conocer su PID que lo identifica, y cuando un proceso hijo
termina su PID es enviado al padre, puesto que este podra tener ms de un hijo,
al igual que los procesos hijos pueden tener hijos, producindose de un proceso
original un rbol completo de hijos, nietos y ms descendientes de (Tanenbaum,
2009, pag 741).

36
Tras crear un nuevo proceso, despus de llamar a fork, Linux llama a una
funcin de la familia exec. Estas funciones reemplazan el programa ejecutndose
en el proceso por otro programa. Cuando un programa llama a una funcin exec,
su ejecucin cesa de inmediato y comienza a ejecutar el nuevo programa desde el
principio, suponiendo que no ocurriera ningn error durante la llamada.
Generalmente uno de los dos procesos (padre o hijo) utiliza la llamada al sistema
exec despus del fork para reemplazar su espacio de memoria con un programa
nuevo.

Un proceso en Linux, aunque tiene un modelo de memoria plano, est


estructurado en doszonasde memoria:

La zona del usuario: normalmente los tres primeros gigabytes de las


direcciones lgicas.
La zona del ncleo: ocupa el cuarto gigabyte, est mapeada entodoslos
procesos del sistema.

37
Figura 4.5. Estructura de un Proceso en Linux, tomado de (Prez y Sez, 2012).

Esta estructura coincide con los dos modos del procesador que utiliza
Linux:

El cdigo de la zona del ncleo se ejecuta siempre en modo supervisor.


El cdigo presente en la zona del usuario se ejecuta en modo usuario.

La Figura 12, se ilustra un ejemplo de esta estructura.

38
Figura 4.6. Ejemplos de la Estructura de un Proceso en Linux, tomado de (Prez y
Sez, 2012).
Estados

Los estados en un proceso, hacen referencia a la fase o etapa en la que se


encuentra dicho proceso a lo largo de toda su vida, es decir, en el punto en que se
encuentre ejecutando siempre va a tener asignado un tipo de estado, que permite
al sistema identificar su actual modo en ejecucin

El SO tiene clasificados los procesos en funcin de que estn haciendo,


normalmente a esto se llama el ESTADO del proceso. El estado suele gestionarse
o con un campo en el PCB o teniendo diferentes listas o colas con los procesos en
un estado concreto.

En Linux el estado de un proceso es almacenado dentro de un campo de la


estructura task_struct . Dicho campo, es denominado state, el cual cambiar en
funcin del estado de ejecucin en el que se encuentre el proceso, los procesos
pueden pasar por los siguientes estados:

Task_Running: Proceso listo para ejecutarse o en ejecucin, si est listo


se le asignan los recursos que necesita a excepcin del procesador.
Task_Interruptible:Proceso "dormido" que puede despertar por alguna
seal o interrupcin, es decir, est suspendido y esperando, generalmente

39
a que otro proceso desocupo los recursos, para pasar al estado de
Task_Running.
Task_Uninterruptible (Blocked):Similar al anterior, pero que no puede ser
despertado inmediatamente, espera a una interrupcin y no puede ser
despertado por una seal (el proceso est suspendido), el proceso est
bloqueado esperando que finalice una entrada/salida de datos, la llegada
de un evento, que se le asigne hardware, no tiene o no consume CPU.
Task_Zombie:proceso-hijo terminando pero que no ha sido liberado por su
proceso padre, porque este aun lo espera, es decir, el proceso ha
terminado su ejecucin pero an no ha desaparecido de las estructuras de
datos del kernel.
Task_Stopped:proceso detenido, generalmente por una seal (SIGSTOP)
o mediante el uso deptrace() para ser trenzado. til para depuracin.

Figura 4.7. Estados de un proceso en Linux, tomado de (Gmez, 2013,


pag.99).

40
4.2 Hilos

Los Hilos o Threads son un concepto relativamente nuevo de los SO. En


este contexto, un proceso recibe el nombre de proceso pesado, mientras que un
hilo recibe el nombre de proceso ligero. El trmino hilo se refiere sintctica y
semnticamente a hilos de ejecucin, en esencia es un contador de programa,
una pila, y un conjunto de registros, el resto de estructuras de datos de la tabla de
procesos pertenecen al propio proceso.

Linux no considera los hilos como tales, en este se crea un nuevo proceso
copiando los atributos del proceso actual. Un nuevo proceso puede ser clonado
para que comparta los recursos del actual, tales comoarchivos, gestores de
seales ola memoriavirtual.

Cuando dos procesos comparten lamemoria, operan en efecto como hilos


dentro del mismo espacio, del mismo proceso. Sin embargo, no se
manejanestructurasdedatospara los hilos diferentes de las de los procesos, por lo
que se puede argumentar que Linux no hace diferencias entre hilos y procesos.

Histricamente, los procesos eran contenedores de recursos y los hilos


eran las unidades de ejecucin. Un proceso contena uno o ms hilos que
compartan el espacio de direcciones, los archivos abiertos, los manejadores de
seales, las alarmas y todo lo dems. Todo era claro y simple, como se describi
antes.

En el 2000, Linux introdujo una nueva y poderosa llamada al sistema: clone,


que disolvi la distincin entre procesos e hilos, y posiblemente hasta invirti la
primaca de los dos conceptos. Tradicionalmente, cuando se creaba un hilo, el
(los) hilo(s) original(es) comparta(n) todo con el nuevo, excepto sus registros. En
especial, los descriptores de los archivos abiertos, los manejadores de seales,
las alarmas y otras propiedades globales eran para cada proceso, no para cada
hilo. La llamada a clone hizo posible que cada uno de estos y otros aspectos

41
fueran especficos para cada proceso o cada hilo. La llamada se hace de la
siguiente manera (Tanenbaum, 2009, pag 750):

pid = clone(funcin, pila_ptr, banderas_compart, arg);

El parmetro banderas_compart es un mapa de bits que permite que cada


uno de los bits se pueda establecer en forma independiente a los dems, y a su
vez ellos determinan si el nuevo hilo va a copiar cierta estructura de datos, o si la
va a compartir con el hilo que hizo la llamada. La Tabla muestra algunos de los
elementos que se pueden compartir o copiar de acuerdo con los bits en
banderas_compart (Tanenbaum, 2009, pag 750).

Tabla 4. Bits en los mapas de bits de banderas_compart, tomado de


(Tanenbaum, 2009, pag 751).

Estructura

Un hilo (proceso ligero) es una unidad bsica de utilizacin de la CPU, y


consiste en un contador de programa, un juego de registros y un espacio de pila.
Un proceso tradicional o pesado es igual a una tarea con un solo hilo. Los hilos
dentro de una misma aplicacin comparten:

La seccin de cdigo.
La seccin de datos.
Los recursos del SO (archivos abiertos y seales).

42
Los hilos permiten la ejecucin concurrente de varias secuencias de instrucciones
asociadas a diferentes funciones dentro de un mismo proceso, compartiendo un
mismo espacio de direcciones y las mismas estructuras de datos del ncleo.

En un SO con procesos monohilo (un solo hilo de ejecucin por proceso),


en el que no existe el concepto de hilo, la representacin de un proceso incluye su
PCB, un espacio de direcciones del proceso, una pila de proceso y una pila
ncleo. En un SO con procesos multihilo, slo hay un PCB y un espacio de
direcciones asociados al proceso, sin embargo, ahora hay pilas separadas para
cada hilo y bloques de control para cada hilo (ver Figura 5.8).

Figura 4.8. Modelo de Pocesos Monohilos y Multihilo, tomado de (Gonzlez,


2012)

A diferencia de los mtodos de otros sistemas operativos, que distinguen


entre un proceso, un proceso ligero y un hilo, Linux utiliza la estructura de tarea
para representar cualquier contexto de ejecucin. Por lo tanto, un proceso con un
solo hilo se representar con una estructura de tarea, y un proceso multihilo tendr
una estructura de tarea para cada uno de los hilos a nivel de usuario. Por ltimo, el
mismo kernel es multihilo, y tiene hilos a nivel de kernel que no estn asociados
con ningn proceso de usuario y ejecutan cdigo del kernel (Tanenbaum, 2009,
pag 746)

43
Estados

Los principales estados de un hilo son:ejecucin,preparadoybloqueado; y


hay cuatro operaciones bsicas relacionadas con el cambio de estado de los hilos:

Creacin:En general, cuando se crea un nuevo proceso se crea tambin


un hilo para ese proceso. Posteriormente, ese hilo puede crear nuevos hilos
dndoles un puntero de instruccin y algunos argumentos. Ese hilo se
colocar en la cola de preparados.
Bloqueo:Cuando un hilo debe esperar por un suceso, se le bloquea
guardando sus registros. As el procesador pasar a ejecutar otro hilo
preparado.
Desbloqueo:Cuando se produce el suceso por el que un hilo se bloque
pasa a la cola de listos.
Terminacin:Cuando un hilo finaliza, se liberan su contexto y sus pilas.

Un punto importante es la posibilidad de que el bloqueo de un hilo lleve al


bloqueo de todo el proceso. Es decir, que el bloqueo de un hilo lleve al bloqueo de
todos los hilos que lo componen, an cuando el proceso est preparado.

Procesos vs Hilos

Los procesos e hilos comparten similitudes en ejecucin y comparticin de


recursos, pero no son lo mismo, entre ellos existe semejanzas y diferencias,
adems de algunas ventajas que proporcionan los hilos con respecto a los
procesos.

Semejanzas:

Los hilos operan, en muchos sentidos, igual que los procesos.

44
Pueden estar en uno o varios estados: listo, bloqueado, en ejecucin o
terminado.
Tambin comparten la CPU.
Slo hay un hilo activo (en ejecucin) en un instante dado.
Un hilo dentro de un proceso se ejecuta secuencialmente.
Cada hilo tiene su propia pila y contador de programa.
Pueden crear sus propios hilos hijos.

Diferencias:

Los hilos, a diferencia de los procesos, no son independientes entre s.

Como todos los hilos pueden acceder a todas las direcciones de la tarea,
un hilo puede leer la pila de cualquier otro hilo o escribir sobre ella. Aunque
pueda parecer lo contrario la proteccin no es necesaria ya que el diseo
de una tarea con mltiples hilos tiene que ser un usuario nico.

Ventajas: de los hilos sobre los procesos.

Se tarda mucho menos tiempo en crear un nuevo hilo en un proceso


existente que en crear un nuevo proceso.
Se tarda mucho menos tiempo en terminar un hilo que un proceso.
Se tarda mucho menos tiempo en conmutar entre hilos de un mismo
proceso que entre procesos.
Los hilos hacen ms rpida la comunicacin entre procesos, ya que al
compartir memoria y recursos, se pueden comunicar entre s sin invocar el
ncleo del SO.

45
Figura 4.9. Implementacin de procesos e hilos, tomado de (Tanenbaum,
2009, pag 749)

CAPTULO 5.- PLANIFICACIN DE PROCESOS

5.1 Planificacin de Procesos

La planificacin es el mtodo mediante el cual los hilos, los procesos o los


flujos de datos tienen acceso a los recursos, el objetivo principal de la planificacin
es optimizar el rendimiento del sistema y proporcionar un buen servicio a todos los
procesos que se encuentren en el. Para ello se utiliza un planificador que es
mecanismo que decidir el acceso de varios o mltiples procesos al CPU. En
Linux, el planificador se implementa en un archivo principal ncleo kernel/sched.c,
ubicado en el archivo de cabecera include/linux/sched.h, virtualmente est incluido
en los archivos de cdigo fuente del ncleo.

En Linux, el PCB de un proceso se denomina descriptor de proceso y viene


dado por una estructura del tipo task_struct, cuyos campos contienen toda la
informacin relativa a un nico proceso.

Objetivos de la Planificacin de Procesos

En general, la planificacin trata de cubrir los siguientes objetivos:


46
Justicia: La planificacin debe ser lo ms justa posible con todos los
procesos, sin favorecer a unos y perjudicar a otros.
Predictibilidad: La planificacin debe realizarse de tal forma que en todo
momento pueda saberse como ser su ejecucin.
Equilibrio en el uso de recursos: los recursos deben estar ocupados
equitativamente el mayor tiempo posible.
Equidad:Todos los procesos deben ser atendidos.
Eficacia:El procesador debe estar ocupado el 100% del tiempo.
Tiempo de respuesta:El tiempo empleado en dar respuesta a las
solicitudes del usuario debe ser el menor posible.
Tiempo de regreso:Reducir al mnimo el tiempo de espera de los
resultados esperados por los usuarios por lotes.
Rendimiento:Maximizar el nmero de tareas que se procesan por cada
hora.
Sincronizacin de Procesos

La sincronizacin implementa el uso de operaciones atmicas para asegurar la


operacin de forma correcta de los procesos que actan como colaboradores. La
Tabla VI-1 presenta las tcnicas de sincronizacin usadas por el kernel Linux. La
columna Alcance indica si la tcnica se aplica a todas las CPUs del sistema o a
una CPU en particular (en el caso de sistemas multiprocesador). Un camino de
control del kernel (Kernel Control Path, KCP) denota una secuencia de
instrucciones ejecutada por el kernel para manejar una llamada al sistema, una
excepcin o una interrupcin, adems se usar la palabra softirg como sinnimo
de la funcin diferible. Kernel Control Path.

A continuacin se explican las tcnicas de sincronizacin (Zabaljuregui,


2011).

Operaciones Atmicas: Existen varias instrucciones de lenguaje ensamblador


del tipo leer-modificar-escribir; acceden a una posicin de memoria dos veces, la
primera para leer el valor antiguo y la segunda para escribir el nuevo. Estas

47
operaciones deben ser ejecutadas en una nica instruccin sin ser interrumpidas y
evitando accesos a la mismo posicin de memoria por otras CPUs. El kernel Linux
prove un tipo especial atomic_t (un contador de 24 bits accesible atmicamente)
y algunas funciones especiales (ver la Tabla VI-2) que actan sobre variables de
este tipo y que estn implementadas como instrucciones atmicas escritas en
ensamblador. En sistemas multiprocesador, estas instrucciones son precedidas
por el byte lock.

Barreras de memoria: Cuando se utilizan compiladores con funciones de


optimizacin, nunca debera darse por supuesto que las instrucciones sern
ejecutadas en el orden exacto en el que aparecen. Un compilador podra
reordenar las instrucciones ensamblador para optimizar el uso de los registros, o
podran reordenarse los accesos a memoria en el caso de las CPUs
superescalares.

Sin embargo, a los efectos de la sincronizacin, la reordenacin debera


evitarse. Sera un problema que una instruccin ubicada despus de una primitiva
de sincronizacin sea ejecutada antes de la primitiva misma.

Una barrera de memoria asegura que las operaciones colocadas antes de


la primitiva sean terminadas antes de comenzar las operaciones colocadas
despus de la primitiva. Donde P = Monoprocesador y MP = MultiProcesador. Las
barreras de memoria de Lectura actan slo en instrucciones que leen de la
memoria, mientras que las barreras de memoria de Escritura actan en aquellas
instrucciones que escriben en memoria.

SpinLocks: son tipos especiales de locks diseados para trabajar en entornos


multiprocesador. Si el KCP encuentra el lock abierto, lo toma y contina su
ejecucin. Por el contrario, si el KCP encuentra el lock cerrado, se queda
ejecutando un bucle hasta que el lock es liberado. Aunque representan una busy
wait, generalmente los spinlocks son convenientes ya que muchos recursos del
kernel son bloqueados por slo una fraccin de milisegundo y consumira ms

48
tiempo que un proceso esperando por uno de esos recursos ceda la CPU y tenga
que conseguirla ms tarde.

En Linux, un spinlock se representa por una estructura spinlock_t, que


consiste en un nico campo lock. El valor 1 corresponde a un estado liberado,
mientras que cualquier valor igual o menor a cero indica un estado de cerrado.

Spinlocks de Lectura/Escritura: fueron introducidos para incrementar la


concurrencia en el kernel. Permiten que varios KCP lean simultneamente la
misma estructura de datos, siempre que ninguno la modifique. Si un KCP desea
escribir en la estructura debe tomar la versin de Escritura del lock, la cual brinda
acceso exclusivo al recurso.

Cada spinlock de este tipo es una estructura rwlock_t. Su campo lock es de


32 bits y codifica dos datos:

Un contador de 24 bits que indica la cantidad de KCP leyendo la


estructura (en complemento a 2).

Un flag unlock que se desactiva cuando algn KCP est leyendo o


escribiendo la estructura.

Por lo tanto el campo lock almacena el nmero 0x01000000 si el spin lock


est liberado, el nmero 0x00000000 si fue tomado por un escritor y cualquier
nmero en el rango 0x00ffffff 0x00000001 dependiendo de la cantidad de
lectores.

La macro rwlock_init inicicaliza el campo lock a 0x01000000


(desbloqueado). La macro

read_lock atmicamente decremente el spin lock en 1, incrementando el nmero


de lectores si

49
se puede, o espera. La macro read_unlock simplemente incrementa el campo
lock. La macro write_lock intenta tomar el lock para Escritura y write_unlock lo
libera.

Semforos: Linux ofrece dos tipos de semforos, aunque en este informe


interesan slo los primeros:

Semforos del kernel, usados por los KCP.

Semforos System V IPC, usados por los procesos en modo usuario.

Cuando un KCP intenta obtener un recurso ocupado protegido por un


semforo del kernel, el proceso correspondiente es suspendido. El proceso
volver al estado RUNNABLE cuando el recurso sea liberado. Un semforo del
kernel es un objeto de tipo struct semaphore, que contiene los siguientes campos:

Count: Almacena un contador atomic_t. Si es mayor que 0, entonces el


recurso est libre. Si es igual a 0, el recurso est ocupado pero ningn otro
proceso est esperando. si count es negativo, el recurso no est disponible
y al menos un proceso est esperando para usarlo.
Wait: Almacena la direccin de una cola de espera (wait queue) que incluye
a todos los procesos dormidos que estn esperando por el recurso. Si count
es mayor o igual a 0, la cola est vaca.
Sleepers: Guarda un flag que indica si algn proceso est bloqueado en el
semforo.

Semforos de Lectura/Escritura: son una caracterstica aparecida en la versin


2.4 de Linux. Son similares a los spinlocks de Lectur/Escritura, excepto que los
procesos que esperan son suspendidos hasta que el recurso se libera.

El kernel maneja a los procesos en un orden FIFO. Cada lector o escritor


que encuentra el semforo bloqueado es agregado en la ltima posicin de la cola
de espera del semforo. Cuando este es liberado, el proceso en la primer posicin
de la wait queue list es despertado y chequeado. Si es un escritor, el resto de los
50
procesos continan durmiendo. Si es un lector, el resto de los lectores que le sigan
en la lista sern despertados y tomarn el semforo, hasta encontrar un escritor.

Un semforo de lectura/escritura es modelado con una estructura


rw_semaphore que incluye los siguientes campos:

Count: Son dos contadores de 16 bits. El contador en la palabra ms


significativa almacena en complemento a 2 el nmero de KCPs que
esperan. El otro contador almacena el nmero total de escritores y lectores
en el recurso.
Wait_list: Apunta a una lista de procesos esperando. Cada elemento en la
lista es una estructura rwsem_waiter, incluyendo un puntero al descriptor
del proceso que espera y un flag indicando si el proceso quiere leer o
escribir.
Wait_lock: Un spin lock utilizado para proteger la cola de espera y a la
estructura rw_semaphore.

Deshabilitacin local de interrupciones: es uno de los mecanismos clave


utilizado para asegurar que una secuencia de sentencias del kernel es tratada
como una seccin crtica. Permite que un KCP contine su ejecucin aun cuando
un dispositivo de hardware active una seal de interrupcin y de esta forma provee
una manera efectiva de proteger estructuras de datos que tambin son accedidas
por manejadores de interrupciones.

Sin embargo, en sistemas multiprocesador, la deshabilitacin de


interrupciones locales no protege contra accesos concurrentes de manejadores de
interrupciones que se ejecuten en otras CPUs. Es por eso que suelen combinarse
con spinlocks.

Deshabilitacin global de interrupciones: Algunas funciones crticas del kernel


pueden ejecutarse en una CPU slo si no se estn ejecutando ningn manejador
de interrupciones o funcin diferible en otras CPUs. Este requerimiento de
sincronizacin se puede satisfacer deshabilitando las interrupciones globalmente.

51
Este mecanismo disminuye el nivel de concurrencia global del sistema y se est
dejando de usar ya que puede ser reemplazado por tcnicas de sincronizacin
ms eficientes.

Se realiza mediante la macro cli( ) en sistemas monoprocesadores, esta


macro simplemente se expande a __cli( ), deshabilitando las interrupciones
locales. En sistemas multiprocesador, la macro espera hasta que terminen todos
los manejadores de interrupciones y funciones diferibles, y luego toma un spin lock
especial llamado global_irq_lock. Una vez que cli( ) retorna, ningn manejador de
interrupciones comenzar a ejecutarse hasta que las interrupciones sean
reactivadas invocando la macro sti( ).

Deshabilitacin de funciones diferibles: las funciones diferibles pueden ser


ejecutadas en momentos impredecibles (generalmente, al terminar los
manejadores de interrupciones). Por este motivo, las estructuras de datos
accedidas por las funciones diferibles deben ser protegidas contra condiciones de
carrera.

Una manera trivial de impedir la ejecucin de funciones diferibles en una


CPU es deshabilitar las interrupciones en esa CPU. Ya que no se activarn los
manejadores de interrupcin, no podrn activarse las softirq para ser ejecutadas
asincrnicamente. Esta deshabilita las funciones diferibles en todas las CPUs.
Cuando se retorna de la macro cli( ), el KCP invocante puede asumir que ninguna
funcin diferible est en ejecucin y que ninguna comenzar hasta que las
interrupciones sean habilitadas globalmente.

Sin embargo, a veces el kernel necesita deshabilitar las funciones diferibles


sin deshabilitar las interrupciones. Las funciones diferibles pueden ser
deshabilitadas en cada CPU seteando a un valor no nulo el campo
__local_bh_count de la estructura irq_stat asociada con la CPU en cuestion. La
macro local_bh_disable incrementa el campo __local_bh_count en 1, mientras que
la macro local_bh_enable la decrementa.

52
Algoritmos de Planificacin

La planificacin en Linux se basa en hilos y no en procesos, soportando tres


clases de algoritmos: uno de tiempo compartido y dos de planificacin de tiempo
real que se corresponden con los definidos por POSIX, los cuales son:

A. Planificacin Primero en llegar, Primero en ser atendido (FIFO), en


tiempo real, o FCFS (First Come First Served, Primero en Llegar Primero en ser
servido)

B. Planificacin circular (Round-Robin) en tiempo real.

C. Tiempo compartido.

El algoritmo que decide cuando un proceso debe dejar la CPU, quien entra
y durante cunto tiempo, es lo que se conoce como Poltica de planificacin (o
scheduler). El servicio sched_setscheduler permite definir la clase de planificacin
del proceso que la invoca. Esta llamada slo puede hacerla un proceso
privilegiado.

Cada proceso de tiempo real tiene asociada una prioridad y un tipo de


planificacin que puede ser FIFO o Round-Robin. El planificador selecciona en
cada momento el proceso listo para ejecutar que tenga mayor prioridad. Si el
proceso es de tipo FIFO seguir ejecutando hasta que se bloquee. Si es de tipo
Round-Robin, cuando termine su rodaja el proceso pasar al final de la cola de
procesos listos para ejecutar de su misma prioridad (Tanenbaum, 2009, pag 752).

A. Planificacin FCFS: es el algoritmo ms simple, donde a medida que un


proceso pasa al estado de listo, es agregado a la cola, y cuando el proceso actual
en ejecucin finaliza, el proceso ms antiguo o que esta de primero en la cola, es
llamado por el procesador para ser ejecutado. En este algoritmo se prima el orden
de llegada de los procesos, de manera Cuando un proceso comienza a ejecutarse

53
no se interrumpe su ejecucin hasta que termina de hacerlo, y al terminar o ser
bloqueado, se comienza con el siguiente que lleg primero a la cola.

El objetivo de este algoritmo es minimizar al mximo los cambios de


contexto, para que no haya penalizacin el rendimiento del sistema, y minimizarlos
es mejorar el rendimiento.

En trminos de Linux los hilos de planificacin FIFO en tiempo real tienen la mayor
prioridad y no son preferentes, excepto por un hilo FIFO en tiempo real recin
preparado con una mayor prioridad.

B. Planificacin circular (Round-Robin) en tiempo real: Asociado a cada


proceso se define un periodo de tiempo (time quantum , tpicamente 10 100
miliseg) o cantidad mxima de tiempo de CPU que se permite a un proceso
consumir ininterrumpidamente. El quantum puede ser un parmetro comn para
todos los procesos o propio de cada uno, y entonces se almacena en el PCB del
proceso. La rutina de atencin al reloj es la encargada de comprobar si el proceso
en ejecucin ha alcanzado su quantum, y entonces promover su expulsin y la
consiguiente planificacin.

Este es un algoritmo basado en FCFS que trata la cola de procesos que se


encuentran en estado de listos como una cola circular, es decir, El sistema tiene
organizados los procesos en funcin de su estado, Los procesos estn encolados
por orden de llegada, el planificador utiliza la interrupcin de reloj para asegurarse
que ningn proceso monopoliza la CPU.

Eventos que activan el algoritmo Round Robin:

1. Cuando el proceso se bloquea (no preemptivo)

2. Cuando termina el proceso (no preemptivo)

3. Cuando termina el quantum (preemptivo)

54
Cuando se produce uno de estos eventos, el proceso que est run deja el
cpu y se selecciona el siguiente de la cola de ready. Si el evento es 1, el proceso
se aade a la cola de bloqueados hasta que termina el acceso al dispositivo, si el
evento es el 2, el proceso pasara a zombie en el caso de linux o simplemente
terminara, si el evento es el 3, el proceso se aade al final de la cola de ready
(Ver Figura 6.1).

Figura 5.1. Explicacin del Algoritmo de Round Robin, tomado de


MyFpSchool(2013).
C. Tiempo compartido.

Los procesos de tiempo compartido slo se pueden ejecutar cuando no hay


ningn proceso de tiempo real listo para ejecutar. El algoritmo de planificacin
para este tipo de procesos intenta conjugar la prioridad del proceso con su perfil
de ejecucin, favoreciendo a los procesos que realizan ms operaciones de
entrada/salida (Tanenbaum, 2009, pag 752).

En este algoritmo, todo proceso tiene asociada una prioridad base.


Inicialmente la prioridad del proceso es igual a su prioridad base. Cada vez que se
produce una interrupcin de reloj se resta una unidad a la prioridad del proceso
que estaba ejecutando. El algoritmo de planificacin est basado en la prioridad
del proceso y tiene carcter exclusivo: el planificador elige el proceso listo para
ejecutar que tenga mayor prioridad.

Cuando se produce una situacin en la que todos los procesos listos para
ejecutar tienen una prioridad igual a cero (todos ellos han usado el procesador un
tiempo suficiente para que su prioridad haya cado a 0), se produce un reajuste de

55
las prioridades de todos los procesos sea cul sea su estado. la nueva prioridad
se calcula dividiendo por 2 la actual y sumando la prioridad base (prioridad =
prioridad/2 +prioridad base).

Los procesos listos para ejecutar simplemente recuperan su prioridad base


ya que su prioridad actual es igual a 0. Sin embargo, los procesos bloqueados
obtienen una nueva prioridad mayor que la base puesto que su actual prioridad es
mayor que cero. Se trata de una frmula de tipo exponencial. Con ella un proceso
que estuviese bloqueado mucho tiempo puede llegar a tener una prioridad con un
valor del doble de la prioridad base.

Planificacin de sistemas Monoprocesamiento

La planificacin se hace en cuatro instantes de tiempo. De estas cuatro, una


no la realiza el sistema operativo, sino que es externa al procesamiento, pero tiene
una influencia enorme sobre la definicin del procesamiento, dado que el sistema
operativo queda determinado por las decisiones que se toman en este nivel. A
esta instancia le daremos el nombre de "extra largo plazo" por ser en la escala de
tiempo del ser humano.

En la administracin del procesador podemos distinguir tres niveles de


planificacin de acuerdo a la escala de tiempo en que se realiza la misma. El largo
plazo en segundos, mediano plazo en milisegundos y el corto plazo en
nanosegundos o microsegundos.

Planificacin a largo plazo

El planificador a largo plazo, scheduler o planificador de trabajos, es


un administrador que se encarga de organizar la ejecucin con un adecuado
planeamiento de recursos para que el trabajo se ejecute ordenadamente y
eficientemente segn la modalidad de procesamiento.

56
Existen diferentes filosofas en el procesamiento de un trabajo. Todas ellas
responden a ciertos criterios de planificacin que se vuelcan en los respectivos
algoritmos de planificacin. Esto se conoce como la modalidad de ejecucin o
procesamiento. Los ms importantes son:

Batch: Apunta estrictamente al exhaustivo uso del procesador en


detrimento del usuario. Sus principales caractersiticas son:

1. La CPU es monoprogramada.
2. No existe diferencia entre trabajo y proceso.
3. El scheduler elige el trabajo, crea el proceso y lo ejecuta.
4. Prcticamente hay unsolonivel de planificacin.

Interactivo: Apunta al servicio del usuario en detrimento de la performance


del procesador. Es multiprogramado pues se multiplexa la CPU entre varios
programas.
Multiprocesado: Es un ambiente en el que existen varios procesadores para
servir a los procesos en ejecucin.
Procesamiento distribuido o en red: Es una forma de procesamiento en que
se le presenta al usuario una mquina virtual y en que el procesamiento se
realiza en distintas mquinas diseminadas geogrficamente y conectadas
por una red.

Planificacin a mediano plazo

Es el que decide sacar de memoria central y llevar a disco (swap-out) a


aquellos procesos inactivos o a los activos cuyos estados sean bloqueado
momentneamente o temporalmente o los suspendidos y luego, cuando
desaparezcan las causas de sus bloqueos, traerlos nuevamente a memoria (swap-
in) para continuar su ejecucin. Este tipo de planificador se encuentra solo en
algunos sistemas especialmente en los de tiempo compartido, ya que permite
mantener un equilibrio entre los procesos activos e inactivos.

57
Planificacin a corto plazo

Tambin llamado short-term scheduler o low scheduler, es el responsable


de decidir quin, cundo, cmo y por cunto tiempo recibe el procesador un
proceso que est preparado (ready queue) para ejecutar (los recursos a esta
altura ya deben estar todos disponibles para este trabajo). Adems en sistemas
operativos con esquemas expropiativos (se quita el recurso procesador al
proceso) verifica las interrupciones.

El planificador a corto plazo es invocado cada vez que un suceso (interno o


externo) hace que se modifique el estado global del sistema. Por ejemplo:

Tics de reloj (interrupciones basadas en el tiempo).


Interrupciones y terminaciones de E/S.
La mayora de las llamadas operacionales al sistema operativo (en
oposicin a las llamadas de consulta).
El envo y recepcin de seales.
La activacin de programas interactivos.

Polticas de Planificacin

El criterio que decide cuando se evala si hay que cambiar el proceso que
est en la cpu (o no), que proceso ponemos, etc, se conoce como Poltica de
planificacin. En Linux, cada proceso es siempre planificado con alguna de las
siguientes polticas de planificacin:

Completely Fair Scheduler(CFS)

La necesidad de algoritmos de planificacin surgi con la aparicin de


sistemas operativos multitareas. Desde la versin 2.6.23 el planificador tradicional
de Linux fue remplazado por el CFS. El 80% del diseo de CFS fundamentalmente
modela un Procesador multitarea ideal. CFS busca mantener el balance en el
tiempo de procesador que se asignan a los procesos. Cada proceso debe recibir
un tiempo equitativo.
58
Cuando un proceso est fuera de balance, se le asigna tiempo de ejecucin
en el procesador. Para determinar el balance, CFS mantiene la cantidad de tiempo
que se le ha asignado a un proceso en lo que llaman Virtual Runtime. CFS utiliza
una cola basadas en el tiempo. El proceso con menor Virtual Runtime es el ms
prximo a ser ejecutado.

Utiliza una tcnica de tiempo compartido, es decir, a cada proceso se le


asigna un quantum de tiempo para ejecutarse en el procesador. La planificacin
se ejecuta acorde a un ranking de prioridad. Utiliza prioridades dinmicas que son
ajustadas a travs del tiempo. Los procesos que no han sido ejecutados por el
procesador en un periodo largo de tiempo, aumentan su prioridad. Los que han
sido ejecutados por mayor tiempo, reducen su prioridad. Se utiliza la expropiacin
de procesos, y estos son expropiados cuando:

Se acaba su quantum de tiempo.


Entra un nuevo proceso con mayor prioridad que se ejecuta actualmente.

SCHED_FIFO:procesos de tiempo-real que estn bajo el algoritmo First-In,


First-Out al mismo nivel de prioridad.
SCHED_RRprocesos de tiempo-real que estn bajo el algoritmo Round
Robin al mismo nivel de prioridad.
SCHED_NORMALProcesos convencionales.
SCHED_BATCHProcesos convencionales, los cuales se ejecutan cuando
el procesador se encuentra inactivo

Un proceso ejecutable se considera elegible para ejecutarse en la CPU


cuando todava le quede tiempo de su cuanto de tiempo; de este modo si un
proceso ya agot dicho tiempo es considerado como caducado y no puede volver
a ejecutarse hasta que las otras tareas hayan agotado sus respectivos cuantos de
tiempo.

El kernel mantiene una lista de todos los procesos ejecutables en unacola


de ejecucin; cada procesador mantiene su propia cola de ejecucin planificndola

59
de manera independiente; cada cola de ejecucin tiene dos matrices de
prioridades llamadas matrices activa y caducada. La primera tiene todas las tareas
que todava disponen de tiempo en su cuanto de tiempo, la segunda contiene
aquellos procesos que estn caducados. Cada matriz anteriormente mencionada
cuanta con una lista de procesos indexados segn la prioridad de los procesos.

El planificador de Linux adems posee la caracterstica de ser expulsivo, lo


que quiere decir que si algn proceso es activado con una prioridad superior a la
que posee un proceso que se encuentre en ejecucin, entonces el proceso en
ejecucin es expulsado para dar paso a la ejecucin del nuevo proceso con mayor
prioridad. Cuando no existen procesos activos, el planificador ejecuta al proceso
inactivo o proceso 0 (idle process o swapper process, proceso con PID = 0)

La prioridad dinmica se calcula con la siguiente frmula:

prioridad dinmica = max (100, min (prioridad esttica bono + 5,139))

En donde la prioridad esttica de un proceso se hereda del proceso padre,


y puede modificarse utilizando las llamadas al sistema nice() y setpriority()
Adems el valor de bono vara entre 0 y 10 dependiendo del tiempo promedio de
inactividad del proceso. Un proceso es considerado interactivo si satisface lo
siguiente:

prioridad dinmica 3 - prioridad esttica /4 +28

Las polticas de planificacin son:

No preemptiva(no apropiativas): La poltica no le quita la cpu al proceso, l


la libera. Slo soporta eventos no preemptivos.
Preemptiva (apropiativas): La poltica le quita la cpu al proceso. Soporta
eventos preemptivos y no preemptivos.

Las polticas de planificacin pueden tener objetivos diferentes segn el


sistema para el cual estn diseados, el tipo de usuarios que vayan a usarlos, el

60
tipo de aplicacin, etc. Sin embargo, estos son los criterios que suelen considerar
que determinan el comportamiento de una poltica:

Tiempo total de ejecucin de un proceso (Turnaround time ): Tiempo total


desde que el proceso llega al sistema hasta que termina.
Incluye el tiempo que est en todos los estados.
Depende del propio proceso y de la cantidad de procesos que haya en la
mquina
Tiempo de espera de un proceso- Tiempo que el proceso pasa en estado
ready.

Planificacin de sistemas Multiprocesamiento Simtrico

Multiprocesamiento Simtrico SMP

La arquitectura SMP (Multi-procesamiento simtrico, tambin llamada UMA,


deUniform Memory Access), se caracteriza por el hecho de que varios
microprocesadores comparten el acceso a la memoria. Todos los
microprocesadores compiten en igualdad de condiciones por dicho acceso, de ah
la denominacin simtrico.

Los sistemas SMP permiten que cualquier procesador trabaje en cualquier


tarea sin importar su localizacin en memoria; con un propicio soporte del sistema
operativo, estos sistemas pueden mover fcilmente tareas entre los procesadores
para garantizar eficientemente el trabajo.

Una computadora SMP se compone de microprocesadores independientes


que se comunican con la memoria a travs de un bu scompartido. Dicho buses un
recurso de uso comn. Por tanto, debe ser arbitrado para que solamente un
microprocesador lo use en cada instante de tiempo. Si las computadoras con un
solo microprocesador tienden a gastar considerable tiempo esperando a que
lleguen los datos desde la memoria, SMP empeora esta situacin, ya que hay
varios parados en espera de datos.

61
Arquitectura de SMP

nica instruccin, nico flujo de datos: Un solo procesador ejecuta una


nica instruccin que opera sobre datos almacenados en una sola
memoria.
nica instruccin,mltiples flujos de datos: Una sola instruccin de maquina
controla la ejecucin simultnea de un nmero de elementos de proceso.
Mltiples instrucciones, nico flujo de datos: Se transmite una secuencia de
datos a un conjunto de procesadores, cada uno de los cuales ejecuta una
secuencia de instrucciones diferentes.
Mltiples instrucciones, mltiple flujos de datos: Un conjunto de
procesadores ejecuta simultneamente diferentes secuencias de
instrucciones en diferentes conjunto de datos.

A medida que aumenta la siempre creciente demanda de mayores


prestaciones, y conforme el coste de los microprocesadores se reduce, los
fabricantes han introducido los sistemas SMP. El trmino SMP, sistema
multiprocesador simtrico, se refiere a la arquitectura hardware del sistema
multiprocesador y al comportamiento del sistema operativo que utiliza dicha
arquitectura. Un SMP es un computador con las siguientes caractersticas:

1) Tiene dos o ms procesadores similares de capacidades comparables.

2) Los procesadores comparten la memoria principal y la E/S, y estn


interconectados mediante un bus u otro tipo de sistema de interconexin, de
manera que el tiempo de acceso a memoria es aproximadamente el mismo para
todos los procesadores.

62
3) Todos los procesadores comparten los dispositivos de E/S, pero pueden
hacerlo bien a travs de los mismos canales, o bien a travs de otros caminos de
acceso al mismo dispositivo.

4) Todos los procesadores pueden desempear las mismas funciones (de ah el


trmino simtrico).

5) El sistema est controlado por un sistema operativo que posibilita la interaccin


entre los procesadores y sus programas.

La ltima de las caractersticas anteriores apunta a una de las diferencias


de los SMP respecto a los sistemas multiprocesadores dbilmente acoplados,
como son los clusters. En estos, la unidad de interaccin es normalmente un
mensaje o un fichero completo. Sin embargo, en un SMP, la interaccin se puede
producir a travs de elementos de datos individuales, y puede existir un elevado
nivel de cooperacin entre procesadores. De ah que esten clasificados como
sistemas fuertemente acoplados.

A continuacin se relacionan las ventajas potenciales de un SMP respecto a


una arquitectura monoprocesador:

Prestaciones: Si el trabajo a realizar por un computador puede organizarse de


forma que diferentes partes puedan realizarse en paralelo, concurrentemente,
entonces un sistema con varios procesadores proporcionar mejores prestaciones
que uno con un slo procesador del mismo tipo.

Disponibilidad: Como en un SMP todos los procesadores pueden realizar las


mismas funciones, un fallo en un procesador no har que el computador se
detenga.

Crecimiento incremental: Se pueden aumentar las prestaciones del sistema


aadiendo ms procesadores.

63
Escalado: Los fabricantes pueden ofrecer una gama de productos con diferentes
precios y prestaciones, en funcin del nmero de procesadores que configuran el
sistema. Sin embargo, los beneficios anteriores no son beneficios garantizados,
sino potenciales. Por su parte, el sistema operativo debe proporcionar
herramientas y funciones que permitan explotar el paralelismo del programa y
proyectarlo sobre los diferentes procesadores de un SMP. Los sistemas SMP
poseen una caracterstica muy atractiva, y es que la existencia de varios
procesadores es transparente al usuario. Es el sistema operativo el que posibilita
la sincronizacin entre los procesadores, y la planificacin de los hilos o de los
procesos, puesto que es el responsable de asignarlos a los distintos
procesadores.

Figura 5.2. Diagrama de bloques de un sistema multiprocesador.

Cachs L2 compartidas

En una configuracin tpica de sistema SMP con cach de dos niveles, cada
procesador tiene cachs L1 y L2 propias. Esto ocurra tambin en las primeras

64
versiones del SMP (G3), donde cada procesador tena una cach L2 propia. Sin
embargo, ltimamente ha aumentado el inters por la utilizacin de cachs L2
compartidas, como es el caso que nos ocupa. Las razones que llevaron a
considerar el uso de una o ms cachs compartidas fueron:

- Al cambiar de la versin G3 a la G4, IBM pas a utilizar procesadores con doble


velocidad. Manteniendo la organizacin G3, se hubiese producido un aumento
significativo del trfico a travs del bus. El BSN podra haber llegado a ser un
cuello de botella de haber mantenido la organizacin G3, a no ser que se hubiese
mejorado significativamente el bus.

- El anlisis de las cargas de trabajo de un tpico mostraba un elevado nivel de


instrucciones y datos compartidos por los procesadores. Esto se puede
aprovechar con la utilizacin de cachs compartidas.

A primera vista, compartir la cach L2 puede parecer una mala idea. Puede
pensarse que el acceso a memoria de los procesadores ser ms lento, debido a
que los procesadores deben pugnar por el acceso a la cach L2. Sin embargo,
como varios procesadores comparten un elevado volumen de datos, en realidad
una cach compartida puede incrementar el rendimiento en lugar de disminuirlo,
ya que los datos compartidos, que se encuentran en la cach compartida, se
obtienen mucho ms rpidamente que si accediera a ellos a travs del bus.
Cach L3

Otra caracterstica interesante del SMP es la utilizacin de un tercer nivel de cach


(L3). Estas cachs L3 se encuentran en los BSN a modo de buffer entre las
cachs L2 y uno de los mdulos de memoria. De esta forma, la cach L3 reduce el
retraso de acceso a los datos que no estan en ninguna de las cachs L1 y L2 del
procesador que los solicita. El uso de una cache L3 permite que el dato est
disponible mucho ms rpidamente que si hubiese que acceder a la memoria
principal, en el caso de que dicho dato se encuentre en esta cach.

65
CAPITULO 6.- GESTIN DE MEMORIA PRINCIPAL

La memoria es uno de los recursos ms valiosos que gestiona el sistema


operativo. Uno de los elementos principales que caracterizan un proceso es la
memoria que utiliza. La gestin de memoria en Linux tiene dos componentes. El
primero se encarga de la asignacin y de la liberacin de la memoria fsica
(pginas, grupos de pginas y pequeos bloques de memoria). El segundo
gestiona la memoria virtual o memoria mapeada, que es la que incide sobre el
espacio de direcciones de los procesos que se estn ejecutando.

6.1 Gestin de Memoria Fsica

La gestin de la memoria corre a cargo de un subsistema bsico que se encarga


de:

Presentar a los procesos un espacio de memoria contiguo, aunque se estn


utilizando diferentes espacios (memoria principal y memoria secundaria)

Optimizar la manera en la que se utiliza la memoria:

Los datos e instrucciones con los que se trabaja deben estar en memoria
principal

Los datos e instrucciones con los que no se trabaja pueden estar


descargados a memoria secundaria
Se debe evitar los fallos de pgina (necesitar algo que est en memoria
secundaria, lo que obliga a esperar a que se traiga hasta memoria principal)
Se debe utilizar la memoria principal disponible para acelerar la
entrada/salida (buffers y cach).

66
Figura 6.1. Gestin de la memoria Fsica

Debido a caractersticas hardware especficas, Linux separa la memoria


fsica en tres zonas distintas, que identifican diferentes regiones de memoria y que
son especficas de la arquitectura. Las zonas se identifican como:

ZONE_DMA: pginas que se pueden utilizar para operaciones de DMA.

ZONE_NORMAL: pginas normales que se asignan de la manera usual.


ZONE_HIGHMEM: pginas con direcciones de memoria superior, que no
se asignan de manera permanente.

67
El gestor principal de memoria fsica en el kernel de Linux es el asignador
de pginas. Cada zona tiene su propio asignador que es responsable de asignar y
liberar todas las pginas fsicas de la zona y es capaz de asignar rangos e pginas
fsicamente contiguas segn se vayan solicitando.

Figura 6.3. Representacin de la memoria principal de Linux

6.2 Gestin de Memoria Virtual


La Memoria Virtual hace parecer a un sistema ms abundante en memoria
de lo que realmente es. En un sistema de memoria virtual, absolutamente todas
las direcciones son virtuales y no son direcciones fsicas. Esas direcciones
virtuales sern convertidas en direcciones fsicas por el procesador, tomando

68
como base la informacin obtenida sobre un conjunto de tablas mantenidas por el
Sistema operativo Linux.

El espacio de memoria de intercambio o Swap es lo que se conoce


como memoria virtual. La diferencia entre la memoria real y la virtual es que esta
ltima utiliza espacio en la unidad de almacenamiento en lugar de un mdulo de
memoria. Cuando la memoria real se agota, el sistema copia parte del contenido
de esta directamente en este espacio de memoria de intercambio a fin de poder
realizar otras tareas.

Utilizar memoria virtual tiene como ventaja el proporcionar la memoria


adicional necesaria cuando la memoria real se ha agotado y se tiene que continuar
un proceso. La desventaja de utilizar espacio en la unidad de almacenamiento
como memoria es, que es considerablemente ms lenta.

Espacio para memoria de intercambio que se debe asignar


al sistema

Menos de 1 GB RAM Doble de la cantidad total de memoria RAM.

Ms de 1 GB RAM Misma cantidad del total de memoria RAM, ms 2


GB.

Independientemente de la cantidad de memoria RAM disponible, el sistema podr


trabajar normalmente con de 4 a 8 GB de memoria de intercambio, salvo que una
aplicacin o programa en particular lo requiera. Los programas de instalacin de la
mayora de las distribuciones asignan hasta 4 GB si se realiza una instalacin
predeterminada sin personalizar an en sistemas con mucha memoria RAM.

69
Figura 6.4. Gestin de memoria virtual

La memoria virtual y fsica son divididas en trozos llamados pginas. Esas


pginas son todas del mismo tamao, para que el sistema las pueda administrar
de una manera sencilla. Linux sobre arquitecturas Alpha AXP suele usar 8 Kbyte
por pgina y sobre sistema intel x86 la pgina es de 4 Kbyte. Cada una de esas
pginas tiene un identificador nico conocido como el Page Frame Number
(PFN) o nmero de cuadro de Pgina.

En este modelo de paginacin, una direccin virtual est compuesta de 2 partes;


un offset (desplazamiento) y un virtual PFN.

6.3 Segmentacin
La segmentacin es una tcnica de gestin de memoria que divide dinmicamente
la memoria en diferentes segmentos.

Un segmento:

70
Tiene un tamao que se ajusta a lo que va a contener. Cada segmento
puede tener un tamao diferente.

Es un rea contigua de memoria, tiene una direccin de inicio (base) y


determinado tamao (nmero de posiciones de memoria que ocupa).

Cuando se utiliza segmentacin:

No existe la fragmentacin interna, pero s hay fragmentacin externa. Pueden ser


necesarias operaciones de compactacin.

El segmento se adapta a la visin del programador. Un mdulo se


corresponde con un segmento.
Es fcil compartir datos entre procesos. A cada segmento se le puede
asignar unos permisos diferentes, de manera similar a como se realiza la
comparticin de informacin en el sistema de ficheros.

Figura 6.5. Swapping y esquemas de asignacin

71
Figura 6.6. Traduccin de direcciones virtuales en un sistema de segmentacin pura

6.4 Paginacin

Silberschatz et al. (2006) , sealan que la paginacin es un esquema de


gestin de memoria que permite que el espacio de direcciones fsicas de un
proceso no sea contiguo. La paginacin evita el considerable problema de encajar
fragmentos de memoria de tamao variable en el almacn de respaldo; la mayora
de los esquemas de gestin de memoria utilizados antes de la introduccin de la
paginacin sufran de este problema, que surga debido a que, cuando era
necesario proceder a ka descarga de algunos datos o fragmentos de cdigo que
residieran en la memoria principal, tena que encontrarse el espacio necesario en
el almacn de respaldo.

El mtodo bsico para implementar la paginacin implica descomponer la


memoria fsica en una serie de bloques de tamao fijo denominados marcos y
descomponerla memoria lgica en bloques del mismo tamao denominados

72
pginas. Cuando hay que ejecutar un proceso, sus pginas se cargan desde el
almacn de respaldo en los marcos de memoria disponibles. El almacn de
respaldo est dividido en bloques de tamao fijo que tienen el mismo tamao que
los marcos de memoria.

Figura 6.8. Transferencia de memoria paginada a disco

Cuando se utiliza paginacin:

No existe fragmentacin externa, pero s hay una pequea cantidad de


fragmentacin interna.
Las estructuras de control del SO pueden incluir:

Por cada proceso una tabla de pginas, con una entrada para cada pgina
correspondiente al proceso.
Descriptor de bloques de disco, para cada pgina hay una entrada que
indica dnde est almacenada.
Tabla de marcos de pgina, describe el estado de cada marco en memoria
principal.

73
CAPITULO 7.- GESTIN DE ALMACENAMIENTO EN GNU-LINUX

7.1 Planificacin y gestin de discos

Las unidades de almacenamiento manejadas bajo entorno Linux son vistas


como archivos, tenemos jerarquas como en Windows pero con la gran diferencia
de que no manejamos letras para las unidades.

/rhome/alumnoXX
esta es la unidad personal, cuenta con 1.5 Mb de capacidad.
/rhome/comun
esta es l unidad compartida, cuanta con 546 Mb. de capacidad.

La informacin puede estar almacenada en uno o ms dispositivos. Estos


dispositivos se montan de manera ordenada para formar un rbol de directorios
nico. En el rbol de directorios se pueden combinar dispositivos de distinto tipo
(discos duros, DVDs, discos virtuales...) y con distinta organizacin interna
(sistema de ficheros). Algunos dispositivos se pueden adems dividir en
particiones para gestionar mejor su espacio. Los dispositivos se pueden combinar
mediante mecanismos hardware o software para crear entidades ms sofisticadas
(RAID, volmenes lgicos...) En ciertos UNIX el mismo dispositivo puede ser
gestionado en modo bloque y modo carcter.

En modo bloque: montaje y uso.


En modo carcter: Acceso en crudo (raw mode) para operaciones de
recuperacin.

En el directorio /dev se encuentra los ficheros especiales para manejar los


diferentes dispositivos de almacenamiento

Discos duros: hda, hdb, sda, sdb


Disco pticos: sr0, sr1
Otros dispositivos: fd0

74
Las particiones permiten organizar el espacio de los discos, dividindolo en
zonas separadas. UNIX presenta un fichero distinto en /dev para cada particin.
Para el disco /dev/sda las particiones seran sda1, sda2. En Linux, los discos
tambin pueden identificarse por su UUID a travs de /dev/disk/by-uuid.

Una particin es una subdivisin fsica de la superficie de un disco duro.


Dentro de una particin se puede crear un sistema de ficheros. Normalmente para
poder almacenar informacin ordenada (sistema de ficheros), un disco duro debe
tener al menos una particin. El espacio no particionado solo podr ser accedido
en crudo (raw mode).

La informacin relativa a las particiones se guarda en una tabla (tabla de


particiones) al comienzo del disco (hay un espacio reservado para ello)

Linux: fdisk, cfdisk, gparted para particiones MBR gdisk, sgdisk, cgdisk para
particiones GPT.

El sistema de ficheros organiza la informacin almacenada en un dispositivo


en ficheros y directorios, almacenando permisos y otras propiedades .Para poder
acceder a los datos dentro del Sistema de Fichero de una particin es necesario
montarla. El Sistema de Fichero se muestra al SO residente con su contenido
dentro de un directorio concreto: punto de montaje

En la mayora de UNIX se usa el mandato mount

mount [-fnrsvw] [-t vfstype] [-o options] device dir

Ejemplo:

mount -t ext3 /dev/sdb1 /mnt

Para desmontar se emplea umount

El proceso de montaje permite construir el arbol de directorios del sistema

75
FUSE (el Linux) permite montar sistemas de ficheros en espacio de usuario.
Ejemplo:

Fuse iso imagen.iso /mnt

Fuse rmount -u /mnt

El sistema de ficheros raz se monta al arranque. Existen determinados


ficheros de configuracin que contienen tablas de montaje tal como lo es /etc/fstab

Es recomendable:

Mantener las cuentas de usuario en un disco diferente al de sistema


Ubicar las particiones de manera que sea posible redistribuir los discos
Colocar prescindibles (swap, /tmp) entre las que pueden necesitar
crecimiento (/home,/usr/local)
Vigilar el porcentaje de disco libre

Planificacin de Discos

El planificador de disco en Linux, es el que se encarga de atender las


peticiones de lectura o escritura, recolectadas y enviadas por el gestor de
peticiones al disco en forma de bloques de cache, introducidas de forma ordenada
en la cola de peticiones asignada a un dispositivo especifico.

El algoritmo de planificacin de disco utilizado por default en Linux es el


CSCAN, pero si ste no cumple con las expectativas de una peticin especfica
una rutina verifica si existe otro algoritmo de planificacin ms adecuado para
atenderla.

El Adaptive Disk Scheduling (planificador de disco adaptable), planifica las


peticiones de e/s y las organiza en un horario priorizado de acuerdo a parmetros
76
como retardo en la lectura, tiempo de bsqueda y preparacin de disco,
dependiendo de la prioridad y tipo de la peticin e/s Adaptive Disk Scheduling
decide que peticin(es) debe(en) ser atendida(as) primero y que algoritmo de
planificacin se debe usar para atender la peticin. El objetivo que se persigue
usando prioridades en las peticiones e/s y la seleccin de algoritmos de
planificacin ms adecuados, es que la cabeza lectora/escritora pueda moverse la
menor cantidad de distancia para tener menor tiempo de respuesta a la atencin a
las peticiones de e/s.

Sistema de archivos: Es el mtodo mediante el cual se almacena la informacin en


el disco duro.

Almacena y Gestiona los datos que los usuarios tienen guardados en los
dispositivos de almacenaje.
Asegura que los datos que se obtienen son idnticos a los que se
almacenaron originalmente.
Crea y gestiona informacin sobre los ficheros y sobre s mismo.

Los sistemas Linux pueden manejar varias particiones de disco, y cada una puede
tener un sistema de archivos distinto.
Mtodos de asignacin y gestin del espacio libre

No tiene mucho sentido que el propio sistema operativ ose ejecute sobre memoria
virtual. Sera una verdadera pesadilla que el sistema operativo tuviera que
mantener tablas de pginas para l mismo. La mayora de los procesadores de
propsito general ofrecen la posibilidad del modo de direccionamiento fsico junto
con direccionamiento virtual. El modo de direccionamiento fsico no necesita las
tablas de pginas y el procesadorno intenta realizar ningn tipo de traducciones en
este modo. El ncleo de Linuxe st preparado para funcionar sobre un espacio de
direccionamiento fsico.

77
Control De Acceso

Las entradas de la tabla de pginas tambin contienen informacin relativa


al control de acceso. Puesto que el procesador tiene que utilizar la informacin de
la tabla de pginas para traducir las direcciones virtuales a direcciones fsicas,
puede fcilmente utilizar la informacin de control de acceso para comprobar que
el proceso no est accediendo a memoria de forma apropiada.

Hay muchas razones por las que se puede querer restringir el acceso a
determinadas reas de memoria. Hay memoria, como la que contiene el
ejecutable, que es claramente memoria de slo lectura; el sistema operativo no ha
de dejar que el proceso escriba sobre su propio cdigo de programa. Por el
contrario, pginas de memoria que contengan datos han de poder ser ledas y
escritas, pero un intento de ejecutar algo de estas pginas ha de fallar. La mayora
de los procesadores tienen al menos dos modos de operacin:modo ncleo y
modo usuario. No es deseable que un proceso ejecute cdigo del ncleo, o que
acceda a datos del ncleo excepto cuando el procesador est funcionando en
modo ncleo.

Caches

Adems de invertir esfuerzos en disear y fabricar procesadores, memoria y


otros dispositivos ms rpidos, mejor forma de obtener un buen rendimiento
consiste en mantener en memoria caches de la informacin que se utiliza muy a
menudo.

Linux emplea unas cuantas caches para la gestin de la memoria, entre las
cuales tenemos:

Buffer Cach

Contiene buffers de datos que son utilizados por los manejadores de dispositivos
de bloques. Estos buffers son de tamao fijo (por ejemplo 512 bytes) y contienen

78
bloques de informacin que ha sido bien leda de un dispositivo de bloques o que
ha de ser escrita. Un dispositivo de bloques es un dispositivo sobre el que slo se
pueden realizar operaciones de lectura o escriturade bloques de tamao fijo. Por
ejemplo, los discos durosson dispositivos de bloque. El cache buffer est indexado
va el identificador de dispositivo y el nmero de bloque deseado, ndice que es
utilizado para una rpida localizacin del bloque. Los dispositivos de bloque son
exclusivamente accedidos a travs del buffer Cache.

Cach de Pginas

Este se utiliza para acelerar el acceso a imgenes y datos en disco. Se utiliza para
guardar el contenido lgico de un fichero de pgina en pgina y se accede va el
fichero y el desplazamiento dentro del fichero. Conforme las pginas se leen en
memoria, se almacenan en la cach.

Cache de Intercambio

Solo las pginas que han sido modificadas (dirty) son guardadas en el fichero de
intercambio. Mientras no vuelvan a ser modificadas despus de haber sido
guardadas en el fichero de swap, la prxima vez que necesiten ser descartadas
(swap out) no ser necesario copiarlas al fichero de intercambio pues ya estn all.

Caches Hardware

Es una cach normalmente implementada en el propio procesador; la cache de


entradas de tabla de pgina. En este caso, el procesador no necesita siempre leer
la tabla de pginas directamente, sino que guarda en esta cache las traducciones
de las pginas conforme las va necesitando.

El inconveniente de utilizar memorias cache, tanto hardware como de otro tipo, es


que para evitar esfuerzos Linux tiene que utilizar ms tiempo y espacio para
mantenerlas y, si se corrompe su contenido, el sistema dejar de funcionar.

79
Tabla De Pginas En Linux

Linux supone que hay tres niveles de tablas de pginas:

El directorio de tablas de pginas (punteros a tablas intermedias).


La tabla de pginas intermedia (punteros a tablas de pginas).
Las tablas de pginas (punteros a pginas).

Cada plataforma sobre la que funciona Linux tiene que proporcionar las macros
que permitan al ncleo atravesar las tablas de pgina de cada proceso. De esta
forma, el ncleo no necesita conocer el formato de las entradas de la tabla de
pginas ni cmo stas se organizan.

Esto es tan til que Linux utiliza el mismo cdigo de gestin de tablas de pginas
en un procesador Alpha, que tiene tres niveles de tablas de pginas, que en un
Intel x86, que slo tiene dos niveles de tablas (para ello, supone que el tamao de
la tabla intermedia es 1, y por tanto, coincide con la entrada del directorio).

Asignacin De Pginas

Linux utiliza el algoritmo Buddy para asignar y liberar eficientemente


bloques de pginas. El cdigo de asignacin intenta asignar un bloque de una o
ms pginas fsicas. Las pginas se asignan en bloques de tamao potencia de 2.
Esto quiere decir que pueden asignar bloques de 1, 2, 4, etc pginas. El algoritmo
de asignacin busca primero entre los bloques de pginas de igual tamao que el
pedido. Luego sigue la lista de pginas libres que est encolada. Si no encuentra
ningn bloque de pginas del tamao pedido libre, entonces busca en los
siguientes (los cuales son del doble del tamao pedido).

Puesto que el nmero de pginas de cada bloque es potencia de 2,


simplemente dividiendo el bloque por la mitad se obtienen dos bloques con un
tamao de bloque inmediatamente inferior.

80
Liberacin De Pginas

Asignar bloques de pginas tiende a fragmentar la memoria al dividir los


bloques grandes para conseguir bloques ms pequeos. El cdigo de liberacin
de pginas recombina pginas en bloques de mayor tamao siempre que es
posible. De hecho, el tamao de bloque de pgina es importante pues facilita la
recombinacin en bloques grandes.

Siempre que se libera un bloque de pginas, se comprueba si est libre el


bloque adyacente de igual tamao. Si es as, se combina con el bloque de pginas
recin liberado para formar un bloque nuevo de tamao doble. Cada vez que dos
bloques de pginas se recombinan en uno mayor, el algoritmo de liberacin
intenta volver a recombinarlo en otro an mayor. De esta forma, los bloques de
pginas libres son tan grandes como la utilizacin de la memoria permita.

La Cache De Pginas Linux

El cometido de la cache de pginas en Linux es el de acelerar el acceso a


los ficheros de disco. Las lecturas sobre los ficheros proyectados en memoria se
realizan pgina a pgina y estas pginas se guardan en la cache de pginas.

Siempre que se lee en una pgina de un fichero proyectado en memoria,


por ejemplo cuando se necesita traer a memoria una pgina desde un fichero de
intercambio, la pgina se lee a travs de la cache de pginas. Linux asigna una
pgina fsica y lee la pgina desde el fichero del disco.

Si es posible, Linux comenzar una lectura de la siguiente pgina del


fichero. Con esta pgina de adelanto se consigue que si el proceso est
accediendo las pginas de forma secuencial, la siguiente pgina est lista y
esperando en memoria la peticin del proceso.

Con el tiempo, la cache de pginas va creciendo conforme las imgenes se


leen y ejecutan. Las pginas han de ser eliminadas de la cache cuando dejan de
utilizarse. Conforme Linux utiliza memoria puede comenzar a escasear las pginas

81
de memoria fsica. En esta situacin Linux reducir el tamao de la cache de
pginas.

Intercambiando Y Liberando Pginas En Linux

Cuando queda poca memoria fsica, el subsistema de gestin de memoria


de Linux tiene que intentar liberar pginas fsicas. Este trabajo es realizado por el
demonio de intercambio del ncleo (kswapd). El demonio de intercambio del
ncleo es un tipo especial de proceso, un hilo de ejecucin del ncleo (kernel
thread). Los hilos del ncleo son procesos que no tienen memoria virtual, en lugar
de ello, se ejecutan en modo ncleo en el espacio de memoria fsica. Su misin es
la de garantizar que haya suficientes pginas libres en el sistema para mantener al
sistema de gestin de memoria funcionando eficientemente.

Linux no quiere enviar a disco de intercambio demasiadas pginas a la vez,


por lo lleva la cuenta de cuantas pginas estn en ese momento siendo copiadas
al fichero de intercambio.

Si hay suficientes pginas libres, el demonio de intercambio se duerme


hasta que el temporizador expire, en caso contrario, el demonio intenta de tres
formas distintas reducir el nmero de pginas fsicas ocupadas:

Reduciendo el tamao de la cache de pginas y el buffer cache,


Enviando a disco pginas compartidas,
Enviando a disco o descartando pginas.

Si el nmero de pginas libres ha cado demasiado, el demonio de


intercambio intentar liberar 6 pginas antes de su prxima ejecucin. En caso
contrario, intentar liberar 3 pginas. Los mtodos anteriores se intentan uno tras
otro de hasta que se consiguen liberar suficientes pginas. Luego el demonio de
intercambio se suspende hasta que el temporizador vuelva a expirar. El demonio
recuerda cul fue el ltimo mtodo que emple para liberar pginas, y la prxima
vez que se ejecuta lo vuelve a intentar con el mismo mtodo que tuvo xito.
82
Intercambio De Pginas Compartidas En Linux

El esquema de comparticin de memoria es un mecanismo


decomunicacinentre procesos que permite que dos procesos compartan un
espacio de memoria virtual para intercambiarse informacin entre ellos.

El demonio de intercambio del ncleo tambin utiliza el algoritmo del reloj


para intercambiar las pginas compartidas. Cada vez que se ejecuta, recuerda
cul fue la ltima pgina de memoria virtual compartida que intercambi. De esta
forma se asegura que todas las reas de memoria compartida tienen la
mismaprobabilidadde ser intercambiadas.

Intercambiando Y Descartando Pginas

El demonio de swap revisa de uno en uno cada proceso del sistema para
ver si es un buen candidato para intercambiar algunas de sus pginas. Buenos
candidatos son procesos que pueden ser intercambiados (algunos procesos no
pueden, p.e. los procesos de tiempo real) y que tienen una o ms pginas que
pueden ser enviadas al disco o descartadas de memoria. Las pginas son
enviadas al disco slo si los datos que contienen no pueden ser recuperados de
otra forma.

Una gran cantidad del contenido de unaimagenejecutable viene de la


imagen del fichero y puede ser fcilmente reledo desde el mismo fichero. Estas
pginas sencillamente se pueden descartar; cuando vuelven a referenciarse por el
proceso, stas se traen otra vez a memoria desde la imagen ejecutable del
fichero.

Una vez se ha localizado un proceso candidato para enviar a disco algunas


de sus pginas, el demonio de intercambio examina todas sus regiones de
memoria virtual buscando reas que no estn compartidas ni bloqueadas. Linux
no intercambiar a disco todas las pginas posibles del proceso que ha sido

83
elegido; slo quitar un pequeo nmero de pginas. Las pginas bloqueadas en
memoria no se pueden intercambiar ni descartar.

El algoritmo de intercambio de Linux emplea la antigedad de las pginas.


Cada pgina tiene un contador que da al demonio de intercambio una cierta idea
de si vale la pena o no intercambiar un pgina. Las pginas envejecen cuando no
son utilizadas y rejuvenecen cuando son accedidas; el demonio de intercambio
slo enva a disco pginas viejas. Laaccinpor defecto cuando se asigna una
pgina por primera vez es darle unvalorinicial de antigedad de 3. Cada vez que
se accede, el valor de antigedad se incrementa en 3 hasta un mximo de 20.

Cada vez que el demonio intercambio se ejecuta, envejece las pginas


decrementando su valor en 1. Si una pgina es vieja (age = 0), el demonio de
intercambio la procesar. Pginas sucias (Dirty) son pginas que se pueden
intercambiar.

La Cache De Intercambio De Linux

Cuando se tiene que intercambiar pginas a disco, Linux intenta evitar


escribirlas. Hay veces que una pgina est a en un fichero de intercambio y en
memoria fsica. Esto sucede cuando una pgina que fue intercambiada a disco ha
sido nuevamente leda a memoria principal cuando un proceso la ha necesitado.
Mientras la pgina que est en memoria no sea modificada por el proceso,
la pgina que est en disco es vlida.

Linux utiliza la cache de intercambio para gestionar estas pginas. La cache


de intercambio es una lista de entradas de tabla de pginas, una por cada pgina
fsica del sistema. Si una entrada en la cache de intercambio es distinta de cero,
entonces representa una pgina que est en el fichero de intercambio que no ha

84
sido modificada. Si la pgina se modifica posteriormente (un proceso escribe
sobre ella), su entrada se borra de la cache de intercambio.

Cuando Linux necesita enviar una pgina fsica a un fichero de intercambio


consulta la cache de intercambio, si hay una entrada vlida para est pgina,
entonces no es necesario copiar la pgina al fichero de intercambio. Pues la
pgina de memoria no ha sido modificada desde la ltima vez que seley del
fichero de intercambio.

Las entradas en la cache de intercambio son entradas de la tabla de


pginas de pginas que estn en algn fichero de intercambio. Estn marcadas
como invlidas pero contienen informacin que permiten a Linux encontrar el
fichero de intercambio y el pgina correcta dentro del fichero de intercambio.

Copy On Write

Copy-on-write es una tcnica para realizar eficientemente (tanto en tiempo


como en memoria) la copia de pginas. Linux no duplica las pginas de memoria
que son necesarias para un nuevo proceso, sino que hace apuntar las entradas de
la tabla de pginas del nuevo proceso a las pginas del proceso padre. Cuando
alguna de las pginas es modificada por alguno de los procesos, entonces el
ncleo pasa a realizar la duplicacin de dicha pgina. As, Linux se evita la copia
de pginas de memoria que no van ha ser utilizadas ahorrando la memoria
correspondiente y el tiempo necesario para copiarlas.

La forma de llevar a cabo este proceso consiste en establecer los permisos


de estas pginas a slo-lectura pero sabiendo que dichas pginas se pueden
modificar. Cuando ocurre una violacin de acceso a estas pginas (uno de los
procesos intenta escribir) es cuando se realiza la duplicacin propiamente dicha.

85
7.2 Sistemas de archivos manejados linux

Sistema de archivo Virtual (VFS)

Linux adopta una metodologa llamada Sistema de Archivo Virtual (VFS), el


cual permite que las aplicaciones interacten con distintos sistemas de archivos,
implementados en distintos tipos de dispositivos locales o remotos. VFS define un
conjunto de abstracciones bsicas del sistema de archivos y las operaciones que
se permiten en estas abstracciones.

Las invocaciones de las llamadas al sistema, acceden a las estructuras de


datos del VFS, determinan el sistema de archivos exacto al que pertenece el
archivo utilizado, y mediante los apuntadores a funciones almacenados en las
estructuras de datos del VFS, invocan a la operacin correspondiente en el
sistema de archivos especificado.

Figura 7.1. Sistema de Archivo Virtual (VFS),tomado de(barnech,2010)

En otras palabras, Los procesos necesitan de un acceso uniforme a los


datos, sin preocuparse de qu Sistema de Ficheros se trata El VFS es la interfaz
entre las llamadas al sistema y la gestin de archivos Las llamadas se dirigen al

86
VFS, que redirige la peticin al mdulo que gestiona el archivo Sistema Virtual de
Archivos (VFS).

Se puede apreciar en la figura 18, un resumen de las estructuras principales


que acepta el VFS.

Figura 7.2. Abstracciones del sistema de archivos que el VFS acepta

El superbloque contiene informacin crtica sobre la distribucin del


sistema de archivos.

Si se destruye el superbloque, el sistema de archivos no se podr leer. Es


decir, El Superbloque contiene una descripcin del tamao y forma base del
sistema de archivo, dicha informacin permite al administrador del sistema de
archivo usar y mantener el sistema. Normalmente slo se lee el Superbloque del
Grupo de Bloque 0 cuando se monta el sistema de archivo pero cada Grupo de
Bloque contiene una copia duplicada en caso de que se corrompa sistema de
archivo.

Fundamentalmente tiene la siguiente informacin:

Tamao total del sistema de archivos, en bloques o nodos-i.


Nmero de bloques libres del sistema.
Nmero de bloques reservados a nodos-I.

87
Nmero de nodos-I libres.
Direccin del primer bloque de datos.
Tamao de un bloque de datos.
Tamao de un bloque parcial de datos.
Hora de la ltima modificacin sistema archivos.
Hora integracin (montaje) del sistema.
Nmero de versin del sistema.
Hora de la ltima verificacin del sistema.
Intervalo mximo entre dos personas

Nodo-i

Cada uno de los nodos-i describe slo un archivo. Observe que en Linux,
los directorios y dispositivos tambin se representan como archivos, por lo cual
tienen sus correspondientes nodos-i. Tanto los superbloques como los nodos-i
tienen una estructura correspondiente que se mantiene en el disco fsico donde
reside el sistema de archivos.

Dentry: facilita ciertas operaciones de directorios y recorridos de rutas,


como /usr/ast/bin Esta estructura de datos se crea mediante el sistema de
archivos al instante. Las entradas de directorio se colocan en cach, en una
estructura dentry_cache. Por ejemplo, la dentry_cache contendra entradas
para /, /usr, /usr/ast, etctera. Si varios procesos acceden al mismo archivo
a travs de la misma ruta, su objeto archivo apuntar a la misma entrada en
esta cach.
Archivo: esta estructura es una representacin en memoria de un archivo
abierto y se crea en respuesta a la llamada al sistema open. Acepta
operaciones como read, write, sendfile, lock y otras llamadas al sistema.

Los elementos de las estructuras de datos de operaciones para cada uno


de los cuatro objetos del VFS son apuntadores a funciones en el sistema de
archivos subyacente.

88
El VFS mantiene una antememoria (cache) con informacin de cada
sistema de archivo montado y en uso.

La antememoria o cach ms importantes es el Buffer Cache, el cual se


encuentra integrado entre cada sistema de archivo y su dispositivo de bloque. Tal
y como se accede a los bloques se ponen en el Buffer Cache y se almacenan en
varias colas dependiendo de sus estados. El Buffer Cache no slo mantiene
buffers de datos, tambin ayuda a administrar el interfaz asncrono con los
controladores de dispositivos de bloque.

Linux implementa el denominado Virtual File System Cache, (VFS Cach)


para acelerar substancialmente el sistema de archivo. El argumento "filename" es
utilizado por el VFS para buscar en la estructura dentry cach o dcache, donde se
almacenan referencias a los directorios utilizados.Una entrada del dcach contiene
un puntero a un nodo-i y solo residen en memoria, mientras que los nodo-i tienen
existencia en el disco fsico. El VFS implementa un buffer cach que controla los
accesos a disco, realizando operaciones de lectura en avance (look-ahead) Existe
cach de directorios, de nodo-i y de bloques de disco.

EXT / EXT2 / EXT3

Es el protocolo de Linux para el almacenamiento de datos, se trata de un


sistema de ficheros de alto rendimiento usado para discos duros, as como para
sistemas de almacenamiento extrables (disqueteras y memorias USB). Tiene la
ventaja de permitir actualizar de ext2 a ext3 sin perder los datos almacenados ni
tener que formatear el disco. Tiene un menor consumo de CPU y esta considerado
mas seguro que otros sistemas de ficheros en Linux dada su relativa sencillez y su
mayor tiempo de prueba. Los sistemas operativos Linux son capaces de detectar
casi cualquier sistema de archivos (EXT, FAT, FAT32, NTFS, CDFS, UDF, etc.).

89
EXT2

Los orgenes de Ext2 se remontan a los primeros das de la historia de


Linux, su predecesor, el sistema de archivos extendido (Extended File System), se
implant en abril de 1992 y se integr en Linux 0.96c. El sistema de archivos
extendido experiment diversas modificaciones y, como Ext2, se convirti en el
sistema de archivos para Linux ms popular durante aos. Con la creacin de los
sistemas de archivos con registro en diario y sus sorprendentemente cortos
tiempos de recuperacin, Ext2 perdi protagonismo.

El sistema de ficheros EXT2 se construye con la premisa de que los datos


contenidos en los ficheros se guarden en Bloques de Datos. Estos bloques de
datos son todos de la misma longitud y, si bien esa longitud puede variar entre
diferentes sistemas de ficheros EXT2 el tamao de los bloques de un sistema de
ficheros EXT2 en particular se decide cuando se crea (usando mke2fs). El tamao
de cada fichero se redondea hasta un nmero entero de bloques. Si el tamao de
bloque es 1024 bytes, entonces un fichero de 1025 bytes ocupar dos bloques de
1024 bytes.

No todos los bloques del sistema de ficheros contienen datos, algunos


deben usarse para mantener la informacin que describe la estructura del sistema
de ficheros. EXT2 define la topologia del sistema de ficheros describiendo cada
uno de ellos con una estructura de datos nodo-i.

Un nodo-i describe que bloques ocupan los datos de un fichero y tambin


los permisos de acceso del fichero, las horas de modificacin del archivo y el tipo
del archivo. Cada archivo en el sistema EXT2 se describe por un nico nodo-i y
cada nodo-i tiene un nico nmero que lo identifica. Los nodos-i del sistema de
archivo se almacenan juntos en Tablas de nodos-i.

Los directorios EXT2 son simplemente archivos especiales (ellos mismos


descritos por nodos-i) que contienen punteros a los nodos-i de sus entradas de
directorio

90
En la Figura 7.3, se muestra la distribucin de un sistema de archivo
localizado en una particin de disco ext2.

Figura 7.3. Distribucin en el disco del Sistema de archivos ext2 de Linux., tomado
de (tanenbaum,2009,pag 790)

El primer bloque en cualquier particin Ext2 nunca es manejado por el


sistema de archivos Ext2, dado que est reservado para el sector de arranque. El
resto de la particin Ext2 se divide en grupos de bloques, reducen la
fragmentacin, dado que el kernel intenta mantener los bloques de datos de un
archivo en el mismo grupo de bloques, si es posible.. Cada grupo se organiza de
la siguiente manera:

El primer bloque es el superbloque, contiene informacin sobre la


distribucin del sistema de archivos, incluyendo el nmero de nodos-i, el nmero
de bloques de disco y el inicio de la lista de bloques de disco libres.En segundo
lugar se encuentra el descriptor de grupo, el cual contiene informacin sobre la
ubicacin de los mapas de bits, el nmero de bloques libres y nodos-i en el grupo,
y el nmero de directorios en el grupo. Seguido se encuentran Dos mapas de bits,
uno lleva el registro de los bloques libres y el otro los nodos-i libres. Cada mapa
tiene un bloque de longitud. Con un bloque de 1 KB, este diseo limita un grupo de
bloques a 8192 bloques y 8192 nodos-i. La primera es una restriccin real, pero en
la prctica, la segunda no lo es. Despus estn los mismos nodos-i. Se enumeran
desde 1 hasta cierto mximo. Cada nodo-i es de 128 bytes de longitud y describe

91
a un slo archivo. Un nodo-i contiene informacin contable (incluyendo toda la
informacin devuelta por stat, que simplemente toma del nodoi), as como la
informacin suficiente para localizar todos los bloques de disco que contienen los
datos del archivo. Y por ultimo estn los bloques de datos en el cual se almacenan
Todos los archivos y directorios.

Si un archivo o directorio consiste en ms de un bloque, los bloques no


tienen que ser contiguos en el disco. De hecho, es probable que los bloques de un
archivo extenso estn esparcidos por todo el disco. Los nodos-i que corresponden
a los directorios estn dispersos por todos los grupos de bloques del disco. Ext2
intenta colocar los archivos ordinarios en el mismo grupo de bloques que el
directorio padre, y los archivos de datos en el mismo bloque que el nodo-i del
archivo original, siempre y cuando haya espacio suficiente. Esta idea proviene del
Sistema de Archivos Rpido de Berkeley (McKusick y colaboradores, 1984). Los
mapas de bits se utilizan para tomar decisiones rpidas en relacin con el lugar
donde se deben asignar los datos del nuevo sistema de archivos. Cuando se
asignan nuevos bloques de archivo, ext2 tambin asigna previamente un nmero
(ocho) de bloques adicionales para ese archivo, de manera que se minimice la
fragmentacin de archivos debido a las futuras operaciones de escritura. Este
esquema balancea la carga del sistema de archivos entre todo el disco. Tambin
tiene un buen rendimiento debido a sus tendencias de colocacin y fragmentacin
reducida.

Para acceder a un archivo, primero se debe usar una de las llamadas al


sistema de Linux, como open, que requiere el nombre de ruta del archivo. Este
nombre de ruta se analiza para extraer los directorios individuales. Si se especifica
una ruta relativa, la bsqueda empieza desde el directorio actual del proceso; en
caso contrario empieza desde el directorio raz. En cualquier caso, el nodo-i del
primer directorio se puede localizar con facilidad: hay un apuntador a este nodo-i
en el descriptor del proceso, o en el caso de un directorio raz, por lo general se
almacena en un bloque predeterminado en el disco.(Tanenbaum,2009,pag 792)

92
Directorios en Linux.

Cada directorio posee cierto nmero integral de bloques de disco, de manera que:

se puedan escribir directorios en forma atmica en el disco.


Las entradas, dentro de un archivo, para los archivos y directorios estn
desordenadas, y cada una sigue justo despus de la anterior, es decir de
forma secuencial. Estas no pueden abarcar bloques de disco, por lo que a
menudo hay cierto nmero de bytes sin utilizar al final de cada bloque de
disco

Cada entrada de directorio consiste en cuatro campos de longitud fija y un campo


de longitud variable.

Campo N 1; pertenece al nmero de nodo-i, 19 para el archivo colosal, 42


para el archivo voluminoso y 88 para el directorio grandir.
Campo N 2; Pertenece a un campo rec_len, indica qu tan grande es la
entrada (en bytes), y posiblemente incluye algo de relleno despus del
nombre. Este campo se requiere para buscar la siguiente entrada para el
caso en el que el nombre del archivo se rellene con base en una longitud
desconocida.
Campo N3; pertenece al campo Tipo: archivo, directorio, etctera.
Campo N 4; pertenece a la la longitud del nombre del archivo actual en
bytes; 8, 10 y 6 en este ejemplo

Despus de los cuatro campos fijos, se tiene el campo variable que es el nombre
del archivo en s, al cual se le agrega el byte 0 de terminacin y se rellena para un
lmite de 32 bits. Cabe destacar, que se puede realizar un relleno adicional en otro
instante.

En caso de eliminar la entrada voluminoso como se puede apreciar en la Figura


10-32(b), ocurre un aumento en el tamao del campo de entrada colosal activando

93
el campo anterior para voluminoso y rellenando la primera entrada. Desde luego
que este relleno se puede utilizar para una entrada subsiguiente.

EXT3

Bsicamente, el sistema de archivos ext3 es una versin mejorada de ext2. Las


mejoras introducidas proporcionan las siguientes ventajas:

Disponibilidad

Tras un corte elctrico o una cada inesperada del sistema (tambin se denomina
cierre no limpio del sistema), se debe comprobar con el programa e2fsck cada
sistema de archivos ext2 montado en la mquina para ver si es consistente. El
proceso de comprobacin lleva mucho tiempo y puede prolongar el tiempo de
arranque del sistema de un modo significativo, especialmente si hay grandes
volmenes que contienen un elevado nmero de archivos. Durante este proceso,
no se puede acceder a los datos de los volmenes.

Con la caracterstica journaling del sistema de archivos ext3 ya no es necesario


realizar este tipo de comprobacin en el sistema de archivos despus de un cierre
no limpio del sistema. En el sistema ext3, nicamente se realiza una
comprobacin de consistencia en los casos puntuales en los que se producen
determinados errores de hardware, como, por ejemplo, fallos en el disco duro. El
tiempo empleado para recuperar un sistema de archivos ext3 tras un cierre no
limpio del sistema no depende del tamao del sistema de archivos ni del nmero
de archivos, sino del tamao del journal (diario), utilizado para mantener la
consistencia en el sistema. Por defecto, la recuperacin del tamao del "journal"
tarda alrededor de un segundo, segn la velocidad del hardware.

Integridad de los datos

El sistema de archivos ext3 proporciona una integridad superior de los


datos si se produce un cierre no limpio del sistema. El sistema de archivos
ext3 le permite seleccionar el tipo y el nivel de proteccin de los datos.
94
Velocidad

El sistema de archivos ext3, aparte de permitir escribir datos ms de una


vez, en la mayora de los casos tiene un rendimiento superior al que
proporciona ext2 porque los "journals" de ext3 optimizan el movimiento de
los cabezales de los discos duros. Se pueden seleccionar tres modos de
journaling para optimizar la velocidad, pero, como contrapartida, la
integridad de los datos se ver afectada.

Fcil transicin

La migracin de EXT2 a EXT3 es muy sencilla y se pueden aprovechar las


ventajas de un slido sistema de archivos con journaling sin tener que
volver a dar formato al sistema.

Si realiza una instalacin nueva de Debian, el sistema de archivos por


defecto que se asigna a las particiones Linux del sistema es EXT3. Si
realiza una actualizacin a partir de una versin de Debian Linux con
particiones EXT2, el programa de instalacin le permitir convertir estas
particiones a EXT3 sin perder los datos.

Fragmentacin de bloques

Para reducir la fragmentacin, permite almacenar en un mismo bloque


fragmentos de diferentes archivos.

Listas de control de acceso

En lugar de clasificar los usuarios de un archivo en tres grupos (propietario,


grupo y otros), se asocian listas de control de acceso (ACL) con cada
archivo para especificar los derechos de acceso para cada usuario
especfico o combinacin de usuarios.

Manejo de archivos comprimidos y encriptados

95
Estas nuevas opciones, que deben especificarse al crear el archivo,
permiten almacenar versiones comprimidas y/o encriptadas de los archivos
en disco.

Borrado lgico

Una opcin undelete permitir a los usuarios recuperar fcilmente, si es


necesario, el contenido de un archivo eliminado previamente.

EXT4

ext4 (fourth extended filesystem o cuarto sistema de archivos extendido) es un


sistema de archivos transaccional (en ingls journaling), anunciado el 10 de
octubre de 2006 por Andrew Morton, como una mejora compatible de ext3. El 25
de diciembre de 2008 se public el kernel Linux 2.6.28, que elimina ya la etiqueta
de "experimental" de cdigo de ext4.

Las principales mejoras son:

Soporte de volmenes de hasta 1024 PiB.


Soporte aadido de extent.
Menor uso del CPU.
Mejoras en la velocidad de lectura y escritura.

7.2.4 SWAP

El Espacio swap en Linux es usado cuando la cantidad de memoria fsica


(RAM) est llena. Si el sistema necesita ms recursos de memoria y la memoria
fsica est llena, las pginas inactivas de la memoria se mueven al espacio swap.
Mientras que el espacio swap puede ser de ayuda para las mquinas con poca
memoria RAM, no debera considerarse como algo que pueda sustituir a ms
RAM. El espacio Swap se encuentra en discos duros, que tienen un tiempo de
acceso ms lento que la memoria fsica. El espacio Swap puede ser una particin

96
swap dedicada (recomendable), un archivo swap o una combinacin de
particiones y archivos swap.

El tamao de su espacio swap debera ser igual o dos veces mayor que la
memoria RAM de su ordenador, o 32 MB, la cantidad que sea ms grande de
estas dos, pero no ms de 2048 MB (o 2 GB).

XFS

Est basado, y comparte parcialmente el mismo cdigo, en el sistema desarrollado


por Silicon Graphics para sus estaciones de trabajo y servidores. XFS.

XFS es reconocido por su buen soporte a ficheros grandes con velocidades de


transferencias muy altas (verificado hasta 7GB/seg). XFS fue desarrollado para su
variante de Unix, Irix, versin 5.3, cuya primera versin fue introducida al mercado
en diciembre de 1994. El objetivo del sistema fue soportar ficheros muy grandes
para tratamiento de vdeo en tiempo real y generacin de imgenes sintticas para
la industria de Hollywood. XFS usa B+Trees extensivamente, mantiene la
informacin de extents libres, ndices de directorios y la asignacin dinmica de
los i-nodos que se encuentran distribuidos por todo el sistema de ficheros.

XFS permite bloques de tamao variable por cada sistema, de 512 bytes a
64 kilobytes. El cambio de tamaos de bloques vara la fragmentacin, sistemas
con ficheros pequeos suelen usar bloques ms pequeos para evitar el
desaprovechamiento de espacio por fragmentacin interna. Sistemas con ficheros
grandes suelen elegir la opcin inversa para reducir la fragmentacin externa

ReiserFS

ReiserFS ofrece funcionalidades que pocas veces se han visto en otros sistemas
de archivos:

Journaling: Esta es la mejora a la que se ha dado ms publicidad, ya que previene


el riesgo de corrupcin del sistema de archivos. Reparticionamiento con el sistema

97
de ficheros montado y desmontado. Podemos aumentar el tamao del sistema de
ficheros mientras lo tenemos montado y desmontado (online y offline). Para
disminuirlo, nicamente se permite estando offline (desmontado). Namesys nos
proporciona las herramientas para estas operaciones, e incluso, podemos usarlas
bajo un gestor de volmenes lgicos como LVM o EVMS.
Tail packing, un esquema para reducir la fragmentacin interna.

Rendimiento: Comparado con ext2 y ext3 en el uso de archivos menores de 4k,


ReiserFS es normalmente ms rpido en un factor de 1015. Esto proporciona
una elevada ganancia en las news, como por ejemplo Usenet, caches para
servicios HTTP, agentes de correo y otras aplicaciones en las que el tiempo de
acceso a ficheros pequeos debe ser lo ms rpida posible.

Reiser4

Se trata de la versin ms reciente del sistema de archivos ReiserFS, reescrito


desde cero, desarrollado por Namesys y patrocinado por la DARPA y Linspire.
Entre sus ventajas se encuentran:

Soporte eficiente de gran cantidad de archivos pequeos gracias a "tail


packing".
Manejo de directorios con cientos de miles de archivos.
Infraestructura flexible que permite extensiones.
Transacciones atmicas en la modificacin del sistema de archivos.
Manejo eficiente del journaling por la va de logs.
Estructura del archivos dinmicamente optimizada a travs del mtodo
"allocate-on-flush",.
Integracin de metadatos en el espacio de nombres del sistema de
archivos.

98
F2FS

Es un nuevo sistema de archivos cuidadosamente diseado creado por Samsung


para los dispositivos de almacenamiento basados en memorias Flash NAND.
Elegimos un enfoque a la estructura de registro del sistema de archivos, pero
hemos tratado de adaptarlo a la nueva forma de almacenamiento. Tambin
remediamos algunos problemas conocidos de la muy vieja estructura de registro
del sistema de archivos como el efecto de bola de nieve del rbol errante y el alto
gasto de limpieza

En la Tabla 5, es posible apreciar las diferencias entre los diferentes


sistemas de archivos.

7.3 Especificacin de los archivos y los directorios

El sistema de archivos de Linux est organizado en archivos y directorios.


Un archivo es una coleccin de datos que se almacena en un medio fsico y a la
cual se le asigna un nombre. Los archivos, a su vez, estn agrupados en
conjuntos llamados directorios. Un directorio puede tener subdirectorios,
formndose as una estructura jerrquica con la forma de un rbol invertido. El

99
directorio inicial de esa jerarqua se denomina directorio raz y se simboliza con
una barra de divisin (/).

Existen dos tipos de distinciones cuando hablamos del tipo de contenido de


un directorio: Estticos/dinmicos y compartibles/no compartibles.

Estticos: Contiene binarios, bibliotecas, documentacin y otros ficheros


que no cambian sin intervencin del administrador. Pueden estar en
dispositivos de solo lectura (read-only) y no necesitan que se hagan copias
de seguridad tan a menudo como con ficheros dinmicos
Dinmicos: Contiene ficheros que no son estticos. Deben de encontrase
en dispositivos de lectura-escritura (read-write). Necesitan que se hagan
copias de seguridad a menudo
Compartibles: Contiene ficheros que se pueden encontrar en un ordenador
y utilizarse en otro
No compartibles: Contiene ficheros que no son compartibles

A continuacin algunos ejemplos:

Estaticos: /bin, /sbin, /opt, /boot, /usr/bin


Dinmicos: /var/mail, /var/spool, /var/run, /var/lock, /home
Compartibles: /usr/bin, /opt
No compartibles: /etc, /boot, /var/run, /var/lock

Todos los ficheros y directorios aparecen debajo del directorio raz / (El
equivalente en el mundo Unix al C:\ de Windows) aunque se encuentren en
discos/dispositivos distintos. En Linux/Unix no existen letras de discos (C:, D:, etc)
Los dispositivos se 'montan' (empiezan a formar parte) del rbol de directorios del
sistema, pero esto lo explicaremos en otra ocasin.

El sistema de archivos de un sistema Linux tpico est formado por los


siguientes directorios bajo el directorio raz , Figura 7.4.

100
Figura 7.4. Directorios en Linux, bajo el directorio Raiz, tomado de
(Tecnologica,2012)

/bin Contiene los programas ejecutables que son parte del sistema operativo
Linux. Muchos comandos de Linux como cat, cp, ls, more y tar estn ubicados en
este directorio.

/boot Contienen el kernel (o ncleo) de Linux y otros archivos necesarios para el


administrador de inicio LILO, que realiza la carga inicial del sistema operativo
cuando la computadora se enciende.

101
/dev Contienen todos los archivos de acceso a dispositivos. Linux trata cada
dispositivo (terminales, discos, impresoras, etc.) como si fuera un archivo especial.

/etc. Contiene archivos de configuracin del sistema y los programas de


inicializacin.

/home Contiene los directorios HOME de los usuarios. El directorio HOME el


directorio inicial en el que se encuentra posicionado un usuario al ingresar al
sistema, por lo que tambin se conoce como directorio de logn o de conexin.

/lib Contiene los archivos de biblioteca utilizados por las aplicaciones y utilidades
del sistema, as tambin como las libreras pertenecientes a diferentes lenguajes
de programacin.

/lost+found Directorio para archivos recuperados por el proceso de reparacin del


sistema de archivos, que se ejecuta luego de una cada del sistema y asegura su
integridad luego de que el equipo haya sido apagado de manera inapropiada.

/mnt Es un directorio vaco que se usa normalmente para montar dispositivos


como disquetes y particiones temporales de disco.

/proc Contiene archivos con informacin sobre el estado de ejecucin del sistema
operativo y de los procesos.

/root Es el directorio HOME para el usuario root (administrador del sistema).

/sbin Contienen archivos ejecutables que son comandos que se usan


normalmente para la administracin del sistema.

/tmp Directorio temporal que puede usar cualquier usuario como directorio
transitorio.

/usr Contiene archivos de programa, de datos y de libreras asociados con las


actividades de los usuarios.

102
/var Contiene archivos temporales y de trabajo generados por programas del
sistema. A diferencia de /tmp, los usuarios comunes no tienen permiso para utilizar
los subdirectorios que contiene directamente, sino que deben hacerlo a travs de
aplicaciones y utilidades del sistema.

Permisos de acceso de archivos y directorios

Los permisos de acceso de los archivos y directorios se definen en forma


separada para las siguientes tres categoras de usuario:

el usuario propietario del archivo (u),


los usuarios del grupo al que pertenece archivo (g) y
todos los otros usuarios (o).

Para un archivo, cada permiso permite:

leer (r): examinar el contenido del archivo,


escribir (w): modificar el archivo y
ejecutar (x): ejecutar el archivo como comando.

Para un directorio, cada permiso permite:

leer (r): listar el contenido del directorio,


escribir (w): aadir o eliminar archivos del directorio y
ejecutar (x): acceder a los archivos del directorio.

El permiso de ejecucin de un directorio permite no solo la lectura de sus archivos


sino la posibilidad de ver los atributos de los mismos tales como tamao y fecha y
hora de modificacin.

Para mostrar la informacin referente a los permisos de archivos y directorios se


utiliza el comando ls. Cuando se invoca ls con la opcin -l, se muestra la siguiente
informacin:

103
el tipo de archivo (primer carcter)
o -: archivo normal
o d: directorio
o l: enlace simblico
o c: nodo de dispositivo de carcter
o b: nodo de dispositivo de bloque
o p: tubera con nombre
o s: socket
los permisos de acceso del archivo (los nueve caracteres, tres para cada
usuario, grupo y otros en ese orden)
el numero de enlaces duros del archivo
el nombre del usuario propietario del archivo
el nombre del grupo al que pertenece el archivo
el tamao del archivo en caracteres (en bytes)
la fecha y hora del archivo (mtime)
el nombre del archivo.

Para cambiar el propietario de un archivo se utiliza chown desde la cuenta


de superusuario. Para cambiar el grupo al que pertenece un archivo se utiliza
chgrp desde la cuenta del propietario del archivo o desde la cuenta de
superusuario. Para cambiar los permisos de acceso de un archivo o de un
directorio se utiliza chmod desde la cuenta del propietario del mismo o desde la
cuenta de root. Veamos la sintaxis bsica para manipular el archivo duquesa:

# chown nuevo_usuario duquesa

# chgrp nuevo_grupo duquesa

# chmod [ugoa][+-=][rwx][,...] duquesa

Por ejemplo, para que el usuario reina sea propietario de un determinado


directorio que sea compartido por el grupo duquesa, ejecute los siguientes
comandos desde la cuenta de superusuario:

104
# cd /determinada/ubicacion/

# chown -R reina:duquesa .

# chmod -R ug+rwX,o=rX .

Existen tres bits mas para permisos especiales:

ID usuario (s o S en vez de la x del usuario),


ID grupo (s o S en vez de la x del grupo) y
bit adherente (t o T en vez de la x de otros).

Activando el ID usuario de un archivo ejecutable se permite a un usuario


ejecutarlo con el ID del propietario del archivo (por ejemplo, el root).
Anlogamente, activando el ID grupo de un archivo ejecutable se permite a un
usuario ejecutarlo con el ID del grupo del archivo (por ejemplo, el root). Puesto que
estas activaciones pueden implicar riesgos en la seguridad del sistema se requiere
proceder con cautela.

Activando el ID grupo de un directorio se habilita el esquema de creacin de


archivos del tipo BSD donde todos los archivos que se crean en el directorio
pertenecen al grupo del directorio.

Activando el bit adherente en un directorio, se evita que un usuario que no


es propietario de un archivo lo pueda eliminar del mismo. Para asegurar el
contenido de un archivo en directorios donde todo el mundo puede escribir como
en /tmp no solo se debe desactivar el permiso de escritura del archivo sino
tambin activar el bit adherente del directorio. Caso contrario, el archivo puede ser
borrado por un usuario que tenga permiso de escritura en el directorio, al crear un
nuevo archivo con el mismo nombre.

En la Figura 7.5. se aprecia algunos ejemplos interesantes sobre permisos


de archivos:

105
$ ls -l /etc/passwd /etc/shadow /dev/ppp /usr/sbin/pppd

crw-rw---- 1 root dip 108, 0 Jan 18 13:32 /dev/ppp

-rw-r--r-- 1 root root 1051 Jan 26 08:29 /etc/passwd

-rw-r----- 1 root shadow 746 Jan 26 08:29 /etc/shadow

-rwsr-xr-- 1 root dip 234504 Nov 24 03:58 /usr/sbin/pppd

$ ls -ld /tmp /var/tmp /usr/local /var/mail /usr/src

drwxrwxrwt 4 root root 4096 Feb 9 16:35 /tmp

drwxrwsr-x 10 root staff 4096 Jan 18 13:31 /usr/local

drwxrwsr-x 3 root src 4096 Jan 19 08:36 /usr/src

drwxrwsr-x 2 root mail 4096 Feb 2 22:19 /var/mail

drwxrwxrwt 3 root root 4096 Jan 25 02:48 /var/tmp

Figura 7.5. Permisos de archivos.

Usando el comando chmod(1) existe un modo alternativo de asignar


permisos a los archivos Este mtodo utiliza entre 3 y 4 nmeros escritos en octal
(base 8). Cada digito corresponde a:

106
primer digito opcional: suma de ID usuario (=4), ID grupo (=2) y bit
adherente (=1)
segundo digito: suma de los permisos de lectura (=4), escritura (=2) y
ejecucin (=1) del usuario
tercer digito: dem para grupo
cuarto digito: dem para otros

Si observa las primeras columnas (2-10) de la salida del comando ls -l y lee


sus permisos en representacin binaria (base 2) (con "-" igual a "0" y "rwx" igual a
"1") le resultara familiar los permisos de archivo en representacin octal (base 8).
Por ejemplo:

$ touch reina cabina

$ chmod u=rw,go=r reina

$ chmod 644 cabina

$ ls -l reina cabina

-rw-r--r-- 1 penguin penguin 0 Nov 3 23:30 reina

-rw-r--r-- 1 penguin penguin 0 Nov 3 23:30 cabina

Se puede definir la mscara de permisos predeterminada usando el comando


umask que viene con el shell.

CAPTULO 8.- Gestin de E/S

Los equipos con sistema operativo Linux tienen dispositivos de E/S como
discos, impresoras y redes conectados a ellas. Con la finalidad de que los
programas accedan a estos dispositivos, linux integra los dispositivos en el
sistema de archivos, como archivos especiales. A cada dispositivo de E/S se le
asigna un nombre de ruta, por lo general en /dev. Por ejemplo, un disco podra ser
/dev/hd1, una impresora podra ser /dev/lp y la red podra ser /dev/net.

107
Estos archivos especiales se pueden utilizar de la misma forma que
cualquier otro archivo. No se requieren comandos o llamadas al sistema
especiales. Basta con utilizar las llamadas al sistema usuales como open, read y
write.

Los archivos especiales se dividen en dos categoras: de bloques y de


caracteres.

A continuacin se muestra en la Figura IX-1, el sistema de entrada y salida


y la Figura 8.1, El sistema de E/S de Linux muestra un sistema de archivo con
detalle

Figura 9.1.Sistema de Entrada y Salida Linux, tomada de (Martinez,2006)

Capas del software E/S Linux

Las capas del software de entrada y salida son cuatro:

1. Manejadores de Interrupciones
2. Manejadores de Dispositivos
3. Manejadores del Software Independiente del Dispositivo
4. Software de E/S en el espacio del usuario.

108
Por ejemplo, cuando un programa de usuario trata de leer un bloque de un
fichero se invoca al sistema operativo para que lleve a cabo la llamada. El
software independiente del dispositivo busca el bloque en el bfer de la cach, por
ejemplo. Si el bloque requerido no est all, se invoca al driver del dispositivo para
que enve la solicitud al hardware para que obtenga el bloque del disco. Luego el
proceso se bloquea hasta que se completa la operacin del disco.

Cuando el disco termina, el hardware genera una interrupcin. El manejador


de la interrupcin se ejecuta para descubrir qu es lo que ha sucedido, es decir,
qu dispositivo quiere que lo atiendan en ese momento. Luego revisa el estado del
dispositivo y despierta al proceso dormido para que finalice la solicitud de E/S y
permita que pueda continuar el proceso de usuario.

Manejadores de dispositivos:

Los dispositivos de entrada/salida los cuales son integrados al sistema de


archivo como archivos especiales, a cada uno se le asocia un drivers de
dispositivo el cual se encargara de manejar el dispositivo correspondiente.

Cada driver tiene lo que se conoce como nmero de dispositivo mayor, que
sirve para identificarlo. Si un driver acepta varios dispositivos (por ejemplo, dos
discos del mismo tipo), cada disco tiene un nmero de dispositivo menor que lo
identifica. En consecuencia, los nmeros de dispositivo mayor y menor especifican
cada uno de los dispositivos de E/S en forma nica. En unos cuantos casos, un
solo driver maneja dos dispositivos que estn muy relacionados.

Por ejemplo, el driver que corresponde a /dev/tty controla tanto el teclado


como la pantalla, que a menudo se considera como un solo dispositivo: la terminal.

109
Procedimientos de un manejador de dispositivo

Cada driver se divide en dos partes; ambas forman parte del kernel de
Linux y se ejecutan en modo de kernel. La mitad superior se ejecuta en el contexto
del que hace la llamada y sirve como interfaz para el resto de Linux. La mitad
inferior se ejecuta en el contexto del kernel e interacta con el dispositivo. Los
drivers pueden hacer llamadas a los procedimientos del kernel para asignar
memoria, administrar el temporizador, controlar el DMA y otras cosas. El conjunto
de funciones del kernel que se pueden llamar se define en un documento conocido
como Interfaz de driver-kernel.
Manejadores de interrupciones

Se deben ocultar al mximo en el S.O.


El proceso que solicita la operacin se bloquea hasta que termina la E/S
Cuando se presenta una interrupcin el manejador de interrupciones hace
lo propio para manejarla. Despus avisa al manejador que le solicit esa
operacin de E/S
El manejador despierta al proceso y prosigue su ejecucin As, el efecto
real es que el proceso que antes estaba bloqueado ahora ya puede
ejecutarse

Software de E/S independiente del dispositivo (SID)

Software que no depende directamente del dispositivo

Funciones:

1. Interfaz uniforme del software a nivel de usuario

2. Asociacin de nombres simblicos de los dispositivos y el manejador correcto:


/dev/tty0 ) nodo-i especial (id. tipo y dispositivo)

3. Interfaz uniforme para manejadores de dispositivo.

110
4. Proteccin de dispositivos, evitando que usuarios no autorizados accedan al
dispositivo

5. Tamao de bloque independiente del dispositivo

Agrupar o dividir sectores para conseguir un tamao nico de bloque lgico


Las capas superiores pueden trabajar con dispositivos abstractos

6. Uso de buffers para almacenamiento temporal de los datos

Homogenezan velocidades, se pueden recibir los datos de manera ms


rpida que la velocidad que pueden salir.

7. Asignacin de espacio en los dispositivos de bloques

Realizar la gestin de la lista ligada o mapa de bits para administrar el


espacio libre es independiente del dispositivo

8. Arbitrio entre dispositivos de uso exclusivo

Examinar las solicitudes de uso de dispositivos y aceptarlas o rechazarlas,


segn el dispositivo est disponible o no.

9. Informe de errores

Los errores no resueltos por los manejadores debern ser tratados por el
SID, que intentar solucionarlos, y si no puede, deber informar de los
mismos.

Software de E/S en el espacio de usuario

Se refiere a un espacio de aplicacin, externo al ncleo, el cual lleva a cabo


las llamadas al sistema o entrada y salida (E/S), pero por lo comn, el espacio de

111
usuario como parte de una aplicacin har llamadas al sistema y otras actividades
del sistema desde el ncleo.

Procedimientos de biblioteca

La mayora del software de E/S est en el ncleo, Sin embargo, tambin


hay procedimientos de biblioteca que se ejecutan en modo usuario y que se
encargan de realizar las llamadas al sistema (ej. read, printf, etc.). Normalmente
preparan el entorno adecuado y a continuacin realizan la llamada al sistema

Sistema de spooling

Los dispositivos de uso exclusivo no se pueden dejar a cargo de programas


de usuario (problema: monopolizacin) El sistema de spooling es una forma de
manejar dispositivos dedicados en un sistema con multipogramacin

Hay un demonio y un directorio de spooling. El demonio verifica


peridicamente el directorio para saber si hay trabajos pendientes Las impresoras
se manejan de esta manera.
9.1 Tratamiento de los errores de E/S

Aunque no se puede acceder en forma aleatoria a la mayora de los


archivos especiales de caracteres, a menudo se requiere controlarlos en formas
que no se requieren con los archivos especiales de bloques. Por ejemplo,
considere la entrada que se escribe en el teclado y se muestra en la pantalla.
Cuando un usuario comete un error de teclado y desea borrar el ltimo carcter
que escribi, oprime cierta tecla. Algunas personas prefieren usar la tecla de
retroceso, y otros prefieren SUPR. De manera similar, para borrar toda la lnea
que se acaba de escribir hay muchas convenciones. Por tradicin se utilizaba @,
pero ante la popularidad del correo electrnico (que utiliza @ dentro de las
direcciones) muchos sistemas han adoptado CTRL-U o algn otro carcter. De
igual forma, para interrumpir el programa en ejecucin hay que oprimir cierta tecla

112
especial. Aqu tambin hay distintas personas con distintas preferencias. CTRL-C
es una opcin comn, pero no es universal.

En vez de seleccionar una opcin y obligar a que todos la utilicen, Linux


permite al usuario personalizar todas estas funciones y muchas otras. Por lo
general se proporciona una llamada al sistema especial para establecer estas
opciones. Esta llamada al sistema tambin permite expandir el tabulador, habilitar
y deshabilitar el eco de los caracteres, realizar la conversin entre el retorno de
carro y el avance de pgina, y otras cosas similares. Esta llamada al sistema no se
permite en los archivos regulares o en los archivos especiales de bloque.

Dispositivos de Bloques

Un archivo especial de bloques consiste en una secuencia de bloques


enumerados. La propiedad clave del archivo especial de bloques es que se puede
direccionar y utilizar cada bloque por separado. En otras palabras, un programa
puede abrir un archivo especial de bloques y leer, por ejemplo, el bloque 124 sin
tener que leer primero los bloques 0 a 123. Por lo general, los archivos especiales
de bloques se utilizan para los discos.

Dispositivos de Caracteres

Los archivos especiales de caracteres se utilizan por lo comn para dispositivos


que reciben o envan un flujo de caracteres. Los teclados, las impresoras, redes,
ratones, plotters y la mayora de los otros dispositivos de E/S que aceptan o
producen datos para las personas, utilizan archivos especiales de caracteres. No
es posible (ni tiene sentido) buscar el bloque 124 en un ratn.

113
Implementacin de E/S en Linux ,

La E/S en Linux se implementa mediante una coleccin de drivers de


dispositivos, uno por cada tipo de dispositivo. La funcin de los drivers es aislar el
resto del sistema del hardware. Al proveer interfaces estndar entre los drivers y el
resto del sistema operativo, la mayor parte del sistema de E/S se puede colocar en
la parte del kernel independiente de la mquina.

Cuando el usuario accede a un archivo especial, el sistema de archivos


determina los nmeros de dispositivo mayor y menor que le pertenecen, y si es un
archivo especial de bloques o un archivo especial de caracteres. El nmero de
dispositivo mayor se utiliza para indexar en una de dos tablas de hash internas
que contienen estructuras de datos para dispositivos de caracteres o de bloques.
La estructura que se localiza de esta forma contiene apuntadores a los
procedimientos a llamar para abrir el dispositivo, leer del dispositivo, escribir en el
dispositivo, etctera. El nmero de dispositivo menor se pasa como parmetro.

Agregar un nuevo tipo de dispositivo en Linux significa agregar una nueva


entrada a una de esas tablas y suministrar los procedimientos correspondientes
para manejar las diversas operaciones en el dispositivo.

Las columnas representan las funciones que deben aceptar todos los
drivers de caracteres. Cuando se realiza una operacin en un archivo especial de
caracteres, el sistema indexa en la tabla de hash de dispositivos de caracteres
para seleccionar la estructura apropiada, y despus llama a la funcin
correspondiente para realizar el trabajo. As, cada una de las operaciones de
archivos contiene un apuntador a una funcin contenida en el driver
correspondiente.

Administrador de cach

El sistema de E/S se divide en dos componentes principales: el manejo de


los archivos especiales

114
de bloques y el de los archivos especiales de caracteres.

El objetivo de la parte del sistema que realiza operaciones de E/S en


archivos especiales de bloques (por ejemplo, los discos) es minimizar el nmero
de transferencias que se deben realizar.

Para lograr este objetivo, los sistemas Linux tienen una cach entre los
drivers de disco y el sistema de archivos, como se muestra en la Figura IX-6 .

Un nivel de bloques genrico mantiene unidos estos componentes, realiza


las traducciones necesarias entre sectores de disco, bloques, bferes y pginas
de datos, y permite realizar operaciones en ellos.

La cach es una tabla en el kernel para contener miles de los bloques de


uso ms reciente.

Cuando se requiere un bloque del disco para cualquier propsito (nodo-i,


directorio o datos), primero se realiza una comprobacin para ver si est en la
cach. De ser as, se toma de ah y se evita un acceso al disco, con lo cual se
obtienen grandes mejoras en el rendimiento del sistema.

Drivers de Red

El driver del dispositivo de red produce paquetes que consisten en varios


bytes de datos, junto con encabezados de red. Despus, estos paquetes se
enrutan a travs de una serie de drivers de protocolos de red, y por ltimo se
pasan a la aplicacin en espacio de usuario. La estructura de bfer de socket
skbuff es una estructura de datos clave, la cual se utiliza para representar
porciones de la memoria llenas con los datos del paquete. Los datos en un bfer
skbuff no siempre empiezan en la parte inicial del bfer. A medida que varios
protocolos en la pila de red los procesan, se pueden eliminar o agregar
encabezados de protocolo. Los procesos de usuario interactan con los
dispositivos de red a travs de sockets, que en Linux brinda la API de sockets
original de BSD. Los drivers de los protocolos se pueden ignorar y se permite el
115
acceso directo al dispositivo de red subyacente por medio de raw_sockets. Slo
los superusuarios pueden crear sockets crudos.

Captulo 9.- Seguridad y Proteccin en GNU/LINUX

9.1 Seguridad

Siempre se ha dicho que GNU/LINUX es un sistema muy seguro (en


comparacin con algunos sistemas operativos propietario), aunque en realidad
sera mejor decir que GNU/LINUX tiene el potencial para convertirse en
enormemente seguro.

La seguridad se basa en tres aspectos:

Evitar la prdida de datos.

Mantener un control en la confidencialidad.

Controlar el acceso a los datos y a los recursos.

La seguridad en un sistema se basa en los mecanismos de proteccin que


este sistema proporciona. Estos mecanismos deben permitir controlar qu
usuarios tienen acceso a los recursos del sistema y qu tipo de operaciones
pueden realizar sobre esos recursos.

Todo mecanismo de proteccin debe manejar 2 conceptos, Recursos que


son las partes del sistema utilizadas por los procesos y Dominios de proteccin
que son el conjunto de recursos y operaciones sobre estos recursos que podrn
utilizar todos aquellos procesos que se ejecuten sobre l. En general, en un
sistema LINUX, el conjunto de recursos est formado por todos los archivos del
sistema, y el dominio ser un usuario y los procesos que el ejecuta y que, por
tanto, tengan el mismo UID efectivo. Para controlar el acceso de los dominios a los
recursos se utilizan las Listas de Control de Acceso por cada recurso. La Lista de

116
Control de Acceso (ACL), especifica qu dominios tienen acceso al recurso y qu
operaciones asociadas al recurso pueden utilizar. El problema que plantea la lista
de control de acceso es su tamao variable, ya que depende del nmero de
dominios que tengan acceso al recurso y de las operaciones que pueda realizar
cada uno de ellos.

En Linux, para conseguir Listas de tamao constante, se utilizan 2 tcnicas:

1. Reducir el nmero de operaciones posibles sobre un recurso (archivo): se


puede controlar 3 operaciones sobre los archivos, que son la lectura (r), escritura
(w) y la ejecucin (x).

2. Reducir el nmero de dominios que aparecen en la lista. Esto se consigue


mediante el concepto de grupos de usuarios. Todos los usuarios de un sistema
Linux deben pertenecer, al menos, a un grupo. Existen 3 grupos o categoras en la
relacin entre un dominio ( usuario ) y un recurso (archivo ):

Propietario: indica quin cre el archivo

Grupo del propietario: rene a todos los usuarios que pertenecen al grupo
del propietario.

Resto de usuarios: los que no crearon el archivo y no pertenecen al grupo


del propietario.

Con estos 2 mecanismos la Lista de control de acceso se reduce a 9 bits,


organizados en 3 grupos de 3. Esta Lista de control de acceso est situada en la
Palabra de proteccin del nodo-i, que es donde se mantienen todos los atributos
asociados a un archivo.

SEGURIDAD EXTERNA:

Hace referencia a los controles y mecanismos implementados para


controlar el acceso remoto desde y hacia el centro de cmputo. Se prevn
amenazas como:
117
Desastres naturales, incendios o inundaciones.
Amenazas ocasionadas por el hombre.
Sabotajes internos y externos deliberados.

Seguridad del Ncleo

No tiene ninguna restriccin a la hora de ejecutarse. o utiliza todas las


instrucciones del procesador. o direcciona toda la memoria. o accede directamente
al hardware.

SEGURIDAD INTERNA

Seguridad local

Linux dispone de un control de acceso a los usuarios verificando una pareja


de usuario y clave, cada fichero y directorio tiene sus propios propietarios y
permisos.

Iptables: Tabla proveda por el firewall del kernel de Linux. Requiere privilegios del
root para funcionar.

Deja que el administrador del sistema defina las tablas que contiene cadenas de
reglas para tratar a los paquetes.

Seguridad del sistema de archivos

El archivo etc/system puede definir variables para el ncleo del SO, como el
nmero mximo de archivos abiertos por un proceso o el uso de memoria
compartida.

Mtodos de Autenticacin

Auth: Solicita y verifica la validez de una contrasea


118
Account: verifica que sea el acceso permitido, por ejemplo verificar que la cuenta
no haya sido caducada, o que el usuario tenga los permisos para iniciar sesin. o
Password: se usa para establecer y verificar contrasea.

Session: esta interfaz del mdulo configura y administra las sesiones de usuario,
los mdulos con esta interfaz tambin pueden realizar tareas adicionales que son
requeridas para permitir acceso, como el montaje de directorios principales de
usuarios.

Contraseas

Las contraseas de Linux utilizan el algoritmo de cifrado de IBM Data


Encryption Standard (DES). Estas contraseas son de longitud fija de 8
caracteres. Pero, siempre que sea posible es preferible utilizar contraseas MD5.
MD5 es un algoritmo hash que mejora a DES en los siguientes aspectos: las
contraseas son de longitud infinita, permiten al inclusin de signos de puntuacin
y otros caracteres, y adems, es exportable fuera de Estados Unidos, ya que no
ha sido desarrollado por su gobierno.

Se almacenan, en principio, en el archivo /etc/passwd que debe tener


permisos 644. Por seguridad y, dado que es necesario mantener la lectura sobre
este archivo, se utilizan las shadows passwords y, en este caso, las contraseas
se almacenan en el archivo /etc/shadow con permisos 600, es decir sin lectura
para el grupo y los otros. De esta forma se impide que los usuarios normales
puedan ver las contraseas cifradas. El propietario de ambos archivos debe ser
root.

Como normas para la formacin de una contrasea se puede decir que es


conveniente:

No utilizar nuestro nombre, apellidos o apodo.


No utilizar nombres de parientes o amigos.
No seleccionar una contrasea en la que se repita la misma letra o dgito.

119
Utilizar una contrasea con 8 o ms dgitos.
Utilizar mezclas de letras maysculas y minsculas.
Utilizar algn carcter no alfabtico, como signos de puntuacin.
Utilizar contraseas fciles de memorizar, y no escribirlas en ningn sitio.
Utilizar contraseas que se puedan escribir rpidamente, por si alguien nos
vigila.

Aunque la incorporacin de las shadows paswords introduce un nivel de


seguridad en el sistema, es necesario que los usuarios sean rigurosos al
asignarse contrasea y no utilicen la ms sencilla y fcil de recordar.

Figura 9.1. Software de seguridad

9.2 Proteccin

Los problemas de la proteccin de linux

La complejidad de las amenazas en un entorno multiplataforma se ve


agravada por los desafos tcnicos que supone proveer una proteccin fiable para
los entornos Linux. Las tres cuestiones tcnicas destacables son el escaneado en
acceso, los diferentes kernel y la personalizacin del sistema.

120
Escaneado en acceso

El escaneado en demanda y el escaneado programado ya no son


suficientes para proteger los sistemas Linux. Las amenazas actuales pueden
propagarse a travs de la red en cuanto se accede a un archivo infectado, ya sea
por accin directa del usuario o desde alguna funcin automtica del sistema. Por
esta razn, el escaneado en acceso es vital. No obstante, proporcionar escaneado
en acceso para Linux ha sido histricamente una tarea compleja, incmoda y
engorrosa, puesto que el programa antivirus debe conectarse directamente al
kernel del sistema.

Figura 9.2. Otorgando permisos de usuario

CAPTULO 10. DISCUSIN SOBRE LAS TENDENCIAS

10.1 Linux en Venezuela

Los beneficios de la aplicacin del Software Libre en Venezuela son:

121
Razones Econmicas: Ahorros importantes al liberarse del pago de licencias y
especialmente por la replicacin casi gratuita de aplicaciones comunes a toda la
administracin pblica. El muy bajo costo del software permitir la ejecucin de
programa.

Independencia Tecnolgica: El Estado deja de depender de terceros (a menudo


transnacionales) para el diseo, desarrollo y mantenimiento de sus sistemas de
informacin, retomando el control total de sus procesos, en particular de los
procesos crticos y de alta importancia estratgica para el pas.

Control de la Informacin: El acceso al cdigo fuente, la libertad de inspeccionar


el funcionamiento del software, la libertad de decidir la manera en que almacenan
los datos y la posibilidad de modificar cualquiera de estos aspectos queda en
manos del Estado, lo cual le permite el control total de la informacin y por
consiguiente el ejercicio de la Soberana Nacional.

Confiabilidad y Estabilidad: El software libre realizado por comunidades est


sometido a la inspeccin de un importante nmero de personas, este nmero de
verificadores es mucho mayor que el del software propietario. Estas personas
identifican los problemas, los resuelven, y comparten las soluciones con los
dems. Por tal razn los programas libres de las comunidades gozan de gran
confiabilidad y estabilidad.

Seguridad: La informacin que el Estado maneja generalmente es importante y/o


confidencial, puede ser muy peligroso que esta informacin caiga en manos
incorrectas. Por esta razn es imprescindible que el Estado pueda verificar que su
software no tenga puertas de entrada traseras, voluntarias o accidentales, y que
pueda cerrarlas en caso de encontrarlas; tal control slo es posible con el software
libre.

Desarrollo Pas: Se genera Transferencia Tecnolgica hacia los actores


nacionales productores de software, acelerando el Desarrollo Endgeno y
reforzando la Soberana Nacional.

122
El Ministerio del poder Popular para Ciencia, Tecnologa e Industrias
Intermedias cre el portal www.sotwarelibre.gob.ve, del Gobierno Bolivariano de
Venezuela, con la finalidad de mantener a la poblacin venezolana, interesada en
este tema, informada con temas de actualidad, links a instituciones relacionadas,
programacin y cronograma de actividades relacionadas con el Plan Canaima,
entre otras.

El pasado 14 de marzo de 2010 se public en la Gaceta Oficial N 39633 la


resolucin 025, la cual establece el uso OBLIGATORIO de Canaima GNU/Linux
en los equipos de trabajo en la Administracin Pblica Nacional (APN).
Resolucin mediante la cual se establece el uso de Canaima GNU/Linux como
sistema operativo de Software Libre en las estaciones de trabajo de los rganos y
Entes de la Administracin Pblica Nacional de la Repblica Bolivariana de
Venezuela, con el propsito de homogeneizar y fortalecer la plataforma
tecnolgica del Estado Venezolano.

CANAIMA GNU/LINUX es un sistema operativo libre (derivado de Debian)


creado por venezolanos dirigido a todos los usuarios y usuarias de sistemas
computacionales. Este sistema contiene muchas aplicaciones destinadas a
satisfacer la mayor parte de necesidades comunes del ser humano en materia
computacional.

El Proyecto Canaima est compuesto por un grupo heterogneo de


participantes provenientes de diferentes instituciones pblicas y particulares,
activistas del Software Libre y ciudadanos en general. Su desarrollo es abierto y
busca sumar a la mayor cantidad posible de colaboradores y desarrolladores.
Entre las instituciones que participan o han participado en el desarrollo,
organizacin e impulso de CANAIMA GNU/LINUX estn: CNTI, VENEZOLANA DE
INDUSTRIA TECNOLGICA, COVETEL, CANTV, ONUVA, FIDETEL, CENDITEL,
FUNDACITE, CVG EDELCA, GLOBAL KNOWLEDGE, entre otras.

123
El Plan Canaima Educativo se basa en la entrega de computadoras a
alumnos de las distintas unidades educativas del pas, con la finalidad de
democratizar las tecnolgicas que se estn aplicando en la actualidad y llevarlas al
alcance de todos.

10.2 Decreto 3390

Con la finalidad de facilitar la interoperabilidad de los sistemas de


informacin del Estado contribuyendo a dar respuestas rpidas y oportunas a los
ciudadanos, el Gobierno Bolivariano de Venezuela bajo el decreto N 3.390,
publicado en Gaceta Oficial N 38.095 el 28 de diciembre del ao 2004 expresa en
su art. 1: La Administracin Pblica Nacional empleara prioritariamente Software
Libre desarrollado con estndares abiertos, en sus sistemas, proyectos y servicios
informticos. A tales fines, todos los organismos y entes de la Administracin
Pblica Nacional iniciarn los procesos de migracin gradual y progresiva de estos
hacia Software Libre desarrollado con estndares abiertos

10.3 Ley de Infogobierno

El objeto de esta Ley es establecer "los principios, bases y lineamientos que


rigen el uso de las tecnologas de informacin en el Poder Pblico y el Poder
Popular, para mejor la gestin y los servicios que se prestan a las personas".

Uno de sus fines es facilitar las relaciones entre el Poder Pblico y los
ciudadanos, a travs de las tecnologas de informacin, por lo que la norma
garantizar el acceso del pueblo a la informacin en sus roles de contralor y
usuario.

124
La nueva Ley establece que todo programa informtico que se desarrolle,
adquiera o implemente en el Poder Pblico deber ser software libre y con
estndares abiertos, salvo las excepciones expresamente establecidas y previa
autorizacin del ente competente, a fin de promover el desarrollo nacional y
garantizar la soberana tecnolgica.

En el quinto artculo, sobre las definiciones, se aclara que el software libre


es un "programa de computacin en cuya licencia el autor o desarrollador
garantiza al usuario el acceso al cdigo fuente y lo autoriza a usar el programa con
cualquier propsito, copiarlo, modificarlo y redistribuirlo con o sin modificaciones
preservando en todo caso el derecho moral al reconocimiento de autora".

La norma fue redactada por la Comisin de Ciencia, Tecnologa e


Innovacin de la Asamblea Nacional, con la participacin de la comunidad de
software libre a travs de un ejercicio democrtico en el que se establecieron
varias mesas de trabajo en las principales ciudades del pas.

10.4 Cuotas de mercado

Numerosos estudios cuantitativos sobre software de cdigo abiertoestn


orientados a temas como la cuota de mercado y la fiabilidad, y ciertamente
muchos de estos estudios examinan especficamente a GNU/Linux.

La medicin "cuota de mercado" puede resultar inservible ya que es un


concepto basado en ventas comerciales (unidades materiales vendidas). Por otro
lado Linux es utilizado frecuentemente en servidores con acceso pblico desde
Internet por lo que la cuota de mercado es extremadamente inferior a la cuota de
uso. Baste notar, p.ej, que Facebook, Gmail, LinkedIn o Yahoo funcionan sobre
servidores GNU/Linux, de forma que an cuando estemos accediendo desde un
navegador ejecutndose en Windows/Mac, la aplicacin real se est ejecutando

125
en servidores Linux y los datos estn almacenndose igualmente en dichos
servidores.

Hay varias empresas que comercializan soluciones basadas en GNU/Linux:


IBM, Novell (SuSE), RedHat (RHEL), Mandriva (Mandriva Linux), Rxart, Canonical
Ltd. (Ubuntu), as como miles de PYMES que ofrecen productos o servicios
basados en esta tecnologa.

Figura 10.1 Uso de sistemas operativos por versin a nivel global (abril a septiembre de 2015)

126
Figura 10.2 IBM Roadrunner, la supercomputadora ms potente de 2008, funciona bajo una
distribucin GNU/Linux Red Hat Enterprise Linux.

10.5 Comparacin de Linux con otros Sistemas Operativos

En la siguiente tabla se muestra las caractersticas comparativas ms


importantes de Linux con otros sistemas operativos

127
Captulo 11. Distribucin Canaima GNU/Linux

11.1 Antecedentes

El proyecto Canaima es producto de un contrato firmado entre la Repblica


Bolivariana de Venezuela y la Republica de Portugal, tras visita del presidente a la
nacin ibrica en el ao 2008,en la cual se acord la adquisicin a de 350 mil
computadoras porttiles para la nias y noos venezolanos. El proyecto va dirigido
a estudiantes de educacion primaria y comenz aplicarse en las aulas desde el 16
de septiembre del 2009. con estudiantes de primer grado progresivamente se irn
incorporando el resto de los grados escolares.

Este cuenta con 66 contenidos con pertinencia curricular (entre videos,


juegos didcticos interactivos y software educativos) para el primer trimestre del
ao escolar, 54 para el segundo trimestre y 30 para el tercero. Son suficiente para
que el docente tenga libertad de escoger en funcin de la realidad local capacidad
de los estudiantes y objetivos de la clase. Todos los contenidos han sido
adecuados y/o desarrollados, evaluados y validados por docentes de primer grado
de todo el pas. Se est trabajando en la instalacin de cetros de desarrollo de
contenidos educativos que logren compilar los saberes y contribuciones de las
distintas regiones del pais.

Portugal:Convenio para la fabricacin de 250.000 computadores


Magallanes para ser distribuidos en escuelas pblicas.
Sun Microsystem:para la certificacin de Canaima en equipos de dicho
fabricante.
VIT:Venezolana de Industrias Tecnolgicas, empresa mixta entre el estado
venezolano y empresarios chinos en la cual se establece el uso de
Canaima en los equipos que estos fabriquen.

128
Lenovo:para la certificacin de equipos de dicho fabricante para el uso de
Canaima.
Siragon: ensamblador venezolano de equipos de informticas, convenio
mediante el cual se certifica Canaima para dichos equipos.

Tiempo despus toma sentido y comienza a verse como un proyecto socio-


tecnolgico abierto, construido de forma colaborativa, centrado en el desarrollo de
herramientas y modelos productivos basados en las Tecnologas de Informacin
Libres (TIL) de software y sistemas operativos cuyo objetivo es generar
capacidades nacionales, desarrollo endgeno, sentido de pertinencia y promocin
del libre conocimiento, sin perder su motivo original que es"La Construccin de
una Nacin Venezolana Tecnolgicamente Preparada".

As como tambin se le da a conocer como una importante herramienta que


mejora la motivacin estudiantil de los educandos y enriquece el proceso de
formacin acadmica, adems de que refuerza el papel educativo de los docentes
en los ambientes de clases, gracias a su amplio contenido pedaggico.

Es importante sealar algunas desventajas que se presentan en este


importante proyecto, como por ejemplo, slo esta disponible en versin DVD (ya
se est trabajando en versiones ligeras que corran en CD), la poca publicidad que
se le di a tan importante hecho, poca receptividad en algunos sectores debido a
la falta de conocimiento o el rechazo al cambio, se han reportado algunos errores
en la versin estable los cuales estn siendo corregidos y la poca diversidad de
software o programas de acceso comn para los Venezolanos.

Cabe destacar que es mayor el nmero de ventajas que Posee este


proyecto, entre las mas importantes se mencionan que es totalmente desarrollada
en Software Libre, se encuentra equipado con herramientas ofimticas como
OpenOffice.org, (procesador de textos, hojas de clculo, presentaciones), diseo
grfico, planificacin de proyectos y bases de datos, permite la interaccin con
Internet, a travs de su navegador web, gestor de correo electrnico y
aplicaciones para realizar llamadas telefnicas por la red, es estable y segura,
129
basada en la versin estable de GNU/Linux Debian, la cual pasa por una serie de
procesos y pruebas rigurosas de calidad, prcticamente libre de virus informticos,
Costo nulo por pago de licencias, Realizada en Venezuela por talento nacional.

Hablando un poco del funcionamiento del proyecto se dice que es el primer


paso de un nuevo modelo educativo que empieza a surgir en Venezuela. Con el
uso de las Tecnologas de la Informacin y la Comunicacin (TIC's), los
estudiantes tienen la oportunidad de convertirse en exploradores del conocimiento,
descubriendo fascinantes contenidos mediante aplicaciones que abordan
temticas de forma universal, bajo un enfoque interdisciplinario. El modelo
educativo que se pretende es uno donde el nio, en un ambiente de clases,
comparte con sus compaeros la experiencia y el conocimiento, adems de
compartir con el docente la adquisicin de ese conocimiento, porque el mismo
docente es parte del proceso de formacin y estar aprendiendo en ese proceso.
Los nios, estarn conectados en lo que sera una especie de red
extraescolar, mientras que el profesor, adems de supervisar lo que cada uno de
sus estudiantes est viendo en la computadora, tambin podr explicar de forma
pedaggica los contenidos educativos. Todo esto aparte de la inclusion de la
familia en el proceso continuo de aprendizaje que desarrollan los educandos, esto
quiere decir que los mismos tendrn la oportunidad de llevar las computadoras a
sus hogares para de esta manera involucrar a quienes en el pasado no tuvieron el
privilegio de formar parte de un proyecto tan exitoso como CANAIMA.

Canaima es una distribucin GNU/Linux venezolana basada en Debian


surgida como consecuencia del decreto presidencial 3.3901sobre el uso de
tecnologas libresen la Administracin Pblica Nacional (APN) venezolana,
promulgado por el Presidente Hugo Chvez Fras. El 14 de marzo de 2011 en la
Gaceta Oficial N 39.6332se establece como sistema operativo para las
estaciones de trabajo de la APN.

El uso de Canaima GNU/Linux es frecuente en las escuelas pblicas


venezolanas,3por ser utilizada en el Proyecto Canaima Educativo, el cual que

130
busca dotar a ms de 250 mil alumnos nios en edad escolar4concomputadores
porttiles Magallanesy su caso de uso ha sido presentado en congresos
internacionales sobre el uso de estndares abiertos,5y a pesar de su reciente
desarrollo ha sido utilizada en el Festival Latinoamericano de Instalacin de
Software Libre(FLISOL)6donde ha sido instalada en los equipos de muchos
usuarios.

Aunque se hace referencia a esta distribucin como Software Libre, en


realidad no es considerada como tal por la Free Software Foundation, debido a
que incluye algunos componentes privativos, como los controladore snecesarios
para que funcionen ciertas piezas de hardware en algunos equipos informticos.
Los creadores de Canaima optaron por incluir estos controladores privativos en la
distribucin, con el fin de hacerla compatible con la mayora de los computadores
en uso por el Estado Venezolano y facilitar la migracin hacia esta distribucin
GNU/Linux.

11.2 Programas de Sistemas

Como otras distribuciones, Canaima GNU/Linux posee aplicaciones


diversas para llevar a cabo tareas de ofimtica, entretenimiento, desarrollo y
configuracin de todo el sistema. Su interfaz predeterminada esGNOME. Existen
otras versiones extraoficiales mantenidas por la comunidad, con diferentes
escritorios, como XFCE.

Ofimtica:
o suite de oficina LibreOffice, con los siguiente mdulos:
Procesador de textos
Hoja de clculo
Generador de Presentaciones
Generador de frmulas matemticas y software de dibujo
o Gestin de proyectos:Planner
o Editor de HTML.

131
Siguiendo la tendencia impuesta por otras organizaciones que realizan
distribuciones GNU/Linux, desde la versin 3, LibreOffice sustituy a
OpenOffice.orgy a partir de la versin 3.1 deja de ser incorporado el gestor debase
de datosde esta suite de oficina.

Internet:
o Navegador web: Cunaguaro, basado en Iceweasel, presente desde
la versin 3.0 de Canaima y que sustituye al navegador Curiara.
o Cliente de correo electrnico: Gucharo.8
o Cliente de mensajera instantnea: Pidgin.9
o ClienteTwitter: Turpial.10

Grficos:
o Libreoffice Draw.
o GNU Paint.
o Editor de diagramas Dia.
o Gimp
o Inkscape
o Visor de cmara WebCheese.
o Shotwell Photo Manager.
o Software de escaneo de imgenesXsane.

Programacin:
o Quanta Plus.
o Eclipse.
o Anjuta:Entorno de desarrollo integradopara programar en
loslenguajes de programacin C,C++,Java,PythonyVala, en sistemas
GNU/LinuxyBSD.

132
11.3 Lanzamientos

Canaima GNU/Linux es una distribucin de la cual se han generando


versiones peridicamente en los ltimos aos. La tabla 6, siguiente detalla los
lanzamientos de cada versin.

Versin Nombre en clave Fecha de lanzamiento

1.0 Canaima 18 de octubre de 2007; hace 7 aos

2.0 Canaima 5 de febrero de 2009; hace 6 aos12

2.0.1
Canaima 16 de abril de 2009; hace 6 aos13
RC1

2.0.1 Canaima 15 de mayo de 2009; hace 6 aos14

2.0.2 Canaima 22 de mayo de 2009; hace 6 aos

2.0.3 Canaima 3 de julio de 2009; hace 6 aos15

2.0.4 Canaima 17 de octubre de 2009; hace 5 aos

2.1 RC Canaima 21 de mayo de 2010; hace 5 aos16

3.0 RC Roraima 10 de febrero de 2011; hace 4 aos17

3.0 RC2 Roraima 22 de febrero de 2011; hace 4 aos18

3.0 Roraima 5 de mayo de 2011; hace 4 aos

3.1 VC1 Auyantepui 29 de diciembre de 2011; hace 3 aos19

3.1 VC2 Auyantepui 6 de julio de 2012; hace 3 aos20

3.1 VC3 Auyantepui 18 de julio de 2012; hace 3 aos21

3.1 Auyantepui 14 de noviembre de 2012; hace 2 aos22

4.0 Kerepakupai 04 de diciembre de 201323

4.1 Kukenn 04 de septiembre de 2014

133
5 21 Julio 2015

Color Significado

Rojo Versin antigua; no soportada.

Amarillo Versin antigua; aun soportada.

Verde Versin actual; con soporte.

Azul Versin futura en desarrollo.

11.4 Ciclo de desarrollo

La comunidad canaima est conformada por un gran nmero de personas que


tienen intereses comunes y que comparten un mismo espacio virtual conformado
por una serie de herramientas y servicios condensados en una plataforma pblica.
stos actores provienen de distintas organizaciones y colectivos, a saber: el CNTI,
Instituciones Pblicas en general, Unidades Productivas, Cooperativas, Empresas
Privadas, Activistas Sociales y Usuarios en general. ste conjunto de personas
poseen una dinmica propia, caracterstica de sus realidades particulares; sin
embargo, es posible diferenciar un ciclo que se ejecuta cada vez que se publica
una nueva versin de Canaima GNU/Linux.

134
Figura 11.1. Etapas de Desarrollo Canaima

Las etapas de desarrollo iniciales de un producto son locales e involucran


casi cualquier elemento que al desarrollador se le ocurra, en fin, es producto de un
proceso creativo que en mi opinin se acerca mucho al arte. Cuando tu proyecto
tenga una estructura ms o menos definida, es hora de versionarlo con gite ir
publicando tu cdigo; en sta etapa entra en juego forja.softwarelibre.gob.ve.

"La forja" es un espacio pblico donde puedes alojar proyectos de software


libre de una forma prctica y gratuita, bajo la plataforma de Canaima GNU/Linux y
usando un repositorio git.Crea un proyectoy ve publicando tu cdigo ah.

A medida que vas madurando y depurando tu cdigo, es buena idea ir


tambin trabajando en la debianizacin del paquete fuente para finalmente
generar el paquete binario congit-buildpackage. Haz sucesivas pruebas de
empaquetado con tu proyecto, y cuando llegues a un nivel en donde sea usable,
puedes solicitar a travs de lista de correo

135
desarrolladores@canaima.softwarelibre.gob.vepermisos suficientes en los
servidores de la Plataforma Canaima para subir tus paquetes a la rama de
desarrollo. En tu solicitud debes incluir:

1. Nombre del Paquete (Completo).


2. Descripcin de su utilidad.
3. Dependencias con otros paquetes.
4. Direccin del cdigo fuente.
5. Direccin del paquete .deb tal cual va a ser includo en los repositorios.

Una vez otorgados los permisos, puedes subir cuantas versiones


consideres, con la frecuencia que necesites. Est dems decir que cualquier
intento de violar la privacidad del usuario o de inyectar cdigo malicioso resultar
en una severa penalizacin. Cuando sientas que haz llegado a una versin estable
de tu paquete, es hora de inclurlo en la rama pruebas, para que el colectivo lo use
y ofrezca su retroalimentacin. El procedimiento es similar al anterior, realiza la
peticin de inclusin del paquete en la rama pruebas incluyendo la siguiente
informacin:

1. Nombre del Paquete (Completo).


2. Descripcin de su utilidad.
3. Dependencias con otros paquetes.
4. Direccin del cdigo fuente.
5. Direccin del paquete .deb tal cual va a ser includo en los repositorios.

Finalmente, cuando todos los objetivos establecidos en el mapa de ruta se


hayan cumplido, todos los paquetes de la rama pruebas sern pasados a estable,
generando as una nueva versin de Canaima. Los medios vivos instalables sern
generados a travs de canaima-semilla.

136
11.5 Cayapa Canaima

El trmino cayapa es parte de la tradicin indgena en Venezuela y se utiliza


para describir el proceso a travs del cual miembros de una comunidad trabajan
en forma cooperativa en una tarea, bien sea para satisfacer una necesidad
individual o colectiva.

Una de las actividades comunitarias que ha sido generada alrededor de


Canaima es la Cayapa en las cuales desarrolladores de software libre se renen
para proponer mejoras, corregir errores y otras; esta actividad en otros proyectos
son llamadas Bugs Squash Party.

Figura 11.2 Esquematizacin grfica de una Cayapa Canaima tcnica + divulgativa

137
11.6 Usos de Canaima GNU/Linux

Canaima Educativo

Es un proyecto iniciado en el ao 2009 por el Ministerio del Poder Popular


para la Educacin del gobierno de la Repblica Bolivariana de Venezuela que
consiste en proveer gratuitamente a los estudiantes de educacin bsica de un
computador, conocido popularmente como Canaimita, que tiene como sistema
operativo a Canaima GNU/Linux y una serie de contenidos educativos creados por
el Ministerio del Poder Popular para Educacin.

En el ao 2011 se entregaron 1.314.091 computadoras. En septiembre de


2012 se entreg la Canaimita nmero 2 millones. Hasta el 21 de marzo del ao
2013 se han entregado 2.452.337 Canaimitas a los nios que cursan Educacin
Primaria. Ms recientemente, el Gobierno de Venezuela inici la entrega 2,5
millones de computadoras a estudiantes de las instituciones pblicas
de bachillerato. En abril de 2014 ya se han entregado 3.300.000 computadoras
Canaima a nios y jvenes de educacin bsica y media.

En resumen, desde el ao 2009 hasta 2015 se han entregado 3.563.081


canaimitas.

CANTV

La empresa CANTV, vende computadoras dentro del Plan Internet


Equipado que incorporan a Canaima GNU/LInux como sistema operativo
preinstalado.

138
11.7 Ediciones

Existen diversas ediciones de Canaima mantenidas y reconocidas por activistas


de la comunidad, las cuales poseen lanzamientos no al mismo tiempo que
Canaima. Las ms significativas son:

Canaima Colibri: distribucin destinada a equipos con pocos recursos de


hardware.
Canaima Comunal: es una edicin para los computadores de los Consejos
Comunales que permite a estas organizaciones realizar el catastro de su
ubicacin geogrfica y articular su actividad con las instituciones y el
pueblo.
Canaima Caribay: distribucin usada en los equipos de los medios
comunitarios, que contiene herramientas para gestionar las emisoras de
radio comunitarias y para la produccin de material audiovisual e impreso
junto con tutoriales en forma de archivos de video.
GeoCanaima: distribucin que contiene aplicaciones de geomtica libre y
datos para poder realizar prcticas e interactuar con diversas aplicaciones
de escritorio, web, servidores y generadores de cartografa.
Canaima Forense: distribucin con un entorno destinado a la
interoperabilidad de aplicaciones de informtica forense.

11.8 Versiones

Ms all de haber desarrollado su propio cdigo y de integrar los cambios


realizados por otros programas, Linus Torvalds continua lanzando nuevas
versiones del ncleo Linux. Estos son llamados ncleos vanilla, lo que significa
que no han sido modificados por nadie.

139
Numeracin

La versin del ncleo Linux original constaba de cuatro nmeros. Por


ejemplo, asumiendo que el nmero de la versin est compuesta de esta forma:
A.B.C[.D] (ej.: 2.2.1, 2.4.13 2.6.12.3).

* El nmero A denota la versin del ncleo. Es el que cambia con menor


frecuencia y solo lo hace cuando se produce un gran cambio en el cdigo o en el
concepto del ncleo. Histricamente slo ha sido modificado cuatro veces: en
1994 (versin 1.0), en 1996 (versin 2.0), en 2011 (versin 3.0) y en 2015 (versin
4.0).

* El nmero B denota la subversin del ncleo.

Antes de la serie de Linux 2.6.x, los nmeros pares indicaban la versin


estable lanzada. Por ejemplo una para uso de fabricacin, como el 1.2, 2.4 2.6.
Los nmeros impares, en cambio, como la serie 2.5.x, son versiones de desarrollo,
es decir que no son consideradas de produccin.

140
Comenzando con la serie Linux 2.6.x, no hay gran diferencia entre los
nmeros pares o impares con respecto a las nuevas herramientas desarrolladas
en la misma serie del ncleo. Linus Torvalds dictamin que este ser el modelo en
el futuro.

* El nmero C indica una revisin mayor en el ncleo. En la forma anterior de


versiones con tres nmeros, esto fue cambiado cuando se implementaron en el
ncleo los parches de seguridad, bugfixes, nuevas caractersticas o drivers. Con la
nueva poltica, solo es cambiado cuando se introducen nuevos drivers o
caractersticas; cambios menores se reflejan en el nmero D.

* El nmero D se produjo cuando un grave error, que requiere de un arreglo


inmediato, se encontr en el cdigo NFS de la versin 2.6.8. Sin embargo, no
haba otros cambios como para lanzar una nueva revisin (la cual hubiera sido
2.6.9). Entonces se lanz la versin 2.6.8.1, con el error arreglado como nico
cambio. Con 2.6.11, esto fue adoptado como la nueva poltica de versiones. Bug-
fixes y parches de seguridad son actualmente manejados por el cuarto nmero
dejando los cambios mayores para el nmero C.

Tambin, algunas veces luego de las versiones puede haber algunas letras
como rc1 o mm2. El rc se refiere a release candidate e indica un lanzamiento
no oficial. Otras letras usualmente (pero no siempre) hacen referencia a las
iniciales de la persona. Esto indica una bifurcacin en el desarrollo del ncleo
realizado por esa persona, por ejemplo ck se refiere a Con Kolivas, ac a Alan Cox,
mientras que mm se refiere a Andrew Morton.

El modelo de desarrollo para Linux 2.6 fue un cambio significativo desde el


modelo de desarrollo de Linux 2.5. Previamente exista una rama estable (2.4)
donde se haban producido cambios menores y seguros, y una rama inestable

141
(2.5) donde estaban permitidos cambios mayores. Esto signific que los usuarios
siempre tenan una versin 2.4 a prueba de fallos y con lo ltimo en seguridad y
casi libre de errores, aunque tuvieran que esperar por las caractersticas de la
rama 2.5. La rama 2.5 fue eventualmente declarada estable y renombrada como
2.6. Pero en vez de abrir una rama 2.7 inestable, los desarrolladores de ncleos
eligieron continuar agregando los cambios en la rama estable 2.6. De esta forma
no haba que seguir manteniendo una rama vieja pero estable y se poda hacer
que las nuevas caractersticas estuvieran rpidamente disponibles y se pudieran
realizar ms pruebas con el ltimo cdigo.

Sin embargo, el modelo de desarrollo del nuevo 2.6 tambin signific que
no haba una rama estable para aquellos que esperaban seguridad y bug fixes sin
necesitar las ltimas caractersticas. Los arreglos solo estaban en la ltima
versin, as que si un usuario quera una versin con todos los bug fixed
conocidos tambin tendra las ltimas caractersticas, las cuales no haban sido
bien probadas. Una solucin parcial para esto fue la versin ya mencionada de
cuatro nmeros (y en 2.6.x.y), la cual significaba lanzamientos puntuales creados
por el equipo estable (Greg Kroah-Hartman, Chris Wright, y quizs otros). El
''equipo estable'' solo lanzaba actualizaciones para el ncleo ms reciente, sin
embargo esto no solucion el problema del faltante de una serie estable de
ncleo. Distribuidores de Linux, como [[Red Hat]] y [[Debian]], mantienen los
ncleos que salen con sus lanzamientos, de forma que una solucin para algunas
personas es seguir el ncleo de una distribucin.

Como respuesta a la falta de un ncleo estable y de gente que coordinara la


coleccin de correccin de errores, en diciembre de 2005 Adrian Bunk anunci
que continuara lanzando ncleos 2.6.16 aun cuando el ''equipo estable'' lanzara
2.6.17. Adems pens en incluir actualizaciones de controladores, haciendo que el
mantenimiento de la serie 2.6.16 sea muy parecido a las viejas reglas de
mantenimiento para las serie estables como 2.4. El ncleo 2.6.16 ser

142
reemplazado prximamente por el 2.6.27 como ncleo estable en mantenimiento
durante varios aos.

Dado el nuevo modelo de desarrollo, que mantiene fija la subversin de 2.6,


tras durante el Linux Kernel Summit de ese ao, Linus Torvalds decidi modificar
el sistema de numeracin, sustituyendo los dos primeros nmeros por una nica
cifra, de forma que Linux 2.6.39 fue seguida por Linux 3.0.

Figura 11.4Significado de la numeracin del ncleo Linux

143
CONCLUSION

Hay muchas razones para utilizar GNU/Linux:

econmicas: es gratuito
privacidad: los programas de GNU/Linux no recopilan informacin sobre
nuestros gustos, historial de navegacin,... para envirsela a terceras
empresas
seguridad: no se ve afectado por los virus
robustez: mucho ms estable que los sistemas Windows
funcionalidad: con las actuales versiones de GNU/Linux, tenemos los
programas equivalentes a cualquier distribucin comercial. Adems, existen
aplicaciones cientficas disponibles slo para GNU/Linux.
desarrollo: GNU/Linux cuenta con numerosas herramientas para el
desarrollo de programas. No en vano es un sistema operativo hecho por
expertos en Informtica.

Canaima GNU/Linux, facilita la interaccin con Internet a travs de su navegador


Web, gestor de correo electrnico y aplicaciones para realizar llamadas telefnicas
por la red. Es segura, adems est basada en la versin estable de Debian
GNU/Linux, la cual pasa por una serie de procesos y pruebas rigurosas de calidad.
Realizada en Venezuela por talento nacional .

144
BIBLIOGRAFA

Almera, U. d. (s.f.). Gestin de memoria. Recuperado el 12 de


septiembre de 2015, de http://www.ual.es/~acorral/DSO/Tema_3.pdf

es.slideshare.net. (2010, Septiembre 26). El sistema operativo 1.


Retrieved 08 25, 2015, from http://es.slideshare.net/tecnojulio/el-
sistema-operativo-1

es.wikipedia.org. (n.d.). Memoria_secundaria. Retrieved agosto 25,


2015, from https://es.wikipedia.org/wiki/Memoria_secundaria

es.wikipedia.org/wiki/Gestin_de_memoria. (n.d.). Gestin de memoria.


Retrieved agosto 2015, 25, from
https://es.wikipedia.org/wiki/Gestin_de_memoria

Len, L. R. (2012, agosto 20). Un testimonio del paro petrolero de 2002.


Retrieved agosto 23, 2015, from http://codigosur.org/article/un-
testimonio-del-paro-petrolero-de-2002/

Martnez, P. (2014, enero 06). Artculo para La Gaceta de los negocios:


"Bitcoin: pasado, presente y futuro". Retrieved agosto 2015, 20, from
http://pablomartinezb.com/2014/01/06/articulo-para-la-gaceta-de-los-
negocios-bitcoin-pasado-presente-y-futuro/

Ministerio del Poder Popular para Educacin Universitaria, C. y. (2008).


RENA. Retrieved Abril 28, 2015, from Red Escolar Nacional:
http://www.rena.edu.ve/cuartaEtapa/metodologia/titulo.html

Plauchu, E. (s.f.). Administracin de Memoria en Linux. Recuperado el


12 de septiembre de 2015, de
https://eplauchu.wordpress.com/2013/07/17/administracion-de-memoria-
en-linux/

Rodrguez, T. Y. (2008, noviembre 27). EL SOFTWARE LIBRE Y SU


USO EN LA ADMINISTRACIN PBLICA. Retrieved agosto 23, 2015,
from
http://www.mnve.mil.ve/web/index.php?option=com_content&view=articl

145
e&id=107:el-software-libre-y-su-uso-en-la-administracion-
publica&catid=23

Rodriguez, C. M. (31 de octubre de 2012). Gestion de memoria en linux.


Recuperado el 10 de septiembre de 2015, de
http://es.slideshare.net/chriztOpheer/gestion-de-memoria-en-linux

Sevilla, U. d. (n.d.). Componentes bsicos de un sistema operativo.


Retrieved from https://1984.lsi.us.es/wiki-
ssoo/index.php/Componentes_b%C3%A1sicos_de_un_sistema_operati
vo

Silberschatz, A., Galvin, P., & Gagne, G. (2006). Fundamentos de


sistemas operativos. Madrid: McGraw-Hill/Interamericana

146

Você também pode gostar