Está en la página 1de 6

Clase 2 Unix

Un sistema operativo es un programa que facilita el empleo del hardware de un computador, lo facilita
presentando abstracciones de cada dispositivo. Por ejemplo al guardar información en una USB, el
usuario puede pensar en archivos, y el sistema operativo se encarga de los detalles como es acomodar y
organizar la información en la USB a nivel físico. Linux es un sistema operativo tipo Unix de libre
redistribución. Unix es el nombre de un sistema operativo concebido en los 70's junto con el lenguaje
de programación C por Kenneth Thompson, Dennis Ritchie y sus colegas de laboratorios Bell.
Unix se basa en varias ideas muy buenas que aún están en plena vigencia:

➢ Para los creadores de Unix, un sistema operativo debería ser un conjunto de herramienta y
conceptos básicos que le permitan al usuario construir rápida y fácilmente sus propias
herramientas para automatizar procesos. Unix es como un juego de herramientas que puede
aprovecharse al máximo con algo de estudio.
➢ Otra gran idea que se desarrolló junto con Unix es el Internet, porque en este sistema se
realizaron las primeras implementaciones de los protocolos de comunicación en los que se basa
Internet, y aún hoy son sistemas Unix los que mantienen Internet en funcionamiento.
➢ Otra buena idea ha sido usar y promover estándares abiertos.

Dado que sacar copias de un programa no es costoso ni difícil, y dado el carácter de Unix, desde sus
comienzos este sistema ha promovido la colaboración y muchas personas han entregado al público las
herramientas que han realizado para permitir su libre redistribución. En palabras del mismo Dennis
Ritchie “Lo que queríamos preservar no era sólo un buen ambiente en el cual programar, sino también
un sistema alrededor del cual se formará fraternidad”.

