lunes, 8 de agosto de 2011

USABILIDAD INTERFASES WEB

Que es la usabilidad?


Técnicas que ayudan a los seres humanos a realizar tareas en entornosgráficos de ordenador.

3 conceptos muy importantes. Trabajamos para seres humanos, que quieren realizar una tarea de una forma sencilla y eficaz y en este caso particular, la deben realizar frente a un ordenador en un entorno grafico, la web. La usabilidad ayuda a que esta tarea se realice de una forma sencilla analizando el comportamiento humano, y los pasos necesarios para ejecutar la tarea de una forma eficaz. Quizás suene un poco a trabajo industrial, pero al hacer referencia al termino "tarea", estamos haciendo referencia a buscar un programa que queremos ver en la tele, a ver información sobre mi equipo de futbol favorito, a comprar un libro sobre artes marciales.

Realmente hace falta la usabilidad para hacer una web?

Si. Sea tu web un portal o una pagina personal, no olvides que la gente que entra en tu web es por que básicamente busca algo. Hacerlo sencillo es decisión tuya, pero seguro que entre todos podemos hacer de internet un sitio mejor donde la gente no se sienta perdida o extraviada o sencillamente defraudada.

Donde puedo encontrar mas información sobre este tema?
Hay miles de direcciones que hablan sobre usabilidad en internet. En la pagina de
enlaces de interes, disponible en este manual, podrás encontrar una selección de paginas que me han ayudado a formarme y a estudiar sobre este tema.

Cuales son las 8 reglas de Oro sobre la usabilidad?

Espero que te sirvan. Quizás mañana sean 10 reglas.
1. En internet el usuario es el que manda.
    • Esto quiere decir que sin usuarios tu pagina muere, así que mas te vale que los cuides y les des lo que te piden, de lo contrario te quedaras solo.
2. En internet la calidad se basa en la rapidez y la fiabilidad.
    • En internet cuenta que tu pagina sea mas rápida que bonita, fiable que moderna, sencilla que compleja, directa.
3. Seguridad.
    • Si en el mundo real a veces nos cuesta fiarnos del banco de la esquina, imagínate como se siente la gente en internet cuando llega a tu site. Procura que todo funcione como un reloj para que la gente pueda fiarse de tu site.
4. La confianza es algo que cuesta mucho ganar y se pierde con un mal enlace.
    • Esto quiere decir que tal y como esta la competencia en internet, no puedes perder ni un solo visitante por tener un enlace mal hecho. Es mejor salir con algo sencillo e irlo complicando poco a poco, que salir con todo y ver "que es lo que pasa". Versiones 1.0 son buenas mientras lo que este puesto este bien asentado y genere confianza. Poco a poco y con el feedback de los usuarios, podras ir complicando la pagina. Pero asegura antes de arriesgar.
5. Si quieres hacer una pagina decente, simplifica, reduce, optimiza.
    • La gente no se va a aprender tu site por mucho que insistas, así que por lo menos hazlo sencillo, reutiliza todos los elementos que puedas, para que de este modo los usuarios se sientan cómodos y no se pierdan cada vez que necesiten encontrar algo en tu site.
6. Pon las conclusiones al principio.
    • El usuario se sentira mas comodo si ve las metas al principio. De esta forma no tendra que buscar lo que necesita y perdera menos tiempo en completar su tarea. Si completa su tarea en menos tiempo se sentira comodo y quizas se dedique a explorar tu site o quizas se lo recomiende a un amigo.
7. No hagas perder el tiempo a la gente con cosas que no necesitan.
    • Cuidado con cruzar promociones, si lo haces por lo menos hazlo con cuidado. Procura que la seleccion de productos a cruzar sea consecuente y no lo quieras "vender todo" en todas las paginas. Según avance el usuario en su navegacion procura dejarle mas espacio libre. Puede ocurrir que cuando este punto de comprar algo vea una oferta que le distraiga y pierdas esa venta.
8. Buenos contenidos.
    • Escribir bien para internet es todo un arte. Pero siguiendo las reglas básicas de (1) poner las conclusiones al principio y (2) escribir como un 25% de lo que pondrías en un papel, se puede llegar muy lejos. Leer en pantalla cuesta mucho, por lo que, en el caso de textos para internet, reduce y simplifica todo lo que pue
  Primero pasos.
  • Disponer de tiempo, tecnología y recursos humanos para llevar a cabo el proyecto.
  • Que todos los departamentos de la compañía se sientan integrados en el proyecto.
  • Qué vas a "vender": entiéndase vender como promocionar, anunciar, o vender directamente productos.
  • A quién se lo vas a "vender": debemos identificar a nuestro núcleo de usuarios extremos que nos ayudaran a posicionar el producto de una forma más definida que si nos dirigimos directamente a la gran audiencia.
  • Cómo se lo vas a "vender": aquí es donde entran los temas de logística, atención al cliente, diseño de producto y web.
  • Una vez vendido, qué hacemos: es importante prever que pasara mañana cuando nuestros clientes nos hayan comprado los productos. Fidelizacion, promociones, seguimiento...

  El primer prototipo.
  • Con todos los requisitos recogidos en los primeros pasos, podremos empezar a pensar en como vamos a construir nuestro site.
  • Se recomienda que el equipo que este en esta fase sea multidisciplinar (como mínimo, programación, diseño, contenidos y un coordinador de equipo).
  • Se recomienda que el coordinador sepa algo de todas las materias, (servidor, web, diseño, contenidos) por que será la persona encargada de crear puentes entre los diferentes departamentos y de llegar a consensos cuando surjan problemas de competencia.
  • Con este equipo se llevara a cabo una maqueta que servirá para aproximarnos a la idea de nuestro site.
  • Esta maqueta será producida a un nivel casi real para que sea probada por los usuarios.

  Test de usuario.
  • Una vez producido el prototipo, se hará nuestro primer test de usuario.
  • El test de usuario nos ayudara a enriquecer el producto observando el comportamiento del usuario, viendo las virtudes de nuestro producto y sobre todo aquellos puntos débiles que pueda presentar.
  • Con el test de usuario se realizara un nuevo prototipo que se debería volver a testear mientras sea posible.

  Lanzamiento.
  • Una vez tenemos un prototipo ajustado queda la parte de realización técnica.
  • Se deberá disponer del tiempo disponible para ajustar el prototipo a la realidad, pero no se deben encontrar nuevos obstáculos en esta fase.
  • Para evitar estos nuevos obstáculos, es necesario la total transparencia de los departamentos a la hora de realizar el prototipo, es decir, conocer toda las posibilidades existentes dentro de la operativa, ver el "peor de los casos existentes", ver como funciona "el primer día", etc...
  • Por ultimo se recomienda pasar una fase de "emision en pruebas", es decir, lanzar el site y probarlo en real (conexiones con modem, operativa real, ver respuesta del correo o del call center en caso de que existan, etc...)
El diseño de sitios web deben seguir los siguientes principios:

1. Anticipación, el sitio web debe anticiparse a las necesidades del usuario.

2. Autonomía, los usuarios deben tener el control sobre el sitio web. Los usuarios sienten que controlan un sitio web si conocen su situación en un entorno abarcable y no infinito.

3. Los colores han de utilizarse con precaución para no dificultar el acceso a los usuarios con problemas de distinción de colores (aprox. un 15% del total).

4. Consistencia, las aplicaciones deben ser consistentes con las expectativas de los usuarios, es decir, con su aprendizaje previo.

5. Eficiencia del usuario, los sitios web se deben centrar en la productividad del usuario, no en la del propio sitio web. Por ejemplo, en ocasiones tareas con mayor número de pasos son más rápidas de realizar para una persona que otras tareas con menos pasos, pero más complejas.

6. Reversibilidad, un sitio web ha de permitir deshacer las acciones realizadas

7. Ley de Fitts indica que el tiempo para alcanzar un objetivo con el ratón esta en función de la distancia y el tamaño del objetivo. A menor distancia y mayor tamaño más facilidad para usar un mecanismo de interacción.

8. Reducción del tiempo de latencia. Hace posible optimizar el tiempo de espera del usuario, permitiendo la realización de otras tareas mientras se completa la previa e informando al usuario del tiempo pendiente para la finalización de la tarea.

