Академический Документы
Профессиональный Документы
Культура Документы
Firmware
El firmware es un programa informático que establece la lógica de más bajo
nivel que controla los circuitoselectrónicos de un dispositivo de cualquier tipo.
Está fuertemente integrado con la electrónica del dispositivo, es el software que
tiene directa interacción con el hardware, siendo así el encargado de controlarlo
para ejecutar correctamente las instrucciones externas. De hecho el firmware es
uno de los tres principales pilares del diseño electrónico.
En resumen, un firmware es un software que maneja físicamente al hardware.
El programa BIOS de una computadora es un firmware cuyo propósito es activar
una máquina desde su encendido y preparar el entorno para cargar un sistema
operativo en la [[Memoria de acceso aleatorio memoria RAM] y disco duro].
Microcontrolador
Un microcontrolador (abreviado μC, UC o MCU) es un circuito integrado programable,
capaz de ejecutar las órdenes grabadas en su memoria. Está compuesto de varios
bloques funcionales, los cuales cumplen una tarea específica. Un microcontrolador
incluye en su interior las tres principales unidades funcionales de
una computadora: unidad central de
procesamiento, memoria y periféricos de entrada/salida.
Proporcionar ya sea una interfaz de línea de comando o una interfaz gráfica al usuario,
para que este último se pueda comunicar con la computadora.
1. Gestión de procesos
Un proceso es, sencillamente, un programa en ejecución que necesita una serie de
recursos para realizar su tarea: tiempo de CPU (Central Process Unit o Unidad de
Proceso Central, es decir, el procesador principal del ordenador), memoria, archivos y
dispositivos de E/S (entrada/salida).
La memoria es como una gran almacén con casillas (bytes) a los que se accede
mediante una dirección única. Este almacén de datos es compartido por la CPU y los
dispositivos de E/S.
3. Administración de ficheros
Parte del sistema operativo que conoce los detalles específicos de cada dispositivo, lo
que permite poder operar con él.
Actualmente los sistemas operativos se clasifican en tres tipos: sistemas operativos por
su estructura (visión interna), sistemas operativos por los servicios que ofrecen y
sistemas operativos por la forma en que ofrecen sus servicios (visión externa).
Estructura Monolítica.
Es la estructura de los primeros sistemas operativos constituidos fundamentalmente
por un solo programa compuesto de un conjunto de rutinas entrelazadas de tal forma
que cada una puede llamar a cualquier otra. Las características fundamentales de este
tipo de estructura son:
Estructura Jerárquica.
A medida que fueron creciendo las necesidades de los usuarios y se perfeccionaron los
sistemas, se hizo necesaria una mayor organización del software, del sistema
operativo, donde una parte del sistema contenía subpartes y esto organizado en forma
de niveles.
Se dividió el sistema operativo en pequeñas partes, de tal forma que cada una de ellas
estuviera perfectamente definida y con un claro interface con el resto de elementos.
Se constituyó una estructura jerárquica o de niveles en los sistemas operativos, el
primero de los cuales fue denominado THE (Technische Hogeschool, Eindhoven), de
Dijkstra, que se utilizó con fines didácticos. Se puede pensar también en estos sistemas
como si fueran `multicapa'. Multics y Unix están en esa categoría.
Máquina Virtual.
Se trata de un tipo de sistemas operativos que presentan una interface a cada proceso,
mostrando una máquina que parece idéntica a la máquina real subyacente. Estos
sistemas operativos separan dos conceptos que suelen estar unidos en el resto de
sistemas: la multiprogramación y la máquina extendida. El objetivo de los sistemas
operativos de máquina virtual es el de integrar distintos sistemas operativos dando la
sensación de ser varias máquinas diferentes.
El núcleo de estos sistemas operativos se denomina monitor virtual y tiene como
misión llevar a cabo la multiprogramación, presentando a los niveles superiores tantas
máquinas virtuales como se soliciten. Estas máquinas virtuales no son máquinas
extendidas, sino una réplica de la máquina real, de manera que en cada una de ellas se
pueda ejecutar un sistema operativo diferente, que será el que ofrezca la máquina
extendida al usuario
Cliente-Servidor(Microkernel).
El tipo más reciente de sistemas operativos es el denominado Cliente-servidor, que
puede ser ejecutado en la mayoría de las computadoras, ya sean grandes o pequeñas.
Este sistema sirve para toda clase de aplicaciones; por tanto, es de propósito general y
cumple con las mismas actividades que los sistemas operativos convencionales.
El núcleo tiene como misión establecer la comunicación entre los clientes y los
servidores. Los procesos pueden ser tanto servidores como clientes. Por ejemplo, un
programa de aplicación normal es un cliente que llama al servidor correspondiente
para acceder a un archivo o realizar una operación de entrada/salida sobre un
dispositivo concreto. A su vez, un proceso cliente puede actuar como servidor para
otro. Este paradigma ofrece gran flexibilidad en cuanto a los servicios posibles en el
sistema final, ya que el núcleo provee solamente funciones muy básicas de memoria,
entrada/salida, archivos y procesos, dejando a los servidores proveer la mayoría que el
usuario final o programador puede usar. Estos servidores deben tener mecanismos de
seguridad y protección que, a su vez, serán filtrados por el núcleo que controla el
hardware. Actualmente se está trabajando en una versión de UNIX que contempla en
su diseño este paradigma.
En la relocalización se observa que los programas que tienen que cargarse a memoria
real ya están compilados y ligados, de manera que internamente contienen una serie
de referencias a direcciones de instrucciones, rutinas y procedimientos que ay no son
validos en el espacio de direcciones de memoria real de la sección en la que se carga el
programa, estos problemas surgen después de haber sido compilados los programas y
que se podrían solucionar de una forma estática que es usada para programas largos,
si el programa es muy grande tardara mucho en resolver la nuevas direcciones pero
después se ejecutara de manera rápida, pero lento al principio. También de forma
dinámica, siendo usada para programas cortos se inicia muy rápido pero realiza mas
instrucciones para poder resolver las direcciones al tiempo de ser corrido.
Reentrancia
En informática, un programa informático o subrutina se llama re-entrada si puede ser
interrumpido en medio de su ejecución y volver a llamarse de forma segura ("re-
entrar") antes de que las invocaciones anteriores completen su ejecución. La
interrupción puede ser causada por una acción interna como un salto o llamada, o por
una acción externa como una interrupción o señal. Una vez que la invocación re-
entrante completa, las invocaciones anteriores reanudarán su ejecución de forma
correcta.
INTERRUPCIONES
Una interrupción es un mecanismo que permite ejecutar un bloque de instrucciones
interrumpiendo la ejecución de un programa, y luego restablecer la ejecución del
mismo sin afectarlo directamente. De este modo un programa puede ser interrumpido
temporalmente para atender alguna necesidad urgente del computador y luego
continuar su ejecución como si nada hubiera pasado.
Luego cada vez que el usuario presiona una tecla, la CPU es advertida a través de una
señal especial de interrupción. Cuando la CPU advierte/recibe una señal de
interrupción suspende temporalmente el proceso actual almacenando en memoria
RAM un bloque con toda la información necesaria para restablecer posteriormente la
ejecución del programa si es que procede. Enseguida la CPU determina qué elemento
ha solicitado la interrupción y para cada caso existe un bloque de instrucciones que
realiza la tarea correspondiente que es ejecutada a continuación. Terminada la
ejecución se restablece el programa original en el mismo punto en que fue
interrumpido usando para ello la información almacenada previamente.
Cada interrupción tiene asignada un número único. El PC está diseñado de manera que
la interrupción tiene asignada 4 bytes de memoria RAM. La dirección de los cuatro
bytes en la memoria corresponde al número de la interrupción multiplicado por 4. Por
ejemplo la interrupción IRQ 5 tiene asignada 4 bytes en la dirección 0x00014
(0000:0014). El contenido de los 4 bytes de memoria RAM asignados a una
interrupción contiene a su vez una dirección que es un puntero a un bloque de
instrucciones de máquina que realiza el procedimiento correspondiente. De este modo
al iniciar la ejecución de una interrupción de los cuatro bytes que tiene asignados se
obtiene la dirección del bloque de instrucciones que efectivamente se ejecutan. Por
ejemplo si en la dirección 0000:0014 estuviera almacenado el valor 0xFFF00, ello
significa que en dicha dirección (ó (F000:FF00) se encuentra el bloque de instrucciones
a ejecutar cuando la interrupción IRQ 5 sea requerida.
Las interrupciones internas son generadas por ciertos eventos que surgen durante la
ejecución de un programa.
Un ejemplo claro de este tipo de interrupciones es la que actualiza el contador del reloj
interno de la computadora, el hardware hace el llamado a esta interrupción varias
veces durante un segundo para mantener la hora actualizada.
Las interrupciones externas las generan los dispositivos perifericos, como pueden ser:
teclado, impresoras, tarjetas de comunicaciones, etc. También son generadas por los
coprocesadores.
Interrupciones de software
La diferencia entre ambas es que las interrupciones del sistema operativo son más
fáciles de usar pero también son más lentas ya que estas interrupciones hacen uso del
BIOS para lograr su cometido, en cambio las interrupciones del BIOS son mucho más
rápidas pero tienen la desventaja que, como son parte del hardware son muy
específicas y pueden variar dependiendo incluso de la marca del fabricante del
circuito.
Buffer
Un buffer es un espacio de memoria, en el que se almacenan datos para evitar que el
programa o recurso que los requiere, ya sea hardware o software, se quede en algún
momento sin datos.
El concepto del Buffer es similar al de cache. Pero en el caso del buffer, los datos que
se introducen siempre van a ser utilizados. En la caché sin embargo, no hay seguridad,
sino una mayor probabilidad de utilización.
RELOJES
Los relojes o cronómetros son esenciales para la operación de sistemas de tiempo
compartido. Registran la hora del día. Evitan que un proceso monopolice la cpu.
El software para reloj toma generalmente la forma de un manejador de dispositivo,
aunque no es un dispositivo de bloque ni de caracter.
Los relojes más sencillos trabajan con la línea de corriente eléctrica de 110 o 220
voltios y provocan una interrupción por cada ciclo de voltaje, a 50 o 60 hz.
Otro tipo de relojes consta de tres componentes: Un oscilador de cristal, un contador y
un registro. Una pieza de cristal de cuarzo se monta en una estructura bajo tensión:
Genera una señal periódica de muy alta precisión, generalmente entre 5 y 100 mhz.
La señal se alimenta en el contador para que cuente en forma descendente hasta cero.
Cuando el contador llega a cero, provoca una interrupción de la cpu.
Los relojes programables tienen varios modos de operación.
Modo de una instancia: Cuando el reloj se inicializa, copia el valor del registro en el
contador. Decrementa el contador en cada pulso del cristal. Cuando el contador llega a
cero provoca una interrupción y se detiene hasta ser nuevamente inicializado por el
software.
Modo de onda cuadrada: Luego de llegar a cero y provocar la interrupción, el registro
se copia de manera automática en el contador. Todo el programa se repite en forma
indefinida.
Las interrupciones periódicas se llaman marcas del reloj.
•La ventaja del reloj programable es que su frecuencia de interrupción puede ser
controlada por el software.
•Las principales funciones del software manejador del reloj son:
•Mantener la hora del día o tiempo real.
•Evitar que los procesos se ejecuten durante más tiempo del permitido.
•Mantener un registro del uso de la cpu.
•Controlar llamadas al sistema tipo “alarm” por parte de los procesos del usuario.
•Proporcionar cronómetros guardianes de partes del propio sistema.
•Realizar resúmenes, monitoreo y recolección de estadísticas.
El software manejador del reloj puede tener que simular varios relojes virtuales con un
único reloj físico.
Hablemos de Software
Linux cuenta con menos software en algunos sectores, y tiene una menor
aceptación en el mundo empresarial, aunque gracias a apoyos de empresas
como Sun Microsystems (adquirida en 2009 por Oracle) o IBM se consiguieron
avances importantes en los últimos tiempos.
Windows posee una gran cantidad de software, ya que es el sistema
operativo más utilizado en las empresas (principalmente por su facilidad de
uso) y esto hace que los desarrolladores se centren más en él.
Otras consideraciones
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
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
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.
Además del Atlas Supervisor y el OS/360, los años 70 marcaron el inicio de UNIX, a
mediados de los 60 aparece Multics, sistema operativo multiusuario - multitarea
desarrollado por los laboratorios Bell de AT&T yUnix, 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
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.
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 porMicrosoft 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
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. Ahora el más reciente es
(Windows 7) (Windows Seven) que salio al mercado el 22 de octubre del 2009, dejando
atrás al (Windows Vista), que tuvo innumerables criticas durante el poco tiempo que
duró en el mercado.
La década de 1990
GNU/Linux
Este sistema 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.