Sie sind auf Seite 1von 11

Ingeniera en Desarrollo de

Software

Felipe de Jess Gutirrez Garca
(Al12535104)
4to Cuatrimestre
Laura Antonia Tovar Montero
Facilitadora
Programacin de sistemas operativos
Unidad 4
Diseo de Sistemas Operativos
Actividad 2
Arquitectura del diseo del SO Linux
Esta actividad tiene como propsito que distingas cmo est estructurada la arquitectura del
sistema operativo Linux.
1. Investiga sobre la arquitectura del sistema operativo Linux, principios del diseo,
paradigmas y llamadas al sistema.
2. Con base en la investigacin, realiza elabora un archivo de texto que contenga los temas
mencionados pero con enfoque en Linux.

ANTECEDENTES
QU ES LINUX?
Linux es, a simple vista, un Sistema Operativo. Es una implementacin de libre distribucin UNIX para
computadoras personales (PC), servidores, y estaciones de trabajo. Fue desarrollado para el i386 y ahora
soporta los procesadores i486, Pentium, Pentium Pro y Pentium II, as como los clones AMD y Cyrix.
Tambin soporta mquinas basadas en SPARC, DEC Alpha, PowerPC/PowerMac, y Mac/Amiga Motorola
680x0.
Como sistema operativo, Linux es muy eficiente y tiene un excelente diseo. Es multitarea, multiusuario,
multiplataforma y multiprocesador; en las plataformas Intel corre en modo protegido; protege la memoria
para que un programa no pueda hacer caer al resto del sistema; carga slo las partes de un programa que
se usan; comparte la memoria entre programas aumentando la velocidad y disminuyendo el uso de
memoria; usa un sistema de memoria virtual por pginas; utiliza toda la memoria libre para cache;
permite usar bibliotecas enlazadas tanto esttica como dinmicamente; se distribuye con cdigo fuente;
usa hasta 64 consolas virtuales; tiene un sistema de archivos avanzado pero puede usar los de los otros
sistemas; y soporta redes tanto en TCP/IP como en otros protocolos.
HISTORIA DE LINUX.
LINUX hace su aparicin a principios de la dcada de los noventa, era el ao 1991 y por aquel entonces
un estudiante de informtica de la Universidad de Helsinki, llamado Linus Torvalds empez, -como una
aficin y sin poderse imaginar a lo que llegara este proyecto, a programar las primeras lneas de cdigo
de este sistema operativo llamado LINUX.
Este comienzo estuvo inspirado en MINIX, un pequeo sistema Unix desarrollado por Andy Tanenbaum.
Las primeras discusiones sobre Linux fueron en el grupo de noticias comp.os.minix, en estas discusiones
se hablaba sobre todo del desarrollo de un pequeo sistema Unix para usuarios de Minix que queran ms.
Linus nunca anuncio la versin 0.01 de Linux (agosto 1991), esta versin no era ni siquiera ejecutable,
solamente inclua los principios del ncleo del sistema, estaba escrita en lenguaje ensamblador y asuma
que uno tena acceso a un sistema Minix para su compilacin.
El 5 de octubre de 1991, Linus anuncio la primera versin "Oficial" de Linux, -versin 0.02. Con esta
versin Linus pudo ejecutar Bash (GNU Bourne Again Shell) y gcc (El compilador GNU de C) pero no
mucho ms funcionaba. En este estado de desarrollo ni se pensaba en los trminos soporte,
documentacin, distribucin .Despus de la versin 0.03, Linus salto en la numeracin hasta la 0.10, ms
y ms programadores a lo largo y ancho de internet empezaron a trabajar en el proyecto y despus de
sucesivas revisiones, Linus incremento el nmero de versin hasta la 0.95 (Marzo 1992). Ms de un ao
despus (diciembre 1993) el ncleo del sistema estaba en la versin 0.99 y la versin 1.0 no llego hasta el
14 de marzo de 1994. Desde entonces no se ha parado de desarrollar, la versin actual del ncleo es la
2.2 y sigue avanzando da a da con la meta de perfeccionar y mejorar el sistema.
CARACTERISTICAS DE LINUX.
Aqu tienen una lista bastante completa con las caractersticas de LINUX
Es un sistema multitareas y multiusuario, es decir, que varias personas pueden estar conectadas al mismo
tiempo y ejecutar simultneamente varios programas.
Multitarea: La palabra multitarea describe la habilidad de ejecutar varios programas al mismo tiempo.
LINUX utiliza la llamada multitarea preventiva, la cual asegura que todos los programas que se estn
utilizando en un momento dado sern ejecutados, siendo el sistema operativo el encargado de ceder
tiempo de microprocesador a cada programa.
Multiusuario: Muchos usuarios usando la misma maquina al mismo tiempo.
Multiplataforma: Las plataformas en las que en un principio se puede utilizar Linux son 386-, 486-.
Pentium, Pentium Pro, Pentium II, Amiga, Macintosh, Commodore y Atari, tambin existen versiones para
su utilizacin en otras plataformas, como Alpha, ARM, MIPS, PowerPC y SPARC. Hoy en da se avanza en
la arquitectura alfha (competidora de Pentium) y SPARC (la arquitectura RISC de SUN); hay previsiones
para soportar POWER PC cuando se popularice.
Multiprocesador: Soporte para sistemas con ms de un procesador est disponible para Intel y SPARC.
Funciona en modo protegido 386.
Proteccin de la memoria entre procesos, de manera que uno de ellos no pueda colgar el sistema.
Carga de ejecutables por demanda: Linux slo lee del disco aquellas partes de un programa que estn
siendo usadas actualmente.
Poltica de copia en escritura para la comparticin de pginas entre ejecutables: esto significa que varios
procesos pueden usar la misma zona de memoria para ejecutarse.
Cuando alguno intenta escribir en esa memoria, la pgina (4Kb de memoria) se copia a otro lugar. Esta
poltica de copia en escritura tiene dos beneficios: aumenta la velocidad y reduce el uso de memoria.
Memoria virtual usando paginacin (sin intercambio de procesos completos) a disco: A una particin o un
archivo en el sistema de archivos, o ambos, con la posibilidad de aadir ms reas de intercambio sobre la
marcha Un total de 16 zonas de intercambio de 128Mb de tamao mximo pueden ser usadas en un
momento dado con un lmite terico de 2Gb para intercambio. Este lmite se puede aumentar fcilmente
con el cambio de unas cuantas lneas en el cdigo fuente.
La memoria se gestiona como un recurso unificado para los programas de usuario y para el cach de
disco, de tal forma que toda la memoria libre puede ser usada para cach y sta puede a su vez ser
reducida cuando se ejecuten grandes programas.
Libreras compartidas de carga dinmica (DLL's) y libreras estticas.
Se realizan volcados de estado (core dumps) para posibilitar los anlisis post-mortem, permitiendo el
uso de depuradores sobre los programas no slo en ejecucin sino tambin tras abortar stos por
cualquier motivo.
Compatible con POSIX, System V y BSD a nivel fuente.
Emulacin de iBCS2, casi completamente compatible con SCO, SVR3 y SVR4 a nivel binario.
Todo el cdigo fuente est disponible, incluyendo el ncleo completo y todos los drivers, las
herramientas de desarrollo y todos los programas de usuario; adems todo ello se puede distribuir
libremente. Hay algunos programas comerciales que estn siendo ofrecidos para Linux actualmente sin
cdigo fuente, pero todo lo que ha sido gratuito sigue siendo gratuito.
Control de tareas POSIX.
Pseudo-terminales (pty's).
Emulacin de 387 en el ncleo, de tal forma que los programas no tengan que hacer su propia emulacin
matemtica. Cualquier mquina que ejecute Linux parecer dotada de coprocesador matemtico. Por
supuesto, si el ordenador ya tiene una FPU (unidad de coma flotante), esta ser usada en lugar de la
emulacin, pudiendo incluso compilar tu propio kernel sin la emulacin matemtica y conseguir un
pequeo ahorro de memoria.
Soporte para muchos teclados nacionales o adaptados y es bastante fcil aadir nuevos dinmicamente.
Consolas virtuales mltiples: varias sesiones de login a travs de la consola entre las que se puede
cambiar con las combinaciones adecuadas de teclas (totalmente independiente del hardware de video). Se
crean dinmicamente y puedes tener hasta 64.
Soporte para varios sistemas de archivo comunes, incluyendo minix-1, Xenix y todos los sistemas de
archivo tpicos de System V, y tiene un avanzado sistema de archivos propio con una capacidad de hasta
4 Tb y nombres de archivos de hasta 255 caracteres de longitud.
Acceso transparente a particiones MS-DOS (o a particiones OS/2 FAT) mediante un sistema de archivos
especial: no es necesario ningn comando especial para usar la particin MS-DOS, esta parece un sistema
de archivos normal de Unix (excepto por algunas restricciones en los nombres de archivo, permisos, y
esas cosas). Las particiones comprimidas de MS-DOS 6 no son accesibles en este momento, y no se
espera que lo sean en el futuro. El soporte para VFAT (WNT, Windows 95) ha sido aadido al ncleo de
desarrollo y estar en la prxima versin estable.
Un sistema de archivos especial llamado UMSDOS que permite que Linux sea instalado en un sistema de
archivos DOS. Soporta varios sistemas de archivos (EXT2F; MINIX, MS-DOS, OS2, XENIX e ISO9660. Con
ello es posible leer y escribir discos de otros sistemas mientras ejecutamos LINUX.
Soporte en slo lectura de HPFS-2 del OS/2 2.1
Sistema de archivos de CD-ROM que lee todos los formatos estndar de CD-ROM.
Hay conectividad completa TCP/IP, paras tarjetas Ethernet, SLIP y PPP, para lneas serie y mdem, NFS
para accesos a unidades remotas por red, IPX, para redes Novell, tanto ejecutando como cliente o como
servidor. Appletalk.
Software cliente y servidor NetWare.
Lan Manager / Windows Native (SMB), software cliente y servidor.
Diversos protocolos de red incluidos en el Kernel: TCP, IPv4, IPv6, AX.25, X.25, IPX, DDP,
Netrom, etc.

ARQUITECTURA DE LINUX.

La arquitectura interna de Linux es compleja pero se puede resumir las partes importantes de forma breve
y fcil de entender. La arquitectura del sistema operativo LINUX se divide en tres niveles:

1. El nivel de usuario, donde se ejecutan todos los procesos de usuario, sin capacidad para ejecutar
las instrucciones ms privilegiadas del procesador.

2. El nivel del ncleo, es el privilegiado del procesador donde pueden ejecutarse todas sus
instrucciones sin restricciones.

3. El nivel del hardware, correspondiente al hardware especifico conectado en el sistema.

La comunicacin entre los procesos de usuario y el ncleo se realiza a travs de la librera del sistema,
que genera una interrupcin software (trap) cada vez que se realiza una llamada al sistema para obtener
un servicio del ncleo.
Respecto a la estructura interna del ncleo, LINUX fue desarrollado sobre un sistema basado en un
procesador bastante lento como el i386, lo que impuso la utilizacin de una arquitectura monoltica
tradicional.


ESTRUCTURA BASICA DE LAS FUENTES DEL NUCLEO

Los archivos que contienen el cdigo fuente del ncleo de LINUX se puede encontrar a partir del directorio
/ usr / src / LINUX. Los directorios que los contienen son:

KERNEL: Seccin central del ncleo, con la codificacin de servicios como fork, exit, etc. Parte de este
cdigo es muy dependiente de la mquina donde se est ejecutando LINUX; se ubica en directorios bajo el
directorio arch.

Se comentaba anteriormente que el primer proceso en ejecutarse el init. En realidad esto no ha sido ms
que una mentira con fines pedaggicos. El primer proceso en ejecutarse es el Kernel. El kernel hace de
frontera entre el software y el hardware. Para nuestra CPU, el kernel es un programa de software como
cualquier otro (o casi como cualquier otro) pero para el resto de procesos, init incluido, el kernel se
comporta como si fuese hardware. Cuando un proceso quiere acceder al hardware no lo hace
directamente, sino que se lo pide al kernel. El kernel hace de interlocutor entre procesos y hardware. Si
varios procesos quieren acceder al disco duro o a Internet, el kernel asignar un tiempo a cada uno de
ellos, copiar los datos que cada proceso quiere enviar y los enviar al disco duro o a la red. Tambin es
el kernel el encargado de distribuir el tiempo de CPU asignado a cada proceso. Linux es un sistema
multiproceso debido a que, aun disponiendo de un nico procesador, Linux es capaz de ejecutar
simultneamente varias tareas haciendo rotar el propietario de la CPU cada fraccin de segundo. En
realidad puede asignar el control de la CPU a un nuevo proceso entre 100 o 1000 veces por segundo,
dependiendo de la potencia de la CPU. Para un ser humano da la impresin de que todas las tareas se
estn ejecutando de forma simultnea. Este sistema de asignacin de la CPU es clave y est
extremadamente estudiado y optimizado. P.ej, Linux es lo suficientemente inteligente como para saber
qu procesos estn a la espera de recibir un dato de internet y, mientras este dato no llegue, no le
asignar el valioso tiempo de CPU. Desde hace unos aos a esta parte, los procesadores han desarrollado
sistemas de ahorro de energa permitiendo disminuir la frecuencia, potencia o ciclo de trabajo de la CPU
cuando no hay tareas que hacer. Linux est al tanto de este hecho y si observa que no hay aplicaciones
demandando la CPU automticamente le indica al procesador que disminuya el consumo de energa.
Si antes nombrbamos que los procesos estn asociados a usuarios y gestionan ficheros, en realidad estos
usuarios y ficheros son gestionados por el kernel. Cuando un proceso quiere acceder a un fichero, en
realidad le pide al kernel que acceda al fichero y ser el kernel quien le devuelva los datos que haya ledo.
Antes de ello el kernel comprueba el usuario y grupo asociado al proceso, comprueba a su vez los usuarios
o grupos que pueden acceder a dicho fichero. Si no concuerdan, en vez de devolver el dato, devolver un
error o excepcin al proceso llamante indicndole el "porque".
Otra labor del kernel es abstraer a los procesos del hardware real de la mquina. Un proceso 'visor de
fotos' que quiera acceder al fichero /home/usuario1/FOTOS/vaciones001.png no tiene que preocuparse si
dicho fichero est en un disco duro, una memoria SSD o debe ser accedido a travs de la red local ya que
se encuentra en otro ordenador. El kernel mediante un sistema llamado "montaje" mapea rutas lgicas de
directorios, p.ej, /home/usuario1 con un dispositivo fsico, p.ej, el disco duro local o un disco duro en
Internet a 1000 kms. de distancia. El proceso 'visor de fotos' no se tiene que preocupar de dnde est
fsicamente el fichero, solamente de su ruta simblica /home/usuario1/FOTOS/vacaciones0001.png.
La memoria RAM de un sistema es limitada, y de nuevo el kernel se encarga de asignar memoria a los
procesos. Adems, de nuevo, es lo suficientemente inteligente como para saber qu procesos llevan
mucho tiempo sin ejecutarse (por ejemplo un servidor de correo que lleva 10 minutos sin enviar ni recibir
correos) y si la memoria RAM escasea, es capaz de mover el proceso de RAM al disco duro y asignar la
memoria RAM a procesos que en un instante dado puedan hacer mejor uso de la misma.
La palabra Linux, estrictamente hablando, en realidad se refiere solamente al kernel. Los procesos
normales en realidad no son Linux, son procesos desarrollados por diferentes grupos de trabajo (fundacin
GNU, Mozilla, empresas,...). Sin embargo es costumbre resumir, por abuso del lenguaje, como Linux a
todo y cuanto se ejecuta bajo el kernel (algo que en realidad siempre ha molestado a otros grupos de
desarrollo que se ven injustamente ignorados por este hecho).

NET: Implementacin de los protocolos mas usuales en redes (TCP/IP, ARP...), as como el cdigo para
los sockets, etc.

FS: Este directorio contiene los archivos del Virtual File System Switch y los que cuelgan de el contienen
el soporte para los diferentes sistemas de ficheros soportados (ext2, ms dos, minix, xiafs, sysv y muchos
otros). El ms usado en LINUX actualmente es el ext2. Por ultimo hay que sealar que este directorio es
tambin herencia de minix.

ARCH: Implementacin del cdigo dependiente de la mquina. Hay directorios como alpha (para el DEC
Alpha), i386 (para el Intel 80386) y otros.

MM: Contiene las fuentes para la administracin de la memoria . No es un gestor de la memoria al estilo
minix, el directorio queda como una reminiscencia del sistema a partir del cual fue desarrollado.

MODULES: Contiene las fuentes para la carga dinmica de mdulos en el sistema ( permite modificar el
ncleo en tiempo de ejecucin).

INIT: Funciones para el arranque e iniciacin del kernel a partir de ciertos parmetros que le son pasados
.
DRIVERS: Contiene subdirectorios para el manejo de los diferentes dispositivos conectados a la mquina.
Es en estos (block, char, net, sound. . . .) donde se ubican los diferentes device drivers. Este directorio es
el ms voluminoso de todos , y se estima que va a ser el de mayor crecimiento a lo largo del desarrollo de
LI NUX, debido al enorme y creciente nmero de dispositivos existentes en el mercado.

IPC: Fuentes para la intercomunicacin de los procesos . Incluye semforos, colas de mensajes y
memoria compartida.

LIB: Implementacin de algunas de las funciones estndar del lenguaje de programacin C de las que se
hace gran uso en la implementacin del kernel.

INCLUDE: Directorio donde se almacenan los archivos de cabecera del kernel (header files). Cuelgan de
l, algunos directorios para las diferentes arquitecturas soportadas. Para simplificar el acceso a la
arquitectura adecuada existe un LINK simblico llamado include / asm.

PROCESOS: Linux se organiza en procesos, que son tareas independientes que se ejecutan de forma
simultnea mientras el sistema est en funcionamiento. Los procesos cuelgan unos de otros en una
dependencia padre/hijo. Inicialmente al arrancar el sistema slo existe un proceso, llamado init. Init lee
los ficheros de configuracin de arranque presentes en el directorio /etc. y va creando procesos hijos.
Estos a su vez tendrn sus propios hijos formando un rbol de descendientes. Los procesos en ejecucin
se encuentran alojados en la memoria rpida RAM del sistema. Cuando se habla de ejecutar o lanzar o
arrancar un proceso, nos estamos refiriendo al proceso de leer un fichero almacenado en el disco duro que
contiene las instrucciones del programa, colocando las mismas en la memoria RAM y a continuacin
empezando a ejecutar las instrucciones del programa ya en RAM.
USUARIOS: Linux est diseado para ser utilizado por varios usuarios simultneamente. Aun cuando el
sistema slo vaya a ser utilizado por un nico usuario, como es el caso corriente hoy en da, en general
internamente Linux utilizar varios usuarios 'robots' para organizar mejor y de forma ms segura el
sistema. Linux siempre tiene un super usuario llamado 'root' ('raz' en espaol). En el siguiente prrafo se
explica el por qu crea varios usuarios en vez de uno nico.
Cada uno de los procesos pertenece a un usuario y en funcin del usuario asociado, dicho proceso tendr
unos permisos u otros. Un proceso en ejecucin puede cambiar su usuario asociado si tiene los permisos
suficientes para hacerlo. En general slo tendr permisos para cambiar de usuario cuando el usuario
actual asociado al proceso sea 'root'. El proceso inicial Init se ejecuta con el usuario asociado 'root' lo cual
le confiere permisos totales sobre la mquina. En general cuando Init ejecute sus procesos hijos lo har
asocindolos a usuarios distintos cuyos permisos se reduzcan a los esenciales para ejecutar la tarea para
la cual estn diseado. Por. Ejemplo, Init puede arrancar un proceso 'servidor de correo' asociado al
usuario 'mail'. Este usuario tendr los permisos justos y necesarios para poder enviar y recibir correos y
almacenarlo en el directorio /var/spool/mail. El proceso 'servicio de correo' puede a su vez arrancar
procesos hijos pero estos estarn automticamente asociados a su usuario 'mail', nunca a 'root'. Este
simple sistema de permisos provee a Linux de un sistema de seguridad muy slido.
El entorno grfico estndar de Linux es un proceso ms llamado X. Cuando se arrancan las X todos los
programas grficos (que son a su vez procesos) colgarn de l y se ejecutarn por normal general con los
permisos del usuario que se ha lojeado con su nombre y password al inicio de la sesin. Las aplicaciones
que solemos manejar frecuentemente como el navegador web o el reproductor de video no son ms que
procesos hijo del proceso X. Si ejecutamos por ejemplo un cliente de correo con un agujero de seguridad
y descargamos un correo con virus, dicho virus 'engaar' al cliente de correo para que lo ejecute y
entonces tendremos un nuevo proceso 'virus' colgando del cliente de correo y asociado al usuario que
inici la sesin. Sin embargo puesto que este usuario no tiene permisos de administracin el virus no
podr modificar ficheros claves del sistema, solamente los ficheros propios del usuario. Al reiniciar el
ordenador el virus habr desaparecido. Esto complica enormemente la creacin de virus para Linux. El
entorno grfico X es un proceso ms, sin ningn privilegio sobre cualquier otro. Esto significa que
podemos prescindir del mismo si no nos hace falta. En general, cuando Linux se utiliza como servidor de
Internet es normal no iniciar el entorno grfico ya que consume mucha memoria y puede ralentizar el
sistema.
Este ha hecho que Linux se popularice y desplace a Windows en el entorno profesional ya que por ejemplo
permite contratar servicios de hospedaje virtual a precios mucho ms reducidos que sus equivalentes en
Windows. Tambin al no depender de un entorno grfico, puede administrarse remotamente de forma
mucho ms cmoda mediante lneas de comandos, mientras que Windows requiere transmitir el entorno
grfico a travs de Internet (mucho ms lento, costoso e inseguro).
FICHEROS: Los procesos acceden al hardware y a otros recursos como la conexin de red a internet o los
datos almacenados en disco a travs de un sistema de ficheros. Todas las entradas y salidas de datos
desde/hacia procesos se realizan a travs de ficheros. Por ejemplo, para acceder a la tarjeta grfica de
vdeo lo har leyendo y escribiendo en: /dev/video/card0 ^ ^ ^
Tarjeta 0 (podra haber ms de una tarjeta de video en el sistema)

Subdirectorio/carpeta video

Abreviatura de device (dispositivo)
Mientras que para acceder a un documento de texto almacenado en su disco duro lo har accediendo a
una ruta similar ha:
/home/usuario1/documento1.odf
^ ^ ^
Documento que queremos leer/editar.

Subdirectorio/carpeta usuario1 (puede haber muchos usuarios)

Directorio reservado para los ficheros de los usuarios finales
En general un mismo proceso puede acceder simultneamente a varios ficheros y a su vez un mismo
fichero puede ser accedido simultneamente por varios procesos como se ve en el esquema siguiente:
ARBOL DE PROCESOS FICHEROS Y DIRECTORIOS:
=================================================================
=========
Proceso Inicial (Init) /bin/Init

proc.Hijo1 /bin/proc.Hijo1
proc.Hijo1.1 /bin/proc.Hijo1.1
proc.Hijo1.2 /bin/proc.Hijo1.2
proc.Hijo2 /bin/proc.Hijo2
proc.Hijo2.1 /bin/proc.Hijo2.1
proc.Hijo2.2 /bin/proc.Hijo2.2
proc.Hijo3 /bin/proc.Hijo3
proc.Hijo3.1 /bin/proc.Hijo3.1
proc.Hijo3.1.1 /bin/proc.Hijo3.1.1
proc.Hijo4 ...
... /
/dev/pts/0
/dev/pts/1
/dev/pts/2
/etc/passwd
/dev/snd/controlC0
/dev/null
/lib/i686/libc-2.11.so
...
En el esquema anterior puede verse como por ejemplo todos los procesos (lado izquierdo) tienen acceso a
'/', la raz del sistema as como a /dev/null. Cada proceso tiene acceso tambin a su imagen en el disco
duro desde donde se leen el mismo antes de volcarla a memoria RAM.


PRINCIPIOS DEL DISEO DE LINUX.
PARADIGMAS DE LINUX
Linux es un sistema operativo que surge como una alternativa otros sistemas que restringan
funcionalidades o cerraban las posibilidades de crecimiento, ya sea por la imposibilidad de realizar la tarea
solicitada o por los aletargados ciclos de respuesta del proveedor. Es por ello que los sistemas basados en
GNU/Linux hacen hincapi en la flexibilidad, balanceando alta disponibilidad y escalabilidad, obteniendo el
mejor rendimiento, gran cantidad de aplicaciones con mnimos requerimientos de hardware y bajo costo
final.
Estamos frente a un concepto que es importante comprender, el paradigma del alto costo de licencia, las
restricciones al usuario, las formas tradicionales de desarrollo y distribucin estn cambiando
radicalmente, crendose el paradigma de la libertad en el uso de software, centrado en el usuario.
Libertad con un sistema operativo robusto, estable y en constante evolucin. En sus inicios GNU/Linux era
usado casi exclusivamente en el mbito acadmico, con el paso del tiempo, y a medida que se fue
popularizando Internet, se difundi a otros medios. Organizaciones cientficas, organismos
gubernamentales, empresas y usuarios finales comenzaron a utilizar
GNU/Linux como herramienta diaria de trabajo.
Si analizamos los inconvenientes ms frecuentes que atraviesa el parque informtico actual, podemos
destacar:
Virus, debido a la popularidad creciente de Internet y el uso cada vez ms frecuente del correo electrnico
y la mensajera instantnea suele ser comn encontrarse con cdigo malicioso.
En otros casos las fallas son provocadas por desconocimiento o intencionalmente, en muchos de los casos
esto se debe a la dificultad en la administracin de permisos y al bajo nivel de seguridad de las
implementaciones ms difundidas.
El ambiente agresivo en el que se encuentran las computadoras, expuestas a grandes cantidades de
usuarios, polvo, golpes, etc.
Por ltimo y para concluir esta contextualizacin nos resta agregar un ltimo dato muy importante, la
gran mayora no posee las licencias del software instalado, es decir no han pagado los casi 600 dlares
(por equipo) que cuestan las licencias de MS Windows+Office, ya sea por el costo o por que no se dispone
de la potencia necesaria para correr la ltima aplicacin del mercado.
Actualmente Microsoft est aumentando los requerimientos mnimos de hardware para sus productos,
dejando de dar soporte a sus aplicaciones y realizando fuerte presin sobre el estado para que aumente
los controles sobre las licencias del software instalado. Millones de usuarios, un crecimiento ininterrumpido
y el reconocimiento de su calidad, hacen de GNU/Linux en la actualidad el sistema dominante en
servidores corporativos de grandes, pequeas y medianas empresas, sin dejar atrs su avance sobre las
estaciones de trabajo con entornos grficos sumamente trabajados, estabilidad, rapidez y con infinidad de
aplicaciones libres. GNU/Linux es un descendiente de los UNIX, reconocidos desde hace ms de 4 dcadas
por su desempeo y estabilidad.
LLAMADAS DEL SISTEMA DE LINUX
GNU/Linux es un Sistema Operativo multitarea en el que van a convivir un gran nmero de procesos. Es
posible, bien por un fallo de programacin o bien por un intento malicioso, que alguno de esos procesos
haga cosas que atenten contra la estabilidad de todo el sistema. Por ello, con vistas a proteger esa
estabilidad, el ncleo o kernel del sistema funciona en un entorno totalmente diferente al resto de
programas. Se definen entonces dos modos de ejecucin totalmente separados: el modo kernel y el modo
usuario. Cada uno de estos modos de ejecucin dispone de memoria y procedimientos diferentes, por lo
que un programa de usuario no podr ser capaz de daar al ncleo. Las syscalls o llamadas al sistema son
el mecanismo por el cual los procesos y aplicaciones de usuario acceden a los servicios del ncleo. Son la
interfaz que proporciona el ncleo para realizar desde el modo usuario las cosas que son propias del modo
kernel (como acceder a disco o utilizar una tarjeta de sonido). La siguiente figura explica de forma grfica
cmo funciona la syscall read ().
Mecanismo de peticin de servicios al kernel
El modo usuario necesita acceder al disco para leer, para ello utiliza la syscall read () utilizando la interfaz
de llamadas al sistema. El ncleo atiende la peticin accediendo al hardware y devolviendo el resultado al
proceso que inici la peticin.
Prcticamente todas las funciones que utilicemos desde el espacio de ejecucin de usuario necesitarn
solicitar una peticin al kernel mediante una syscall, esto es, la ejecucin de las aplicaciones de usuario se
canaliza a travs del sistema de peticiones al sistema. Este hecho es importante a la hora de fijar
controles y registros en el sistema, ya que si utilizamos nuestras propias versiones de las syscalls para
ello, estaremos abarcando todas las aplicaciones y procesos del espacio de ejecucin de usuario.
Deberemos ser cautelosos tambin a la hora de cargar drivers o mdulos en nuestro ncleo.
Para hacer uso de las llamadas al sistema desde el lenguaje de programacin C, los sistemas operativos
que trabajan con el ncleo Linux ponen a disposicin del usuario varias funciones o procedimientos de
librera que representan a las llamadas del sistema. Los prototipos relativos a estas funciones o
procedimientos pueden encontrarse listados en el archivo de cabecera unistd.h (este se encuentra en el
directorio /usr/include/asm/, aqu tambin pueden encontrarse los archivos unistd_32.h y unistd_64.h,
archivos relativos a las arquitecturas de 32 y 64 bits respectivamente).
El sistema operativo de ncleo Linux cuenta con aproximadamente 200 funciones relacionadas con cada
llamada al sistema, algunos de los cuales pueden agruparse en ciertas categoras que permiten el manejo
o control de: procesos, seales, archivos, tiempo, etc.
FUENTES DE CONSULTA:
http://systope.blogspot.mx/2012/06/llamadas-al-sistema-en-linux.html
http://www.niux.com.ar/debian/gnu-linux/
http://www.adminso.es/index.php/4.1.2._Dise%C3%B1o_de_Linux
http://es.wikibooks.org/wiki/Introducci%C3%B3n_a_Linux/Arquitectura
http://njmolina.files.wordpress.com/2011/11/arquitectura-gnu-linux.pdf
http://www.monografias.com/trabajos14/linux/linux.shtml
http://exa.unne.edu.ar/depar/areas/informatica/SistemasOperativos/MonogSO/LINUX99.ht
m

Das könnte Ihnen auch gefallen