- 1.1.3.1 Tipos de sistemas operativos
Multiprogramación/Multitarea
La multiprogramación permite a múltiples programas compartir recursos de un sistema de computadora en cualquier momento a través del uso concurrente de una UCP. Sólo un programa utiliza realmente la UCP en cualquier momento dado, sin embargo, las necesidades de entrada/salida pueden ser atendidas en el mismo momento. Dos o más programas están activos al mismo tiempo, pero no utilizan los recursos del computador simultáneamente. Con multiprogramación, un grupo de programas se ejecutan alternativamente y se alternan en el uso del procesador. Cuando se utiliza un sistema operativo de un único usuario, la multiprogramación toma el nombre de multitarea.
Multiprogramación
Método de ejecución de dos o más programas concurrentemente utilizando la misma computadora. La UCP ejecuta sólo un programa pero puede atender los servicios de entrada/salida de los otros al mismo tiempo.
Tiempo compartido (múltiples usuarios, time sharing)
Un sistema operativo multiusuario es un sistema operativo que tiene la capacidad de permitir que muchos usuarios compartan simultáneamente los recursos de proceso de la computadora. Centenas o millones de usuarios se pueden conectar al computador que asigna un tiempo de computador a cada usuario, de modo que a medida que se libera la tarea de un usuario, se realiza la tarea del siguiente, y así sucesivamente. Dada la alta velocidad de transferencia de las operaciones, la sensación es de que todos los usuarios están conectados simultáneamente a la UCP, con cada usuario recibiendo únicamente en un tiempo de máquina determinado.
Multiproceso
Un sistema operativo trabaja en multiproceso cuando puede enlazar a dos o más UCP para trabajar en paralelo en un único sistema de computadora. El sistema operativo puede asignar múltiples UCP para ejecutar diferentes instrucciones del mismo programa o de programas diferentes simultáneamente, dividiendo el trabajo en diferentes UCP.
La multiprrogramación utiliza proceso concurrente con una UCP; el multiproceso utiliza proceso simultáneo con múltiples UCP.
- 1.2. Resolución de problemas y desarrollo de software
En ciencia e ingeniería el método se conoce como método científico, mientras que cuando se realiza análisis cuantitativo se suele conocer como enfoque o método sistemático.
Las técnicas utilizadas por los desarrolladores profesionales de software para llegar a soluciones adecuadas para la resolución de problemas se denominan proceso de desarrollo de software. Aunque el número y nombre de las fases puede variar según los modelos, métodos y técnicas utilizadas.
En general, las fases de desarrollo de software se suelen considerar los siguientes:
- Análisis y especificación del problema.
- Diseño de una solución.
- Implementación (codificación).
- Pruebas, ejecución, corrección y depuración.
- Documentación.
- Mantenimiento y evaluación.
- 1.2.1. Modelos de procesos de desarrollo de software
1. Modelos normativos (prescriptivos).
2. Modelos en cascada.
3. Modelos de proceso incremental.
- Modelo incremental.
- Modelo DRA (Desarrollo Rápido de Aplicaciones).
4. Modelos de proceso evolutivo.
- Modelo de prototipado (construcción de prototipos).
- Modelo en espiral.
- Modelo de desarrollo concurrente.
5. Modelos especializados de proceso.
- Modelo basado en componentes.
- Modelo de métodos formales.
- Desarrollo de software orientado a aspectos.
6. El proceso unificado (RUP de Booch Rumbaugh y Jacobson).
7. Métodos Ágiles [ Beck 01 ].
- Programación Extrema (XP, Extreme Programming).
- 1.2.2. Análisis y especificación del problema
Después de una análisis profundo del problema se debe realizar la especificación que es una descripción precisa y lo más exacta posible del problema; en realidad, es como un contrato previo para solución.
La especificación del problema no suele hacer un una tarea fácil sobre todo por la complejidad que entrañan la mayoría de los problemas del mundo real. La descripción inicial de un problema no suele ser clara y casi siempre, al principio, suele ser imprecisa y vaga.
La formulación de una especificación del problema requiere una descripción precisa y lo más completa posible de la entrada del problema (información disponible para la resolución del problema) y la salida requerida. Además se requiere información adicional tal como: hardware y software necesarios, tiempo de respuesta, plazos de entrada, facilidad de uso, robustez del software, etc.
la persona que realiza el análisis debe tener una perspectiva inicial lo más amplia posible y comprender el propósito principal de los que el problema o sistema pretende conseguir. En sistemas grandes el análisis, lo realiza normalmente un analista de sistemas, y en programas individuales, el análisis se realiza directamente por el programador.
Con independencia de cómo y por quién se realice el análisis, a la conclusión del mismo se debe de tener una comprensión muy clara de:
¿Qué debe de hacer el sistema o el programa?
¿Qué salidas debe producir?
¿Qué entradas se requieren para obtener las salidas deseadas?
Cada vez agregando más información sobre la estructura de datos en C++
ResponderEliminar