Vanessa Manzano Palacios.

LINUX (o GNU/LINUX, más correctamente) es un Sistema Operativo como MacOS, DOS o Windows. Es
decir, Linux es un software necesario para que un ordenador te permita utilizar programas como:
editores de texto, juegos, navegadores de Internet, etc. Linux puede usarse mediante un interfaz
gráfico al igual que Windows o MacOS, pero también puede usarse mediante línea de comandos como
DOS.

Linux tiene su origen en Unix. Éste apareció en los años sesenta, desarrollado por los investigadores
Dennis Ritchie y Ken Thompson, de los Laboratorios Telefónicos Bell.

Andrew Tanenbaum desarrolló un sistema operativo parecido a Unix (llamado Minix) para enseñar a
sus alumnos el diseño de un sistema operativo. Debido al enfoque docente de Minix, Tanenbaum
nunca permitió que éste fuera modificado, ya que podrían introducirse complicaciones en el sistema
para sus alumnos.

Un estudiante finlandés llamado Linus Torvalds, constatando que no era posible extender Minix,
decidió escribir su propio sistema operativo compatible con Unix.

En aquellos momentos el proyecto GNU (GNU's Not Unix), que Richard Stallman había iniciado hacía
ya casi diez años, comprendía un sistema básico casi completo. La excepción más importante era el
kernel o núcleo, que controla el hardware.

Torvalds decidió aprovechar el sistema GNU y completarlo con su propio núcleo, que bautizó como
Linux (Linux Is Not UniX). El sistema conjunto (herramientas GNU y núcleo Linux) forma lo que
llamamos GNU/Linux.

ARQUITECTURA DE LINUX:

 Soporta acceso remoto
 Contiene una interfaz xfree86que es básica de usuario basada en los estándares de X-window
y es gratuita.
 Contiene un soporte nativo fácil conexión a internet y otras redes TCP/IP.
 Las extensiones del núcleo y los controladores de dispositivos normalmente se ejecutan en un
rango privilegiado llamado anillo.
 Se puede tener la posibilidad de instalar varios programas tales como procesadores de texto
hojas de cálculo, bases de datos, paquetes de telecomunicaciones y juegos así como varios
lenguajes de programación.

PRINCIPIOS DE DISEÑO

Linux está basado en un largo historial de decisiones de diseño multiusuario

Desde el principio, Linux se diseño como un sistema operativo multiusuario. Cada usuario tiene un
directorio donde se guardan todos los ficheros de datos y de configuración. Cuando un usuario ejecuta
una aplicación, por ejemplo un procesador de textos, dicha aplicación se ejecuta con los permisos del
usuario, por lo tanto si un usuario puede escribir en el directorio raíz, la aplicación también podrá
hacerlo.

Además Linux implementa todas las capacidades del sistema (p. e. visualizador de imágenes) con
librerías modulares. De esta forma cuando un procesador muestra una imagen, la función de
visualización de la imagen se ejecuta con los mismos permisos del usuario. Dada la naturaleza del

He clasificado como de POO a lenguajes que tienen características especiales o añadidos que facilitan la POO. las funciones de librería que son funciones ordinarias que residen en una librería externa a tu programa (desarrollo propio o ajeno al programa). los drivers de la tarjeta gráfica NVIDIA) Linux no depende del modelo RPC y los servicios están configurados por defecto para no utilizar RPC: En Windows. Los lenguajes funcionales (LISP. las estructuras de datos y los algoritmos se integran en unidades. De la misma forma los servicios. Linux obliga a los drivers gráficos a ejecutarse fuera del Kernel y solo en unas pocas excepciones lo hacen dentro de este. La programación lógica (Prolog). también llamada programación declarativa. Una llamada a estas funciones es igual a cualquier llamada a una función. por otro lado. el hacker solo podrá utilizar los ficheros del usuario www-data. La POO contrasta con la programación procedural (que usa algoritmos y estructuras de datos separados). explotar otro tipo de vulnerabilidades a través de la línea de comandos. En la programación orientada a objetos. y se puede programar en estilo procedimental con lenguajes clasificados como Orientados a Objetos. como puede ser un servidor web. si un hacker logra tener control sobre el servidor web de un sistema Debian. las aplicaciones que utilizan la red se configuran por defecto paa que el módulo RPC solo atienda las llamadas de localhost y las demás son bloqueadas. (p.Vanessa Manzano Palacios. Como por ejemplo las funciones de la librería estándar C (libc). Además. e. Las funciones ordinarias internas a tu programa (desarrollo propio al programa). los lenguajes funcionales son un superconjunto de POO. Los argumentos son situados en los registros del . Linux tiene un diseño modular. Por ejemplo Debian GNU/Linux. En la mayoría de las distribuciones Linux. no tiene relación con otros tipos de programación en un sentido similar. por ejemplo) son de una clase un poco diferente -entre otras cosas. ejecuta apache a través del usuario www-data. esto ocurre porque Windows integra el sistema gráfico dentro del Kernel. excepto algunos drivers gráficos y para los entornos gráficos KDE y GNOME. La Programación Orientada a Objetos es un paradigma de programación importante que está ganando popularidad. En Windows los errores en los drivers en la tarjeta gráfica causan los conocidos pantallazos azules. se ejecutan como usuario con permisos restringidos. diseño modular de Linux. en principio. No depende estrictamente del lenguaje: se puede hacer POO con lenguajes no clasificados como tales (por ejemplo C). prácticamente es imposible enviar un mail con virus a un usuario que logre infectar su equipo. no monolítico: Linux tiene un diseño modular para todos sus módulos de software. las cuentas de usuario asociadas a servicios no pueden acceder a la línea de comandos. Paradigma de Linux Lo único que logre encontrar a este respecto a este tema es que es un paradigma orientado a objetos. a menudo llamadas clases. de esta forma si un hacker rompe el servidor web no podrá. las llamadas RPC permiten a un programa llamar a oro para que haga algo. Llamadas al sistema en Linux: A la hora de programar en C hay 3 tipos de funciones a las que podemos recurrir.

los argumentos son empaquetados y manejados por el núcleo. Y. La ejecución es transferida al comienzo del código de la función. las llamadas al sistema (system call). El conjunto de llamadas al sistema Linux forman el interfaz más básico entre los programas y el núcleo de Linux. Las funciones de entrada/salida como open y read son ejemplos de llamadas al sistema en Linux. procesador o en la pila.Vanessa Manzano Palacios. el cual toma el control de la ejecución hasta que la llamada se completa. y se requiere un procedimiento especial para transferir el control al núcleo. Una llamada al sistema no es una llamada a una función ordinaria. por último. . Cuando un programa llama a una función del sistema. Una llamada al sistema está implementada en el núcleo de Linux. Sin embargo la librería GNU C encapsula las llamadas al sistema con funciones de manera que pueden ser llamadas de manera sencilla y se confunden con llamadas a funciones ordinarias. que típicamente está cargada en una librería compartida.