El paper tiene la informacion necesaria sobre el SO Linux, cono sus ventajas, desventajas, planificacion, estados paginacion, gestion de archivos, seguridad, etc.
1. UTPL. Sistema Operativo Linux
.
1
Sistema Operativo LINUX
Carlos Xavier Hidalgo Paredes cxhidalgo@utpl.edu.ec
Miguel Ángel Herrera Díaz mahdiaz@utpl.edu.ec
Miguel Danilo Diaz Aponte mddiaz@utpl.edu.ec
Jefersson Morillo Castillo jamorillo1@utpl.edu.ec
Escuela de Ciencias de la Computación
Loja, Ecuador
RESUMEN: El presente documento tiene la
intención de dar una breve explicación de todos los
temas relacionados con el Sistema Operativo Linux,
donde ha tenido un gran impacto en la industria de la
informática resaltando de él la seguridad y fiabilidad que
este presenta en su uso, por eso la NASA y otras
Entidades Gubernamentales lo prefieren a la hora de
usarlos como servidores de cualquier tipo de servicios.
PALABRAS CLAVES: Linux, informática,
distribuciones, impacto, seguridad, archivos,
interrupciones, fiabilidad, servidores. Rendimiento,
memoria, gestión.
1 INTRODUCCIÓN
El sistema operativo Linux hoy en día se encuentra ya
con muchas distribuciones, lo que puede hacer que un
usuario sin experiencia se encuentre indeciso a la hora
de elegir la distribución que mejor se adapte a sus
necesidades.
2 CONTENIDOS
2.1 ¿Qué es LINUX?
Figura 01. LINUX Imagen tomada de:
http://digitalpcpachuca.blogspot.com/2012/03/sistema-
operativo-linux.html
Una distribución en Linux es un sistema operativo que
reúne todo un software para poner a un ordenador a
punto de uso, además están formado por un núcleo del
sistema, que son programas que controlan cada uno de
los dispositivos del ordenador, como por ejemplo
NESTCAPE,CORELDRAW O STARTOFFICE.
1
Linux o más bien GNU/Linux es un potente y completo
sistema hecho dependiendo a tus necesidades
operativas, que combina la seguridad y la eficiencia a la
hora de usar recursos del PC. Su uso es bastante amplio
en la industria; va desde usarlo como Sistema Operativo
de una PC de Hogar hasta un poderoso simulador de la
NASA. Y todo esto a pesar que es Libre y Linux ha
incursionado en el mundo de los dispositivos móviles su
desarrollo es a través de muchas personas y empresas
que donan gracias a Android Inc. ahora propiedad de
Google que desde su tiempo, capacidad y recursos para
desarrollar se encargaron de hacer modificaciones a
Linux y adaptarlos a móviles.
2.2 Principales ventajas y desventajas de
LINUX
VENTAJAS:
o Es totalmente Gratuito y aunque posea
versiones de paga, es aún más barato que
comprar Windows.
o Tienen muchos programas muy útiles y que lo
puedes encontrar muy fácilmente en internet.
o Un punto muy importante es la seguridad,
los Hackers y/o creadores de virus rara vez
atacan a Software de Linux.
o Se lleva bien en el arranque en conjunto con
Windows.
o Carga y realiza tareas con mayor eficiencia que
Windows.
o La constante actualización y nuevas versiones
es asombrosa. Existen infinidades de
Distribuciones de Linux.
DESVENTAJAS:
1
Diseño gráfico, desarrollo web y software libre consulta realizada
de :http://dglibre.com/2008/09/14/distribuciones-linux-para-
disenadores-graficos/
2. UTPL. Sistema Operativo Linux
.
2
o El origen técnico de Linux aún se percibe; antes
de que puedas creerlo, estarás abriendo una
“Terminal” de Linux y escribiendo comandos.
Algo que nunca harías con Windows.
o No es muy común su uso en Compañías, por lo
que generalmente se usa para trabajar desde
Casa, así que debes hacer ajustes laboriosos.
o A la hora de trabajar con documentos de
Windows complejos, se podría convertir en una
tareas difícil o casi imposible debido a la poca
compatibilidad para importar desde Windows
para Linux.
o Instalar controladores de Hardware y
programas resulta ser más complicado que en
Windows. Esto debido a que las empresas
creadoras de controladores crean sus
productos en base a Windows, el sistema
operativo más usado a nivel mundial.
o Muchos juegos no se ejecutan en Linux así que
olvídate de grandes Gráficos y poner a trabajar
tu tarjeta de video al máximo. Claro existen sus
excepciones.
2.3 ¿Qué Distribuciones tiene Linux?
Figura 02.Distribuciones de Linux
http://nexolinux.com/tag/noticias-linux/
A continuación se detallan las diferentes distribuciones
que existen:
o Suse, Red Hat, Conectiva estas se atreven a
sacar distribuciones pre configuradas que
realizan distintos tipos de tareas, tales como
servidor de correo, servidor web, almacenar
datos, etc. y que poseen una gran cantidad de
aplicaciones.
o DISTRIBUCIONES PROFESIONALES: son
distribuciones utilizadas por programadores
experimentados, dirigidas a desarrolladores de
aplicaciones y profesionales informáticos con
experiencia. Es el caso de las distribuciones
Slackware, Gentoo o Debian, tres
distribuciones en las cuales el profesional
configura el sistema a su medida optimizando
sus programas.
o Distribuciones a la carta: distribuciones de
carácter específico, es decir, creadas con
objetivos concretos y con propósitos
determinados. Es el caso de Lliurex,
Guadalinux o Linex, que tienen por finalidad la
promoción del desarrollo de software libre y la
utilización de esa tecnología para la educación
y formación en la cultura del software libre.
o Distribuciones auto arrancables: son
distribuciones preinstaladas en un CD normal,
que no necesitan copiar ningún programa en el
disco duro del ordenador. Utilizan
distribuciones como Knoppix, Kurumin o
Gentoo que son ejemplos de este tipo de
distribución.
o Distribuciones para el “gran público”:
distribuciones que se ofrecen a las personas
que necesitan herramientas en su trabajo, por
ejemplo, paquetes de ofimática, reproductores
multimedia, entre otras aplicaciones que se
usan por un usuario. Entre las que encontramos
según el criterio del autor Nicola Pons, del libro
“LINUX principios básicos del uso del sistema”:
2
o Entre estas distribuciones cuentan con las
siguientes características :
o Mandriva: Su instalador es uno de los más
amigables que existen. Cuenta con repositorios
tanto oficiales como no oficiales, además de los
paquetes incluidos en el CD/DVD.
o Fedora: Fedora trata de ser el líder en el
ámbito de usar software libre y código abierto.
o Prefieren hacer cambios en las fuentes que
aplicar un parche específico para su
distribución, de esta forma se asegura que las
actualizaciones estén disponibles para todas
las variantes de Linux
o Distribuciones móviles: Este tipo de
distribuciones no se cargan en memoria RAM
sino solo de un dispositivo USB, entre las que
nombramos:
2
Nicola Pons, autor del libro “LINUX principios básicos del uso del
sistema”:
2
3. UTPL. Sistema Operativo Linux
.
3
o Knoppix: Su arranque automático, tiene gran
cantidad de software, su sistema de
compresión al vuelo y la posibilidad de
instalarlo al disco duro han convertido a
knoppix en una herramienta indispensable.
o Linux Mint es una distribución basada en
Ubuntu, y es una de las alternativas más
potentes. Ofrece un escritorio actualizado y
cómodo, con Gnome, y muy atractivo. Presenta
muchas características de Ubuntu, como un
centro de software
2.4 Planificación SJF
Se basa en los ciclos de vida de los procesos, los cuales
transcurren en dos etapas o periodos que son: ciclos de
CPU y ciclos de entrada/salida, también conocidos por
ráfagas.
La palabra “shortest”, se refiere al proceso que tenga el
próximo ciclo de CPU más corto. La idea es escoger
entre todos los procesos listos el que tenga su próximo
ciclo de CPU más pequeño.
El SJF se puede comportar de dos formas:
o Con Desalojo: Si se incorpora un nuevo
proceso a la cola de listos y este tiene un ciclo
de CPU menor que el ciclo de CPU del proceso
que se está ejecutando, entonces dicho
proceso es desalojado y el nuevo proceso toma
la CPU.
o Sin desalojo: Cuando un proceso toma la
CPU, ningún otro proceso podrá apropiarse de
ella hasta que el proceso que la posee termine
de ejecutarse.
Características:
o Entra en la CPU el proceso con la ráfaga de
CPU más corta.
o Minimiza el tiempo de espera medio.
o Riesgo de inanición de los procesos de larga
duración.
o No es implementable. Se pueden estimar las
duraciones de los procesos, según su historia
reciente.
o Versión expulsiva (SRTF): el proceso en CPU
es desalojado si llega a la cola un proceso con
duración más corta.
2.5 Gestión de Procesos de Linux
o En Linux, la planificación de procesos se lleva a
cabo en la función schedule() . Aun así, existen
otras funciones que también están involucradas
en el reparto del tiempo de ejecución.
o El shell es un proceso y cada orden que
escribamos genera un nuevo proceso hijo del
shell. De hecho, en UNIX todos los procesos
son familia, ya que la única forma de crear un
nuevo proceso es generándolo como hijo de un
proceso existente. El proceso init es antecesor
de todos los demás
2.6 Ciclo de vida de un proceso Linux
Sabemos que un programa es una colección de
instrucciones y de datos que se encuentran
almacenados en un archivo que tiene en su inodo un
atributo que lo identifica como ejecutable. Puede ser
ejecutado por el propietario, por el grupo y por el resto
de los usuarios, dependiendo de los permisos que tenga
el archivo.
Cuando un programa es leído del disco (a través del
sistema de archivos) por el kernel y es cargado en
memoria para ejecutarse, se convierte en un proceso.
También debemos recordar que en un proceso no sólo
hay una copia del programa, sino que además el kernel
le añade información adicional para poder manejarlo.
2.7 Estados de ejecución en Linux
o En Ejecución (TASK_RUNNING): El proceso
es ejecutado por el procesador.
o Listo (TASK_RUNNING): El proceso podría
ser ejecutado, pero otro proceso se está
ejecutando en ese momento.
o Interumpible (TASK_INTERRUPTIBLE): Es
un estado de bloqueo, en el cual el proceso
espera un suceso, como la terminación de
una operación de entrada/salida, liberación
de un recurso o una señal de otro proceso.
o No interrumpible: Es otro estado de
bloqueo. La diferencia entre éste y el
estado Interumpible es que en un
estado No Interumpible, un proceso
espera directamente en una condición
de hardware y, por tanto, no acepta
señales.
o Parado (TASK_STOPPED): El proceso
ha sido detenido por una intervención
externa y sólo puede reanudarse por
una acción positiva de otro proceso.
o Zombie (TASK_ZOMBIE). El proceso ha
terminado pero, por alguna razón, su
estructura
3
task debe permanecer aún
en la tabla de procesos.
3
Corral, A. L. (s.f.). Universidad de Almería. Obtenido
de: http://www.ual.es/~acorral/DSO/Tema_2.pdf
4. UTPL. Sistema Operativo Linux
.
4
Figura 03. Diagrama de transición de estados de un
proceso en un sistema LINUX. Imagen tomada de:
http://www.ual.es/~acorral/DSO/Tema_2.pdf
2.8 Niveles de Ejecución
o Modo Kernel: (modo privilegiado). En este
modo no se impone ninguna restricción al
kernel del sistema. El kernel podrá:
o Utilizar todas las instrucciones del
procesador.
o Manipular toda la memoria.
o Dialogar directamente con todos los
controladores (drivers) de dispositivos.
o Modo usuario: Modo de ejecución normal de
un proceso. En este modo el proceso no posee
ningún privilegio.
o Ciertas instrucciones están prohibidas.
o Sólo tiene acceso a las zonas que se le
han asignado al proceso.
o No puede interactuar con la máquina
físicas (hardware).
o Sólo efectúa operaciones en su entorno,
sin interferir con los demás procesos.
o Puede ser interrumpido en cualquier
momento, pero esto no obstaculiza su
funcionamiento.
Recordemos también que un proceso que se ejecute en
modo usuario no puede acceder directamente a los
recursos de la máquina, para ello debe efectuar
“llamadas al sistema”.
2.9 Espacios de direcciones del sistema
Figura 04. Espacios de direcciones para un sistema
LINUX. Imagen tomada de:
http://www.slideshare.net/javymix/linux-ud7-gestion-de-
procesos
o Segmentos de texto: código de programa
o Segmentos de datos: variables globales y
estáticas
o Pila: Lo crea el kernel y su tamaño es
gestionado dinámicamente por él. Es una
secuencia de bloques lógicos o stack frames
o Un stack frame: se introduce o saca en función
de si se llama o se vuelve de la llamada a una
función
o Cada modo maneja su propia pila o stack
o Stack de kernel: contiene los stack frames
de las llamadas a sistema(funciones que
se ejecutan en modo kernel)
o Stack del usuario: stack frames de
funciones que se ejecutan en modo
usuario.
o Requiere de otro programa llamado
Planificador o “scheduler” que permite
gestionar que proceso entra a ejecutarse
en cada instante en la CPU, ya que esta es
un recurso limitado.
4
2.10 Comunicación y Sincronización de
procesos
Los medios de comunicación entre procesos (Inter-
Process Communication o IPC) de Linux proporcionan
un método para que múltiples procesos se comuniquen
unos con otros.
4
Lara, E. (s.f.). Universidad Politécnica de Cataluña. Obtenido de:
http://personals.ac.upc.edu/elara/documentacion/LINUX%20-
%20UD7%20-%20Gestion%20de%20Procesos.pdf
5. UTPL. Sistema Operativo Linux
.
5
Existen varios métodos de IPC disponibles en Linux:
o Pipes UNIX Half-duplex
o FIFOs (pipes con nombre)
o Colas de mensajes estilo SYSTEM V
o Semáforos estilo SYSTEM V
o Segmentos de memoria compartida estilo
SYSTEM V
Pipes UNIX Semi-duplex
La forma más simple de IPC en Linux son los pipes o
tuberías, han estado presentes desde los primeros
orígenes del sistema operativo UNIX y proporcionan un
método de comunicaciones en un sentido
(unidireccional, semiduplex) entre procesos.
Una tubería (pipe) es simplemente un método de
conexión que une la salida estándar de un proceso a la
entrada estándar de otro.
5
Para esto se utilizan
“descriptores de archivos” reservados, los cuales en
forma general son:
o 0: Entrada estándar (stdin).
o 1: Salida estándar (stdout).
o 2: Salida de error (stderr).
Tuberías con Nombre (FIFO - First In First Out)
Un FIFO también se conoce como una tubería con
nombre. El nombre es de un archivo que múltiples
procesos pueden abrir, leer y escribir. Una tubería con
nombre funciona como una tubería normal, pero tiene
algunas diferencias notables:
o Las tuberías con nombre existen en el sistema
de archivos como un archivo de dispositivo
especial.
o Los procesos de diferentes padres pueden
compartir datos mediante una tubería con
nombre.
o Una vez finalizadas todas las operaciones de
E/S, la tubería con nombre permanece en el
sistema de archivos para un uso posterior.
Creación de una FIFO
Hay varias formas de crear una tubería con nombre. Las
dos primeras se pueden hacer directamente desde el
shell:
o mknod MIFIFO p
o mkfifo a=rw MIFIFO
Los dos comandos anteriores realizan operaciones
idénticas, con una excepción, el comando mkfifo
proporciona una posibilidad de alterar los permisos del
5
Sven Goldt, S. v. (13 de 03 de 1995). IBLIO. Obtenido de
http://www.ibiblio.org/pub/Linux/docs/LDP/programmers-
guide/translations/es/gulp-0.11.pdf
archivo FIFO directamente tras la creación. Con mknod
será necesaria una llamada al comando chmod.
Anteriormente en Linux no podía ser desalojado de
ninguna manera un proceso que se esté ejecutando en
modo kernel, o sea que era un kernel no apropiativo,
pero actualmente es apropiativo, de tal manera que sí
puede ser desalojada una tarea que se esté ejecutando
en modo kernel.
El kernel de Linux proporciona bloqueos mediante
bucles sin fin y semáforos, así como versiones lector-
escritor de éstos bloqueos para establecer bloqueos en
el kernel.
En una máquina SMP, se hace uso de bucles sin fin, y el
kernel se diseña de modo que dicho tipo de bloqueo se
mantenga sólo durante períodos de tiempo cortos. En
las máquinas monoprocesador, se reemplazan los
bloqueos de bucle sin fin por un mecanismo de
activación y desactivación de la función de apropiación
en el kernel. Linux proporciona llamadas al sistema para
activar y desactivar los mecanismos de desalojo del
kernel, estas son: preempt_disable(), preempt_enable().
El kernel no es desalojable si hay una tarea modo kernel
que esté manteniendo un bloqueo.
Temporizadores del Kernel (timers).
Linux gestiona una lista de timers con el objetivo de
poder poner procesos en espera durante un periodo de
tiempo determinado. Estos timers se organizan en forma
de una lista circular doblemente enlazada, los timers a
desencadenar en un futuro próximo se colocan al
principio de la lista, mientras que los elementos a
desencadenar en un futuro lejano se al final de dicha
lista. La estructura timer_list, se define en el archivo
linux/timer.h según la siguiente estructura:
struct timer_list {
struct list_head list;
unsigned long expires;
unsigned long data;
void (*function) (unsigned long);
volatile int running;
};
La variable timer_head, definida en el archivo
kernel/sched.c, contiene la dirección del primer elemento
(timer) de la lista. La fecha de expiración (expires) se
expresa en número de ciclos de reloj desde el arranque
del sistema. La variable global jiffies es mantenida por el
kernel (su valor se incrementa en cada interrupción de
reloj) y contiene siempre el número de ciclos de reloj
transcurridos desde el arranque. Además, el campo
expires tiene el valor de jiffies cuando el manejador
function debe ser invocado con data pasado como
parámetro.
Semáforos: Conocidos como una estructura de datos
con un contador asociado, que es verificado por cada
6. UTPL. Sistema Operativo Linux
.
6
thread antes de accesar dicha estructura. Posee un
contador entero, una lista de procesos en espera y dos
operaciones básicas up(), down().
2.11 Sincronización de Procesos
Semáforos
o Las funciones para trabajar con semáforos en
Linux en C están incluidas en las librerías
<sys/types.h>,<sys/ipc.h> y <sys/sem.h>.
o En particular, las funciones son semget, semop
y semctl.
o Estas funciones, aunque muy potentes, son
habitualmente complicadas de usar, por lo que
se recomienda utilizarlas en su versión más
básica, siempre que sea posible.
o En vez de un solo semáforo clásico
representado por un entero no negativo, en
realidad semget define un array de semáforos
del tamaño especificado. Hay que trabajar por
tanto con conjuntos de semáforos, aunque para
crear un sólo semáforo necesitemos crear un
array de un solo elemento.
o La creación de un semáforo es independiente
de su inicialización, lo cual es especialmente
peligroso ya que no se puede crear un
semáforo inicializado de forma atómica.
6
Spin Lock: En sistemas multiprocesadores (SMP), bajo
condiciones de competencia por la exclusividad de un
recurso, si el intervalo de espera es pequeño, es más
eficiente generar un ciclo de espera (busy wait) en el
resto de los CPUs
Historia de la sincronización en Linux
Linux utiliza un método para activar y desactivar los
mecanismo de desaojo de kernel, es decir proporciona
dos llamadas al sistema: preempt_disable() y preempt
enable(). El kernel no es desalojable si hay una tarea en
modo kernel que este manteniendo un bloqueo
Aspectos importantes de la sincronización de Linux
o Es un sistema operativo reentrante, multi
usuario y multi tarea.
o Soporta multiprocesamiento, por lo que cierto
código del kernel ejecutándose en
procesadores distintos podría acceder al mismo
recurso al mismo tiempo.
6
República del Saber. (18 de 06 de 2009). Obtenido de
http://expo.itch.edu.mx/view.php?f=os_31#page4
o Las interrupciones ocurren asincrónicamente
con respecto al código ejecutado en un
momento dado.
o Es preemptive (desde el 2.6). Por lo que, cierto
código del kernel puede ser interrumpido en
favor a otro código que acceda al mismo
recurso.
o El kernel debe proveer mecanismos de
sincronización.
Conceptos importantes de Sincronización:
o Condiciones de Competencia: se presenta
cuando dos o más procesos compiten por
acceder a un mismo recurso. Si no existe
sincronización al interferirse los cambios
pueden haber serias inconsistencias.
o Exclusión mutua: principio que establece que
la ejecución de secciones críticas de los
procesos sea mutuamente exclusiva en el
tiempo.
o Operaciones atómicas: operación que no es
interrumpida que finaliza su procesamiento
(read-modify-write), e.g. x=x+1 => ++x, x86 lock
prefix, Linux struct atomic_t.
o Sección Crítica: Mientras se ejecuta una
sección crítica existe la garantía de que ningún
otro proceso se ejecutará a la vez por lo que el
código, i.e. se comporta como si fuera una
operación atómica, e.g. Java synchronized
o Interbloqueo: Cuando dos o más procesos
esperan la ocurrencia de un evento que sólo
uno de los procesos que esperan puede
causar.
o Inanición o bloqueo indefinido: Sucede
cuando los procesos interbloquedos esperan
indefinidamente.
Figura 05. Sincronización en Linux. Imagen
Tomada de:
http://www.plusformacion.com/Recursos/r/Sincroniz
acion-entre-procesos
7. UTPL. Sistema Operativo Linux
.
7
Propiedades de un proceso
o Un proceso incluye, no sólo el programa que
ejecuta, sino toda la información necesaria para
diferenciar una ejecución del programa de otra.
o Toda esta información se almacena en el
kernel, en el PCB.
o En Linux, por ejemplo, las propiedades de un
proceso se agrupan en tres: la identidad, el
entorno, y el contexto.
Identidad: Define quién es (identificador, propietario,
grupo) y qué puede hacer el proceso (recursos a los que
puede acceder)
Entorno: Parámetros (argv en un programa en C) y
variables de entorno
Contexto: Toda la información que define el estado del
proceso, todos sus recursos que usa y que ha usado
durante su ejecución.
Figura 06. Realización de un proceso. Imagen tomada
de:
http://docencia.ac.upc.edu/FIB/grau/SO/enunciados/Teor
ia/T2-Procesos.pdf
2.12 Interbloqueos
El Interbloqueo se puede definir como el bloque
permanente de un conjunto de procesos que compiten
por los recursos del sistema, todos los interbloqueos
suponen necesidades contradictorias de recursos, por
parte de dos o más procesos.
7
7
Varios. (s.f.). WIKIVERSIDAD. Obtenido de
http://wikiversidad.wikispaces.com/Interbloqueo+(Sistema
+Operativo)#Definiciones-Interbloqueo
Técnicas que usa Linux para tratar el interbloqueo
Figura 07. Métodos para el interbloqueo. Tomada de:
http://www.monografias.com/trabajos51/sincro-
comunicacion/sincro-comunicacion3.shtml
o TÉCNICA DEL AVESTRUZ
Si no se ve el problema, es que no existe es decir es
omitido.
Para omitir el interbloqueo, debemos tener en cuenta los
siguientes factores:
1. Número de veces que ocurre el interbloqueo.
2. Gravedad de la ocurrencia del interbloqueo.
3. Coste de las consecuencias.
4. Coste, en caso de hacer algo.
o TÉCNICA – PREVENCIÓN
Consiste en eliminar del sistema al menos, una de las
condiciones de interbloqueo.
Ventajas:
Método limpio, no se tiene que tratar a fondo procesos,
ni que expropiar recursos.
Desventajas:
Se aprovechan mal los recursos.
o TÉCNICA – EVITACIÓN
Consiste en permitir la posibilidad de interbloqueo, de
modo que se chequea el sistema continuamente y este
chequeo se realiza en las asignaciones de recursos a
procesos, ya que las solicitudes no son evitables.
Ventajas:
Método limpio.
Desventajas:
Poco rendimiento, sobrecarga mucho el sistema.
Se requiere chequear continuamente el sistema.
8. UTPL. Sistema Operativo Linux
.
8
o TÉCNICA – DETECCIÓN Y RECUPERACIÓN
Permite a los procesos actuar libremente, incluso
permitir que ocurra el interbloqueo.
Cada cierto tiempo se realiza un chequeo para
comprobar si se ha producido un interbloqueo y si existe
el caso de que lo haya se lanza un mecanismo de
recuperación.
Desventajas:
Método no limpio.
2.13 MECANISMOS DE CONCURRENCIA
Los distintos mecanismos más importantes que ofrece
LINUX para la comunicación entre procesos y la
sincronización son los siguientes:
o Tubos
o Mensajes
o Memoria Compartida
o Semáforos
o Señales
Los tubos, los mensajes y la memoria compartida
brindan un medio de comunicación de datos entre
procesos, mientras que los semáforos y las señales se
utilizan para provocar acciones en otros procesos.
Tubos
Es un buffer circular que permite a dos procesos
comunicarse según el modelo productor/consumidor.
Cuando se crea un tubo, se le da un tamaño fijo en
bytes. Cuando un proceso intenta escribir en el tubo, la
solicitud de escritura se ejecuta inmediatamente si hay
suficiente espacio; de otro modo, el proceso se bloquea.
De la misma manera, un proceso lector se bloquea si
intenta leer más bytes de los que tiene disponible en ese
momento.
8
El sistema operativo es el encargado de la exclusión
mutua, es decir, al tubo solo puede accederlo un
proceso por vez. Hay dos tipos de tubos: con nombre y
sin nombre. Los tubos sin nombre pueden ser
compartidos por procesos afines y los tubos con nombre
pueden ser compartidos por procesos no afines.
Mensajes
Es un bloque de texto con un tipo asociado. LINUX
proporciona las llamadas al
sistema msgsnd y msgrcv para que los procesos puedan
enviarse mensajes. Cada proceso tiene asociada una
8
Romero, L. (18 de 04 de 2008). Universidad NAcional de NordEste.
Obtenido de
http://exa.unne.edu.ar/depar/areas/informatica/SistemasOpe
rativos/MonogSO/CINTIN02.htm
cola de mensajes, que funciona como un buzón de
correos.
El emisor del mensaje especifica el tipo de mensaje en
cada envío y el receptor puede usarlo como criterio de
selección. El receptor puede recuperar los mensajes
tanto en orden FIFO como por el tipo asociado. Un
proceso se suspenderá cuando intente leer de una cola
vacía. Si un proceso intenta leer un mensaje de cierto
tipo y falla, el proceso no se suspenderá.
Memoria Compartida
Es la forma más rápida de comunicación entre procesos
que brinda LINUX, se trata de un bloque común de
memoria virtual compartido por varios procesos. Los
procesos pueden leer y escribir en la memoria
compartida usando las mismas instrucciones que la
máquina que emplea para leer y escribir en otras partes
de su espacio de direcciones virtual. Los permisos de un
proceso son solo lectura o lectura-escritura, según el
proceso. Las limitaciones de exclusión mutua no forman
parte del servicio de memoria compartida, sino que las
debe proporcionar el proceso que hace uso del mismo.
Semáforos
El núcleo ejecuta atómicamente todas las operaciones
solicitadas; ningún otro proceso puede acceder al
semáforo hasta que todas las operaciones hayan
culminado.
Un semáforo consta de los siguientes elementos:
Valor actual del semáforo.
ID del último proceso que opero con el
semáforo.
Numero de procesos esperando a que el valor
del semáforo sea mayor que su valor actual.
Numero de procesos esperando a que el valor
del semáforo sea cero
Los semáforos, se crean por conjuntos, en el cual, un
conjunto tiene uno o más semáforos. Hay una llamada al
sistema semctl que permite dar valores a todos los
semáforos del conjunto al mismo tiempo. Además, hay
una llamada al sistema sem-op que recibe como
argumento una lista de operaciones sobre semáforos,
cada una de ellas definida sobre uno de los semáforos
del conjunto. Cuando se genera esta llamada, el núcleo
realiza las operaciones indicadas una a una. Para cada
operación, se especifica la función real por medio del
valor sem_op.
Existen las siguientes posibilidades:
Si sem_op es mayor que 0, el núcleo
incrementa el valor del semáforo y despierta a
los procesos que esperaban a que el valor del
semáforo se incrementase.
9. UTPL. Sistema Operativo Linux
.
9
Si sem_op es igual a 0, el núcleo comprueba el
valor del semáforo. Si el semáforo es 0,
continúa con las otras operaciones de la lista;
en caso contrario, incrementa el número de
procesos esperando a que este semáforo sea
igual a 0 y suspende el proceso hasta que el
valor del semáforo sea 0.
Si sem_op es negativo y su valor absoluto es
menor o igual que el valor del semáforo, el
núcleo suma sem_op (un número negativo) al
valor del semáforo. Si el resultado es 0, el
núcleo despierta a todos los procesos que
esperan a que el valor del semáforo sea igual a
0.
Si sem_op es negativo y su valor absoluto es
mayor que el valor del semáforo, el núcleo
suspende al proceso, caso de que el valor del
semáforo se incremente.
Esta generalización de los semáforos ofrece una
considerable flexibilidad para realizar sincronización y
coordinación de procesos.
Señales
Es un mecanismo de software que informa a un proceso
que se ha producido un suceso asíncrono. Una señal es
similar a una interrupción de hardware, pero no emplea
prioridades.
9
Es decir, todas las señales se tratan de igual manera;
las señales que se producen en un mismo momento se
presentan al proceso en el mismo instante, sin una
ordenación en particular.
Los procesos pueden enviarse señales entre si y el
núcleo puede enviar señales internas. Una señal se
entrega actualizando un campo de la tabla de procesos
del proceso al que se le envía.
Dado que cada señal se mantiene como un único bit, las
señales de un tipo en particular no pueden colocarse en
la cola. Una señal se procesa en el instante después de
que el proceso despierte para ejecutarse o cuando el
proceso esté dispuesto a volver de una llamada al
sistema.
Un proceso puede responder a una señal ejecutando
alguna acción por omisión (por ejemplo, terminar),
ejecutando una función de gestión de la señal o
ignorando la señal.
9
Belgrano, M. (s.f.). Wikiespace_CAECE. Obtenido de
http://sistemasoperativos1-
caece.wikispaces.com/M%C3%B3dulo+5.+Deadlock+%28
bloqueo+mutuo%29
Herramientas para el interbloqueo en Linux
Figura 08. Asignación de recursos. Tomada de:
http://exa.unne.edu.ar/depar/areas/informatica/Sistemas
Operativos/image1FP.JPG
o GDB: Es una herramienta de rastreo y debugeo
del kernel, con la información obtenida en un
error en el sistema.
o INGO: Es un “perro guardián” que sirve para
detectar y reportar los interbloqueos.
o SYSREQ: Permite observar las tareas,
procesos y registros dentro del kernel en caso
de fallo.
o KDB: Es un debugeador del kernel en línea de
comando que sirve para inspeccionar el estado
de los procesos.
2.14 Administración de memoria
El Subsistema de administración de memoria es uno de
las más importantes partes del OS Linux. Desde
aquellos días en que la computación ha requerido más
memoria de la que existe físicamente en un sistema. Las
estrategias fueron desarrolladas para vencer esta
limitación… y la más exitosa de ellas se conoce hoy en
día como “memoria virtual”. La Memoria Virtual hace
parecer a un sistema más abundante en memoria de lo
que realmente es.
Pero que Provee el subsistema de administración de
Memoria Virtual en Linux?
o Direccionamiento Largo de espacios en
Memoria
El OS hace que el sistema aparente tener un
volumen de memoria alto al que realmente
posee. La memoria virtual puede ser N veces
más grande que la memoria física de un
sistema.
o Protección
Cada proceso en el sistema posee su propio
espacio de direcciones virtuales de memoria.
Estos espacios están completamente
separados uno del otro y así los procesos
corren sin afectar a otros.
10. UTPL. Sistema Operativo Linux
.
10
o Mapeo en Memoria
El mapeo en memoria es acostumbrado para
mapear imágenes y archivos de datos dentro
de un espacio de direcciones de un proceso.
o Alocamiento Equitativo de Memoria Física
El Subsistema de administracion de memoria
permite a cada proceso que se encuentra en
ejecucion dentro del sistema, un equitativa
distribucion de la memoria del sistema.
10
Memoria virtual
En la memoria virtual como se ha visto, no existe una
relación directa entre el espacio de direcciones de un
proceso y el mapa de memoria físico.
El espacio de direccionamiento de un proceso es
limitado por la arquitectura, la memoria física por otros
condicionantes
o El espacio de direcciones de un proceso es
mucho mayor que la memoria física disponible.
o Un sistema operativo multitarea debe dar
soporte a varios procesos en ejecución al
mismo tiempo.
La memoria virtual es un mecanismo que permite
gestionar adecuadamente estas paradojas utilizando un
dispositivo de almacenamiento masivo, que es más lento
y económico, aplicándola como zona de intercambio o
swap.
o Las páginas que no ocupan un marco son
llevadas a disco.
o Aprovecha la localidad de referencia de los
accesos a memoria.
Esquemas de memoria virtual
El esquema más utilizado es la paginación por
demanda, se lo utiliza en modelos de compartición de
páginas. Las páginas residen en memoria física o en el
disco y las tablas de páginas se extienden con la
información acerca de la relación del estado de la página
en disco.
Las tablas de páginas mucho mayores no están
permanentemente en la memoria. Para acabar
encontrando las referencias en memoria se utilizan, las
tablas de páginas de varios niveles (dos o más).
Problemas de la memoria virtual
Las páginas pueden no encontrarse en memoria cuando
se necesitan, entonces se produce un fallo de página.
10
Administración de memoria en Linux
http://eplauchu.wordpress.com/2013/07/17/administracion-de-
memoria-en-linux/
El SO busca la página en disco, la lleva a memoria y
actualiza las tablas, donde se han de establecer las
políticas de planificación: adquisición, asignación a
procesos y reemplazo.
También se pueden producir fenómenos indeseados
como es: la hiperpaginación, es decir: cuando hay
demasiados procesos en ejecución, el SO invierte gran
parte de su tiempo en el intercambio de páginas.
Otras consideraciones
o De qué depende el número mínimo de páginas
en memoria por proceso.
o Ciertas estructuras y código del núcleo se dejan
siempre en memoria principal.
o Se utilizan políticas de preadquisición etcétera
para mejorar las prestaciones.
o Se requiere de un extenso soporte del
hardware (MMU)
2.15 Archivos y directorios
En cuanto a los caracteres para los nombres de archivo, se
puede utilizar cualquiera, a excepción del carácter /, ya que
tiene un significado especial. Es conveniente no utilizar
caracteres especiales, acentos, etc. No se pue- den
incluir espacios en blanco ni es conveniente em- plear
caracteres como los siguientes en los nombres de archivo:
! # & ( ) ` '' ; | > < @ $ { } * ? Tab Spacebar
Backspace + –
Lo más importante es destacar que en Unix/Linux los
nombres de archivo son diferentes en mayúscula y en
minúscula. Se recomienda utilizar todos en minúscula.
Los directorios en Unix/Linux son archivos especiales cuya
función es la de almacenar archivos u otros directorios.
Tienen características especiales y, al igual que en DOS,
cada directorio, a excepción de la raíz, consta de los
directorios. y .., que indican directorio actual y directorio
padre, respectivamente.
Para entender mejor lo relacionado con los archivos,
hablemos sobre el File System de Unix/Linux. El sistema de
archivos de Unix/Linux es particular, respecto de los
convencionales de Microsoft.
Su estructura consta de tres partes fundamentales:
superbloque, tabla de inodos y bloques de datos. Concreta-
mente, cada archivo o directorio tiene asociado un nú-
mero en la tabla de inodos. Este número identifica la
ubicación del archivo o directorio dentro de la zona de
datos.
11
11
Sistema operativo multiusuario Unix/Linux. Gestión de archivos,
directorios y usuario – Estructura del sistema Unix/Linux (Archivos y
directorios) http://www.mcgraw-
hill.es/bcv/guide/capitulo/8448199626.pdf
11. UTPL. Sistema Operativo Linux
.
11
Tipos de archivos
En Unix/Linux existen, básicamente, cuatro tipos de
archivos. Son los siguientes:
o Archivos ordinarios: Contienen la información
con la que trabaja cada usuario. Normalmente
son archivos que contienen texto, programas
escritos por el usuario en lenguaje C, etc.
Suelen contener caracteres de tipo ASCII, y
pueden ser modificados, crea- dos, borrados,
etcétera.
o Enlaces físicos (Vínculos físicos). No es
específicamente una clase de archivo. Es un
segundo nombre asignado a un archivo. Supón
que dos usuarios necesitan compartir la
información de un mismo ar- chivo. Es evidente
que si cada uno de ellos tiene una copia, el
problema se soluciona, en cierta medida. Pero
las modificaciones que realice un usuario, no
podrán ser utilizadas por otro, ya que
solamente se modificará la copia de uno de los
usuarios.
Si en vez de tener una copia cada usuario,
cada uno de ellos utiliza en archivo tipo enlace
al archivo original, cada vez que uno modifique
su archivo lo que estará modificando es en
realidad el archivo común. El vínculo es un
segundo nombre que hace referencia a un
archivo, pero no es en sí el archivo. El vínculo
sirve para localizar el fichero en su ubicación
actual, pero no es el archivo real. De esta
forma, con tener un solo archivo real, éste se
podrá utilizar por todos los usuarios que lo
necesiten, sin tener que duplicarlo o triplicarlo.
o Enlaces simbólicos (Vínculos simbólicos). Se
utilizan para asignar más de un nombre a un
archivo. No sirven para directorios. Un vínculo
simbólico es un archivo que sólo contiene el
nombre de otro ar- chivo. Cuando el sistema
operativo opera sobre un vínculo simbólico,
éste se dirige al archivo al que apunta el
vínculo simbólico. A diferencia de los en- laces
físicos, que existen dentro de la estructura de
archivos, los enlaces simbólicos solamente
hacen referencia al nombre de otro archivo. Se
utiliza los parámetros.
o Directorios: Son archivos especiales que
contienen referencias a otros archivos. Cuentan
con información sobre archivos ordinarios, sub
directorios, vínculos, vínculos simbólicos,
etcétera.
o Archivos especiales: Suelen representar
dispositivos físicos como unidades de
almacenamiento, impresoras, terminales, etc.
Unix/Linux trata los archivos especiales como
archivos ordinarios. De esta forma, un usuario
puede abrir un archivo vinculado a una unidad de
disquete, modificarlo, etc. Con ello consigue leer
del disquete, escribir en el disquete, etc.
Unix/Linux transforma las operaciones básicas y
ordenes básicas de archivos ordinarios o
regulares en comandos que interactúan con el
hardware a través de los archivos especiales.
12
2.16 Seguridad en Linuxseguridad
Linux especializado en Seguridad tomada de
http://imagenes.es.sftcdn.net/blog/es/2013/09/Tux-
Seguridad.png
Muchas veces se ha dicho que GNU/Linux es un sistema
muy seguro (especialmente en comparación con algunos
sistemas operativos propietario), pero sería mejor decir
que GNU/Linux tiene el potencial para convertirse en
enormemente seguro. Pero de entrada no tiene porqué
serlo. En particular debemos ser conscientes de que se
trata de un sistema operativo pensado para entornos de
red y por ello tiene grandes capacidades de conexión
con otros ordenadores y de ofrecerles servicios.
13
La seguridad se basa en tres aspectos:
o Evitar la pérdida de datos.
o Mantener un control en la confidencialidad.
o Controlar el acceso a los datos y a los recursos.
12
Sistema operativo multiusuario Unix/Linux. Gestión de archivos,
directorios y usuario – Estructura del sistema Unix/Linux (Tipos de
archivos en Unix/Linux) http://www.mcgraw-
hill.es/bcv/guide/capitulo/8448199626.pdf
13
SEGURIDAD EN EL SISTEMA OPERATIVO GNU/LINEX
(kernel 2.4.20) - Javier Carmona Murillo
http://gitaca.unex.es/agila/archivos/seguridad_linex.pdf
12. UTPL. Sistema Operativo Linux
.
12
Seguridad Externa
Hace referencia a los controles y mecanismos
implementados para controlar el acceso remoto desde y
hacia el centro de cómputo.
Se prevén amenazas como:
o Desastres naturales, incendios o inundaciones.
o Amenazas ocasionadas por el hombre.
o Sabotajes internos y externos deliberados.
Seguridad del Núcleo
No tiene ninguna restricción a la hora de ejecutarse.
o utiliza todas las instrucciones del procesador.
o direcciona toda la memoria.
o accede directamente al hardware.
Seguridad Interna de Linux
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 proveída 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
núcleo del SO, como el número máximo de archivos
abiertos por un proceso o el uso de memoria
compartida.
Métodos de Autenticación
Auth: Solicita y verifica la validez de una contraseña
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 sesión.
Password: se usa para establecer y verificar
contraseña.
Session: esta interfaz del módulo configura y administra
las sesiones de usuario, los módulos con esta interfaz
también pueden realizar tareas adicionales que son
requeridas para permitir acceso, como el montaje de
directorios principales de usuarios.
2.17 Sistemas distribuidos
El desarrollo de los sistemas distribuidos vino de la
mano de las redes locales de alta velocidad a principios
de 1970. Más recientemente, la disponibilidad de
computadoras personales de altas prestaciones,
estaciones de trabajo y ordenadores servidores ha
resultado en un mayor desplazamiento hacia los
sistemas distribuidos en detrimento de los ordenadores
centralizados multiusuario. Esta tendencia se ha
acelerado por el desarrollo de software para sistemas
distribuidos, diseñado para soportar el desarrollo de
aplicaciones distribuidas. Este software permite a los
ordenadores coordinar sus actividades y compartir los
recursos del sistema – hardware, software y datos.
Los sistemas distribuidos se implementan en diversas
plataformas hardware, desde unas pocas estaciones de
trabajo conectadas por una red de área local, hasta
Internet, una colección de redes de área local y de área
extensa interconectados, que en lazan millones de
ordenadores.
Las aplicaciones de los sistemas distribuidos varían
desde la provisión de capacidad de computo a grupos
de usuarios, hasta sistemas bancarios, comunicaciones
multimedia y abarcan prácticamente todas las
aplicaciones comerciales y técnicas de los ordenadores.
Los requisitos de dichas aplicaciones incluyen un alto
nivel de fiabilidad, seguridad contra interferencias
externas y privacidad de la información que el sistema
mantiene. Se deben proveer accesos concurrentes a
bases de datos por parte de muchos usuarios, garantizar
tiempos de respuesta, proveer puntos de acceso al
servicio que están distribuidos geográficamente,
potencial para el crecimiento del sistema para acomodar
la expansión del negocio y un marco para la integración
de sistema usados por diferentes compañías y
organizaciones de usuarios.
14
2.18 Tipos de Sistemas Distribuidos
El Modelo Cliente Servidor
El modelo cliente-servidor de un sistema distribuido es el
modelo más conocido y más ampliamente adoptado en
la actualidad. Hay un conjunto de procesos servidores,
cada uno actuando como un gestor de recursos para
una colección de recursos de un tipo, y una colección de
procesos clientes, cada uno llevando a cabo una tarea
que requiere acceso a algunos recursos hardware y
software compartidos. Los gestores de recursos a su vez
podrían necesitar acceder a recursos compartidos
manejados por otros procesos, así que algunos
procesos son ambos clientes y servidores. En el modelo,
cliente-servidor, todos los recursos compartidos son
mantenidos y manejados por los procesos servidores.
Los procesos clientes realizan peticiones a los
servidores cuando necesitan acceder a algún recurso. Si
la petición es válida, entonces el servidor lleva a cabo la
acción requerida y envía una respuesta al proceso
cliente.
Middleware
El término middleware se discute en [Lewandosky 1998].
El software distribuido requerido para facilitar las
interacciones cliente-servidor se denomina middleware.
El acceso transparente a servicios y recursos no locales
distribuidos a través de una red se provee a través del
middleware, que sirve como marco para las
comunicaciones entre las porciones cliente y servidor de
un sistema.
Servidores Pesados vs Clientes Pesados
[Lewandowsky 1008] Se realiza una discusión de este
concepto dentro del marco de los sistemas cliente-
servidor. Los especialistas en sistemas de información
14
Introducción a los sistemas distribuidos
http://augcyl.org/?page_id=231
13. UTPL. Sistema Operativo Linux
.
13
califican como ‘pesada’ (fat) una parte de un sistema con
una cantidad de funcionalidad desproporcionada. Por el
contrario, una parte de sistema se considera ligera (thin)
si tiene menos responsabilidades [Orfali 1996].
3 REFERENCIAS
o LinuxZone(2007-2013) DISTRIBUCCIONES-
PRINCIPALES consulta realizada el dia
22/03/2014 de
http://linuxzone.es/distribuciones-principales/
o Sistema de operativos GNU DISTRIBUCIONES
- PRINCIPALES consulta realizada el día
22/03/2014 de http://www.gnu.org/distros/free-
distros.es.html
o Linux DISTRIBUCIONES - PRINCIPALES
consulta realizada el día 22/03/2014 de
http://www.linux.org.pe/linux/
o Diseño gráfico, desarrollo web y software libre
DISTRIBUCIONES - PRINCIPALES consulta
realizada el día 22/03/2014 de
http://dglibre.com/2008/09/14/distribuciones-
linux-para-disenadores-graficos/
o http://slashdot.com: Noticias y rumores del
mundo GNU/Linux. En inglés.
o http://www.foroslinux.org: Varios foros de
GNU/Linux dedicados a todo tipo de temas.
o http://www.fsf.org: La página oficial de la Free
Software Foundation.
o http://www.debian.org: Página oficial de debian
GNU/Linux.
o http://www.redhat.com: Página oficial de
RedHat Linux.
o http://www.suse.com: Página oficial de SuSE.
o http://www.slackware.com: Página oficial de
Slackware Linux.
o http://www.knoppix.com: Página oficial de
Knoppix.
o Ramos, M. d. (2010). Sistemas Operativos
Monopuestos Madrid,España: Paraninfo.
o Bovet, D. P., & Cesati, M.
(2008). Understanding the Linux kernel. O'Reilly
Media.
o Barabanov, M., & Yodaiken, V. (1996). Real-
time linux. Linux journal, 23.
o Yodaiken, V., & Barabanov, M. (1997, January).
Real-Time Linux Applications and Design.
In Proceedings of the Linux applications
development and deployment conference
(USELINUX).
o Barabanov, M. (1997). A linux-based real-time
operating system (Doctoral dissertation, New
Mexico Institute of Mining and Technology).
o Tema_6 Gestion de Memoria pdf
http://mermaja.act.uji.es/docencia/ii22/teoria/Tra
spasTema6.pdf
o Estructura del Sistema Unix/Linux
http://www.mcgraw-
hill.es/bcv/guide/capitulo/8448199626.pdf
o Características de seguridad de Linux - Horst H.
von Brand Departamento de Informática
Universidad Técnica Federico Santa María
http://2004.encuentrolinux.cl/docs/presentacion
es/pdf/presentacion-hvb.pdf
o SEGURIDAD EN EL SISTEMA OPERATIVO
GNU/LINEX (kernel 2.4.20) - Javier Carmona
Murillo
http://gitaca.unex.es/agila/archivos/seguridad_li
nex.pdf
o Seguridad en sistemas GNU/Linux
http://blog.desdelinux.net/seguridad-en-
sistemas-gnulinux-depende-del-sistema-o-del-
administrador/
o Sistemas distribuidos de Linux
http://laurel.datsi.fi.upm.es/_media/docencia/asi
gnaturas/sod/rdir-4pp.pdf
o UNIDAD 1 LOS SISTEMAS OPERATIVOS EN
AMBIENTES DISTRIBUIDOS
http://marcosventuraosorio261v.blogspot.com/
o Sistemas distribuidos sobre la plataforma Linux
http://es.slideshare.net/damian_barrios/taller-
sistemas-distribuidos-linux
o SOs distribuidos, multiprocesadores y
multicomputadores
http://lsi.ugr.es/jagomez/disisoparchivos/Tema2.
pdf
o Introducción a los sistemas distribuidos
http://augcyl.org/?page_id=231