sábado, 31 de julio de 2010

CONCEPTOS DE SOFTWARE

El software es el conjunto de instrucciones que controlan el funcionamiento del sistema de computación. Es decir, el software le "da vida" al hardware, le da una razón de ser, una finalidad.

El software esta constituido por programas que, como vimos en el capitulo anterior, se cargan en la Unidad Central de Proceso para su ejecución.

Hay diferentes niveles de software o programa, en función de la "cercanía" que tienen para trabajar con las funciones básicas del hardware o con los datos como información.

SOFTWARE DE BASE Y DE APLICACIÓN

Si bien encontramos muchas zonas grises, podemos clasificar el software en dos grandes grupos:

Software de base: se ocupa del control de las tareas básicas del sistema de computación, tales como la administración de la memoria, de los dispositivos de entrada-salida, etcétera.

Software de aplicación: se ocupa de resolver las tareas requeridas por el ser humano, tales como procesar la información contable, realizar la liquidación de haberes, reservar un pasaje de micro.

Veremos a continuación diferentes tipos de software,- correspondiendo claramente los primeros a piezas de software de base y los últimos, también claramente, a ejemplos de software de aplicación.

EL SISTEMA OPERATIVO

El sistema operativo es el software de más bajo nivel, indica y supervisa las operaciones de la CPU. Sus componentes pueden agruparse así:

Programa de carga inicial o, más utilizada en el ámbito de las computadoras personales: boot.

Es un programa pequeño que le indica a la computadora las primeras acciones que debe realizar, cuando se enciende y luego de los chequeos establecidos por hardware, incluyendo los programas y archivos que ofrecen datos que requiere el sistema operativo para trabajar en cada computadora en particular, y el resto de los programas que conforman el sistema operativo.

- Los programas de control. Constituyen el núcleo del sistema operativo, y son los programas que se ocupan de:

- El control los recursos físicos del sistema; manejo de entradas y salidas, lectura y grabación de archivos, manejo de los contenidos de la memoria, ejecución de procesos de transformación de datos en la CPU, etcétera.

La coordinación de las acciones de esos recursos; tomar los datos y llevarlos al punto correcto para su procesamiento, coordinar las diferentes funciones requeridas por múltiples programas que se encuentren en ejecución, etcétera.

Los objetivos de los sistemas operativos son:

Utilizar, al máximo, la capacidad de proceso del sistema.

Minimizar el tiempo de espera de los equipos periféricos (unidades de entrada-salida y almacenamiento).

Garantizar el correcto procesamiento.

Si bien encontramos múltiples sistemas operativos, algunos sencillos y otros mas complejos y con mayor funcionalidad, sus componentes básicos son comunes a todos.

Una primera clasificación entre sistemas operativos la encontramos entre los que permiten trabajar a un solo usuario por vez y los que permiten la concurrencia de múltiples usuarios.

El trabajo multitarea

Cuando una CPU trabaja con múltiples tareas en forma concurrente, realmente se ocupo de una tarea por vez, alternando su atención entre todas las concurrentes.

Por ejemplo, cuando /a CPU esta ejecutando un programa que requiere datos que están en una unidad de almacenamiento externo, da la orden de tal lectura y pasa a la tarea siguiente.

Estando en la tarea siguiente ejecuta uno o varias instrucciones y vuelve a saltar a otra tarea, así hasta volver o la primera, momento en el que recibe los dato solicitados y continua con el proceso.

Esto permite que la CPU aproveche su tiempo en otras tareas, mientras espera acciones de los dispositivos periféricos que son, en términos relativos, mucho más lentos que ella.

Mas allá de esto el trabajo multitarea permite, en sistemas operativos complejos, asignar prioridades de procesamiento; es decir, indicarle al sistema que de mayor atención, materializada en mayor tiempo de CPU a un programa que a otro.
Los sistemas operativos multitarea deben almacenar, en áreas de memoria la situación de cada tarea en el momento que la abandonan para, al retomarla, recupere los datos y continuar el proceso.

Esta situación agrega significativa complejidad al sistema operativo.

. El trabajo multiusuario

El trabajo multiusuario se da cuando una CPU esta conectada por medio de una red, o vínculos específicos, a varios usuarios, tengan estos estaciones de trabajo o equipos de computación personal. Como en el caso del trabajo multitarea, la CPU se ocupa de un solo usuario por vez. Los sistemas operativos multiusuarios deben almacenar en áreas de memoria 1a situación de cada tarea y usuario en el momento en que la abandonan, para, al retomarla, recuperar los datos y continuar el proceso. Esta situación agrega aun más complejidad al sistema operativo.

