miércoles, 25 de mayo de 2016

SISTEMA OPERATIVO

SISTEMA OPERATIVO


Los primeros computadores eran bastante grandes y de utilización algo complicada. Cuando se quería ejecutar un programa, el operador debía darle la orden de arranque al computador, y manejarlo a través de algunos interruptores y controles especiales. Con el tiempo, se empieza a buscar algún tipo de procedimiento estandarizado para arrancar y controlar al computador, sustituyendo el trabajo del usuario por el de la propia máquina, dando origen al concepto de sistema operativo.



La primera mención de un sistema operativo la realizaron en el año 1953 un grupo de programadores de IBM, quienes utilizaron el concepto de programa monitor, que fue el primer intento destinado simplemente a "hacer trabajar a la máquina". A partir de entonces, los sistemas operativos (programas monitores mejorados), se transformaron rápidamente en una realidad, con la desventaja de que su uso se limitaba a una máquina, aunque por aquella época, no existían demasiadas.

                  

Con la evolución de los computadores, se hacía necesaria la estandarización de estos programas, ya que no podía pensarse en que fueran distintos en cada máquina. En la actualidad un computador está compuesto por dispositivos de entrada/salida, memoria principal, discos y uno o más microprocesadores, y el tener que hacer un programa para una determinada aplicación que además lleve el control de todos estos componentes, sería una tarea muy difícil para el programador. Por ello, es el sistema operativo el que se encarga de controlar todas las partes del computador, para que al usuario le resulte todo más fácil, evitando la programación de la circuitería de la máquina cada vez que se desea utilizarlo.



En la actualidad el sistema operativo proporciona los comandos que le permiten al usuario interactuar con el computador. A su vez, las acciones llevadas a cabo por el sistema operativo pueden ser visualizadas en la pantalla. El sistema operativo es quien controla todos los recursos del computador, y sirve de base para que el usuario pueda trabajar o desarrollar los programas de aplicación con mayor sencillez. De esta manera, cuando se ejecuta un programa de aplicación, éste le pide ciertas tareas al sistema operativo, que se ejecutan directamente sobre el hardware del computador. De no ser por el sistema operativo, el computador sería una máquina muy compleja, que sólo podría ser utilizada por un reducido número de expertos, y con un gran esfuerzo.


El sistema operativo puede definirse desde dos perspectivas:


Definición de sistema operativo como manejador de recursos:
Conjunto de programas encargados de administrar y controlar los recursos del computador. Los recursos  son: el microprocesador, los dispositivos de entrada/salida, las memorias y los archivos (un archivo puede ser un texto, una imagen; un programa, etc.).


Definición de sistema operativo como máquina ampliada:
Conjunto de programas encargados de ocultar al usuario el hardware del computador.


Estructura de los sistemas operativos

Cualquier sistema operativo debe crear el marco adecuado para una eficaz comunicación entre el computador y el usuario, prestando servicios tales como ejecución de programas, operaciones de entrada/salida, detección de errores, manipulación de archivos y protección del computador.

Al principio, los sistemas operativos eran un único programa redactado en lenguaje de máquina. En la actualidad se desarrollan en módulos, capas o niveles que cumplen con funciones específicas, facilitando su construcción y sus continuas modificaciones, a fin de lograr versiones mejoradas. Cada capa, desde el núcleo que es la más interna, hasta el shell que es la más externa, es un conjunto de programas que cumplen con una determinada tarea.

El núcleo o kernel administra al microprocesador. Decide que proceso o tarea tendrá oportunidad de utilizar el microprocesador, llevando el control del estado de los mismos. Un proceso o tarea es un programa en ejecución.

La capa de administración de memoria se encarga de la gestión de las memorias del computador. Lleva un registro de cuáles memorias se están utilizando y cuáles no. En el caso de las memorias en uso, también lleva un control del espacio libre.

La capa de administración de dispositivos de entrada/salida atiende los aspectos ligados a los periféricos. Se encarga de poder establecer la comunicación entre estos y el microprocesador o la memoria principal.

La capa de administración de archivos es la encargada de crear, leer, modificar y borrar los archivos. Lleva el control de la posición y el estado de cada archivo.

El Shell es el intérprete de comandos, y permite relacionar al sistema operativo con el usuario del computador.

Por su parte, el hardware realiza las funciones básicas para la ejecución de instrucciones. No forma parte del sistema operativo.
Esquemáticamente:


