lunes, 13 de septiembre de 2010

SISTEMAS OPERATIVOS

Sistema operativo
Un sistema operativo es un software de sistema, es decir, un conjunto de programas de computación destinados a realizar muchas tareas entre las que destaca la administración de los dispositivos periféricos.

Cuando se aplica voltaje al procesador de un dispositivo electrónico, éste ejecuta un reducido código en lenguaje ensamblador localizado en una dirección concreta en la ROM (dirección de reset) y conocido como reset code, que a su vez ejecuta una rutina con la que se inicializa el hardware que acompaña al procesador. También en esta fase suele inicializarse el controlador de las interrupciones. Finalizada esta fase se ejecuta el código de arranque (startup code), también código en lenguaje ensamblador, cuya tarea más importante es ejecutar el programa principal (main()) del software de la aplicación.1

Un sistema operativo se puede encontrar en la mayoría de los aparatos electrónicos que utilicen microprocesadores para funcionar, ya que gracias a éstos podemos entender la máquina y que ésta cumpla con sus funciones (teléfonos móviles, reproductores de DVD, autoradios, computadoras, radios, etc).
Funciones básicas: Los sistemas operativos, en su condición de capa software que posibilitan y simplifica el manejo de la computadora, desempeñan una serie de funciones básicas esenciales para la gestión del equipo. Entre las más destacables, cada una ejercida por un componente interno (módulo en núcleos monolíticos y servidor en micronúcleos), podemos reseñar las siguientes:

• Proporcionar más comodidad en el uso de un computador.
• Gestionar de manera eficiente los recursos del equipo, ejecutando servicios para los procesos (programas)
• Brindar una interfaz al usuario, ejecutando instrucciones (comandos).
• Permitir que los cambios debidos al desarrollo del propio SO se puedan realizar sin interferir con los servicios que ya se prestaban (evolutividad).

Un sistema operativo desempeña 5 funciones básicas en la operación de un sistema informático: suministro de interfaz al usuario, administración de recursos, administración de archivos, administración de tareas y servicio de soporte y utilidades.

Un núcleo monolítico es un tipo de núcleo o kernel de un sistema operativo. Como ejemplo de sistema operativo de núcleo monolítico están UNIX, Linux y FreeBSD.
Estos sistemas tienen un núcleo grande y complejo, que engloba todos los servicios del sistema. Está programado de forma no modular, y tiene un rendimiento mayor que un micronúcleo. Sin embargo, cualquier cambio a realizar en cualquier servicio requiere la recompilación del núcleo y el reinicio del sistema para aplicar los nuevos cambios.

FreeBSD es un sistema operativo libre para computadoras basado en las CPU de arquitectura Intel, incluyendo procesadores 386, 486 (versiones SX y DX), y Pentium. También funciona en procesadores compatibles con Intel como AMD y Cyrix. Actualmente también es posible utilizarlo hasta en once arquitecturas distintas2 como Alpha, AMD64, IA-64, MIPS, PowerPC y UltraSPARC.
FreeBSD está basado en la versión 4.4 BSD-Lite del Computer Systems Research Group (CSRG) de la University of California, Berkeley siguiendo la tradición que ha distinguido el desarrollo de los sistemas BSD. Además del trabajo realizado por el CSRG, el proyecto FreeBSD ha invertido miles de horas en ajustar el sistema para ofrecer las máximas prestaciones en situaciones de carga real.

Interfaces del usuario

Es la parte del sistema operativo que permite comunicarse con él, de tal manera que se puedan cargar programas, acceder archivos y realizar otras tareas. Existen tres tipos básicos de interfaces: las que se basan en comandos, las que utilizan menús y las interfaces gráficas de usuario.

Administración de recursos

Sirven para administrar los recursos de hardware y de redes de un sistema informático, como la CPU, memoria, dispositivos de almacenamiento secundario y periféricos de entrada y de salida.

Administración de archivos
Un sistema de información contiene programas de administración de archivos que controlan la creación, borrado y acceso de archivos de datos y de programas. También implica mantener el registro de la ubicación física de los archivos en los discos magnéticos y en otros dispositivos de almacenamiento secundarios.

Administración de tareas
Los programas de administración de tareas de un sistema operativo administran la realización de las tareas informáticas de los usuarios finales. Los programas controlan qué áreas tienen acceso al CPU y por cuánto tiempo. Las funciones de administración de tareas pueden distribuir una parte específica del tiempo del CPU para una tarea en particular, e interrumpir al CPU en cualquier momento para sustituirla con una tarea de mayor prioridad.