9. Aprendizaje, los sitios web deben requerir un mínimo proceso de aprendizaje y deben poder ser utilizados desde el primer momento.

10. El uso adecuado de metáforas facilita el aprendizaje de un sitio web, pero un uso inadecuado de estas puede dificultar enormemente el aprendizaje.

11. La protección del trabajo de los usuarios es prioritario, se debe asegurar que los usuarios nunca pierden su trabajo como consecuencia de un error.

12. Legibilidad, el color de los textos debe contrastar con el del fondo, y el tamaño de fuente debe ser suficientemente grande.

13. Seguimiento de las acciones del usuario. Conociendo y almacenando información sobre su comportamiento previo se ha de permitir al usuario realizar operaciones frecuentes de manera más rápida.

14. Interfaz visible. Se deben evitar elementos invisibles de navegación que han de ser inferidos por los usuarios, menús desplegables, indicaciones ocultas, etc.

Otros principios para el diseño de sitios web son:

a) Los usuarios deben ser capaces de alcanzar sus objetivos con un mínimo esfuerzo y unos resultados máximos.

b) Un sitio web no ha de tratar al usuario de manera hostil. Cuando el usuario comete un error el sistema ha de solucionar el problema, o en su defecto sugerir varias soluciones posibles, pero no emitir respuestas que meramente informen del error culpando al usuario.

c) En ningún caso un sitio web puede venirse abajo o producir un resultado inesperado. Por ejemplo no deben existir enlaces rotos.

d) Un sitio web debe ajustarse a los usuarios. La libertad en el uso de un sitio web es un término peligroso, cuanto mayor sea el número de acciones que un usuario pueda realizar, mayor es la probabilidad que cometa un error. Limitando el número de acciones al público objetivo se facilita el uso de un sitio web.

e) Los usuarios no deben sufrir sobrecarga de información. Cuando un usuario visita un sitio web y no sabe donde comenzar a leer, existe sobrecarga de información.

f) Un sitio web debe ser consistente en todos los pasos del proceso. Aunque pueda parecer apropiado que diferentes áreas tengan diseños diferentes, la consistencia entre los diseños facilita al usuario el uso de un sitio.

g) Un sitio web debe proveer de un feedback a los usuarios, de manera que éstos siempre conozcan y comprendan lo que sucede en todos los pasos del proceso.

La Interacción Persona-Ordenador, es la disciplina que estudia el intercambio de información entre las personas y los ordenadores. Su objetivo es que este intercambio sea más eficiente: minimiza los errores, incrementa la satisfacción...


La investigación en IPO/HCI lleva a la estandarización de la usabilidad, su mejora y apoyo empírico. El enfoque científico de la IPO/HCI incluye una variedad de herramientas y técnicas que ayudan a desarrollar mejores interfaces de usuario.
Nota: La Interacción Persona Ordenador es más conocida por su nombre en inglés, Human- Computer Interaction y sus siglas HCI (en lo sucesivo utilizaremos las siglas IPO/HCI)

Breve historia

Los orígenes de la IPO/HCI hay que buscarlas en la rama de la Psicología Aplicada que estudia la Interacción Persona-Ordenador. Las dos disciplinas de las que surge la IPO/HCI son las llamadas "Human Factors" y la Ergonomía (en realidad es la misma disciplina, el primer termino se utiliza en EE.UU y el segundo en Europa). Actualmente el uso de estos términos no esta claramente establecido y incluso a veces se utilizan de manera indistinta.

El predominio tradicional en la IPO/HCI ha sido de los ingenieros, aunque la influencia de la psicología es creciente. La Psicología es la disciplina que estudia la percepción, la memoria, la adquisición de habilidades y el aprendizaje, la resolución de problemas, el movimiento, las tareas de juicio, de búsqueda o procesamiento de información y de la comunicación, es decir, procesos todos cuyo conocimiento se requiere para el adecuado diseño de mecanismos de interacción del usuario. Aunque la Psicología Cognitiva es una ciencia muy joven en lo que respecta a investigaciones de carácter básico y sistemático, existen actualmente suficientes hallazgos basados en resultados empíricos que permiten el desarrollo de la IPO/HCI y, por ende, de sitios web adaptados a los usuarios.

