Si buscas hosting web, dominios web, correos empresariales o crear páginas web gratis, ingresa a PaginaMX
Por otro lado, si buscas crear códigos qr online ingresa al Creador de Códigos QR más potente que existe


 

1.1.5 BUSES

El bus (o canal) es un sistema digital que transfiere datos entre los componentes de una computadora o entre computadoras. Está formado por cables o pistas en un circuito impreso, dispositivos como resistores y condensadores además de circuitos integrados.


El propósito de los buses es reducir el número de rutas necesarias para la comunicación entre los distintos componentes, al realizar las comunicaciones a través de un solo canal de datos. Ésta es la razón por la que, a veces, se utiliza la metáfora "autopista de datos".


Un bus se caracteriza por la cantidad de información que se transmite en forma simultánea. Este volumen se expresa en bits y corresponde al número de líneas físicas mediante las cuales se envía la información en forma simultánea.
La velocidad del bus se define a través de su frecuencia (que se expresa en Hercios o Hertz), es decir el número de paquetes de datos que pueden ser enviados o recibidos por segundo. Cada vez que se envían o reciben estos datos podemos hablar de ciclo.


4 BIT DE BUS

En arquitectura de ordenadores, 4 bits es un adjetivo usado para describir enteros, direcciones de memoria u otras unidades de datos que comprenden hasta 4 bits de ancho, o para referirse a una arquitectura de CPU y ALU basadas en registros, bus de direcciones o bus de datos de ese ancho.
El Intel 4004, el primer microprocesador comercial de único chip, fue una CPU de 4 bits.
 

8 BIT BUS

Las CPU de 8 bits normalmente usan un bus de datos de 8 bits y un bus de direcciones de 16 bits lo que causa que su memoria direccionable esté limitada a 64 kilobytes; sin embargo esto no es una "ley natural", ya que existen excepciones.
El primer microprocesador de 8 bits ampliamente utilizado es el Intel 8080, que se usó en computadores de aficionados a finales de los años 1970 y principio de los años 1980, muchos corriendo el sistema operativo CP/M.
 

16 BIT O ISA BUS

Abreviatura de (Arquitectura estándar de la industria). Diseño del BUS de 16 bits utilizado por primera vez en las computadoras PC/AT de IBM. La Arquitectura estándar extendida de la industria (EISA), es una extensión de 32 bits que fue hecha a este estándar de BUS en 1984. La arquitectura estándar de la industria o ISA tiene una velocidad de BUS de 8 MHz, y un caudal de procesamiento (de datos) máximo de 8 megabytes por segundo.
 


32 BIT O EISA BUS

(Arquitectura estándar extendida de la industria). BUS estándar de una computadora personal que extiende el BUS AT tradicional a 32 bits y le permite a más de un procesador compartir el BUS. La Arquitectura estándar extendida de la industria (EISA), fue desarrollada por la llamada Pandilla de Nueve en respuesta a la introducción, por IBM.
El bus de direcciones es un canal del microprocesador totalmente independiente del bus de datos donde se establece la dirección de memoria del dato en tránsito.
El bus de dirección consiste en el conjunto de líneas eléctricas necesarias para establecer una dirección.



INSTRUCCIONES


Cada ciclo en la CPU capta una instrucción de memoria. En una CPU utiliza un registro llamado contador de programa (PC) para seguir la pista dela instrucción.
La secuencia de operaciones realizadas en la ejecución de una instrucción constituye lo que se denomina ciclo de instrucción
Lo más cómodo es considerar que el procesamiento del ciclo de instrucción consta de dos fases:
  • Fase de búsqueda
  • Fase de ejecución



Fase de búsqueda:


1.-Transferir el contenido del Contador de Programa (CP) al registro de Direcciones(RD).
2.-Pasar a registro de Memoria (RM) el dato almacenado en la dirección de memoria indicada por RD.
3.-Transferir el dato leído desde el RM al registro de instrucción (RI).4.

 


Fase de ejecución:


5. Decodificación de la Instrucción. Por ejemplo la Instrucción ADD.
6. Transferencia del campo CD de la instrucción en curso (este campo contiene la dirección de memoria en la que se encuentra el operando, y que se encuentra en el registro RI desde que finalizó la fase de búsqueda), al registro RD.
Se inicia, por tanto, un proceso similar al de la fase de búsqueda, pero en esta ocasión para buscar en memoria el operando de la instrucción.
7. Lanzar un ciclo de lectura de memoria que ponga en RM el operando almacenado en la dirección indicada por RD.
8. Transferencia del dato leído desde el RM al registro intermedio, Ro2, del Operador. Paralelamente se puede transferir el otro operando desde el acumulador, AC, (contenido en él un instante anterior), al registro intermedio Ro1.9.
Realizar la operación de SUMA (ADD) y almacenar el resultado en el AC.
 



CODIGO DE OPERACIÓN


Es la porción de una instrucción de lenguaje de máquina que especifica la operación a ser realizada. Su especificación y formato serán determinados por la arquitectura del conjunto de instrucciones (ISA) del componente de hardware de computador - normalmente un CPU, pero posiblemente una unidad más especializada.
Una instrucción completa de lenguaje de máquina contiene un opcode y, opcionalmente, la especificación de uno o más operando - sobre los que la operación debe actuar.
 


DIRECCIONES


Es un canal del microprocesador totalmente independiente del bus de datos donde se establece la dirección de memoria del dato en tránsito.
El bus de dirección consiste en el conjunto de líneas eléctricas necesarias para establecer una dirección. La capacidad de la memoria que se puede direccionar depende de la cantidad de bits que conforman el bus de direcciones, siendo 2n el tamaño máximo en bits del banco de memoria que se podrá direccionar con n líneas.


En el diagrama se ven los buses de dirección, datos, y control, que van desde la unidad central de procesamiento a la memoria de acceso aleatorio, la memoria de solo lectura, la entrada/salida.
 



INSTRUCCIONES  DE UNA DIRECCION, DOS Y TRES


La clase de operación a realizar, en este caso una suma; es el papel del código de operación; 