Software propietario:
El término software propietario, privativo o de código cerrado hace referencia a cualquier programa informático en el que los usuarios tienen limitadas las posibilidades de usarlo, modificarlo o redistribuirlo (con o sin modificaciones), o cuyo código fuente no está disponible o el acceso a éste se encuentra restringido. -En el software de código cerrado una persona física o jurídica (compañía, corporación, fundación, etc.) posee los derechos de autor sobre un software lo que le da la posibilidad de controlar y restringir los derechos del usuario sobre su programa. Esto implica por lo general que el usuario sólo tiene derecho a ejecutar el software y no dispone de acceso a su código fuente o aún teniendo acceso a él no tiene derecho a modificarlo ni distribuirlo.

Software libre:
El software libre es software que viene con autorización para que cualquiera pueda usarlo, copiarlo y distribuirlo, ya sea literal o con modificaciones, gratis o mediante una gratificación. En particular, esto significa que el código fuente debe estar disponible. "Si no es fuente, no es software''. Ésta es una definición simplificada; ver también la definición completa. Si un programa es libre, entonces puede ser potencialmente incluido en un sistema operativo libre tal como GNU, o sistemas GNU/Linux libres.

Hardware las partes físicas y tangibles de una computadora:
sus componentes eléctricos, electrónicos, electromecánicos y mecánicos; sus cables, gabinetes o cajas, periféricos de todo tipo y cualquier otro elemento físico involucrado; contrariamente al soporte lógico e intangible que es llamado software. El término proviene del inglés y es definido por la RAE como el "Conjunto de los componentes que integran la parte material de una computadora". Sin embargo, el término, aunque es lo más común, no necesariamente se aplica a una computadora tal como se la conoce, así por ejemplo, un robot también posee hardware (y software).
Dispositivos de Red: Es un conjunto de dispositivos físicos "hardware" y de programas "software", mediante el cual podemos comunicar computadoras para compartir recursos (discos, impresoras, programas, etc.) así como trabajo (tiempo de cálculo, procesamiento de datos, etc.).
A cada una de las computadoras conectadas a la red se le denomina un nodo. Se considera que una red es local si solo alcanza unos pocos kilómetros.

Tipos De Redes
Las redes de información se pueden clasificar según su extensión y su topología. Una red puede empezar siendo pequeña para crecer junto con la organización o institución. A continuación se presenta los distintos tipos de redes disponibles:
Extensión
De acuerdo con la distribución geográfica:

• Segmento de red (subred)
Un segmento de red suele ser definido por el "hardware" o una dirección de red específica. Por ejemplo, en el entorno "Novell NetWare", en un segmento de red se incluyen todas las estaciones de trabajo conectadas a una tarjeta de interfaz de red de un servidor y cada segmento tiene su propia dirección de red.

• Red de área locales (LAN)
Una LAN es un segmento de red que tiene conectadas estaciones de trabajo y servidores o un conjunto de segmentos de red interconectados, generalmente dentro de la misma zona. Por ejemplo un edificio.

• Red de campus
Una red de campus se extiende a otros edificios dentro de un campus o área industrial. Los diversos segmentos o LAN de cada edificio suelen conectarse mediante cables de la red de soporte.

• Red de área metropolitanas (MAN)
Una red MAN es una red que se expande por pueblos o ciudades y se interconecta mediante diversas instalaciones públicas o privadas, como el sistema telefónico o los suplidores de sistemas de comunicación por microondas o medios ópticos.

• Red de área extensa (WAN y redes globales)
Las WAN y redes globales se extienden sobrepasando las fronteras de las ciudades, pueblos o naciones. Los enlaces se realizan con instalaciones de telecomunicaciones públicas y privadas, además por microondas y satélites.

. Topología
La topología o forma lógica de una red se define como la forma de tender el cable a estaciones de trabajo individuales; por muros, suelos y techos del edificio. Existe un número de factores a considerar para determinar cual topología es la más apropiada para una situación dada. Existen tres topologías comunes:

• Anillo
Las estaciones están unidas unas con otras formando un círculo por medio de un cable común. El último nodo de la cadena se conecta al primero cerrando el anillo. Las señales circulan en un solo sentido alrededor del círculo, regenerándose en cada nodo. Con esta metodología, cada nodo examina la información que es enviada a través del anillo. Si la información no está dirigida al nodo que la examina, la pasa al siguiente en el anillo. La desventaja del anillo es que si se rompe una conexión, se cae la red completa.

