Download Kernel Linux – Carlos Eduardo

Document related concepts

Proceso de arranque en Linux wikipedia , lookup

Linux Unified Kernel wikipedia , lookup

Procfs wikipedia , lookup

Open Sound System wikipedia , lookup

Xen wikipedia , lookup

Transcript
November 14
Kernel
Linux
2010
Docente: Ing.
Carlos Ortega.
Kernel Linux
Universidad Nacional de Ingeniería
Índice
Abstract ................................................................................................................................................ 3
Introducción .......................................................................................................................................... 4
¿Qué es el Kernel? .............................................................................................................................. 7
Reconocimiento del tipo de Kernel .............................................................................................. 7
ESTRUCTURA DEL KERNEL DE LINUX................................................................................................... 8
Linux vs Windows ................................................................................................................................ 15
Tendencias de linux hacia el futuro y sus aplicaciones ................................................. 17
Elaborado por: Carlos Eduardo Rodríguez Avilés
2
Kernel Linux
Universidad Nacional de Ingeniería
Abstract
In this paper we have reviewed the Kernel Linux as an alternative OS for
all the computers in the world. Basically Linux was created by, at that
moment a student, Linus Torvalds in 1991. Linux was created based on
the GNU philosophy and the UNIX platform which makes it the most
complete and reliable free software in the world. Thus, it has a lot of
advantages when you compare it with other OS, for example, is the less
expensive OS from all since there is no license to purchase at a high price.
As we can see, these advantages bring a lot of expectations about the
Kernel, thus, many companies are implementing the Kernel Linux as a
cell phone OS, videogames, etc. We are now in front of the new wave of
free software which is getting more and more fans around the world. As
we may know, Linux is a community that grows like clockwork so we can
expect unlimited derivates from the original code due to the large amount
of contributions developed by the users. As a matter of fact, we may be
noticing the beginning of the future of the OS as we know it.
Elaborado por: Carlos Eduardo Rodríguez Avilés
3
Kernel Linux
Universidad Nacional de Ingeniería
Introducción
En 1991 Linus Benedict Torvalds, estudiante de la Universidad De Helsinki, estreno la version 0.02 de su
sistema operativo Linux.
Desde entonces, millones de usuarios en todo el mundo poseen este sistema gratuito y miles de ellos
contribuyen a su continuo desarrollo aportando programas, información sobre bugs (fallos de
software/hardware), ayuda, tutoriales, etc.
La idea de crear un sistema clon de Unix basado en GNU (General Public License o Licencia General
Publica) y el código fuente disponible gratuitamente, surgió en 1991 cuando Linus Torvalds estudiaba la
carrera de ciencias informáticas.
Torvalds se encontraba especialmente interesado en Minix, el único sistema Unix disponible en aquel
entonces. Este sistema gratuito fue creado por Andrew Tanenbaum con el propósito de facilitar a los
alumnos de la universidad el estudio y diseño de sistemas operativos. Minix era un Unix más, tanto en
apariencia como en el Kernel, pero distaba mucho de ser comparable a uno de los grandes.
A partir de ese momento Torvalds decidió crear un sistema que excediera los estándares de Minix,
poniendo en marcha el proyecto Linux.
Estas son algunas fechas importantes en cuanto al desarrollo del Kernel Linux:

1995: En marzo, la siguiente rama estable de Linux aparece, la serie 1.2. Más tarde, Linux es
transportado a las plataformas informáticas DEC y SUN SPARC. Durante los años siguientes es
transportado a un número cada vez mayor de plataformas.

1996: La versión 2.0 del núcleo Linux es liberada. Éste ahora puede servir varios procesadores al
mismo tiempo, y así se hace una alternativa seria para muchas empresas.
Elaborado por: Carlos Eduardo Rodríguez Avilés
4
Kernel Linux

Universidad Nacional de Ingeniería
1997: Varios programas propietarios son liberados para Linux en el mercado, como la base de
datos Adabas D, el navegador Netscape y las suites de oficina Applixware y StarOffice.