2) la dirección de la celda de memoria que contiene el primer dato, o primer operando;
3) la dirección de la celda de memoria que contiene el segundo operando; 
4) la dirección de la celda de memoria donde quiere almacenarse el resultado.
Se deduce la forma de instrucción que contiene un código y tres direcciones:


La operación de suma necesita tres instrucciones para:
1) cargar el primer operando en el acumulador; 
2) sumar el segundo operando con el contenido del acumulador;
3) almacenar en memoria el contenido del acumulador. 

Cada una de estas tres instrucciones comportará un código de operación y una dirección:




MEMORIA VIRTUAL       


La memoria virtual es una técnica de gestión de la memoria que permite que el sistema operativo disponga, tanto para el software de usuario como para sí mismo, de mayor cantidad de memoria que la disponible físicamente.


La mayoría de los ordenadores tienen cuatro tipos de memoria: registros en la CPU, la memoria caché (tanto dentro como fuera del CPU), la memoria RAM y el disco duro. En ese orden, van de menor capacidad y mayor velocidad a mayor capacidad y menor velocidad.




OPERACIÓN BÁSICA


Cuando se usa memoria virtual, o cuando una dirección es leída o escrita por la CPU, una parte del hardware dentro de la computadora traduce las direcciones de memoria generadas por el software (direcciones virtuales) en:
La dirección real de memoria (la dirección de memoria física).
Una indicación de que la dirección de memoria deseada no se encuentra en memoria principal (llamado excepción de memoria virtual)




NECESIDAD DE LA MEMORIA VIRTUAL


Si nos quedamos sin memoria no podremos ejecutar más programas y los que estamos ejecutando tendrán problemas para trabajar con más datos. Además, el uso de memoria virtual puede hacer que tu equipo funcione más lento si es necesario ir por datos al disco duro. Es siempre un compromiso entre la velocidad y la cantidad de datos que el sistema es capaz de procesar.


Jamás una configuración de más memoria virtual podrá ser mejor que una ampliación de memoria RAM. Es más, lo ideal sería tener un equipo que no necesitase tener esta característica activada.


PAGINACIÓN


En sistemas operativos de computadoras, los sistemas de paginación de memoria dividen los programas en pequeñas partes o páginas. Del mismo modo, la memoria es dividida en trozos del mismo tamaño que las páginas llamados marcos de página. De esta forma, la cantidad de memoria desperdiciada por un proceso es el final de su última página, lo que minimiza la fragmentación interna y evita la externa.




TABLA DE PAGINACIÓN 


Las tablas de paginación o tablas de páginas son una parte integral del Sistema de Memoria Virtual en sistemas operativos, cuando se utiliza paginación. Son usadas para realizar las traducciones de direcciones de memoria virtual (o lógica) a memoria real (o física) y en general el sistema operativo mantiene una por cada proceso corriendo en el sistema.




CARGA DE PÁGINAS  


En la tabla de páginas de un proceso, se encuentra la ubicación del marco que contiene a cada una de sus páginas. Las direcciones lógicas ahora se forman como un número de página y de un desplazamiento dentro de esa página (conocido comúnmente como offset).


El número de página es usado como un índice dentro de la tabla de páginas, y una vez obtenida la dirección del marco de memoria, se utiliza el desplazamiento para componer la dirección real o dirección física.
Este proceso se realiza en una parte del computador específicamente diseñada para esta tarea, es decir, es un proceso hardware y no software.
De esta forma, cuando un proceso es cargado en memoria, se cargan todas sus páginas en marcos libres y se completa su tabla de páginas.



METODO FIFO



Primera en entrar, primera en salir. Supone que una página introducida hace mucho tiempo puede haber caído en desuso Cuando se produce un FdP. y no hay marcos libres, se quita la página que lleve más tiempo en memoria Buffer circular de marcos de un proceso + puntero Round Robin para eliminar páginas de memoria Sencillo de implementar
Puede no ser efectivo:
Regiones muy usadas durante toda la ejecución



Método LRU



1.-Página usada hace más tiempo
(Least Recently Used)
2.-Basado en Principio de Cercanía
Mirar al pasado y estimar cuál podría ser el uso de la página en función de él



FRAGMENTACIÓN



Los métodos de administración de la memoria principal, que no utilizan Memoria Virtual y esquemas de Paginación  y Segmentación, es decir que llevan a las direcciones directamente al bus de la memoria, tienen un inconveniente: producen lo que se denomina fragmentación.


La fragmentación, que son huecos en la memoria que no pueden usarse debido a lo pequeño de su espacio, provoca un desperdicio de memoria principal.


Una posible solución para la fragmentación externa es permitir que espacio de direcciones lógicas lleve a cabo un proceso en direcciones no contiguas, así permitiendo al proceso ubicarse en cualquier espacio de memoria física que esté disponible, aunque esté dividida. Una forma de implementar esta solución es a través del uso de un esquema de paginación.

La paginación evita el considerable problema de ajustar los pedazos de memoria de tamaños variables que han sufrido los esquemas de manejo de memoria anteriores. Dado a sus ventajas sobre los métodos previos, la paginación, en sus diversas formas, es usada en muchos sistemas operativos.



EVOLUCIÓN DE LOS COMPONENTES DE UN SISTEMA DE PROGRAMACIÓN
ENSAMBLADOR



El lenguaje ensamblador constituye el primer intento de sustitución del lenguaje máquina por uno más cercano al usado por los humanos. Este acercamiento a las personas se plasma en las siguientes aportaciones:
Uso de una notación simbólica o nemotécnica para representar los códigos de operación
Direccionamiento simbólico
Se permite el uso de comentarios entre las líneas de instrucciones, haciendo posible la redacción de programas más legibles.


Aparte de esto él LE presenta la mayoría de los inconvenientes del lenguaje máquina, como son su repertorio muy reducido de instrucciones, el rígido formato de instrucciones, la baja potabilidad y la fuerte dependencia del hardware. Por otro lado mantiene la ventaja del uso óptimo de los recursos hardware, permitiendo la obtención de un código muy eficiente.
Ese tipo de lenguajes hacen corresponder a cada instrucción en ensamblador una instrucción en código máquina. Esta transducción es llevada a cabo por un programa traductor denominado Ensamblador.