Estructura en capas de un sistema operativo



Tipos de sistemas operativos


En función de la cantidad de procesos o usuarios que puedan hacer uso de los recursos del computador, existen distintos tipos de sistemas operativos.

Un sistema operativo monotarea o monoprogramación, es aquel que puede tener un solo proceso (programa) en la memoria, y al cual le asigna todos los recursos. Para poder ejecutar otro proceso debe finalizar el anterior.

Algunos estudios demostraron que del 60 al 80% del tiempo que un proceso está en memoria, realiza operaciones de entrada/salida, y el resto hace uso del microprocesador. En un intento de aumentar la utilización del microprocesador logrando que siempre tenga instrucciones para ejecutar, surge el sistema operativo multitarea o multiprogramación.

Un sistema multitarea o multiprogramación es aquel que permite que en el microprocesador se intercalen instrucciones de diferentes procesos. Con esto se logra tener más de un proceso en memoria, de tal manera que mientras un proceso realiza operaciones de entrada/salida, hay otro que hace uso del microprocesador.

A su vez, un sistema operativo multiproceso, es aquel que utiliza más de un microprocesador simultáneamente, compartiendo la memoria central, las memorias auxiliares y los periféricos. Esto permite una verdadera simultaneidad en la ejecución de procesos.

jueves, 12 de mayo de 2016

Software de aplicación

Software de aplicación

Son las herramientas que utilizan las personas para llevar a cabo sus tareas más cotidianas. Se los denomina también software del usuario, y comprende todos los programas desarrollados para fines específicos y los utilitarios.

Programas a medida

Se utilizan para dar respuesta a necesidades específicas de las personas. Por ejemplo algún programa que se desarrolle para llevar la contabilidad de un determinado negocio o empresa.

Utilitarios

Son programas que ayudan al usuario en tareas específicas y están pensados para cumplir con ciertos objetivos. Los más comunes son:

Procesador de textos: este programa es utilizado para crear y dar formato a archivos de textos, permitiendo el uso del computador como una muy eficaz máquina de escribir. De esta manera se logra escribir, borrar, sustituir, copiar, transferir, reorganizar, compaginar e imprimir letras, palabras o frases completas, almacenar el texto o bien obtenerlo por la impresora, aboliendo para siempre las gomas de borrar, el papel carbónico y otros elementos primitivos de este género. Ejemplo: WORD.



Planilla de cálculos: es un programa que muestra en la pantalla del computador una gran hoja dividida en filas y columnas, en cuyas intersecciones llamadas celdas, pueden ingresarse datos o fórmulas con gran facilidad. El cálculo de las fórmulas se efectúa de forma instantánea, y en la pantalla se visualizan siempre los resultados actualizados. Posee además, herramientas para desarrollar gráficos. Ejemplo: EXCEL


Base de datos: es un programa que permite almacenar datos en algún soporte como por ejemplo un disco, y acceder para consultarlos, modificarlos, borrarlos o agregar nuevos datos a través de un conjunto de herramientas. Ejemplo: ACCESS.


Además de los utilitarios antes mencionados, existen otros para cumplir con una gran variedad de aplicaciones. Algunos de ellos se utilizan para la obtención de dibujos y gráficos, otros para fines educativos, los hay para comunicar computadores, etc.

Paquetes integrados


Se trata de un conjunto de utilitarios que dispone en un solo producto varias funciones, tales como procesador de textos, planilla de cálculos y base de datos. Ejemplo: MS-OFFICE.

Software de programación

Software de programación

Incluye todas las herramientas a partir de las cuales se pueden desarrollar programas

El software de programación comprende a los lenguajes de programación y una serie de elementos que son necesarios para programar. 

Lenguajes de programación 

Los lenguajes de programación han evolucionado de tal forma que en la actualidad se ha llegado a un grado de perfección que nunca se hubiera imaginado. Se los puede clasificar en dos grandes grupos: los lenguajes de bajo nivel que incluyen el lenguaje de máquina y el lenguaje assembler, y los lenguajes de alto nivel. 

Lenguaje de máquina: en los comienzos de la computación a fines de la década del 40 cada programa estaba escrito en el lenguaje de los circuitos internos del computador. Se lo llamó lenguaje de máquina, y las instrucciones estaban expresadas en el sistema de numeración binario. Programar escribiendo instrucciones en binario era una tarea muy complicada reservada solo a los expertos, por tal motivo se hicieron esfuerzos para desarrollar lenguajes más cercanos al modo humano. 