La IPO/HCI es también una disciplina joven, pero no tanto como pudiera parecer. Desde el primer ordenador ha sido necesario el diseño de un sistema de comunicación persona-ordenador. Los estudios en esta disciplina han permitido dar una base teórica al diseño y a la evaluación de aplicaciones informáticas. La importancia de esta disciplina se pone sobre relieve al leer artículos sobre el tema escritos hace cuarenta años en los que se predecían elementos de interacción de los que se dispone actualmente. Una de las asociaciones más influyentes en este campo es la ACM SIGCHI (Association for Computing Machinery's Special Interest Group on Computer-Human Interaction) que desde 1982 reune a los mejores especialistas en IPO/HCI.

Los primeros estudios específicos de IPO/HCI aparecieron en los años sesenta y se referían a la simbiosis Persona-Ordenador (Licklider, 1960). Este autor afirmó anticipándose a la problemática posterior que el problema de la interacción hombre-ordenador no es crear ordenadores productores de respuestas, sino ordenadores que sean capaces de anticipar y participar en la formulación de las preguntas.

Licklider y Clark (1962) elaboraron una lista de 10 problemas que deberían ser resueltos para facilitar la interacción personas-ordenador. Según el los cinco primeros problemas deberían ser resueltos de manera inmediata, el sexto en un tiempo intermedio y los cuatro últimos, a largo plazo:

1. Compartir el tiempo de uso de los ordenadores entre muchos usuarios.
2. Un sistema de entrada-salida para la comunicación mediante datos simbólicos y gráficos.
3. Un sistema interactivo de proceso de las operaciones en tiempo real.
4. Sistemas para el almacenamiento masivo de información que permitan su rápida recuperación.
5. Sistemas que faciliten la cooperación entre personas en el diseño y programación de grandes sistemas.
6. Reconocimiento por parte de los ordenadores de la voz, de la escritura manual impresa y de la introducción de datos a partir de escritura manual directa.
7. Comprensión del lenguaje natural, sintáctica y semánticamente.
8. Reconocimiento de la voz de varios usuarios por el ordenador.
9. Descubrimiento, desarrollo y simplificación de una teoría de algoritmos.
10. Programación heurística o a través de principios generales.

El tiempo ha demostrado que Licklider y Clark estaban en lo cierto en la mayoría de sus observaciones, sin embargo, actualmente aún no se han conseguido solucionar algunos de los problemás previstos para su resolución a largo plazo.

Hansen (1971) en su libro "User Engineering Principles for Interactive Systems" hace la primera enumeración de principios para el diseño de sistemas interactivos:

1. Conocer al usuario
2. Minimizar la memorización, sustituyendo la entrada de datos por la selección de ítems, usando nombres en lugar de números, asegurándose un comportamiento predecible y proveyendo acceso rápido a información práctica del sistema.
3. Optimizar las operaciones mediante la rápida ejecución de operaciones comunes, la consistencia de la interfaz y organizando y reorganizando la estructura de la información basándose en la observación del uso del sistema.
4. Facilitar buenos mensajes de error, crear diseños que eviten los errores más comunes, haciendo posible deshacer acciones realizadas y garantizar la integridad del sistema en caso de un fallo de software o hardware.

A pesar de la obviedad y antigüedad de estos principios es fácil encontrar en sitios web de comercio electrónico códigos inmemorizables para identificar productos, mensajes de error ininteligibles y, en general, un maltrato constante al usuario.


En este artículo vamos a comentar como planear y crear un buen buscador interno para un site. Incluye varios ejemplos sobre cómo se hace en los periódicos digitales españoles.
Licencia Copyleft.
Puedes reproducirlo citando al autor y enlazando con DesarrolloWeb.com.
Para tener un buscador debes guardar todo lo que hagas. Procura que cada artículo, fichero, producto tenga una página con entidad propia. Jamas borres una página. Puede ser que alguien la esté enlazando desde otra página, o puede ser que alguien la esté buscando. 2. Indexa todo el site y deja que los usuarios busquen en todo tu archivo. 3. Ofrece resultados ordenados e identifica palabras clave (keywords) para facilitar la búsqueda.

Buscadores gratuitos para tu site sin necesidad de saber programación
Este listado de sites ofrecen código listo para copiar y pegar en tu site de tal forma que los usuarios puedan buscar dentro de las páginas de tu site.

Aspectos específicos de cada site pueden alterar la calidad de los resultados.

En este artículo no se habla de código PHP

En los comentarios todo el mundo se queja de que este artículo no ofrece código para programar un buscador.

Esa no era la idea original del mismo. La idea era hablar sobre como "planear y crear un buen buscador". El código del buscador sin un buen sistema de páginas para indexar no sirve de nada.

Si quieres código para crear un buscador, utiliza estos enlaces.

Este artículo pretende hablar sobre como diseñar, no programar un buscador.

Código PHP para crear un buscador interno
Originalmente publicado en Noviembre de 2000

1. Crea archivos. Guarda todo lo que hagas.

Cuando hagas tu página ten en mente la forma de almacenar los archivos. Procura que cada "elemento" tenga su "entidad".
Definamos "elemento" como cada artículo, ficha de producto, gráfico que tenga interés para los usuarios en tu site.
Cada uno de estos elementos tendrá una página con un nombre, una ubicación y un orden dentro de la jerarquía de tu site.
Este elemento por tanto estará correctamente identificado para acceder a el en cualquier momento.
Nota:Si tu site genera páginas en tiempo real, lo ideal seria guardar el sumario del día. Por ejemplo en un broker, donde la información bursátil genera páginas diferentes a cada refresco de información, seria interesante guardar una ficha por empresa y día, con la información del cierre, máximos, mínimos, generando un archivo interesante para la consulta.
2. Dejemos que el usuario busque todo lo que quiera.

Lo que tiene sentido en un buscador es que se pueda buscar todo. Es decir, si entro en un periódico, y pongo "Aznar", lo que quiero es ver todas las noticias que hay sobre Aznar desde que nació. Eso me da libertad y me muestra la potencia de la página.
Buscar en los archivos y ver que el sistema responde, da al usuario muestras de que esta delante de un sitio donde puede pasar horas y horas mirando información relevante. Si empezamos a limitar la búsqueda (solo este mes, solo este numero, solo en este sitio) empezamos a hacerlo mal y puede ser que el usuario se muestre frustrado. También ocurre que el numero de resultados validos disminuye con lo que perdemos calidad en la búsqueda.

3. Ofrece resultados ordenados

Así como demostrar la potencia de la maquina con un buen buscador esta bien, también es reconfortante demostrar inteligencia. Para ello debemos identificar palabras clave "relevantes" en nuestro site. Esta identificación nos servirá de atajos para evitar mostrar información redundante al usuario. Siguiendo con el ejemplo del periódico. Si entro en el periódico y pongo "Aznar", lo ideal seria mostrar un enlace a la típica ficha oficial y luego todos los resultados relevantes en nuestro site.
Esta "inteligencia" requiere identificar todos los elementos que creamos que son relevantes para el usuario y hacerlo de forma mas o menos humana. Siguiendo con el ejemplo del periódico, palabras como "presidente", "aznar", "jose María aznar", nos llevarían a resultado similares. Donde lo ideal seria ver una serie de "fichas" que concuerdan con el termino buscado, y una serie de resultados provenientes de la base de datos.

Photodisc.com es uno de los sitios mejor organizados. No solo busca por "keywords" si no que una vez encontrada la foto vemos una serie de keywords relacionados con esta. Estos keywords están enlazados de tal forma que puedo seguir buscando por keywords nuevamente hasta afinar los resultados. Básicamente lo que ofrece es una sensación de "control" que muchas veces se hecha de menos.

Mas o menos con este sistema de "palabra clave" y búsqueda "brutal" podremos ofrecer al usuario un arma útil para navegar por nuestro site.

4. Lo que ocurre en el mundo real es mas o menos lo siguiente.

Gente que lo hace muy bien.
Tenemos 3 ejemplos básicos que no son buscadores y uno de ellos es de España:
  • The New York Times. Este periódico ofrece un buscador, quizás algo pequeño pero muy efectivo. Presenta dos opciones de búsqueda, bajo la forma de "radio button", que son buscar en la edición de hoy o buscar en los archivos. Los archivos son de pago con lo que han conseguido que el buscador sea una herramienta de venta. En los archivos básicamente lo puedes encontrar todo. En el buscador del día también. Es impresionante.
  • ESPN.com es un sitio de deportes que tiene un buscador muy bueno. En la parte superior tenemos un combo con 3 opciones muy claras, "keywords", "buscar en todo el site" o buscar en internet. No hay lugar a dudas. Luego tenemos el campo de texto y el botón de buscar. Todo correcto. El caso de buscar por keywords, es clave, si pongo NFL, no quiero ver todos los artículos que contienen la palabra NFL, quiero ver la página que le dedicas a esto. En el caso de sitios de comercio electrónico, si pongo pantalones, no quiero que me saques todas las páginas que pone pantalones, quiero que me lleves a la sección/es donde vendes pantalones.
  • La gente del Marca.es lo hacen muy bien. Quizás el buscador este algo escondido, pero funciona muy bien. Aquí tienes un ejemplo de los resultados que ofrecen.
Lo que hacen en España los periódicos.

En los periódicos puede ser donde un buscador sea la herramienta mas utilizada después de los portales. El archivo que generan y la flexibilidad de internet les proporcionan un valor incalculable. Veamos que es lo que hacen.
Aquí verás comentados el ABC, El Mundo, El País y la Vanguardia. Ninguno lo hace muy bien, pero el que mejor lo hace es el Mundo.

Como se presenta el buscador en la portada:
  • El ABC: Presenta un buscador en la portada, pero se les olvido poner el botón de "buscar".
  • El Mundo: Presenta un buscador interno al final de la página de portada. Demasiado escondido.
  • El País: Presenta la búsqueda como una opción por lo que debemos irnos a otra página para poder buscar.
  • La Vanguardia: Presenta un buscador en portada pero es algo complejo de manejar. También se les olvido poner el botón de buscar.
  • Lo ideal seria el formato del buscador del Mundo pero arriba del todo.
Podemos buscar en "todo" el site:
  • El ABC: Si, pero palabras como "televisión", "tabaco", "perro" dan resultados nulos. Me parece que solo busca en la edición del día. . Esta pantalla salió al buscar fútbol dentro del buscador del ABC.
  • El Mundo: Deja acceso por meses.
  • El País: Deja acceso por días.
  • La Vanguardia: Presenta la opción de "diario de hoy", "6 meses" (por que no 12, o 24?), "resto de la web" (que web?, internet?, tu web?, mi web?, que es el resto?, lo que sobra?).
  • Lo ideal seria poder buscar en "todo" el archivo. Ninguno permite esta opción.
Como vemos los resultados:
  • El ABC: Básicamente falla mucho.
  • El Mundo: Quizás el mejor de los 4. Presenta resultados ordenados por relevancia y disponemos del buscador en la misma página, por lo que no tenemos que volver al buscador para hacer una nueva búsqueda. Esto es básico, pero muchas veces se olvida.
  • El País: Bastante mal. No esta bien hecho ni el tema de titular las páginas por lo que muchas veces los resultados sales vacíos. Luego no tenemos el buscador en esta página por lo que tenemos que volver al buscador para hacer una nueva búsqueda.
  • La Vanguardia: No esta mal, pero el buscador es algo complejo de manejar ya que es el combo el que "lanza" la búsqueda.
  • Lo ideal es lo que hace el Mundo. Los ordena por relevancia, indicando la fecha, peso y el titular del artículo. Excelente.

jueves, 21 de julio de 2011

XAMPP-LAMP-UNIX


Que es: XAMPP?, pues  XAMPP es un paquete que te permite instalar de forma sencilla Apache en tu propio ordenador, sin importar tu sistema operativo (Linux, Windows, MAC  o Solaris). Y lo mejor de todo es que su uso es gratuito.

XAMPP incluye el servidor web Apache, servidores de bases de datos MySQL y SQLite con sus respectivos gestores phpMyAdmin y phpSQLiteAdmin. Incorpora además el intérprete PHP, el intérprete de Perlservidores de FTP como ProFTPD ó FileZilla FTP Serve, etc. entre muchas cosas más.
Una forma fácil de instalar un servidor web en Windows con Apache, PHP y MySQL es XAMPP. Este servidor permite hacer pruebas con PHP sin necesidad de contratar un hosting. Con XAMPP se puede instalar Apache, PHP5 y MySQL de forma fácil y muy rápida. Sólo debes dirigirte a la sección de descargas de XAMPP y elegir la opción XAMPP Windows 1.6.4 “installer” para comenzar a bajarla.
Dónde guardarlo
Al correr la instalación, lo primero que vas a tener que decidir es dónde guardarlo (recomiendo dejarlo en la carpeta que nos aparece por defecto c:\xampp). La ubicación es importante porque ahí es donde se ubicarán físicamente los sitios que quieras mostrar en el servidor.
Íconos y opciones de servicio
El siguiente paso es para la creación de los íconos en el escritorio y qué opciones como servicio quieres instalar. Por defecto estas opciones están sin marcar. Si quieres que cada vez que se prenda tu computadora corra el servidor, debes seleccionar que instale Apache, MySQL y FileZilla como servicios. Caso contrario, puedes dejarlos sin tildar. Se van a instalar igual pero deberás activar las opciones de forma manual cada vez que necesites correr el servidor.
Panel de Control
Luego de un par de siguientes y hacer clic en finalizar, el instalador te va a preguntar si deseas abrir el panel de control. Desde esa nueva ventana es que vas a poder prender y apagar el servidor Apache y MySQL (PHP se inicia cuando inicias Apache) cada vez que lo necesites.

Xampp
Listo, ya está instalado. Ahora sólo tienes que guardar tus archivos del sitio dentro de la carpeta c:\xampp\htdocs\ para que puedan ser vistos desde http://localhost/ en tus navegadores. Por ejemplo si yo tengo el archivo c:\xampp\htdocs\index.php, lo voy a poder visualizar desde Internet Explorer o Firefox sin problemas escribiendo http://localhost/index.php.

¿Que es LAMP?

Las siglas LAMP se emplean para definir el trabajo conjunto con Linux, Apache, MySQL y uno de los siguientes lenguajes: Perl, Python o PHP.
LAMP está considerada como una de las mejores herramientas disponibles para que cualquier organización o individuo pueda emplear un servidor web versátil y potente. Aunque creados por separado, cada una de las tecnologías que lo forman disponen de una serie de características comunes. Especialmente interesante es el hecho que estos cuatro productos pueden funcionar en una amplia gama de hardware, con requerimientos relativamente pequeños sin perder estabilidad. Esto ha convertido a LAMP en la alternativa más adecuada para pequeñas y medianas empresas.

Todos los elementos que forman LAMP son software libre, de modo que disfrutan de las siguientes ventajas propias del mismo:
 
  1. Libertad de copia y distribución. Se puede conseguir gratuitamente en Internet. Hay muchísimas fuentes donde conseguir cualquiera de las distribuciones. Si no tienes una conexión rápida, también regalan Linux en los CD-ROM de muchas revistas especializadas.
  2. Libertad de modificación. Junto a los programas ejecutables, se puede obtener su código fuente. Esto, si se tienen los conocimientos necesarios, permite verificar la seguridad y eficiencia de los mismos, además de modificar y/o añadir las características y comportamientos que deseemos.

El acrónimo 'LAMP' se refiere a un conjunto de subsistemas de software necesarios para alcanzar una solución global, en este caso configurar sitios web o servidores dinámicos con un esfuerzo reducido.
En las tecnologías LAMP esto se consigue mediante la unión de las siguientes tecnologías:
La combinación de estas tecnologías es usada primariamente para definir la infraestructura de un servidor web, utilizando un paradigma de programación para el desarrollo.
A pesar de que el origen de estos programas de código abierto no han sido específicamente diseñado para trabajar entre sí, la combinación se popularizó debido a su bajo coste de adquisición y ubicuidad de sus componentes (ya que vienen pre-instalados en la mayoría de las distribuciones linux). Cuando son combinados, representan un conjunto de soluciones que soportan servidores de aplicaciones.
Ampliamente promocionado por el editor de la editorial O'Reilly, Dale Dougherty, a sugerencia de David Axmark y Monty Widenus desarrolladores de MySQL, la influencia de la editorial O'Reilly en el mundo del software libre hizo que el término se popularizara rápidamente en todo el mundo.
Características Generales:
Es un sistema operativo de tiempo compartido, controla los recursos de una computadora y los asigna entre los usuarios. Permite a los usuarios correr sus programas. Controla los dispositivos de periféricos conectados a la máquina.
Posee las siguientes características:
- Es un sistema operativo multiusuario, con capacidad de simular multiprocesamiento y procesamiento no interactivo.
- Está escrito en un lenguaje de alto nivel: C.
- Dispone de un lenguaje de control programable llamado SHELL.
- Ofrece facilidades para la creación de programas y sistemas y el ambiente adecuado para las tareas de diseños de software.
- Emplea manejo dinámico de memoria por intercambio o paginación.
- Tiene capacidad de interconexión de procesos.
- Permite comunicación entre procesos.
- Emplea un sistema jerárquico de archivos, con facilidades de protección de archivos, cuentas y procesos.
- Tiene facilidad para redireccionamiento de Entradas/Salidas.
- Garantiza un alto grado de portabilidad.
El sistema se basa en un Núcleo llamado Kernel, que reside permanentemente en la memoria, y que atiende a todas las llamadas del sistema, administra el acceso a los archivos y el inicio o la suspención de las tareas de los usuarios.
La comunación con el sistema UNIX se da mediante un programa de control llamado SHELL. Este es un lenguaje de control, un intérprete, y un lenguaje de programación, cuyas características lo hacen sumamente flexible para las tareas de un centro de cómputo. Como lenguaje de programación abarca los siguientes aspectos:
- Ofrece las estructuras de control normales: secuenciación, iteración condicional, selección y otras.
- Paso de parámetros.
- Sustitución textual de variables y Cadenas.
- Comunicación bidireccional entre órdenes de shell.
El shell permite modificar en forma dinámica las características con que se ejecutan los programas en UNIX:
Las entradas y salidas pueden ser redireccionadas o redirigidas hacia archivos, procesos y dispositivos;
Es posible interconectar procesos entre sí.
Diferentes usuarios pueden "ver" versiones distintas del sistema operativo debido a la capacidad del shell para configurar diversos ambientes de ejecución. Por ejemplo, se puede hacer que un usuario entre directamente a su sección, ejecute un programa en particular y salga automáticamente del sistema al terminar de usarlo.
http://www.monografias.com/trabajos/unix/Image414.gif 
El núcleo del Sistema Operativo

El núcleo del sistema operativo Unix (llamado Kernel) es un programa escrito casi en su totalidad en lenguaje C, con excepción de una parte del manejo de interrupciones, expresada en el lenguaje ensamblador del procesador en el que opera.
Las funciones del núcleo son permitir la existencia de un ambiente en el que sea posible atender a varios usuarios y múltiples tareas en forma concurrente, repartiendo al procesador entre todos ellos, e intentando mantener en grado óptimo la atención individual.
El Kernel opera como asignador de recursos para cualquier proceso que necesite hacer uso de las facilidades de cómputo. Es el componente central de Unix y tiene las siguientes funciones:
- Creación de procesos, asignación de tiempos de atención y sincronización.
- Asignación de la atención del procesador a los procesos que lo requieren.
- Administración de espacio en el sistema de archivos, que incluye: acceso, protección y administración de usuarios; comunicación entre usuarios v entre procesos, y manipulación de E/S y administración de periféricos.
- Supervisión de la transmisión de datos entre la memoria principal y los dispositivos periféricos.
El Kernel reside siempre en la memoria central y tiene el control sobre la computadora, por lo que ningún otro proceso puede interrumpirlo; sólo pueden llamarlo para que proporcione algún servicio de los ya mencionados. Un proceso llama al Kernel mediante módulos especiales conocidos como llamadas al sistema.
El Kernel consta de dos artes principales: la sección de control de procesos y la de control de dispositivos. La primera asigna recursos, programas, procesos y atiende sus requerimientos de servicio; la segunda, supervisa la transferencia de datos entre la memoria principal y los dispositivos periféricos. En términos generales, cada vez que algún usuario oprime una tecla de una terminal, o que se debe leer o escribir información del disco magnético, se interrumpe al procesador central y el núcleo se encarga de efectuar la operación de transferencia.
http://www.monografias.com/trabajos/unix/Image415.gif
Cuando se inicia la operación de la computadora, debe cargarse en la memoria una copia del núcleo, que reside en e] disco magnético (operación denominada bootstrap). Para ello, se deben inicializar algunas interfaces básicas de hardware; entre ellas, el reloj que proporciona interrupciones periódicas. El Kernel también prepara algunas estructuras de datos que abarcan una sección de almacenamiento temporal para transferencia de información entre terminales y procesos, una sección para almacenamiento de descriptores de archivos y una variable que indica la cantidad de memoria principal.
A continuación, el Kernel inicializa un proceso especial, llamado proceso 0. En general, los procesos se crean mediante una llamada a una rutina del sistema (fork), que funciona por un mecanismo de duplicación de procesos. Sin embargo, esto no es suficiente para crear el primero de ellos, por lo que el Kernel asigna una estructura de datos y establece apuntadores a una sección especial de la memoria, llamada tabla de procesos, que contendrá los descriptores de cada uno de los procesos existentes en el sistema.
Después de haber creado el proceso 0, se hace una copia del mismo, con lo que se crea el proceso 1; éste muy pronto se encargará de "dar vida" al sistema completo, mediante la activación de otros procesos que también forman parte del núcleo. Es decir, se inicia una cadena de activaciones de procesos, entre los cuales destaca el conocido como despachador, o scheduler, que es el responsable de decidir cuál proceso se ejecutará y cuáles van a entrar o salir de la memoria central. A partir de ese momento se conoce el número 1 como proceso de inicialización del sistema, init.
El proceso init es el responsable de establecer la estructura de procesos en Unix. Normalmente, es capaz de crear al menos dos estructuras distintas de procesos: el modo monousuario y el multiusuario. Comienza activando el intérprete del lenguaje de control (Shell) en la terminal principal, o consola, del sistema y proporcionándole privilegios de "superusuario". En la modalidad de un solo usuario la consola permite iniciar una primera sesión, con privilegios especiales, e impide que las otras líneas de comunicación acepten iniciar sesiones nuevas. Esta modalidad se usa con frecuencia para revisar y reparar sistemas de archivos, realizar pruebas de funciones básicas del sistema y para otras actividades que requieren uso exclusivo de la computadora.
Init crea otro proceso, que espera pacientemente a que alguien entre en sesión en alguna línea de comunicación. Cuando esto sucede, realiza ajustes en el protocolo de la línea y ejecuta el programa login, que se encarga de atender inicialmente a los nuevos usuarios. Si la clave del usuario, y la contraseña proporcionadas son las correctas, entonces entra en operación el programa Shell, que en lo sucesivo se encargará de la atención normal del usuario que se dio de alta en esa terminal.
A partir de ese momento el responsable de atender al usuario en esa terminal es el intérprete Shell.
Cuando se desea terminar la sesión hay que desconectarse de Shell (y, por lo tanto, de Unix), mediante una secuencia especial de teclas (usualmente. < CTL > - D). A partir de ese momento la terminal queda disponible para atender a un nuevo usuario.
  

