Categorias de los Sistemas Operativos

Sistemas Operativos por Servidor

Esta clasificación es la más comúnmente usada y conocida desde el punto de vista del usuario final. Esta clasificación se comprende fácilmente con el cuadro sinóptico que a continuación se muestra en el siguiente diagrama:




Monousuarios
Los sistemas operativos monousuarios son aquéllos que soportan a un usuario a la vez, sin importar el número de procesadores que tenga la computadora o el número de procesos o tareas que el usuario pueda ejecutar en un mismo instante de tiempo. Las computadoras personales típicamente se han clasificado en este renglón.

Multiusuarios
Los sistemas operativos multiusuarios son capaces de dar servicio a más de un usuario a la vez, ya sea por medio de varias terminales conectadas a la computadora o por medio de sesiones remotas en una red de comunicaciones. No importa el número de procesadores en la máquina ni el número de procesos que cada usuario puede ejecutar simultáneamente.

Monotareas
Los sistemas monotarea son aquellos que sólo permiten una tarea a la vez por usuario. Puede darse el caso de un sistema multiusuario y monotarea, en el cual se admiten varios usuarios al mismo tiempo pero cada uno de ellos puede estar haciendo solo una tarea a la vez.

Multitareas
Un sistema operativo multitarea es aquél que le permite al usuario estar realizando varias labores al mismo tiempo. Por ejemplo, puede estar editando el código fuente de un programa durante su depuración mientras compila otro programa, a la vez que está recibiendo correo electrónico en un proceso en background. Es común encontrar en ellos interfaces gráficas orientadas al uso de menús y el ratón, lo cual permite un rápido intercambio entre las tareas para el usuario, mejorando su productividad.

Uniproceso
Un sistema operativo uniproceso es aquél que es capaz de manejar solamente un procesador de la computadora, de manera que si la computadora tuviese más de uno le sería inútil. El ejemplo más típico de este tipo de sistemas es el DOS y MacOS.

Multiproceso
Un sistema operativo multiproceso se refiere al número de procesadores del sistema, que es más de uno y éste es capaz de usarlos todos para distribuir su carga de trabajo. Generalmente estos sistemas trabajan de dos formas: simétrica o asimétricamente. Cuando se trabaja de manera asimétrica, el sistema operativo selecciona a uno de los procesadores el cual jugará el papel de procesador maestro y servirá como pivote para distribuir la carga a los demás procesadores, que reciben el nombre de esclavos. Cuando se trabaja de manera simétrica, los procesos o partes de ellos (threads) son enviados indistintamente a cualesquiera de los procesadores disponibles, teniendo, teóricamente, una mejor distribución y equilibrio en la carga de trabajo bajo este esquema.

Se dice que un thread es la parte activa en memoria y corriendo de un proceso, lo cual puede consistir de un área de memoria, un conjunto de registros con valores específicos, la pila y otros valores de contexto. Un aspecto importante a considerar en estos sistemas es la forma de crear aplicaciones para aprovechar los varios procesadores. Existen aplicaciones que fueron hechas para correr en sistemas monoproceso que no toman ninguna ventaja a menos que el sistema operativo o el compilador detecte secciones de código paralelizable, los cuales son ejecutados al mismo tiempo en procesadores diferentes. Por otro lado, el programador puede modificar sus algoritmos y aprovechar por sí mismo esta facilidad, pero esta última opción las más de las veces es costosa en horas hombre y muy tediosa, obligando al programador a ocupar tanto o más tiempo a la paralelización que a elaborar el algoritmo inicial.

Sistemas Operativos por la Forma de Ofrecer sus Servicios
Esta clasificación también se refiere a una visión externa, que en este caso se refiere a la del usuario, el cómo acceda los servicios. Bajo esta clasificación se pueden detectar dos tipos principales: sistemas operativos de red y sistemas operativos distribuidos.


