Después del periodo estival donde parece que este país entero se va de vacaciones, vuelvo con la sección de seguridad informática de la que ya he hecho una presentación. Bueno, en realidad voy a hacer trampa, ya que me voy a remitir a una sección de una wiki que trata este tema. Posteriormente iré tratando cada aspecto en nuevos artículos.
La sección en cuestión es Seguridad, de la wiki en castellano sobre openSUSE.
Como en la mayoría de wikis, los enlaces siguen la convención: azules para páginas existentes, rojo para páginas inexistentes. Y, como es de esperar, está tratada desde el punto de vista del usuario de openSUSE (GNU/Linux).
La primera sección versa sobre el software antivirus; por esta razón la entrada en sí es muy breve, ya que en GNU/Linux no es algo que dé mucho de sí. Sobre el tema ya he hecho un pequeño ensayo, que puedo complementar con un artículo que circula estos días por Internet y que podemos encontrar por ejemplo en el blog blog.desdelinux.net.
La seguiente sección versa sobre un tema más específico: cómo proteger los gestores de arranque.
El apartado "cuentas de usuario" describe las cuentas de usuario de los sistemas linux (usuario "normal" y administrador) y contiene una sección general muy interesante en cualquier sistema operativo. Y es que no basta con tener una cuenta de usuario con una clave: ésta debe de ser lo suficientemente segura y confiable, por lo que un buen método para obtenerla es muy interesante.
Todo esto dan unos buenos deberes para retomar este manido, importante y espinoso tema de la Seguridad Informática.
Mostrando entradas con la etiqueta Iniciación. Mostrar todas las entradas
Mostrando entradas con la etiqueta Iniciación. Mostrar todas las entradas
martes, 20 de agosto de 2013
lunes, 10 de junio de 2013
Entendiendo la seguridad informática: cosas sobre la privacidad
En el artículo anterior de la serie "Seguridad Informática" he establecido una serie de conceptos básicos. En el presente artículo, se trata de profundizar un poco en la idea de la seguridad informática y de su necesidad. No en vano los recientes episodios de la "Seguridad Nacional Americana" están en primera plana de la actualidad.
Vaya por delante que la seguridad informática es un tema muy amplio. Por ejemplo, tengo aquí a mano impresa la documentación de openSUSE, que son unas 330 páginas. En realidad pueden hacerse másters sobre el tema, y las empresas que ofrecen certificaciones sobre la materia las sitúan por encima de las ingenierías.
Para ir tomando contexto, me remitiré a mi propio anecdotario. Yo utilizaba en el cambio de milenio Debian GNU/Linux "Potato", una distribución de GNU/Linux de gran y merecida reputación. Como se generalizó después, Debian utilizaba varios repositorios de software en función de la clasificación del mismo. En el nivel oficial, tenías el repositorio principal (solo software libre), un repositorio para software "no del todo libre" (códecs multimedia y software con licencias abiertas pero "dudosas") y software no libre. Además, tenías un repositorio denominado "NON-US", que contenía principalmente software que pudiese estar sujeto a patentes de software (en USA, como en otros países, es posible patentar un software; no así en España).
El caso es que hurgando aquí y allá observé que no incluía solamente software patentado, sino que incluía también el software de criptografía. En una búsqueda (laxa, de aquellas tenía un acceso a Internet muuy limitado y las fuentes de información no eran muchas), encontré que la mayoría de algoritmos de encriptación estaban prohibidos en USA, salvo los más "leves".
Después hablaré algo sobre criptografía, pero ahora baste saber que ese software no era legal en la "tierra de las libertades". Ya por entonces hacía años que habíamos oído hablar de "Echelon", así que parecía que la privacidad en yankilandia era un bien preciado o incluso inexistente -si cumplías la ley, claro.
Es cierto que en ese momento me reí un poco de los pobres usanianos. Como es de esperar en estos casos, vino un gobierno español y en uno de los muchos "apaños" que se han hecho al Código Penal español estos últimos años, incluyeron una cosa muy curiosa: la "posesión" (sic) de software [de hacking]. Naturalmente, el ministro de turno tendría un computador con Windows que emitía estractos regularmente a Microsoft, así que no tendría por qué importarle mucho el que para garantizar el sistema de seguridad de un sistema deberás probar a quebrantar dicho sistema de seguridad; y para eso necesitarás las herramientas que podrían utilizar otros para acceder a tu sistema o para dañarlo de alguna otra manera.
Echando la vista atrás, los usuarios de GNU/Linux siempre nos hemos reído de la seguridad y privacidad (mejor dicho, de la alarmante falta de las mismas) de sus productos. Si hasta hace un par de años se cuestionaba una "puerta de atrás" de Windows XP (no sé si aun sigue vigente en Vista/7/8, aunque casi lo doy por sentado), la gran noticia o decepción fue la compra de Skype hace unos meses.
Skype es una aplicación de lo que se denomina VoIP (Voz y datos con el protocolo de Internet), lo que permite enviar por la red no sólo datos, sino también voz. Digamos que Skype es un software para realizar chats, llamadas telefónicas o de videoconferencia. Es uno de los pocos sistemas que incluye cifrado de las comunicaciones por defecto. Los usuarios de sistemas libres solemos observarlo con desinterés, pero para la mayoría de usuarios era una gran herramienta. Y digo era porque precisamente ha sido adquirida por Microsoft, con lo cual por mucho que cifres la comunicación, no puedes garantizar que la propia empresa garantice la privacidad. Con un poco de optimismo, puede pensarse que la conversación en sí será privada, pero Microsoft o la NSA sabrán al menos cuándo, cuánto y con quién ha tenido lugar dicha conversación. Aunque lo cierto es que eso lo hacen casi todas las operadoras de telecomunicaciones... ¿cuál es el agravante de Skype? Bien, Skype es software privativo cuyo código no es accesible por sus usuarios: no hay forma de garantizar que Microsoft no incluye algún sistema de espionaje.
En este contexto, podemos parafrasear a Dante:
El muro de la individualidad
En nuestro sistema social las esferas íntimas y sociales están separadas férreamente: hay cosas que puedes hacer en privado pero no así en público. Las tres grandes religiones comparten el "pecado original" cuya consecuencia fue la consciencia de la propia desnudez y la vergüenza subsiguiente. Uno pensaría que el impulso de cubrirse debería venir más de la necesidad de combatir el frío y otras inclemencias, pero lo cierto es que el valor cultural que se le otorga es siempre el de cubrir las "vergüenzas". A medida que se fueron estableciendo sociedades mayores y más complejas cada vez, las relaciones entre sus miembros se invistieron de toda una suerte de normas y reglas respecto a qué es oportuno con otro miembro o qué no lo es.
Muchos afirman que la privacidad aún es necesaria para garantizar la propia individualidad, mientras que otros consideran que la privacidad es una herramienta más para gestionar sus circulos sociales; otros, que no vale la pena preocuparse por ella y que todo debe de ser público.
Realmente, la privacidad incluye la necesidad de preservar aquello que esperamos de la misma. Por poner un ejemplo: hace algunos años una chica había estado de baja por depresión y se había marchado a un crucero (digamos, por el Caribe); a la chica se le ocurrió colgar las fotos del evento en su cuenta de Facebook, donde salía sonriente con sus acompañantes u otros viajeros. Al volver, sus jefes vieron dichas fotos y decidieron despedirla, ya que según ellos "muy deprimida no se la veía".
Tomemos ahora como referencia la Declaración Univarsal de los Derechos Humanos: no hay nada en ella que haga referencia a la privacidad per se. Se da por hecho que lo que se necesita es un derecho de acción (poder hacer cosas: expresarse, acceder a tal o cual información, tener una determinada ideología, etc.) en lugar de referirse a un derecho a que los demás no sepan según qué circunstancia de una persona.
Generalmente, la garantía de privacidad es una forma de preservar ciertos derechos, en particular el número 12:
Dicho todo esto, también es tradicional el respecto a la privacidad de la vida de los individuos en muchos ámbitos: familiar/doméstico, profesional, respecto a sus comunicaciones, etc. Los Estados de Derecho imponen límites a la acción de la justicia cuando se dañen estos derechos, y no es hasta modernamente, con la extensión de la tecnología, cuando el problema comienza a manifestarse en toda su intensidad: cuando una suerte de "Gran Hermano" se vislumbra como algo posible. Hasta ahora, el problema no era vigilar a los ciudadanos, sino ser capaces de hacer algo con la información obtenida de millones (literalmente, cientos).
Este largo epígrafe quiere plantear la privacidad como algo relativo, que depende de los valores de cada persona. Yo entiendo la privacidad como algo bueno, de la misma forma que entiendo que el propio individuo debe de ser el que decida, en su caso, qué grado de privacidad cede y a cambio de qué. Por ejemplo, no tengo problema en que suban fotos en las que salga yo a Facebook; si salgo haciendo algo "inapropiado" o "vergonzoso" o "inoportuno", quizás lo mejor sería no haberlo hecho, ¿no?, es decir, la célebre regla: "intenta no hacer cosas que te avergüencen si alguien las ve"; por otra parte, no entiendo por qué una sentencia penal debe de ser borrada de Internet, o una noticia de un periódico. Es interesante que se plantee la censura del evento noticiado en lugar de establecer mecanismos para rectificarla (por ejemplo, si se ha sido condenado a pena de cárcel, que se pueda comprobar con similar facilidad el haber cumplido ya la pena).
Es el primer consejo que le puedes dar a un adolescente que se conecta por Internet: no te fíes de quien no puedas verificar quién es. Pero esto puede no casar mucho con el deseo de mantener la privacidad del otro internauta. En los adolescentes o menores puede ser una regla: pues nada, si no puedes saber quién es, no te relaciones con él. Pero, ¿vale esto para los adultos? Supongamos que yo accedo a un servicio tal que Facebook: si yo mantengo mi privacidad de forma estricta, nadie sabrá quién soy en realidad, por lo que, siguiendo la regla anterior, nadie debería comunicarse conmigo ¿no?
Pareciera que podemos establecer las reglas básicas de la vida fuera de la red: según aumenta el trato que tengas con una persona, disminuye la privacidad con ella. Es lo que se llama "confianza".
Y aquí entra en escena el error conceptual de las redes sociales. Por un lado, hay pocos niveles de confianza: o se confía mucho o nada; por otro lado, sus usuarios no suelen ser conscientes de la necesidad de configurar la privacidad "por defecto". Esto es conceptual, no deliberado: no importa que ahora una u otra red haga dinero vendiendo acceso a parte de determinados perfiles, ya que en origen estas redes no eran más que una especie de "tableros colaborativos" donde varios usuarios podían compartir cosas.
Hasta aquí el sentido común. Ahora viene la tecnología: un usuario podría suplantar a otro y obtener la información que estabas dispuesto a compartir. ¿Cómo compruebas que es quien dice ser cuando no puedes saber quién es? Por supuesto, la tecnología permite hacer esto, pero sólo si los usuarios han tomado las medidas oportunas, o dicho de otra forma, si se emplean sistemas de autenticación (que es una palabra para no decir "autentificación" xd).
El funcionamiento es relativamente simple: yo genero una clave y la comparto contigo; tú haces otro tanto; mientras las comunicaciones empleen tales claves, la comunicación será segura. Bueno, más o menos, pero ya hablaremos de esto en detalle ;) Básicamente, yo tengo una clave que dice que yo soy yo; tú tienes otra que dice que tú eres tú; de forma adicional, compartimos otra tercera clave que es la que usamos para cifrar la conversación.
¿y dónde está el problema? pues en que se debe disponer de tales claves, naturalmente xd
Hay aplicaciones que hacen justamente esto; pero los problemas no acaban ahí: de nada vale que tenga una clave si puede conectarse cualquiera (digamos, a través de un malware) y hacerse con ella... para suplantarme por ahí o para descifrar nuestra conversación. Así que necesito hacer dos cosas: esconder las claves de la vista, y no permitir accesos no autorizados; y eso no vale de nada si permito que lugares externos que no controlo sean quienes almacenen mis datos (sea Facebook o Google, pongamos por caso) ya que pueden tener sus propios objetivos o seguir las leyes más o menos ridículas de un país dado.
Cuando abordemos la securización de nuestro sistema (que es una bonita forma de decir "cuando utilicemos software que nos permita el mayor grado posible de privacidad, confiabilidad y disponibilidad de nuestro sistema") veremos, entre otras cosas, cómo hacer estas cosas.
Un comentario final. En ocasiones, puede ocurrir que un exceso de celo al garantizar la inviolabilidad de un sistema atraiga atención sobre él. Algo así como "si tanto se esfuerza, algo tiene que esconder". Resistir un ataque de alguien competente no es sencillo: antes o después tendremos un error, no habremos actualizado aquella aplicación que decían que tenía un fallo grave de seguridad... basta una vez para que nuestro atacante tenga acceso a nuestro sistema.
Continuará... :)
Vaya por delante que la seguridad informática es un tema muy amplio. Por ejemplo, tengo aquí a mano impresa la documentación de openSUSE, que son unas 330 páginas. En realidad pueden hacerse másters sobre el tema, y las empresas que ofrecen certificaciones sobre la materia las sitúan por encima de las ingenierías.
Bienvenid@s al mundo real!
Para ir tomando contexto, me remitiré a mi propio anecdotario. Yo utilizaba en el cambio de milenio Debian GNU/Linux "Potato", una distribución de GNU/Linux de gran y merecida reputación. Como se generalizó después, Debian utilizaba varios repositorios de software en función de la clasificación del mismo. En el nivel oficial, tenías el repositorio principal (solo software libre), un repositorio para software "no del todo libre" (códecs multimedia y software con licencias abiertas pero "dudosas") y software no libre. Además, tenías un repositorio denominado "NON-US", que contenía principalmente software que pudiese estar sujeto a patentes de software (en USA, como en otros países, es posible patentar un software; no así en España).
El caso es que hurgando aquí y allá observé que no incluía solamente software patentado, sino que incluía también el software de criptografía. En una búsqueda (laxa, de aquellas tenía un acceso a Internet muuy limitado y las fuentes de información no eran muchas), encontré que la mayoría de algoritmos de encriptación estaban prohibidos en USA, salvo los más "leves".
Después hablaré algo sobre criptografía, pero ahora baste saber que ese software no era legal en la "tierra de las libertades". Ya por entonces hacía años que habíamos oído hablar de "Echelon", así que parecía que la privacidad en yankilandia era un bien preciado o incluso inexistente -si cumplías la ley, claro.
Es cierto que en ese momento me reí un poco de los pobres usanianos. Como es de esperar en estos casos, vino un gobierno español y en uno de los muchos "apaños" que se han hecho al Código Penal español estos últimos años, incluyeron una cosa muy curiosa: la "posesión" (sic) de software [de hacking]. Naturalmente, el ministro de turno tendría un computador con Windows que emitía estractos regularmente a Microsoft, así que no tendría por qué importarle mucho el que para garantizar el sistema de seguridad de un sistema deberás probar a quebrantar dicho sistema de seguridad; y para eso necesitarás las herramientas que podrían utilizar otros para acceder a tu sistema o para dañarlo de alguna otra manera.
Echando la vista atrás, los usuarios de GNU/Linux siempre nos hemos reído de la seguridad y privacidad (mejor dicho, de la alarmante falta de las mismas) de sus productos. Si hasta hace un par de años se cuestionaba una "puerta de atrás" de Windows XP (no sé si aun sigue vigente en Vista/7/8, aunque casi lo doy por sentado), la gran noticia o decepción fue la compra de Skype hace unos meses.
Skype es una aplicación de lo que se denomina VoIP (Voz y datos con el protocolo de Internet), lo que permite enviar por la red no sólo datos, sino también voz. Digamos que Skype es un software para realizar chats, llamadas telefónicas o de videoconferencia. Es uno de los pocos sistemas que incluye cifrado de las comunicaciones por defecto. Los usuarios de sistemas libres solemos observarlo con desinterés, pero para la mayoría de usuarios era una gran herramienta. Y digo era porque precisamente ha sido adquirida por Microsoft, con lo cual por mucho que cifres la comunicación, no puedes garantizar que la propia empresa garantice la privacidad. Con un poco de optimismo, puede pensarse que la conversación en sí será privada, pero Microsoft o la NSA sabrán al menos cuándo, cuánto y con quién ha tenido lugar dicha conversación. Aunque lo cierto es que eso lo hacen casi todas las operadoras de telecomunicaciones... ¿cuál es el agravante de Skype? Bien, Skype es software privativo cuyo código no es accesible por sus usuarios: no hay forma de garantizar que Microsoft no incluye algún sistema de espionaje.
En este contexto, podemos parafrasear a Dante:
Pierde toda esperanza en cuanto traspases la puerta (de enlace)
El muro de la individualidad
Muchos afirman que la privacidad aún es necesaria para garantizar la propia individualidad, mientras que otros consideran que la privacidad es una herramienta más para gestionar sus circulos sociales; otros, que no vale la pena preocuparse por ella y que todo debe de ser público.
Realmente, la privacidad incluye la necesidad de preservar aquello que esperamos de la misma. Por poner un ejemplo: hace algunos años una chica había estado de baja por depresión y se había marchado a un crucero (digamos, por el Caribe); a la chica se le ocurrió colgar las fotos del evento en su cuenta de Facebook, donde salía sonriente con sus acompañantes u otros viajeros. Al volver, sus jefes vieron dichas fotos y decidieron despedirla, ya que según ellos "muy deprimida no se la veía".
Tomemos ahora como referencia la Declaración Univarsal de los Derechos Humanos: no hay nada en ella que haga referencia a la privacidad per se. Se da por hecho que lo que se necesita es un derecho de acción (poder hacer cosas: expresarse, acceder a tal o cual información, tener una determinada ideología, etc.) en lugar de referirse a un derecho a que los demás no sepan según qué circunstancia de una persona.
Generalmente, la garantía de privacidad es una forma de preservar ciertos derechos, en particular el número 12:
Nadie será objeto de injerencias arbitrarias en su vida privada, su familia, su domicilio o su correspondencia, ni de ataques a su honra o a su reputación. Toda persona tiene derecho a la protección de la ley contra tales injerencias o ataques.Podemos aproximarnos a un entendimiento de la cuestión con una célebre ley recientemente derogada del ejército usaniano: la ley que establecía la prohibición para los soldados de pronunciarse respecto a su orientación sexual. o que llevaba implícito que debería abstenerse de determinadas conductas homosexuales, especialmente en público. Hasta tenía su eslogan, algo como: "no te preguntan, no contestes".
Dicho todo esto, también es tradicional el respecto a la privacidad de la vida de los individuos en muchos ámbitos: familiar/doméstico, profesional, respecto a sus comunicaciones, etc. Los Estados de Derecho imponen límites a la acción de la justicia cuando se dañen estos derechos, y no es hasta modernamente, con la extensión de la tecnología, cuando el problema comienza a manifestarse en toda su intensidad: cuando una suerte de "Gran Hermano" se vislumbra como algo posible. Hasta ahora, el problema no era vigilar a los ciudadanos, sino ser capaces de hacer algo con la información obtenida de millones (literalmente, cientos).
Este largo epígrafe quiere plantear la privacidad como algo relativo, que depende de los valores de cada persona. Yo entiendo la privacidad como algo bueno, de la misma forma que entiendo que el propio individuo debe de ser el que decida, en su caso, qué grado de privacidad cede y a cambio de qué. Por ejemplo, no tengo problema en que suban fotos en las que salga yo a Facebook; si salgo haciendo algo "inapropiado" o "vergonzoso" o "inoportuno", quizás lo mejor sería no haberlo hecho, ¿no?, es decir, la célebre regla: "intenta no hacer cosas que te avergüencen si alguien las ve"; por otra parte, no entiendo por qué una sentencia penal debe de ser borrada de Internet, o una noticia de un periódico. Es interesante que se plantee la censura del evento noticiado en lugar de establecer mecanismos para rectificarla (por ejemplo, si se ha sido condenado a pena de cárcel, que se pueda comprobar con similar facilidad el haber cumplido ya la pena).
La privacidad y la confiabilidad
Después de un poco de filosofía casera, podemos abordar las partes más interesantes del desafío de la privacidad. ¿Cómo te relacionas en el mundo de forma privada? o, para ser más precisos, ¿cómo confiar en quien no sabes quien es?Es el primer consejo que le puedes dar a un adolescente que se conecta por Internet: no te fíes de quien no puedas verificar quién es. Pero esto puede no casar mucho con el deseo de mantener la privacidad del otro internauta. En los adolescentes o menores puede ser una regla: pues nada, si no puedes saber quién es, no te relaciones con él. Pero, ¿vale esto para los adultos? Supongamos que yo accedo a un servicio tal que Facebook: si yo mantengo mi privacidad de forma estricta, nadie sabrá quién soy en realidad, por lo que, siguiendo la regla anterior, nadie debería comunicarse conmigo ¿no?
Pareciera que podemos establecer las reglas básicas de la vida fuera de la red: según aumenta el trato que tengas con una persona, disminuye la privacidad con ella. Es lo que se llama "confianza".
Y aquí entra en escena el error conceptual de las redes sociales. Por un lado, hay pocos niveles de confianza: o se confía mucho o nada; por otro lado, sus usuarios no suelen ser conscientes de la necesidad de configurar la privacidad "por defecto". Esto es conceptual, no deliberado: no importa que ahora una u otra red haga dinero vendiendo acceso a parte de determinados perfiles, ya que en origen estas redes no eran más que una especie de "tableros colaborativos" donde varios usuarios podían compartir cosas.
Hasta aquí el sentido común. Ahora viene la tecnología: un usuario podría suplantar a otro y obtener la información que estabas dispuesto a compartir. ¿Cómo compruebas que es quien dice ser cuando no puedes saber quién es? Por supuesto, la tecnología permite hacer esto, pero sólo si los usuarios han tomado las medidas oportunas, o dicho de otra forma, si se emplean sistemas de autenticación (que es una palabra para no decir "autentificación" xd).
El funcionamiento es relativamente simple: yo genero una clave y la comparto contigo; tú haces otro tanto; mientras las comunicaciones empleen tales claves, la comunicación será segura. Bueno, más o menos, pero ya hablaremos de esto en detalle ;) Básicamente, yo tengo una clave que dice que yo soy yo; tú tienes otra que dice que tú eres tú; de forma adicional, compartimos otra tercera clave que es la que usamos para cifrar la conversación.
¿y dónde está el problema? pues en que se debe disponer de tales claves, naturalmente xd
Hay aplicaciones que hacen justamente esto; pero los problemas no acaban ahí: de nada vale que tenga una clave si puede conectarse cualquiera (digamos, a través de un malware) y hacerse con ella... para suplantarme por ahí o para descifrar nuestra conversación. Así que necesito hacer dos cosas: esconder las claves de la vista, y no permitir accesos no autorizados; y eso no vale de nada si permito que lugares externos que no controlo sean quienes almacenen mis datos (sea Facebook o Google, pongamos por caso) ya que pueden tener sus propios objetivos o seguir las leyes más o menos ridículas de un país dado.
Cuando abordemos la securización de nuestro sistema (que es una bonita forma de decir "cuando utilicemos software que nos permita el mayor grado posible de privacidad, confiabilidad y disponibilidad de nuestro sistema") veremos, entre otras cosas, cómo hacer estas cosas.
Un comentario final. En ocasiones, puede ocurrir que un exceso de celo al garantizar la inviolabilidad de un sistema atraiga atención sobre él. Algo así como "si tanto se esfuerza, algo tiene que esconder". Resistir un ataque de alguien competente no es sencillo: antes o después tendremos un error, no habremos actualizado aquella aplicación que decían que tenía un fallo grave de seguridad... basta una vez para que nuestro atacante tenga acceso a nuestro sistema.
Continuará... :)
jueves, 30 de mayo de 2013
Entendiendo la seguridad informática: conceptos básicos.
Es un dicho común en el mundo informático que la única forma de garantizar la seguridad de un sistema informático es no teniéndolo conectado a la red. Bien, ya puestos, yo añadiría que además no debería usarlo nadie.
En estas líneas quiero introducir una serie de ideas y cuestiones relacionadas con el uso seguro de los computadores y otros sistemas informáticos. No pretende ser una guía exhaustiva, sino simplemente proporcionar un marco general para comprender la cuestión.
Seguridad Informática
Conjunto de reglas y actividades para proporcionar confiabilidad, privacidad y disponibilidad de los sistemas informáticos.
Confiabilidad
Cualidad del sistema que asegura que el sistema cumple con su propósito y que los datos del mismo son correctos.
Privacidad
Cualidad del sistema que asegura que a la información contenida en él sólo pueden acceder las personas indicadas.
Disponibilidad
Cualidad del sistema que garantiza que el usuario puede usarlo en las condiciones estipuladas en el sistema.
Es importante dejar claro desde el primer momento que la seguridad es una política de compromisos, en la que maximizar una cualidad puede ir en perjuicio de otra. Por ejemplo, el uso de un cifrado muy complejo puede afectar al rendimiento del computador.
Así, un uso seguro de un computador es un balance entre estas tres cualidades, de tal forma que se maximice cada una de ellas: un sistema de disponibilidad inmediata, en el que la información privada es la correcta y que no pude ser accesible por otros usuarios.
También es necesario definir otra serie de términos básicos:
Cifrado
También llamado encriptado, es una técnica que sustituye la información a salvaguardar por otra, con el objetivo de que un hipotético observador no autorizado no pueda entender dicha información. El proceso de convertir la información cifrada en información entendible se denomina descifrado o desencriptado.
Permisos
Descripción de la autoridad de los usuarios de un sistema. Generalmente habrá al menos un usuario privilegiado, denominado administrador. En los sistemas Unix-like el usuario administrador se denomina root
Firma digital
Sistema por el cual un usuario genera una clave compleja con el que cifrar otros documentos
Cortafuegos
Sistema informático dedicado a restringir el acceso a una red de computadores en función de un conjunto de reglas.
Malware
Software desarrollado con propósitos dañinos.
Virus
Malware que es capaz de introducirse en otro software que está en ejecución o en lugares del computador que se ejecutan automáticamente, como por ejemplo el arranque del disco duro. El software diseñado para detectar Virus y otros Malware se denomina Antivirus
Escalada de privilegios
Denominación del acto que permite que un usuario con una serie de permisos consiga obtener los permisos correspondientes al siguiente nivel de permisos (por arriba). Típicamente se refiere al usuario que puede ejecutar tareas de administrador, aunque podría referirse también a usuarios que pueden ejecutar tareas de otros usuarios más especializados, como administradores de bases de datos.
Puerta de atrás
Más habitual en inglés, Backdoor, es un Malware o un error del software legítimo que permite el acceso de terceros al sistema informático.
Por supuesto, un breve listado de conceptos básicos no puede completarse sin establecer la diferencia entre Hacker (gurú informático que promueve los sistemas abiertos) y Cracker (persona que se dedica a la piratería de software o al acceso ilegítimo a sistemas informáticos con ánimo de obtener un beneficio o de causar un daño).
A medida que vaya avanzando en las entregas del minicurso "tu computador y tú" iré incluyendo entradas con los distintos aspectos de la seguridad informática.
En estas líneas quiero introducir una serie de ideas y cuestiones relacionadas con el uso seguro de los computadores y otros sistemas informáticos. No pretende ser una guía exhaustiva, sino simplemente proporcionar un marco general para comprender la cuestión.
Es importante dejar claro desde el primer momento que la seguridad es una política de compromisos, en la que maximizar una cualidad puede ir en perjuicio de otra. Por ejemplo, el uso de un cifrado muy complejo puede afectar al rendimiento del computador.
Así, un uso seguro de un computador es un balance entre estas tres cualidades, de tal forma que se maximice cada una de ellas: un sistema de disponibilidad inmediata, en el que la información privada es la correcta y que no pude ser accesible por otros usuarios.
También es necesario definir otra serie de términos básicos:
Por supuesto, un breve listado de conceptos básicos no puede completarse sin establecer la diferencia entre Hacker (gurú informático que promueve los sistemas abiertos) y Cracker (persona que se dedica a la piratería de software o al acceso ilegítimo a sistemas informáticos con ánimo de obtener un beneficio o de causar un daño).
A medida que vaya avanzando en las entregas del minicurso "tu computador y tú" iré incluyendo entradas con los distintos aspectos de la seguridad informática.
sábado, 25 de mayo de 2013
Tu computadora y tú: cosas del sistema operativo
En una entrada anterior he descrito al Sistema Operativo (en adelante abreviado SO) como la interfaz entre los diversos dispositivos físicos que componen el computador (procesador, memoria, pantalla, teclado,...) y las aplicaciones que utilizas diariamente: el procesador de textos, la aplicación de manipulación fotográfica, el gestor de ficheros...
De esta forma, tú abres un procesador de textos, escribes un texto y lo guardas en un fichero con un nombre, digamos, "ensayo_naturaleza_del_hombre.doc". El procesador de textos se ocupa de definir el tamaño de la página, los márgenes, el tipo de letra de cada párrafo y le indica al SO que cree un fichero con el nombre ensayo_naturaleza_del_hombre.doc. El SO crea un fichero con tales datos y a través del sistema de archivos lo guarda en un disco. El sistema de archivos añade información al menos como el nombre del fichero y su ubicación real dentro del disco.
Si unos días después vuelves a usar el mismo fichero, puedes abrir tu procesador de textos, pulsas en el menú "Abrir" y seleccionas el fichero con el nombre "ensayo_naturaleza_del_hombre.doc"; entonces la aplicación le indica al SO que quiere acceder al contenido de dicho fichero, el SO accede al sistema de archivos y ejecuta una operación "Abrir" sobre el fichero ensayo_naturaleza_del_hombre.doc; el sistema de archivos accede al índice y constata que el fichero ensallo_naturaleza_del_hombre.doc se encuentra en un lugar determinado del disco, lo abre y se lo envía al SO, el cuál a su vez se lo envía al procesador de textos. El procesador de textos lee el contenido envíado, y crea una apariencia de página con las características indicadas en dicho fichero: tamaño, márgenes, estilo de los párrafos, etc. Y voilà! ya tienes tu carta de vuelta otra vez. Puedes imprimirla, para lo cual la aplicación le pedirá al SO que le indique a la impresora que lo imprima, modificarlo, iniciando un proceso similar al del primer día, etc.
Esa es la función del SO a grandes rasgos. Puede parecer que usar SO implica complicar las cosas necesariamente, pero hay que tener muy presente que lo que menos importa en un computador es el número de operaciones a realizar: da igual hacer 10 o 1000 operaciones simples para realizar una tarea, y lo importante es más bien qué tareas están disponibles, que es una forma de decir que lo importante es qué aplicaciones puedes utilizar en tu computador. Así hoy puedes utilizar aplicaciones para crear películas, de Diseño Asistido por Computador, ERPs, etc. Y todo esto porque el desarrollador puede centrarse en su aplicación en lugar de preocuparse de qué computadores existen y cómo funcionan internamente.
En la misión de aprender algo más sobre nuestro computador, comprender al SO consta de dos partes:
En el dibujo de la izquierda hay una representación muy básica de la idea. Arriba está el usuario (tú, yo, etc.). El usuario puede utilizar aplicaciones, sean aplicaciones de usuario (como el procesador de textos anterior) como de sistema (como un gestor de ficheros).
Tales aplicaciones son las que realmente utilizan el SO para hacerle peticiones del tipo "guarda este fichero" o "abre aquel otro", o también "imprime ese fichero" o "visualiza tal fotografía". Y el SO, más o menos obedientemente, es el que hace que los dispositivos de nuestro computador cumplan tales peticiones.
Si has leído con atención esta entrada del blog y las anteriores, ya sospecharás que incluso en cada uno de estos cuatro niveles presentados hay varios niveles más. Ciertamente, aunque los detalles exactos pueden variar con cada SO.
La idea de "Interfaz" nos lleva a un concepto interesante que utilizan los desarrolladores de software: me refiero a la "API" (del inglés Application Programming Interface: Interfaz para la Programación de Aplicaciones). Eso significa que el desarrollador de una aplicación crea una especie de lista de funciones que pueden hacerse con su software. De esta forma, otro desarrollador que quiera utilizar dicho software sólo tendrá que preocuparse de usar las funciones en la forma establecida por el primer desarrollador.
Por ejemplo, un sistema gráfico muy básico podría dibujar círculos, líneas y cuadrados en una ventana. La API podría contener, entre las demás, una función tal que:
dibujarCírculo (Centro: TPosición, Radio: entero, anchoLínea: entero)
TPosición {x: entero, y: entero}
lo que significaría que para dibujar un círculo de 12 cm. de radio en la coordenada 200,300 de la pantalla podrías hacer algo como
dibujarCírculo ({200,300}, 12, 1)
Lo importante no es hacer ahora un curso de desarrollo de aplicaciones intensivo, sino observar que esto permite que un desarrollador pueda utilizar cosas desarrolladas por otros sin preocuparse de cómo funcionan. El segundo desarrollador sabe que con eso se dibujará un círculo de 24 cm. de diámetro en la coordenada 200,300!!
Un SO tiene una "API del sistema", que es el conjunto de cosas que puede hacer dicho SO: abrir archivos, imprimir archivos, etc.
Uno de los problemas seculares de Microsoft Windows es que utiliza unas capas un poco agujereadas. En realidad, muchas utilidades del sistema no son desarrolladas por ellos (sistemas de copia de seguridad, antivirus, cortafuegos...) y lo que hacen los desarrolladores de estas aplicaciones es tratar de utilizar funciones del SO que sólo deberían ser utilizadas por otras funciones del SO. Al ser un uso "a ciegas" (más en este caso por ser software cerrado, que no puedes ver), como es de esperar se producen multitud de errores. Otro de los problemas, también de amplio arraigo, es que su funcionalidad es muy limitada, por lo que para hacer usos más avanzados es necesario realizar muchas operaciones muy complicadas, a lo que se añade el problema anterior. En general, para los administradores de SO Windows es conocido por lo muy difícil que resulta realizar tareas relativamente básicas.
En la próxima entrada trataré de explicar cómo el computador hace uso del SO: cómo lo arranca y en qué consiste realmente instalar un SO.
De esta forma, tú abres un procesador de textos, escribes un texto y lo guardas en un fichero con un nombre, digamos, "ensayo_naturaleza_del_hombre.doc". El procesador de textos se ocupa de definir el tamaño de la página, los márgenes, el tipo de letra de cada párrafo y le indica al SO que cree un fichero con el nombre ensayo_naturaleza_del_hombre.doc. El SO crea un fichero con tales datos y a través del sistema de archivos lo guarda en un disco. El sistema de archivos añade información al menos como el nombre del fichero y su ubicación real dentro del disco.
Si unos días después vuelves a usar el mismo fichero, puedes abrir tu procesador de textos, pulsas en el menú "Abrir" y seleccionas el fichero con el nombre "ensayo_naturaleza_del_hombre.doc"; entonces la aplicación le indica al SO que quiere acceder al contenido de dicho fichero, el SO accede al sistema de archivos y ejecuta una operación "Abrir" sobre el fichero ensayo_naturaleza_del_hombre.doc; el sistema de archivos accede al índice y constata que el fichero ensallo_naturaleza_del_hombre.doc se encuentra en un lugar determinado del disco, lo abre y se lo envía al SO, el cuál a su vez se lo envía al procesador de textos. El procesador de textos lee el contenido envíado, y crea una apariencia de página con las características indicadas en dicho fichero: tamaño, márgenes, estilo de los párrafos, etc. Y voilà! ya tienes tu carta de vuelta otra vez. Puedes imprimirla, para lo cual la aplicación le pedirá al SO que le indique a la impresora que lo imprima, modificarlo, iniciando un proceso similar al del primer día, etc.
Esa es la función del SO a grandes rasgos. Puede parecer que usar SO implica complicar las cosas necesariamente, pero hay que tener muy presente que lo que menos importa en un computador es el número de operaciones a realizar: da igual hacer 10 o 1000 operaciones simples para realizar una tarea, y lo importante es más bien qué tareas están disponibles, que es una forma de decir que lo importante es qué aplicaciones puedes utilizar en tu computador. Así hoy puedes utilizar aplicaciones para crear películas, de Diseño Asistido por Computador, ERPs, etc. Y todo esto porque el desarrollador puede centrarse en su aplicación en lugar de preocuparse de qué computadores existen y cómo funcionan internamente.
En la misión de aprender algo más sobre nuestro computador, comprender al SO consta de dos partes:
- Entender cómo nuestro SO actúa de interfaz entre el computador y las aplicaciones.
- Entender cómo el computador hace uso del SO. O más claramente, cómo lo ejecuta.
La importancia de una buena capa
Una idea muy importante en los SO es el llamado "modelo de capas": así cada conjunto de apliciones cubre a los que están debajo, aislándolas.En el dibujo de la izquierda hay una representación muy básica de la idea. Arriba está el usuario (tú, yo, etc.). El usuario puede utilizar aplicaciones, sean aplicaciones de usuario (como el procesador de textos anterior) como de sistema (como un gestor de ficheros).
Tales aplicaciones son las que realmente utilizan el SO para hacerle peticiones del tipo "guarda este fichero" o "abre aquel otro", o también "imprime ese fichero" o "visualiza tal fotografía". Y el SO, más o menos obedientemente, es el que hace que los dispositivos de nuestro computador cumplan tales peticiones.
Si has leído con atención esta entrada del blog y las anteriores, ya sospecharás que incluso en cada uno de estos cuatro niveles presentados hay varios niveles más. Ciertamente, aunque los detalles exactos pueden variar con cada SO.
La idea de "Interfaz" nos lleva a un concepto interesante que utilizan los desarrolladores de software: me refiero a la "API" (del inglés Application Programming Interface: Interfaz para la Programación de Aplicaciones). Eso significa que el desarrollador de una aplicación crea una especie de lista de funciones que pueden hacerse con su software. De esta forma, otro desarrollador que quiera utilizar dicho software sólo tendrá que preocuparse de usar las funciones en la forma establecida por el primer desarrollador.
Por ejemplo, un sistema gráfico muy básico podría dibujar círculos, líneas y cuadrados en una ventana. La API podría contener, entre las demás, una función tal que:
dibujarCírculo (Centro: TPosición, Radio: entero, anchoLínea: entero)
TPosición {x: entero, y: entero}
lo que significaría que para dibujar un círculo de 12 cm. de radio en la coordenada 200,300 de la pantalla podrías hacer algo como
dibujarCírculo ({200,300}, 12, 1)
Lo importante no es hacer ahora un curso de desarrollo de aplicaciones intensivo, sino observar que esto permite que un desarrollador pueda utilizar cosas desarrolladas por otros sin preocuparse de cómo funcionan. El segundo desarrollador sabe que con eso se dibujará un círculo de 24 cm. de diámetro en la coordenada 200,300!!
Un SO tiene una "API del sistema", que es el conjunto de cosas que puede hacer dicho SO: abrir archivos, imprimir archivos, etc.
Uno de los problemas seculares de Microsoft Windows es que utiliza unas capas un poco agujereadas. En realidad, muchas utilidades del sistema no son desarrolladas por ellos (sistemas de copia de seguridad, antivirus, cortafuegos...) y lo que hacen los desarrolladores de estas aplicaciones es tratar de utilizar funciones del SO que sólo deberían ser utilizadas por otras funciones del SO. Al ser un uso "a ciegas" (más en este caso por ser software cerrado, que no puedes ver), como es de esperar se producen multitud de errores. Otro de los problemas, también de amplio arraigo, es que su funcionalidad es muy limitada, por lo que para hacer usos más avanzados es necesario realizar muchas operaciones muy complicadas, a lo que se añade el problema anterior. En general, para los administradores de SO Windows es conocido por lo muy difícil que resulta realizar tareas relativamente básicas.
En la próxima entrada trataré de explicar cómo el computador hace uso del SO: cómo lo arranca y en qué consiste realmente instalar un SO.
jueves, 9 de mayo de 2013
Tu computadora y tú: la BIOS
Entendiendo la BIOS
En anteriores entradas he descrito muy someramente el proceso de arranque de un computador. He dicho que un programa especial, denominado BIOS (Basic Input-Output System) , o más modernamente EFI/UEFI, es el que se encarga de poner en marcha el computador y de comenzar la ejecución del Sistema Operativo. Hoy toca un pequeño artículo sobre esta aplicación y su principal uso: arrancar desde un dispositivo distinto.Aunque hay proyectos para proporcionar esta aplicación de forma más o menos estándar y abierta, lo cierto es que cada fabricante usa su propia BIOS. O más exactamente, usa una de las más extendidas, principalmente American Megatrends o bien Phoenix Technologies. Por su parte, EFI es una especificación de Intel diseñada para reemplazar la BIOS.
| mensaje de error cargando el microprocesador |
Una función interesante es la de establecer la hora del sistema: sí, la BIOS permite configurar el reloj interno del sistema, que será el que proporcione la hora a nuestras aplicaciones a través del Sistema Operativo.
Hay muchas funciones del computador que pueden necesitar ser configuradas en la BIOS. Hace unos días me comentaban el caso de unos equipos que precisaban que en BIOS se configurase la posibilidad de virtualizar sistemas operativos (e incluso equipos donde el usuario tenía que hackear la BIOS para poder hacerlo). Entre otras cosas, puede establecer el protocolo para comunicar los discos con el procesador, el sistema de ahorro de energía, y el orden de los dispositivos en el que buscar un sistema para arrancar.
Para acceder a la BIOS hay que pulsar alguna tecla cuando aparece la primera pantalla. Puede ser suprimir (tecla que pone "supr" o bien "del"), F1, Escape (ESC)... cada modelo de computador puede tener una distinta. Lo normal es que la primera pantalla nos diga cuál es, pero puede que pase tan rápido que no alcancemos a verlo. Así que si no tenemos el manual de la placa base o alguno de los que venía con el computador, lo que podemos hacer es buscarlo (digamos con Google). Por ejemplo, para buscar la tecla que corresponde a un HP G56 buscamos
hp g56 tecla acceso bioscon lo que Google nos mostrará una lista de resultados, el primero de los cuáles nos sirve perfectamente. De forma similar, para un Sony Vaio podemos bucar algo como
Sony Vaio tecla acceso biosEn los portátiles es común disponer de alguna suerte de "menú" de opciones (arrancar en otro dispositivo, entrar en la aplicación BIOS, etc.), aunque otros simplemente tienen asignadas distintas teclas a las distintas posibilidad (F2 para arrancar en otros dispositivos, F10 para entrar en la BIOS...).
Unas palabras sobre EFI
Aunque el sistema EFI permite arrancar desde DVD, USB y demás, lo cierto es que la forma en la que carga el arranque del disco duro es muy diferente a lo que hace la BIOS. En lugar de cargar el sector de arranque del disco duro, lo que hace es cargar un sistema de arranque situado en una partición especial, de un tipo a la sazón llamado "tipo EFI". Decir que esta partición debe de utilizar un (primitivo) sistema de ficheros FAT para funcionar. En equipos que tengan EFI/UEFI, para arrancar otros sistemas instalados en otras particiones, es necesario modificar dicho sistema de arranque para que tenga la opción de arrancar en dicho sistema. No hace mucho esto era una tarea que debía realizarse a mano, pero hoy cada vez más sistemas (diferentes a Windows) son capaces de instalarse en un computador con EFI/UEFI sin mayores molestias para los usuarios.Cosa distinta es el "Secure Boot", el enésimo engendro de Microsoft para tratar de mantener el mismo mercado cautivo. Algunos sistemas soportan esta característica, aunque lo recomendable en todo caso es deshabilitarla al menos mientras se instala tal sistema.
miércoles, 1 de mayo de 2013
Tu computadora y tú: funcionamiento básico
En las dos entregas anteriores he tratado de describir algunos conceptos básicos para entender cómo funciona un computador. Hasta ahora ha sido una descripción vuela pluma de tales conceptos, para familiarizar a los no entendidos con ellos.
Hoy toca profundizar un poco en algunas de tales ideas. Comenzaremos con una mejor descripción de la arquitectura del sistema, hablaremos de los discos duros y su uso, y finalizaremos la entrega con una descripción básica del arranque del sistema.
A la derecha está la Memoria Principal, mientras que abajo está el Sistema de Entrada-Salida.
Cuando estás en una escuela informática, suelen contarte la historia completa en la misma asignatura además de en otras; sin embargo, lo cierto es que estas representaciones despistan: cualquier información -datos, programas- a usar debe de estar cargada en memoria principal. Por supuesto, es la UCP la que se encarga de acceder a un disco duro y de transferirlo a la Memoria Principal, y por ello se representa la doble flecha entre la UAL (ALU, en inglés) y los sistemas de Entrada/Salida.
Por cierto, algo "entra" cuando se recibe en la UCP, mientras que algo "sale" cuando desde la UCP es enviado a algún lado (impresión, para ser guardado en disco, etc.).
Una consecuencia es que un informático (y ahora cualquier lector) que lea un anuncio de una compañía telefónica de comienzos de 2013 y lea algo como "(tal móvil)... con 32 GB de memoria..." debería de sufrir dentera ante tamaña estupidez. En ocasiones, los discos duros y otros discos son denominados "memoria secundaria", pero eso no justifica que se sumen las capacidades de una (la principal) y otra (los discos). Para extender el uso de las memorias en los sistemas informáticos, puedes echar un vistazo a la wikipedia, comenzando por el interesante problema de la jerarquía de memoria (o como resolver el problema del coste de las memorias).
La clásica explicación comienza con el disco de vinilo (esto es, se asume que el aprendiz ha visto uno, cosa que para las nuevas generaciones no habría por qué esperar). Uno pone un disco en el tocadiscos, coloca la aguja al principio y el dico comienza a girar. El tocadiscos va reproduciendo lo que lee la aguja a medida que va pasando por el disco. Eventualmente, podemos saltar una pista o una parte (de forma muy aproximada, a ojo) levantando la aguja y acercándola o alejándola del centro. Podemos reproducir una cara y darle la vuelta y reproducir la otra cara.
Un disco duro es un dispositivo rígido (hard) que va dentro del computador. Por supuesto, no se le da la vuelta ni nada similar. En realidad es mucho más eficiente que cualquier fonógrafo de tres al cuarto.
En primer lugar, gira muchísimo más rápido. Un tocadiscos normal puede girar a 33 o 55 revoluciones por minuto (rpm); un disco duro barato de un portátil girará 5400 rpm, y los hay de 7200 ¡y hasta de 11000!!
En segundo lugar, tiene dos caras (esto sí como el tocadiscos) y suelen ser varios platos (cada disco de dos caras es un plato, también es común llamar así al disco de vinilo), entre 2 y 4, pero con modelos que tienen 6 o 7. El brazo del lector se compone en realidad de un brazo doble por cada plato (uno por cada disco, y doble para leer tanto la parte superior como inferior a la vez), con sus respectivos lectores.
Pero para que esto sea útil se necesita que la información se guarde de la forma adecuada. Lo que se hace es agrupar la información para que pueda ser leída por cada lector de cada brazo a la vez: es lo que se llama cilindro: la representación de lo que un lector puede leer en cada parte de cada disco en un giro.
En la imagen de la izquieda puede verse la representación de esto. La pista, por su parte, es la circunferencia en cada cara de cada disco. Los sectores son las partes en las que se divide cada pista.
Los Sistemas Operativos se encargan de proporcionar un acceso uniforme a los discos, y es habitual representarlos con un rectángulo desde el principio hasta el final, ya sea indicando los sectores o la capacidad.
Los discos duros se utilizan divididos en Particiones (modernamente llamadas también volúmenes, aunque en la práctica son cosas distintas, de las añadiré un artículo otro día). Particionar no existe según la RAE, y en el mundo informático se usa para denominar al proceso de crear particiones en un disco. Lo más probable es que se comenzara a particonar los discos porque las BIOS de entonces no podían acceder al contenido de todo el disco: imagina que tienes 100.000 sectores y que la BIOS sólo sabe contar desde 0 hasta 65535, es decir, que en este caso ¡sólo tiene 16 bits para guardar una dirección de disco!!
Sin embargo, particionar un disco resultó ser útil, ya que los cambios en una partición no afectan a las demás particiones del sistema. Ojo: siempre tiene que haber al menos una partición.
El sistema "tradicional" es la "tabla de partición MS-DOS" por ser la que se utilizaba en tal Sistema Operativo. Es una pequeña tabla que admite cuatro entradas, una para cada partición, en las que se indican sus respectivos principios y finales. Posteriormente se añadión una "extensión" para solventar este límite numérico. En lugar de cuatro particiones (llamadas ahora "primarias") se pueden crear tres particiones normales (primarias) y una "especial" llamada a la sazón "extendida". En estas particiones, lo que se hace es que se pueden crear particiones (llamadas ,para distinguirlas de las normales, lógicas) a condición de que cada una incluya donde comienza la siguiente.
Este mecanismo un poco chapuza es el más habitual aun hoy, aunque ya se utiliza cada vez más otro mecanismo: la GPT, que permite crear un montón de particiones normales en cada disco. Así desaparece la tradicional distinción entre partición primaria y partición lógica (no necesita particiones extendidas).
Otro concepto asociado al uso de discos duros es el de Formateo, aunque este nombre es más utilizado por la herramienta tradicional de MS-DOS para esta operación que por ser un nombre adecuado. En el mundo Unix se habla más bien de "crear sistemas de ficheros", lo que es más descriptivo y coherente.
Eso quiere decir que una partición de disco no es más que un trozo de superficie magnética donde puedes eventualmente guardar cosas. Si guardas varios ficheros, el Sistema Operativo necesitará alguna forma de saber dónde se guarda cada uno de ellos -además de algunas características como la fecha de modificación, permisos, etc.-; también es un servicio que se proporciona a los usuarios del SO, tanto humanos como a las aplicaciones del sistema. Tú guardas un documento en Documentos/trabajos/aprender_informática.txt, no entre los sectores 47567 y 47579. Es lo que se denomina Sistema de archivos. Uno de los más simples es FAT, que consiste simplemente en una lista de nombres de ficheros y su localización en el disco. Además de haberlo tratado en el artículo anterior, el artículo de la wikipedia es bastante razonable y no lo voy a replicar aquí.
Las Computadoras Personales (PC) solían traer una aplicación denominada BIOS (Basic In/out System, Sistema Básico de Entrada/Salida, otro nombre descriptivo), que hacía justamente eso: comprobaba que había un procesador, una memoria y algún dispositivo de entrada/salida: al menos un teclado, al menos un disco duro...
Hay un sector del disco duro denominado (de forma, también, apropiada) MBR (Master Boot Record, Registro Principal de Arranque) que es el primer sector del disco duro y que queda fuera de las particiones. En dicho registro se guarda la Tabla de particiones antes comentada y el programa que se encargará del arranque. En muchos computadores, esto consiste en una serie de instrucciones básicas para que el computador cargue el primer sector (también llamado, sector de arranque) de alguna partición, que eventualmente será, vaya, el sistema de arranque del Sistema Operativo.
Así que el último paso ejecutado por la BIOS es cargar en memoria el contenido del MBR.
Hoy las BIOS van siendo sustituidas por un nuevo sistema: EFI. Tal sistema pretende solventar algunas de las limitaciones de las BIOS, pero en realidad su tarea es la misma: comprobar los componentes principales, y cargar en memoria el arranque del Sistema Operativo o el Cargador de Arranque de turno.
En los sistemas EFI se puede indicar directamente qué se desea arrancar, sin necesidad de MBR; de todas formas, y por las dudas, EFI también permite usar MBR en lo que ellos llaman "modo híbrido".
También volveré sobre el arranque del sistema, que como he dicho merece su propia entrada.
Hoy toca profundizar un poco en algunas de tales ideas. Comenzaremos con una mejor descripción de la arquitectura del sistema, hablaremos de los discos duros y su uso, y finalizaremos la entrega con una descripción básica del arranque del sistema.
Arquitectura
En el primer capítulo describí la arquitectura básica de forma muy somera. Ahora toca mejorar eso. En la imagen de la derecha hay una de las representaciones gráficas habituales (cortesía de wikipedia, donde puedes leer un buen artículo sobre el tema). El cuadrado grande es la Unidad Central de Proceso, (UCP) que se compone de la Unidad Aritmético-Lógica (UAL) -que realiza operaciones aritméticas o lógicas, como cabría esperar- y la Unidad de Control (UC). También incluye una serie de registros donde guarda información necesaria para el funcionmiento del sistema.A la derecha está la Memoria Principal, mientras que abajo está el Sistema de Entrada-Salida.
Cuando estás en una escuela informática, suelen contarte la historia completa en la misma asignatura además de en otras; sin embargo, lo cierto es que estas representaciones despistan: cualquier información -datos, programas- a usar debe de estar cargada en memoria principal. Por supuesto, es la UCP la que se encarga de acceder a un disco duro y de transferirlo a la Memoria Principal, y por ello se representa la doble flecha entre la UAL (ALU, en inglés) y los sistemas de Entrada/Salida.
Por cierto, algo "entra" cuando se recibe en la UCP, mientras que algo "sale" cuando desde la UCP es enviado a algún lado (impresión, para ser guardado en disco, etc.).
Una consecuencia es que un informático (y ahora cualquier lector) que lea un anuncio de una compañía telefónica de comienzos de 2013 y lea algo como "(tal móvil)... con 32 GB de memoria..." debería de sufrir dentera ante tamaña estupidez. En ocasiones, los discos duros y otros discos son denominados "memoria secundaria", pero eso no justifica que se sumen las capacidades de una (la principal) y otra (los discos). Para extender el uso de las memorias en los sistemas informáticos, puedes echar un vistazo a la wikipedia, comenzando por el interesante problema de la jerarquía de memoria (o como resolver el problema del coste de las memorias).
Discos Duros
Los discos duros son el componente de almacenamiento secundario más utilizado de los últimos 50 años, y aunque las tabletas y smartphones suelen equipar tarjetas flash por su menor consumo, lo cierto es que los discos duros serán aun los reyes de los computadores durante unos cuantos años. El artículo de la wikipedia sobre discos duros es mucho más ambicioso de la breve explicación que aquí se va a dar.La clásica explicación comienza con el disco de vinilo (esto es, se asume que el aprendiz ha visto uno, cosa que para las nuevas generaciones no habría por qué esperar). Uno pone un disco en el tocadiscos, coloca la aguja al principio y el dico comienza a girar. El tocadiscos va reproduciendo lo que lee la aguja a medida que va pasando por el disco. Eventualmente, podemos saltar una pista o una parte (de forma muy aproximada, a ojo) levantando la aguja y acercándola o alejándola del centro. Podemos reproducir una cara y darle la vuelta y reproducir la otra cara.
Un disco duro es un dispositivo rígido (hard) que va dentro del computador. Por supuesto, no se le da la vuelta ni nada similar. En realidad es mucho más eficiente que cualquier fonógrafo de tres al cuarto.
En primer lugar, gira muchísimo más rápido. Un tocadiscos normal puede girar a 33 o 55 revoluciones por minuto (rpm); un disco duro barato de un portátil girará 5400 rpm, y los hay de 7200 ¡y hasta de 11000!!
En segundo lugar, tiene dos caras (esto sí como el tocadiscos) y suelen ser varios platos (cada disco de dos caras es un plato, también es común llamar así al disco de vinilo), entre 2 y 4, pero con modelos que tienen 6 o 7. El brazo del lector se compone en realidad de un brazo doble por cada plato (uno por cada disco, y doble para leer tanto la parte superior como inferior a la vez), con sus respectivos lectores.
| Representación de los cilindros de un disco |
En la imagen de la izquieda puede verse la representación de esto. La pista, por su parte, es la circunferencia en cada cara de cada disco. Los sectores son las partes en las que se divide cada pista.
Los Sistemas Operativos se encargan de proporcionar un acceso uniforme a los discos, y es habitual representarlos con un rectángulo desde el principio hasta el final, ya sea indicando los sectores o la capacidad.
Los discos duros se utilizan divididos en Particiones (modernamente llamadas también volúmenes, aunque en la práctica son cosas distintas, de las añadiré un artículo otro día). Particionar no existe según la RAE, y en el mundo informático se usa para denominar al proceso de crear particiones en un disco. Lo más probable es que se comenzara a particonar los discos porque las BIOS de entonces no podían acceder al contenido de todo el disco: imagina que tienes 100.000 sectores y que la BIOS sólo sabe contar desde 0 hasta 65535, es decir, que en este caso ¡sólo tiene 16 bits para guardar una dirección de disco!!
Sin embargo, particionar un disco resultó ser útil, ya que los cambios en una partición no afectan a las demás particiones del sistema. Ojo: siempre tiene que haber al menos una partición.
El sistema "tradicional" es la "tabla de partición MS-DOS" por ser la que se utilizaba en tal Sistema Operativo. Es una pequeña tabla que admite cuatro entradas, una para cada partición, en las que se indican sus respectivos principios y finales. Posteriormente se añadión una "extensión" para solventar este límite numérico. En lugar de cuatro particiones (llamadas ahora "primarias") se pueden crear tres particiones normales (primarias) y una "especial" llamada a la sazón "extendida". En estas particiones, lo que se hace es que se pueden crear particiones (llamadas ,para distinguirlas de las normales, lógicas) a condición de que cada una incluya donde comienza la siguiente.
Este mecanismo un poco chapuza es el más habitual aun hoy, aunque ya se utiliza cada vez más otro mecanismo: la GPT, que permite crear un montón de particiones normales en cada disco. Así desaparece la tradicional distinción entre partición primaria y partición lógica (no necesita particiones extendidas).
Otro concepto asociado al uso de discos duros es el de Formateo, aunque este nombre es más utilizado por la herramienta tradicional de MS-DOS para esta operación que por ser un nombre adecuado. En el mundo Unix se habla más bien de "crear sistemas de ficheros", lo que es más descriptivo y coherente.
Eso quiere decir que una partición de disco no es más que un trozo de superficie magnética donde puedes eventualmente guardar cosas. Si guardas varios ficheros, el Sistema Operativo necesitará alguna forma de saber dónde se guarda cada uno de ellos -además de algunas características como la fecha de modificación, permisos, etc.-; también es un servicio que se proporciona a los usuarios del SO, tanto humanos como a las aplicaciones del sistema. Tú guardas un documento en Documentos/trabajos/aprender_informática.txt, no entre los sectores 47567 y 47579. Es lo que se denomina Sistema de archivos. Uno de los más simples es FAT, que consiste simplemente en una lista de nombres de ficheros y su localización en el disco. Además de haberlo tratado en el artículo anterior, el artículo de la wikipedia es bastante razonable y no lo voy a replicar aquí.
Arrancando la máquina
Los computadores proporcionan una aplicación grabada en una memoria ROM que permite ejecutar algún Sistema Operativo. Básicamente se encarga de comprobar que las principales cosas funcionan -p.ej, memoria, discos...- y de ejecutar la aplicación que cargue el sistema de arranque del SO en memoria. Hecho esto, comienza la ejecución del Sistema Operativo en sí misma.Las Computadoras Personales (PC) solían traer una aplicación denominada BIOS (Basic In/out System, Sistema Básico de Entrada/Salida, otro nombre descriptivo), que hacía justamente eso: comprobaba que había un procesador, una memoria y algún dispositivo de entrada/salida: al menos un teclado, al menos un disco duro...
Hay un sector del disco duro denominado (de forma, también, apropiada) MBR (Master Boot Record, Registro Principal de Arranque) que es el primer sector del disco duro y que queda fuera de las particiones. En dicho registro se guarda la Tabla de particiones antes comentada y el programa que se encargará del arranque. En muchos computadores, esto consiste en una serie de instrucciones básicas para que el computador cargue el primer sector (también llamado, sector de arranque) de alguna partición, que eventualmente será, vaya, el sistema de arranque del Sistema Operativo.
Así que el último paso ejecutado por la BIOS es cargar en memoria el contenido del MBR.
Hoy las BIOS van siendo sustituidas por un nuevo sistema: EFI. Tal sistema pretende solventar algunas de las limitaciones de las BIOS, pero en realidad su tarea es la misma: comprobar los componentes principales, y cargar en memoria el arranque del Sistema Operativo o el Cargador de Arranque de turno.
En los sistemas EFI se puede indicar directamente qué se desea arrancar, sin necesidad de MBR; de todas formas, y por las dudas, EFI también permite usar MBR en lo que ellos llaman "modo híbrido".
También volveré sobre el arranque del sistema, que como he dicho merece su propia entrada.
lunes, 25 de marzo de 2013
Tu computadora y tú: hora de aprender (ii)
Hoy quiero quitarme de encima un concepto importante, para finalizar esta exposición más bien teórica que he denominado "amueblar la cabeza". Al igual que con la entrada anterior, se trata de asentar los conocimientos suficientes para que leer explicaciones de cualquier índole deje de resultar un buen sistema de tortura. Y es que acudiendo a otro gran dicho:
Sólo alguien que domina un tema en profundidad es capaz de explicarlo de forma que no lo entienda nadie
Definimos "Sistema Operativo" como una aplicación o grupo de ellas que funcionan de "interfaz" entre los usuarios y el computador físico, y nos quedamos así de contentos. Es una definición con una metáfora muy visual y clara, muy poderosa, y por eso es muy fácil de aceptar.
Descuidando el hecho de que no necesariamente todo el mundo sabe lo que es una Interfaz, el error realmente no es tal, sino una diferencia de concepto: ¿quién es el usuario, desde el punto de vista del Sistema Operativo?
El usuario, para aquellos que usamos computadores, es una persona física que utiliza el computador. Muchos Sistemas Operativos permiten tener cuentas de usuario, con sus opciones de configuración personal, su propio espacio para guardar documentos, etc. En tales sistemas, un usuario dado incluso puede tener una o varias cuentas, según sus necesidades.
Los informáticos no tenemos dudas con esta cuestión, ya que todos conocemos la historia de la computación lo suficiente para tener un buen punto de vista.
Hay que recordar que hubo un tiempo en que los computadores no disponían de Sistemas Operativos. Al principio, se les proporcionaba un programa en binario que deberían ejecutar; los primeros sistemas operativos simplemente eran una mejora de esto: en lugar de proporcionar un programa completo con todo lo que se debía hacer, simplemente ser proporcionaba una lista de tareas que el computador debía completar. Naturalmente, el computador debía de disponer de una aplicación para poder ejecutar tales tareas.
A partir de un momento dado, se pensó que era una pena que todos los recursos de un computador -memoria, uso del procesador, impresoras...- se dedicasen a la ejecución de tareas consecutivas. No tiene sentido, argumentaban, tener que esperar a que finalice una impresión -lenta, tediosamente lenta en la época- para ejecutar la siguiente operación de la lista. Así, los Sistemas Operativos fueron evolucionando. tiempo compartido, multiusuario, multipuesto.... a medida que aumentaban sus responsabilidades en el trabajo diario.
Con esto quiero decir que los desarrolladores de aplicaciones cada vez tenían que centrarse menos en lo que era común con otras aplicaciones que usasen el mismo computador. Los técnicos distinguimos Sistemas Operativos de propósito general (MS Windows, MacOS, GNU/Linux...) de los Sistemas Operativos de propósito específico (típicos de sistemas industriales).
Fijaos en el celebérrimo Windows de Microsoft: no trae soporte para CAD (Diseño Asistido por Computador). Son relativamente pocos los clientes que necesitan esto, así que los pocos que lo hagan instalarán la aplicación de turno (digamos, AutoCAD) y no se preocuparán más. Sin embargo, sí trae soporte para 3D, ya que asume que buena parte de las personas que usen Windows lo harán para jugar a juegos con 3D, más que porque de pronto haya un entusiasmo generalizado por diseñar escenas tridimensionales. Por su parte, Android incluye soporte para los sensores que incluyen los más modernos smartphones.
En sentido técnico, los usuarios de un Sistema Operativo son las aplicaciones desarrolladas para el mismo. Una persona real utiliza simplemente aplicaciones: una hoja de cálculo, un programa de diseño CAD, un reproductor multimedia. El Sistema Operativo simplemente proporciona una interfaz para poder utilizar dichas aplicaciones (un intérprete de comandos, una interfaz gráfica...). Hay aplicaciones específicas para tareas generales, tales como organizar archivos y configurar aspectos del sistema, que reciben el nombre de aplicaciones de sistema. En general, las aplicaciones del sistema forman parte del Sistema Operativo de turno, lo que explica la confusión.
Todo esto quiere decir que los únicos usuarios de un Sistema Operativo son las aplicaciones que haya o pueda haber en el mismo.
En informática, los Drivers son una forma de indicarle a un Sistema Operativo cómo funciona un dispositivo dado: un monitor, una tarjeta de sonido...
Pensemos en una impresora. Puedes abrir un documento de texto en tu suite ofimática y en un editor de textos simple. Escribe en ambos "Hola mundo".
En la suite ofimática el documento a imprimir contendrá información sobre el formato del texto, márgenes, etc. Por su parte, en el editor de textos el documento sólo incluirá la lista de caracteres que se quiere imprimir. El Sistema Operativo dispone de una operación para enviar documentos a una impresora. Para ello, convierte ambos documentos en documentos imprimibles y los coloca en una carpeta más o menos temporal en cola, de donde el sistema de impresión los irá tomando de uno en uno para ser impresos.
Sin embargo, hay infinidad de tipos de impresoras muy distintas entre sí. Hacer un Sistema Operativo que manejase todas sería una locura. En su lugar, se crean ficheros que le indicarán al Sistema Operativo como funciona cada una de ellas (cada marca, modelo o tipo) y en cada computador se instala simplemente el driver de las impresoras realmente disponibles.
Que tu impresora funcione o no en Windows, MacOS o GNU/Linux es cuestión de que alguien haya creado tal driver. Naturalmente, los más indicados para crear tales drivers son los fabricantes de dicha impresora.
Esto no es tan importante hoy, si bien es la causa de que lo más habitual sea que el hardware más reciente no funcione directamente en ningún Sistema Operativo hasta que se instale el driver de turno. Los desarrolladores del Sistema Operativo no pueden prever qué dispositivos van a a existir años después del desarrollo del Sistema Operativo. Esto puede cambiar en las actualizaciones del sistema de turno, por supuesto.
Eventualmente, algunos dispositivos son más estandarizados que otros, o al menos más parecidos a otros ya existentes. En tal caso, es más fácil obtener el soporte preciso; sin embargo, otros dispositivos son casi tan complejos como el propio computador, así que la disponibilidad de un driver para el mismo puede ser crucial. Piénsese en las tarjetas de vídeo, por ejemplo.
Leyendo esto alguien podría pensar que el mundo de la informática se simplificaría enormemente si los fabricantes siguiesen estándares o si hubiese más información al respecto. Bien, la mayoría de las empresas tienen esto como estrategia empresarial, y eso es difícil cambiarlo. De hecho, el movimiento OpenSource comenzó por un driver de una impresora. En realidad, buena parte de la nueva innovación tecnológica consiste en un continuo reinventar la rueda.
Para que un driver funcione, debe de estar cargado en memoria. En sistemas operativos modernos hay varios programas residentes que se encargan de utilizar determinados específicos. Por ejemplo, CUPS es un servicio de impresión estándar para Unix; otro buen ejemplo es udev, que es el sistema que utiliza Linux para cargar dinámicamente cualquier dispositivo que se conecte al computador: detecta que se conecta un dispositivo, qué dispositivo es y carga el driver adecuado si está disponible.
Tal vez hayas oído que los usuarios de MacOS o GNU/Linux se burlan de los "reinicios" de Windows. En MS-Windows, muchos de los drivers son cargados de forma estática, por lo que hay que reiniciar el sistema para que el núcleo cargue el driver de turno: da igual que sea la red, una tarjeta de vídeo nueva... incluso muchos de los ajustes de tales drivers requieren que el núcleo se cargue otra vez. Los dispositivos que no necesitan esta operación tienen incluso un nombre muy chulo: "plug and play" (enchufar y listo). Los sistemas basados en Unix, por su parte, disponen de mecanismos para cargar casi cualquier driver en cualquier momento, y por tanto rara vez necesitan ser reiniciados.
Cualquier Sistema Operativo ofrecerá a la persona que lo maneje una interfaz adecuada (al menos, al objeto del Sistema Operativo de turno). MS-DOS traía un Intérprete de Comandos (un nombre común en inglés para tales interfaces es shell); posteriormente se desarrolló un Entorno Gráfico para hacer uso de las capacidades gráficas de los (entonces) nuevos computadores y supuestamente hacer más fácil la vida de los usuarios. Buena parte de la historia moderna de Windows pasa por la necesidad de la empresa de hacerles creer a sus usuarios que su sistema es completamente gráfico, algo que sólo consiguió con la publicación de Windows XP. Por su parte, MacOS hasta su versión 9 no tenía tal intérprete y todo el sistema funcionaba de forma gráfica. Cosas de la vida, al sacar la versión 10 (en números latinos, X) decidieron cambiar a una versión de FreeBSD, con lo cual ahora disponen de al menos un shell al más común estilo Unix.
GNU/Linux, como FreeBSD y otros "Unix-like", utiliza una aproximación diferente. El sistema se arranca en modo texto o gráfico a voluntad del usuario. En realidad, estos sistemas ponen en marcha "servicios", donde el sistema gráfico o texto es en realidad uno más. Hasta hace bien poco, incluso, era muy habitual que una sesión gráfica GNU/Linux se arrancase con los servicios en modo texto y el servidor gráfico. Algunas distribuciones siguen haciéndolo así, proporcionando un servicio de login en una pantalla y un servicio gráfico en otra, pudiendo acceder a cualquiera de los dos modos con diferentes combinaciones de teclas.
Por ejemplo, varios usuarios pueden usar el sistema a la vez (al menos, en los sistemas multiusuario tales como GNU/Linux), así que el shell deberá permitir trabajar a tales usuarios sin que interfieran entre sí. Además, cada uno de ellos puede tener ajustes personalizados distintos de otros usuarios. Incluso es posible que la misma persona esté usando varias cuentas de usuario a la vez en el mismo sistema.
En estos sistemas, la ejecución de cualquier Intérprete de Comandos va precedida por algún sistema de autentificación del usuario. Los sistemas GNU/Linux hacen esto con las aplicaciones login (que permite a un usuario iniciar una sesión en modo texto) o su (que permite a un usuario cambiar a otro para efectuar una serie de tareas de forma temporal).
Los sistemas gráficos más populares disponen de herramientas para tener acceso al intérprete de comandos; en realidad, esas herramientas simulan un intérprete de comandos, y por ello no necesitan autentificación: se asume que el usuario ya realizó esa tarea cuando conectó con el sistema gráfico.
Baste de textos por hoy!! una buen sitio para leer sobre escritorios es la habitual wikipedia. En castellano: http://es.wikipedia.org/wiki/Entorno_de_escritorio; para quien no tema al inglés, http://en.wikipedia.org/wiki/Desktop_environment
Por supuesto, hay muchos tipos de ficheros: documentos del usuario, ficheros que representan a los dispositivos del sistema, el núcleo del sistema, cada driver...
Y hay muchas formas de organizar ficheros (se llama "Jerarquía de Ficheros"): por ejemplo, la mayoría de los sistemas utilizan unos ficheros especiales denominados Directorios o más modernamente por influencia de MS-Windows Carpetas. Estos ficheros pueden contener ficheros normales o bien otros ficheros especiales. Así, puedes tener un vídeo denominado caídaPorLasEscaleras.avi guardado en la carpeta Vídeos; esta carpeta a su vez puede estar guardada por ejemplo en otra denominada MisCosas.
Los sistemas basados en Unix utilizan una jerarquía completa. Hay una carpeta llamada raíz (y representada con la barra: / ) que contiene todas las demás carpetas o ficheros. Por su parte, MS-Windows dispone de una jerarquía incompleta. Cada dispositivo se denomina Unidad y se representa con una letra seguida de dos puntos (por ejemplo, el disco duro principal sería c: ) En cada dispositivo se agrupan las carpetas que contienen otras carpetas o ficheros. Nótese que en Unix la separación entre los nombres de carpetas es la barra de dividir, mientras que en MS-Windows es la barra invertida.
Cómo se guardan esas carpetas y ficheros en un dispositivo es tarea del Sistema de Archivos y hay un buen puñado de ellos. Para MS-Windows hay FAT y NTFS (aunque ahora trata de sacar otros para superar las limitaciones de ambos), mientras que otros sistemas disponen de ext, xfs, reiserfs, jfs, btrfs, zfs, y otros muchos.
Una anécdota: reiserfs es uno de los mejores sistemas de archivos en prestaciones cuando el sistema se compone de muchos ficheros relativamente pequeños. En su momento se desarrolló reiserfs4 para mejorar el desempeño en otros ambientes. Sin embargo, su popularidad descendió desde el momento en que su creador dio con los huesos en la cárcel por asesinar a su esposa. Si alguien pensaba que la informática era ajena a buena parte de las motivaciones (o simplemente de la estupidez) humanas, ésta es quizás la mejor prueba de que no es así.
Bien, si has llegado hasta aquí habrás pensado que para utilizar un dispositivo dado para almacenar ficheros, necesitas al menos dos drivers: el correspondiente al dispositivo de turno, y el correspondiente al sistema de archivos utilizado. Esa es justo la idea. Por otra parte, el Sistema de Archivos es a veces referido como Filesystem (Sistema de ficheros), aunque yo prefiero hablar en ese caso de Tipo de Sistema de Ficheros para evitar ambigüedades.
Básicamente, un Sistema de Archivos contiene información respecto a dónde se guarda fisicamente, en el dispositivo de turno, cada fichero (y atributos tales como su dueño, fecha de creación, etc.). Eliminar un fichero consiste realmente en borrar esa entrada del Sistema de Archivos, por lo que en realidad no se borra nada, simplemente el sistema olvida dónde estaba tal fichero. Por ejemplo, FAT simplemente cambia la primera letra del nombre del fichero por un interrogante, aprovechando que para el sistema ése no será un nombre de fichero válido. La única forma de hacer que el contenido de un fichero deje de estar disponible es sobreescribirlo, guardando otra información exactamente en el mismo sitio. Incluso por curiosidades físicas en la mayor parte de dispositivos se puede recuperar el contenido de un fichero sobreescrito varias veces. Es laborioso y caro, pero posible.
Sólo alguien que domina un tema en profundidad es capaz de explicarlo de forma que no lo entienda nadie
El Sistema Operativo, el Hardware y el dolor de cabeza
Es notable como los usuarios de jerga técnica asimilamos conceptos ligeramente erróneos, sin percatarnos de que nosotros entendemos los matices equivocados, pero que los usuarios no técnicos pueden no estar al tanto de ellos.Definimos "Sistema Operativo" como una aplicación o grupo de ellas que funcionan de "interfaz" entre los usuarios y el computador físico, y nos quedamos así de contentos. Es una definición con una metáfora muy visual y clara, muy poderosa, y por eso es muy fácil de aceptar.
Descuidando el hecho de que no necesariamente todo el mundo sabe lo que es una Interfaz, el error realmente no es tal, sino una diferencia de concepto: ¿quién es el usuario, desde el punto de vista del Sistema Operativo?
El usuario, para aquellos que usamos computadores, es una persona física que utiliza el computador. Muchos Sistemas Operativos permiten tener cuentas de usuario, con sus opciones de configuración personal, su propio espacio para guardar documentos, etc. En tales sistemas, un usuario dado incluso puede tener una o varias cuentas, según sus necesidades.
Los informáticos no tenemos dudas con esta cuestión, ya que todos conocemos la historia de la computación lo suficiente para tener un buen punto de vista.
Hay que recordar que hubo un tiempo en que los computadores no disponían de Sistemas Operativos. Al principio, se les proporcionaba un programa en binario que deberían ejecutar; los primeros sistemas operativos simplemente eran una mejora de esto: en lugar de proporcionar un programa completo con todo lo que se debía hacer, simplemente ser proporcionaba una lista de tareas que el computador debía completar. Naturalmente, el computador debía de disponer de una aplicación para poder ejecutar tales tareas.
A partir de un momento dado, se pensó que era una pena que todos los recursos de un computador -memoria, uso del procesador, impresoras...- se dedicasen a la ejecución de tareas consecutivas. No tiene sentido, argumentaban, tener que esperar a que finalice una impresión -lenta, tediosamente lenta en la época- para ejecutar la siguiente operación de la lista. Así, los Sistemas Operativos fueron evolucionando. tiempo compartido, multiusuario, multipuesto.... a medida que aumentaban sus responsabilidades en el trabajo diario.
Con esto quiero decir que los desarrolladores de aplicaciones cada vez tenían que centrarse menos en lo que era común con otras aplicaciones que usasen el mismo computador. Los técnicos distinguimos Sistemas Operativos de propósito general (MS Windows, MacOS, GNU/Linux...) de los Sistemas Operativos de propósito específico (típicos de sistemas industriales).
Fijaos en el celebérrimo Windows de Microsoft: no trae soporte para CAD (Diseño Asistido por Computador). Son relativamente pocos los clientes que necesitan esto, así que los pocos que lo hagan instalarán la aplicación de turno (digamos, AutoCAD) y no se preocuparán más. Sin embargo, sí trae soporte para 3D, ya que asume que buena parte de las personas que usen Windows lo harán para jugar a juegos con 3D, más que porque de pronto haya un entusiasmo generalizado por diseñar escenas tridimensionales. Por su parte, Android incluye soporte para los sensores que incluyen los más modernos smartphones.
En sentido técnico, los usuarios de un Sistema Operativo son las aplicaciones desarrolladas para el mismo. Una persona real utiliza simplemente aplicaciones: una hoja de cálculo, un programa de diseño CAD, un reproductor multimedia. El Sistema Operativo simplemente proporciona una interfaz para poder utilizar dichas aplicaciones (un intérprete de comandos, una interfaz gráfica...). Hay aplicaciones específicas para tareas generales, tales como organizar archivos y configurar aspectos del sistema, que reciben el nombre de aplicaciones de sistema. En general, las aplicaciones del sistema forman parte del Sistema Operativo de turno, lo que explica la confusión.
Todo esto quiere decir que los únicos usuarios de un Sistema Operativo son las aplicaciones que haya o pueda haber en el mismo.
Drivers
Driver significa "conductor"; mas en este contexto, no es la imagen personalizada de alguien que conduce un coche, sino más bien en la labor de conducir el propio coche propiamente dicha. El conductor se encarga de guiar el coche, decirle cómo y por dónde tiene que ir.En informática, los Drivers son una forma de indicarle a un Sistema Operativo cómo funciona un dispositivo dado: un monitor, una tarjeta de sonido...
Pensemos en una impresora. Puedes abrir un documento de texto en tu suite ofimática y en un editor de textos simple. Escribe en ambos "Hola mundo".
En la suite ofimática el documento a imprimir contendrá información sobre el formato del texto, márgenes, etc. Por su parte, en el editor de textos el documento sólo incluirá la lista de caracteres que se quiere imprimir. El Sistema Operativo dispone de una operación para enviar documentos a una impresora. Para ello, convierte ambos documentos en documentos imprimibles y los coloca en una carpeta más o menos temporal en cola, de donde el sistema de impresión los irá tomando de uno en uno para ser impresos.
Sin embargo, hay infinidad de tipos de impresoras muy distintas entre sí. Hacer un Sistema Operativo que manejase todas sería una locura. En su lugar, se crean ficheros que le indicarán al Sistema Operativo como funciona cada una de ellas (cada marca, modelo o tipo) y en cada computador se instala simplemente el driver de las impresoras realmente disponibles.
Que tu impresora funcione o no en Windows, MacOS o GNU/Linux es cuestión de que alguien haya creado tal driver. Naturalmente, los más indicados para crear tales drivers son los fabricantes de dicha impresora.
Esto no es tan importante hoy, si bien es la causa de que lo más habitual sea que el hardware más reciente no funcione directamente en ningún Sistema Operativo hasta que se instale el driver de turno. Los desarrolladores del Sistema Operativo no pueden prever qué dispositivos van a a existir años después del desarrollo del Sistema Operativo. Esto puede cambiar en las actualizaciones del sistema de turno, por supuesto.
Eventualmente, algunos dispositivos son más estandarizados que otros, o al menos más parecidos a otros ya existentes. En tal caso, es más fácil obtener el soporte preciso; sin embargo, otros dispositivos son casi tan complejos como el propio computador, así que la disponibilidad de un driver para el mismo puede ser crucial. Piénsese en las tarjetas de vídeo, por ejemplo.
Leyendo esto alguien podría pensar que el mundo de la informática se simplificaría enormemente si los fabricantes siguiesen estándares o si hubiese más información al respecto. Bien, la mayoría de las empresas tienen esto como estrategia empresarial, y eso es difícil cambiarlo. De hecho, el movimiento OpenSource comenzó por un driver de una impresora. En realidad, buena parte de la nueva innovación tecnológica consiste en un continuo reinventar la rueda.
Para que un driver funcione, debe de estar cargado en memoria. En sistemas operativos modernos hay varios programas residentes que se encargan de utilizar determinados específicos. Por ejemplo, CUPS es un servicio de impresión estándar para Unix; otro buen ejemplo es udev, que es el sistema que utiliza Linux para cargar dinámicamente cualquier dispositivo que se conecte al computador: detecta que se conecta un dispositivo, qué dispositivo es y carga el driver adecuado si está disponible.
Tal vez hayas oído que los usuarios de MacOS o GNU/Linux se burlan de los "reinicios" de Windows. En MS-Windows, muchos de los drivers son cargados de forma estática, por lo que hay que reiniciar el sistema para que el núcleo cargue el driver de turno: da igual que sea la red, una tarjeta de vídeo nueva... incluso muchos de los ajustes de tales drivers requieren que el núcleo se cargue otra vez. Los dispositivos que no necesitan esta operación tienen incluso un nombre muy chulo: "plug and play" (enchufar y listo). Los sistemas basados en Unix, por su parte, disponen de mecanismos para cargar casi cualquier driver en cualquier momento, y por tanto rara vez necesitan ser reiniciados.
Humanos y computadores
Los Sistemas Operativos que he denominado de propósito general suelen tener como objeto el ser utilizado por personas. Se espera que una persona arranque el sistema de turno y ejecute las aplicaciones que necesite. Eventualmente, parará el sistema cuando no lo necesite.Cualquier Sistema Operativo ofrecerá a la persona que lo maneje una interfaz adecuada (al menos, al objeto del Sistema Operativo de turno). MS-DOS traía un Intérprete de Comandos (un nombre común en inglés para tales interfaces es shell); posteriormente se desarrolló un Entorno Gráfico para hacer uso de las capacidades gráficas de los (entonces) nuevos computadores y supuestamente hacer más fácil la vida de los usuarios. Buena parte de la historia moderna de Windows pasa por la necesidad de la empresa de hacerles creer a sus usuarios que su sistema es completamente gráfico, algo que sólo consiguió con la publicación de Windows XP. Por su parte, MacOS hasta su versión 9 no tenía tal intérprete y todo el sistema funcionaba de forma gráfica. Cosas de la vida, al sacar la versión 10 (en números latinos, X) decidieron cambiar a una versión de FreeBSD, con lo cual ahora disponen de al menos un shell al más común estilo Unix.
GNU/Linux, como FreeBSD y otros "Unix-like", utiliza una aproximación diferente. El sistema se arranca en modo texto o gráfico a voluntad del usuario. En realidad, estos sistemas ponen en marcha "servicios", donde el sistema gráfico o texto es en realidad uno más. Hasta hace bien poco, incluso, era muy habitual que una sesión gráfica GNU/Linux se arrancase con los servicios en modo texto y el servidor gráfico. Algunas distribuciones siguen haciéndolo así, proporcionando un servicio de login en una pantalla y un servicio gráfico en otra, pudiendo acceder a cualquiera de los dos modos con diferentes combinaciones de teclas.
Interfaz de Intérprete de Comandos
La forma más simple de utilizar un computador es pidiéndole a una aplicación interactiva que ejecute las tareas que necesitamos. Como he dicho antes, estas aplicaciones son denominadas normalmente en inglés con shell o command shell. Esto es porque la aplicación suele tener que hacer mucho más que discutir con la persona que lo maneja.Por ejemplo, varios usuarios pueden usar el sistema a la vez (al menos, en los sistemas multiusuario tales como GNU/Linux), así que el shell deberá permitir trabajar a tales usuarios sin que interfieran entre sí. Además, cada uno de ellos puede tener ajustes personalizados distintos de otros usuarios. Incluso es posible que la misma persona esté usando varias cuentas de usuario a la vez en el mismo sistema.
En estos sistemas, la ejecución de cualquier Intérprete de Comandos va precedida por algún sistema de autentificación del usuario. Los sistemas GNU/Linux hacen esto con las aplicaciones login (que permite a un usuario iniciar una sesión en modo texto) o su (que permite a un usuario cambiar a otro para efectuar una serie de tareas de forma temporal).
Los sistemas gráficos más populares disponen de herramientas para tener acceso al intérprete de comandos; en realidad, esas herramientas simulan un intérprete de comandos, y por ello no necesitan autentificación: se asume que el usuario ya realizó esa tarea cuando conectó con el sistema gráfico.
Interfaz de Entorno Gráfico
La idea tras los escritorios gráficos es similar a la de los shell anteriores, pero con muchas diferencias. Todas ellas se resumen en la plasmación de la metáfora de un "escritorio" convencional. Así, cualquier interfaz de este tipo proporcionará un fondo en el que se disponen los distintos elementos, un organizador de ficheros, una forma gráfica de arrancar las distintas aplicaciones disponibles... los sistemas más populares utilizan el concepto de "ventana" para contener cada aplicación salvo el escritorio en sí (que es más una suerte de fondo).Baste de textos por hoy!! una buen sitio para leer sobre escritorios es la habitual wikipedia. En castellano: http://es.wikipedia.org/wiki/Entorno_de_escritorio; para quien no tema al inglés, http://en.wikipedia.org/wiki/Desktop_environment
Archivos y ficheros
Es común ver un uso intercambiable entre ambos, lo que a veces despista mucho. Archivo se refiere más a la organización de la información, mientras que Fichero se refiere a cada documento concreto. Podríamos pensar en un archivo como la suma de todos los ficheros disponibles en el sistema.Por supuesto, hay muchos tipos de ficheros: documentos del usuario, ficheros que representan a los dispositivos del sistema, el núcleo del sistema, cada driver...
Y hay muchas formas de organizar ficheros (se llama "Jerarquía de Ficheros"): por ejemplo, la mayoría de los sistemas utilizan unos ficheros especiales denominados Directorios o más modernamente por influencia de MS-Windows Carpetas. Estos ficheros pueden contener ficheros normales o bien otros ficheros especiales. Así, puedes tener un vídeo denominado caídaPorLasEscaleras.avi guardado en la carpeta Vídeos; esta carpeta a su vez puede estar guardada por ejemplo en otra denominada MisCosas.
Los sistemas basados en Unix utilizan una jerarquía completa. Hay una carpeta llamada raíz (y representada con la barra: / ) que contiene todas las demás carpetas o ficheros. Por su parte, MS-Windows dispone de una jerarquía incompleta. Cada dispositivo se denomina Unidad y se representa con una letra seguida de dos puntos (por ejemplo, el disco duro principal sería c: ) En cada dispositivo se agrupan las carpetas que contienen otras carpetas o ficheros. Nótese que en Unix la separación entre los nombres de carpetas es la barra de dividir, mientras que en MS-Windows es la barra invertida.
Cómo se guardan esas carpetas y ficheros en un dispositivo es tarea del Sistema de Archivos y hay un buen puñado de ellos. Para MS-Windows hay FAT y NTFS (aunque ahora trata de sacar otros para superar las limitaciones de ambos), mientras que otros sistemas disponen de ext, xfs, reiserfs, jfs, btrfs, zfs, y otros muchos.
Una anécdota: reiserfs es uno de los mejores sistemas de archivos en prestaciones cuando el sistema se compone de muchos ficheros relativamente pequeños. En su momento se desarrolló reiserfs4 para mejorar el desempeño en otros ambientes. Sin embargo, su popularidad descendió desde el momento en que su creador dio con los huesos en la cárcel por asesinar a su esposa. Si alguien pensaba que la informática era ajena a buena parte de las motivaciones (o simplemente de la estupidez) humanas, ésta es quizás la mejor prueba de que no es así.
Bien, si has llegado hasta aquí habrás pensado que para utilizar un dispositivo dado para almacenar ficheros, necesitas al menos dos drivers: el correspondiente al dispositivo de turno, y el correspondiente al sistema de archivos utilizado. Esa es justo la idea. Por otra parte, el Sistema de Archivos es a veces referido como Filesystem (Sistema de ficheros), aunque yo prefiero hablar en ese caso de Tipo de Sistema de Ficheros para evitar ambigüedades.
Básicamente, un Sistema de Archivos contiene información respecto a dónde se guarda fisicamente, en el dispositivo de turno, cada fichero (y atributos tales como su dueño, fecha de creación, etc.). Eliminar un fichero consiste realmente en borrar esa entrada del Sistema de Archivos, por lo que en realidad no se borra nada, simplemente el sistema olvida dónde estaba tal fichero. Por ejemplo, FAT simplemente cambia la primera letra del nombre del fichero por un interrogante, aprovechando que para el sistema ése no será un nombre de fichero válido. La única forma de hacer que el contenido de un fichero deje de estar disponible es sobreescribirlo, guardando otra información exactamente en el mismo sitio. Incluso por curiosidades físicas en la mayor parte de dispositivos se puede recuperar el contenido de un fichero sobreescrito varias veces. Es laborioso y caro, pero posible.
domingo, 24 de marzo de 2013
Tu computadora y tú: hora de aprender (i)
El largo camino de miles de millas comienza con un solo paso.
Había pensado comenzar esta entrada con algo del estilo de "... Ahora, reinicia tu computador y...", y vaya, primeros problemas. Si lo haces inmediatamente, no leerás el resto de la entrada; vale, puedes imprimirlo... si tienes impresora (¡¡papel y tinta!!); o puede que estés viendo el blog desde un móvil de estos supermodernos... en fin, que sin pretenderlo he dado con el primer paradigma que quiero exponer: aunque sea cierto que cualquier tecnología avanzada (como establece la Tercera Ley de Clarke) es indistinguible de la magia, lo cierto es que la tecnología, por sí sola, no hace milagros.
En estas y otras entradas pretendo introducir la informática (real) en personas a las que interese este tema, pero que por una u otra razón no han aprendido. Esto sirve para aprovechar y redondear algunos artículos anteriores del blog, en especial los referidos a Internet.
El otro paradigma, y el que guiará todo lo dicho hoy, es
si bien es cierto que la informática para un usuario es fácil, también lo es que nadie nace aprendido.Al igual que en cualquier otra disciplina, el resultado obtenido dependerá principalmente del tesón y esfuerzo dedicado a su aprendizaje. De hecho, los Hackers suelen verse reflejados en los grandes maestros de las artes o las ciencias. Es la dedicación, el entusiasmo y el inmenso trabajo durante mucho tiempo lo que te permite ser un maestro en tales disciplinas, y no podía ser menos para llegar a ser todo un hacker.
Mas no es el objetivo conseguir que el lector devenga hacker. Si quiere hacerlo, puede serguir los consejos al uso que dan ellos mismos.
El principio
Como para poder aprender cualquier cosa, debemos comenzar por amueblar nuestra cabeza. Y es que no hay disciplina cuyo dominio no implique el conocimiento de un buen número de conceptos e ideas.
En informática eso se resume en que el aprendiz debe de aspirar a entender cosas como el sistema numérico binario, un poco de arquitectura de computadores, alguna dosis de programación... y es donde el aprendiz inglés toma mucha ventaja sobre el español y otros (salvo, sorprendentemente, sobre los hindúes!). Los nombres tienen significado, y el aprendiz que domine inglés puede leer/escuchar un nombre y en su cerebro se formará ya la metáfora apropiada: una sencilla descripción del concepto técnico entonces será suficiente para su comprensión casi eterna.
Pensemos en un ejemplo muy básico y sencillo: el bit. En inglés, la palabra bit designa a un pedazo minúsculo, mínimo de algo. Aplicado a la informática, un bit es la unidad de información mínima, y se representa con un cero o con un uno. Es la base del sistema numérico binario (que sólo tiene esos dos números para combinar, a diferencia del decimal, por ejemplo, que tiene 10). Uno/Cero. Perfecto para representar lo mínimo que puedes saber de algo: verdadero/falso; sí/no. Que de paso es la base de nuestro sistema de lógica.
Piensa en ello un momento: ¿llueve? No importa si apenas cae un poquito de llovizna o te puedes ahogar en una tormenta tropical; tampoco importa si ha llovido o si parece muy probable que vaya a llover pronto. ¿Llueve? ¿sí o no?
El sistema binario es muy curioso. ¿uno más uno? 10, por supuesto. ¿y uno por uno? uno, como era de esperar. De esta manera de contar diremos más cosas después.
Sigamos con otra palabra: word (palabra). Una palabra es un conjunto de letras, y una word es un conjunto de bits. La diferencia entre la palabra usual del lenguaje y la informática es que aquella puede tener una o varias letras, mientras que la palabra informática sólo tiene un número dado de bits. Y dicho número depende de la arquitectura del sistema informático de turno. Pueden ser 8, 16, 32, etc. Que recuerde, los PC modernos que utilizamos la mayoría de las personas hoy por hoy tienen palabras de 16 bits (y forman dobles, triples o cuádruples palabras). Pensad que la comunicación es a base de palabras, y veréis la misma metáfora que instintivamente ve un inglés al leer el vocablo informático word
En algunos libros de informática se hacen un lío con los bytes. Un byte es un grupo de 8 bits, que no es casualidad que sea una potencia de 2 (23, para ser más precisos). En algunos equipos un byte podría ser equivalente a una palabra, pero sólo en equipos de 8 bits.
El arte de contar
El sistema binario es la base de la informática. Usa dos símbolos (0 y 1) y tiene una serie de propiedades curiosas. Destaca el hecho de que sólo necesitas dos operaciones para poder hacer cualquier operación aritmética: el complemento (la capacidad de cambiar de un valor al opuesto) y la suma. Sí, en binario ¡las restas y divisiones no son más que sumas!!
En la wikipedia tratan bastante bien algunas cuestiones informáticas, y el artículo sobre el sistema binario tiene buena pinta. Leedlo y tratad de aprender algo sobre algo tan curioso. No dejéis de ver la curiosa y antigua historia de este sistema de numeración. También es curioso como las mismas propiedades del sistema binario fueron empleadas en otros tiempos, como este sistema de multiplicación del antiguo Egipto.
Breve historia de los computadores
En los textos informáticos se suele hablar de cuatro generaciones (y una quinta que sería la "moderna") para agrupar las características básicas de los computadores informáticos a lo largo de los últimos 60 años.
Hay cierto acuerdo de que el primer computador se desarrolló en la Segunda Guerra Mundial para descifrar el código de los mensajes alemanes; no obstante, la llamada "Primera Generación" (y con ella, el inicio del tiempo informático) la suele marcar la creación de ENIAC en 1941. A esta era de enormes computadores la sigue el desarrollo de los llamados lenguajes de "Alto Nivel" que marcan la llamada "Segunda Generación". En la Primera Generación, los computadores son programados en sistema binario o en ensamblador (un código nemotécnico para abreviar las instrucciones binarias).
En la década de 1950 se desarrollan los primeros lenguajes más próximos al lenguaje natural (inglés). Dichos lenguajes, como es de esperar, permiten simplificar la programación de los computadores. Esto lleva a desarrollar computadoras de propósito general. La generación concluye cuando IBM presenta la serie 360.
La "Segunda Generación" llega con el uso de los transistores. Esto hace que los nuevos computadores sean más baratos, rápidos y eficientes.
La "Tercera Generación" tiene como protagonista el desarrollo del circuito integrado, que acabará posibilitando los primeros microchips, que a su vez sientan las bases de los mucho después llamados "computadores personales".
El salto de la tercera generación a la cuarta está marcado por Unix. En esos tiempos, los computadores típicos son en realidad redes formadas por una potente máquina central a la que se conectan los usuarios desde otros computadores o bien desde terminales: los terminales constaban del equipamento mínimo para conectarse a una red que permitiese acceder al servidor donde el usuario tenía una cuenta de acceso.
Los microprocesadores permiten que los computadores personales rompan esa dependencia de un gran servidor central, posibilitando que cualquier usuario utilice un computador de forma aislada, ya fuese en su casa, en el trabajo, etc. Es la hora de la "Cuarta Generación": la era del "Computador Personal". En los tiempos actuales, tenemos un montón de computadoras personales (y otros dispositivos computadores: tabletas, smartphones,...) conectados entre sí a través de la "Red de Redes": InterNET.
Dicho esto, puede que un lector avisado haya pensado que el uso de un smartphone con sus applets que utilizan servicios de distintos proveedores a través de internet es curiosamente similar al de los antiguos terminales Unix. Bien, muy bien ;)
Cosas de la arquitectura
Un breve esbozo de la arquitectura de un computador tenderá a dejarse fuera un buen puñado de cosas. Pero eso no es excusa para tratar de formarse una imagen mental de cómo funciona un computador.
En un principio, tenemos un computador que se compone de una memoria (RAM), un procesador (microprocesador) que a su vez se compone de dos elementos (la Unidad de Control que como es de esperar controla a todo el sistema, y la Unidad Aritmético-Lógica, que se encarga de efectuar las operaciones aritméticas y lógicas que forman la base de la informática), y una serie de elementos denominados periféricos, que sirven para que el mundo se comunique con la memoria y el procesador: un teclado para escribir blogs, una pantalla para leer blogs, un ratón, una impresora, un disco duro donde guardar las cosas, un pendrive para llevarlas por ahí...
Esto se llama "Arquitectura Von-Newman" y forma la base del diseño de la práctica totalidad de los computadores de hoy en día. Lo más importante de la misma es comprender que la información que maneja cualquier computador debe de estar cargada previamente en la memoria principal del sistema. Aquí también hay libros que se lían mucho, por el hecho de que en un computador puede haber varios procesadores que se complementan entre sí, y muchos computadores pueden colaborar en un sistema único. En fin.
Cargada es de esos términos informáticos con un significado preciso: cargar algo es copiar ese algo en la memoria principal. De paso, en la jerga informática es frecuente utilizar la preposición a en lugar de en. Así, muchas veces se dirá "copiar algo a Memoria". En mi opinión, es una costumbre que pretende clarificar el sentido en el que se efectúa la acción cuando se efectúa un movimiento de información: copias algo del disco, copias algo al disco.
Los computadores modernos utilizan muchas memorias, aunque la Principal solo es una de ellas. La memoria de esta época es quizás la DDR SDRAM. Por supuesto, termina en RAM (Random Access Memory, que significa que acceder a cualquier parte de ella lleva lo mismo que acceder a cualquier otra parte). Después añadiré un matiz sobre las tarjetas de vídeo.
Otra memoria importante es la ROM. Esta es una memoria en la que el fabricante añade lo imprescindible (y a veces alguna cosa más) para arrancar un computador, o mejor dicho, para arrancar un Sistema Operativo. Hay muchos tipos: EEPROM, EFI... Incluso algunos computadores o smartphones pueden usar una memoria flash para esto.
El proceso de arranque de un computador es el que sigue: al encender, comienza a circular electricidad por el sistema: se ejecuta entonces lo alojado en la memoria ROM de turno, que suele consistir en un programa de comprobación del hardware mínimo y un sistema para ejecutar lo que quiera que se encuentre en el principio del disco duro (o del DVD, etc.). Los sistemas EFI/UEFI lo que hacen es cargar lo que exista en la partición EFI del disco duro de turno.
Este "lo que quiera" es alguna forma de "cargador de arranque", o sea, un programa que simplemente permite arrancar uno o varios Sistemas Operativos. Una instalación por defecto de Windows oculta este cargador, haciendo que el usuario crea que se carga directamente.
Del arranque se hablará en su momento de forma más extensa (se merece su propio artículo, o mejor dicho, varios de ellos :) ).
Queda por contar el matiz respecto a las tarjetas de vídeo. Un computador moderno utiliza varios elementos que por derecho propio consituyen a su vez otros computadores: constan de memoria y procesador. Los que se utilizan desde hace más tiempo son las llamadas "tarjetas de sonido" y "tarjetas de vídeo". En el caso de éstas, la tarea de mostrar vídeo es tan onerosa para el sistema que fueron incorporándose cada vez procesadores más potentes acompañados de cantidades cada vez mayores. A su vez, los procesadores fueron mejorando, tanto que pueden ser tan potentes como los procesadores estándar utilizados hace pocos años. Y en las gamas "altas", puede que incluso sean más potentes.
Y para finalizar la entrada: en el último párrafo utilizo la palabra procesador de forma deliverada, para asimilar su función dentro de la arquitectura de un computador. Sin embargo, el procesador de un computador personal suele denominarse "microprocesador", al ir integrado en un solo chip de tamaño reducido. A veces, el mundo de los computadores personales y portátiles es denominado por este motivo "microinformática".
Vale, no he prometido que no sería un rollo ;)
martes, 28 de febrero de 2012
InterNET: Red de Redes. y V La red en el mundo
En las entradas anteriores de este diario he tratado de dar una visión razonablemente realista del funcionamiento de InterNET, evitando los detalles técnicos. El lector interesado en tales detalles encontrará abundante documentación tanto en la Wikipedia como en los más diversos manuales al alcance de una simple búsqueda con cualquier buscador al uso (en España, esto casi es sinónimo de Google, e incluso se usa como verbo: googlear).
He hecho incapié varias veces de forma intencionada en los orígenes libres de las diversas tecnologías relacionadas con InterNET: sólo Unix ha sido objeto de muchas licencias; la actual está en propiedad de Novell, mientras que distintos fabricantes mantienen las licencias de sus diversas implementaciones.
Solventar los problemas con esas licencias está en el origen de GNU/Linux, así como también de FreeBSD (que a la postre no deja de ser el origen de la actual implementación de Mac OS).
El transcurso de la breve historia de la Ciencia Informática está marcado por los diversos tira y afloja de tres participantes: por un lado, los usuarios, que hasta poco eran técnicos informáticos liderados por hackers; por otro lado está la Industria, siempre pendiente del beneficio del accionista o del consejero de turno; y por otro lado los diversos estados y organizaciones gubernamentales, que tratan de encajar en la filosofía de InterNET o de hacer que InterNET encaje en su filosofía, dependiendo de los distintos responsables de turno.
El ejemplo más nítido de esto es GNU/Linux. Hoy es el pilar de la red, ya que la mayor parte del tráfico de la misma pasa por servidores equipados con alguna versión. En sí mismo, GNU fue la respuesta al intento de la industria de monopolizar los sistemas operativos que usarían los usuarios; sin embargo, esa misma industria adoptó GNU/Linux con naturalidad en cuanto alcanzó la madurez suficiente. Hoy, la inmensa mayoría del código de Linux es aportado y está soportado por varias grandes empresas (IBM, Red Hat y otras).
Algunos estados y organizaciones supraestatales tratan de favorecer al software libre para garantizar una red que proteja a sus usuarios y ciudadanos, mientras que otros niveles de las mismas administraciones se resisten a facilitar el uso de estos sistemas. No hace mucho en la administración gallega se usaba SUSE Linux Enterprise en el área educativa; sin embargo, los educadores que quisiesen usar el sistema fuera del entorno laboral debían hacer uso de Internet Explorer.
De forma adicional, en España conectarse a InterNET para un usuario doméstico es casi sinónimo de aceptar alguna de las ofertas de los poco competitivos operadores telefónicos al uso. Cualquier otra alternativa es brutalmente cara. Entre los inconvenientes de la legislación actual, la prohibición del acceso a InterNET a través de redes Wifi públicas (o compartir la conexión con los veciones) lastran la universalidad del acceso a InterNET.
Para acabar de complicar el panorama surgen con fuerza un nuevo agente con sus propios intereses: la industria audiovisual, fundamentalmente a través de las entidades "gestoras de derechos". La simplicidad para compartir información a través de la red es natural enemigo de aquellos que viven de vender información o contenidos. Se reeditan luchas comerciales que recuerdan a la del formato de vídeo VHS con el formato Beta; y no se queda ahí, sino que se intenta repetir la vergonzosa experiencia del desencriptado para el DVD-vídeo.
La locura es tal que se demonizan protocolos de distribución de mensajes por la red como el P2P que pueden ayudar a que la red funcione mucho mejor y de forma más homogénea, en lugar de depender tanto de la infraestructura. Para los habitantes del primer mundo (o de las ciudades, en España) esto no es cuestión relevante, pero para el resto de los usuarios no es baladí.
Las últimas líneas de este esbozo las dibujan las entidades bancarias y las grandes distribuidoras, que ven el negocio de poder simplificar e incluso prescindir de buena parte de sus oficinas físicas, por lo que hacen incapié en la seguridad informática; sin embargo, para ello utilizan software de dudosa fiabilidad en el mejor de los casos, empujando a sus usuarios a utilizar el mismo software.
¿Y qué es del usuario en todo este lío? la explosión del mercado informático doméstico fue de la mano del PC equipado con Windows. El usuario desconoce (y la mayoría de veces tampoco le preocupa demasiado) qué sistema o aplicaciones usa, y mucho menos los términos de licencia subrealistas que se emplean en el sector. Al usuario rara vez le preocupan sus derechos o el funcionamiento de InterNET, y llegado el momento de preocuparse rara vez conoce los rudimentos necesarios para tomar partido. El mismo usuario puede conectarse con Windows en su casa o con su Iphone en el autobús para quejarse de que una ley determinada ataca la neutralidad de la Red, para luego participar en un ataque DoS (Denegación de Servicio, coordinarse con otra gente para efectuar muchas peticiones a un servidor para colapsarlo) para supuestamente defender dicha neutralidad. Al usuario ni siquiera se le pasará por la cabeza que colapsar un servidor como acto de protesta vulnera la libertad de expresión de los propietarios de dicho servidor: una de las reglas más tradicionales y respetables de Netiqueta (también vulnera la regla de no ocupar ancho de banda que puedan necesitar otros).
Por un lado, el usuario entrega la libertad que podría suponer la Red para beneficio de empresas multinacionales y ciertas administraciones; por otro lado, teme el uso que aquéllos puedan hacer para coartar su misma libertad. Es curioso, pero pocas veces se escucha algo de autocrítica en esta cuestión, y es lógico. La mayoría de iniciativas de defensa de la neutralidad de la red parten de promotores y entusiastas del software libre, quienes disponen de herramientas para hacer un uso efectivo de la Red. El problema que no vemos es que es fácil atacar la independencia y neutralidad de la Red, pero sólo porque la inmensa mayoría de usuarios no dispone de tales herramientas, e incluso en su mayoría las desconocen por concreto; o bien usan herramientas que los privan de cualquier derecho sobre su propia información, tales como el Messenger de Microsoft, o el Whatsapp de la empresa homónima.
La telefonía móvil ha supuesto desde siempre un ataque a la neutralidad de la Red, o al menos desde que permitió conectarse a la misma. Tras los nombres como Wap, 3G o la inminente 4G se esconden políticas comerciales para decidir qué contenidos de la red son accesibles para el usuario o cómo debe de emplearla. Pocos reconocerán que dichas redes no son más que limitaciones al UMTS desarrollado hace ya 20 años.
La privacidad se consigue con cifrado; la neutralidad, con tecnología abierta. Y es imprescindible también no dejar de vigilar las leyes que quieren cercenar InterNET para el servicio de unos cuantos burócratas y una pandilla de consejeros de grandes empresas. Es el único camino para que la Red de Redes llegue a desempeñar el papel al que está llamada en la sociedad humana.
He hecho incapié varias veces de forma intencionada en los orígenes libres de las diversas tecnologías relacionadas con InterNET: sólo Unix ha sido objeto de muchas licencias; la actual está en propiedad de Novell, mientras que distintos fabricantes mantienen las licencias de sus diversas implementaciones.
Solventar los problemas con esas licencias está en el origen de GNU/Linux, así como también de FreeBSD (que a la postre no deja de ser el origen de la actual implementación de Mac OS).
El transcurso de la breve historia de la Ciencia Informática está marcado por los diversos tira y afloja de tres participantes: por un lado, los usuarios, que hasta poco eran técnicos informáticos liderados por hackers; por otro lado está la Industria, siempre pendiente del beneficio del accionista o del consejero de turno; y por otro lado los diversos estados y organizaciones gubernamentales, que tratan de encajar en la filosofía de InterNET o de hacer que InterNET encaje en su filosofía, dependiendo de los distintos responsables de turno.
El ejemplo más nítido de esto es GNU/Linux. Hoy es el pilar de la red, ya que la mayor parte del tráfico de la misma pasa por servidores equipados con alguna versión. En sí mismo, GNU fue la respuesta al intento de la industria de monopolizar los sistemas operativos que usarían los usuarios; sin embargo, esa misma industria adoptó GNU/Linux con naturalidad en cuanto alcanzó la madurez suficiente. Hoy, la inmensa mayoría del código de Linux es aportado y está soportado por varias grandes empresas (IBM, Red Hat y otras).
Algunos estados y organizaciones supraestatales tratan de favorecer al software libre para garantizar una red que proteja a sus usuarios y ciudadanos, mientras que otros niveles de las mismas administraciones se resisten a facilitar el uso de estos sistemas. No hace mucho en la administración gallega se usaba SUSE Linux Enterprise en el área educativa; sin embargo, los educadores que quisiesen usar el sistema fuera del entorno laboral debían hacer uso de Internet Explorer.
De forma adicional, en España conectarse a InterNET para un usuario doméstico es casi sinónimo de aceptar alguna de las ofertas de los poco competitivos operadores telefónicos al uso. Cualquier otra alternativa es brutalmente cara. Entre los inconvenientes de la legislación actual, la prohibición del acceso a InterNET a través de redes Wifi públicas (o compartir la conexión con los veciones) lastran la universalidad del acceso a InterNET.
Para acabar de complicar el panorama surgen con fuerza un nuevo agente con sus propios intereses: la industria audiovisual, fundamentalmente a través de las entidades "gestoras de derechos". La simplicidad para compartir información a través de la red es natural enemigo de aquellos que viven de vender información o contenidos. Se reeditan luchas comerciales que recuerdan a la del formato de vídeo VHS con el formato Beta; y no se queda ahí, sino que se intenta repetir la vergonzosa experiencia del desencriptado para el DVD-vídeo.
La locura es tal que se demonizan protocolos de distribución de mensajes por la red como el P2P que pueden ayudar a que la red funcione mucho mejor y de forma más homogénea, en lugar de depender tanto de la infraestructura. Para los habitantes del primer mundo (o de las ciudades, en España) esto no es cuestión relevante, pero para el resto de los usuarios no es baladí.
Las últimas líneas de este esbozo las dibujan las entidades bancarias y las grandes distribuidoras, que ven el negocio de poder simplificar e incluso prescindir de buena parte de sus oficinas físicas, por lo que hacen incapié en la seguridad informática; sin embargo, para ello utilizan software de dudosa fiabilidad en el mejor de los casos, empujando a sus usuarios a utilizar el mismo software.
¿Y qué es del usuario en todo este lío? la explosión del mercado informático doméstico fue de la mano del PC equipado con Windows. El usuario desconoce (y la mayoría de veces tampoco le preocupa demasiado) qué sistema o aplicaciones usa, y mucho menos los términos de licencia subrealistas que se emplean en el sector. Al usuario rara vez le preocupan sus derechos o el funcionamiento de InterNET, y llegado el momento de preocuparse rara vez conoce los rudimentos necesarios para tomar partido. El mismo usuario puede conectarse con Windows en su casa o con su Iphone en el autobús para quejarse de que una ley determinada ataca la neutralidad de la Red, para luego participar en un ataque DoS (Denegación de Servicio, coordinarse con otra gente para efectuar muchas peticiones a un servidor para colapsarlo) para supuestamente defender dicha neutralidad. Al usuario ni siquiera se le pasará por la cabeza que colapsar un servidor como acto de protesta vulnera la libertad de expresión de los propietarios de dicho servidor: una de las reglas más tradicionales y respetables de Netiqueta (también vulnera la regla de no ocupar ancho de banda que puedan necesitar otros).
Por un lado, el usuario entrega la libertad que podría suponer la Red para beneficio de empresas multinacionales y ciertas administraciones; por otro lado, teme el uso que aquéllos puedan hacer para coartar su misma libertad. Es curioso, pero pocas veces se escucha algo de autocrítica en esta cuestión, y es lógico. La mayoría de iniciativas de defensa de la neutralidad de la red parten de promotores y entusiastas del software libre, quienes disponen de herramientas para hacer un uso efectivo de la Red. El problema que no vemos es que es fácil atacar la independencia y neutralidad de la Red, pero sólo porque la inmensa mayoría de usuarios no dispone de tales herramientas, e incluso en su mayoría las desconocen por concreto; o bien usan herramientas que los privan de cualquier derecho sobre su propia información, tales como el Messenger de Microsoft, o el Whatsapp de la empresa homónima.
La telefonía móvil ha supuesto desde siempre un ataque a la neutralidad de la Red, o al menos desde que permitió conectarse a la misma. Tras los nombres como Wap, 3G o la inminente 4G se esconden políticas comerciales para decidir qué contenidos de la red son accesibles para el usuario o cómo debe de emplearla. Pocos reconocerán que dichas redes no son más que limitaciones al UMTS desarrollado hace ya 20 años.
La privacidad se consigue con cifrado; la neutralidad, con tecnología abierta. Y es imprescindible también no dejar de vigilar las leyes que quieren cercenar InterNET para el servicio de unos cuantos burócratas y una pandilla de consejeros de grandes empresas. Es el único camino para que la Red de Redes llegue a desempeñar el papel al que está llamada en la sociedad humana.
miércoles, 8 de febrero de 2012
InterNET: Red de Redes. IV La neutralidad de la red
En los artículos precedentes, se expusieron dos ideas muy concretas:
Sin embargo, con frecuencia escuchamos hablar de la neutralidad de la red y de diversas amenazas que puede sufrir tal neutralidad. Para comprender el origen y las consecuencias de estas amenazas, necesitamos repasar la forma y organización de Internet.
Arquitectura: tendiendo puentes
Tu equipo doméstico es una red, aunque no lo sepas. Simplemente, es el caso más sencillo de red que puedas encontrar: un sólo equipo, por tanto, un sólo nodo. Da igual que te conectes a través de un router wifi o de un sencillo módem: eres una red.
Si te desenchufas de tu conexión a internet (o apagas el router), tu equipo será, en todo caso, una red aislada. Pero no hay motivo para que no puedas conectarte a él desde otro equipo (o tu smartphone, o tu portátil...). En el caso más sencillo, puedes conectar la tarjeta de red de tu computador de escritorio con tu portátil por cable de red, por wifi, USB, bluetooth... en tal caso, ya tienes una red con dos nodos.
El módem o el router de tu compañía telefónica te permite conectarte a otras redes, que pueden ser redes domésticas, redes de grandes empresas, y por supuesto, constituidas por un computador, varios o miles de ellos. En tu sistema, tal dispositivo es el puente o pasarela que te permite conectarte con tu proveedor telefónico.
Una conexión típica parte de tu computador, pasa por el puente o pasarela y llega a tu proveedor. A partir de ahí, se traduce la dirección pedida y se encauza por la ruta que lleve a su destino.
Cada nodo mantiene direcciones de los nodos más próximos, y también de rutas y destinos habituales en ese nodo. Para ser más precisos, incluyen no sólo a los vecinos, sino a los destinatarios más habituales. Por supuesto, como posiblemente hayas adivinado, todos los nodos son a su vez redes de computadores.
Una vez que la conexión llega a destino, la red de destino hará lo que haya pedido tu red: puedes haber pedido que te muestre una web, o que te sirva un archivo para descargarlo (por supuesto, si tienes permisos para hacerlo!!).
Con todo esto en mente, quiero que reparéis en varias cosas:
"Proveedor de internet" es un nombre muy malo. Inernet no es algo que te lleve alguien a casa, empaquetado y tarificado al peso. Generalmente, se habla de "Proveedor de Servicios de Internet" (ISP, Internet Services Provider).
Un proveedor de servicios hace justamente eso: te proporciona acceso a determinados servicios de la red: desde conexión hasta correo electrónico, pasando por alojamiento web, almacenaje de archivos, etc. Fíjate que un ISP puede proporcionar conexión a Internet, pero no tiene por qué hacerlo. Por otra parte, un ISP puede proporcionarte conexión, pero ningún servicio adicional.
Repasemos: tú tienes que conectarte a un ISP para acceder a Internet. Puedes pensar que tienes que llegar a un nodo común si quieres tener acceso a otras redes (quienes a su vez, tienen acceso a dicho nodo común a través de Internet).
Hay muchos métodos para conectarse a un ISP, al menos desde un punto de vista teórico. Lo más sencillo para un usuario doméstico es conectarse a través de su operador telefónico, con lo que dicho operador funcionará de ISP aun cuando el usuario utilice los servicios de otros ISP (de hecho, esto hace años era bastane común: conectabas tu módem de telefónica y usabas servicios como Tiscalis u otros: Telefónica simplemente te conectaba con Tiscalis, y éste era quien realmente te daba acceso a la red).
En la práctica, si tu red accede a otra que tiene acceso a Internet, como quiera que se realice ese acceso, entonces estás conectado a Internet. Puedes, por ejemplo, acceder por radio o wifi a la red de tu empresa o universidad, si está cerca.
En España está prohibido compartir la conexión a Internet. Las redes Wifi locales promovidas por algunos ayuntamientos sólo son válidas si se constituye un ente como ISP y se proporciona servicio de pago (al menos, como extensión del gratuito, digamos para distintas velocidades de acceso). Y las redes Wifi comunitarias -de edificios- deben estar ceñidas al edificio en sí y no alcanzar el exterior. La Wifi doméstica que pagas no puedes compartirla con el vecino de al lado. Pero estas restrucciones son cuestiones legales, no técnicas: para Internet, no importa como llegues: una vez que estás dentro, estás conectado.
Saber más...
En la wikipedia puedes leer más información. Por desgracia, la versión en castellano es bastante limitada y es preferible la versión inglesa.
- Internet se basa en tecnologías libres.
- Internet es, en realidad, una maraña de redes heterogéneas interconectadas entre sí.
Sin embargo, con frecuencia escuchamos hablar de la neutralidad de la red y de diversas amenazas que puede sufrir tal neutralidad. Para comprender el origen y las consecuencias de estas amenazas, necesitamos repasar la forma y organización de Internet.
Arquitectura: tendiendo puentes
Tu equipo doméstico es una red, aunque no lo sepas. Simplemente, es el caso más sencillo de red que puedas encontrar: un sólo equipo, por tanto, un sólo nodo. Da igual que te conectes a través de un router wifi o de un sencillo módem: eres una red.
Si te desenchufas de tu conexión a internet (o apagas el router), tu equipo será, en todo caso, una red aislada. Pero no hay motivo para que no puedas conectarte a él desde otro equipo (o tu smartphone, o tu portátil...). En el caso más sencillo, puedes conectar la tarjeta de red de tu computador de escritorio con tu portátil por cable de red, por wifi, USB, bluetooth... en tal caso, ya tienes una red con dos nodos.
El módem o el router de tu compañía telefónica te permite conectarte a otras redes, que pueden ser redes domésticas, redes de grandes empresas, y por supuesto, constituidas por un computador, varios o miles de ellos. En tu sistema, tal dispositivo es el puente o pasarela que te permite conectarte con tu proveedor telefónico.
Una conexión típica parte de tu computador, pasa por el puente o pasarela y llega a tu proveedor. A partir de ahí, se traduce la dirección pedida y se encauza por la ruta que lleve a su destino.
Cada nodo mantiene direcciones de los nodos más próximos, y también de rutas y destinos habituales en ese nodo. Para ser más precisos, incluyen no sólo a los vecinos, sino a los destinatarios más habituales. Por supuesto, como posiblemente hayas adivinado, todos los nodos son a su vez redes de computadores.
Una vez que la conexión llega a destino, la red de destino hará lo que haya pedido tu red: puedes haber pedido que te muestre una web, o que te sirva un archivo para descargarlo (por supuesto, si tienes permisos para hacerlo!!).
Con todo esto en mente, quiero que reparéis en varias cosas:
- Los nodos pueden tener distintos tamaños e importancia en el tráfico. Así como hay autovías y carreteras secundarias, hay nodos de mayor nivel, nodos secundarios, etc.
- Muchas conexiones entre redes tienen lugar a través de la red telefónica, pero, por supuesto, no todas.
- Los peajes de las autopistas se fijan en la entrada o salida de la misma, y se tarifican generalmente por kilómetro recorrido. En Internet, por su idiosincrasia, una conexión normal recorre multitud de redes, y es difícil establecer qué parte corresponde a cada empresa.
"Proveedor de internet" es un nombre muy malo. Inernet no es algo que te lleve alguien a casa, empaquetado y tarificado al peso. Generalmente, se habla de "Proveedor de Servicios de Internet" (ISP, Internet Services Provider).
Un proveedor de servicios hace justamente eso: te proporciona acceso a determinados servicios de la red: desde conexión hasta correo electrónico, pasando por alojamiento web, almacenaje de archivos, etc. Fíjate que un ISP puede proporcionar conexión a Internet, pero no tiene por qué hacerlo. Por otra parte, un ISP puede proporcionarte conexión, pero ningún servicio adicional.
Repasemos: tú tienes que conectarte a un ISP para acceder a Internet. Puedes pensar que tienes que llegar a un nodo común si quieres tener acceso a otras redes (quienes a su vez, tienen acceso a dicho nodo común a través de Internet).
Hay muchos métodos para conectarse a un ISP, al menos desde un punto de vista teórico. Lo más sencillo para un usuario doméstico es conectarse a través de su operador telefónico, con lo que dicho operador funcionará de ISP aun cuando el usuario utilice los servicios de otros ISP (de hecho, esto hace años era bastane común: conectabas tu módem de telefónica y usabas servicios como Tiscalis u otros: Telefónica simplemente te conectaba con Tiscalis, y éste era quien realmente te daba acceso a la red).
En la práctica, si tu red accede a otra que tiene acceso a Internet, como quiera que se realice ese acceso, entonces estás conectado a Internet. Puedes, por ejemplo, acceder por radio o wifi a la red de tu empresa o universidad, si está cerca.
En España está prohibido compartir la conexión a Internet. Las redes Wifi locales promovidas por algunos ayuntamientos sólo son válidas si se constituye un ente como ISP y se proporciona servicio de pago (al menos, como extensión del gratuito, digamos para distintas velocidades de acceso). Y las redes Wifi comunitarias -de edificios- deben estar ceñidas al edificio en sí y no alcanzar el exterior. La Wifi doméstica que pagas no puedes compartirla con el vecino de al lado. Pero estas restrucciones son cuestiones legales, no técnicas: para Internet, no importa como llegues: una vez que estás dentro, estás conectado.
Saber más...
En la wikipedia puedes leer más información. Por desgracia, la versión en castellano es bastante limitada y es preferible la versión inglesa.
sábado, 21 de enero de 2012
InterNET: Red de Redes. III Un mundo conectado
En el principio fue Unix,
padre de todos los sistemas:
¡Gloria a Unix!
Y luego fue la red,
donde no existe
principio o final,
pues en la red todo es
parte de La Red.
Y la noche se encarnó
y dio vida
a dos criaturas del mal:
una nombrada PC,
abominable engendro,
mas acaso aun no tan terrible
como aquella que sus adoradores,
esclavos y sirvientes
conocen como Mac.
Y así fue el principio de esta historia.
Un PC con MS-DOS y Windows conectado en una red no está pensado para ser utilizado por varios usuarios. De hecho, la licencia generalmente se refiere al pagador como el "único" con derecho a utilizar dicho sistema. Mejor suerte corren los usuarios de Windows NT o OS/2, ya que estos sistemas sí permiten gestionar distintos usuarios: de nuevo, la licencia establece cuántas personas tienen derecho a usar el sistema. La pega es que estos dos sistemas se utilizan en máquinas más caras que los PC que pronto se comienzan a denominar (en España al menos) clónicos.
A mediados de los años 90, el precio de los PC cae en picado. Cada vez hay más fabricante y la competencia es lo suficientemente feroz para que durante años se vaya reduciendo el precio de las máquinas. Son los años de publicación del malhadado Windows 95, la ruina de Apple, la expansión de AMD... y la red.
Tim Berners-Lee y Robert Cailliau publican su nuevo invento, la World Wide Web, allá por el año 1992. Aunque ellos la crean en el CERN, los industriales europeos no acaban de encontrarle utilidad, así que deciden llevarla a USA, donde sí es acogida con entusiasmo. Por el camino, deciden crear el W3C, para garantizar la gratuidad y accesibilidad de la web. La expansión de la web es pareja a la difusión de los computadores, tanto servidores especializados como computadores personales.
Al mismo tiempo Linux crece como futuro núcleo para el Sistema Operativo de GNU: en 1993 aparece la primera distribución, aunque hay que esperar al año 1994 para tener la versión 1.0 de Linux. De forma paralela, surge el proyecto Apache, que se consolida como el servidor web más ampliamente usado a partir de 1996.
El uso conjunto de GNU/Linux y Apache permite disponer de servidores web muy potentes con un coste relativamente bajo. Esto, naturalmente, facilita la extensión de la Web: no sólo es sencillo interconectar redes, sino que las distintas organizaciones pueden disponer de sus propios servidores.
Mientras, en el mundo de la computación personal, Adobe abandona a Apple para centrarse en Windows, mientras que Autodesk contrae una especie de matrimonio indisoluble con Microsoft. Si Apple se tambaleaba, estos movimientos acaban por sepultarla.
En cuanto a GNU/Linux, nunca tuvo gran acogida en los computadores personales. Ciertamente, GNU/Linux debió esperar al nuevo siglo para consolidarse con interfaces sencillas y abundante software para cualquier tarea; sin embargo, la industria lo acogió con entusiasmo. El estancamiento de GNU/Linux en el mundo doméstico palpable aun hoy es más curioso a medida que se va extendiendo por todo tipo de empresas y organismos.
Es importante señalar que la mayor parte de los elementos que propiciaron la llamada Web 2.0 (lo que incluye Blogs, webs como Facebook, etc.) son software libre. El impacto del software no libre es muy reducido, y se limita a herramientas abiertas pero con licencias no completamente libres: el lenguaje de programación Java es un buen ejemplo de software no completamente libre. Los usuarios de ADSL o cable puede que tengan un Windows o un Mac en su portátil, pero si usan un router para conectarse con su compañía telefónica, éste generalmente usará GNU/Linux. Las granjas de servidores de Google usan una versión de GNU/Linux propia, mientras que películas como Avatar se pueden realizar gracias a máquinas equipadas con GNU/Linux.
El contrapunto a este mundo libre lo ofrece curiosamente el usuario. Acostumbrado a las limitaciones de Windows o Mac, no suele estar preparado para usar la Red con un mínimo de seguridad. No suele tener usuarios, no administra la seguridad de su computador, no suele usar reglas de privilegios en los archivos que crea o ejecuta... Aunque los virus y el malware en general no son exclusivos de los sistemas privativos, en su incidencia es determinante que el usuario use dichos sistemas. Digamos que el problema no es sólo que el usuario abra un correo electrónico de remitente desconocido, sino que su sistema permita que un correo electrónico ejecute cualquier aplicación por el mero hecho de ser leído!
La red siempre estuvo defendida por usuarios fundamentalmente de software libre. Pero hoy son minoría. Hoy la gente que pretende que La Red no sea más que un lector de catálogos publicitarios e intercambiador de mensajes son mayoría. Y están dispuestos a entregarla. No es que no quieren luchar, es que se esfuerzan para que esto suceda.
El anterior párrafo podría ser el cierre de un primer capítulo sobre el advenimiento de La Red Social. De eso tratará el siguiente artículo del blog.
padre de todos los sistemas:
¡Gloria a Unix!
Y luego fue la red,
donde no existe
principio o final,
pues en la red todo es
parte de La Red.
Y la noche se encarnó
y dio vida
a dos criaturas del mal:
una nombrada PC,
abominable engendro,
mas acaso aun no tan terrible
como aquella que sus adoradores,
esclavos y sirvientes
conocen como Mac.
Y así fue el principio de esta historia.
Un PC con MS-DOS y Windows conectado en una red no está pensado para ser utilizado por varios usuarios. De hecho, la licencia generalmente se refiere al pagador como el "único" con derecho a utilizar dicho sistema. Mejor suerte corren los usuarios de Windows NT o OS/2, ya que estos sistemas sí permiten gestionar distintos usuarios: de nuevo, la licencia establece cuántas personas tienen derecho a usar el sistema. La pega es que estos dos sistemas se utilizan en máquinas más caras que los PC que pronto se comienzan a denominar (en España al menos) clónicos.
A mediados de los años 90, el precio de los PC cae en picado. Cada vez hay más fabricante y la competencia es lo suficientemente feroz para que durante años se vaya reduciendo el precio de las máquinas. Son los años de publicación del malhadado Windows 95, la ruina de Apple, la expansión de AMD... y la red.
Tim Berners-Lee y Robert Cailliau publican su nuevo invento, la World Wide Web, allá por el año 1992. Aunque ellos la crean en el CERN, los industriales europeos no acaban de encontrarle utilidad, así que deciden llevarla a USA, donde sí es acogida con entusiasmo. Por el camino, deciden crear el W3C, para garantizar la gratuidad y accesibilidad de la web. La expansión de la web es pareja a la difusión de los computadores, tanto servidores especializados como computadores personales.
Al mismo tiempo Linux crece como futuro núcleo para el Sistema Operativo de GNU: en 1993 aparece la primera distribución, aunque hay que esperar al año 1994 para tener la versión 1.0 de Linux. De forma paralela, surge el proyecto Apache, que se consolida como el servidor web más ampliamente usado a partir de 1996.
El uso conjunto de GNU/Linux y Apache permite disponer de servidores web muy potentes con un coste relativamente bajo. Esto, naturalmente, facilita la extensión de la Web: no sólo es sencillo interconectar redes, sino que las distintas organizaciones pueden disponer de sus propios servidores.
Mientras, en el mundo de la computación personal, Adobe abandona a Apple para centrarse en Windows, mientras que Autodesk contrae una especie de matrimonio indisoluble con Microsoft. Si Apple se tambaleaba, estos movimientos acaban por sepultarla.
En cuanto a GNU/Linux, nunca tuvo gran acogida en los computadores personales. Ciertamente, GNU/Linux debió esperar al nuevo siglo para consolidarse con interfaces sencillas y abundante software para cualquier tarea; sin embargo, la industria lo acogió con entusiasmo. El estancamiento de GNU/Linux en el mundo doméstico palpable aun hoy es más curioso a medida que se va extendiendo por todo tipo de empresas y organismos.
Es importante señalar que la mayor parte de los elementos que propiciaron la llamada Web 2.0 (lo que incluye Blogs, webs como Facebook, etc.) son software libre. El impacto del software no libre es muy reducido, y se limita a herramientas abiertas pero con licencias no completamente libres: el lenguaje de programación Java es un buen ejemplo de software no completamente libre. Los usuarios de ADSL o cable puede que tengan un Windows o un Mac en su portátil, pero si usan un router para conectarse con su compañía telefónica, éste generalmente usará GNU/Linux. Las granjas de servidores de Google usan una versión de GNU/Linux propia, mientras que películas como Avatar se pueden realizar gracias a máquinas equipadas con GNU/Linux.
El contrapunto a este mundo libre lo ofrece curiosamente el usuario. Acostumbrado a las limitaciones de Windows o Mac, no suele estar preparado para usar la Red con un mínimo de seguridad. No suele tener usuarios, no administra la seguridad de su computador, no suele usar reglas de privilegios en los archivos que crea o ejecuta... Aunque los virus y el malware en general no son exclusivos de los sistemas privativos, en su incidencia es determinante que el usuario use dichos sistemas. Digamos que el problema no es sólo que el usuario abra un correo electrónico de remitente desconocido, sino que su sistema permita que un correo electrónico ejecute cualquier aplicación por el mero hecho de ser leído!
La red siempre estuvo defendida por usuarios fundamentalmente de software libre. Pero hoy son minoría. Hoy la gente que pretende que La Red no sea más que un lector de catálogos publicitarios e intercambiador de mensajes son mayoría. Y están dispuestos a entregarla. No es que no quieren luchar, es que se esfuerzan para que esto suceda.
El anterior párrafo podría ser el cierre de un primer capítulo sobre el advenimiento de La Red Social. De eso tratará el siguiente artículo del blog.
InterNET: Red de Redes. II. El imperio del PC
La computación personal a través de un terminal tonto es un poco limitada; en particular, tiene dos limitaciones importantes.
La primera limitación es que al no ser administrador del sistema, estás sujeto a la política de los dueños y administradores del mismo. Ellos deciden cómo distribuir tu tiempo, tu espacio... en suma, lo que puedes hacer.
La otra limitación es técnica. Desde tu terminal hasta el servidor dependes de una conexión siempre relativamente lenta.
IBM desarrolló el concepto de PC (Personal Computer, computador personal) a finales de los años 70. Se trataba de un computador que hacía uso de los entonces nuevos microprocesadores de Intel: baratos y pequeños, permitían crear máquinas relativamente ase
quibles.
De cómo IBM permitió que otros fabricasen dispositivos para su arquitectura se ha hablado mucho en otros sitios, y no lo repetiré aquí. También en muchos sitios se ha hablado de cómo de forma paralela se fraguaban los equipos Macintosh. Lo importante es que estas máquinas estaban diseñadas para funcionar de forma aislada: nada de redes, nada de compartir recursos, cada máquina traía lo que el usuario necesitaba, o al menos lo que necesitaba en opinión del fabricante.
A medida que la industria se amolda a la Ley de Moore, Microsoft cedió y decidió que era preciso permitir que sus
equipos trabajasen en red. Primero intentó crear un sistema operativo nuevo, en colaboración esta vez con IBM, aunque fracasó. De ese fracaso nacieron Windows NT por el lado de Microsoft y OS/2 por parte de IBM. Sin embargo, estos productos no resultaban adecuados al usuario doméstico que compraba computadores personales, mucho más accesibles económicamente que las estaciones de trabajo para las que se desarrollaron ambos sistemas. Microsoft decidió añadir soporte para redes en sus primeros sistemas Windows basados en MS-DOS. La oportuna licencia de BSD para su implementación del sistema de red, le permitió modificarlo ligeramente para usarlo en sus sistemas. Es la era del Windows 3.11, y es, posiblemente, cuando la historia toma un giro hasta ahora decisivo.