Administración de Archivos y Directorios
El sistema de archivos de Unix; esta basado en un modelo arborescente y recursivo, en el cual los nodos pueden ser tanto archivos como directorios, y estos últimos pueden contener a su vez directorios o subdirectorios. Debido a esta filosofía, se maneja al sistema con muy pocas órdenes, que permiten una gran gama de posibilidades. Todo archivo de Unix está controlado por múltiples niveles de protección, que especifican los permisos de acceso al mismo. La diferencia que existe entre un archivo de datos, un programa, un manejador de entrada/salida o una instrucción ejecutable se refleja en estos parámetros, de modo que el sistema operativo adquiere características de coherencia y elegancia que lo distinguen.
La raíz del sistema de archivos (conocida como root ) se denota con el símbolo "/", y de ahí se desprende un conjunto de directorios que contienen todos los archivos del sistema de cómputo. Cada directorio, a su vez, funciona como la subraíz de un nuevo árbol que depende de él y que también puede estar formado por directorios o subdirectorios y archivos. Un archivo siempre ocupará el nivel más bajo dentro del árbol, porque de un archivo no pueden depender otros; si así fuera, sería un directorio. Es decir, los archivos son como las hojas del árbol.
Se define en forma unívoca el nombre de todo archivo (o directorio) mediante lo que se conoce como su trayectoria (path name): es decir, el conjunto completo de directorios, a partir de root (/), por los que hay que pasar para poder llegar al directorio o archivo deseado. Cada nombre se separa de los otros con el símbolo /, aunque tan sólo el primero de ellos se refiere a la raíz.
Por ejemplo, el archivo