Para solventar en cierta medida la limitación que supone poseer un repertorio de instrucciones, tan reducido, se han desarrollado unos ensambladores especiales denominados macroensambladores.
Los lenguajes que traducen los macroensambladores disponen de macroinstrucciones cuya traducción da lugar a varias instrucciones máquina y no a una sola.



Dado que el lenguaje ensamblador es6ta fuertemente condicionado por la arquitectura del ordenador que soporta, los programadores no suelen escribir programas de tamaño considerable en ensamblador. Más bien usan este lenguaje para afinar partes importantes de programas escritos en lenguajes de más alto nivel.



Como señalado a propósito del "Primer Nivel" de los lenguajes, el Ensamblador es directamente dependiente de los circuitos electrónicos de los procesadores (que constituyen el núcleo de los computadoras), por lo cual escribir en Ensamblador sigue siendo una tarea muy compleja, a lo cual hay que sumar que el código varía de un procesador a otro aunque existe ya una jerga común para ciertas operaciones como las aritméticas y lógicas, por ejemplo:


ADD para sumar (sin reserva) ADC para sumar con reserva ("add with carry") M para multiplicar ORA para él "o" lógico ("or and") EOR para él "o" exclusivo (o bien... o bien...)
Las instrucciones de este tipo deben ir seguidas sea de dos valores (dos números a sumar o multiplicar por ejemplo) o del nombre de una variable. Cuando se ejecute el programa, el valor de una variable nombrada deberá provenir de una operación anterior que haya terminado por una instrucción del tipo "almacenar el resultado de la operación en la variable X", haya extraído el valor de la variable de una determinada celda de memoria, o Haya efectuado una interacción con el usuario, por ejemplo escribir en pantalla "Escriba el valor de X".
(Estas son "instrucciones de asignación").


El Ensamblador contiene además un conjunto mínimo de instrucciones de alternación e iteración indispensables para que un programa pueda funcionar como tal.




CARGADORES



Un cargador es un programa del sistema que realiza la función de carga, pero muchos cargadores también incluyen relocalización y ligado. Algunos sistemas tienen un ligador para realizar las operaciones de enlace, y un cargador separado para manejar la relocalización y la carga. Los procesos de ensamblado y carga están íntimamente relacionados.



Las funciones más importantes de un cargador son: colocar un programa objeto en la memoria e iniciar su ejecución. Si tenemos un cargador que no necesita realizar las funciones de ligado y relocalización de programas, su operación es muy simple, pues todas las funciones se realizan en un solo paso.


Se revisa el registro de encabezamiento para comprobar se ha presentado el programa correcto para la carga (entrando en la memoria disponible). A medida que se lee cada registro de texto, el código objeto que contiene pasa a la dirección de memoria indicada. Cuando se encuentra el registro de fin, el cargador salta a la dirección especificada para iniciar la ejecución del programa cargado.


Un programa objeto contiene instrucciones traducidas y valores de datos del programa fuente, y específica direcciones en memoria donde se cargarán estos elementos.

Carga, que lleva el programa objeto a la memoria para su ejecución.
Relocalización, que modifica el programa objeto de forma que puede cargarse en una dirección diferente de la localidad especificada originalmente.

Ligado, que combina dos o más programas objeto independientes y proporciona la información necesaria para realizar referencias entre ellos.

Un cargador es un programa del sistema que realiza la función de carga, pero muchos cargadores también incluyen relocalización y ligado. Algunos sistemas tienen un ligador( o editor de ligado) para realizar las operaciones de enlace, y un cargador separado para manera la relocalización y la carga.
 

COMPILADORES



Un compilador es un programa informático que traduce un programa escrito en un lenguaje de programación a otro lenguaje de programación, generando un programa equivalente que la máquina será capaz de interpretar. Usualmente el segundo lenguaje es lenguaje de máquina, pero también puede ser un código intermedio (bytecode), o simplemente texto. Este proceso de traducción se conoce como compilación.


Un compilador es un programa que permite traducir el código fuente de un programa en lenguaje de alto nivel, a otro lenguaje de nivel inferior (típicamente lenguaje de máquina). De esta manera un programador puede diseñar un programa en un lenguaje mucho más cercano a cómo piensa un ser humano, para luego compilarlo a un programa más manejable por una computadora.



SISTEMAS FORMALES



Un sistema formal es un tipo de sistema lógico-deductivo constituido por un lenguaje formal, una gramática formal que restringe cuales son las expresiones correctamente formadas de dicho lenguaje y las reglas de inferencia y un conjunto de axiomas que permite encontrar las proposiciones derivables de dichos axiomas. Los sistemas formales también han encontrado aplicación dentro de la informática, la teoría de la información, y la estadística, para proporcionar una definición rigurosa del concepto de demostración. La noción de sistema formal corresponde a una formalización rigurosa y completa del concepto de sistema axiomático.


Llamamos formalización al acto de crear un sistema formal, con la que pretendemos capturar y abstraer la esencia de determinadas características del mundo real, en un modelo conceptual expresado en un determinado lenguaje formal.
En matemáticas, las demostraciones formales pueden expresarse en el lenguaje de los sistemas formales, consistentes en axiomas y reglas de inferencia.


Los teoremas pueden ser obtenidos por medio de demostraciones formales. Este punto de vista de las matemáticas ha sido denominado formalista; aunque en muchas ocasiones este término conlleva una acepción peyorativa. En ese sentido David Hilbert creó la disciplina denominada metamatemática dedicada al estudio de los sistemas formales, entendiendo que el lenguaje utilizado para ello, denominado metalenguaje era distinto del lenguaje del sistema formal que se pretendía estudiar. Con otra denominación, el metalenguaje o lenguaje obtenido mediante la gramática formal se llama también, en ocasiones, lenguaje objeto.


EVOLUCION DE LOS SISTEMAS OPERATIVOS

Un sistema operativo es un conjunto de programas destinado a permitir el uso apropiado de las partes físicas del ordenador (hardware).
Los sistemas operativos proveen un conjunto de funciones necesarias y usadas por diversos programas de aplicaciones de una computadora, y los vínculos necesarios para controlar y sincronizar el hardware de la misma.