Lenguaje assembler: permite expresar de forma simbólica tanto el código de operación de cada. Instrucción, como las direcciones de memoria donde se encuentran los datos. Si bien facilitó la .tarea de los programadores, no resultó del agrado de los mismos. En la actualidad, personas inescrupulosas hacen uso de este lenguaje con el objetivo de desarrollar virus informáticos. Para programar en assembler es necesario conocer en detalle la arquitectura del computador. 





Lenguajes de alto nivel: para haceltarea de programación másencilly rápidacientíficos e ingenierohan dedicadlaúltimas cuatro décadaa desarrollar lenguajes de programación más fáciles de utilizarLos lenguajes de alto nivel se asemejan más al lenguaje humano surgen con la segunda generación de computadoresLa evolución de estos lenguajes ha distanciado a los programadoredel funcionamiento interno del computadorya que si bien resulta más sencilla la programaciónquienes programan muchas veceno saben que elo que está sucediendo dentro dla máquinaEstos lenguajese componen de palabras en inglésque hacen que en el computadose ejecuten las instrucciones




Algunos lenguajes de programación de alto nivel son:

FORTRAN (FORmula TRANslation Conversode rmulas): fue el primer lenguajde alto nivel aparece a mediados de la década del 50El desarrollo lo lleva a cabo un equipde lBM encabezado por John Backus, y este acontecimiento muy Importante en lhistoria de lprogramaciónhace que IBM se destaque frente a sucompetidores desde aquella épocaSe
aplica en p
rogramas que involucran cálculos numéricoen áreas científicas.

ALGOL (ALGOrithmic Language Lenguaje algotmico): aparece durante 1958 a raíz de un proyecto de Peter Naurcon la colaboración de John BackusA pesar de sus cualidades para el cálculo numéricono tuvo el éxito esperado.

LlSP (LlSt Processing - Procesado de listas): sdesarrolla en 1959 en el Massachusetts Institute of Technology, para la realización de programas de inteligencia artificial.

PROLOG (PROgramación LOGica): surge en la Universidad de Aix-Marseille en Franciapara solucionar problemas matemáticosLuego comienza usarse para resolver problemas de inteligencia artificial.

COBOL (COmmon Business Oriented LanguagLenguaje común orientado a negocios): creado durante 1960 por el Departamento de Defensa de los Estados Unidos para el procesamiento de datos de tipo comercial, no es apto para el cálculo de expresiones matemáticas complejasAún suele utilizarse en grandes equipos.

