Upload
nirvatrash
View
74
Download
2
Embed Size (px)
Citation preview
1
A).- Operación del sistema operativo multiusuario sobre
Linux
Introducción al sistema operativo Linux.
La historia de los sistemas operativos (OS) comienza en los años 50, con
simples pruebas probando programas “batch” los cuales son programas que no
interactúan con el usuario en absoluto. Lee todas las entradas de un fichero y
envía todas las salidas a otro fichero (normalmente una impresora). Así era como
los ordenadores solían trabajar.
A los principios de los sesenta, esto empezó a cambiar. Se idearon los
sistemas para que varios usuarios pudieran estar usando el mismo ordenador
desde distintos terminales. Dichos sistemas se llamaron de tiempo compartido y
eran bastante más complejos que los anteriores sistemas “batch”.
Durante el resto de los sesenta hubo muchos intentos de construir sistemas
de tiempo. Muchos fueron proyectos de investigación de universidades y otros
puramente comerciales. Uno de los más innovadores en aquel momento fue el
proyecto Multics. Tenía, por ejemplo, un sistema de ficheros jerárquico, lo cual se
ha utilizado en sistemas operativos más modernos.
Linux solamente es el “Kernel” del sistema operativo. El “Kernel” es la parte
que hace que los programas funcionen, es decir, es la base donde todo lo demás
opera. Habilita tareas de multiusuario, gestión de dispositivos hardware y permite
a las aplicaciones realizar sus funciones. Linux dispone además de un intérprete
de comandos (shell) que permite interactuar con el OS y escribir scripts, que son
pequeños programas para automatizar tareas.
Linux es un sistema operativo multitarea y multiusuario, basado en Unix, de
código libre y puede trabajar en múltiples plataformas hardware.
Como se ha comentado, una de las cosas que hace a Linux tan potente es
su capacidad multitarea y multiusuario. Linux, al igual que Unix, fue diseñado
desde el principio para correr múltiples procesos independientes entre ellos. Para
realizar esto se necesita una buena gestión de la memoria.
Para instalar Linux tienes primero que elegir una distribución. Una distribución
Linux es el “Kernel” más un programa de instalación, y algunas aplicaciones
personalizadas que hacen todas las funciones. Hay cientos de estas
distribuciones, algunas más populares que otras.
2
Sistema de ficheros de Linux
En primer lugar vamos a definir un sistema de ficheros como la organización
lógica de un dispositivo que nos permite almacenar y recuperar información en
forma de fichero. Existen diversos tipos de sistemas de ficheros, es decir
diferentes formas de organizar la información en un dispositivo, normalmente
discos. Entre los más habituales tenemos:
Ext2, ext3 Es el sistema de ficheros nativo de Linux. Se organiza en un
súper bloque, i-nodos y área de datos. Este tipo de sistema de ficheros admite
características multiusuario para indicar los permisos y la propiedad de ficheros y
directorios.
vfat 12, 16 y 32 Es el sistema de ficheros usados por la gama baja de las
plataformas win32. No admite características multiusuario como propiedad de
ficheros. Estos tipos de sistemas de ficheros se basan en un directorio y una tabla
de localización que dependiendo del tamaño de cada elemento se denomina FAT
12, 16 o 32. Linux los admite sin ningún problema, aunque siempre es preferible
usar ext2.
iso9660 Es el sistema de ficheros propio de los CDROM.
Ms dos Análogo a los sistemas FAT, aunque sólo admite ficheros con
nombre 8+3.
Pues bien, para contener ficheros necesitamos crear un sistema de ficheros
en la partición. Para esto disponemos de la orden mkfs, a la cual le tendremos que
indicar el tipo de sistema, con la opción -t y el dispositivo en el que quermos
crearla. Por ejemplo, para crear un sistema de ficheros en la segunda partición del
tercer disco duro ide, pondremos:
mkfs -t ext2 /dev/hdc2
A estas alturas el lector se debe imaginar que al crear un nuevo sistema de
ficheros en una partición se borra el contenido previo de dicha partición.
Al crear un sistema de ficheros se crea automáticamente el
directorio lost+found. Este directorio lo utiliza el sistema para guardar la
información perdida cuando se deteriora el sistema de ficheros correspondiente.
Verificar un sistema de ficheros: fsck
En ciertas ocasiones es necesario verificar la integridad del sistema de
ficheros y corregir los posibles errores que hubiese. Esta acción la realiza la
orden fsck.
3
Interprete de comandos de Linux: Shell
El intérprete de comandos es la interfaz entre el usuario y el sistema
operativo. Por esta razón, se le da el nombre inglés "shell", que significa
"caparazón".
Por lo tanto, la shell actúa como un intermediario entre el sistema operativo
y el usuario gracias a líneas de comando que este último introduce. Su función es
la de leer la línea de comandos, interpretar su significado, llevar a cabo el
comando y después arrojar el resultado por medio de las salidas.
La shell es un archivo ejecutable que debe interpretar los comandos,
transmitirlos al sistema y arrojar el resultado. Existen varios shells. La más común
es sh (llamada "Bourne shell"), bash ("Bourne again shell"), csh ("C
Shell"), Tcsh ("Tenex C shell"), ksh ("Korn shell") y zsh ("Zero shell").
Generalmente, sus nombres coinciden con el nombre del ejecutable.
Cada usuario tiene una shell predeterminada, la cual se activará cuando se
abra un indicador del comando. La shell predeterminada se especifica en el
archivo de configuración /etc/passwd en el último campo de la línea que
corresponde al usuario. Es posible cambiar de shell durante una sesión. Para esto,
sólo debe ejecutar el archivo ejecutable correspondiente, por ejemplo:
/bin/bash
Indicador del sistema
La shell se inicia al leer su configuración completa (en un archivo del
directorio /etc. /) y después al leer la configuración propia del usuario (en un
archivo oculto cuyo nombre comienza con un punto que se ubica en el directorio
básico del usuario, es decir /home/user_name/.configuration_file). A continuación,
aparece el siguiente indicador (prompt en inglés):
Equipo: /directorio/actual$
De manera predeterminada, para la mayoría de las shells, el indicador
consiste en el nombre del equipo, seguido de dos puntos (:), el directorio actual y
después un carácter que indica el tipo de usuario conectado:
"$" especifica un usuario normal
"#" especifica el administrador, llamado "root"
4
Principales ordenes de Linux:
ls : Listar archivos y directorios
cp : Copiar archivos y directorios
pwd : Mostrar el nombre del directorio de trabajo actual
cd : Cambiar de directorio
sort : Ordenar ficheros
mkdir : Crear directorios
touch : Crear o actualizar ficheros
rm : Borrar archivos y/o directorios
rmdir : Borrar directorios vacios
mv : Mover o renombrar archivos
more : Muestra ficheros página a página
less : Muestra Ficheros página a página
cat : Mostrar ficheros de forma continua
head : Ver el inicio de un archivo
tail : Ver las últimas líneas de un archivo
find : Buscar archivos
grep : Buscar el patrón pasado como argumento en uno o más archivos
wc : Calcular la cantidad de cadenas y palabras en archivos
ln : Crea enlace entre ficheros
5
Configuración del entorno (variables)
Hay varios métodos para añadir variables de entorno en linux. Normalmente
existen diferentes scripts que se ejecutan en diferentes eventos, por ejemplo,
cuando un usuario se ingresa en el sistema se ejecuta un archivo llamado .bashrc.
Este es un archivo de sistema que se encuentra en la carpeta del usuario
/home/usuario/.bashrc
Este script es un buen lugar para añadir la variable de entorno. Aunque
también existen otros sitios.
En este ejemplo veremos cómo añadir una ruta a la variable de entorno
PATH, que es una variable común para asignar rutas de aplicaciones y comandos
que se instalan en el sistema.
Podemos usar cualquier editor para modificar los datos, por ejemplo
Para evitar sobre escribir esta variable (es posible que se haya definido en
otro sitio), podemos hacerlo de añadiendo esta línea al final del archivo
Entorno gráfico: x –Windows- x11
Se trata de la herramienta de software para el desarrollo de interfaces
gráficas de usuario (GUI's) para estaciones de trabajo. Una GUI es en pocas
palabras una interfaz usuario / computadora que se ejecuta en modo gráfico. X-
Windows para Linux y para todos los sistemas más basados es UNIX lo que MS
Windows es para los sistemas basados en DOS. Con una gran diferencia, que X-
Windows es un estándar para los sistemas de ventanas basados en UNIX. Esta
estandarización supone que cualquier interfaz GUI puede ser ejecutada en
cualquier computadora e incluso en varias a la vez. Más información en [SHV+93].
El sistema X Windows se encarga de mostrar la información gráfica, está
construido con arquitectura cliente-servidor y es una capa totalmente
independiente del Sistema Operativo. Cuando instalemos en una máquina el
sistema X Windows se instalarán tres componentes:
El servidor X: es el servidor gráfico.
El display manager: se encarga del login gráfico.
El cliente X (o Windows manager): es el cliente gráfico.
6
Gestores de ventanas: clientes de –x11
Un gestor de ventanas no es otra cosa que el conjunto de programas,
ventanas, funcionalidades que hacen posible que el usuario pueda interactuar con
el sistema de forma gráfica y no en modo texto.
Para usar un gestor de ventanas, hay que tener configurado un servidor X.
También hay que decir que el gestor de ventanas utilizado es totalmente
independiente del servidor X utilizado.
Gestor de ventanas
|
|
Cliente X
|
|
Xlib
|
|
Servidor X
|
|
Sistema operativo
Al contrario que en otros sistemas operativos, en Linux no es necesario utilizar un
servidor X - gestor de ventanas para usar el sistema. El sistema operativo y el
conjunto servidor X - gestor de ventanas usado, son cosas totalmente diferentes,
independientes entre sí. Es más, existen usuarios que trabajan en modo texto sin
ningún problema y sin usar un interfaz gráfico.
Existen numerosos y variados gestores de ventanas para Linux, unos mejores y
otros más desarrollados y estables. Es el usuario el que tiene que decidir que
gestor satisface mejor sus necesidades, pudiendo incluso tener más de uno
instalado. Para aclarar un poco las cosas, podríamos decir que, si un ordenador es
usado por varios usuarios, todos utilizaran el mismo servidor X pero no
necesariamente el mismo gestor de ventanas.
7
Procesos de Linux: tipos y estado
Interactivos (primer o segundo plano): un proceso que corre en primer plano
("fg" de foreground) normalmente es aquél que introducimos por teclado y
podemos ver por pantalla en una ventana de terminal. Una consola concreta está
bloqueada cuando un proceso está en primer plano, mientras que si está en
segundo plano la consola está libre y podemos teclear comandos en ella mientras
se sigue ejecutando el proceso en segundo plano. Un proceso ejecutándose en
primer plano puede ser cancelado con Ctrl+C, en cambio para cancelar un
proceso en segundo plano será necesario utilizar el comando kill.
- Encolados o batch
- Demonios (daemons): son procesos que se ejecutan en segundo plano pero no
interactivos. Son programas que se encargan de gestionar y administrar el
sistema, de forma transparente para el usuario (crond, atd, pppd, ...).
Hay una cola sencilla de procesos. Cada entrada de la cola esun puntero a
un proceso en particular. Cuando un proceso se interrumpe, se le pasa a la cola
de procesos en espera. Por otra parte, si un proceso termina o se abandona, se le
descarta del sistema (sale del sistema). En cualquier caso, el distribuidor
selecciona entonces un proceso de la cola para ejecutarlo.
Señales entre procesos
Las señales de Unix no son más que unos mecanismos que permiten
informar a los procesos de eventos que han sido provocados, por ellos mismos o
por otros procesos. Es comparable con la gestión de interrupciones lógicas.
Cuando le llega una señal a un proceso el sistema interrumpe la ejecución normal
del proceso (o de cualquier función o llamada que este hubiera realizado) para
ejecutar la función de desviación.
Las señales se representan mediante unas constantes definidas en el
archivo de cabecera <signal.h y tienen el formato siguiente: SIGXXX.
Las señales se pueden generar de varias maneras:
Excepción hardware
Llamada al sistema kill
Evento gestionado por el núcleo (alarmas)
Interacción del usuario y el terminal (Ctrl-z)
8
Tareas programadas
Las tareas programadas en Linux se llevan a cabo con crontab. Podemos
distinguir entre crontab, que sería el programa en sí, y cron, que es el demonio
encargado de ejecutar las tareas programadas. en principio, crontab viene
instalado por defecto en las distros que he probado (Suse, Debian, RedHat,...) por
lo que me saltaré la parte de la instalación. Antes de continuar, comentar que
usaré para desarrollar el ejercicio una shell, insistiendo en el mayor potencial que
aporta sobre una GUI (Graphic User Interface). De todos modos, también tenéis la
posibilidad de usar aplicaciones gráficas, por ejemplo, kron. Sobre el comando
crontab, su sintaxis es la siguiente:SYNOPSIS crontab [ -u user ] file crontab [ -u
user ] { -l | -r | -e }
-l : muestra por pantalla las tareas programadas del usuario indicado con la
opción -u, o si se omite dicho parámetro, del usuario logueado en el sistema.
-r: elimina las tareas del usuario indicado o del que está logueado.
-e: edita el fichero en el que se indican las tareas a ejecutar
9
B).- Manejo del sistema de archivos, discos y otros
dispositivos.
Los sistemas de archivos soportados por Linux
Linux soporta una gran cantidad de tipos diferentes de sistemas de
archivos. Para nuestros propósitos los más importantes son:
minix
El más antiguo y supuestamente el más fiable, pero muy limitado en
características (algunas marcas de tiempo se pierden, 30 caracteres de longitud
máxima para los nombres de los archivos) y restringido en capacidad (como
mucho 64 MB de tamaño por sistema de archivos).
xia
Una versión modificada del sistema de archivos minix que eleva los límites
de nombres de archivos y tamaño del sistema de archivos, pero por otro lado no
introduce características nuevas. No es muy popular, pero se ha verificado que
funciona muy bien.
Ext3
El sistema de archivos ext3 posee todas las propiedades del sistema de
archivos ext2. La diferencia es que se ha añadido una bitácora (journaling). Esto
mejora el rendimiento y el tiempo de recuperación en el caso de una caída del
sistema. Se ha vuelto más popular que el ext2.
Ext2
El más sistema de archivos nativo Linux que posee la mayor cantidad de
características. Está diseñado para ser compatible con diseños futuros, así que las
nuevas versiones del código del sistema de archivos no necesitarán rehacer los
sistemas de archivos existentes.
ext
Una versión antigua de ext2 que no es compatible en el futuro. Casi nunca
se utiliza en instalaciones nuevas, y la mayoría de la gente que lo utilizaba han
migrado sus sistemas de archivos al tipo ext2.
10
reiserfs
Un sistema de archivos más robusto. Se utiliza una bitácora que provoca
que la pérdida de datos sea menos frecuente. La bitácora es un mecanismo que
lleva un registro por cada transacción que se va a realizar, o que ha sido realizada.
Esto permite al sistema de archivos reconstruirse por sí sólo fácilmente tras un
daño ocasionado, por ejemplo, por cierres del sistema inadecuados.
Adicionalmente, existe soporte para sistemas de archivos adicionales
ajenos, para facilitar el intercambio de archivos con otros sistemas operativos.
Estos sistemas de archivos ajenos funcionan exactamente como los propios,
excepto que pueden carecer de características usuales UNIX, o tienen curiosas
limitaciones, u otros inconvenientes.
msdos
Compatibilidad con el sistema de archivos FAT de MS-DOS (y OS/2 y
Windows NT).
umsdos
Extiende el dispositivo de sistema de archivos ms dos en Linux para obtener
nombres de archivo largos, propietarios, permisos, enlaces, y archivos de
dispositivo. Esto permite que un sistema de archivos ms dos normal pueda
utilizarse como si fuera de Linux, eliminando por tanto la necesidad de una
partición independiente para Linux.
vfat
Esta es una extensión del sistema de archivos FAT conocida como FAT32.
Soporta tamaños de discos mayores que FAT. La mayoría de discos con MS
Windows son vfat.
iso9660
El sistema de archivos estándar del CD-ROM; la extensión popular Rock
Ridge del estándar del CD-ROM que permite nombres de archivo más largos se
soporta de forma automática.
nfs
Un sistema de archivos de red que permite compartir un sistema de
archivos entre varios ordenadores para permitir fácil acceso a los archivos de
todos ellos.
11
smbfs
Un sistema de archivos que permite compartir un sistema de archivos con
un ordenador MS Windows. Es compatible con los protocolos para compartir
archivos de Windows.
hpfs
El sistema de archivos de OS/2.
Los comandos mount y unmount
Monta o muestra un listado de los dispositivos. Se puede utilizar el
coman fdisk -l para visualizar los dispositivos existentes en las particiones o si es
un pendrive ejecutar tail -f /var/log/syslog antes de montarlo. Si no tienes
privilegios puedes usar el comando pmount en lugar del comando mount.
mount -t [SistemaArchivo] /dev/[dispositivo] [punto_montaje] Monta el
dispositivo
umount /dev/[dispositivo] Desmonta un disco
mount -t vfat/dev/hd0 /mnt/diskette
mount -o loop -t iso9660 archivo.iso carpeta monta la imagen
iso archivo.iso en carpeta
mount -o loop -t vfat pp.img ~/aca/ monta una imagen *.img
mount -a hace que todos los sistemas de ficheros mencionados
en /etc/fstab se monten como se indique allí.
mount y umount mantienen una lista de los sistemas de ficheros montados
actualmente en el fichero /etc/mtab. Si no se dan argumentos a mount, se muestra
esta lista.
12
El archivo de configuración: FSTAB
File systems table) se encuentra comúnmente en sistemas Unix (en el
directorio /etc/) como parte de la configuración del sistema. Lo más destacado de
este fichero es la lista de discos y particiones disponibles. En ella se indica
como montar cada dispositivo y qué configuración utilizar.
Particiones del disco duro
Es realizar una división en él de modo que, a efectos prácticos, el sistema
operativo crea que tienes varios discos duros, cuando en realidad sólo hay un
único disco físico dividido en varias partes. De este modo, se pueden modificar o
borrar particiones sin afectar a los demás datos del disco.
Las particiones básicas se llaman primarias y puede haber a lo sumo 4.
Esto puede ser suficiente para nuestros intereses. Como a veces no es así, se
crearon las particiones extendidas que pueden albergar otras particiones dentro,
llamadas lógicas.
Los sistemas de archivos indican el modo en que se gestionan los archivos
dentro de las particiones. Según su complejidad tienen características como
previsión de apagones, posibilidad de recuperar datos, indexación para búsquedas
rápidas, reducción de la fragmentación para agilizar la lectura de los datos, etc.
Hay varios tipos, normalmente ligados a sistemas operativos concretos.
Formatear discos
Una partición tiene que tener un sistema de archivos. Linux sabe cómo usar
varios sistemas de archivos. Hay Ext3, Ext2, ReiserFs y por los más
experimentados el XFS y JFS. Ext2 es útil como un formato de almacenamiento
en vista de que hay una interprete disponible para Windows para intercambiar
datos. [Linux puede leer y escribir en sistemas FAT.]
Para uso normal recomendamos el sistema de archivos ext3, que es la
sistema de archivos pre-seleccionada para sidux, que es bien mantenida.
Formatear
Después de cerrar el cfdisk regresamos a la consola. Para formatear, tiene
que ser raíz (root). Para formatear la partición root “/” y/o home, en este
ejemplo hdb1, entramos: (si está en una instalación sobre el DD tiene que entrar el
clave de raíz (root) aquí):
13
Su
mkfs -t ext3 /dev/hdb1
Le hará una pregunta, que se contesta con “yes” si está seguro que ha
escogido la partición correcta.
Cuando termina el comando, le dará una aviso, que el formateo ext3 fue
exitosamente escrito al disco. Si no veas eso, probablemente algo fue malo en el
particionamiento con cfdisk, o el hdb1 no es una partición de Linux. En este caso,
puede chequear con:
fdisk -l /dev/hdb
Si algo es equivocado, quizás tendrás que particionar de nueva.
Si fue exitoso el formateo, repita el mismo procedimiento para la partición de
/home, si deseas una separado.
Últimamente, formateamos la partición de intercambio (swap), en este
ejemplo, el hdb3:
mkswap /dev/hdb3
Después de eso:
swapon /dev/hdb3
Entonces verificamos, si el swap está reconocido, entrando en una consola:
swapon -s
y el swap nuevamente montado debe ser reconocido ahora, en nuestro caso
como:
14
Asignación de sistema de archivo
Un sistema de archivo está diseñado para el almacenamiento de archivos
en una unidad de disco. Dependen de un gestor de archivos para ser
manipulados, ya que sin este no se pueden ejecutar órdenes que interactúen con
los archivos que contiene. Está conformado sector de almacenamiento de aprox.
512 bytes de tamaño. Se encarga de determinar que sectores utilizar y de que
forma hacerlo que el almacenado de información. Esta organización se visualiza
como archivos y carpetas para hacerlo fácil de usar y entender para el usuario
final.
Mantener un sistema de archivos (o File System en inglés) a pleno
funcionamiento tiene como resultado un sistema eficiente y sin problemas. Los
problemas que pueden afectar a la integridad del sistema de archivos pueden ser
variados, pero cualquiera sea este también hay formas de solucionarlo.
Integridad de sistema de fichero
Organización lógica de un dispositivo que nos permite almacenar y
recuperar información en forma de fichero. Existen diversos tipos de sistemas de
ficheros, es decir diferentes formas de organizar la información en un dispositivo,
normalmente discos. Entre los más habituales tenemos:
Ext2, ext3 Es el sistema de ficheros nativo de Linux. Se organiza en un
súper bloque, i-nodos y área de datos. Este tipo de sistema de ficheros admite
características multiusuario para indicar los permisos y la propiedad de ficheros y
directorios.
vfat 12, 16 y 32 Es el sistema de ficheros usados por la gama baja de las
plataformas win32. No admite características multiusuario como propiedad de
ficheros. Estos tipos de sistemas de ficheros se basan en un directorio y una tabla
de localización que dependiendo del tamaño de cada elemento se denomina FAT
12, 16 o 32. Linux los admite sin ningún problema, aunque siempre es preferible
usar ext2.
iso9660Es el sistema de ficheros propio de los CDROM.
msdos Análogo a los sistemas FAT, aunque sólo admite ficheros con
nombre 8+3.
15
C).- Configuración y administración del sistema operativo
Linux.
Instalación del sistema operativo Linux
Paso 1: Crear una nueva máquina virtual dentro de VMWare. Se elige la
configuración típica para evitar problemas. Se asignará automáticamente 2Gb de
espacio en disco para grabar todos los componentes del sistema operativo.
Paso 2: En la barra de herramientas pulsamos la tecla de play para activar la
máquina virtual. Previamente a este paso deberemos haber insertado el CD de
instalación del nuevo S.O. en el lector ya que será lo primero que haga cuando
pulsemos dicho botón.
Paso 3: Al pulsar el botón del paso 2 veremos que se carga en primer lugar un
cargado de sistemas del propio VMware para posteriormente empezar la
instalación del S.O. En nuestro caso hemos elegido Mandrake 9.1 sobre Windows
XP. A partir de ahora veremos los pasos de instalación de este sistema operativo
ya que la instalación en VMware no contendrá más pasos adicionales.
Paso 4 (Mandrake): En la primera pantalla elegiremos el idioma en que se
mostrará el S.O. En nuestro caso, español, por supuesto.
Paso 5 (Mandrake): La pantalla de la licencia es bastante conocida. Más vale que
digas que aceptas, de lo contrario ni instalación ni nada.
Paso 6 (Mandrake): Seleccionamos el tipo de ratón que tenemos. En la siguiente
pantalla te pedirá que lo pruebes así es que si tienes uno con rueda elige el que yo
he puesto y entonces te funcionará la ruedecita.
Paso 7 (Mandrake): Después de seleccionar el tipo de teclado, por supuesto,
español, nos pedirá que elijamos un login para el administrador de seguridad y el
nivel de seguridad que queremos en nuestro sistema.
Paso 8 (Mandrake): Acto seguido nos pedirá que elijamos o bien se usa todo el
espacio libre que encuentre en la partición donde se instala el S.O., o bien
ejecutamos su programa para particionar el disco y elegir una partición donde
instalarlo. En nuestro caso, y como es una simulación, hemos elegido usar el
espacio libre, que será como mucho de 2Gb según hayamos configurado la virtual
machine en su creación (Pasos 1 y 2)
Paso 9 (Mandrake): Llegamos al punto donde se nos pide que elijamos el modo en
que va a funcionar este sistema operativo. Es decir, dependiendo de las opciones
elegidas se instalarán más o menos paquetes en la instalación del S.O. Nosotros
hemos elegido que funcione como un servidor para tener más funcionalidad y
control en el sistema. Paso 10 (Mandrake): Con todo lo dicho anteriormente
llegamos al punto de la instalación. Aquí es donde empieza la instalación del
nuevo S.O.
Paso 11 (Mandrake): En este paso nos pedirá que insertemos el CD3 llamado
16
"Internacionalización". Si no poseemos dicho CD, mi caso, por ejemplo, pulsamos
"Cancelar" y entonces nos pedirá el login y pass del administrador (root)
Paso 12 (Mandrake): Una vez introducido el login y pass del root, nos pedirá que
al menos creemos un usuario con su nombre, login, pass y el icono con el que se
mostrará.
Paso 13 (Mandrake): En este paso da la posibilidad de iniciar siempre la sesión
con un usuario y con un entorno gráfico predefinido. Evidentemente le decimos
que no.
Paso 14 (Mandrake): Este paso es como un resumen de cómo va a quedar
nuestro S.O. una vez que hemos elegido todas sus características a lo largo de la
instalación. Nos ofrece la posibilidad de cambiar algunas características del
hardware del que disponemos.
Paso 15 (Mandrake): Una vez configurados todos los parámetros se reiniciará y
cargará el nuevo S.O. que se ha instalado.
Instalación de aplicaciones bajo Linux
Os paquetes son a Linux como los .exe son a Windows. Estos son
sumamente fáciles de instalar en la mayoría de casos, una vez que los enlaces
dados como "Prerrequisitos" hayan sido realizados.
Los paquetes se presentan con las extensiones .rpm (para "Red-hat Package
Management") en las distribuciones Mandrake, RedHat, Fedora Core y Suse, bajo
la forma .deb para Debían, Ubuntu etc... y bajo la forma .tgz para Slackware.
Se instalan con el comando rpm -ivh programme.rpm o dpkg -i
programme.deb o incluso installpkg programme.tgz
Sin embargo varios problemas pueden presentarse: el paquete que se
desea instalar (programa A) necesita la instalación de otro programa
(programa_B) antes que nuestro programa A: hará falta entonces ir a buscar el
paquete del programa para instalarlo, pero nuevamente éste puede necesitar de la
presencia de un programa, y así sucesivamente... Son las denominadas
dependencias, y esto puede volverse rápidamente muy complicado si el programa
A depende del prog_a, prog_b, prog_c y prog_d y a su vez cada uno de ellos
depende igualmente de una decena de programas para simplificar la vida del
usuario, la mayoría de las grandes distribuciones modernas integran un sistema
de gestión de paquetes, que tendrá por rol (entre otros) gestionar las
dependencias en lugar del usuario. Así, la instalación del programa A se hará con
el llamado de un comando: "instale-me programa A", y la herramienta de gestión
irá a buscar en los sitios web previamente definidos el programa_A, verificará si el
programa_A depende de otros paquetes, y si es el caso, los descargará e instalará
17
en el orden correcto: programa_C, luego el programa_B que depende de C, luego
el programme_A que dependía de B.
Estas herramientas varian de una distribución a otra, pero obedecen a algunas
generalidades de funcionamiento
Administradores de inicio
Lilo
Es un gestor de arranque que permite elegir, entre sistemas
operativos Linux y otras plataformas, con cual se ha de trabajar al momento de
iniciar un equipo con más de un sistema operativo disponible. Fue desarrollado
inicialmente por Werner Almesberger, actualmente está a cargo de John Coffman.
LILO funciona en una variedad de sistemas de archivos y puede arrancar
un sistema operativo desde el disco duro o desde un disco flexible externo . LILO
permite seleccionar entre 16 imágenes en el arranque. LILO puede instalarse
también en elmaster boot record (MBR).
Al iniciar el sistema LILO solamente puede acceder a los drivers de
la BIOS para acceder al disco duro. Por esta razón en BIOS antiguas el área de
acceso está limitada a los cilindros numerados de 0 a 1023 de los dos primeros
discos duros. En BIOS posteriores LILO puede utilizar sistemas de acceso de 32
bits permitiéndole acceder a toda el área del disco duro.
En las primeras distribuciones de Linux, LILO era el gestor de facto utilizado
para arrancar el sistema. En la actualidad es una segunda opción en favor del
gestor de arranque GRUB.
Loadlin
Otra forma de cargar Linux es desde DOS o Windows 9x, donde el núcleo
de Linux reemplaza completamente la copia de funcionamiento de estos sistemas
operativos. Esto puede ser útil en el caso de hardware que necesita ser conectado
a través del software y la configuración de estos programas sólo está disponible
para DOS y no para Linux, debido a cuestiones de secretos industriales y código
propietario. Sin embargo, esta tediosa forma de arranque ya no es necesaria en la
actualidad ya que Linux tiene drivers para multitud de dispositivos hardware. Aun
así, esto era muy útil en el pasado.
Otro caso es cuando Linux se encuentra en un dispositivo que el BIOS no lo
tiene disponible para el arranque.
18
Configuración del sistema operativo Linux
Abrir una cuenta de usuario para usar el sistema. El usuario "root" solo se
debe utilizar para tareas de administración del sistema
Hacer funcionar el sistema de ventanas X-Windows. Mucho más cómodo
utilizar el sistema en modo grafico que en modo texto, no?
Configurar tu conexión a Internet.
Instalar programas que no vengan con la distribución
Administración del sistema operativo Linux
La administración de bajo nivel suele ser mucho más dura, pero sabemos
qué estamos haciendo y dónde podemos ver los resultados, además de que nos
aporta muchos conocimientos extra sobre las diferentes tecnologías utilizadas.
Las distribuciones escogidas han sido: Debian GNU/Linux Etch (4.0), y
Fedora Core 7 (basada en Red Hat), utilizadas en el momento de revisar este
documento (la primera edición a finalesdel 2003 estaba basada en Debian
Gnu/Linux Woody 3.0 y Red Hat 9). La distribución Debían es un paradigma
dentro del movimiento Open Source, por no pertenecer a ninguna empresa y estar
confeccionada sólo por las aportaciones de los voluntarios distribuidos por todo el
mundo. Debian, además, integra exclusivamente software libre (pueden añadirse
otros aparte).
Fedora Core por otra parte, es la distribución que cuenta con el soporte
comunitario amplio, y es base de las distribuciones de una de las empresas más
solventes en el panorama comercial, Red Hat, y por eso sea quizás la que otorgue
más soporte a nivel empresarial (mediante servicios de pago). En Debian y
Fedora, el soporte depende de los voluntarios y delconocimiento compartido de los
usuarios.
Siendo la administración de sistemas un campo tan amplio, este manual
sólo pretende introducirnos en este apasionante (y cómo no, también a veces
frustrante) mundo. Veremos algunas de las tareas típicas, y cómo tratar las
problemáticas; pero la administración es un campo que se aprende día a día, con
el trabajo diario. Y desde aquí advertimos de que este manual es un trabajo
abierto, que con sus aciertos y los más que probables errores, se puede ver
complementado con los comentarios de sus (sufridores) usuarios. De modo que
son bienvenidos cualquier tipo de comentarios y sugerencias de mejora de los
materiales.
19
Administración de usuarios y grupos
El control de los usuarios y grupos es un elemento clave en la
administración de sistemas de Red Hat Enterprise Linux.
Los Usuarios pueden ser gente real, es decir, cuentas ligadas a un usuario
físico en particular o cuentas que existen para ser usadas por aplicaciones
específicas.
Los Grupos son expresiones lógicas de organización, reuniendo usuarios
para un propósito común. Los usuarios dentro de un mismo grupo pueden leer,
escribir o ejecutar archivos que pertenecen a ese grupo.
Cada usuario y grupo tiene un número de identificación único
llamado identificador de usuario (UID) y un identificador de grupo (GID)
respectivamente.
Un usuario que crea un archivo se convierte en el propietario y el propietario
de grupo para ese archivo. Al archivo también se le asignan permisos separados
de lectura, escritura y ejecución para el propietario del archivo, para el grupo y
para cualquier otro usuario. Solamente el superusuario (root) puede cambiar el
propietario de un archivo, y los permisos de acceso se pueden cambiar tanto por
el superusuario como por el creador del archivo.
Red Hat Enterprise Linux soporta listas de control de acceso (ACLs) para
archivos y directorios lo que permite colocar permisos para usuarios específicos
además del creador. Para más información sobre el uso de ACLs, consulte el
capítulo llamado Listas de Control de Acceso en el Manual de administración del
sistema de Red Hat Enterprise Linux.
Una de las tareas más importantes de cualquier administrador del sistema,
es la de administrar adecuadamente usuarios y grupos, así como asignar y
revocar permisos. Para una vista detallada de las estrategias para la
administración de usuarios y grupos, consulte el capítulo titulado Administración
de cuentas de usuarios y acceso a recursos en la guía Introducción a la
administración de sistemas de Red Hat Enterprise Linux.
20
Permisos de archivos y de directorios
En Linux, todo archivo y directorio tiene tres niveles de permisos de acceso:
los que se aplican al propietario del archivo, los que se aplican al grupo que tiene
el archivo y los que se aplican a todos los usuarios del sistema. Podemos ver los
permisos cuando listamos un directorio con ls -l:
$> ls -l
-rwxrwxr-- 1 sergio ventas 9090 sep 9 14:10 presentacion
-rw-rw-r-- 1 sergio sergio 2825990 sep 7 16:36 reporte1
drwxr-xr-x 2 sergio sergio 4096 ago 27 11:41 videos
Veamos por partes el listado, tomando como ejemplo la primera línea. La
primera columna (-rwxrwxr--) es el tipo de archivo y sus permisos, la siguiente
columna (1) es el número de enlaces al archivo, la tercera columna (sergio)
representa al propietario del archivo, la cuarta columna (ventas) representa al
grupo al que pertence al archivo y las siguientes son el tamaño, la fecha y hora de
última modificación y por último el nombre delarchivo o directorio.
Sistemas de impresoras
La forma más simple (con mucho) de imprimir en el sistema operativo Linux
es enviar el fichero a ser impreso directamente al dispositivo de impresión. Una
manera de hacer esto es usar el comando cat. Como usuario root, uno puede
hacer lo siguiente:
# cat tesis.txt > /dev/lp
En este caso, /dev/lp es un enlace simbólico al verdadero dispositivo de
impresión (una matricial, láser, tipográfica o plotter). Mira la página del
man ln(1) para más información acerca de enlaces simbólicos.
Para el propósito de la seguridad, sólo el usuario root y los usuarios de su
mismo grupo como el demonio de impresión son capaces de escribir directamente
a la impresora. Es por esto por lo que se tienen que usar comandos
como lpr, lprm y lpq para acceder a la impresora.
Por esto, los usuarios tienen que usar lpr para imprimir un fichero. El
comando lpr es responsable de preocuparse por el trabajo inicial para imprimir un
fichero, pasando entonces el control a otro programa, lpd, el demonio de las
impresoras de líneas.
21
Mantenimiento del sistema: seguridad
La tarea mínima de mantenimiento es comprobar regularmente el sistema y
los ficheros de registro de cada aplicación buscando condiciones de error y
eventos inusuales. Por lo general, es posible hacer esto escribiendo un par de
scripts de shell y ejecutándolos periódicamente mediante la orden cron. Se podrá
encontrar algunos de estos scripts en distribuciónes fuente de algunas
aplicaciones importantes como inn o C News. Luego de obtenerlos, sólo se tendrá
que retocarlos para adecuarlos a nuestras necesidades y preferencias.
La salida de cualquiera de los trabajos de nuestro cron, se debería enviar a una
cuenta de administración. Por defecto, muchas aplicaciones enviaran informes de
errores, estadísticas de uso, o resúmenes del fichero de registro a la cuenta de
root. Esto solo tiene sentido si se ingresa al sistema como root frecuentemente.
Una idea mucho mejor es redirigir el correo de root a nuestra cuenta personal,
estableciendo un alias de correo como se describe en Capítulo 19 y en Capítulo
18.
De todos modos, por muy cuidadoso que sea configurando su máquina, la ley de
Murphy garantiza que surgirá algún problema en el futuro. Por lo tanto, el
mantenimiento de un sistema implica también estar disponible para quejas.
Generalmente la gente espera que se pueda contactar con el administrador del
sistema al menos por correo electrónico, como root. Sin embargo, existen otras
denominaciones para direcciones de correo usadas comúnmente para contactar a
los posibles encargados de la administración de respectivos servicios del sistema.
Por ejemplo, las quejas sobre el mal funcionamiento del correo se dirigirán
generalmente al postmaster (encargado del correo). Del mismo modo, los
problemas con el sistema de noticias pueden ser comunicados a newsmaster o al
usenet. El correo al hostmaster se debería redirigir a la persona encargada de los
servicios básicos de red del nodo, y del servicio de nombres DNS si esta corriendo
un servidor de nombres.
22
Comunicación entre usuarios
Las comunicaciones entre usuarios del sistema operativo Linux son de una
gran importancia, ya que permite al súper usuario avisar a los usuarios de los
cambios que se produzcan en el sistema, nuevos usuarios, nuevas normas,
apagado del sistema, noticias, etc. Pero también se utilizan para comunicarse
entre los usuarios.
Comandos
write
Comunicación unidireccional con otro usuario que esté en el sistema en ese
momento. Permite que un usuario envíe un mensaje a un terminal.
Sintaxis:
write nombre usuario < fichero mensaje
O bien
write nombre usuario
Escribir el mensaje
CTRL+D para finalizar el mensaje
En lugar del nombre de usuario podríamos poner el nombre del terminal
(tty).
Para que el usuario o terminal puedan recibir mensajes tendremos que
haber ejecutado la orden: mesg y.
mesg
Controla la recepción de mensajes desde otros usuarios que estén
conectados al sistema. Permite o impide que otros usuarios envíen mensajes a
nuestro usuario o terminal.
Sintaxis:
mesg [y|n]
Opciones
y (yes) permite recibir mensajes.
23
N (not) no permite recibir mensajes.
Echo
Comunicación unidireccional con otro usuario que esté en el sistema en ese
momento. Básicamente realiza la misma función que el write pero utilizando un
mecanismo diferente.
Sintaxis:
Echo “hola que tal” >/dev/ttyp3
wall
Comunicación unidireccional con todos los usuarios que estén conectados
al sistema en ese momento. Se utiliza para informar a todos los usuarios sobre
algún tema que les afecte, por ejemplo, avisar que vamos a apagar el sistema.
Normalmente este comando es utilizado por administrador del sistema.
Sintaxis:
wall ficheromensaje
o bien
wall
Escribir el mensaje
CTRL+D
talk
Comunicación bidireccional interactiva con otro usuario que esté conectado
al sistema. Se utiliza para la comunicación bidireccional entre dos usuarios. La
orden talk avisa al segundo usuario que el primer usuario quiere hablar con él.
Esta orden indica a la otra persona qué debe teclear para inicializar la sesión.
Cuando se establece la sesión, cada persona usa una ventana
independiente. Cuando la primera persona escribe la información en la ventana
susperior, aparece en la ventana inferior de la pantalla de la segunda persona, y
viceversa. Además, cada vez que se pulsa una tecla, ésta aparece en ambas
ventanas, por tanto, cada vez que escribe una persona, la otra ve la información.
Sintaxis:
talk nombreusuario
24
motd
Significa message of the day (mensaje del día) y es un buen método para
pasar información a cualquier usuario que acceda al sistema en un determinado
día. En realidad motd es un archivo cuyo contenido aparece en la pantalla al
acceder al sistema. Este archivo se guarda en el directorio /etc y se
llama motd (/etc/motd).
El archivo /etc/issue contiene el mensaje que aparece cuando se inicia una
sesión en el sistema. Después del aviso, la sesión solicita el nombre del usuario y
la contraseña. Este fichero podemos editarlo y poner cualquier mensaje o
información que queramos que aparezca cuando se conecten los usuarios.
La orden mail se utiliza para el correo electrónico. El correo electrónico nos
permite enviar un mensaje sin que el usuario este conectado al sistema. El
sistema crea un buzón de correo para cada usuario y cuando enviamos un
mensaje a un usuario se almacena en su buzón. Cuando se conecta el usuario, si
tiene correo el sistema le avisa con el mensaje You have mail y entonces el
usuario puede leerlo.
La orden mail sirve tanto para enviar un mensaje a uno o varios usuarios,
como para leer los mensajes recibidos.
La orden mail seguida del nombre de uno o varios usuarios permite enviar
correo a los buzones de los usuarios especificados. Una vez pulsada la tecla
<Return>, la orden mail acepta la introducción de líneas de correo hasta que se
pulse la combinación de teclas CTRL+D; momento en que procede a su envío.
Opciones:
-e Hace que mail devuelva un 0 si el buzón está vacío y un 1 en caso
contrario.
-p Imprime todo el correo de manera continuada.
-ffichero Indica al mail que tome los mensajes del fichero especificado.
-q Permite terminar el correo mediante una interrupción.
-h Presenta solo las cabeceras (Subject).
-r Cambia el orden de impresión de forma que el 1º en entrar sea el 1º en
salir.
25
D).-Administración de aplicaciones en entornos
multiusuarios bajo Linux
Código reentrante
Código reentrante es aquel que funciona correctamente si 2 ó más hebras lo
ejecutan simultáneamente. Se dice también que es
thread-safe
.Para que sea reentrante no debe tenerdatos locales o estáticos.El SO debe
ser código reentrante.P.ej. Linux no es 100% reentrante. MS-DOS y la BIOS
no son reentrant
Zona de datos en memoria
Se alojan los datos estáticos de nuestro programa, es decir, las variables
globales del mismo. Suele ser un espacio de memoria limitado, por lo que el
número y tamaño de estas variables también está limitado. Forma junto con la
zona de código la parte estática de la memoria.
26
Variables de entorno en aplicaciones de usuarios
Una variable de entorno es un objeto designado para contener información
usada por una o más aplicaciones.
Variable Descripción
PATH Esta variable contiene una lista de directorios separados por ":" en la cual el sistema buscará los archivos ejecutables. Al introducir el nombre de un ejecutable (como ls, rc-update o emerge) que no se encuentre en un de los directorios listados, el sistema no lo encontrará, (a menos que se introduzca la ruta completa, por ejemplo: /bin/ls).
ROOTPATH Esta variable tiene la misma función que PATH, pero únicamente contiene los directorios que el sistema debe revisar cuando el usuario root introduce un comando.
LDPATH Esta variable contiene una lista de directorios separados por ":" en la cual el enlazador dinámico busca para encontrar una librería.
MANPATH Esta variable contiene una lista de directorios separados por ":" en la cual el comando man busca las páginas de manual.
INFODIR Esta variable contiene una lista de directorios separados por ":" en la cual el comando info busca las páginas info.
PAGER Esta variable contiene la ruta hacia el programa utilizado para mostrar el contenido de los ficheros (como less o more).
EDITOR Esta variable contiene la ruta hacia el programa utilizado para modificar el contenido de los archivos (como nano o vi).
KDEDIRS Esta variable contiene una lista de directorios separados por ":" los cuales contienen material específico de KDE.
CONFIG_PROTECT
Esta variable una lista de directorios separados por espacio los cuales deben ser protegidos por Portage durante las actualizaciones.
CONFIG_PROTECT_MASK
Esta variable una lista de directorios separados por espacio los cuales no deben ser protegidos por Portage durante las actualizaciones.
27
E).-Gestión de las unidades funcionales
Proceso del sistema operativo
Procesos, estados, operaciones.
El hecho de que el sistema operativo sea multitarea implica que podamos
ejecutar más de un programa a la vez. Un proceso no es más que un programa o
aplicación cargado en memoria y ejecutándose. Aunque nuestro ordenador sólo
disponga de una CPU, el sistema operativo se encarga de repartir el tiempo de
procesamiento de la misma para que varios procesos puedan ir ejecutando sus
operaciones, dando la sensación de una ejecución paralela.
Para identificar de forma inequívoca cada proceso, el núcleo del sistema les
asigna un número llamado PID (Process IDentification). Aunque podríamos pensar
que sólo con el nombre ya tendríamos suficiente para identificarlo, es
imprescindible tener el PID ya que podemos ejecutar un proceso tantas veces
como queramos (tendríamos varias instancias del mismo proceso, pero cada una
con un PID distinto).
Si ejecutamos la instrucción Top o Gtop en la consola de Linux nos
mostrará el siguiente el siguiente detalle:
El número de identificador de Proceso (PID),
El usuario que lo está ejecutando (USER),
La prioridad del proceso (PRI),
El valor nice (NI),
El tamaño del proceso (SIZE),
El tamaño total del proceso junto con los datos que maneja (RSS),
El tamaño usado por el proceso en la memoria (SHARE),
El estado del proceso(STAT),
El porcentaje de CPU ( %CPU) y de memoria (%MEM)
El tiempo de ejecución (TIME) y el nombre del proceso (COMMAND).
28
Procesos concurrentes, comunicación entre procesos
Si ejecutamos la instrucción Top o Gtop en la consola de Linux nos
mostrará el siguiente el siguiente detalle:
El número de identificador de Proceso (PID),
El usuario que lo está ejecutando (USER),
La prioridad del proceso (PRI),
El valor nice (NI),
El tamaño del proceso (SIZE),
El tamaño total del proceso junto con los datos que maneja (RSS),
El tamaño usado por el proceso en la memoria (SHARE),
El estado del proceso(STAT),
El porcentaje de CPU ( %CPU) y de memoria (%MEM)
El tiempo de ejecución (TIME) y el nombre del proceso (COMMAND).
Gestión de la memoria
Paginación
El término memoria virtual se asocia normalmente con sistemas que
emplean paginación, aunque también se puede usar memoria virtual basada en la
segmentación. El uso de la paginación en la memoria virtual fue presentado por
primera vez en el computador Atlas.
Cada proceso tiene su propia tabla de páginas y cuando carga todas sus
páginas en la memoria principal, se crea y carga en la memoria principal una tabla
de páginas. Cada entrada de la tabla de páginas contiene el número de marco de
la página correspondiente en la memoria principal. Puesto que sólo algunas de las
páginas de un proceso pueden estar en la memoria principal, se necesita un bit en
cada entrada de la tabla para indicar si la página correspondiente está presente
(P) en la memoria principal o no. Si el bit indica que la página está en la memoria,
la entrada incluye también el número de marco para esa página.
Otro bit de control necesario en la entrada de la tabla de páginas es el bit de
modificación (M), para indicar si el contenido de la página correspondiente se ha
alterado desde que la página se cargó en la memoria principal. Si no ha habido
cambios, no es necesario escribir la página cuando sea sustituida en el marco que
ocupa actualmente.
29
Segmentación
La segmentación permite al programador contemplar la memoria como si
constara de varios espacios de direcciones o segmentos. Los segmentos pueden
ser de distintos tamaños, incluso de forma dinámica. Las referencias a la memoria
constan de una dirección de la forma (número de segmento, desplazamiento).
Esta organización ofrece al programador varias ventajas sobre un espacio
de direcciones no segmentado:
1. Simplifica la gestión de estructuras de datos crecientes. Si el
programador no conoce a priori cuán larga puede llegar a ser una estructura de
datos determinada, es necesario suponerlo a menos que se permitan tamaños de
segmentos dinámicos. Con memoria virtual segmentada, a la estructura de datos
se le puede asignar a su propio segmento y el S.O expandirá o reducirá el
segmento cuando se necesite.
2. Permite modificar y recopilar los programas independientemente,
sin que sea necesario recopilar o volver a montar el conjunto de programas por
completo.
3. Se presta a la compartición entre procesos. Un programador puede
situar un programa de utilidades o una tabla de datos en un segmento que puede
ser referenciado por otros procesos.
4. Se presta a la protección. Puesto que un segmento puede ser
construido para albergar un conjunto de procedimientos y datos bien definido, el
programador o el administrador del sistema podrá asignar los permisos de acceso
de la forma adecuada.
30
Sistema de archivo
Punto vista de usuario
Este estándar del sistema de archivos Linux sigue el mismo principio básico
que la mayoría de los sistemas de archivos UNIX siguen. Note, sin embargo que
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.
Es posible después de cuidadosa consideración de otros factores,
incluyendo:
Prácticas comunes en la comunidad Linux. La implementación de otras
estructuras de sistemas de archivos. Los estándares aplicables.
Punto vista sistemas operativos
Un sistema de archivos son los métodos y estructuras de datos que un
sistema operativo utiliza para seguir la pista de los archivos de un disco o
partición; es decir, es la manera en la que se organizan los archivos en el disco. El
término también es utilizado para referirse a una partición o disco que se está
utilizando para almacenamiento, o el tipo del sistema de archivos que utiliza. Así
uno puede decir “tengo dos sistemas de archivo” refiriéndose a que tiene dos
particiones en las que almacenar archivos, o que uno utiliza el sistema de
“archivos extendido”, refiriéndose al tipo del sistema de archivos.
La diferencia entre un disco o partición y el sistema de archivos que
contiene es importante. Unos pocos programas (incluyendo, razonablemente,
aquellos que crean sistemas de archivos) trabajan directamente en los sectores
crudos del disco o partición; si hay un archivo de sistema existente allí será
destruido o corrompido severamente. La mayoría de programas trabajan sobre un
sistema de archivos, y por lo tanto no utilizarán una partición que no contenga uno
(o que contenga uno del tipo equivocado).
31
Gestión de entrada/salida
Hardware de entrada/salida
Los dispositivos están divididos en dos tipos: los dispositivos de carácter y
los dispositivos de bloque. La diferencia es que los dispositivos de bloque tienen
un búfer para las peticiones, por lo tanto pueden escoger en qué orden las van a
responder. Esto es importante en el caso de los dispositivos de almacenamiento,
donde es más rápido leer o escribir sectores que están cerca entre sí, que
aquellos que están más dispersos. Otra diferencia es que los dispositivos
de bloque sólo pueden aceptar bloques de entrada y de salida (cuyo tamaño
puede variar según el dispositivo), en cambio los dispositivos de carácter pueden
usar muchos o unos pocos bytes como ellos quieran. La mayoría de los
dispositivos del mundo son de carácter, porque no necesitan este tipo de buffering,
y no operan con un tamaño de bloque fijo. Se puede saber cuándo un fichero de
dispositivo es para un dispositivo de carácter o de bloque mirando el primer
carácter de la salida de ls -l. Si es `b' entonces es un dispositivo de bloque, y si es
`c' es un dispositivo de carácter. La controladora o adaptador de dispositivo es
una tarjeta, por lo regular provista de un conector en el cual puede enchufarse un
cable que lleva al dispositivo. Muchas controladoras pueden manejar dos, cuatro o
incluso ocho dispositivos idénticos. Si la interfaz entre la controladora y el
dispositivo es estándar, ya sea ANSI, IEEE o ISO oficial, o un estándar de facto,
las compañías pueden fabricar controladores o dispositivos que se ajusten a esa
interfaz.
La tarea de la controladora consiste en convertir el flujo de bits en serie en un
bloque de bytes y realizar una corrección de errores que sea necesaria.
Software de entrada/salida
La mayoría del software de E/S está en el núcleo Sin embargo, también 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 continuación realizan la llamada al sistema de spooling
Los dispositivos de uso exclusivo no se pueden dejar a cargo de programas de
usuario (problema: monopolización) El sistema de spooling es una forma de
manejar dispositivos dedicados en un sistema con multiprogramación Hay un
demonio y un directorio de spooling El demonio verifica periódicamente el
directorio para saber si hay trabajos pendientes Las impresoras se manejan de
esta manera.