En las primeras computadoras, que no tenían sistema operativo cada programa necesitaba la más detallada especificación del hardware para ejecutarse correctamente y desarrollar tareas estándares, y sus propios drivers para los dispositivos periféricos como impresoras y lectores de tarjetas perforadas. El incremento de la complejidad del hardware y los programas de aplicaciones eventualmente hicieron del sistema operativo una necesidad.
 
Los primeros sistemas operativos fueron desarrollados por cada usuario para adecuar el uso de su propia computadora central, y es en 1956 que la General Motors desarrolla lo que es hoy considerado el primer sistema, el GM-NAA I/O, para su IBM 704.


LA DÉCADA DE 1940

A finales de la década de 1940, con lo que se podría considerar la aparición de la primera generación de computadoras, se accedía directamente a la consola de la computadora desde la cual se actuaba sobre una serie de micro interruptores que permitían introducir directamente el programa en la memoria de la computadora (en realidad al existir tan pocas computadoras todos podrían considerarse prototipos y cada constructor lo hacía sin seguir ningún criterio predeterminado). Por aquel entonces no existían los sistemas operativos, y los programadores debían interactuar con el hardware del computador sin ayuda externa.



Esto hacía que el tiempo de preparación para realizar una tarea fuera considerable. Además para poder utilizar la computadora debía hacerse por turnos. Para ello, en muchas instalaciones, se rellenaba un formulario de reserva en el que se indicaba el tiempo que el programador necesitaba para realizar su trabajo. En aquel entonces las computadoras eran máquinas muy costosas lo que hacía que estuvieran muy solicitadas y que sólo pudieran utilizarse en periodos breves de tiempo. Todo se hacía en lenguaje de máquina.


LA DÉCADA DE 1950 (SISTEMA BATCH)

A principios de los años 50 con el objeto de facilitar la interacción entre persona y computadora, los sistemas operativos hacen una aparición discreta y bastante simple, con conceptos tales como el monitor residente, el proceso por lotes y el almacenamiento temporal.


Monitor residente

Su funcionamiento era bastante simple, se limitaba a cargar los programas a memoria, leyéndolos de una cinta o de tarjetas perforadas, y ejecutarlos. El problema era encontrar una forma de optimizar el tiempo entre la retirada de un trabajo y el montaje del siguiente.


Procesamiento por lotes

Como solución para optimizar, en una misma cinta o conjunto de tarjetas, se cargaban varios programas, de forma que se ejecutaran uno a continuación de otro sin perder apenas tiempo en la transición.



Almacenamiento temporal

Su objetivo era disminuir el tiempo de carga de los programas, haciendo simultánea la carga del programa o la salida de datos con la ejecución de la siguiente tarea. Para ello se utilizaban dos técnicas, el buffering y el spooling.



LA DÉCADA DE 1960

En los años 60 se produjeron cambios notorios en varios campos de la informática, con la aparición del circuito integrado la mayoría orientados a seguir incrementando el potencial de los ordenadores. Para ello se utilizaban técnicas de lo más diversas.



Multiprogramación

En un sistema multi programado la memoria principal alberga a más de un programa de usuario. La CPU ejecuta instrucciones de un programa, cuando el que se encuentra en ejecución realiza una operación de E/S; en lugar de esperar a que termine la operación de E/S, se pasa a ejecutar otro programa.

Si éste realiza, a su vez, otra operación de E/S, se mandan las órdenes oportunas al controlador, y pasa a ejecutarse otro. De esta forma es posible, teniendo almacenado un conjunto adecuado de tareas en cada momento, utilizar de manera óptima los recursos disponibles.



Tiempo compartido

Artículo principal: Tiempo compartido.
En este punto tenemos un sistema que hace buen uso de la electrónica disponible, pero adolece la falta de interactividad; para conseguirla debe convertirse en un sistema multiusuario, en el cual existen varios usuarios con un terminal en línea, utilizando el modo de operación de tiempo compartido.


En estos sistemas los programas de los distintos usuarios residen en memoria. Al realizar una operación de E/S los programas ceden la CPU a otro programa, al igual que en la multiprogramación. Pero, a diferencia de ésta, cuando un programa lleva cierto tiempo ejecutándose el sistema operativo lo detiene para que se ejecute otra aplicación.



Tiempo real

Estos sistemas se usan en entornos donde se deben aceptar y procesar en tiempos muy breves un gran número de sucesos, en su mayoría externos al ordenador. Si el sistema no respeta las restricciones de tiempo en las que las operaciones deben entregar su resultado se dice que ha fallado. El tiempo de respuesta a su vez debe servir para resolver el problema o hecho planteado. El procesamiento de archivos se hace de una forma continua, pues se procesa el archivo antes de que entre el siguiente, sus primeros usos fueron y siguen siendo en telecomunicaciones.




Multiprocesador

Diseño que no se encuentran en ordenadores monoprocesador. Estos problemas derivan del hecho de que dos programas pueden ejecutarse simultáneamente y, potencialmente, pueden interferirse entre sí. Concretamente, en lo que se refiere a las lecturas y escrituras en memoria. Existen dos arquitecturas que resuelven estos problemas:


La arquitectura NUMA, donde cada procesador tiene acceso y control exclusivo a una parte de la memoria. La arquitectura SMP, donde todos los procesadores comparten toda la memoria. Esta última debe lidiar con el problema de la coherencia de caché. Cada microprocesador cuenta con su propia memoria cache local. De manera que cuando un microprocesador escribe en una dirección de memoria, lo hace únicamente sobre su copia local en caché. Si otro microprocesador tiene almacenada la misma dirección de memoria en su caché, resultará que trabaja con una copia obsoleta del dato almacenado.


Para que un multiprocesador opere correctamente necesita un sistema operativo especialmente diseñado para ello. La mayoría de los sistemas operativos actuales poseen esta capacidad.



Sistemas operativos desarrollados