Hay varios sistemas operativos tipo Unix cuyas fuentes permiten la libre copia y libre redistribución ---la
mayoría se basan en Unix BSD, algunos son:
NetBSD
Es un descendiente de 386BSD (que a su vez es un descendiente de BSD). NetBSD se
centra en portabilidad, es decir que funciona en diversos tipos de computadores.
http://www.netbsd.org.
OpenBSD
Descendiente de NetBSD, centrado en seguridad y criptografía http://www.openbsd.org.
FreeBSD
Descendiente de 386BSD, centrado en facilidad para el usuario final http://www.freebsd.org.
GNU/Linux
El kernel de este sistema ha sido desarrollado de forma independiente de BSD desde 1992 por
Linus Torvalds y un gran grupo de voluntarios (http://www.kernel.org). Otros componentes del sistema
fueron tomados de BSD y otros fueron aportados por diversas organizaciones: Free Software
Foundation, XFree86, Apache Foundation, etc.

Los sistemas tipo Unix han sido empleados tradicionalmente por programadores, por esto cuenta con
compiladores, editores y herramientas para facilitar la programación, especialmente en lenguaje C. En
el caso de Linux tales herramientas han sido desarrolladas por la Free Software Foundation
http://www.fsf.org. Así mismo la FSF aportó la licencia que cubre al kernel (llamada GPL) y muchos
componentes de un sistema Linux.

1. Sistema de usuarios

Al igual que Unix, Linux es un sistema operativo multiusuario y multitarea. Multitarea significa que se
puede realizar más de una tarea a la vez. Multiusuario significa que el sistema puede ser empleado por
más de un usuario. Por ser multiusuario, Unix debe diferenciar a los usuarios y su información, para
lograrlo a cada usuario se le asigna una identificación única (en inglés login), un grupo, una clave de
acceso (en inglés password) y un espacio independiente del espacio de los demás usuarios (ese espacio
se llama directorio personal y permite organizar información del usuario en archivos). Unix brinda
también un esquema de permisos, con el que un usuario puede conceder o quitar permisos para ver o
modificar sus archivos a otros usuarios o a usuarios de su mismo grupo. Gracias, al sistema de usuarios y
al esquema de permisos no es posible que un usuario normal desconfigure el sistema completo o lo
infecte con virus ---la configuración general del sistema sólo puede cambiarla el administrador del
sistema, cuyo login es root.

2. Sistema de permisos

Los permisos de sistemas UNIX se dividen en tres clases, conocidas como usuario, grupo y otros (con
frecuencia abreviado UGO, por sus siglas en inglés, User, Group, Others).
Notación simbólica
Existen muchas formas para representar los esquemas de permisos Unix. La forma más común es la
notación simbólica. Este esquema permite representar permisos en una serie de 10 caracteres.

El primer carácter indica el tipo de archivo:


★ '-' denota un archivo regular
★ 'd' denota un directorio
★ 'b' denota un archivo especial de bloques
★ 'c' denota un archivo especial de caracteres
★ 'l' denota un enlace simbólico
★ 'p' denota un tubo nombrado
★ 's' denota un socket de dominio
Cada clase de permisos se representa por tres caracteres. El primer conjunto de caracteres representa
la clase de usuario. El segundo conjunto representa la clase de grupo. El tercer y último conjunto de
tres caracteres representa la clase del resto.
Cada uno de los tres caracteres representa los permisos de lectura, escritura y ejecución
respectivamente:
★ 'r' si el bit de lectura está asignado, '-' en caso contrario.
★ 'w' si el bit de escritura está asignado, '-' en caso contrario.
★ 'x' si el bit de ejecución está asignado, '-' en caso contrario.
Estos son algunos ejemplos de notación simbólica:
1. "-rwxr-xr-x" para un archivo regular que tiene todos los permisos asignados para su propietario
y solo permisos de lectura y ejecución para el grupo de usuarios del archivo y el resto de los
usuarios. Ningún usuario, salvo el propietario, puede modificar los contenidos del archivo.
2. "crw-rw-r--" para un archivo especial de caracteres que tiene permisos de lectura y escritura
para su propietario y grupo de usuarios y solo permiso de lectura para el resto de los usuarios.
3. "dr-x------" para un directorio que tiene permisos de lectura y ejecución únicamente para su
propietario.

3. File Hierarchy Standard (FHS)

El Filesystem Hierarchy Standard o FHS (jerarquía estándar del sistema de ficheros) define los principales
directorios y contenidos de Linux y otros sistemas operativos parecidos a Unix.

Concepto
El proceso de desarrollar un estándar de la jerarquía del FileSystem comenzó en agosto del 1993 en un
esfuerzo para reestructurar la estructura de ficheros y directorios de Linux. El FSSTND (FileSystem
Standard), un estándar de la jerarquía del sistema de ficheros de Linux fue concebido el 14 de febrero
de 1994. Las siguientes revisiones fueron adoptadas el 9 de octubre de 1994 y el 28 de marzo de 1995.
A principios de 1996, se marcó como objetivo adoptar una versión más entendible del FSSTND que
recogiese no sólo los sistemas Linux sino otros sistemas operativos de la rama de Unix, contando con la
ayuda de desarrolladores de la comunidad BSD. Como resultado, se hizo un esfuerzo para centrarse en
problemas comunes de todos los sistemas operativos tipo Unix. Reconociendo la amplitud del
proyecto, se le cambió el nombre a este por Filesystem Hierarchy Standard o FHS.
El FHS es desarrollado por la Free Standards Group, una organización sin ánimo de lucro que poblada
por los principales vendedores de software y hardware, como HP, IBM y Dell. Aun así, la gran mayoría
de las distribuciones de Linux, incluyendo aquellas en las que los desarrolladores son miembros de la
Free Standards Group, no siguen el estándar propuesto. En particular, las path-s creadas por los autores
de la FHS, como /media/ o /srv/, no son comúnmente usadas. Algunos sistemas Unix y Linux rompen con
la FHS en favor de otras aproximaciones, siendo Gobo Linux un ejemplo de ello.

Estructura de directorios
Todos los ficheros y directorios están debajo del ?root_directory "/", aunque estén almacenados en
otros dispositivos.
Una descripción de la jerarquía especificada en la FHS
/bin/
Ejecutables de comandos esenciales (binarios) para todos los usuarios (como cat, ls o cp)
(especialmente ficheros necesarios para arrancar o rescatar el sistema)

/boot/
Boot loaders, kernels y ficheros de initrd

/dev/
devices o dispositivos (como /dev/null)
/etc/
Ficheros de configuración para todo el sistema (viene de etcétera)

/home/
La home o "casa" de usuarios
/lib/
Librerías esenciales para los binarios de /bin/ y /sbin/ (librerías necesarias para arrancar o rescatar el
sistema)

/lost+found/
Ficheros y fragmentos rescatados durante un fsck (No es parte de la FHS)

/mnt/
Sistemas de ficheros temporales montados

/media/
Puntos de montaje para medias desmontables como CD-ROMs (aparece en FHS-2.3)

/opt/
Paquetes de software de aplicaciones add-on

Precompilados, distribuciones binarias que no sean paquetes ".deb" (tar...) van aquí.
/opt/bin/ : Igual que en la jerarquía de alto nivel
/opt/include/ : Igual que en la jerarquía de alto nivel
/opt/lib/ : Igual que en la jerarquía de alto nivel
/opt/sbin/ : Igual que en la jerarquía de alto nivel
/opt/share/ : Igual que en la jerarquía de alto nivel

/proc/
Sistema de ficheros virtual documentando el kernel y procesos, ficheros de texto en su mayoría (como
uptime y network)

/root/
Home o "casa" para el usuario root

/sbin/
Binarios administrativos del sistema (como init, route o ifup) (system binaries) (ficheros necesarios para
arrancar o rescatar el sistema)
/tmp/
Ficheros temporales.

/selinux/
Configuraciones de SE-Linux (no es parte de la FHS)

/srv/
Datos servidos por el sistema (no es parte de la FHS)

/sys/
Sistema de ficheros para exportar objetos del kernel (system)
(muchos ficheros de /proc/* deberían residir aquí...)

/usr/
Segundo nivel de jerarquía para datos compartidos de solo lectura (formalmente, viene de UNIX source
repository, ahora de UNIX system resources) (ficheros que no son necesarios para arrancar o rescatar el
systema)
/usr/bin/ : Igual que en la jerarquía de alto nivel
/usr/include/ : Ficherosinclude estándares
/usr/lib/ : Igual que en la jerarquía de alto nivel
/usr/sbin/ : Igual que en la jerarquía de alto nivel
/usr/share/ : Datos independientes de la arquitectura (shared o "compartidos)
/usr/src/ : Source code o código fuente (para crear paquetes de debian. ver también /usr/local/src/)
/usr/X11R6/ : X Window System, Version 11 Release 6
/usr/local/ : Tercer nivel de jerarquía para datos locales instalados por el administrador
/usr/local/bin : binarios compilados localmente, shell scripts locales, etc.
/usr/local/src : Source code o código fuente (sitio donde extraer y compilar cosas que no sean
de debian)

/var/
Datos variables (como logs, bases de datos, páginas web o correos electrónicos)

4. Dispositivos

Los dispositivos que pueden conectarse a la placa base por puertos, ranuras o por intermedio de
tarjetas adaptadoras tienen direcciones de entrada salida (también llamadas puertos E/S) que les
permiten intercambiar datos con el procesador, pueden emplear además unos cables especiales del
procesador llamados líneas IRQ (Interruption Request) para solicitar atención especial (por ejemplo
cuando un dato llega a un modem, este puede activar la línea IRQ que tenga asignada para
solicitar procesamiento del dato), eventualmente pueden emplear canales DMA (Direct Memory Access)
para transmitir información directamente a la memoria sin intervención del procesador y
eventualmente si el dispositivo emplea directamente la memoria puede requerir además una dirección
base en memoria compartida para comunicarse con los programas.
Normalmente los recursos citados sólo pueden ser empleados por un dispositivo a la vez, si dos
emplean el mismo recurso pueden entrar en conflicto y no funcionar. Dado que sólo hay 16 líneas IRQ,
65535 direcciones de E/S, 8 canales de DMA (los primeros 4 de 8 bits y los otros 4 de 16 bits) y la
memoria compartida es memoria RAM de su computador (límitada por la cantidad que tenga) debe
configurar nuevos dispositivos teniendo en cuenta los que ya hay (algunos dispositivos y controladores
permiten compartir IRQ con otros). Para conocer la asignación de recursos puede examinar:
/proc/interrupts que lista las interrupciones en uso, /proc/dma que lista DMAs en uso, /proc/ioports
que presenta los puertos E/S asignados (tenga en cuenta que normalmente un dispositivo requiere un
rango de puertos consecutivos, ningún puerto en ese rango debe estar ocupado ---por ejemplo una
tarjeta de red Ethernet requiere un puerto base y los 31 puertos siguientes), /proc/iomem presenta los
rangos de memoria compartida con dispositivos.
El estado de los puertos puede verse o modificarse por intermedio del archivo /dev/port.
A nivel de sistema operativo, Linux presenta los dispositivos que puede manejar como "archivos" del
directorio /dev (ver Ubicación de archivos y directorios), puede consultar la lista de los dispositivos
reconocidos con:
cat /proc/devices

5. Procesos

Un sistema GNU/Linux típico puede prestar muchos servicios simultáneamente, puede ser servidor de
web, al tiempo que es servidor de correo electrónico, puede atender varios usuarios y cada usuario
puede estar realizando simultáneamente diversas acciones. Por esto GNU/Linux es llamado un sistema
multitarea. A cada acción en un sistema GNU/Linux se le llama proceso. Un proceso abstrae una acción
que el sistema debe realizar, independiente del momento en que debe ejecutarse.

Cada proceso tiene asociado un número que lo identifica, un estado que indica cómo está operando, un
grupo que lo asocia con otros procesos, una prioridad que determina su "importancia" con respecto a
otros procesos y un dueño que puede controlarlo (normalmente el dueño es el usuario que inicia el
proceso). Todos los procesos comparten el procesador, para lograrlo, cada proceso emplea el
procesador durante un intervalo corto de tiempo y después duerme o se bloquea para dar posibilidad a
otro proceso de emplearlo (el orden en el que se ejecutan depende de la prioridad de cada proceso).
Normalmente junto con cada programa iniciado por el usuario se inicia un proceso, que a su vez puede
iniciar otros procesos formando así un árbol; puede examinar tal árbol con el programa pstree. Existen
también procesos que no son iniciados explícitamente por un usuario, por ejemplo procesos iniciados
durante el arranque del sistema o por X-Window, tales procesos generalmente pueden ser controlados
sólo por el administrador del sistema ---quien también podría controlar los procesos de los usuarios.

Cada programa o tubería que inicie desde el intérprete de comando se ejecutará en un nuevo proceso
que por defecto estará en primer plano, es decir que bash suspenderá su ejecución y la reanudará
cuando el programa que inició termine. Si desea iniciar un programa (o una secuencia de programas
unidos por tuberías) en segundo plano, agregué al final del comando un espacio y el carácter '&'. Esto
es útil cuando debe ejecutar un programa no interactivo que toma bastante tiempo en completarse,
porque mientras la ejecución del programa se completa puede continuar trabajando en el intérprete de
comandos ---el programa que inicie se ejecutará en segundo plano mientras bash continúa
ejecutándose en primer plano. Por ejemplo la conversión de DVI a PostScript (ver Sistemas para
preparar documentos) de un documento grande puede tomar bastante tiempo, para realizar la labor en
el fondo puede emplear:

dvi2ps -o salida.ps entrada.dvi &

o aún mejor redireccionando salida estándar a archivos para que no se mezclen con su sesión con bash
(error estándar sigue redireccionado a consola así que verá en su sesión con bash los errores que
puedan producirse):

dvi2ps -o salida.ps entrada.dvi >log &

Cuando inicia un programa (o una tubería) en segundo plano, bash reanuda su ejecución
inmediatamente, presenta el número de tarea que asignó al comando y a continuación el número del
proceso.
Además de pstree, un usuario puede ver sus procesos con el programa ps (con la opción -e, ps muestra
todos los procesos del sistema). Junto con cada proceso ps presenta: identificación del proceso; la
terminal en la que presenta información, en caso de que funcione de forma interactiva (por ejemplo
una consola virtual como tty1 o una terminal de X-Window como pts/0); el estado del proceso y el
tiempo que ha usado el procesador ---el resto del tiempo que el proceso haya existido ha estado
durmiendo o esperando algún evento o recurso. Para examinar interactivamente los procesos de un
sistema pueden emplearse los programas top o htop, los cuales además de presentar los procesos y
refrescar continuamente sus estadísticas, permiten enviar señales a cada proceso (entre otras
diferencias top funciona en modo texto mientras que gtop es una aplicación Gnome).

6. Demonios

Un daemon (nomenclatura usada en sistemas UNIX y UNIX-like), servicio (nomenclatura usada en


Windows) o programa residente (nomenclatura usada en MS-DOS) es un tipo especial de proceso
informático no interactivo, es decir, que se ejecuta en segundo plano en vez de ser controlado
directamente por el usuario. Este tipo de programas continua en el sistema, es decir, que puede ser
ejecutado en forma persistente o reiniciado si se intenta matar el proceso dependiendo de
configuración del demonio y políticas del sistema. La palabra daemon viene de las siglas en inglés
D.A.E.MON (Disk And Execution Monitor).

Historia
Los programas demonios reciben este nombre en los sistemas UNIX. En otros sistemas existen procesos
similares como los TSRs de MS-DOS o los servicios de Windows.
Según una investigación realizada por Richard Steinberg, la palabra daemon fue utilizada en 1963 por
primera vez, en el área de la informática, para denominar a un proceso que realizaba backups en unas
cintas. Este proceso se utilizó en el proyecto MAC del MIT y en una computadora IBM 7094. 1 Dicho
proyecto estaba liderado por Fernando J. Corbató, quien afirma que se basó en el demonio de James
Maxwell, este daemon era una especie de vigilante que residía en medio de un recipiente dividido en
dos, lleno de moléculas. El vigilante o daemon se encargaba de permitir, dependiendo de la velocidad
de la molécula, que éstas pasaran de un lado al otro. Los daemons de las computadoras actúan muy
similar al daemon de Maxwell, pues realizan acciones según el comportamiento y algunas condiciones
del sistema.2

Características
Los demonios suelen tener las siguientes características:
★ No disponen de una "interfaz" directa con el usuario, ya sea gráfica o textual.
★ No hacen uso de la entradas y salidas estándar para comunicar errores o registrar su
funcionamiento, sino que usan archivos del sistema en zonas especiales (/var/log/ en los UNIX
más modernos) o utilizan otros demonios especializados en dicho registro como el syslogd.
Por ejemplo, una máquina que alberga un servidor web utilizará un daemon httpd (HTTP Daemon) para
ofrecer el servicio y que los visitantes a dicha web puedan acceder. Otro ejemplo son los demonios
"cronológicos" como cron, que realizan tareas programadas como mantenimiento del sistema en
segundo plano.

7. Documentación
8. Recursos
a. Aprendiendo a aprender Linux
b. https://wiki.debian.org/FilesystemHierarchyStandard
c. http://es.wikipedia.org/wiki/Chmod

También podría gustarte