Sistemas Operativos de Red
Los sistemas operativos de red se definen como aquellos que tiene la capacidad de interactuar con sistemas operativos en otras computadoras por medio de un medio de transmisión con el objeto de intercambiar información, transferir archivos, ejecutar comandos remotos y un sin fin de otras actividades. El punto crucial de estos sistemas es que el usuario debe saber la sintaxis de un cinjunto de comandos o llamadas al sistema para ejecutar estas operaciones, además de la ubicación de los recursos que desee accesar. Por ejemplo, si un usuario en la computadora hidalgo necesita el archivo matriz.pas que se localiza en el directorio /software/codigo en la computadora morelos bajo el sistema operativo UNIX, dicho usuario podría copiarlo a través de la red con los comandos siguientes:

· hidalgo%hidalgo%rcpmorelos:/software/codigo/matriz.pashidalgo%

En este caso, el comando rcp que significa "remote copy" trae el archivo indicado de la computadora morelos y lo coloca en el directorio donde se ejecutó el mencionado comando. Lo importante es hacer ver que el usuario puede accesar y compartir muchos recursos.

Sistemas Operativos Distribuidos
Los sistemas operativos distribuidos abarcan los servicios de los de red, logrando integrar recursos ( impresoras, unidades de respaldo, memoria, procesos, unidades centrales de proceso ) en una sola máquina virtual que el usuario accesa en forma transparente. Es decir, ahora el usuario ya no necesita saber la ubicación de los recursos, sino que los conoce por nombre y simplemente los usa como si todos ellos fuesen locales a su lugar de trabajo habitual. Todo lo anterior es el marco teórico de lo que se desearía tener como sistema operativo distribuido, pero en la realidad no se ha conseguido crear uno del todo, por la complejidad que suponen: distribuir los procesos en las varias unidades de procesamiento, reintegrar sub-resultados, resolver problemas de concurrencia y paralelismo, recuperarse de fallas de algunos recursos distribuidos y consolidar la protección y seguridad entre los diferentes componentes del sistema y los usuarios. [Tan92]. Los avances tecnológicos en las redes de área local y la creación de microprocesadores de 32 y 64 bits lograron que computadoras mas o menos baratas tuvieran el suficiente poder en forma autónoma para desafiar en cierto grado a los mainframes, y a la vez se dio la posibilidad de intercomunicarlas, sugiriendo la oportunidad de partir procesos muy pesados en cálculo en unidades más pequeñas y distribuirlas en los varios microprocesadores para luego reunir los sub-resultados, creando así una máquina virtual en la red que exceda en poder a un mainframe. El sistema integrador de los microprocesadores que hacer ver a las varias memorias, procesadores, y todos los demás recursos como una sola entidad en forma transparente se le llama sistema operativo distribuido. Las razones para crear o adoptar sistemas distribuidos se dan por dos razones principales: por necesidad ( debido a que los problemas a resolver son inherentemente distribuidos ) o porque se desea tener más confiabilidad y disponibilidad de recursos. En el primer caso tenemos, por ejemplo, el control de los cajeros automáticos en diferentes estados de la república. Ahí no es posible ni eficiente mantener un control centralizado, es más, no existe capacidad de cómputo y de entrada/salida para dar servicio a los millones de operaciones por minuto. En el segundo caso, supóngase que se tienen en una gran empresa varios grupos de trabajo, cada uno necesita almacenar grandes cantidades de información en disco duro con una alta confiabilidad y disponibilidad. La solución puede ser que para cada grupo de trabajo se asigne una partición de disco duro en servidores diferentes, de manera que si uno de los servidores falla, no se deje dar el servicio a todos, sino sólo a unos cuantos y, más aún, se podría tener un sistema con discos en espejo ( mirror ) a través de la red,de manera que si un servidor se cae, el servidor en espejo continúa trabajando y el usuario ni cuenta se da de estas fallas, es decir, obtiene acceso a recursos en forma transparente.

Tipos de Datos - Varios