Encontramos diferentes tipos de sistemas operativos. En el ambiente de las computadoras personales podemos mencionar, entre otros: el Microsoft Windows, el Mac-Os y el Linux.

Por supuesto, como el sistema operativo actúa en forma mancomunada con el hardware, no todo sistema operativo sirve para todo hardware.

Por ejemplo, las computadoras personales identificadas. como "compatibles con Windows" -independientemente del fabricante y del chip procesador que las integre, siendo los mas comunes los fabricados por Intel y por Amdha- permiten utilizar uno de los sistemas operativos mas difundidos, el Windows, de Microsoft.

Otros equipos, tales como los Apple, utilizan el sistema operativo Mac-Os.

En ambientes de maquinas medianas, que permiten los múltiples usuarios, y de servidores de redes, encontramos otros sistemas, tales como: Windows Server, Novell, Linux, diferentes versiones de Unix y OS/400.

En ambientes de maquinas grandes es normal que encontrar sistemas operativos específicos para una familia de equipos, tal el caso de los sistemas operativos OS/390 y el i5/OS de IBM.

Los sistemas operativos desarrollados para manear una computadora específica se conocen, genéricamente, como sistemas propietarios. Los sistemas que permiten trabajar con múltiples maquinas se conocen como sistemas abiertos.

Dentro de los sistemas abiertos encontramos aquellos cuyo código es público y otros cuyo código es manejado por una empresa. Este ultimo caso es el de Windows, su código es construido y actualizado exclusivamente por Microsoft, si bien puede ser utilizado en maquinas de múltiples proveedores.

La memoria virtual y el paginado

En la unidad 2, fue definido el concepto de VM o memoria virtual como una extensión en disco de la memoria principal.

Cuando un programa no "entra" -es decir, todas las instrucciones que lo integran requieren mas espacio físico del disponible en la memoria principal-, este no podrá cargarse íntegramente.

En estos casos, como mencionamos, el programa se segmenta en paginas que se almacenan en los dispositivos de almacenamiento.

Una porción reside en la RAM y el resto en lo VM, las paginas apropiadas se transfieren a la RAM conforme se necesitan. Esta actividad se conoce como paginado de memoria. Así se independiza el tamaño del programa de la capacidad de 1a RAM.

Si bien esto evita que sea necesario que todo el programa se cargue en la RAM para su ejecución, si por la estructura del programa se requiere acceder a información que se encuentra en el disco en forma continua, la performance del sistema caerá, ya que requiere un acceso "lento” para obtener las instrucciones por lo que lo UAL y la UC estarán esperando (u ocupándose de otras tareas) gran parte del tiempo.

Por lo tanto, es posible que la ejecución de un proceso tarde más de lo esperado debido a la gran actividad sobre el disco, y el tiempo que ella requiere.

En este caso se presentan dos alternativas que pueden ser complementarias, en caso de necesitar mejorar el tiempo de ejecución.

Una de ellos es aumentar el tamaño de 1a memoria (si fuera posible), permitiendo asi que todo el programa, o una parte significativa del mismo, entre en la memoria primaria.

La otra es modificar el programa, optimizando su codificación, o partiéndolo; es decir, sacando funciones para cuya resolución se utilizara otro programa y otra maquina.





LOS LENGUAJES DE PROGRAMACION


Los lenguajes de programación son las estructuras de instrucciones, interpretadas y traducidas lenguaje de maquina, que es el lenguaje que puede interpretar la CPU.

Encontramos una gran cantidad de lenguajes de programación, mas o menos lejos de los lenguajes de maquina; es decir, mas o menos cerca del lenguaje natural (castellano, ingles, etcétera).

Se dice que un lenguaje de programación es de una generación superior a otra, cuando esta mas cerca del lenguaje natural.

Hoy en día utilizamos comúnmente lenguajes de tercera y cuarta generación. Los primeros están constituidos por una serie de instrucciones en lenguaje más o menos comprensible, con una sintaxis lógica cercana a la sintaxis que requiere la CPU.

Los lenguajes de cuarta generación tienen como objetivo que los seres humanos, sin preparación en cuanto a conocimientos técnicos sobre la lógica en que las computadoras actúan, podamos comunicarnos con ellas en forma cercana a la modalidad que nos comunicamos con nuestros semejantes.