http://www.monografias.com/trabajos/unix/Image416.jpgu/gerencia/abril94l/carta2
Tiene toda esta trayectoria como nombre absoluto, pero se llama gerencia/abril94l/carta2, sin 1ra diagonal inicial, si se observa desde el directorio /u. Para los usuarios que están normalmente en el directorio /u/gerencia, el archivo se llama abril94l/carta2. Así, también puede existir otro archivo llamado carta2, pero dentro de algún otro directorio y en caso de ser necesario se emplearía el nombre de la trayectoria (completa o en partes, de derecha a izquierda) para distinguirlos. Unix ofece medios muy sencillos para colocarse en diferentes puntos del árbol que forma el sistema de archivos, que para el ejemplo anterior podría ser el siguiente:
Como se dijo antes, desde el punto de vista del directorio abril94, que a su vez pertenece al directorio gerencia del directorio /u, basta con el nombre carta2 para apuntar al archivo en cuestión.
En esta forma se maneja el sistema completo de archivos y se dispone de un conjunto de órdenes de Shell (además de múltiples variantes) para hacer diversas manipulaciones, como crear directorios, moverse dentro del sistema de archivos, copiarlos, etcétera.
Unix incluye, además, múltiples esquemas para crear, editar y procesar documentos. Existen varios tipos de editores, formadores de textos, macro procesadores para textos, formadores de tablas, preprocesadores de expresiones matemáticas y un gran número de ayudas y utilerías diversas, que se mencionan más adelante.
A continuación se describe el modo de funcionamiento de Unix, con base en un modelo de estudio de sistemas operativos que lo divide en "capas" jerárquicas para su mejor comprensión.
Manejo de archivos y de información
Como ya se describió, la estructura básica del sistema de archivos es jerárquica, lo que significa que los archivos están almacenados en varios niveles. Se puede tener acceso a cualquier archivo mediante su trayectoria, que especifica su posición absoluta en la jerarquía, y los usuarios pueden cambiar su directorio actual a la posición deseada. Existe también un mecanismo de protección para evitar accesos no autorizados. Los directorios contienen información para cada archivo, que consiste en su nombre y en un número que el Kernel utiliza para manejar la estructura interna del sistema de archivos, conocido como el nodo-i. Hay un nodo-i para cada archivo, que contiene información de su directorio en el disco, su longitud, los modos y las fechas de acceso, el autor, etc. Existe, además, una tabla de descriptores de archivo, que es una estructura de datos residente en el disco magnético, a la que se tiene acceso mediante el sistema mencionado de E/S por bloques.
El control del espacio libre en el disco se mantiene mediante una lista ligada de bloques disponibles. Cada bloque contiene la dirección en disco del siguiente bloque en la cadena. El espacio restante contiene las direcciones de grupos de bloques del disco que se encuentren libres. De esta forma, con una operación de E/S, el sistema obtiene un conjunto de bloques libres y un apuntador para conseguir más.
Las operaciones de E/S en archivos se llevan a cabo con la ayuda de la correspondiente entrada del nodo-i en la tabla de archivos del sistema. El usuario normalmente desconoce los nodos-i porque las referencias se hacen por el nombre simbólico de la trayectoria. Los procesos emplean internamente funciones primitivas (llamadas al sistema) para tener acceso a los archivos; las más comunes son open, creat, read, write, seek, close y unlink, aunque sólo son empleadas por los programadores, no por los usuarios finales del sistema.
Toda esta estructura física se maneja "desde afuera" mediante la filosofía jerárquica de archivos y directorios ya mencionada, y en forma totalmente transparente para el usuario. Además, desde el punto de vista del sistema operativo, un archivo es muy parecido a un dispositivo.
Las ventajas de tratar a los dispositivos de E/S en forma similar a los archivos normales son múltiples: un archivo y un dispositivo de E/S se tornan muy parecidos; los nombres de los archivos y de los dispositivos tienen la misma sintaxis y significado, así que a un programa que espera un nombre de archivo como parámetro puede dársele un nombre de dispositivo (con esto se logra interacción rápida y fácil entre procesos de alto nivel).
El sistema Unix ofrece varios niveles de protección para el sistema de archivos, que consisten en asignar a cada archivo el número único de identificación de su dueño, junto con nueve bits de protección, que especifican permisos de lectura, escritura y ejecución para el propietario, para otros miembros de su grupo (definido por el administrador del sistema) y para el resto de los usuarios. Antes de cualquier acceso se verifica su validez consultando estos bits, que residen en el nodo-i de todo archivo. Además, existen otros tres bits que se emplean para manejos especiales, relacionados con la clave del superusuario.
Otra característica de Unix es que no requiere que el conjunto de sistemas de archivos resida en un mismo dispositivo.
Es posible definir uno o varios sistemas "desmontables", que residen físicamente en diversas unidades de disco. Existe una orden (mkfs) que permite crear un sistema de archivos adicional, y una llamada al sistema (mount) con la que se añade (y otra con la que se desmonta) uno de ellos al sistema de archivos global.
EI control de las impresoras de una computadora que funciona con el sistema operativo Unix consiste en un subsistema (SPOOL) que se encarga de coordinar los pedidos de impresión de múltiples usuarios. Existe un proceso de Kernel que en forma periódica revise las colas de servicio de las impresoras para detectar la existencia de pedidos e iniciar entonces las tareas de impresión. Este tipo de procesos, que son activados en forma periódica por el núcleo del sistema operativo, reciben en Unix el nombre de daemons (duendes), tal vez porque se despiertan y aparecen sin previo aviso. Otros se encargan de activar procesos en tiempos previamente determinados por el usuario, o de escribir periódicamente los contenidos de los buffers de memoria en el disco magnético.
Procesos. Manejo del Procesador
En Unix se ejecutan programas en un medio llamado "proceso de usuario". Cuando se requiere una función del Kernel, el proceso de usuario hace una llamada especial al sistema y entonces el control pasa temporalmente al núcleo. Para esto se requiere de un conjunto de elementos de uso interno, que se mencionan a continuación.
Se conoce como imagen a una especie de fotografía del ambiente de ejecución de un proceso, que incluye una descripción de la memoria, valores de registros generales, status de archivos abiertos, el directorio actual, etcétera. Una imagen es el estado actual de una computadora virtual, dedicada a un proceso en particular.
Un proceso se define como la ejecución de una imagen. Mientras el procesador ejecuta un proceso, la imagen debe residir en la memoria principal; durante la ejecución de otros procesos permanece primera en la memoria principal a menús que la aparición de un proceso activo de mayor prioridad la obligue a ser copiada al disco, como ya se dijo.
Un proceso puede encontrarse en uno de varios estados: en ejecución; listo para ejecutar, o en espera.
Cuando se invoca una función del sistema, el proceso de usuario llama al Kernel como subrutina. Hay un cambio de ambientes y, como resultado, se tiene un proceso del sistema. Estos dos procesos son dos fases del mismo original, que nunca se ejecutan en forma simultánea.
Existe una tabla de procesos que contiene una entrada por cada uno de ellos con los datos que requiere el sistema:
identificación, direcciones de los segmentos que emplea en la memoria, información que necesita el scheduler y otros. la entrada de la tabla de procesos se asigna cuando se crea el proceso y se libera cuando éste termina.
Para crear un proceso se requiere la inicialización de una entrada en la tabla, así como la creación de segmentos de texto y de datos. Además, es necesario modificar la tabla cuando cambia el estado del proceso o cuando recibe un mensaje de otro (para sincronización, por ejemplo). Cuando un proceso termina, su entrada en la tabla se libera y queda otro disponible para que otro nuevo la utilice.
En el sistema operativo Unix los procesos pueden comunicarse internamente entre sí, mediante el envío de mensajes o señales. El mecanismo conocido como interconexión (pipe) crea un canal entre dos procesos mediante una llamada a una rutina del Kernel, y se emplea tanto para pasar datos unidireccionalmente entre las imágenes de ambos, como para sincronizarlos, ya que si un proceso intenta escribir en un pipe ocupado, debe esperar a que el receptor lea los datos pendientes. Lo mismo ocurre en el caso de una lectura de datos inexistentes: el proceso que intenta leer debe esperar a que el proceso productor deposite los datos en el canal de intercomunicación.
Entre las diferentes llamadas al sistema para el manejo de procesos que existen en Unix están las siguientes, algunas de las cuales ya han sido mencionadas: fork (sacar una copia a un proceso); exec (cambiar la identidad de un proceso); kill (enviar una señal a un proceso); signal (especificar la acción por ejecutar cuando se recibe una señal de otro proceso), y exit (terminar un proceso).
Dentro de las tareas del manejo del procesador destaca la asignación dinámica (scheduling), que en Unix resuelve el scheduler mediante un mecanismo de prioridades. Cada proceso tiene asignada una prioridad; las prioridades de los procesos de usuario son menores que la más pequeña de un proceso del sistema.
El "motor" que mantiene en movimiento un esquema de multiprogramación es, por un lado, el conjunto de interrupciones que genera el desempeño de los procesos y, por otro, los constantes recordatorios que hace el reloj del procesador para indicar que se terminó la fracción de tiempo dedicada a cada proceso.
En el sistema Unix, las interrupciones son causadas por lo que se conoce como eventos, entre los cuales se consideran: la ejecución de una tarea de entrada/salida; la terminación de los procesos dependientes de otro; la terminación de la fracción de tiempo asignada a un proceso, y la recepción de una señal desde otro proceso.
En un sistema de tiempo compartido se divide el tiempo en un determinado número de intervalos o fracciones y se asigna cada una de ellas a un proceso. Además Unix toma en consideración que hay procesos en espera de una operación de E/S y que ya no pueden aprovechar su fracción. Para asegurar una distribución adecuada del procesador entre los procesos se calculan dinámicamente las prioridades de estos últimos, con el fin de determinar cuál será el proceso que se ejecutará cuando se suspenda el proceso activo actual.