1998: Empresas importantes de informática como IBM, Compaq y Oracle anuncian soporte para
Linux. Además, un grupo de programadores comienza a desarrollar la interfaz gráfica de usuario
KDE, primera de su clase para Linux, con el objetivo de proveer facilidad de uso al usuario.

25 de enero de 1999: Aparece la serie 2.2 del núcleo Linux, en enero, con el código de red y el
soporte a SMP mejorados. Al mismo tiempo, un grupo de desarrolladores comienza el trabajo
sobre el entorno gráfico GNOME, que competirá con KDE por la facilidad de uso y la eficiencia
para el usuario. Durante ese año IBM anuncia un extenso proyecto para el soporte de Linux. Este
Kernel tenia 1.800.847 líneas de código.

18 de diciembre de 1999: se publicaron parches de IBM Mainframe para 2.2.13, permitiendo de
esta forma que Linux fuera usado en ordenadores corporativos.

2000: La Suite de oficina StarOffice es ofrecida según los términos de la GNU GPL, abriendo así el
camino para una Suite de oficina avanzada, y libre en Linux.

4 de enero 2001: En enero, se libera la serie 2.4 del núcleo Linux. El núcleo Linux ahora soporta
hasta 64 Gb de RAM, sistemas de 64 bits, dispositivos USB y un sistema de archivos
journaling.Este Kernel tenia 3.377.902 lineas de codigo.

2002: La comunidad OpenOffice.org libera la versión 1.0 de su Suite de oficina homónima. El
navegador web libre Mozilla es también liberado. En septiembre, aparece el Slapper-worm el
cual es el primer gusano informático Linux.

17 de diciembre 2003: Al final del año, la serie 2.6 del núcleo Linux es liberada, después de lo
cual Linus Torvalds va a trabajar para el OSDL. Linux se usa más extensamente sobre sistemas
integrados (embedded system).Este Kernel tenia 5.929.913 lineas de codigo.

2004: El equipo de XFree86 se desintegra y se forma la fundación X.Org, que provoca un
desarrollo considerablemente más rápido del servidor X para Linux.
Elaborado por: Carlos Eduardo Rodríguez Avilés
5
Kernel Linux

Universidad Nacional de Ingeniería
2005: El proyecto openSUSE es comenzado como una distribución libre de la comunidad de
Novell. Además el proyecto OpenOffice.org proyecta la versión de lanzamiento 2.0 que soporta
al estándar OASIS OpenDocument en octubre.

2006: El Xgl de Novell y el AIGLX de Red Hat permiten el uso de efectos acelerados por hardware
sobre el escritorio Linux. Oracle publica su propia distribución de Red Hat. Novell y Microsoft
anuncian una cooperación para la mejor interoperabilidad.

2007: Dell llega a ser el primer fabricante principal de computadoras en vender una
computadora personal de escritorio con UBUNTU instalado.

24 de diciembre de 2008: Se lanza Linux 2.6.28 con 10.195.402 lineas de codigo.

24 de febrero de 2010: Se lanza Linux 2.6.33 con 12.990.041 lineas de codigo.
La ultima version del Kernel 2.6.35.2 salio el 13 de agosto de 2010, esta es la ultima version estable del
Kernel Linux, la version mas reciente es la 2.6.36-rc1 que está en prueba.
Linux habia nacido para ser un sistema operativo del tipo Posix (variante de Unix), totalmente gratuito
para el usuario y con libre acceso al codigo fuente. Esta tres ideas fueron las que lo han convertido en el
sistema con mejor rendimiento, más fiable, veloz y con mas desarrolladores del mundo.
El trabajo presentado trata sobre el Kernel Linux el cual es parte de lo que se conoce como “software
libre”, terminología usada para aquellos programas libres de licencia y que se pueden usar de manera
gratuita.
Este es el software libre más famoso y difundido en el mundo y se expondrá su funcionamiento y
avances realizados en materia de Linux y software libre. Al tener en muy poco tiempo miles de usuarios,
las nuevas versiones de Linux salían casi semanalmente. En el presente hay millones de usuarios y
gracias a ellos y sus aportes, Linux crece sin respiro alguno.
Elaborado por: Carlos Eduardo Rodríguez Avilés
6
Kernel Linux
¿Qué es el Kernel?
Universidad Nacional de Ingeniería
El kernel ó núcleo de Linux lo podríamos definir como el corazón del SO.
Antiguamente había dos tipos de versiones del núcleo. Teníamos:

Versión de produccion: Era la versión estable del momento y la que se debía de utilizar, ya que,
esta versión era el resultado final de las versiones que estaban en desarrollo.

Versión de desarrollo: Era la versión que estaba en desarrollo y la que los programadores
utilizaban para corregir bugs. Esta versión es muy inestable.
Reconocimiento del tipo de Kernel
Los números de versión del Kernel de Linux consisten en cuatro números: A.B.C.D
Asi por ejemplo podemos citar la versión 2.6.31.5
1. El primer número indica la versión del Kernel.
2. El segundo número indica la revisión mayor. Antes del Kernel 2.6 los números de revisión pares
correspondían a versiones estables y los impares correspondían a versiones inestables que
estaban aún en desarrollo. Después de la versión 2.6 lo números se manejaron de manera
distinta.
3. El tercer número corresponde a las revisiones menores, como la aceptación de nuevos drivers.
4. El cuarto número corresponde a las correcciones de errores menores o parches de seguridad.
Elaborado por: Carlos Eduardo Rodríguez Avilés
7
Kernel Linux
Universidad Nacional de Ingeniería
ESTRUCTURA DEL KERNEL DE LINUX
Introducción:
Originalmente Linux era monolítico, es decir que todas las funcionalidades estaban incluidas en el código
del núcleo y era necesario recompilarlo para soportar un nuevo dispositivo, etc.
Sin embargo, esta idea no encaja bien con la enorme diversidad de componentes hardware que existen
hoy en día. Que todas las personas tengan los mismos componentes es raro, por esta razón Linux, como
buen sistema operativo Unix pretende obtener todo el partido de la máquina en la que se está
ejecutando.
Debido a todo esto, el diseño fue migrando paulatinamente a un modelo basado en módulos. Se
procura así que el núcleo sea lo más ligero posible y cuando sea necesario añadir una nueva
funcionalidad como soportar una nueva tarjeta de sonido, sólo haya que compilar el módulo y añadirlo
al núcleo.
(Nota: Unix es un sistema operativo portable, multitasking y multiusuario desarrollado en principio en
1969 por un grupo de empleados de Laboratorios Bell, de este se han basado muchos sistemas
operativos como Solaris y Linux para crear un núcleo de sistema operativo de tipo Unix)
eSTRUCTURA
El Kernel está compuesto por cinco subsistemas.
1) Process Scheduler o Programador de Procesos
2) Memory Manager o Administrador de Memoria
3) Virtual File System o Sistema de Archivos Virtual
4) Network Interface o Interfaz de Red
5) Inter-Process Comunication o Comunicación Entre Procesos
Estos componentes son independientes entre sí.
Elaborado por: Carlos Eduardo Rodríguez Avilés
8
Kernel Linux
Universidad Nacional de Ingeniería
1) Process Scheduler o Programador de Procesos
a) Permitirle a los procesos crear nuevas copias de sí mismos (forking)
b) Determinar qué proceso tendrá acceso a la CPU
c) Recibir interrupciones y desviarlas hacia el subsistema respectivo
d) Enviar mensajes a los procesos de usuario
e) Manejar el reloj de Hardware (Hardware Timer)
f) Liberar recursos cuando un programa los haya desocupado.
El Process Scheduler también soporta módulos cargados dinámicamente. Una de las funcionabilidades
más importantes de esto último son el Virtual File System y Network Interface.
También provee dos interfaces. Uno, provee una interface de llamada a sistema limitada que los
procesos pueden llamar. Dos, provee una interface para el resto del espacio del Kernel.
En tiempo de booteo, Linux posee sólo un proceso, init(), que a su vez realiza copias de sí mismo a través
de llamadas fork(). Cuando un proceso termina, ejecuta la llamada a _exit().
Ademas posee llamados a señales a través de signal(). Esta llamada permite a un proceso asociar un
manejador de funcion (function handler) con una señal en particular. Las señales pueden considerarse
como una forma de IPC o intercomunicación de procesos.
Acerca del timer, Linux maneja un timer interno que se inicia cada 10 milisegundos. Esto permite que los
procesos se reasignen (Scheduling) cada 10 ms. Esta unidad se llama “clock tick” que sirve para medir la
cantidad de ticks que un proceso en particular puede continuar ejecutándose sin forzar su reasignación.
Cada proceso se asigna con un identificador único, llamado Process ID o pid, que es asignado a la lista de
procesos o tabla de procesos.
Finalmente, una estructura de modulos es usada para representar los modulos cargados en tiempo de
ejecución. Esta estructura posee campos que son usados para implementar una lista de estructura de
modulos. Es decir, un campo que apunta a la tabla de símbolos de los módulos y otro con el nombre del
módulo.
Elaborado por: Carlos Eduardo Rodríguez Avilés
9
Kernel Linux
Universidad Nacional de Ingeniería
2) Memory Manager o Administrador de Memoria
El Memory Manager o administrador de memoria permite lo siguiente:
a) Gran espacio de direcciones: Los programas pueden requerir más memoria que la que físicamente
existe
b) Protección: La memoria asignada un proceso es privada para tal.
c) Mapas de Memoria: Se puede mapear un archivo dentro de un area de memoria virtual y acceder al
archivo como si fuera memoria
d) Acceso Limpio a la Memoria Física: el MM asegura que los procesos puedan usar transparentemente
todos los recursos de la máquina, asegurando además un rendimiento aceptable
e) Memoria Compartida: Permite que los procesos puedan compartir trozos de la memoria asignada.
El Administrador de memoria posee dos interfaces : una interfaz con llamada a sistema que es usada por
los procesos de usuario (User Space) y una interface que es usada por los otros subsistemas (Kernel
Space).Algunas de las llamadas de usuario incluyen malloc() y free(). Las llamadas de kernel incluyen
kmalloc() y kfree().
Ya que Linux soporta múltiples arquitecturas, es necesario entonces que existan rutinas específicas para
abstraer los detalles del uso del hardware en una sola interface.
El Memory Manager usa el administrador de memoria de hardware para mapear direcciones virtuales a
direcciones físicas. Gracias a esto, los procesos no están conscientes de cuanta memoria física está
asociada a una dirección virtual. Esto permite al MM poder mover trozos de memoria virtual dentro de
la memoria física. Además, permite que dos procesos puedan compartir dos trozos de memoria física si
las regiones de memoria virtual asignadas a ellas son mapeadas en la misma dirección física.
Otro concepto importante es el Swapping o intercambio, que es intercambiar (swap) memoria ocupada
por procesos en un archivo. Esto le permite al Kernel poder ejecutar mayor cantidad de procesos que
usen mayor cantidad de memoria física existente. El MM posee un demonio, kswapd, para ejecutar la
tarea de intercambiar zonas de memoria en archivos y viceversa. Este demonio chequea periódicamente
si no existen direcciones físicas mapeadas recientemente. Estas direcciones son vaciadas de la memoria
física, y además de esto, el MM minimiza la cantidad de actividad de disco necesaria para hacer este
intercambio.
Elaborado por: Carlos Eduardo Rodríguez Avilés
10
Kernel Linux
Universidad Nacional de Ingeniería
El administrador de memoria del hardware detecta cuando un proceso de usuario tiene acceso a una
porción de memoria no mapeada en una dirección virtual y avisa al Kernel de esta falla. Existen dos
alternativas para solucionar esto:
a) o la página de memoria es volcada a un archivo y viceversa
b) o el proceso está haciendo referencia a una zona de memoria no permitida
Si el administrador de memoria detecta un acceso no permitido (a la memoria) notifica al proceso con
una señal. Si el proceso no sabe cómo manejar esta señal, el proceso es finalizado.
3) Virtual File System o Sistema de Archivos Virtual
Un importante desarrollo tuvo lugar cuando se añadió el sistema de ficheros EXT, en aquel momento el
sistema de ficheros real se separó del sistema operativo y servicios del sistema a favor de un interfaz
conocido como el sistema de Ficheros Virtual, o VFS.
VFS permite a Linux soportar muchos, incluso muy diferentes, sistemas de ficheros y cada uno
presentando un interfaz software común al VFS. Todos los detalles del sistema de ficheros de Linux son
traducidos mediante software de forma que todo el sistema de ficheros parece idéntico al resto del
kernel de Linux y a los programas que se ejecutan en el sistema. La capa del sistema de Ficheros Virtual
de Linux permite al usuario montar de forma transparente diferentes sistemas de ficheros al mismo
tiempo.
El VFS de Linux mantiene una antememoria (cache) con información de cada sistema de ficheros
montado y en uso, siempre se debe tener mucho cuidado al actualizar correctamente el sistema de
ficheros ya que los datos contenidos en las antememorias se modifican cuando se crean, escriben y
borran ficheros y directorios.
La antememoria o caché más importantes es el Buffer Cache, que está integrado entre cada sistema de
ficheros y su dispositivo de bloque. Tal y como se accede a los bloques se ponen en el Buffer Cache y se
almacenan en varias colas dependiendo de sus estados. El Buffer Cache no sólo mantiene buffers de
datos, también ayuda a administrar el interfaz asíncrono con los controladores de dispositivos de
bloque.
Como ventajas podemos citar la estructura de datos en memoria con los bloques más frecuentemente
utilizados y las lecturas adelantadas.
Linux implementa el denominado Virtual File System Cache, (VFS Caché) para acelerar
substancialmente el sistema de ficheros. El argumento "filename" es utilizado por el VFS para buscar en
una estructura denominada Directory Entry Caché (dentry caché o dcache), donde se almacenan
referencias a los directorios utilizados Una entrada del dcaché contiene un puntero a un inodo y solo
residen en memoria, mientras que los inodos tienen existencia en el disco físico. El VFS implementa un
buffer caché que controla los accesos a disco, realizando operaciones de lectura en avance (look-ahead)
Existe caché de directorios, de inodos y de bloques de disco.
Elaborado por: Carlos Eduardo Rodríguez Avilés
11
Kernel Linux
Universidad Nacional de Ingeniería
4) Network Interface o Interfaz de Red
El sistema de red de Linux permite la conectividad entre distintas máquinas de una red y un modelo de
conexión via sockets.
Existen dos tipos de sockets, los BSD y los INET.
Linux posee dos protocolos de transporte con distintos tipos de modelo de comunicación y calidad de
servicio. Están los mensajes no confiables, basados en el protocolo UDP y los mensajes confiables
basados en TCP. Estos dos están implementados sobre el protocolo de transporte y el protocolo IP.
El protocolo IP está por encima de los drivers. A los drivers se les provee distintas formas de
comunicación: SLIP (Serial Link IP), PLIP (Parallel Line IP) y Ethernet. Un protocolo de resolución de
direcciones media entre el protocolo IP y los drivers de Ethernet. Su tarea es resolver direcciones IP
lógicas y convertirlas en direcciones físicas ethernet (de capa 3 a capa 2).
Los servicios de red son usados por los otros subsistemas y por el usuario a traves de la interfaz de
sockets, que son creados y manipulados a traves de socketcall(). Los datos son leidos y escritos a través
de read() y write() como si fuera un descriptor de archivo.
El modelo BSD de sockets es presentado a los procesos de usuario. El modelo es orientado a la conexión,
se permite hacer streaming (flujo) y se permiten buffers. La implementacion BSD está por sobre la INET.
BSD maneja las tareas de forma similar al VFS (Virtual File System) y administra una estructura de datos
general para las conexiones. Su propósito es la portabilidad a través de la abstracción de los detalles, a
través de una simple interfaz. La interfaz BSD es usada por Unix y Windows.
El modelo INET administra los puntos finales de la comunicación para los protocolos TCP y UDP.
La lectura/escritura de red comienza por leer o escribir en un socket. Esto invoca a una llamada de
sistema que es manejada por el VFS (o sea, las llamadas a archivo o sockets es simétrica). Desde ahí, se
determina que la llamada BSD sock_write() es la que implementa la llamada al filesystem. Esta rutina
maneja detalles administrativos (permisos) y pasa el control a inet_write(), para después llamar a una
funcion de transporte, como tcp_write().
Las rutinas de escritura de la capa de transporte son las responsables de fragmentar los datos entrantes
en paquetes de transporte. Estas rutinas pasan el control a ip_build_header() que construye una
cabecera IP para ser insertada en el paquete a enviar. Luego, tcp_build_header() es llamada para crear
una cabecera TCP. Una vez hecho esto, se envian los datos directamente al driver de red.
Elaborado por: Carlos Eduardo Rodríguez Avilés
12
Kernel Linux
Universidad Nacional de Ingeniería
El sistema de red posee dos servicios de transporte diferentes.
UDP posee una comunicación no orientada a la conexión y no confiable. Está encargada de recibir
paquetes de la capa IP y encontrar el socket de destino donde los datos deben ser enviados. Si no se
encuentra el socket, se genera un error.
TCP, en cambio, es bastante mas complicado. Ademas del manejo de datos entre los procesos de
recepción y envío, realiza complicadas tareas de administración de la conexión. TCP envia los datos al
socket como un stream (flujo), en vez de una secuencia de datos (como UDP), pero garantiza una
comunicación confiable.
El protocolo IP provee un servicio de transporte de paquetes. Dado un paquete y un destino, la capa de
comunicación IP es responsable del enrutamiento del paquete al host que corresponda.
Para un flujo de datos saliente, IP es responsable de
a) Particionar el flujo en paquetes IP
b) Enrutar los paquetes a la dirección de destino
c) Generar una cabecera que será usada por los drivers de red
d) Seleccionar el dispositivo de red apropiado para enviar los datos
Para un flujo de datos entrantes, IP es responsable de
a) Verificar la validez de la cabecera
b) Comparar la dirección de destino con la dirección local y reenviarlo si no corresponde
c) Desfragmentar el paquete IP
d) Enviar los paquetes a la capa TCP o UDP según corresponda
El protocolo ARP (Address Resolution Protocol) es el responsable de convertir entre direcciones IP y
direcciones de red reales. ARP soporta distintos tipos de hardware, Ethernet, FDDI, etc. Esta función es
necesaria cuando los sockets se comunican con direcciones IP, ya que no pueden ser usadas
directamente por los dispositivos de red.
El subsistema de red provee sus propios drivers para conexiones seriales, paralelas y ethernet. Posee
una interfaz de abstracción para los dispositivos para ocultar las diferencias entre las comunicaciones de
las capas mas bajas y mas altas de este subsistema.
Elaborado por: Carlos Eduardo Rodríguez Avilés
13
Kernel Linux
Universidad Nacional de Ingeniería
5) Inter-Process Comunication o Comunicación Entre Procesos
El IPC es un mecanismo en el cual los procesos que se están ejecutando posean medios para compartir
recursos, sincronizarse y compartir datos entre ellos. Linux implementa todas las formas de IPC a través
de recursos compartidos, estructuras de datos de Kernel y colas de espera.
Estas formas de IPC son a través de
a) Señales
b) Colas de Espera
c) Bloqueos de Archivos
d) Pipes y Named Pipes, que permiten una transferencia de datos bidireccional y orientada a la conexión
entre dos procesos, explícitamente seteando los pipes o comunicándolos a través de named pipes en el
sistema de archivos (N. del E.:piensen en ls -als | more como una forma de piping)
e) Unix Domain Sockets, otro medio de transferencia, más usado en el modelo INET
f) IPC de System V compuesta por:
g) Semáforos
h) Colas de Mensaje
i) Memoria Compartida
Una señal es una notificación enviada a un proceso por el kernel o por otro proceso. Las señales se
envían a través de send_sig(). El numero de señal se da como parámetro, como también el proceso
destino. Los procesos pueden registrar sus propias señales, a través de la función signal().
Los bloqueos de archivo están soportados directamente por el kernel. Para bloquear un archivo, puede
usarse open() simplemente.
Pipes (tuberías) pueden ser usadas con pipe(), para filesystems read() o write() y para named pipes
open().
Para Unix Domain Sockets, toda la funcionabilidad está encapsulada en socketcall().
En IPC de System V, existe una interfaz común para los tres métodos, ipc().
Las colas de espera son solo listas con los procesos que esperan por un evento del kernel, como la
finalización de una lectura de DMA. Un proceso puede entrar voluntariamente a una cola de espera con
sleep_on() o interruptable_sleep_on() y despertar con wake_up() o wake_up_interruptable() (que
remueve los procesos de esta cola).
Los bloqueos de archivos ocurren para prevenir que dos procesos puedan acceder al mismo archivo.
Esta exclusión puede ser hecha al archivo completa o a una porción del archivo.
Elaborado por: Carlos Eduardo Rodríguez Avilés
14
Kernel Linux
Universidad Nacional de Ingeniería
Los Pipes y Named Pipes son similares, pero su creación es diferente. En ambos casos debe existir un
descriptor de archivo que esta enlazado a la tubería. Después de la creacion de la tubería, una página de
memoria es asociada a ella que es tratada como un buffer circular, donde las funciones de escritura se
manejan de forma atómica. Si se llena este buffer, se bloquea el proceso de escritura. Si se leen mas
datos de los existentes, el proceso de lectura se bloquea. Así, cada tubería posee un proceso de espera
asociado.
Los semáforos se implementan con colas de espera, siguiendo el modelo clásico de semáforos. Cada
semáforo posee un valor asociado. Existen dos operaciones para este manejo, up() y down(). Cuando el
valor del semáforo es 0, el proceso que ocupa el semáforo (para decrementar su estado) es bloqueado
en la cola de espera.
Las colas de mensajes son listas que los procesos leen o escriben secuencias de bytes. Los mensajes se
reciben en el mismo orden que son escritos. Existen dos colas, una para los procesos que envían un
mensaje completo a la cola y otra para ordenar las escrituras de los mensajes.
La memoria compartida es la forma más rápida de IPC. Permite que los procesos puedan compartir
regiones de la memoria. La creación de esta memoria compartida se hace a través del administrador de
memoria.
Linux vs Windows
En esta sección hablaremos sobre las ventajas y desventajas existentes entre Linux y el OS más usado en
el mundo: Windows.
Tópico
Linux
Windows
Precio
La mayoría de las
variantes de Software
Linux se encuentran
gratis o a un muy bajo
precio.
Cada licencia de
Windows puede costar
entre $50.00 a $150.00
según la serie.
Elaborado por: Carlos Eduardo Rodríguez Avilés
15
Kernel Linux
Universidad Nacional de Ingeniería
Manejo
A pesar que se han dado
muchas mejoras a Linux,
Windows es de mucho más
fácil manejo.
Windows ha logrado
grandes avances en
cuanto a su interfaz
para el usuario. No
será tal vez el OS más
fácil pero si lo es en
comparación a Linux.
Robustez
Linux se ha caracterizado
siempre por la robustez
de su sistema ya que
pueden pasar meses e
incluso años sin la
necesidad de apagar o
reiniciar el equipo,
también si una aplicación
falla simplemente no
bloquea totalmente al
equipo.
En Windows siempre hay
que reiniciar cuando se
cambia la
configuración del
sistema, se bloquea
fácilmente cuando
ejecuta operaciones
aparentemente simples
por lo que hay que
reiniciar el equipo.
La gran cantidad de
usuarios que utilizan
Linux tiene un limitado
Windows hace que su OS
Software grupo de partners cuyos
sea mas standard y
Software son compatibles. compatible con otras
empresas que crean
Software.
Elaborado por: Carlos Eduardo Rodríguez Avilés
16
Kernel Linux
Universidad Nacional de Ingeniería
Muchos de los programas
disponibles para Linux
(sean juegos, hojas de
calculo, etc..) son
freeware o fuente
Costos de
abierta. Incluso aquellas
Softwares
que no son freeware como
Gimp, OpenOffice,
Staroffice y Wine están
disponibles a muy bajo
precio.
A pesar de que Windows
cuenta con una amplia
gama de Software
gratis, muchos de
ellos, en especial los
más avanzados, pueden
costar entre $20.00 a
$200.00 por copia.
Linux es un sistema mucho
Seguridad más seguro en
comparación a Windows.
A pesar de que Windows
ha realizado avances
en cuanto a seguridad,
aún es un OS
vulnerable a ataques
de virus y hackers.
Tendencias de linux hacia el futuro y sus aplicaciones
Los operadores de telefonía móvil están mirando a los sistemas operativos Linux como una forma de
abaratar los costes y como una forma de diversificar la oferta para ajustarse mejor a la demanda,
como una reacción al deterioro de la economía. Hasta ahora el crecimiento ha sido lento y se ha
estabilizado hace poco tiempo. Sin embargo, los avisos recientes de Motorola, de Vodafone, de HTC,
y de Huawei, entre otros indicando de la adopción de nuevos modelos con Linux demuestran
claramente que los fabricantes y los operadores están listos para usar Linux a una escala más
grande.
Y de hecho fue Nokia, el primer fabricante que lo incluyó hace unos meses, presentó un modelo de
gama alta, el N900, que funciona con Linux Maemo. Además, el propio Symbian completó su
migración a código abierto en Febrero de 2010.
Elaborado por: Carlos Eduardo Rodríguez Avilés
17
Kernel Linux
Universidad Nacional de Ingeniería
También Google utilizó Linux para construir el sistema Android de su teléfono Nexus One, fabricado
con HTC.
El software libre se está poniendo de moda, así la mayoría de los fabricantes podrán incluir sus
programas, en todas las plataformas que existen hoy en día.
Elaborado por: Carlos Eduardo Rodríguez Avilés
18
Kernel Linux
Conclusiones
Universidad Nacional de Ingeniería

El Kernel Linux es el OS Software Libre mas difundido del mundo.

Su robustez es basada en la plataforma UNIX en que está basado. Basicamente, y como vimos en
secciones anteriores, en comparación al OS Windows basado en lenguaje de programación C, las
líneas de código basado en UNIX tienen una raíz distinta a C por lo que la mayoría de virus
creados que poseen la raíz en C no afectan a Linux.

El Kernel en si esta siendo impulsado como el futuro del software en ámbitos que van más alla
de las PC. Hablamos de incluir el código en dispositivos como teléfonos móvil como ya se
implementó en el OS Android de Google o el OS Maemo de Nokia que está sustituyendo el ya
conocido Symbian.

Económicamente hablando es el más ventajoso y es debido a eso, entre otras cualidades del
Kernel, que varias de las compañías más grandes del mundo lo han implementado. La reducción
de costos siempre es un problema y el Kernel permite ahorrar los costos de una licencia costosa.
Elaborado por: Carlos Eduardo Rodríguez Avilés
19