Como ejemplo de lenguaje de tercera generación podemos mencionar el Cobol, y como ejemplo de lenguaje de cuarta generación, los lenguajes administradores de bases de datos en general, que adoptan la forma de lenguajes de consulta estructurados (SQL del ingles structured query languaje).

COMPILADORES E INTÉRPRETES

El programa en el lenguaje que escribimos las instrucciones se llama programa fuente, mientras que el programa en el lenguaje que la maquina las interpreta se llama programa objeto.

El proceso de transformación del programa fuente al programa objeto se denomina compilación, y es realizado por la maquina mediante la ejecución del programa compilador.

En este proceso, el programa que se ejecuta en la CPU es el compilador, la entrada es el programa en lenguaje fuente y la salida es el programa en lenguaje objeto.

Los compiladores, como primera parte del proceso, validan la corrección interna del programa fuente (el compilador no puede validar errores en cuanto a la funcionalidad del programa; por ejemplo, si en lugar de sumar se indica que reste). Esto es, validan que el programa sea consistente en si mismo, que se respete la sintaxis propia del lenguaje de programación, etcétera.

Por ejemplo, si se define la realización de cálculos sobre ciertos datos para su archivo posterior, verifican que los datos requeridos en los cálculos se encuentren en los archivos de entrada identificados en el mismo programa fuente, como así también que los datos de salida tengan un destino en algún archivo de salida.

Si se detectan errores, los mismos son comunicados (por una impresión o información en pantalla) al programador, si no se detectan errores se genera el programa objeto o ejecutable.

Este ejecutable es guardado en los almacenamientos del sistema, para su posterior ejecución todas las veces que sea requerido. Este proceso de almacenamiento de los programas fuentes y objetos se denomina catalogación. Entonces nos encontramos con una biblioteca de programas fuentes y otra de programas objetos.

Es habitual que con el paso del tiempo se requiera modificar alguna acción de un programa, situación esta que, en lugar de desarrollo de un nuevo programa, se llama mantenimiento de uno existente. Es muy probable, sobre todo si ha transcurrido mucho tiempo, que la tarea la realice un programador diferente al que inicialmente se ocupo de la programación.

Por ejemplo, supongamos el caso de un programa cuyo objetivo inicial fuera calcular el total de ventas del mes, mediante la lectura del archivo de facturación, y luego de un tiempo se le requiera que en forma adicional muestre el total diario. En este caso debemos:

- Tomar el programa fuente anterior.

- Modificarlo, para que con la misma lectura del archivo de facturas calcule y exponga el total diario, y por ultimo, el del mes.

- Compilarlo nuevamente

- Reemplazar el programa objeto de la primera versión por el programa objeto de esta nueva versión del programa fuente.

De lo expuesto se desprenden dos hechos relevantes:

- Resulta de gran importancia la correcta administración de programas fuente y objeto, requiriéndose una gran disciplina para no perder la relación biunívoca entre ellos.

- Tanto la documentación de programación cuanto la utilización de estándares, para que cada uno pueda entender con menor esfuerzo lo hecho por los demás, son elementos de fundamental importancia para realizar el mantenimiento en forman mas eficiente.

Por supuesto, el programa compilador esta estrictamente vinculado con la maquina para la cual genera los programas objeto.

Una alternativa a la compilación es la interpretación de los programas fuentes.

Mientras que en la compilación encontramos dos pasos para la ejecución de un programa (primero se genera el programa objeto y luego se ejecuta el programa objeto) en la interpretación, el mismo programa, denominado interprete, se ocupa de leer el programa fuente interpretarlo en lenguaje maquina y ejecutarlo en el momento.

El programa interprete también detecta los errores internos del programa fuente, los indica e interrumpe la ejecución.

La utilización de intérpretes permite al programador seguir las instrucciones del programa y facilita la depuración de errores.

Cuando un programa esta totalmente depurado, y será ejecutado rutinariamente en múltiples oportunidades, es conveniente compilarlo, generando el modulo ejecutable, de esta forma se evita la interpretación en cada ejecución, mejorando el rendimiento del sistema.





Lenguaje maquina (primera generación)

Esta constituido por instrucciones, en el código binario, que la computadora interpreta.

Somos nosotros quienes tenemos que escribir las instrucciones con la conjunción de "O" y "1 " que el sistema de computación puede interpretar. Resulta sumamente complejo para la persona, y simple para el sistema de cómputos.