Manejo De Memoria

Dependiendo de la computadora en la que se ejecute, Unix utiliza dos técnicas de manejo de memoria: swapping y memoria virtual.
Lo estándar en Unix es un sistema de intercambio de segmentos de un proceso entre memoria principal y memoria secundaria, llamado swapping lo que significa que se debe mover la imagen de un proceso al disco si éste excede la capacidad de la memoria principal, y copiar el proceso completo a memoria secundaria. Es decir, durante su ejecución, los procesos son cambiados de y hacia memoria secundaria conforme se requiera.
Si un proceso necesita crecer, pide más memoria al sistema operativo y se le da una nueva sección, lo suficientemente grande para acomodarlo. Entonces, se copia el contenido de la sección usada al área nueva, se libera la sección antigua y se actualizan las tablas de descriptores de procesos. Si no hay suficiente memoria en el momento de la expansión, el proceso se bloquea temporalmente y se le asigna espacio en memoria secundaria. Se copia a disco y, posteriormente, cuando se tiene el espacio adecuado - lo cual sucede normalmente en algunos segundos - se devuelve a memoria principal.
Está claro que el proceso que se encarga de los intercambios entre memoria y disco (llamado swapper) debe ser especial y jamás podrá perder su posición privilegiada en la memoria central. El Kernel se encarga de que nadie intente siquiera interrumpir este proceso, del cual dependen todos los demás. Este es el proceso 0 mencionado antes. Cuando se decide traer a la memoria principal un proceso en estado de "listo para ejecutar", se le asigna memoria y se copian allí sus segmentos. Entonces, el proceso cargado compite por el procesador con todos los demás procesos cargados. Si no hay suficiente memoria, el proceso de intercambio examine la tabla de procesos para determinar cuál puede ser interrumpido y llevado al disco.
Hay una pregunta que surge entonces es ¿cuál de los posibles procesos que están cargados será desactivado y cambiado a memoria secundaria? Los procesos que se eligen primero son aquellos que están esperando operaciones lentas (E/S), o que llevan cierto tiempo sin haberse movido al disco. La idea es tratar de repartir en forma equitativa las oportunidades de ejecución entre todos los procesos, tomando en cuenta sus historias recientes y sus patrones de ejecución.
Otra pregunta es ¿cuál de todos los procesos que están en el disco será traído a memoria principal?. La decisión se toma con base en el tiempo de residencia en memoria secundaria. El proceso más antiguo es el que se llama primero, con una pequeña penalización para los grandes.
Cuando Unix opera en máquinas más grandes, suele disponer de manejo de memoria de paginación por demanda. En algunos sistemas el tamaño de la página en Unix es de 512 bytes; en otros, de 1024. Para reemplazo se usa un algoritmo que mantiene en memoria las páginas empleadas más recientemente.
Un sistema de paginación por demanda ofrece muchas ventajas en cuanto a flexibilidad y agilidad en la atención concurrente de múltiples procesos y proporciona, además, memoria virtual, es decir, la capacidad de trabajar con procesos mayores que el de la memoria central. Estos esquemas son bastante complejos y requieren del apoyo de hardware especializado.

