Programacion
Programacion
Programacion
Peso: 2
sección 1.2.3
distribuciones
sección 1.2.4
Sistemas embebidos
sección 1.2.3
Peso: 1
sección 1.3
sección 1.3.6
1.2 Evolución de Linux y los sistemas operativos populares
La definición de la palabra Linux depende del contexto en el que se utiliza. Linux significa
que el núcleo del sistema, que es la unidad central de todo lo que sucede en el ordenador
(más sobre esto más adelante). Las personas que dicen que su equipo "se ejecuta Linux"
generalmente se refieren al núcleo y un conjunto de herramientas que vienen con él
(llamado la distribución). Si usted tiene "experiencia en Linux", es muy probable que
hablando de los propios programas, aunque dependiendo del contexto, es posible que se
habla de saber cómo ajustar con precisión el núcleo. Cada uno de estos componentes
serán investigados para que pueda entender exactamente qué papel desempeña cada
uno. Para complicar aún más las cosas es el término UNIX. UNIX fue originalmente un
sistema operativo desarrollado en AT & T Bell, en la década de 1970. Fue modificada y
bifurcado (es decir, personas modificados y las modificaciones sirven como base para
otros sistemas) de tal manera que en la actualidad hay muchas variantes diferentes de
UNIX. Sin embargo, UNIX es una marca comercial ahora ambos y una especificación,
propiedad de un consorcio industrial llamado el Open Group. Solamente el software que
ha sido certificado por el Open Group puede llamarse UNIX. A pesar de la adopción de
todos los requisitos de la especificación UNIX, Linux no ha sido certificado, por lo que
realmente no es Linux UNIX! Es sólo ... tipo UNIX.
Cada aplicación puede pensar que tiene un gran bloque de memoria en el sistema, pero
es el núcleo que mantiene esta ilusión, la reasignación de bloques más pequeños de la
memoria, el intercambio de bloques de memoria con otras aplicaciones, o incluso el canje
de los bloques que no han sido tocados en el disco.
Cuando se inicia el ordenador se carga una pequeña pieza de código llamado un gestor
de arranque. El trabajo del gestor de arranque es cargar el núcleo y ponerlo en marcha. Si
usted está más familiarizado con los sistemas operativos como Microsoft Windows o OS X
de Apple, es probable que nunca ve el gestor de arranque, pero en el mundo UNIX por lo
general es visible, de modo que se puede ajustar la forma en que su equipo se inicia.
El gestor de arranque carga el kernel de Linux, y luego transfiere el control. Linux continúa
con la ejecución de los programas necesarios para hacer que el equipo de utilidad, tales
como la conexión a la red o iniciar un servidor web
1.2.2 Aplicaciones
Al igual que un controlador de tráfico aéreo, el núcleo no es útil sin algo de controlar. Si el
núcleo es la torre, las aplicaciones son los aviones. Aplicaciones hacen peticiones al
núcleo y reciben los recursos, como la memoria, CPU y disco, a cambio. El núcleo
también abstrae los detalles complicados lejos de la aplicación. La aplicación no sabe si
un bloque de disco está en una unidad de estado sólido del fabricante A, un disco duro
giratorio del metal del fabricante B, o incluso un recurso compartido de archivos de red.
Las solicitudes sólo tienes que seguir el núcleo de la interfaz de programación de
aplicaciones (API) y en cambio no tiene que preocuparse de los detalles de
implementación.
1.3.4 BSD
Hay varios proyectos abiertos BSD fuente (Software Distribution) Berkely, como
OpenBSD, FreeBSD, NetBSD y. Estos son alternativas a Linux en muchos aspectos, ya
que utilizan una gran cantidad de software común. BSD se implementan normalmente en
la función de servidor, aunque también hay variantes como GNOME y KDE que fueron
desarrollados para las funciones de escritorio.
Otro servidor web es nginx, que tiene su base en Rusia. Se centra en el rendimiento
mediante el uso de más núcleos de Unix modernos y sólo hace un subconjunto de lo que
Apache puede hacer. Más del 65% de los sitios web son alimentados por cualquiera de
nginx o Apache.
Correo electrónico ha sido siempre un uso popular para servidores Linux. Cuando se
habla de servidores de correo electrónico siempre es útil para mirar a los 3 diferentes
papeles necesarios para obtener el correo electrónico entre las personas:
MAIL TRANSFER AGENT (MTA) - se da cuenta de qué servidor necesita recibir el correo
electrónico y utiliza el Protocolo simple de transferencia de correo (SMTP) para mover el
correo electrónico a dicho servidor. No es inusual para un correo electrónico a tomar
varios "saltos" para llegar a su destino final, ya que una organización puede tener varios
MTA.
MAIL DELIVERY AGENT (MDA), también llamado el agente de entrega local) - se
encarga de almacenar el correo electrónico en el buzón del usuario. Por lo general, se
invoca desde el MTA final de la cadena.
POP / IMAP DEL SERVIDOR - El Protocolo de oficina de correos y el Protocolo de
acceso a mensajes de Internet son dos protocolos de comunicación que permiten a un
cliente de correo electrónico que se ejecuta en su charla ordenador a un servidor remoto
para recoger el correo electrónico.
A veces, una pieza de software implementará múltiples componentes. En el mundo de
código cerrado, Microsoft Exchange implementa todos los componentes, por lo que no
hay ninguna opción para hacer selecciones individuales. En el mundo del software libre
hay muchas opciones. Algunos servidores de correo POP / IMAP implementar su propio
formato de base de datos de correo para el rendimiento, por lo que también incluirán la
MDA, si se desea que la base de datos personalizada. Las personas que usan formatos
de archivo estándar (como todos los mensajes de correo electrónico en un archivo de
texto) pueden elegir cualquier MDA.
El MTA más conocido es Sendmail. Postfix es otro popular y tiene como objetivo ser
más sencillo y más seguro que Sendmail.
Si está utilizando formatos de archivo estándar para el almacenamiento de mensajes de
correo electrónico, su MTA también puede entregar el correo. Como alternativa, puede
usar algo como procmail, que le permite definir filtros personalizados para procesar el
correo y filtrarlo.
Para compartir archivos, Samba es el claro ganador. Samba permite a una máquina Linux
para que se parezca a una máquina de Windows para que pueda compartir archivos y
participar en un dominio de Windows. Samba implementa los componentes de servidor,
como hacer que los archivos disponibles para compartir y ciertas funciones de servidor de
Windows, y también el extremo del cliente para que una máquina Linux puede consumir
un recurso compartido de archivos de Windows.
Si usted tiene máquinas de Apple en la red, el proyecto netatalk le permite a su
máquina Linux se comporta como un servidor de archivos de Apple.
El protocolo de uso compartido de archivos nativo de UNIX se llama el sistema de
archivos de red (NFS). NFS es generalmente parte del núcleo que significa que un
sistema de archivos remoto se puede montar como un disco normal, por lo que el acceso
a archivos transparentes a otras aplicaciones.
A medida que su red informática se hace más grande, tendrá que aplicar algún tipo de
directorio. El directorio más antigua se llama el Sistema de Nombres de Dominio y se
utiliza para convertir un nombre como http://www.linux.com a una dirección IP como
192.168.100.100, que es un identificador único de ese equipo en Internet. DNS también
lleva a cabo dicha información global como la dirección de la MTA para un determinado
nombre de dominio. Una organización puede querer ejecutar su propio servidor DNS para
alojar sus nombres que enfrenta públicas, y también para servir como un directorio interno
de los servicios. Internet Software Consortium mantiene el servidor DNS más popular,
llamado simplemente se unen después de que el nombre del proceso que ejecuta el
servicio.
El DNS es en gran parte centrada en nombres de equipo y direcciones IP y no es fácil de
realizar búsquedas. Otros directorios han surgido para almacenar otros datos como
cuentas de usuario y funciones de seguridad. El Lightweight Directory Access Protocol
(LDAP) es el Directorio más común que también poderes Directorio Activo de Microsoft.
En LDAP, se almacena un objeto en un árbol, y la posición de dicho objeto en el árbol
puede ser utilizada para obtener información sobre el objeto, además de lo que se
almacena con el propio objeto. Por ejemplo, un administrador de Linux se puede
almacenar en una rama del árbol llamado "departamento de TI", que se encuentra bajo
una rama llamada "Operaciones". De esta manera uno puede encontrar todo el personal
técnico mediante la búsqueda en la rama departamento de TI. OpenLDAP es el jugador
dominante aquí.
Para navegar por la web, los dos contendientes principales son Firefox y Google
Chrome. Ambos están abiertos los navegadores web de código que son rápidos, rico en
características, y tienen un excelente soporte para los desarrolladores web. Estos dos
paquetes son un buen ejemplo de cómo la diversidad es buena para el código abierto -
mejoras en uno incitan a que el otro equipo para tratar de ser mejor que el otro. Como
resultado, el Internet tiene dos excelentes navegadores que empujan los límites de lo que
puede hacerse en la web y el trabajo a través de una variedad de plataformas.
Otros clientes de correo electrónico son notables Evolución y KMail que son el GNOME y
clientes de correo electrónico del proyecto KDE. Normalización través de POP e IMAP y
formatos de correo electrónico locales significa que es más fácil cambiar entre clientes de
correo electrónico sin perder datos. correo electrónico basado en web también es otra
opción.
Para los tipos creativos, hay Blender, Gimp, Audacity y que manejan la creación de la
película en 3D, la manipulación de imágenes 2D y edición de audio, respectivamente.
Ellos han tenido diversos grados de éxito en los mercados profesionales. Blender se
utiliza para todo, desde películas independientes a las películas de Hollywood, por
ejemplo.
2.2.3 Herramientas de consola
La historia del desarrollo de UNIX muestra una considerable superposición entre las
habilidades de desarrollo de software y sistemas de administración. Las herramientas que
le permiten administrar el sistema tienen características de los lenguajes de programación
tales como bucles, y algunos lenguajes de programación se utilizan ampliamente en la
automatización de las tareas de administración de sistemas. Por lo tanto, se debe
considerar estas habilidades complementarias.
En el nivel básico, que interactúa con un sistema Linux a través de una Shell a sin
importar si se está conectando al sistema de forma remota o desde un teclado conectado.
El trabajo de la shell es para aceptar comandos, como manipulaciones de archivos y
aplicaciones de arranque, y pase a los que el núcleo de Linux para su ejecución. Aquí, se
muestra una interacción típica con el shell de Linux:
sysadmin@localhost:~$ ls -l /tmp/*.gz
-rw-r--r-- 1 sean root 246841 Mar 5 2013 /tmp/fdboot.img.gz
sysadmin@localhost:~$ rm /tmp/fdboot.img.gz
El usuario recibe un aviso, que por lo general termina en un signo de dólar $ para indicar
una cuenta sin privilegios. Cualquier cosa antes del mensaje, en este caso sysadmin @
localhost: ~, es un indicador configurable que proporciona información adicional para el
usuario. En la figura anterior, administrador de sistemas es el nombre del usuario actual,
localhost es el nombre del servidor, y ~ es el directorio actual (en UNIX, el símbolo tilde es
una forma corta para el directorio personal del usuario). Vamos a ver los comandos de
Linux en más detalle en otros capítulos, pero al terminar la explicación, los primeros
archivos de comando lista con el comando ls, recibe alguna información sobre el archivo
y, a continuación, elimina ese archivo con el comando rm.
El shell de Linux proporciona un lenguaje rico para la iteración sobre archivos y
personalizar el entorno, todo sin salir de la shell. Por ejemplo, es posible escribir una sola
línea de comandos que se encuentra ficheros con contenidos que corresponden a un
patrón determinado, extrae información útil desde el archivo, copia la nueva información a
un nuevo archivo.
Linux ofrece una variedad de shell’s para elegir, sobre todo difieren en cómo y qué se
puede personalizar, y la sintaxis del lenguaje de script incorporado. Las dos familias
principales son la shell de Bourne y el shell C. El shell Bourne fue nombrado después de
que el creador y el intérprete de comandos C fue nombrado porque la sintaxis inspira en
gran medida de la lengua C. A medida que estos dos proyectiles fueron inventados en la
década de 1970 hay versiones más modernas, el Bourne Again Shell (bash) y la tcsh (tee-
cee-shell). Bash es el shell por defecto en la mayoría de los sistemas, aunque casi se
puede estar seguro de que Tcsh está disponible si así lo prefiere.
Otras personas tomaron sus características favoritas de Bash y tcsh y han hecho otros
proyectiles, tales como el shell Korn (ksh) y zsh. La elección de las shells es en su
mayoría de carácter personal. Si puede sentirse cómodo con Bash, entonces puede
funcionar eficazmente en la mayoría de los sistemas Linux. Después de que se puede
ramificarse y probar nuevas conchas para ver si ayudan a su productividad.
Aún más divisoria que la selección de shells es la elección de los editores de texto. Un
editor de texto se utiliza en la consola para editar archivos de configuración. Los dos
campos principales son vi (o el más moderno vim y emacs). Ambas son herramientas
muy poderosas para editar archivos de texto, difieren en el formato de los comandos y la
forma de escribir plugins para ellos. Plugins podría ser cualquier cosa de resaltado de
sintaxis de proyectos de software a calendarios integrados.
Tanto vim y emacs son complejas y tienen una curva de aprendizaje empinada. Esto no
es muy útil si lo que necesitas es una edición sencilla de un pequeño archivo de texto. Por
lo tanto pico y nano están disponibles en la mayoría de los sistemas (este último es un
derivado de la primera) y proporcionar la edición de texto muy básico.
Incluso si usted decide no utilizar vi que debe esforzarse para ganar un poco de
conocimiento básico porque la vi básica es en todos los sistemas Linux. Si va a restaurar
un sistema Linux rota ejecutando en modo de recuperación de la distribución que esté
seguro de tener disponible vi.
Perl es un lenguaje interpretado. Perl fue desarrollado originalmente para llevar a cabo
la manipulación de texto. Con los años, se ganó el favor de los administradores de
sistemas y todavía se sigue mejorando y se utiliza en todo, desde la automatización para
la creación de aplicaciones web.
PHP es un lenguaje que fue construido originalmente para crear páginas web dinámicas.
Un archivo PHP es leída por un servidor web como Apache. etiquetas especiales en el
archivo indican que partes del código deben interpretarse como instrucciones. El servidor
web tira de todas las diferentes partes del archivo en conjunto y lo envía al navegador
web. principales ventajas de PHP es que es fácil de aprender y disponible en casi
cualquier sistema. Debido a esto, muchos proyectos populares se basan en PHP. Los
ejemplos notables incluyen WordPress (blogs), cactus (para la supervisión), e incluso
partes de Facebook.
Ruby es otro lenguaje que fue influenciado por Perl y Shell, junto con muchos otros
idiomas. Que hace que las tareas complejas de programación relativamente fácil, y con la
inclusión del marco de Ruby on Rails, es una opción popular para la construcción de
aplicaciones web complejas. Ruby es también la lengua que los poderes de muchas de
las herramientas de automatización líderes como chef y de marionetas, que facilitarán la
gestión de un gran número de sistemas Linux mucho más fácil.
Python es otro lenguaje de scripting que es de uso común. Al igual que Rubí se hace más
fácil las tareas complejas y tiene un marco llamado Django que hace que las aplicaciones
web de construcción muy fácil. Python tiene excelentes capacidades de procesamiento
estadístico y es uno de los favoritos en el mundo académico.
Un lenguaje es sólo una herramienta que hace que sea más fácil para decirle al
ordenador lo que quiere que haga. Una biblioteca de paquetes tareas comunes en un
paquete distinto que puede ser usada por el desarrollador. ImageMagick es una de esas
biblioteca que permite a los programadores manipular imágenes en código. ImageMagick
también viene con algunas herramientas de línea de comandos que le permiten procesar
imágenes de una Shell y aprovechar las capacidades de scripting allí.
OpenSSL es una biblioteca criptográfica que se utiliza en todo, desde los servidores de
Internet para la línea de comandos. Proporciona una interfaz estándar para que pueda
añadir la criptografía en su script en Perl, por ejemplo.
En un nivel mucho más bajo es la librería C. Esto proporciona un conjunto básico de
funciones para la lectura y la escritura a los archivos y pantallas, que se utiliza por las
aplicaciones y otros idiomas por igual.