74981886 Manual Linux

31
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.

Transcript of 74981886 Manual Linux

Page 1: 74981886 Manual Linux

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.

Page 2: 74981886 Manual Linux

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.

Page 3: 74981886 Manual Linux

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"

Page 4: 74981886 Manual Linux

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

Page 5: 74981886 Manual Linux

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.

Page 6: 74981886 Manual Linux

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.

Page 7: 74981886 Manual Linux

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)

Page 8: 74981886 Manual Linux

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

Page 9: 74981886 Manual Linux

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.

Page 10: 74981886 Manual Linux

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.

Page 11: 74981886 Manual Linux

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.

Page 12: 74981886 Manual Linux

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í):

Page 13: 74981886 Manual Linux

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:

Page 14: 74981886 Manual Linux

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.

Page 15: 74981886 Manual Linux

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

Page 16: 74981886 Manual Linux

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á

Page 17: 74981886 Manual Linux

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.

Page 18: 74981886 Manual Linux

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.

Page 19: 74981886 Manual Linux

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.

Page 20: 74981886 Manual 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.

Page 21: 74981886 Manual Linux

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.

Page 22: 74981886 Manual Linux

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.

Page 23: 74981886 Manual Linux

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

Page 24: 74981886 Manual Linux

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.

Mail

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.

Page 25: 74981886 Manual Linux

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.

Page 26: 74981886 Manual Linux

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.

Page 27: 74981886 Manual Linux

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).

Page 28: 74981886 Manual Linux

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.

Page 29: 74981886 Manual Linux

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.

Page 30: 74981886 Manual Linux

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).

Page 31: 74981886 Manual Linux

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.