Manejo de entradas y salidas

El sistema de entrada/salida se divide en dos sistemas complementarios: el estructurado por bloques y el estructurado por caracteres. El primero se usa para manejar cintas y discos magnéticos, y emplea bloques de tamaño fijo (512 o 1024 bytes) para leer o escribir. El segundo se utiliza para atender a las terminales, líneas de comunicación e impresoras, y funciona byte por byte.
En general, el sistema Unix emplea programas especiales (escritos en C) conocidos como manejadores (drivers) para atender a cada familia de dispositivos de E/S. Los procesos se comunican con los dispositivos mediante llamadas a su manejador. Además, desde el punto de vista de los procesos, los manejadores aparecen como si fueran archivos en los que se lee o escribe; con esto se logra gran homogeneidad y elegancia en el diseño.
Cada dispositivo se estructura internamente mediante descriptores llamados número mayor, número menor y clase (de bloque o de caracteres). Para cada clase hay un conjunto de entradas, en una tabla, que aporta a los manejadores de los dispositivos. El número mayor se usa para asignar manejador, correspondiente a una familia de dispositivos; el menor pasa al manejador como un argumento, y éste lo emplea para tener acceso a uno de varios dispositivos físicos semejantes.
Las rutinas que el sistema emplea para ejecutar operaciones de E/S están diseñadas para eliminar las diferencias entre los dispositivos y los tipos de acceso. No existe distinción entre acceso aleatorio y secuencial, ni hay un tamaño de registro lógico impuesto por el sistema. El tamaño de un archivo ordinario está determinado por el número de bytes escritos en él; no es necesario predeterminar el tamaño de un archivo.
El sistema mantiene una lista de áreas de almacenamiento temporal (buffers), asignadas a los dispositivos de bloques. El Kernel usa estos buffers con el objeto de reducir el tráfico de E/S. Cuando un programa solicita una transferencia, se busca primero en los buffers internos para ver si el bloque que se requiere ya se encuentra en la memoria principal (como resultado de una operación de lectura anterior). Si es así, entonces no será necesario realizar la operación física de entrada o salida.
Existe todo un mecanismo de manipulación interna de buffers (y otro de manejo de listas de bytes), necesario para controlar el flujo de datos entre los dispositivos de bloques (y de caracteres) y los programas que los requieren.
Por último, y debido a que los manejadores de los dispositivos son programas escritos en lenguaje C, es relativamente fácil reconfigurar el sistema para ampliar o eliminar dispositivos de E/S en la computadora, así como para incluir tipos nuevos.
Lenguaje de control del sistema operativo
Entre los rasgos distintivos de Unix está el lenguaje de control que emplea, llamado Shell. Es importante analizar dos funciones más de Shell, llamadas redireccionamiento e Interconexión.
Asociado con cada proceso hay un conjunto de descriptores de archivo numerados 0, I y 2, que se utilizan para todas las transacciones entre los procesos y el sistema operativo. El descriptor de archivo 0 se conoce como la entrada estándar; el descriptor de archivo 1, como la salida estándar, y el descriptor 2, como el error estándar. En general, todos están asociados con la terminal de vídeo, pero, debido a que inicialmente son establecidos por Shell, es posible reasignarlos.
Una parte de la orden que comience con el símbolo ? se considera como el nombre del archivo que será abierto por Shell y que se asociará con la entrada estándar; en su ausencia, la entrada estándar se asigna a la terminal. En forma similar, un archivo cuyo nombre está precedido por el símbolo > recibe la salida estándar de las operaciones.
Cuando Shell interpreta la orden
califica < examen > resulta
llama a ejecución al programa califica (que ya debe estar compilado y listo para ejecutar) y detecta la existencia de un archivo que toma el lugar de la entrada estándar y de otro que reemplaza a la salida estándar. Después, pasa como datos de lectura los contenidos del archivo examen recién abierto (que debe existir previamente) al programa ejecutable. Conforme el programa produce datos como salida, éstos se guardan en el archivo resulta que Shell crea en ese momento.
En la teoría de lenguajes formales desempeñan un importante papel las gramáticas llamadas de tipo 3 (también conocidas como regulares), que tienen múltiples aplicaciones en el manejo de lenguajes. Existen unas construcciones gramaticales conocidas como expresiones regulares, con las que se puede hacer referencia a un conjunto ilimitado de nombres con estructura lexicográfica similar; esto lo aprovecha Shell para dar al usuario facilidades expresivas adicionales en el manejo de los nombres de los archivos. Así, por ejemplo, el nombre carta * se refiere a todos los archivos que comiencen con el prefijo carta* y que sean seguidos por cualquier subcadena, incluyendo la cadena vacía; por ello, si se incluye el nombre carta* en alguna orden, Shell la aplicará a los archivos carta, carta1, carta2 y cualquier otro que cumpla con esa especificación abreviada. En general, en lugares donde se emplea un nombre o una trayectoria, Shell permite utilizar una expresión regular que sirve como abreviatura para toda una familia de ellos, y automáticamente repite el pedido de atención para los componentes. Existen además otros caracteres especiales que Shell reconoce y emplea para el manejo de expresiones regulares, lo que proporciona al lenguaje de control de Unix mayor potencia y capacidad expresiva.
En Unix existe también la posibilidad de ejecutar programas sin tener que atenderlos en forma interactiva, sino simulando paralelismo (es decir, atender de manera concurrente varios procesos de un mismo usuario). Esto se logra agregando el símbolo & al final de la línea en la que se escribe la orden de ejecución. Como resultado, Shell no espera que el proceso "hijo'' termine de ejecutar (como haría normalmente), sino que regresa a atender al usuario inmediatamente después de haber creado el proceso asincrónico, simulando en esta forma el procesamiento por lotes (batch ) Para cada uno de estos procesos Shell proporciona, además, el número de identificación, por lo que si fuera necesario el usuario podría cancelarlo posteriormente, o averiguar el avance de la ejecución.
La comunicación interna entre procesos (es decir, el envío de mensajes con los que los diversos procesos se sincronizan y coordinan) ocurre mediante el mecanismo de interconexiones (pipes) ya mencionado, que conecta la salida estándar de un programa a la entrada estándar de otro, como si fuera un conducto con dos extremos, cada uno de los cuales está conectado a su vez a un proceso distinto. Desde Shell puede emplearse este mecanismo con el símbolo | en la línea donde se escribe la orden de ejecución.
Así en el ejemplo:
(califica < tarea | sorte > lista) &
se emplean las características de interconexión, redireccionamiento y asincronía de procesos para lograr resultados difíciles de obtener en otros sistemas operativos. Aquí se pide que, en forma asincrónica (es decir, dejando que la terminal siga disponible para atender otras tareas del mismo usuario), se ejecute el programa califica para que lea los datos que requiere del archivo tareas; al terminar, se conectará con el proceso sort (es decir, pasará los resultados intermedios) para que continúe el procesamiento y se arreglen los resultados en orden alfabético; al final de todo esto, los resultados quedarán en el archivo lista.
Con esta otra orden, por ejemplo, se busca obtener todos los renglones que contengan las palabras "contrato" o "empleado" en los archivos en disco cuyos nombres comiencen con la letra "E" (lo cual se denota mediante una expresión regular). Para lograrlo, se hace uso de una función llamada egrep, especial para el manejo de patrones y combinaciones de expresiones regulares dentro de los archivos:
egrep-n 'contrato' 'empleado' E *
Los resultados aparecen así:
Emple1: 5: en caso de que un empleado decide hacer uso de la facilidad,
Emple1:7: y el contrato así lo considere las obligaciones de la
Emple2:9: Cláusula II: El contrato colectivo de trabajo
Emple2:15: Fracción llI: El empleado tendrá derecho, de acuerdo con lo
El tercer renglón, por ejemplo, muestra el noveno renglón del archivo Emple2, que contiene una de las palabras buscadas.
Como Unix fue diseñado para servir de entorno en las labores de diseño y producción de programas, ofrece - además de su filosofía misma - un rico conjunto de herramientas para la creación de sistemas complejos, entre las que destaca el subsistema make. Este último ofrece una especie de lenguaje muy sencillo, con el cual el programador describe las relaciones estructurales entre los módulos que configuran un sistema completo, para que de ahí en adelante make se encargue de mantener el sistema siempre al día. Es decir, si se modifica algún módulo, se reemplaza o se añade otro, las compilaciones individuales, así como las cargas y ligas a que haya lugar, serán realizadas en forma automática, por esta herramienta. Con una sola orden, entonces, es posible efectuar decenas de compilaciones y ligas predefinidas entre módulos, y asegurarse de que en todo momento se tiene la última versión de un sistema, ya que también se lleva cuenta automática de las fechas de creación, modificación y compilación de los diversos módulos. De esta manera, se convierte en una herramienta casi indispensable al desarrollar aplicaciones que requieren decenas de programas que interactúan entre sí o que mantienen relaciones jerárquicas.
Otras herramientas interesantes son ar, diseñado para crear y mantener bibliotecas de programas (que serán luego utilizadas por otros programas para efectuar las funciones ya definidas sin tener que duplicar el código); awk, un lenguaje para reconocimiento de patrones y expresiones regulares (es decir, generadas por una gramática regular o de tipo 3), útil para extraer información de archivos en forma selectiva; lex, un generador de analizadores lexicográfico, y yacc, un compilador de compiladores. Estos dos últimos se emplean como herramientas en la creación de compiladores y procesadores de lenguajes.
La lista complete de funciones, órdenes de subsistemas que forman parte de las utilerías del sistema operativo Unix es realmente grande, e incluye más de un centenar, que se pueden agrupar en los siguientes rubros:
Compiladores de compiladores.
Ejecución de programas.
Facilidades de comunicaciones.
Funciones para control de status.
Funciones para control de usuarios.
Funciones para impresión.
Herramientas de desarrollo de programación.
Lenguaje C, funciones y bibliotecas asociados.
Macroprocesamiento.
Manejo de directorios y archivos.
Manejo de gráficas.
Manejo de información.
Manejo de terminales.
Mantenimiento y respaldos.
Otros lenguajes algorítmicos integrados.
Preparación de documentos.`

Unix fue desarrollado utilizando lenguaje 'C'. Unix fue la base sobre la que Linux se construyó.Unix se ha basado en caracteres, mientras que Linux tiene gráfica y el medio ambiente basada en caracteres.. Unix tiene menos número de utilidades y características como comparar a Linux.  Número de conchas y editores disponibles en Linux es más que Unix.
Núcleo:
El núcleo es la parte del sistema operativo (OS) que interactúa directamente con el hardware de la computadora, a través de controladores de dispositivos que se construyen en el núcleo. Proporciona un conjunto de servicios que pueden ser utilizados por los programas, el aislamiento de estos programas desde el hardware subyacente.
Las principales funciones del kernel son:
1. para gestionar la memoria del ordenador
2. acceso de control a la computadora
3. mantener el sistema de archivos
4. manejar
5. errores
6. prestar servicios de entrada y de salida (que permite a las computadoras para interactuar con los terminales, dispositivos de almacenamiento e impresoras) y
7. asignar los recursos de la computadora (como la CPU y los dispositivos de entrada / salida) entre los usuarios.
Micro kernel: es un sistema operativo mínimo que lleva a cabo sólo las funciones esenciales de un sistema operativo. All other operating system functions are performed by system processes. Todas las funciones se llevan a cabo otro sistema de los procesos del sistema.
Diferencia entre UNIX y Linux:
Probablemente, la Respuesta Más sencillo es Que Desde El Punto de Vista Técnico no hay Grandes diferencias. La mayoría de la gente no está satisfecha con la creencia, embargo de que Linux y UNIX son muy similares, sin embargo. Aquí está una lista de las diferencias más obvias restantes.

Origen:
UNIX se originó en los laboratorios de las universidades y grandes corporaciones, como una iniciativa en el contexto de esas organizaciones. Linux fue iniciado por un estudiante universitario (Linus Torvalds) sin el apoyo inicial de una organización grande.  Linux también comenzó como en mimickry de otras conocidas como implementaciones de UNIX, mientras que las iníciales fueron la investigación original. También se derivan de que las primeras investigaciones.

Modelo de servicio:
La mayoría de las versiones UNIX operan sobre la base de que usted puede comprar ayuda (contratos de soporte y servicio).. Aunque estas cosas son cada vez más a disposición de los técnicos de Linux, los sistemas tradicionales consisten en dar su propia ayuda, con la ayuda de una comunidad de personas de ideas afines.. Linux es grande, y el acceso a las comunidades es más importante que, por ejemplo, que es para los mainframes de IBM.

Equipo: A pesar de Linux se ejecuta en muchos tipos de equipos, es más conocido por su apoyo a los productos básicos IBM-PC de Intel basado en hardware. Equipo: La mayoría de las versiones de UNIX más populares se centran en hardware de alto rendimiento, por lo general de carácter reservado, o el uso de alta gama arquitecturas de computación estándar, como SPARC.. Cada vez con más ganancias en hardware de PC, como Serial-ATA, esta distinción no es tan grande como lo que solía ser, especialmente para usos de bajo rendimiento, como computadoras de escritorio.

Concesión de licencias: Linux sigue el modelo de la Fundación de Software Libre de licencias radical, que proporciona una gran cantidad de libertad para aquellos que interactúan con la tecnología Linux. Versiones de UNIX proporcionadas Por Otros Proveedores Tienen Estrategias de Lucro Integrado. Las personas que ofrecen servicios de Linux podría tener una estrategia de ganancia, pero Linux sí mismo no. Esto significa que los proveedores de tecnología es un problema menor con Linux que está con otras ofertas de UNIX. También significa que las organizaciones lo suficientemente grande como para tener un centro de cómputo competencia siempre tiene la opción de "hacerlo ellos mismos". 


Honestidad: el software de Linux y Afines visible es Muy. Usted puede averiguar acerca de los errores antes de comprometerse con la tecnología en lugar de después. Usted puede averiguar ACERCA de los errores de los antes comprometerse Con la Tecnología en Lugar después. Debido a esto, un número de versión de Linux es un indicador más rentable de la calidad del software que en UNIX. . Por ejemplo, el software de Linux pasa mucho tiempo que la versión 0 (cero) antes de que cada vez reúne los requisitos para la etiqueta de "versión 1".

En términos de establecer la calidad, rendimiento y características, no hay mucho para separar Linux desde el UNIX es otros.  Linux todavía tiene que aportar una  auténtica programación en tiempo real, que algunas otras versiones de UNIX hacerlo bien.
Unix fue desarrollado utilizando lenguaje 'C'. Unix fue la base sobre la que Linux se construyó. Unix se ha basado en caracteres, mientras que Linux tiene gráfica y el medio ambiente basada en caracteres.. Unix tiene menos número de utilidades y características como comparar a Linux.  Número de conchas y editores disponibles en Linux es más que Unix.