BASIC (Beginner's All purpose Symbolic Instruction Code Código dinstrucciones simbólicas de propósito general para principiantes): nace en el año 1964 y lo desarrollan John Kemeny y Tom Kurz, quienes piensan en facilitar el empleo de los computadores a estudiantes debido a la complejidad del FORTRAN, el COBOL y otrolenguajes. Su gran difusión se produce cuando es adoptado como lenguaje principal en la PCFue todo un éxito, pero su enorme proliferación dio como origen muchos dialectosEs de aplicación general fácil de aprender.

PASCAL: creado durante 1969 por el profesoNicklauWirth en el Instituto dTecnología dZurich en Suiza, llevel nombre del matemáticofilósofo e inventor francés del siglo XVIII Blaise Pascal. Es un lenguaje adecuado para generar programas entendibles para quieneprogramanya que al seestructurado define previamenttodos los parámetros en JuegoSutiliza en aplicaciones científicas.

PL/l (ProgramminLanguaje/I - Lenguaje dprogramacn/I): aparecen la década del 70 con la idea de resolver problemacientíficos y comerciales uniendo las característicadeFORTRAN y el COBOL, pero resultó un lenguaje mucomplicado.

LOGO: creado en 1976 por Seymour Papert, del Massachusetts Institute of Technology. Se aplica para enseñar a los niños los principios de programación, quienes mueven a una "tortuga" que aparece en la pantalla, a través de órdenes impartidas desde el teclado.

C: fue inventado a mediados de la década del 70 por Dennís Ritchie de los laboratorios Bell de AT&T. Este lenguaje es el resultado de un proceso de desarrollo comenzado con un lenguaje anterior llamado BCPL, creado por Martin Richards que influenció en otro lenguaje denominado B, inventado por Ken Thompson. Es un muy buen lenguaje de aplicación general.

Por otra parte, han surgido en los últimos años lenguajes orientados a objetos, que se basa en ciertas estructuras llamadas objetos, que se dedican a realizar actividades complejas y particulares. El objeto es una entidad con características, propiedades y con la habilidad de reaccionar ante ciertos eventos. Algunos lenguajes orientados a objetos son:

VISUAL BASIC: en 1993 Bill Gates mostró por primera vez un sistema desarrollado con este lenguaje. Permite programar con facilidad en BASIC, pero directamente sobre Windows, de manera que componentes tales como botones y cajas de textos utilizados en este entorno, pueden ubicarse en la pantalla y emplearse a la medida de las necesidades del programador.

C++: fue desarrollado en 1983 en New Jersey por Bjarne Stroustrup de los laboratorios Bell, e incorpora características para programación orientada a objetos. C++ intenta preservar la libertad y el espíritu de C, permitiendo la creación de unidades funcionales de "caja negra" denominadas objetos, que tienen un acceso estrictamente controlado.

JAVA: fue creado por Sun Microsystems a fines de 1995. Con este lenguaje de programación se generan aplicaciones llamadas Applets que tienen la característica de poder funcionar con total autonomía del sistema operativo, es decir que con JAVA se crean aplicaciones que se pueden ejecutar bajo Windows, Unix o Mac.


Programas de soporte


El programador, además de los lenguajes de programación, necesita del apoyo de otros programas que cumplen con funciones determinadas. Algunos de esos programas son:



Editor: para desarrollar algún programa primero hay que escribirlo. El editor de textos le permite al usuario escribir el programa como así también corregirlo. Es similar a un procesador de textos, pero con muchas menos funciones.


Editor del lenguaje de programación PHP.
Fuente: http://www.nusphere.com/graphics/phped_52/php-editor-file-current.png



Programas traductores: el computador sólo es capaz de entender el lenguaje de máquina, por lo tanto no podrá ejecutar directamente un programa escrito en un lenguaje de alto nivel. Es por ello que se requiere de programas traductores.


Al programa escrito en lenguaje de alto nivel se lo conoce con el nombre de programa fuente, mientras que el programa traducido al lenguaje de máquina, se lo denomina programa objeto.
Ejemplo de un programa en lenguaje Scratch y su traducción al lenguaje de máquina
Fuente: http://e-forma.kzgunea.eus/mod/book/view.php?id=3330&chapterid=5016



Ejemplo de un programa en lenguaje pascal y su traducción al lenguaje de máquina

Fuente: http://aprenderaprogramar.com/index.php?option=com_content&view=article&id=895:ique-es-un-compilador-c-mejor-ide-o-entorno-de-desarrollo-codelite-codeblocks-geany-kdevelop-cu00506f&catid=82:curso-basico-programacion-lenguaje-c-desde-cero&Itemid=210



Algunos programas traductores son:


Intérprete: toma cada instrucción del programa escrito en un lenguaje de alto nivel, la analiza y si es correcta, la traduce al lenguaje de máquina y la ejecuta; si no es correcta, emite un aviso de error.



Compilador: traduce el programa fuente completo al lenguaje de la máquina. La compilación consta de tres etapas:



Análisis lexicográfico: reconoce las palabras que constituyen el programa.



Análisis sintáctico: reconoce la estructura de las instrucciones y el programa.



Generación del módulo objeto: traduce el módulo fuente a lenguaje de máquina.



Linker, link editor o editor de enlace: en ciertas ocasiones se necesita relacionar el programa desarrollado, con otro u otros programas o funciones de biblioteca. Es decir, puede darse el caso de tener un programa para realizar un determinado tipo de cálculo y necesitarlo dentro de otro programa, o bien, querer utilizar alguna función de biblioteca del lenguaje, para un determinado fin. Para lograr tal cometido será necesario hacer uso del linker, que es precisamente el que tendrá la función de relacionar o enlazar-los programas citados.



Esquemáticamente el proceso de obtener un programa ejecutable se podría representar como se observa en la figura de la derecha.


Ejemplo de la obtención de un programa ejecutable en PHP que se ejecuta en un navegador


Fuente: FUNDAMENTOS DE COMPUTACION Y COMUNICACIONES - 
GABRIEL DUPERUT