Este modelo de computación doméstica tuvo un éxito relativo... las ventas de equipos PC (y en mucha menor medida, Macintosh) consagró un modelo de negocio en el que unos fabricantes decidían las necesidades de los usuarios y proponían sus soluciones. Los programadores informáticos pronto se inspiraron en los grandes artistas de masas, y comenzaron a considerar, como éstos, que trabajar una sola vez en una cosa y cobrar dinero por ello para siempre era una gran idea. Incluso fueron un paso más allá: las aplicaciones informáticas incluían "acuerdos de licencia" en el que los desarrolladores establecían en qué condiciones le permitían al usuario usar su programa. De hecho, la mayoría de aplicaciones no puede, legalmente, prestarse entre miembros de una familia; otros acuerdos de licencia permiten que el usuario utilice la aplicación durante un tiempo determinado, y toda una serie de abusos que los escritores y músicos no pueden más que observar con envidia.
Un ejemplo de las condiciones de licencia ridículas puede verse en la limitación para publicar capturas de un escritorio Windows: se permiten, pero, salvo autorización, sólo puede capturarse todo el escritorio, no parte. De nada vale que tú sólo quieras ilustrar cuál es el icono para escoger la red inalámbrica. Estas restricciones no son importantes en la práctica para la mayoría de usuarios, pero imaginaos que yo creo un manual para distribuir (bajo precio) sobre la instalación de sistemas FreeBSD y que quiero ilustrar cómo cambiar el tamaño de la partición de Windows con las herramientas de este sistema. Posiblemente, Microsoft pudiese impedir la distribución de mi libro!
Éste es el ecosistema en el que la mayoría conocimos InterNET, aunque aun falten unos años para que esta historia llegue a la web. Muchos hablan de la influencia de Windows 95, pero la principal causa está, cómo no, en la accesibilidad de la conexión telefónica. A medida que más hogares pudieron costearse ya no el equipo, más barato cada vez, sino también una conexión a través de módem, RDSI o el entonces incipiente ADSL, mayor se hizo el mercado.
Debo hacer un apunte sobre el ADSL: aunque no hace mucho Telefónica España (ahora Movistar) publicitaba la "última tecnología ADSL", lo cierto es que el ADSL es un parche desarrollado para ser utilizado en aquellos países con una cobertura a través de cable de cobre telefónico bastante importante. Así, se podía proporcionar algo parecido a lo que se suele llamar "banda ancha" a través del cable telefónico.
Pero es momento de echar la vista atrás. Mientras el PC evolucionaba y pasaba de ser una máquina raquítica y aislada a parte de redes mucho más amplias y heterogéneas, pasó algo curioso.
Dicen que todo comenzó con una impresora y un personaje: Richard Stallman. Como quiera, las alertas saltaron, y los programadores al uso agrupados en torno a Stallman reaccionaron al uso: resolviendo el problema por su cuenta: ¿que el problema son las licencias de software? hagamos un sistema operativo libre de licencias, el cual denominaron GNU. Para lograrlo, crearon la licencia GPL:
El segundo hecho improbable fue que un estudiante, Linus Tolvards, decidiese hacer una versión de Minix que pudiese obviar sus problemas de licencia. Pronto los participantes del proyecto GNU y otros desarrolladores se unieron a Tolvards para que su núcleo del sistema operativo, Linux, se publicase con licencia GPL.