Visual Basic proporciona varios tipos de datos que no están orientados a números o caracteres. En lugar de ello, tratan con datos especializados como valores de tipo sí/no, valores de fecha y hora, y direcciones de objetos.

Para ver una tabla que muestra una comparación punto por punto de los tipos de datos de Visual Basic, consulte Resumen de tipos de datos (Visual Basic).

Boolean (Tipo)

Boolean (Tipo de datos, Visual Basic) es un valor sin signo interpretado como True o False. El ancho de sus datos depende de la plataforma de implementación. Si una variable puede contener sólo valores de dos estados como verdadero/falso, sí/no, o activado/desactivado, declárela como Boolean.

Date (Tipo)

Date (Tipo de datos, Visual Basic) es un valor de 64 bits que contiene información de fecha y hora. Cada incremento representa 100 nanosegundos de tiempo transcurrido desde el principio (12:00 a.m.) del 1 de enero del año 1 del calendario gregoriano. Si una variable puede contener un valor de fecha, un valor de hora o ambos, declárela como Date.

Object (Tipo)

Object (Tipo de datos) es una dirección de 32 bits que apunta a una instancia de objeto dentro de la aplicación o en alguna otra aplicación. Una variable Object puede hacer referencia a cualquier objeto que la aplicación reconoce o a datos de cualquier tipo de datos. Si una variable almacena un puntero a una instancia de una clase que no conoce en tiempo de compilación o si puede señalar a los datos de distintos tipos de datos, declárela como Object.

Tipos de Datos - Caracteres

Visual Basic proporciona tipos de datos de caracteres para trabajar con caracteres que se pueden mostrar e imprimir. Aunque ambos tipos utilizan caracteres Unicode, Char contiene un único carácter, mientras que String contiene un número indefinido de caracteres.

Para ver una tabla que muestra una comparación punto por punto de los tipos de datos de Visual Basic, consulte Resumen de tipos de datos (Visual Basic).

Tipo Char

El tipo de datos Char es un único carácter Unicode de dos bytes (16 bits). Si una variable siempre almacena exactamente un carácter, declárela como Char.

Para obtener más información, consulte Char (Tipo de datos, Visual Basic).

Tipo String

El tipo de datos String es una secuencia de cero o más caracteres Unicode de dos bytes (16 bits). Si una variable puede contener un número de caracteres indefinido, declárela como String.

Para obtener más información, consulte String (Tipo de datos, Visual Basic).

Tipos de Datos - Numericos

Tipos numéricos integrales

Los tipos de datos integrales son aquellos que sólo representan números sin partes fraccionarias.

Los tipos de datos integrales con signo son SByte (Tipo de datos, Visual Basic) (de 8 bits), Short (Tipo de datos, Visual Basic) (de 16 bits), Integer (Tipo de datos, Visual Basic) (de 32 bits) y Long (Tipo de datos, Visual Basic) (de 64 bits). Si una variable almacena siempre enteros en lugar de números fraccionarios, declárela como uno de estos tipos.

Los tipos integrales sin signo son Byte (Tipo de datos, Visual Basic) (de 8 bits), UShort (Tipo de datos, Visual Basic) (de 16 bits), UInteger (Tipo de datos) (de 32 bits) y ULong (Tipo de datos, Visual Basic) (de 64 bits). Si una variable contiene datos binarios o datos de naturaleza desconocida, declárela como uno de estos tipos.
Rendimiento

Los operadores aritméticos son más rápidos con los tipos integrales que con cualquier otro tipo de datos. Son más rápidos con los tipos Integer y UInteger en Visual Basic.

Enteros grandes


Si necesita contener un entero más grande que lo que el tipo de datos Integer puede contener, puede utilizar el tipo de datos Long en su lugar. Las variables Long pueden contener números de -9.223.372.036.854.775,808 a través de 9.223.372.036.854.775,808. Las operaciones con Long son ligeramente más lentas que con Integer.