• Estrella
La red se une en un único punto, normalmente con un panel de control centralizado, como un concentrador de cableado . Los bloques de información son dirigidos a través del panel de control central hacia sus destinos. Este esquema tiene una ventaja al tener un panel de control que monitorea el tráfico y evita las colisiones y una conexión interrumpida no afecta al resto de la red.

• "Bus"
Las estaciones están conectadas por un único segmento de cable. A diferencia del anillo, el bus es pasivo, no se produce regeneración de las señales en cada nodo. Los nodos en una red de "bus" transmiten la información y esperan que ésta no vaya a chocar con otra información transmitida por otro de los nodos. Si esto ocurre, cada nodo espera una pequeña cantidad de tiempo al azar, después intenta retransmitir la información.

• Híbridas
El bus lineal, la estrella y el anillo se combinan algunas veces para formar combinaciones de redes híbridas.

* Anillo en estrella
Esta topología se utiliza con el fin de facilitar la administración de la red. Físicamente, la red es una estrella centralizada en un concentrador, mientras que a nivel lógico, la red es un anillo.

* "Bus" en estrella
El fin es igual a la topología anterior. En este caso la red es un "bus" que se cablea físicamente como una estrella por medio de concentradores.

* Estrella jerárquica
Esta estructura de cableado se utiliza en la mayor parte de las redes locales actuales, por medio de concentradores dispuestos en cascada par formar una red jerárquica.

Protocolos de redes
Un protocolo de red es como un lenguaje para la comunicación de información. Son las reglas y procedimientos que se utilizan en una red para comunicarse entre los nodos que tienen acceso al sistema de cable. Los protocolos gobiernan dos niveles de comunicaciones:
o Los protocolos de alto nivel: Estos definen la forma en que se comunican las aplicaciones.
o Los protocolos de bajo nivel: Estos definen la forma en que se transmiten las señales por cable.
Como es frecuente en el caso de las computadoras el constante cambio, también los protocolos están en continuo cambio. Actualmente, los protocolos más comúnmente utilizados en las redes son Ethernet, Token Ring y ARCNET. Cada uno de estos esta diseñado para cierta clase de topología de red y tienen ciertas características estándar.

Ethernet
Actualmente es el protocolo más sencillo y es de bajo costo. Utiliza la topología de "Bus" lineal.

Token Ring
El protocolo de red IBM es el Token ring, el cual se basa en la topología de anillo.
Arnet
Se basa en la topología de estrella o estrella distribuida, pero tiene una topología y protocolo propio.

Dispositivos de redes

NIC/MAU (Tarjeta de red)
"Network Interface Card" (Tarjeta de interfaz de red) o "Medium Access Unit" (Medio de unidad de acceso). Cada computadora necesita el "hardware" para transmitir y recibir información. Es el dispositivo que conecta la computadora u otro equipo de red con el medio físico.

La NIC es un tipo de tarjeta de expansión de la computadora y proporciona un puerto en la parte trasera de la PC al cual se conecta el cable de la red. Hoy en día cada vez son más los equipos que disponen de interfaz de red, principalmente Ethernet, incorporadas. A veces, es necesario, además de la tarjeta de red, un transceptor. Este es un dispositivo que se conecta al medio físico y a la tarjeta, bien porque no sea posible la conexión directa (10 base 5) o porque el medio sea distinto del que utiliza la tarjeta.

Hubs (Concentradores)
Son equipos que permiten estructurar el cableado de las redes. La variedad de tipos y características de estos equipos es muy grande. En un principio eran solo concentradores de cableado, pero cada vez disponen de mayor número de capacidad de la red, gestión remota, etc. La tendencia es a incorporar más funciones en el concentrador. Existen concentradores para todo tipo de medios físicos.

Repetidores
Son equipos que actúan a nivel físico. Prolongan la longitud de la red uniendo dos segmentos y amplificando la señal, pero junto con ella amplifican también el ruido. La red sigue siendo una sola, con lo cual, siguen siendo válidas las limitaciones en cuanto al número de estaciones que pueden compartir el medio.

"Bridges" (Puentes)
Son equipos que unen dos redes actuando sobre los protocolos de bajo nivel, en el nivel de control de acceso al medio. Solo el tráfico de una red que va dirigido a la otra atraviesa el dispositivo. Esto permite a los administradores dividir las redes en segmentos lógicos, descargando de tráfico las interconexiones. Los bridges producen las señales, con lo cual no se transmite ruido a través de ellos.