Además del Atlas Supervisor y el OS/360, los años 1970 marcaron el inicio de UNIX, a mediados de los 60 aparece Multics, sistema operativo multiusuario - multitarea desarrollado por los laboratorios Bell de AT&T y Unix, convirtiéndolo en uno de los pocos SO escritos en un lenguaje de alto nivel. En el campo de la programación lógica se dio a luz la primera implementación de Prolog, y en la revolucionaria orientación a objetos, Smalltalk.



Inconvenientes de los Sistemas operativos

Se trataba de sistemas grandes, complejos y costosos, pues antes no se había construido nada similar y muchos de los proyectos desarrollados terminaron con costos muy por encima del presupuesto y mucho después de lo que se marcaba como fecha de finalización. Además, aunque formaban una capa entre el hardware y el usuario, éste debía conocer un complejo lenguaje de control para realizar sus trabajos. Otro de los inconvenient




Características de los nuevos sistemas



Sistemas operativos desarrollados

MULTICS (Multiplexed Information and Computing Service): Originalmente era un proyecto cooperativo liderado por Fernando Corbató del MIT, con General Electric y los laboratorios Bell, que comenzó en los 60, pero los laboratorios Bell abandonaron en 1969 para comenzar a crear el sistema UNIX. Se desarrolló inicialmente para el mainframe GE-645, un sistema de 36 bits; después fue soportado por la serie de máquinas Honeywell 6180.


 
Fue uno de los primeros. Además, los traducía a instrucciones de alto nivel destinadas a BDOS.

 
BDOS (Basic Disk Operating System): Traductor de las instrucciones en llamadas a la BIOS.
CP/M: (Control Program for Microcomputers) fue un sistema operativo desarrollado por Gary Kildall para el microprocesador Intel 8080 (los Intel 8085 y Zilog Z80 podían ejecutar directamente el código del 8080, aunque lo normal era que se entregara el código recompilado para el microprocesador de la máquina).


Se trataba del sistema operativo más popular entre las computadoras personales en los años 70. Aunque fue modificado para ejecutarse en un IBM PC, el hecho que IBM eligiera MS-DOS, al fracasar las negociaciones con Digital Research, hizo que el uso de CP/M disminuyera hasta hacerlo desaparecer. CP/M originalmente significaba Control Program/Monitor. Más tarde fue renombrado a Control Program for Microcomputers.


En la época, la barra inclinada (/) tenía el significado de "diseñado para". No obstante, Gary Kildall redefinió el significado del acrónimo poco después. CP/M se convirtió en un estándar de industria para los primeros micro-ordenadores.
El hecho de que, años después, IBM eligiera para sus PC a MS-DOS supuso su mayor fracaso, por lo que acabó desapareciendo.


LA DÉCADA DE 1980


Con la creación de los circuitos LSI -integración a gran escala-, chips que contenían miles de transistores en un centímetro cuadrado de silicio, empezó el auge de los ordenadores personales. En éstos se dejó un poco de lado el rendimiento y se buscó más que el sistema operativo fuera amigable, surgiendo menús, e interfaces gráficas. Esto reducía la rapidez de las aplicaciones, pero se volvían más prácticos y simples para los usuarios.

En esta época, siguieron utilizándose lenguajes ya existentes, como Smalltalk o C, y nacieron otros nuevos, de los cuales se podrían destacar: C++ y Eiffel dentro del paradigma de la orientación a objetos, y Haskell y Miranda en el campo de la programación declarativa. Un avance importante que se estableció a mediados de la década de 1980 fue el desarrollo de redes de computadoras personales que corrían sistemas operativos en red y sistemas operativos distribuidos.

En esta escena, dos sistemas operativos eran los mayoritarios: MS-DOS (Micro Soft Disk Operating System), escrito por Microsoft para IBM PC y otras computadoras que utilizaban la CPU Intel 8088 y sus sucesores, y UNIX, que dominaba en los ordenadores personales que hacían uso del Motorola 68000.

Mac OS


El lanzamiento oficial del ordenador Macintosh en enero de 1984, al precio de US $1,995 (después cambiado a $2,495 dólares). Incluía su sistema operativo Mac OS cuya características novedosas era una GUI (Graphic User Interface), Multitareas y Mouse. Provocó diferentes reacciones entre los usuarios acostumbrados a la línea de comandos y algunos tachando el uso del Mouse como juguete.


MS-DOS


En 1981 Microsoft compró un sistema operativo llamado QDOS que, tras realizar unas pocas modificaciones, se convirtió en la primera versión de MS-DOS (Micro Soft Disk Operating System). A partir de aquí se sucedieron una serie de cambios hasta llegar a la versión 7.1, versión 8 en Windows Milenium, a partir de la cual MS-DOS dejó de existir como un componente del Sistema Operativo.



Microsoft Windows


A mediados de los años 80 se crea este sistema operativo, pero no es hasta la salida de (Windows 95) que se le puede considerar un sistema operativo, solo era una interfaz gráfica del (MS-DOS) en el cual se disponía de unos diskettes para correr los programas. Hoy en día es el sistema operativo más difundido en el ámbito doméstico aunque también hay versiones para servidores como Windows NT. (Microsoft) ha diseñado también algunas versiones para superordenadores, pero sin mucho éxito. Años después se hizo el (Windows 98) que era el más eficaz de esa época.


Después se crearía el sistema operativo de (Windows ME) (Windows Millenium Edition) aproximadamente entre el año 1999 y el año 2000. Un año después se crearía el sistema operativo de (Windows 2000) en ese mismo año. Después le seguiría el sistema operativo más utilizado en la actualidad, (Windows XP) y otros sistemas operativos de esta familia especializados en las empresas. (Windows 7) (Windows Seven) salió al mercado el 22 de octubre del 2009, dejó atrás a (Windows Vista), que tuvo innumerables críticas durante el poco tiempo que duró en el mercado. El más reciente hasta la fecha es (Windows 8) (Windows Eight) lanzado en octubre de 2012.


LA DÉCADA DE 1990
GNU/Linux


Este sistema al parecer es una versión mejorada de Unix, basado en el estándar POSIX, un sistema que en principio trabajaba en modo comandos. Hoy en día dispone de Ventanas, gracias a un servidor gráfico y a gestores de ventanas como KDE, GNOME entre muchos. Recientemente GNU/Linux dispone de un aplicativo que convierte las ventanas en un entorno 3D como por ejemplo Beryl o Compiz. Lo que permite utilizar Linux de una forma visual atractiva.


