Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Introducción .............................................................................................................. 4
Desarrollo ................................................................................................................. 5
El Proyecto GNU....................................................................................................... 5
Etimología ................................................................................................................. 6
Diferencias .............................................................................................................. 14
Freeware ............................................................................................................. 15
Shareware........................................................................................................... 15
Ventajas del Open Source contra el Freeware, Shareware y Software Privativo ..... 16
Sistemas Distribuidos
Prof. Rubén Báez
Estructura de los directorios .................................................................................... 23
3
Tipos de archivos .................................................................................................... 25
Clasificación de archivos......................................................................................... 26
Operación ................................................................................................................... 31
Gestión de memoria.................................................................................................... 33
Seguridad ............................................................................................................... 34
Administración ............................................................................................................ 35
Programación ............................................................................................................. 39
Bibliografía .............................................................................................................. 41
Sistemas Distribuidos
Prof. Rubén Báez
Estudio de caso de un sistema operativo 4
en entorno distribuido
Introducción
Los sistemas operativos han ido evolucionando en estas dos últimas décadas
con el crecimiento de las redes en la Internet, las mejoras en el hardware y en
los sistemas de comunicación.
Sistemas Distribuidos
Prof. Rubén Báez
El sistema operativo Linux, en sus diversas distribuciones, ha heredado del
5
sistema Unix todas sus características robustas que lo hacen ideal para su
estudio.
Desarrollo
El Proyecto GNU
Para asegurar que el software GNU permaneciera libre para que todos los
usuarios pudieran "ejecutarlo, copiarlo, modificarlo y distribuirlo", el proyecto
debía ser liberado bajo una licencia diseñada para garantizar esos derechos al
tiempo que evitase restricciones posteriores de los mismos. La idea se conoce
como la Licencia General Pública de GNU (GPL).
En 1985, Stallman creó la Free Software Foundation (FSF) para proveer soportes
logísticos, legales y financieros al proyecto GNU. La FSF también contrató
programadores para contribuir a GNU, aunque una porción sustancial del
Sistemas Distribuidos
Prof. Rubén Báez
desarrollo fue (y continúa siendo) producida por voluntarios. A medida que GNU
6
ganaba renombre, negocios interesados comenzaron a contribuir al desarrollo o
comercialización de productos GNU y el correspondiente soporte técnico.
Etimología
GNU es un acrónimo recursivo que significa GNU No es Unix (GNU is Not Unix).
En español, se recomienda pronunciarlo ñu como el antílope africano, por ello,
el término mayoritariamente se deletrea (GNU) para su mejor comprensión.
Sistemas Distribuidos
Prof. Rubén Báez
Licencia GPL 7
Licencia LGPL
Sistemas Distribuidos
Prof. Rubén Báez
Esta licencia se aplica a cualquier programa o trabajo que contenga una nota
8
puesta por el propietario de los derechos del trabajo estableciendo que su trabajo
puede ser distribuido bajo los términos de esta "GPL General Public License".
El Proyecto GNU/Linux
Sistemas Distribuidos
Prof. Rubén Báez
Entonces, el núcleo creado por Linus Torvalds, quien se encontraba por
9
entonces estudiando en la Universidad de Helsinki, llenó el hueco final que el
sistema operativo GNU exigía. Subsecuentemente, miles de programadores
voluntarios alrededor del mundo han participado en el proyecto, mejorándolo
continuamente y agregando más líneas al código original.
Imagen. 5. CentOS. Los desarrolladores de CentOS usan ese código fuente para
(Community ENTerprise
crear un producto final que es muy similar al Red Hat
Operating System)
Enterprise Linux y está libremente disponible para ser bajado
y usado por el público, pero no es mantenido ni asistido por Red Hat.
Sistemas Distribuidos
Prof. Rubén Báez
Red Hat es una empresa dedicada al software libre, y además
10
es un importante proveedor, distribuidor y promotor de Linux.
Red Hat fue fundada en 1995 y tiene su sede en Raleigh,
Carolina del Norte con oficinas en todo el mundo.
Imagen. 6. Red
Hat
Debían nace como una apuesta por separar en sus versiones el software libre
del software no libre.
Imagen 8. Ubuntu
Basada en Debían GNU/Linux, Ubuntu concentra su objetivo
en la facilidad y libertad de uso, la facilidad de instalación y los lanzamientos
Sistemas Distribuidos
Prof. Rubén Báez
regulares (cada 6 meses). Ubuntu es patrocinado por Canonical Ltd., una
11
empresa privada fundada y financiada por el empresario sudafricano Mark
Shuttleworth.
El Kernel Linux
Sistemas Distribuidos
Prof. Rubén Báez
Un sistema operativo con núcleo monolítico concentra todas las funcionalidades
12
posibles (planificación, sistema de archivos, redes, controladores de dispositivos,
gestión de memoria, etc.) dentro de un gran programa. El mismo puede tener un
tamaño considerable, y deberá ser recompilado por completo al añadir una
nueva funcionalidad.
Todos los componentes funcionales del núcleo tienen acceso a todas sus
estructuras de datos internas y a sus rutinas. Un error en una rutina puede
propagarse a todo el núcleo.
Sistemas Distribuidos
Prof. Rubén Báez
Otro de los requisitos fundamentales para considerar a una aplicación como
13
Software Libre es el acceso al código fuente de la aplicación.
Los requisitos que debe cumplir un programa del tipo Open Source son diez:
Sistemas Distribuidos
Prof. Rubén Báez
5. Sin discriminación de personas o grupos: nadie puede dejarse fuera,
14
sin importar de quién se trate.
6. Sin discriminación de áreas de iniciativa: los usuarios comerciales no
pueden ser excluidos, no somos enemigos de nadie.
7. Distribución de la licencia: deben aplicarse los mismos derechos a todo
el que reciba el programa, es decir, si lanzamos libre el programa libre
tiene que ser cada vez que se distribuya.
8. La licencia no debe ser específica de un producto: el programa no
puede licenciarse solo como parte de una distribución mayor, o se licencia
todo el programa o no se licencia nada.
9. La licencia no debe restringir otro software: la licencia no puede
obligar a que algún otro software que sea distribuido con el software
abierto deba también ser de código abierto.
10. La licencia debe ser tecnológicamente neutral: no debe requerirse la
aceptación de la licencia por medio de un acceso por clic de ratón o de
otra forma específica del medio de soporte del software.
Diferencias
Otra de sus diferencias, quizá la más importante para lo que al ámbito comercial
concierne, es que con una aplicación desarrollada bajo los estándares del
Software Libre puedes obtener remuneración por conceptos de desarrollo,
soporte y puesta a punto siempre y cuando entregues los códigos fuentes, a
diferencia del movimiento Open Source que no te obliga a hacerlo. Todos los
productos desarrollados en Software Libre así como sus derivados siempre
deben ser libres, a diferencia de Open Source.
Sistemas Distribuidos
Prof. Rubén Báez
Básicamente el movimiento de Software Libre tiene diferencias de índole
15
filosóficas con el Open Source, sin embargo, ambos han permitido el desarrollo
de software de gran calidad y con muchísimas más libertades de las que el
software privativo nunca lo otorgaría.
Freeware
El freeware suele incluir una licencia de uso, que permite su redistribución pero
con algunas restricciones, como no modificar la aplicación en sí, ni venderla, y
dar cuenta de su autor. También puede desautorizar el uso en una compañía
con fines comerciales o en una entidad gubernamental.
Shareware
Para adquirir una licencia de software que permite el uso del software de manera
completa se requiere de un pago.
Sistemas Distribuidos
Prof. Rubén Báez
sus raíces en el segundo. Tampoco debe confundirse el hecho de que un
16
software sea shareware o freeware con el hecho de que sea de código abierto,
ya que esto último depende de la disponibilidad o no del código fuente.
Sistemas Distribuidos
Prof. Rubén Báez
Características del sistema operativo Linux 17
Sistemas Distribuidos
Prof. Rubén Báez
► Entorno completamente gráfico para su fácil integración con usuarios que
18
necesitan de este recurso pero no obligando a su uso para aumentar el
consumo de recursos que aumentan nuestros presupuestos y no se
traducen a productividad.
Aplicaciones
Shell
Kernel
Demonios y
servicios
Administradores
de dispositivos
Hardware
Sistemas Distribuidos
Prof. Rubén Báez
► Demonios y servicios: programas que se ejecutan en segundo plano
19
► Administradores de dispositivos: permiten gestionar las conexiones de
los dispositivos con el sistema operativo
► Hardware: es la parte física de la computadora
El sistema de archivos
Nociones básicas
Sistemas Distribuidos
Prof. Rubén Báez
root o directorio raíz) y se ramifica. Todos los archivos en un sistema GNU/Linux
20
son accedidos a través de la estructura del sistema de archivos.
Este estándar del sistema de archivos GNU/Linux sigue el mismo principio básico
que la mayoría de los sistemas de archivos Unix. Sin embargo, este estándar no
intenta concordar en cada aspecto posible con alguna implementación particular
del sistema Unix. De cualquier forma, muchos de los aspectos de este estándar
están basados en ideas encontradas en Unix y sistemas similares a Unix.
Sistemas Distribuidos
Prof. Rubén Báez
► En un ambiente de red, ciertos archivos contienen información específica
21
a una sola máquina, por tanto, estos sistemas de archivos no pueden ser
compartidos (sin tomar medidas especiales)
► Las implementaciones de facto del sistema de archivos no permiten que
la jerarquía /usr fuera montada sólo-lectura, porque contiene archivos y
directorios que necesitaban ser escritos muy frecuentemente. Éste es un
factor que debe atacarse cuando algunas partes de /usr se comparten en
una red, o se montan sólo-lectura debido a otras consideraciones tales
como la seguridad
Sistemas Distribuidos
Prof. Rubén Báez
Soporte de archivos 22
► ext2: hasta hace poco era el sistema estándar de Linux. Tiene una
fragmentación muy baja, aunque es algo lento manejando archivos de
gran tamaño. Fue la continuación del sistema de archivos ext,
implementado en 1992 e integrado en Linux 0.96
► ext3: es la versión mejorada de ext2, con previsión de pérdida de datos
por fallos del disco o apagones. En contraprestación, es totalmente
imposible recuperar datos borrados. Es compatible con el sistema de
archivos ext2. Actualmente es el más difundido dentro de la comunidad
GNU/Linux y es considerado el estándar
► ext4: Es la última versión de la familia de sistemas de archivos ext. Sus
principales ventajas radican en su eficiencia (menor uso de CPU, mejoras
en la velocidad de lectura y escritura) y en la ampliación de los límites de
tamaño de los archivos, ahora de hasta 16TB, y del sistema de archivos,
que puede llegar a los 1024PB (PetaBytes)
► ReiserFS: es el sistema de archivos de última generación para Linux.
Organiza los archivos de tal modo que se agilizan mucho las operaciones
Sistemas Distribuidos
Prof. Rubén Báez
con estos. El problema de ser tan actual es que muchas herramientas (por
23
ejemplo, para recuperar datos) no lo soportan
► swap: es el sistema de archivos para la partición de intercambio de Linux.
Todos los sistemas Linux necesitan una partición de este tipo para cargar
los programas y no saturar la memoria RAM cuando se excede su
capacidad. En Windows, esto se hace con el archivo pagefile.sys en la
misma partición de trabajo, con los problemas que esto conlleva
Existe una norma para ubicar los archivos en la estructura del árbol del Sistema
Operativo Linux y es reconocida como Norma para la Jerarquía del Sistema de
Archivos (Filesystem Hierarchy Standard – FHS).
Sistemas Distribuidos
Prof. Rubén Báez
► Dinámicos: contiene archivos que son cambiantes, y pueden leerse y
24
escribirse (algunos sólo por su respectivo usuario y el root). Para estos
directorios, es recomendable una copia de seguridad con frecuencia, o
mejor aún, deberían ser montados en una partición aparte en el mismo
disco
► Compartidos: contiene archivos que se pueden encontrar en una
computadora y utilizarse en otro, o incluso compartirse entre usuarios
► Restringidos: contiene archivos que no se pueden compartir, sólo son
modificables por el administrador. (/etc, /boot, /var/run, /var/lock)
DIRECTORIO DESCRIPCIÓN
Sistemas Distribuidos
Prof. Rubén Báez
/lib Acá se pueden encontrar las librerías de programación para el
25
desarrollo de aplicaciones de Linux
Tipos de archivos
Sistemas Distribuidos
Prof. Rubén Báez
► Especiales: son aquellos que proveen un interfaz uniforme entre los
26
programas y la Entrada/Salida al hardware de la computadora
Clasificación de archivos
► Archivo regular (-): archivos comunes del sistema operativo (texto), tipo
ASCII, binario
► Directorios (d): archivos contenedores de otros archivos
► Enlaces (l): archivos que referencian a otros archivos
► Tuberías (p): archivos que permiten el intercambio de información entre
procesos
► Especial de bloques (b): permiten el acceso a dispositivos que manejan
la Entrada/Salida de la información por bloques y de forma aleatoria, como
los discos duros
► Especial de carácter (c): permiten el acceso a dispositivos que manejan
la Entrada/Salida de la información en forma secuencial y por carácter,
como las terminales, teclado y mouse
► Archivos socket (s): archivos relacionados a una conexión de red
Como dueño del archivo, un usuario puede configurar permisos sobre sus
archivos.
Sistemas Distribuidos
Prof. Rubén Báez
también grupo dueño) pero no son el usuario dueño, y los otros, que son todos
27
los usuarios que no son ni el dueño ni miembros del grupo dueño.
1. Permiso de lectura (r por Read, Leer): para un archivo, esto permite que
se lea su contenido. Para un directorio, esto permite que se muestren los
archivos que contiene (es decir, los archivos en este directorio).
2. Permiso de escritura (w por Write, Escribir): para un archivo, esto
permite que se modifique su contenido. Para un directorio, esto permite
que un usuario agregue y/o quite archivos de este directorio, incluso si no
es el dueño de esos archivos.
3. Permiso de ejecución (x por eXecute, Ejecutar): para un archivo, esto
permite su ejecución (en consecuencia, normalmente sólo los archivos
ejecutables tienen activo este permiso). Para un directorio, esto permite
que un usuario lo recorra (lo que significa poder ingresar a, o pasar por,
ese directorio). Esto está separado del acceso de lectura: bien puede ser
que se pueda recorrer un directorio, pero no leer su contenido. Todas las
combinaciones de estos permisos son posibles.
Gestión de procesos
Sistemas Distribuidos
Prof. Rubén Báez
El árbol de procesos 28
Al igual que con los archivos, todos los procesos que corren en un sistema
GNU/Linux están organizados en forma de árbol. La raíz de este árbol es el
proceso init.
Cada proceso tiene un número (su PID, Process ID, Identificador de proceso),
junto con el número de su proceso padre (PPID, Parent Process ID, Identificador
del proceso padre).
El PID del proceso init es 1, y también su PPID porque init es su propio padre.
Sistemas Distribuidos
Prof. Rubén Báez
► Ejecutando: este valor de estado se corresponde con dos estados. Un
29
proceso Ejecutando puede estar Ejecutando (proceso en curso) o está
Listo para ejecutar (está esperando a ser asignado a una de las CPUs
del sistema)
► Interrumpible: es un estado Bloqueado en el que el proceso está
esperando por un evento, tal como la finalización de una operación de
Entrada/Salida, la disponibilidad de un recurso o una señal de otro
proceso
► Ininterrumpible: éste es otro estado Bloqueado. La diferencia entre este
estado y el estado Interrumpible es que en el estado Ininterrumpible un
proceso está esperando directamente sobre un estado del hardware y por
tanto no manejará ninguna señal
► Parado: el proceso ha sido parado y sólo puede ser reanudado por la
acción positiva de otro proceso. Por ejemplo, un proceso que está siendo
depurado por errores, se puede poner en estado Parado
► Zombie: el proceso se ha terminado pero, por alguna razón, todavía debe
tener su estructura de tarea en la Tabla de Procesos. Se suele mantener
para que el padre pueda extraer información útil de él
Planificación de Procesos
La planificación es el método mediante el cual los hilos, los procesos o los flujos
de datos tienen acceso a los recursos; por ejemplo: tiempo de procesador, ancho
de banda en la comunicación; entre otros.
Sistemas Distribuidos
Prof. Rubén Báez
Características del planificador 30
Sistemas Distribuidos
Prof. Rubén Báez
► El planificador asigna mayor prioridad a procesos en tiempo real. Estos
31
nunca pueden ser bloqueados por procesos de menor prioridad
► Los procesos Batch son penalizados por el planificador, ya que no son
responsivos y corren generalmente en segundo plano
► Los procesos Real Time necesitan mayor tiempo de ejecución
Operación
Comandos básicos
ARCHIVOS DESCRIPCIÓN
rm Eliminar archivos
cp Copiar archivos
Sistemas Distribuidos
Prof. Rubén Báez
chmod Cambiar permisos de atributos de archivos
32
gzip Comprimir archivos
DIRECTORIOS
cd Cambiar de directorio
ls Listar directorios
PROCESOS
USUARIOS
Sistemas Distribuidos
Prof. Rubén Báez
chown Cambiar propietarios de archivos
33
passwd Asignar contraseñas a usuarios
GRUPOS DE USUARIOS
Gestión de memoria
Sistemas Distribuidos
Prof. Rubén Báez
escritura de esas páginas en el espacio de intercambio del disco, según sea
34
necesario.
Seguridad
Sistemas Distribuidos
Prof. Rubén Báez
2. Control de acceso: proporcionar un mecanismo para controlar si un
35
usuario tiene derecho de acceso a un cierto objeto e impedir el acceso a
los objetos según sea necesario.
Puede registrar todos y cada uno de los comandos que ha emitido un usuario
determinado.
Administración
Sistemas Distribuidos
Prof. Rubén Báez
El sistema Linux requiere de una configuración inicial y continua atención de
36
modo a garantizar efectividad, confiabilidad, eficiencia para todos los usuarios.
El administrador de sistemas es la persona responsable de atender las
necesidades del sistema operativo. Como siempre, aquella persona es
responsable de una gran variedad de distintas tareas.
Todos los sistemas Unix son diferentes de una manera u otra, y cada uno de
ellos es diferente de acuerdo a la manera en que debe ser administrado. Linux
no es la excepción. Las tareas administrativas varían en base a la cantidad de
usuarios que se maneja, los tipos de periféricos (impresoras, unidades de
respaldo de archivos, y otros) conectados a la computadora, conexiones de red
y el nivel de seguridad requerido.
Cada sistema Linux posee un usuario que puede ejecutar cualquier operación
en la computadora. Este usuario es llamado el superusuario y posee un nombre
de entrada especial llamado root. El directorio de trabajo del usuario root, cuando
Sistemas Distribuidos
Prof. Rubén Báez
ingresa al sistema, es típicamente / (el directorio raíz del sistema de archivos) o
37
un directorio específico /root.
Sistemas Distribuidos
Prof. Rubén Báez
► Mantenimiento de usuarios: agregar, borrar, modificar permisos y
38
privilegios de los usuarios
► Configuración de dispositivos: mantener disponibles y compartidos
impresoras, terminales, unidades de respaldos de archivos, etc.
► Realización de copias de seguridad: periódicamente, crear y guardar
copias de seguridad para una posible restauración en el caso de pérdida
o daño de los archivos del sistema
► Apagar el sistema: apagar el sistema de una manera prolija y ordenada
a modo de evitar inconsistencias en el sistema de archivos
► Entrenamiento a usuarios: proveer u obtener entrenamiento para
usuarios de manera a que puedan utilizar el sistema efectiva y
eficientemente
► Seguridad del sistema: mantener alejados a aquellos usuarios que
poseen malas intenciones cuyas acciones pueden ser perjudiciales
► Registrar cambios del sistema: mantener un libro de los registros de
cualquier evento significativo que concierne al sistema
► Asesorar a los usuarios: actuar como el “experto de área” de modo a
poder asistir a usuarios comunes
Usuarios y grupos
Cada usuario y grupo tiene un identificador numérico (ID) que es utilizado por el
sistema para diferenciar a los usuarios, conocidos como UID y GID. El sistema
no reconoce diferencia entre los usuarios según el nombre del usuario, por lo
Sistemas Distribuidos
Prof. Rubén Báez
tanto, si dos usuarios con nombres distintos tienen el mismo ID, el sistema Linux
39
no podrá diferenciar quién es quién.
El usuario root tiene el control total del sistema y puede sobrepasar cualquier
restricción de seguridad.
Los usuarios regulares tienen privilegios necesarios para realizar las tareas
normales en Linux, como guardar archivos en su directorio personal, usar
procesadores de texto, navegadores, etc. No pueden realizar la configuración
del equipo o instalación de software a menos que el usuario root explícitamente
lo permita.
Existen servicios como samba, apache, mail, proxy, impresión, etc., que tienen
su propia cuenta de usuario de servicio. Estas cuentas existen para permitir el
mantenimiento a estos programas.
Programación
Sistemas Distribuidos
Prof. Rubén Báez
Las variables de entorno son variables que se almacenan en memoria durante
40
la ejecución del BASH Shell.
Variables de entorno
Sistemas Distribuidos
Prof. Rubén Báez
Bibliografía 41
Sistemas Distribuidos
Prof. Rubén Báez