Lenguaje ensamblador (segunda generación) y el nacimiento de los compiladores

Estos lenguajes, desarrollados en los años cincuenta, iniciaron la utilización de códigos para reemplazar tanto las instrucciones en lenguaje maquina cuando las direcciones de memoria en el mismo lenguaje, simplificando así la compleja tarea de programación en lenguaje maquina.

Esta utilización de códigos produjo una separación entre el lenguaje en el que escribimos los instrucciones y el lenguaje que la maquina utiliza, dando nacimiento a los programas compiladores.

Lenguajes de tercera generación

Para facilitar aun más la programación, surgieron los lenguajes de tercera generación, que acercan el programa fuente a un lenguaje más parecido al utilizado entre nosotros. Los dos lenguajes mas conocidos de este tipo son el Fortran y el Cobol.

El primero de ellos, Fortran, con una estructuro cercana a las matemáticas esta orientado a la construcción de programas con gran carga de cálculos.

El segundo, Cobol, con una estructura cercana al lenguaje natural (en ingles), orientado a las matemáticas, y a la construcción de programas para la automatización de funciones de negocios simples, tales como la facturación y la liquidación de haberes; esto es, el manejo de una gran cantidad de datos de entrada, cálculos no muy complejos y el manejo de un gran volumen de información de salida.

Como en el caso de los ensambladores, también encontramos programas compiladores.