Si necesita valores aun más grandes, puede utilizar Decimal (Tipo de datos, Visual Basic). Puede contener números de -79.228.162.514.264.337.593.543.950,335 a 79.228.162.514.264.337.593.543.950,335 en una variable Decimal si no utiliza ninguna posición decimal. Sin embargo, las operaciones con números Decimal son considerablemente más lentas que con cualquier otro tipo de dato numérico.

Enteros pequeños

Si no necesita el intervalo completo del tipo de datos Integer, puede utilizar el tipo de datos Short que puede contener enteros de -32,768 a 32,767. Para el intervalo entero más pequeño, el tipo de datos SByte contiene enteros de -128 a 127. Si tiene un número muy grande de variables que contienen enteros pequeños, Common Language Runtime puede almacenar a veces las variables Short y SByte de un modo más eficaz y ahorrar espacio de memoria. Sin embargo, las operaciones con Short y SByte son algo más lentas que con Integer.
Enteros sin signo

Si sabe que la variable no va a necesitar contener nunca un número negativo, puede utilizar los tipos sin signo Byte, UShort, UInteger y ULong. Cada uno de estos tipos de datos puede contener un entero positivo dos veces más grande que su tipo con signo correspondiente (SByte, Short, Integer y Long). En lo que se refiere a rendimiento, un tipo sin signo es exactamente tan eficaz como su tipo con signo correspondiente. En particular, UInteger comparte con Integer la distinción de ser el más eficaz de todos los tipos de datos numérico básicos.

Tipos numéricos no integrales

Los tipos de datos no integrales son aquellos que representan números que contienen tanto partes enteras como decimales.

Los tipos de datos numéricos no integrales son Decimal (punto fijo de 128 bits), String (Tipo de datos, Visual Basic) (punto flotante de 32 bits) y Double (Tipo de datos, Visual Basic) (punto flotante de 64 bits). Todos ellos son tipos con signo. Si una variable puede contener una fracción, declárela como variable de uno de estos tipos.

Decimal no es un tipo de datos en punto flotante. Los números Decimal tienen un valor entero binario y un factor de escala entero que especifica qué parte del valor es una fracción decimal.

Los números con punto flotante (Single y Double) tienen intervalos mayores que los números Decimal pero pueden estar sujetos a errores de redondeo. Los tipos de punto flotante admiten menos dígitos significativos que Decimal pero pueden representar valores de mayor magnitud.

Los valores de números no integrales se pueden expresar como mmmEeee, donde mmm es la mantisa (dígitos significativos) y eee es el exponente (una potencia de 10). Los valores positivos superiores de los tipos no integrales son 7.9228162514264337593543950335E+28 para Decimal, 3.4028235E+38 para Single y 1.79769313486231570E+308 para Double.

Rendimiento

Double es el más eficaz de los tipos de datos fraccionarios, porque los procesadores de las plataformas actuales realizan las operaciones de punto flotante en precisión doble. Sin embargo, las operaciones con Double no son tan rápidas como con los tipos integrales como Integer.

Magnitudes pequeñas

Para los números con la magnitud más pequeña posible (cercana a 0), las variables Double pueden contener números tan pequeños como -4.94065645841246544E-324 para valores negativos y 4.94065645841246544E-324 para valores positivos.

Números fraccionarios pequeños

Si no necesita el intervalo completo del tipo de datos Double, puede utilizar el tipo de datos Single que puede contener números en punto flotante de -3.4028235E+38 a 3.4028235E+38. Las magnitudes más pequeñas para las variables Single son -1.401298E-45 para valores negativos y 1.401298E-45 para valores positivos. Si tiene un número muy grande de variables que contienen números en punto flotante pequeños, Common Language Runtime puede almacenar a veces las variables Single de un modo más eficaz y ahorrar espacio de memoria.

Temario y Apuntes

Un poco tarde, pero ahi esta el temario y unos aputes de Programación Visual...



Rrogramación Visual


XaLu2...