Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Sistemas Operativos
Proyecto final
- Diferencias entre Unix y Linux-
Profesor:
Randall Vargas
Estudiante:
Diana Alfaro
Tatiana Macchiavello Duarte
Grupo:
Martes - noche
Agosto 2005
Sistema Operativo
Diferencias entre Linux y Unix
Tabla de Contenido
1. FUNCIONES DEL SISTEMA OPERATIVO ...................................................................................1
2. INTRODUCCIÓN HISTÓRICA A UNIX Y LINUX. ......................................................................2
3. VISIÓN GENERAL DE UNIX.................................................................................................................4
3.1. ESTRUCTURA DEL SISTEMA. .................................................................................................................4
3.1.1 Sistema Operativo interactúa con el hardware.............................................................6
3.1.2 El Entorno de Procesamiento...............................................................................................7
3.1.3 Primitivas de Construcción de Bloques.............................................................................7
3.1.4 Servicios del Sistema Operativo. ........................................................................................8
3.1.5 Aspectos del Hardware. ........................................................................................................9
3.1.6. Interrupciones y Excepciones. ............................................................................................9
3.1.7 Niveles de Ejecución del Procesador. ..............................................................................10
3.1.8 Manejo de Memoria. ............................................................................................................11
4. DESCRIPCIÓN DE LINUX Y DE SUS FUNCIONALIDADES. .......................................................11
4.1 ESTRUCTURA GENERAL DEL SISTEMA OPERATIVO LINUX...................................................................12
5. GESTIÓN DE PROCESOS....................................................................................................................15
5.1 ESTADOS Y TRANSICIONES DE UN PROCESO. .........................................................................15
5.1.1. Ciclo Vida de un Proceso en UNIX. Conjunto Estados ...............................................15
5.1.2 Ciclo de Vida de un Proceso en Linux. Conjunto de Estados (Figura 2.2.)............20
5.2 ESTRUCTURAS DE DATOS DEL SISTEMA PARA LA GESTIÓN DE PROCESOS....................22
5.2.1 TABLA DE PROCESOS. .......................................................................................................................22
5.2.2 TABLA DE PROCESOS EN LINUX........................................................................................................22
Estructura del descriptor de procesos en Linux (PCB = Process Control Block). ............22
5.3 ORGANIZACIÓN DE LA MEMORIA DEL SISTEMA. ..................................................................23
5.3.1 Asignación de memoria......................................................................................................24
5.3.2. Regiones.................................................................................................................................25
5.3.3. Páginas y Tablas de Páginas............................................................................................25
5.4 SINCRONIZACIÓN DE PROCESOS EN LINUX. ...........................................................................27
6. GESTIÓN DE LA MEMORIA ..............................................................................................................28
6.1 GESTIÓN DE MEMORIA EN UNIX ................................................................................................28
6.1.1. Paginación por Demanda .................................................................................................29
6.1.2 Estructuras de Datos para Paginación por Demanda (UNIX) ..................................29
6.2 GESTIÓN DE MEMORIA EN LINUX ..............................................................................................31
6.2.1 Direccionamiento de Memoria en Linux ........................................................................32
6.2.2. Segmentación en Linux......................................................................................................33
6.2.3 Paginación en Linux ............................................................................................................35
7. SEGURIDAD EN UNIX .........................................................................................................................36
7.1 PERMISOS DE UN ARCHIVO ...................................................................................................................36
7.2 ATRIBUTOS DE LOS ARCHIVOS EN EXT2FS............................................................................................37
7.3 CRIPTOGRAFÍA .....................................................................................................................................37
7.4 ALMACENAMIENTO SEGURO ................................................................................................................38
7.5 COPIAS DE SEGURIDAD ........................................................................................................................38
7.6 AUTENTICACIÓN DE USUARIOS ............................................................................................................39
Página I
Sistema Operativo
Diferencias entre Linux y Unix
Página II
Sistema Operativo
Diferencias entre Linux y Unix
Página 1 de 42
Sistema Operativo
Diferencias entre Linux y Unix
Página 2 de 42
Sistema Operativo
Diferencias entre Linux y Unix
Página 3 de 42
Sistema Operativo
Diferencias entre Linux y Unix
Página 4 de 42
Sistema Operativo
Diferencias entre Linux y Unix
Página 5 de 42
Sistema Operativo
Diferencias entre Linux y Unix
33..11..11 SSiisstteem
maa O
Oppeerraattiiv
voo iin úaa ccoon
ntteerraaccttú n eell h
haarrd
dwwaarree..
¾ Da servicio a los programas.
¾ Aísla a los programas del hardware.
¾ Programas independientes del hardware son sencillo moverlos
entre sistemas UNIX sobre distintos hardware.
Página 6 de 42
Sistema Operativo
Diferencias entre Linux y Unix
33..11..33 PPrriim
miittiiv
vaass d
dee C
Coon
nssttrru
ucccciióón
nddee BBllooqqu
ueess..
¾ Filosofía UNIX: Proporcionar al usuario primitivas de
construcción de programas.
o Le permiten construir programas sencillos.
o Utilización posterior como “bloques de construcción” para
construir programas más complejos.
¾ Primitiva 1: Redireccionar la E/S.
o Procesos son acceso por defecto: archivo de entrada
estándar, archivo de salida estándar y archivo de error
estándar.
o UNIX proporciona mecanismos para redireccionar
cualquiera de ellos por medio de la organización
cuidadosa del sistema de archivos.
¾ Primitiva 2: Pipes o tuberías.
o Mecanismo que permite el paso de datos entre un proceso
escritor y un proceso lector sin necesidad de crear
archivos temporales.
Escritor redirecciona la salida estándar hacia pipe.
Lector redirecciona su entrada estándar hacia el
pipe.
Página 7 de 42
Sistema Operativo
Diferencias entre Linux y Unix
33..11..44 SSeerrv
viicciiooss d
deell SSiisstteem
maa O
Oppeerraattiiv
voo..
¾ El kernel está entre el hardware y los programas de usuario.
o Sirve a programas de usuario por medio de llamadas al
sistema (system calls).Ver Figura 1.1.
¾ Servicios que ofrece el kernel.
o Control de ejecución de procesos.
o Planificación equitativa de procesos ® Tiempo
compartido.
o Administración de la memoria principal ® Procesos en
ejecución.
Permite a procesos compartir parte del espacio de
direcciones.
Protege el espacio de direccionamiento privado de
procesos.
Gestiona la memoria libre en tiempos de escasez.
• Dispositivo swap (intercambio1).
• Sistema de intercambio o sistema paginado.
Administra la memoria secundaria eficientemente:
SF.
Asigna la memoria secundaria para archivos de
usuario.
• Recupera el espacio de almacenamiento no
utilizado.
• Estructura el sistema de archivos de manera
comprensible.
• Protege los archivos de usuario ante accesos
ilegales.
Permite a procesos el acceso controlado a
dispositivos periféricos.
¾ El kernel proporciona estos servicios de una manera
transparente.
¾ El intercambio consiste en llevar los procesos cuyo tiempo de
ocupación de memoria expira, a un área de memoria secundaria
y traer de esa área de memoria secundaria los procesos a los
que se les asigna tiempo de ocupación en memoria principal.
Página 8 de 42
Sistema Operativo
Diferencias entre Linux y Unix
33..11..55 A
Assp
peeccttooss d
deell H
Haarrd
dwwaarree..
¾ Ejecución de un proceso en UNIX: dos niveles: usuario y kernel.
o Proceso realiza llamada al sistema Þ modo de ejecución
pasa de modo usuario a modo kernel.
Sistema operativo intenta servir una petición del
usuario.
Modo kernel: Las llamadas al sistema (system
calls) se ejecutan en modo kernel y para entrar en
ese modo hay que ejecutar una sentencia de
código máquina conocida como “trap”. Es por esto,
que las llamadas al sistema pueden ser invocadas
directamente desde ensamblador y no desde C. En
este modo están permitidas todas las instrucciones
para el sistema operativo.
Modo usuario: en este modo no están permitidas
instrucciones de E/S y de otros tipos para
programas de usuario.
o Kernel realiza tareas de gestión para procesos de usuario.
o Diferencias entre los dos niveles son:
Acceso a instrucciones y datos.
Ejecución de instrucciones máquina privilegiadas.
¾ El kernel se ejecuta a petición de los procesos de usuario.
o Kernel no son procesos ejecutándose en paralelo para
servir a procesos de usuario.
o Código ejecutado por el propio proceso en modo kernel o
protegido.
Permite ejecución sincrónica y asincrónica.
Organización alrededor de servidores.
33..11..66.. IIn
ntteerrrru
uppcciioon
neess y
y EExxcceep neess..
pcciioon
¾ Las interrupciones son señales eléctricas manejadas
directamente por un controlador de interrupciones (hardware) o
codificando a nivel de software el índice para acceder a la tabla
de descriptores de interrupciones (software).
¾ UNIX permite a dispositivos interrumpir la CPU
asincrónicamente.
o Llegada de una interrupción.
Página 9 de 42
Sistema Operativo
Diferencias entre Linux y Unix
33..11..77 N
Niiv
veelleess d
dee EEjjeeccu
ucciióón
nddeell PPrroocceessaad
doorr..
¾ El kernel debe prevenir la ocurrencia de interrupciones cuando
se encuentra realizando operaciones críticas.
o Peligro de corrupción de los datos.
o Fija el nivel de ejecución del procesador mediante el
enmascaramiento de las interrupciones de ese y niveles
inferiores, permitiendo interrupciones de más alto nivel.
Página 10 de 42
Sistema Operativo
Diferencias entre Linux y Unix
33..11..88 M
Maan
neejjoo d
dee M
Meem
moorriiaa..
¾ Compilación de un programa, el compilador genera direcciones
para variables, funciones, etc. para una máquina virtual.
¾ El kernel reside permanentemente en memoria.
¾ Programa va a ejecutarse, el kernel le asigna memoria principal.
o Problema: Direcciones virtuales y físicas no coinciden.
o Kernel debe coordinarse con el hardware realizar una
traducción de direcciones virtuales a físicas.
Forma de realizar traducción depende del
hardware.
Partes del sistema UNIX que tratan con ella serán
dependientes de la máquina.
Micronúcleo.
Página 11 de 42
Sistema Operativo
Diferencias entre Linux y Unix
Página 12 de 42
Sistema Operativo
Diferencias entre Linux y Unix
Página 13 de 42
Sistema Operativo
Diferencias entre Linux y Unix
Página 14 de 42
Sistema Operativo
Diferencias entre Linux y Unix
5. GESTIÓN DE PROCESOS
5.1 ESTADOS Y TRANSICIONES DE UN PROCESO.
55..11..11.. C
Ciicclloo V
Viid
daa d
dee u
un nU
n PPrroocceessoo een UN
NIIX
X.. C
Coon
njju
unnttoo EEssttaad
dooss
El tiempo de vida de un proceso se puede dividir en un conjunto de
estados, cada uno con de las características determinadas. Es decir, que un
proceso no permanece siempre en un mismo estado, sino que está
continuamente cambiando de acuerdo con unas reglas bien definidas. Estos
cambios de estados vienen impuestos por la competencia que existe entre los
procesos para compartir un recurso tan escaso como es la CPU (scheduler).
La transición entre los diferentes estados (Figura 2.1) da lugar a un
Diagrama de Transición de Estados. Un diagrama de transición de estados es
un grafo dirigido, cuyos nodos representan los estados que pueden alcanzar
los procesos y cuyos arcos representan los eventos que hacen que un
proceso cambie de un estado a otro.
En la Figura 2.1, se observa el diagrama completo y los estados que
en él se reflejan son:
¾ Entrada del proceso en el modelo, creación de un proceso:
estado Creado (8).
o Este estado es el estado inicial para todos los procesos
excepto el proceso 0 (swapper).
o Llamada al sistema fork del padre.
o El proceso acaba de ser creado y está en un estado de
transición; el proceso existe, pero ni está preparado para
ejecutarse (estado 3), ni durmiendo (estado 4)
¾ Proceso ejecutándose en modo usuario (1). Los eventos que
desencadenan una transición pueden ser los siguientes:
o [Evento = fin quantum] = transición al estado de
“ejecutándose en modo kernel” (2).
Gestión de la interrupción. Esta función la lle va a
cargo el módulo de control del hardware, que es la
parte del kernel encargada del manejo de
interrupciones y de la comunicación con la
máquina.
Planificación a cargo del scheduler.
Elegir otro proceso si es el siguiente para ser
ejecutado según el scheduler.
Página 15 de 42
Sistema Operativo
Diferencias entre Linux y Unix
Página 16 de 42
Sistema Operativo
Diferencias entre Linux y Unix
Página 17 de 42
Sistema Operativo
Diferencias entre Linux y Unix
Página 18 de 42
Sistema Operativo
Diferencias entre Linux y Unix
Página 19 de 42
Sistema Operativo
Diferencias entre Linux y Unix
55..11..22 C
Ciicclloo ddee VViid
daa d dee u n PPrroocceessoo een
un n LLiin
nuuxx.. C
Coon
njju
unnttoo d
dee
EEssttaaddooss ((FFiiggu
urraa 22..22..))..
En Linux, un proceso o tarea, está representado por una estructura de
datos task_struct. Linux mantiene una task, que es un vector lineal de
punteros a cada estructura task_struct definida en un instante dado. La
estructura task_struct contiene información de varios tipos:
¾ Estado. Representa el estado de ejecución de un proceso (en
ejecución, interrumpible, no interrumpible, parado y zombi).
¾ Información de planificación. Representa a la información
necesaria para la planificación de procesos en Linux. Un proceso
puede ser normal o en tiempo real y tiene una prioridad. Los
procesos en tiempo real se planifican antes que los procesos
normales y se utilizan prioridades relativas dentro de cada
categoría. El tiempo en el que un proceso puede ejecutarse se
controla mediante un contador.
¾ Identificadores. Cada proceso tiene un único identificador de
proceso, y tiene también identificadores de usuario y de grupo.
Un identificador de grupo se utiliza para asignar privilegios de
acceso a recursos de un grupo de usuarios.
¾ Comunicación entre procesos. Linux soporta los mecanismo de
IPC de UNIX
¾ Vínculos. Cada proceso incluye un vínculo con su proceso padre,
vínculos con sus hermanos (procesos con el mismo padre) y
vínculos con todos sus hijos.
¾ Tiempos y temporizadores. Incluye el instante de creación del
proceso y la cantidad de tiempo del procesador consumido hasta
el instante. Un proceso puede tener también asociados uno o
más temporizadores de intervalo. Un proceso define un
temporizador de intervalo mediante una llamada al sistema;
cuando el tiempo termina se envía una señal al proceso. Un
temporizador puede ser de un solo uso o periódico.
¾ Sistema de archivos. Incluye punteros a cualquier archivo
abierto por el proceso.
¾ Memoria virtual. Define la memoria virtual asignada al proceso.
¾ Contexto específico del procesador. La información de registros
y pila que forma el contexto del proceso (espacio de
direccionamiento del proceso).
Página 20 de 42
Sistema Operativo
Diferencias entre Linux y Unix
Página 21 de 42
Sistema Operativo
Diferencias entre Linux y Unix
EEssttrru
uccttu
urraa d
deell ddeessccrriip
pttoorr d prroocceessooss een
dee p n LLiin
nuuxx ((PPC
CBB ==
PPrroocceessss C
Coonnttrrooll BBlloocck
k))..
En Linux el PCB (Process Control Block) es una estructura denominada
task_strcut en el archivo include/linux/sched.h. En ella aparece tipo de
información sobre cada uno de los procesos. Muchas partes del sistema
operativo hacen uso de esta estructura de datos, por lo que es necesario
conocer los campos más importantes de task_struct.
Para gestionar los procesos, el kernel, en general, divide
(conceptualmente y en la implementación) la información del proceso en dos
apartados: la necesaria para localizarlo y planificarlo (Tabla de Procesos) y el
resto de informaciones referentes la proceso (u-Area).
Tabla de Procesos Îlocalizar el proceso y su u-Area;
u-Area Îcaracterización detallada del proceso.
Página 22 de 42
Sistema Operativo
Diferencias entre Linux y Unix
Página 23 de 42
Sistema Operativo
Diferencias entre Linux y Unix
55..33..11 A
Assiiggn
naacciióón
nddee m
meem
moorriiaa..
Cuando un proceso empieza su ejecución, sus segmentos (código,
datos y pila) poseen un tamaño fijo. Sin embargo, existen funciones de
asignación y liberación de memoria, que permiten a un proceso manipular
variables cuyo número o tamaño no es conocido en el momento de su
compilación Þ asignación y liberación de memoria de forma dinámica
(funciones malloc, calloc, realloc, free).
Las asignaciones y liberaciones se efectúan modificando el tamaño del
segmento de datos del proceso.
Cuando debe asignarse un dato, el segmento de datos aumenta en el
número de bytes necesario y el dato puede almacenarse en el espacio de
memoria así asignado. Cuando un dato situado al final del segmento de datos
deja de utilizarse, su liberación consiste simplemente en reducir el tamaño
del segmento.
Página 24 de 42
Sistema Operativo
Diferencias entre Linux y Unix
55..33..22.. R
Reeggiioon
neess..
UNIX divide el espacio de direcciones virtual del proceso en zonas
lógicas. Como se ha expuesto anteriormente el espacio de direccionamiento
de un proceso se compone de varias regiones de memoria. Cada región de
memoria se caracteriza por varios atributos:
-Sus direcciones de inicio y fin.
-Los derechos de acceso que tiene asociados.
-El objeto asociado (por ejemplo, un archivo ejecutable que contiene el
código ejecutable para el proceso).
Región: Área contigua del espacio de direcciones virtuales de un
proceso que puede ser tratada como un objeto a ser protegido o compartido.
– Como entidad, se puede tratar como un objeto cuyas operaciones
principales son:
+ Creación y eliminación de regiones de memoria.
+ Proteger regiones de memoria.
+ Modificaciones para las protecciones de las regiones de
memoria.
+ Reasignar regiones de memoria.
+ Compartir regiones de memoria.
– Concepto de Región: Independiente de la política de gestión de
memoria implementada en el sistema operativo.
Las regiones de memoria contenidas en el espacio de direccionamiento
de un proceso pueden determinarse mostrando el contenido del archivo
maps, situado en el directorio de cada proceso en el sistema de archivos
/proc.
55..33..33.. PPáággiin
naass y
yTTaabbllaass d naass..
dee PPáággiin
UNIX utiliza los mecanismos de memoria virtual proporcionados por el
procesador sobre el que se ejecuta (paginación y segmentación). Las
direcciones manipuladas por el kernel y los procesos son direcciones lógicas y
el procesador junto con el sistema operativo efectúa una conversión para
transformar una dirección lógica en dirección física en memoria principal.
Ahora, vamos a presentar como modelo de trabajo un esquema de gestión
de memoria por Páginas (bloques de memoria de igual tamaño [512B...4KB],
cuyo formato de dirección es del tipo (página, desplazamiento). El kernel
asigna páginas a las regiones (sin continuidad ni orden) lo que le proporciona
gran flexibilidad, con un nivel controlado de fragmentación (en la última
Página 25 de 42
Sistema Operativo
Diferencias entre Linux y Unix
Página 26 de 42
Sistema Operativo
Diferencias entre Linux y Unix
55..33..44 T
Taabbllaa d
dee p
páággiin
naass ggeessttiioon daass p
naad poorr LLiin
nuuxx ⇒ 3 niveles. Linux
gestiona la memoria central y las tablas de páginas utilizadas para convertir
las direcciones virtuales en direcciones físicas.
Implementa una gestión de la memoria que es ampliamente
independiente del procesador sobre el que se ejecuta. En realidad, la gestión
de la memoria implementada por Linux considera que dispone de una tabla
de páginas a tres niveles:
+ El directorio global de tablas páginas (page global directory) cuyas
entradas contienen las direcciones de páginas que contienen tablas
intermedias.
+ El directorio intermedio de tablas páginas (page middle directory)
cuyas entradas contienen las direcciones de las páginas que contienen las
tablas de páginas.
+ Las tablas de páginas (page table) cuyas entradas contienen las
direcciones de páginas de memoria que contienen el código o los datos
utilizados por el kernel o los procesos de usuario.
Este modelo no siempre se corresponde al procesador sobre el cual
Linux se ejecuta (los procesadores x86, utilizan una tabla de páginas que
sólo posee dos niveles). El kernel efectúa una correspondencia entre el
modelo implementado por el procesador y el modelo de Linux (en los
procesadores x86, el kernel considera que la tabla intermedia sólo tiene una
entrada).
Página 27 de 42
Sistema Operativo
Diferencias entre Linux y Unix
6. Gestión de la memoria
La memoria es uno de los recursos más valiosos que gestiona el
sistema operativo. Uno de los elementos principales que caracterizan un
proceso es la memoria que utiliza. Ésta está lógicamente separada de la de
cualquier otro proceso del sistema (excepto los threads de un mismo proceso
que comparten normalmente la mayor parte de la memoria que tienen
asignada). Un proceso no puede acceder, al espacio de memoria asignado a
otro proceso, lo cual es imprescindible para la seguridad y estabilidad del
sistema. El direccionamiento es una parte importante de la gestión de
memoria, puesto que influye mucho en la visión del mismo por parte de un
proceso, como en el aprovechamiento del hardware y el rendimiento del
sistema. En Linux, además, un proceso tiene dos espacios de memoria: el
espacio de memoria del usuario, único para ese proceso, y el espacio de
memoria del kernel, idéntico en todos los procesos.
Página 28 de 42
Sistema Operativo
Diferencias entre Linux y Unix
66..11..11.. PPaaggiin
naacciióón
nppoorr D
Deem
maan
nddaa
Hardware: arquitectura basada en páginas y CPU instrucciones
rearrancables Þ Soporta que el kernel implemente un algoritmo de demanda
de páginas. Un proceso no tiene que caber entero en memoria física para
ejecutarse. La carga en memoria principal de una parte de un proceso
relevante se hace de forma dinámica.
Transparente a programas de usuario excepto por el tamaño virtual
permisible a proceso (controlado por el kernel).
Working Set (conjunto de trabajo) Þ El conjunto de trabajo de un
proceso en un instante virtual t y con un parámetro D, denominado W(t, D),
es el conjunto de páginas a las que el proceso ha hecho referencia en las
últimas D unidades de tiempo virtual, siendo el tiempo virtual el tiempo que
transcurre mientras el proceso está realmente en ejecución.
Si un proceso direcciona una página que no pertenece al Working Set Þ
provoca una falta de página, entonces el kernel actualiza el Working Set,
leyendo páginas desde memoria secundaria si es necesario.
66..11..22 EEssttrru
uccttu
urraass d
dee D paarraa PPaaggiin
Daattooss p naacciióón
nppoorr D
Deem
maan
nddaa
((U
UN NIIX X))
Estructuras de datos para la gestión de memoria a bajo nivel y
demanda de páginas (sistema de paginación):
¾ Tabla de páginas Î Normalmente, hay una tabla por proceso,
con una entrada para cada página de la memoria virtual del
proceso.
¾ Descriptores de bloques de disco Î Asociado a cada página de
un proceso hay una entrada en la tabla que describe la copia en
el disco de la página virtual.
¾ Tabla de marcos de página (pfdata) Î Describe cada marca de
la memoria real y está indexada por el número de marco.
¾ Tabla de uso de swap Î Existe una tabla de uso de swap por
cada dispositivo de intercambio, con una entrada para cada
página en dicho dispositivo.
El kernel asigna espacio para pfdata una vez durante la vida del
sistema, aunque para las otras estructuras le asigna y desasigna espacio
dinámicamente. Cada región contiene tablas de páginas para acceder a
memoria física.
Sistema de paginación de UNIX System V. El kernel evita copiar la
página, incrementa el contador de referencia regiones compartidas y para las
regiones privadas asigna una nueva entrada en la tabla de regiones y tabla
de páginas. Además, el kernel examina cada entrada en la tabla de regiones
del proceso padre: Si la página es válida: (1) Incrementa el contador de
Página 29 de 42
Sistema Operativo
Diferencias entre Linux y Unix
Página 30 de 42
Sistema Operativo
Diferencias entre Linux y Unix
Página 31 de 42
Sistema Operativo
Diferencias entre Linux y Unix
de Linux, una variable de edad de 8 bits sustituye al bit de uso. Cada vez que
se accede a una página, se incrementa la variable edad, Linux recorre
periódicamente la reserva de páginas globales y disminuye la variable de
edad de cada página cuando rota por todas las páginas de la memoria
principal. Una página con un envejecimiento 0 es una página “vieja” que no
se ha referenciado en bastante tiempo y es la mejor candidata para el
reemplazo. Cuando mayor valor de edad, más frecuentemente se ha usado la
página recientemente y menos elegible es para el reemplazo. De esta forma,
el algoritmo de reemplazo de páginas de Linux es una aproximación de la
política LRU.
Los fundamentos de asignación de memoria al kernel de Linux es el
mecanismo de asignación de páginas utilizado para la gestión de memoria
virtual de usuario. Como en el esquema de memoria virtual se utiliza un
algoritmo de colegas (buddy algorithm) par asignar y liberar la memoria del
kernel en unidades de uno o más páginas. Puesto que la mínima cantidad de
memoria que se puede asignar de esta forma es una página, el gestor de
páginas solamente podría ser ineficiente si el kernel requiere pequeños trozos
de memoria a corto plazo y en tamaños irregulares. Para gestionar a estas
pequeñas asignaciones, Linux utiliza un esquema conocido como asignación
por fragmentos (slab allocation) dentro de una página asignada. En un
procesador i386, el tamaño de página es de 4Kbytes y los fragmentos que se
pueden asignar dentro de una página pueden ser de 32, 64, 128, 252, 508,
2040 y 4080 bytes. La asignación de fragmentos es relativamente compleja,
en general, Linux mantiene un conjunto de listas enlazadas, una por cada
tamaño de fragmento. Los fragmentos pueden dividirse y agregarse de forma
similar al algoritmo de los colegas (buddy algorithm) y se mueve entre las
listas en función de ello.
66..22..11 D
Diirreecccciioon
naam
miieen
nttoo d
dee M moorriiaa een
Meem n LLiin
nuuxx
La memoria es uno de los recursos fundamentales para un proceso. El
sistema operativo debe ofrecer la memoria a todos los procesos por igual de
una forma sencilla y uniforme. Al mismo tiempo, el sistema operativo debe
tratar con el hardware real para realizar dicha función, aprovechándolo al
máximo. El direccionamiento es una parte importante de la gestión de
memoria, puesto que influye mucho tanto en la visión de la misma por parte
de un proceso, como en el aprovechamiento del hardware y el rendimiento
del sistema.
Desde el punto de vista de la arquitectura, el sistema operativo suele
tener asistencia del hardware para realizar la gestión memoria: (1) Memory
Management Unit (MMU), unidad que realiza, en el i386, segmentación y
paginación; (2) Bits reservados en selectores de segmento; (3) Bits
reservados en descriptores de página; (4) Bits de protección. Sin embargo, el
sistema operativo es libre de usar o no dichos recursos. Por ejemplo, la
segmentación de los i386 no se emplea con toda su potencia en Linux. Por
Página 32 de 42
Sistema Operativo
Diferencias entre Linux y Unix
66..22..22.. SSeeggm
meen
nttaacciióón
n een
n LLiin
nuuxx
Linux no aprovecha la segmentación del i386. Sin embargo, no puede
desactivarla, la utiliza de una forma muy limitada. Se ha preferido la
paginación sobre la segmentación porque: (1) La gestión de memoria es más
simple cuando todos los procesos usan los mismos valores de segmentos, es
decir, tienen las mismas direcciones lineales. (2) Un objetivo de Linux es la
portabilidad, y muchos procesadores soportan la segmentación de forma muy
limitada.
Para hacer uso de la segmentación, se programa adecuadamente la
GDT = Tabla de Descriptores Global.
Esta tabla es implementada por el array gdt_table referenciada por la
variable gdt, que se encuentra definido en el archivo
arch/i386/kernel/head.S. Los segmentos que se definen se superponen en el
espacio de direcciones lineal. Como se emplean muy pocos segmentos, solo
es necesaria la GDT. La LDT no se usa por el kernel salvo que lo requiera un
proceso, aunque existe una llamada al sistema que permite crear sus propias
LDTs.
Los segmentos empleados en Linux son los siguientes:
Segmento de código del kernel.
¾ Base: 0x00000000, Límite (limit): 0xfffff,
¾ G = 1 (granularidad en páginas),
Página 33 de 42
Sistema Operativo
Diferencias entre Linux y Unix
Página 34 de 42
Sistema Operativo
Diferencias entre Linux y Unix
66..22..33 PPaaggiin
naacciióón
n een
n LLiin
nuuxx
Para tener en cuenta arquitecturas de 64 bits, la paginación en Linux
tiene 3 niveles de tablas de páginas en lugar de 2. En los i386, la tabla de
directorio intermedio de tablas de páginas se obvia.
Linux gestiona la memoria central y las tablas de páginas utilizadas
para convertir las direcciones lineales (virtuales) en direcciones físicas.
Implementa una gestión de la memoria que es ampliamente independiente
del procesador sobre el que se ejecuta. En realidad, la gestión de la memoria
implementada por Linux considera que dispone de una tabla de páginas a
tres niveles: (1) directorio global de tablas de páginas (page global dirertory)
cuyas entradas contienen las direcciones de páginas que contienen tablas
intermedias; (2) directorio intermedio de tablas de páginas (page middle
directory) cuyas entradas contienen las direcciones de páginas que contienen
tablas de páginas; (3) las tablas de páginas (page table) cuyas entradas
contienen las direcciones de páginas de memoria que contienen el código o
los datos utilizados por el kernel o los procesos de usuario. Evidentemente,
este modelo no siempre corresponde al procesador sobre el cual Linux se
ejecuta (los procesadores i386, por ejemplo, utilizan una tabla de páginas
que sólo posee dos niveles). El kernel efectúa una correspondencia entre el
modelo implementado por el procesador y el modelo de Linux.
En los procesadores i386, por ejemplo, el kernel considera que el
directorio intermedio de tablas de páginas sólo contiene una entrada.
La MMU de reinicializa con un nuevo directorio de tablas de páginas
para cada proceso. Así se consiguen aislar espacios de direcciones. Se
emplean los bits User/Supervisor y Read/Write para la protección. Se
emplean los anteriores bits junto con los bits Dirty y Accessed para manejar
las diferentes posibilidades de falta de página. Linux depende fuertemente de
la paginación para la gestión de procesos. De hecho, la traducción
automática de dirección lineal a dirección física hace posible los siguientes
objetivos: (1) Asignar un espacio de direcciones físicas diferentes a cada
proceso, asegurando una protección eficiente ante errores de
direccionamiento. (2) Distinguir páginas (grupos de datos) de marcos de
páginas (direcciones físicas en memoria principal). Esto permite a la misma
página que se almacene en un marco de página, entonces guardar en disco y
después recargarla en un marco de página diferente. Esto es muy importante
para el mecanismo de memoria virtual.
En Linux el espacio de direcciones lineales se divide en dos partes: (1)
Direcciones lineales desde 0x0000000 a PAGE_OFFSET – l, accesibles en
Página 35 de 42
Sistema Operativo
Diferencias entre Linux y Unix
7. Seguridad en Unix
Dentro de la familia Unix existen una serie de sistemas denominados
'Unix seguros' o 'Unix fiables' (Trusted Unix); se trata de sistemas con
excelentes sistemas de control, evaluados por la National Security Agency
(NSA) estadounidense y clasificados en niveles seguros (B o A). Entre estos
Unix seguros podemos encontrar AT&T System V/MLS y OSF/1 (B1), Trusted
Xenix (B2) y XTS-300 STOP 4.1 (B3), considerados los sistemas operativos
más seguros del mundo (siempre según la NSA). La gran mayoría de Unices
(Solaris, AIX...) están clasificados como C2, y algunos otros, como Linux, se
consideran sistemas C2 de facto: al no tener una empresa que pague el
proceso de evaluación de la NSA no están catalogados, aunque puedan
implementar todos los mecanismos de los sistemas C2.
Página 36 de 42
Sistema Operativo
Diferencias entre Linux y Unix
7.3 Criptografía
La criptografía es la herramienta principal utilizada en la mayoría de
los sistemas de almacenamiento seguro; sin embargo, todos ellos plantean
un grave problema: toda su seguridad reside en la clave de cifrado, de forma
que el usuario se encuentra indefenso ante métodos legales - o ilegales - que
le puedan obligar a desvelar esta clave una vez que se ha determinado la
presencia de información cifrada en un dispositivo de almacenamiento. Todos
los expertos en criptografía coinciden en afirmar que los métodos de ataque
más efectivos contra un criptosistema no son los efectuados contra el
Página 37 de 42
Sistema Operativo
Diferencias entre Linux y Unix
Página 38 de 42
Sistema Operativo
Diferencias entre Linux y Unix
Página 39 de 42
Sistema Operativo
Diferencias entre Linux y Unix
8. Seguridad en Linux
Linux es un sistema muy robusto e incorpora las características de
seguridad comunes a todos los sistemas tipo Unix, a pesar de todo resulta
fundamental dedicar cierto tiempo y recursos para conocer cuáles son sus
debilidades y vías frecuentes de ataque y adoptar posteriorermente las
medidas más eficaces para contrarrestarlas. A menudo un sistema operativo
es tan seguro como la astucia y habilidad de su administrador.
88..11 SSeeggu
urriid
daad
d llooccaall
En este aspecto de la seguridad, Linux dispone de todas las
características de los sistemas Unix: un control de acceso a los usuarios
verificando una pareja de usuario y clave; cada fichero y directorio tienen sus
propietario y permisos.
Por otro lado, la meta de la mayoría de los ataques es conseguir
acceso como root, lo que garantiza un control total sobre el sistema. Primero
se intentará conseguir acceso como usuario "normal" para posteriormente ir
incrementando sus niveles de privilegio utilizando las posibles debilidades del
sistema: programas con errores, configuraciones deficientes de los servicios
o el descifrado de claves cifradas. Incluso se utilizan técnicas denominadas
"ingeniería social", consistentes en convencer a ciertos usuarios para que
suministren una información que debiera ser mantenida en secreto, como sus
nombres de usuario y contraseñas.
Página 40 de 42
Sistema Operativo
Diferencias entre Linux y Unix
9. Bibliografía
Unix - Wikipedia en español
UNIX - la marca: desde el punto de vista legal, Unix es una marca de mercado.
... Resumiendo, la marca Unix no es propiedad de ninguna compañía. ...
es.wikipedia.org/wiki/Unix
Unix y Seguridad
Información sobre seguridad informática en general y bajo entornos Unix en particular.
Programación bajo Unix.
andercheran.aiind.upv.es/toni/
Página 41 de 42
Sistema Operativo
Diferencias entre Linux y Unix
El rincón de Linux
El rincon de LINUX es un servidor con informacion en castellano sobre Linux.
www.linux-es.org/ - 14k -
Este artículo se refiere al sistema operativo Linux, para otros usos ver ... Linux es la
denominación de un sistema operativo y el nombre de un núcleo. ...
es.wikipedia.org/wiki/Linux - 46k
:: Todo-Linux.com ::
Noticias, manuales y recursos Linux. ... Linux Para Todos invita a toda la comunidad del
software libre, al evento XpoLinux 2005, que se llevará a cabo los ...
www.linuxparatodos.net/ - 76k
Página 42 de 42