Existen muchas distribuciones actuales de Gnu/Linux (Debian, Fedora, Ubuntu, Slackware, etc.) donde todas ellas tienen en común que ocupan el mismo núcleo Linux. Dentro de las cualidades de Gnu/Linux se puede caracterizar el hecho de que la navegación a través de la web es sin riegos de ser afectada por virus, esto debido al sistema de permisos implementado, el cual no deja correr ninguna aplicación sin los permisos necesarios, permisos que son otorgados por el usuario. A todo esto se suma que los virus que vienen en dispositivos desmontables tampoco afectan al sistema, debido al mismo sistema de permisos.


ESTRUCTURA DE LA MAQUINA. LENGUAJE ENSAMBLADO


Fue el primer lenguaje utilizado en la programación para las primeras computadoras, pero dejó de utilizarse por su dificultad y complicación, siendo sustituido por otros lenguajes más fáciles de aprender y utilizar.


LENGUAJE DE MÁQUINA


También conocido como código máquina
Es el sistema de códigos directamente interpretable por un circuito micro programable, como el microprocesador de una computadora.
Este lenguaje está compuesto por un conjunto de instrucciones que determinan acciones al ser tomadas por la máquina.
El lenguaje máquina es el único que entiende directamente la computadora, utiliza el alfabeto binario que consta de los dos únicos símbolos 0 y 1, denominados bits.
Todo código fuente en última instancia debe llevarse a un lenguaje máquina mediante el proceso de compilación o interpretación para que la computadora pueda ejecutarlo.

El lenguaje máquina es el único que entiende directamente la computadora, utiliza el alfabeto binario que consta de los dos únicos símbolos 0 y 1, denominados bits.
Todo código fuente en última instancia debe llevarse a un lenguaje máquina mediante el proceso de compilación o interpretación para que la computadora pueda ejecutarlo.


VENTAJAS DEL LENGUAJE MÁQUINA


Posibilidad de cargar (transferir un programa a la memoria) sin necesidad de traducción posterior, lo que supone una velocidad de ejecución superior a cualquier otro lenguaje de programación.


DESVENTAJAS DEL LENGUAJE MÁQUINA


1.-Dificultad y lentitud en la codificación.
2.-Poca fiabilidad.
3.-Gran dificultad para verificar y poner a punto los programas.
4.-Los programas solo son ejecutables en el mismo procesador (CPU).



3.- ENSAMBLADORES


3.1 PROCEDIMIENTO GENERAL DE DISEÑO

1.- Se puede acceder a cualquier localidad de la memoria RAM sin ninguna restricción.
2.- Se pueden programar virus, debido a que se tiene un acceso total a casi todo el hardware de la computadora vía interrupciones de software.
 3.- Se pueden programar drivers de cualquier dispositivo.
4.- Se puede acceder directamente a los registros internos del CPU.
5.- Se puede acceder directamente a los dispositivos de entrada y/o salida.

Los programas objeto generados a través del ensamblador son más veloces que los generados en cualquier otro lenguaje, debido a que una instrucción en ensamblador corresponde a una instrucción en lenguaje máquina.


3.2 DISEÑO DE ENSAMBLADOR


El lenguaje ensamblador es un tipo de lenguaje de bajo nivel utilizado para escribir programas informáticos, y constituye la representación más directa del código máquina específico para cada arquitectura de microprocesador.
El uso del lenguaje ensamblador es para profesionistas en el área de computación que están obligados a conocer este lenguaje, ya que proporciona una serie de características que no se pueden encontrar en los lenguajes de alto nivel.

La unidad de procesamiento central (CPU) es donde se manipulan los datos. En una microcomputadora, el CPU completo está contenido en un chip muy pequeño llamado microprocesador.
Todas las CPU tienen por lo menos dos partes básicas, la unidad de control y la unidad aritmética lógica.

Todos los recursos de la computadora son administrados desde la unidad de control, cuya función es coordinar todas las actividades de la computadora.
 
La unidad de control contiene las instrucciones de la CPU para llevar a cabo comandos. El conjunto de instrucciones, que está incluido dentro de los circuitos de la unidad de control, es una lista de todas las operaciones que realiza la CPU.
 

 

3.2.1.- PLANTAMIENTO DEL PROBLEMA


Conocer más a fondo, que ventajas se deben tener para el conocimiento de los lenguajes ensamblador, que función tiende a realizar y que tan importante es que se traduzcan a lenguaje máquina.
 
Dentro de este se sabe que existen diferentes tipos de lenguajes que nos permitirá visualizar en la pantalla la imagen que deseemos.
 


DEFINICION DEL PROBLEMA


 
En la actualidad muchos no tienen conocimiento de que función ejerce el lenguaje ensamblador, algunas personas, solo utilizan las computadoras para hacer uso del internet, pero no se ponen a ver qué es lo que aparece en la pantalla.
 
El lenguaje ensamblador nos va a permitir tener conocimientos de que funciones debe de realizar para que podamos ver la imagen que queremos en nuestra pantalla.
 


OBJETIVO GENERAL


 
Dar a conocer cómo es que aparecen las imágenes que estamos visualizando en la pantalla y por qué toman esa forma.
 
Que muchas personas que puedan tener un conocimiento básico del lenguaje ensamblador, mediante esta información que esperemos que sea de gran utilidad para que en un futuro su uso sea satisfactorio.
 
También para facilitarles la información y que pueda estar al alcance de todas la gente que quiera adquirir este conocimiento.
 


3.2.2.- ESTRUCTURA DE LOS DATOS


Las estructuras de datos son secciones lineales dentro de la memoria que representan un conjunto de datos.
Una estructura de datos a nivel ensamblador es exactamente igual. Se trata de una zona continua de la memoria que contiene datos. Y al igual que el mapa no hay una verdadera división que defina realmente donde comienza uno y termina otro. Ni siquiera el programa sabe realmente donde se marcan estas divisiones porque todo esto es determinado por el compilador.
 

 