Se establecieron estándares para aislar o separar al lenguaje de la maquina (permitir que el mismo programa fuente pudiera ser compilado por diferentes compiladores para producir programas objeto ejecutables en diferentes maquinas, tales como el Cobol'64, si bien el objetivo de un lenguaje universal, aceptable entre maquinas de diferente porte y proveedor, no fue alcanzado debido a la utilización de particularidades para cada maquina.

Si bien, en la actualidad, es común la utilización de nuevos proyectos de lenguajes mas modernos que el Cobol, este sigue utilizándose en el mundo comercial. Hoy en día sigue siendo el lenguaje más utilizado, debido a su gran base instalada originada en su uso por más de 30 años, y su permanente actualización. Su última versión, denominada Cobol 2002, incorpora conceptos de actualidad.

Lenguajes de cuarta y quinta generación

La denominación lenguaje de cuarta generación fue utilizada por primera vez en 1982, por James Martin, refiriéndose a lenguajes que permiten una codificación de más alto nivel, reduciendo significativamente el trabajo de programación con relación al de tercera generación.

Estos pueden incluir herramientas específicas para generar listados, pantallas de consultas y actualizaciones e, incluso, generar el código directamente desde herramientas de diseño de sistema asistido por computadora.

Dentro de este grupo encontramos los lenguajes que utilizan sentencias de SQL (del ingles structured query language: lenguaje estructurado de consultas).

Estos lenguajes poseen herramientas para que el usuario final, dentro del marco dado en el desarrollo del sistema, pueda realizar consultas y reportes, no programados previamente, en forma directa sin participación de personal técnico.

Los lenguajes de quinta generación se orientan más a la resolución de problemas, basándose más en la gestión de restricciones que en el manejo de una lógica de programación.

Su utilización no ha tomado gran difusión.

LOS UTILITARIOS O SOFTWARE DE SERVICIOS

Los programas utilitarios permiten realizar actividades habituales y comunes en un sistema de computación, tales como:

- Copiar archivos.
- Compararlos.
- Administrar la compilación y catalogación de programas.
- Realizar copias de seguridad.
- Llevar estadísticas sobre el uso del sistema.

En el ambiente de PC, la forma gráfica de presentación nos permite realizar estas tareas en forma muy simple, en algunos casos arrastrando iconos, como en el caso de mover un archivo de una carpeta o directorio a otra, mas aun, ayudado por preguntas de confirmación, para evitar errores.

LOS SISTEMAS DE APLICACIÓN

Los sistemas de aplicación se ocupan de realizar funciones especificas (preprogramadas) para cumplir con las tareas necesarias en la forma que los usuarios finales las requieren. A continuación damos algunos ejemplos.

* En el campo comercial:

- El sistema de clientes se ocupa de la administración de datos de los clientes.

- El sistema de facturación se ocupa del cálculo y la emisión de facturas para los clientes, en función de los datos del sistema de clientes, los productos o servicios entregados, etcétera

- El sistema de reserva de pasajes, de micro o avión, se ocupa de mantener y actualizar la información sobre la cantidad de asientos disponibles y asignados en cada viaje o vuelo habilitado.

* En el campo de la ingeniería:
- Aplicaciones para el cálculo de estructuras.
- Aplicaciones para el diseño de edificios o grandes proyectos.

En el campo de la medicina:

- Los sistemas de diagnostico por imágenes.

Mas adelante, en las siguientes unidades, veremos ejemplos de ellos.




Software propietario o software libre

El software -tanto de base como de aplicación- es desarrollado y construido por medio de la aplicación de conocimientos de sus elaboradores; de esta manera, los desarrolladores del software son dueños de su propiedad intelectual.

Si el dueño del software establece restricciones sobre su utilización y/o modificación se dice que se trata de un software propietario, o no libre. Por ejemplo, cuando el vendedor entrega al comprador una licencia de uso sobre su creación intelectual; es decir, que puede usar el software, pero no modificarlo ni copiarlo para entregarlo a terceros, en venta o cesión.

Aun si la pieza de software en cuestión se obtiene gratis, el propietario, al entregarla, puede establecer restricciones con relación a su utilización. Por ejemplo, cediendo en forma gratuita exclusivamente su derecho de uso para fines personales, no pudiendo ser utilizada en aplicaciones comerciales, ni copiar, vender o ceder a terceros. Cuando un software propietario se obtiene en forma gratuita se dice que es una pieza free-ware (del ingles, free: gratis).

De esta manera podemos encontrar software gratuito y, a la vez, propietario: no libre. También encontramos software propietario que es gratuito para uso no comercial, pero con costo para usos comerciales.

Corno ejemplo de software propietario, no gratuito, podemos mencionar Microsoft Windows, productos de Adobe para la generación de PDF y software para juegos. Como ejemplos de software propietario gratuito, para usos no comerciales, podemos mencionar Adobe Reader y Pdf995.

Cuando hablamos de software de código abierto nos referimos a software cuyo programa fuente es accesible y modificable por el usuario, sin restricciones. Este software puede obtenerse en forma gratuita u onerosa.

El concepto de software libre se refiere a aquel cuya licencia de uso garantiza a su receptor la libertad de utilizarlo en lo que quiera, modificarlo como quiera y redistribuirlo, otorgando licencias de igual tipo como desee.

* La libertad de modificarlo implica la necesidad de que se trate de software de código abierto. Se acepta que esta libertad se condicione en cuanto a la forma de incorporar mejoras y a la obligación de compartir esas mejoras con el resto de la comunidad.

* La libertad de redistribuirlo implica que se pueden hacer copias y entregar a terceros, con o sin cargo, independientemente de haberlo obtenido en forma gratuita u onerosa. Es más, un poseedor de licencia puede ofrecer un determinado software sin cargo y otro, el mismo software, en forma onerosa.

Por lo tanto, un software de open source, que se vende sin otorgar el derecho a copiarlo y entregarlo en forma gratuita, no es un software libre.


SOFTWARE LIBRES





Software de aplicación de uso generalizado en computadoras personales.


En el ambiente de PC hogareñas y de oficina encontramos habitualmente software que cubre todas o algunas de las siguientes funciones:

- Correo electrónico.
- Agenda.
- Procesador de textos.
- Planilla de cálculos.
- Presentaciones.
- Navegadores para Internet.
- Administradores simples de bases de datos.

Como ejemplos de navegadores de Internet podemos mencionar los software: Internet Explorer de Microsoft, y el Firefox de Mozilla Fundation, siendo este último libre, de código abierto y gratuito.

Estos programas pueden obtenerse por separado o en conjuntos, integrados por varios de ellos, tomando el nombre de suites. Encontramos propuestas tanto de software propietario cuanto de software libre. Dentro de las ofertas del mercado las más difundidas son:

Función Microsoft office Openoffice.Org Lotus smart suite
Tipo de software Propietario Libre Propietario
Correo electrónico Outlook Organizer
Agenda Outlook Organizer
Planilla de calculo Excel Calc. y Math Lotus 1-2-3.
Procesador de texto Word Writer Word Pro
Presentaciones/gráficos simples PowerPoint Impress y Draw Freelance
Administrador de
bases de datos simples Access Base Approach
También, en ambientes específicos de trabajo, es habitual encontrar software que cubra necesidades más puntuales, entre ellas: planificación de tareas, graficación y edición compleja de textos.

Al seleccionar el software debemos tener en cuenta el que mas se adapte a nuestros requerimientos, considerando:

* Facilidad de uso y documentación

Podemos verificar la facilidad de uso mediante una prueba realizada en el negocio de venta.

La documentación del sistema debe permitir tanto aprender a usar sus funciones básicas como también evacuar las dudas sobre su utilización y permitir la investigación de las funciones mas avanzadas.

Encontramos diferentes tipos de documentación, y es bueno que las evaluemos individualmente. Ellas son:

- Manuales, cuyo objetivo es presentar en forma ordenada y creciente, en cuanto a su complejidad, las diferentes funciones del producto.

- Ayudas interactivas, que presentan información en pantalla (conocida como help) sobre la utilización específica de alguna función. En este caso es importante comparar la facilidad de consulta de las ayudas para un caso en particular.

Tutores interactivos, que toman la forma de cursos en pantalla, presentando ejemplos y requiriendo ciertas acciones simples para confirmar el aprendizaje.

* Integrabilidad

También es importante evaluar la posibilidad de compartir la información generada entre las distintas aplicaciones, en dos niveles:

- Poder incorporar un trabajo de una aplicación en otra, como una imagen.

- Poder incorporar un trabajo de una aplicación en otra, manteniendo las características de la aplicación original

* Compatibilidad

Poder compartir los archivos generados, tanto con otras personas como con otras aplicaciones. Por ejemplo, si generamos una planilla de cálculo y queremos compartirla con un compañero o amigo, ambos deben tener un software compatible. La planilla que grabamos debe poder ser leída por el otro software.

Esto es de fundamental importancia también si cambiamos de versión de programa o de línea de productos, con relación a los archivos que grabamos con la aplicación anterior.

Asimismo, si queremos incorporar en una planilla de calculo los datos de una base de datos, la estructura de la base de datos debe poder ser traducida por la planilla de calculo para incorporarla, o bien debemos poder generar desde la base de datos un archivo intermedio de trabajo en un formato tal que pueda se leído por la planilla de calculo. Para este ultimo caso es habitual utilizar archivos de texto, de impresión o con formatos específicos para el intercambio, conocidos como dif (del ingles data interchange format: formato para intercambio de datos) comunes para intercambiar entre bases de datos o rtf (del ingles rich text format), comunes para intercambiar entre diferentes procesadores de texto.

- Capacidad

Debemos verificar que pueda realizar las tareas que son nuestro objetivo que resuelva.

- Compatibilidad con Internet

Dada la difusión actual y esperada de Internet es importante considerar la compatibilidad de las aplicaciones con Internet, en particular con los documentos del tipo HTML (del ingles hyper text markup language, marcas de lenguaje de hipertexto).

Requerimientos de hardware

Debemos asegurarnos que el software funcione razonablemente en la maquina (el hardware) en que lo vamos a cargar para su utilización.

El vertiginoso avance tanto en el hardware cuanto en el software provoca que las nuevas versiones de software (cada vez mas completas y a la vez complejas) requieran, para funcionar adecuadamente, la capacidad de proceso y almacenamiento de tas nuevas versiones de hardware.

Por lo tanto, no es raro que si tenemos una maquina comprada hace dos o tres años al cargarle la ultima versión de una planilla de calculo, funcione con lentitud o, incluso, no funcione adecuadamente.

Es recomendable verificar este punto antes de realizar la compra, para evaluar la posibilidad de actualizar o reemplazar el hardware en forma simultánea, y no tener que hacerlo forzados por el problema resultante del nuevo software.

Algunas palabras y siglas de uso común:


GUI:Graphic user iterface, la inteface grafica de usuarios es la forma grafica en que el sistema, o la aplicación, se comunican por la pantalla

OLE:Object linking and embedding, el enlace e integración de objetos se refiere a la posibilidad de vincular un objeto de una aplicación con otra aplicación, integrándolo en ella.

Menú contextual:Es un menú dinámico que presenta, como opciones, aquellas posibles según las condiciones del momento.

Portapapeles:Área de memoria en la cual se guardan transitoriamente los objetos copiados para su pegado, bien dentro de la misma aplicación o para otra aplicación.

Carpetas:Directorios representados por iconos que contienen objetos que pueden ser archivos, programas u otros elementos.

¿QUE SON LOS CONTROLADORES?

Un controlador de dispositivo, llamado normalmente controlador (en inglés, device driver) es unprograma informático que permite al sistema operativo interactuar con un periférico, haciendo unaabstracción del hardware y proporcionando una interfaz -posiblemente estandarizada- para usarlo. Se puede esquematizar como un manual de instrucciones que le indica al sistema operativo, cómo debe controlar y comunicarse con un dispositivo en particular. Por tanto, es una pieza esencial, sin la cual no se podría usar el hardware.

Existen tantos tipos de controladores como tipos de periféricos, y es común encontrar más de un controlador posible para el mismo dispositivo, cada uno ofreciendo un nivel distinto de funcionalidades. Por ejemplo, aparte de los oficiales (normalmente disponibles en la página web del fabricante), se pueden encontrar también los proporcionados por el sistema operativo, o también versiones no oficiales hechas por terceros.

Debido a que el software de controladores de dispositivos se ejecuta como parte del sistema operativo, con acceso sin restricciones a todo el equipo, resulta esencial que sólo se permitan los controladores de dispositivos autorizados. La firma y el almacenamiento provisional de los paquetes de controladores de dispositivos en los equipos cliente, mediante las técnicas descritas en esta guía, proporcionan las ventajas siguientes:

  • Seguridad mejorada. Puesto que los usuarios estándar no pueden instalar controladores de dispositivos que no estén firmados o que estén firmados por un editor que no es de confianza, los administradores tendrán un control riguroso respecto a los controladores de dispositivos que pueden usarse en una organización. Podrán impedirse los controladores de dispositivos desconocidos, así como cualquier controlador de dispositivo que el administrador no permita expresamente. Mediante el uso de directivas de grupo, un administrador puede proporcionar a todos los equipos cliente de una organización los certificados de los editores que se consideren de confianza, permitiendo la instalación de los controladores sin intervención del usuario, para comprobar que se trata de una firma digital de confianza.
  • Reducción de los costes de soporte técnico. Los usuarios sólo podrán instalar los dispositivos que hayan sido probados y admitidos por la organización. En consecuencia, el sistema permite mantener la seguridad del equipo, al tiempo que se reducen las solicitudes del departamento de soporte técnico.
  • Experiencia de usuario mejorada. Un paquete de controladores firmado por un editor de confianza y almacenado provisionalmente en el almacén de controladores funciona de modo automático, cuando el usuario conecta el dispositivo al equipo. No se requiere acción alguna por parte del usuario.

En esta sección se incluyen las tareas principales para la seguridad de los paquetes de controladores de dispositivos:

Los controladores de dispositivo (device drivers en inglés) son programas añadidos al núcleo del sistema operativo, concebidos inicialmente para gestionar periféricos y dispositivos especiales. Pueden ser de dos tipos: orientados a caracteres (tales como los dispositivos NUL, AUX, PRN, del sistema) o bien orientados a bloques, constituyendo las conocidas unidades de disco. La diferencia fundamental entre ambos tipos de controladores es que los primeros reciben o envían la información carácter a carácter; en cambio, los controladores de dispositivo de bloques procesan, como su propio nombre indica, bloques de cierta longitud en bytes (sectores). Los controladores de dispositivo, aparecidos con el DOS 2.0, permiten añadir nuevos componentes al ordenador sin necesidad de rediseñar el sistema operativo.

Tradicionalmente han sido programas binarios puros, similares a los COM aunque ensamblados con un ORG 0, a los que se les colocaba una extensión SYS. Sin embargo, no hay razón para que ello sea así, ya que un controlador de dispositivo puede estar incluido dentro de un programa EXE, con la condición de que el código del controlador sea el primer segmento de dicho programa. El EMM386.EXE del MS-DOS 5.0 sorprendió a más de uno en su día, ya que llamaba la atención observar como se podía cargar con DEVICE: lo cierto es que esto es factible incluso desde el DOS 2.0 (pese a lo que pueda indicar algún libro), pero ha sido mantenido casi en secreto. Actualmente es relativamente frecuente encontrar programas de este tipo. La ventaja de un controlador de dispositivo de tipo EXE es que puede ser ejecutado desde el DOS para modificar sus condiciones de operación, sin complicar su uso por parte del usuario con otro programa adicional. Además, un controlador de dispositivo EXE puede superar el limite de los 64 Kb, ya que el DOS se encarga de relocalizar las referencias absolutas a segmentos como en cualquier programa EXE ordinario.


No hay comentarios:

Publicar un comentario