"Routers" (Encaminadores)
Son equipos de interconexión de redes que actúan a nivel de los protocolos de red. Permite utilizar varios sistemas de interconexión mejorando el rendimiento de la transmisión entre redes. Su funcionamiento es más lento que los bridges pero su capacidad es mayor. Permiten, incluso, enlazar dos redes basadas en un protocolo, por medio de otra que utilice un protocolo diferente.

"Gateways"
Son equipos para interconectar redes con protocolos y arquitecturas completamente diferentes a todos los niveles de comunicación. La traducción de las unidades de información reduce mucho la velocidad de transmisión a través de estos equipos.

Servidores
Son equipos que permiten la conexión a la red de equipos periféricos tanto para la entrada como para la salida de datos. Estos dispositivos se ofrecen en la red como recursos compartidos. Así un terminal conectado a uno de estos dispositivos puede establecer sesiones contra varios ordenadores multiusuario disponibles en la red. Igualmente, cualquier sistema de la red puede imprimir en las impresoras conectadas a un servidor.

Módems
Son equipos que permiten a las computadoras comunicarse entre sí a través de líneas telefónicas; modulación y demodulación de señales electrónicas que pueden ser procesadas por computadoras. Los módems pueden ser externos (un dispositivo de comunicación) o interno (dispositivo de comunicación interno o tarjeta de circuitos que se inserta en una de las ranuras de expansión de la computadora).

VECTORES

Vectores

Los vectores (arrays) junto con las listas son dos elementos estructurados habituales de un lenguje de programación. En MetaTalk se puede trabajar a modo de listas puesto que las variables no tienen un tamaño predefinido y puede crecer o disminuir con los contenidos que se les asignan. En este caso el siguiente o el antecesor se han de traducir a operaciones con los trozos (chunks) que permite direccionar el lenguaje

El caso de los vectores es tanto o más interesante. Los elementos del vector se puede indexar a partir de valores numéricos, como es usual entre corchetes.

local codics

on mouseUp
repeat with i = 1 to 3
put (i*10+1) into codics[ i ]
end repeat

put the keys of codics

repeat with i = 1 to the number of lines of (the keys of codics)
answer i & return & codics[ i ]
end repeat
end mouseUp


El número de dimensiones de los vectores no está limitado, así que se pueden construir matrices (matrix) y operar con ellas con las funciones que incorpora el lenguaje.

local matriuA, matriuB, matriuC, dimensio

on mouseUp
repeat with i = 1 to 3
repeat with j = 1 to 3
put (i&j) into matriuA[i,j]
put 2 into matriuB[i,j]
end repeat
end repeat

put matrixMultiply(matriuA, matriuB) into matriuC
put extents(matriuC) into dimensio
put "a" && extents(matriuA) && return &\
"b" && extents(matriuB) && return &\
"c" && dimensio

repeat with i = 1 to the second item of line 1 of dimensio
repeat with j = 1 to the second item of line 2 of dimensio
answer i & "," & j && matriuC[ i,j ]
end repeat
end repeat
end mouseUp

#Per si tens interés, deu donar:
# C = A * B
# 72 72 72 11 12 13 2 2 2
#132 132 132 = 21 22 23 * 2 2 2
#192 192 192 31 32 33 2 2 2


La función extents permite obtener el número de entradas; en realidad el índice menor y el mayor utilizados. Si tuviese más de una dimensión, cada rango de valores aparece en separado del siguiente por un salto de línea. La función keys también lo obtiene, además de los valores de los índices de una variable; se ha introducido aquí para comparar el tratamiento con los vectores asociativos. El interés de estos radica en la facilidad con que se implemetan los diccionarios y otros objetos que consisten en indexar los elementos por una clave no numérica. Estos son una variante de los vectores donde los elementos índice no son numéricos sino alfabéticos.

El siguiente ejemplo muestra cómo se puede generar un vector asociativo a partir de una cadena de caracteres, cómo se pueden ordenar los elementos de índice (el criterio no tiene por qué ser alfabético, pero era el más sencillo) y cómo acceder a los valores almacenados. Por si lo está pensado: sí, existe una orden combine que hace la operación inversa a split. Sencillo, ¿verdad?

local codicsTecles="codic_a=97&codic_e=101&codic_i=105&codic_o=111&codic_u=117"

on mouseUp
put "Inicialment:" && codicsTecles

answer "Antes" & return & keys( codicsTecles ) titled "Antes"
split codicsTecles by "&" and "="

put keys( codicsTecles ) into varAux
sort lines of varAux
answer "Despues" & return & varAux titled "Despues"

repeat with i = 1 to the number of lines of varAux
answer codicsTecles[ (line i of varAux) ] && return & (line i of varAux)
end repeat
end mouseUp