3.2.3.- ESTRUCTURA DE LAS BASES DE DATOS


Una base de datos de red está formada por una colección de registros, los cuales están conectados entre sí por medio de enlaces.
Registro: Es una colección de campos (atributos)
Campos: Contiene almacenado solamente un valor.

Enlace.- Asociación entre dos registros, así que podemos verla como una relación estrictamente binaria.
Estructura de datos de red, abarca más que la estructura de árbol porque un nodo "hijo" en la estructura de red puede tener más de un padre.


Diagramas de estructura de datos.


Es un esquema que representa el diseño de una base de datos de red. Este modelo se basa en representaciones entre registros por medio de ligas, existen relaciones en las que participan solo dos entidades (binarias) y relaciones en las que participan más de dos entidades (generales) ya sea con o sin atributo descriptivo en la relación.
La forma de diagramado consta de dos componentes básicos:

Celdas: representan a los campos del registro.
Líneas: representan a los enlaces entre los registros.
Su representación gráfica se basa en el acomodo de los campos de un  registro en un conjunto de celdas que se ligan con otros registros.


3.2.4.- ALGORITMOS


Es un conjunto de reglas que permiten obtener un resultado determinado a partir de ciertas reglas definidas.
Algoritmo.- Es una secuencia finita de instrucciones, cada una de las cuales tiene un significado preciso y puede ejecutarse con una cantidad finita de esfuerzo en un tiempo finito. Ha de tener las siguientes características: Legible, correcto, modular, eficiente, estructurado, no ambiguo y a ser posible se ha de desarrollar en el menor tiempo posible.
 
 
 

Características de un algoritmo de computador:


1.-Correcto
2.-Legible
3.-eficiente
4.-Diseño de algoritmos.
Fases:
Diseño: se dan las especificaciones en lenguaje natural y se crea un primer modelo matemático apropiado. La solución en esta etapa es un algoritmo expresado de manera muy informal.
Implementación: El programador convierte el algoritmo en código, siguiendo alguna de estas 3 metodologías.


TOP-DOWN

se alcanza el programa sustituyendo las palabras de las palabras del pseudocódigo por secuencias de proposiciones cada vez más detalladas, en un llamado refinamiento progresivo.


BOTTON-UP

parte de las herramientas más primitivas hasta que se llega al programa.
Pruebas: Es un material que se pasa al programa para detectar posibles errores. Esto no quiere decir que el diseño no tenga errores, puede tenerlos para otros datos.


3.2.5.- ORGANIZACIÓN MODULAR


Son ensambladores que aparecieron como respuesta a una nueva arquitectura de procesadores de 32 bits, muchos de ellos teniendo compatibilidad hacia atrás pudiendo trabajar con programas con estructuras de 16 bits. Además de realizar la misma tarea que los anteriores, permitiendo también el uso de macros, permiten utilizar estructuras de programación más complejas propias de los lenguajes de alto nivel.


3.3.- PROCESAMIENTOS DE TABLAS: BUSQUEDA Y CLASIFICACION



3.3.1.- BUSQUEDA LINEAL


La búsqueda lineal probablemente es sencilla de implementar e intuitiva. Básicamente consiste en buscar de manera secuencial un elemento, es decir, preguntar si el elemento buscado es igual al primero, segundo, tercero y así sucesivamente hasta encontrar el deseado. Entonces este algoritmo tiene una complejidad de O(n).


3.3.2.- BUSQUEDA BINARIA


La búsqueda binaria al igual que otros algoritmos como el quicksort utiliza la técnica divide y vencerás. Uno de los requisitos antes de ejecutar la búsqueda binaria, es que el conjunto de elementos debe de estar ordenado. Supongamos que tenemos el siguiente array.
57 53 21 37 17 36 22 3 44 97 89 26 31 47 8 17
Debemos ordenarlo
3 8 17 17 21 22 26 31 36 37 44 47 53 57 89 97

 

3.3.3 CLASIFICACION


ENSAMBLADORES CRUZADOS:

permiten el soporte de medios físicos como pantallas, impresoras, teclado, etc. y la programación que ofrecen maquinas potentes que luego serán ejecutados en sistemas especializados.

ENSAMBLADORES RESIDENTES:

permanecen en la memoria de la computadora, y cargan para su ejecución al programa objeto producido. Es el indicado para el desarrollo de pequeños sistemas de control.

MACROENSAMBLADORES:

permiten el uso de macroinstrucciones, son programas grandes que no permanecen en memoria una vez que se ha generado el código objeto, normalmente son programas complejos y residentes.

MICROENSAMBLADORES:

Indica al interprete las instrucciones de cómo debe actuar la CPU.

ENSAMBLADORES DE UNA FASE:

leen una línea de programa fuente y la traducen directamente para producir una instrucción en lenguaje máquina, estos ensambladores son sencillos, baratos y ocupan poco espacio.

ENSAMBLADORES DE DOS FASES:

se llaman así por que realizan la traducción en dos etapas, en la primera fase revisan el código fuente y lo construyen en una tabla de símbolos, en la segunda fase vuelven a leer el programa fuente y pueden tardar por completo. Estos ensambladores son los más utilizados en la actualidad.

4.- MACROLENGUAJES Y MACROPROCESADORES


4.1.- MACROINSTRUCCIONES


Una macroinstrucción o macro, se refiere en el mundo de la informática a una instrucción en lenguaje ensamblador que es equivalente a otro grupo de instrucciones que, en conjunto, realizan una tarea más compleja.
 Esta equivalencia es definida por el programador con objeto de simplificar la tarea de escribir programas y reutilizar el código escrito. Este concepto es similar al de la subrutina pero se diferencia de ésta en su funcionamiento. Una macroinstrucción que aparece en un fichero fuente, es sustituida por el programa ensamblador en el fichero objeto por el grupo de instrucciones en lenguaje ensamblador que se han definido. Esta acción se denomina comúnmente expandir la macro.


CARACTERISTICAS

Un macroinstrucción es por tanto una instrucción compleja, formada por otras instrucciones más sencillas.
 Además tiene que estar almacenada, el término no se aplica a una serie de instrucciones escritas en la línea de comandos enlazadas unas con otras por redirección de sus resultados o para su ejecución consecutiva.