Es importante notar que, usasen los equipos que usasen, usasen los sistemas operativos que usasen, Linux fue desarrollado desde el principio por una ingente comunidad online. En ese sentido, Linux fue una especie de hijo de la red.
Como suele suceder con frecuencia, a veces nuestros sueños nos trascienden y toman vida propia.
La primera limitación es que al no ser administrador del sistema, estás sujeto a la política de los dueños y administradores del mismo. Ellos deciden cómo distribuir tu tiempo, tu espacio... en suma, lo que puedes hacer.
La otra limitación es técnica. Desde tu terminal hasta el servidor dependes de una conexión siempre relativamente lenta.
IBM desarrolló el concepto de PC (Personal Computer, computador personal) a finales de los años 70. Se trataba de un computador que hacía uso de los entonces nuevos microprocesadores de Intel: baratos y pequeños, permitían crear máquinas relativamente ase
De cómo IBM permitió que otros fabricasen dispositivos para su arquitectura se ha hablado mucho en otros sitios, y no lo repetiré aquí. También en muchos sitios se ha hablado de cómo de forma paralela se fraguaban los equipos Macintosh. Lo importante es que estas máquinas estaban diseñadas para funcionar de forma aislada: nada de redes, nada de compartir recursos, cada máquina traía lo que el usuario necesitaba, o al menos lo que necesitaba en opinión del fabricante.
A medida que la industria se amolda a la Ley de Moore, Microsoft cedió y decidió que era preciso permitir que sus
Este modelo de computación doméstica tuvo un éxito relativo... las ventas de equipos PC (y en mucha menor medida, Macintosh) consagró un modelo de negocio en el que unos fabricantes decidían las necesidades de los usuarios y proponían sus soluciones. Los programadores informáticos pronto se inspiraron en los grandes artistas de masas, y comenzaron a considerar, como éstos, que trabajar una sola vez en una cosa y cobrar dinero por ello para siempre era una gran idea. Incluso fueron un paso más allá: las aplicaciones informáticas incluían "acuerdos de licencia" en el que los desarrolladores establecían en qué condiciones le permitían al usuario usar su programa. De hecho, la mayoría de aplicaciones no puede, legalmente, prestarse entre miembros de una familia; otros acuerdos de licencia permiten que el usuario utilice la aplicación durante un tiempo determinado, y toda una serie de abusos que los escritores y músicos no pueden más que observar con envidia.
Un ejemplo de las condiciones de licencia ridículas puede verse en la limitación para publicar capturas de un escritorio Windows: se permiten, pero, salvo autorización, sólo puede capturarse todo el escritorio, no parte. De nada vale que tú sólo quieras ilustrar cuál es el icono para escoger la red inalámbrica. Estas restricciones no son importantes en la práctica para la mayoría de usuarios, pero imaginaos que yo creo un manual para distribuir (bajo precio) sobre la instalación de sistemas FreeBSD y que quiero ilustrar cómo cambiar el tamaño de la partición de Windows con las herramientas de este sistema. Posiblemente, Microsoft pudiese impedir la distribución de mi libro!
Éste es el ecosistema en el que la mayoría conocimos InterNET, aunque aun falten unos años para que esta historia llegue a la web. Muchos hablan de la influencia de Windows 95, pero la principal causa está, cómo no, en la accesibilidad de la conexión telefónica. A medida que más hogares pudieron costearse ya no el equipo, más barato cada vez, sino también una conexión a través de módem, RDSI o el entonces incipiente ADSL, mayor se hizo el mercado.
Debo hacer un apunte sobre el ADSL: aunque no hace mucho Telefónica España (ahora Movistar) publicitaba la "última tecnología ADSL", lo cierto es que el ADSL es un parche desarrollado para ser utilizado en aquellos países con una cobertura a través de cable de cobre telefónico bastante importante. Así, se podía proporcionar algo parecido a lo que se suele llamar "banda ancha" a través del cable telefónico.
Pero es momento de echar la vista atrás. Mientras el PC evolucionaba y pasaba de ser una máquina raquítica y aislada a parte de redes mucho más amplias y heterogéneas, pasó algo curioso.
"Usted puede modificar el código y redistribuirlo, mientras mantenga la misma licencia que el código original."Con el paso de los tiempos sucedieron dos sucesos igualmente improbables si no estuviésemos hablando de comunidades universitarias: en primer lugar, un profesor de Sistemas Operativos decidió crear una versión básica de Unix que funcionase en los ya populares PC, de forma que los estudiantes pudiesen acceder al sistema para su estudio de forma mucho más asequible. El profesor Tanenbaum lo llamó Minix y lo publicó junto con un libro de su autoría. Naturalmente, usaba las convenciones habituales en el mercado de la publicación comercial, que es una forma de decir que seguía teniendo licencias restrictivas.
El segundo hecho improbable fue que un estudiante, Linus Tolvards, decidiese hacer una versión de Minix que pudiese obviar sus problemas de licencia. Pronto los participantes del proyecto GNU y otros desarrolladores se unieron a Tolvards para que su núcleo del sistema operativo, Linux, se publicase con licencia GPL.
Es importante notar que, usasen los equipos que usasen, usasen los sistemas operativos que usasen, Linux fue desarrollado desde el principio por una ingente comunidad online. En ese sentido, Linux fue una especie de hijo de la red.
Como suele suceder con frecuencia, a veces nuestros sueños nos trascienden y toman vida propia.
Suscribirse a:
Entradas (Atom)