La diferencia entre un macroinstrucción y un programa es que en las macroinstrucciones la ejecución es secuencial y no existe otro concepto del flujo de programa que por tanto, no puede bifurcarse.


MACROS EN PROGRAMACION


 Con el fin de evitar al programador la tediosa repetición de partes idénticas de un programa, los ensambladores y compiladores cuentan con macro procesadores que permiten definir una abreviatura para representar una parte de un programa y utilizar esa abreviatura cuantas veces sea necesario. Para utilizar una macro, primero hay que declararla. En la declaración se establece el nombre que se le dará a la macro y el conjunto de instrucciones que representará.

El programador escribirá el nombre de la macro en cada uno de los lugares donde se requiera la aplicación de las instrucciones por ella representadas. La declaración se realiza una sola vez, pero la utilización o invocación a la macro (macro llamada) puede hacerse cuantas veces sea necesario. La utilización de macros posibilita la reducción del tamaño del código fuente, aunque el código objeto tiende a ser mayor que cuando se utilizan funciones.
 

4.2.- PARTICULARIDADES DE LOS MACROS


El lenguaje ensamblador es la forma más básica de programar un microprocesador para que éste sea capaz de realizar las tareas o los cálculos que se le requieran.

El lenguaje ensamblador es conocido como un lenguaje de bajo nivel, esto significa que nos permite controlar el 100 % de las funciones de un microprocesador, así como los periféricos asociados a éste.

A diferencia de los lenguajes de alto nivel, por ejemplo "Pascal", el lenguaje ensamblador no requiere de un compilador, esto es debido a que las instrucciones en lenguaje ensamblador son traducidas directamente a código binario y después son colocadas en memoria para que el microprocesador las tome directamente.

Aprender a programar en lenguaje ensamblador no es fácil, se requiere un cierto nivel de conocimiento de la arquitectura y organización de las computadoras, además del conocimiento de programación en algún otro lenguaje
Ventajas del lenguaje ensamblador:
  • Velocidad de ejecución de los programas
  • Mayor control sobre el hardware de la computadora
Desventajas del lenguaje ensamblador:
  • Repetición constante de grupos de instrucciones
  • No existe una sintaxis estandarizada
  • Dificultad para encontrar errores en los programas (bugs)
 
 

4.2.1.- ARGUMENTOS DE MACROINSTRUCCION



Permite una sustitución de texto parametreado por argumentos
        #define símbolo (a1, a2, ...) cadena-caracteres

 
  • El símbolo y el ( deben estar pegados
  • La cadena en general depende de los argumentos a1, a2, ...
  • símbolo(x,y,...) es reemplazado por la cadena en la cual todos las ocurrencias de los argumentos formales: a1, a2,... son reemplazados por argumentos efectivos x,y,...
  • La cadena puede estar vacía, (mismo efecto que antes).

        #define max (a, b) ((a)? (B)? (a) : (b) )
Con esta definición la línea:
        x = Max (58, x*y);
Es sustituida por:
        x = ( (58)? (x*y) ? 58: (x*y) );
Si no se utilizan los paréntesis puede generarse algo incorrecto:
        #define cuadrado(a) (a*a)
        ...
  x = cuadrado (y+1);

  Es transformado en:
  x= (y+1*y+1); es decir x =2*y+1
 


4.2.2.- EXPANSIÓN CONDICIONAL  DE MACROS


En esta unidad se estudian el diseño y la construcción de los procesadores de macros. Una macroinstrucción (abreviada cómo macro) no es más que una conveniencia notaciones para el programador.
 Una macro representa un grupo de proposiciones utilizadas comúnmente en el lenguaje de programación fuente. El procesador de macros reemplaza cada macroinstrucción con el grupo de correspondiente de proposiciones del lenguaje fuente, lo que se denomina expansión de las macros.
De esta forma, los macroinstrucciones permiten al programador escribir una versión abreviada de un programa, dejando que el procesador de macros maneja los detalles mecánicos.

En esencia, las funciones de un procesador de macros implican la sustitución de un grupo de caracteres o líneas por otras. Con excepción de unos cuantos casos especializados, el procesador de macros no realiza ningún análisis de texto que maneja. El diseño y posibilidades de un procesador de macros pueden estar influidos por la forma de las proposiciones del lenguaje de programación.


4.2.3.- MACROLLAMADAS DENTRO DE MACROINSTRUCCIONES


Es una serie de instrucciones que se almacenan para que se puedan ejecutar de manera secuencial mediante una sola llamada u orden de ejecución. Dicho de otra manera, un macroinstrucción es una instrucción compleja, formada por otras instrucciones más sencillas. Esto permite la automatización de tareas repetitivas.

4.2.4.- MACROINSTRUCCIONES QUE DEFINEN MACROS

RP-aaa-bb-ccaaa
Es el tipo de macroinstrucción:
IMP Macroinstrucción de importación
EXP Macroinstrucción de exportación
bb es la tabla de base de datos en la que se graban los datos:
C1 Objeto de base de datos PCL1
C2 Objeto de base de datos PCL2
C3 Objeto de base de datos PCL3
C4 Objeto de base de datos PCL4
cc es el cluster:
RX Objeto de cluster RX
RD Objeto de cluster RD
B2 Objeto de cluster B2
etc.
Las macros se definen usando los comandos ABAP DEFINE/END-OF-DEFINITION
 


4.3.1.- IMPLEMENTACION RESTRINGIDA. ALGORITMO DE DOS PASOS

Los algoritmos pueden ser expresados de muchas maneras, incluyendo al lenguaje natural, pseudocódigo, diagramas de flujo y lenguajes de programación entre otros.
 Las descripciones en lenguaje natural tienden a ser ambiguas y extensas. El usar pseudocódigo y diagramas de flujo evita muchas ambigüedades del lenguaje natural.
Dichas expresiones son formas más estructuradas para representar algoritmos; no obstante, se mantienen independientes de un lenguaje de programación específico.



SIGUIENTE PAGINA
Awwww :3
© 2025