martes, 10 de abril de 2012

Planificación de los procesos.

Planificación del procesador
Se usa para decidir cuánto tiempo de ejecución y cuando se le asignan a cada proceso del sistema. Para la mayoría de los sistemas esto es crucial para su buen funcionamiento.

Niveles de planificación
Tres niveles: 
  • Alto: decide qué trabajos (conjunto de procesos) son candidatos a convertirse en procesos compitiendo con los recursos del sistema.
  • Medio: decide qué procesos se suspenden o reanudan para lograr ciertas metas de rendimiento.
  • Bajo: es el que decide qué proceso, de los que ya están listos (y que en algún momento pasó por los otros dos planificadores) es al que le toca ahora estar ejecutándose en la unidad central de procesamiento. 
Objetivos de la planificación
  • Justicia o Imparcialidad: que todos los procesos sean tratados de la misma forma.
  • Maximizar la Producción: terminar el mayor número de procesos en el mínimo tiempo posible.
  • Minimizar el Tiempo de Respuesta
  • Evitar el aplazamiento indefinido: Los procesos deben terminar en un plazo finito de tiempo.
  • El sistema debe ser predecible. 
Tipos de planificación
Planificación apropiativa: es aquella en la cual, una vez que a un proceso le toca su turno de ejecución ya no puede ser suspendido, ya no se le puede arrebatar la unidad central de procesamiento. Este esquema puede ser peligroso, ya que si el proceso contiene accidental o deliberadamente ciclos infinitos, el resto de los procesos pueden quedar aplazados indefinidamente.

Planificación no apropiativa: Es aquella en que existe un reloj que lanza interrupciones periódicas en las cuales el planificador toma el control y se decide si el mismo proceso seguirá ejecutándose o se le da su turno a otro proceso. En este tipo de planificación, un trabajo muy grande aplaza mucho a uno pequeño, y si entra un proceso de alta prioridad éste también debe esperar a que termine el proceso actual de ejecución.

Asignación del turno de ejecución
Primero en llegar, primero en ser servido (FIFO)

 
Por prioridad
Los procesos de mayor prioridad se ejecutan primero

Herramientas de Linux para Gestión de los Servicios de un Sistema Informático

ps 
El comando ps es el que permite informar sobre el estado de los procesos. ps está basado en el sistema de archivos/proc, es decir, lee directamente la información de los archivos que se encuentran en este directorio. Tiene una gran cantidad de opciones, iojncluso estas opciones varían dependiendo del estilo en que se use el comando.
Variaciones sobre el uso de ps:
  • Estilo UNIX, donde las opciones van precedidas por un guión -
  • Estilo BSD, donde las opciones no llevan guión.
  •  Estilo GNU, donde se utilizan los nombres de opciones largas y van precedidas por doble guión--
Se mostrarán varias columnas en el listado de procesos que resulte. Las principales son:
p o PID : Process Id, número único o de identificación del proceso.
P o PPID : Parent Process ID, padre del proceso.
U o UID : User ID, usuario propietario del proceso.
t o TT o TTY : Terminal asociada al proceso, si no hay terminal aparece entonces un '?'.
T o TIME : Tiempo de uso de cpu acumulado por el proceso.
c o CMD : El nombre del programa o comando que inició el proceso.
RSS : Resident Sise, tamaño de la parte residente en memoria en kbytes.
SZ o SIZE Tamaño virtual de la imagen del proceso.
NI Nice, valor nice (prioridad) del proceso, un número positivo significa menos tiempo de procesador y negativo más tiempo (-19 a 19).
C o PCPU Porcentaje de cpu utilizado por el proceso.
STIME Starting Time, hora de inicio del proceso.
S STAT Status del proceso.

Las opciones completas de ps se encuentran en 'man ps' o escribiendo en el terminal ps L. Para ver un resumen de sus opciones más comunes usa ps -help.

pstree
Muestra los procesos en formal de árbol. pstree --help te da las opciones más comunes.

kill 
Sirve para matar procesos y para enviar señales a los procesos.
kill PID, siendo PID el número de ID del proceso. Así, por ejemplo es posible mandar una señal de STOP al proceso y se detiene su ejecución, CONT para continuar el proceso.

kill -l: lista de todas las posibles señales que pueden mandarse a un proceso. 

killall: funciona de manera similar a kill, solo que en lugar de indicar un PID se indica el nombre del programa, lo que afectará a todos los procesos que tengan ese nombre. 

nice
Permite cambiar la prioridad de un proceso.  Las prioridades van desde -20 (la más alta) a 19, la más baja. Solo root o el superusuario puede establecer prioridades negativas que son más altas. 

renice
Permite alterar la prioridad de un proceso en tiempo real, sin necesidad de detener el proceso. 

nohup y &
Cuando se trata de ejecutar procesos en background (segundo plano) se utiliza el comandonohup o el operador &.  Aunque realizan una función similar, no son lo mismo. 

Si se desea liberar la terminal de un programa que se espera durará un tiempo considerable ejecutándose, entonces se usa &. Esto produciría que el padre del proceso PPID que se invocó sea el proceso de la terminal en si, por lo que si cerramos la terminal o salimos de la sesión también se terminarán los procesos hijos que dependan de la terminal, no muy conveniente si se desea que el proceso continúe en ejecución.
Por ello se usa el comando nohup que permite al igual que '&' mandar el proceso y background y que este quede inmune a los hangups que es cuando se cuelga o termina la terminal o consola de la cual se ejecutó el proceso. 

top 
Se usa para el monitoreo en tiempo real del estado de los procesos y de otras variantes del sistema. Se ejecuta desde la línea de comandos, es interactivo y por defecto se actualiza cada 3 segundos. 

htop
Es igual que la acción anterior solo que ahora mostraría en la misma pantalla todos los comandos para usar top.




miércoles, 15 de febrero de 2012

Diagrama de los posibles estados que tiene un proceso

Para representar un proceso debemos recoger toda la información que nos de el estado de ejecución de un programa: el código y datos del programa, una pila de ejecución, el PC indicando la próxima instrucción, los valores actuales del conjunto de registros de la CPU, un conjunto de recursos del sistema (memoria, archivos abiertos, etc.).
Varios procesos pueden ejecutar incluso el mismo programa (p.ej. un editor) pero cada uno uno tiene su propia representación.
Cada proceso está en un estado de ejecución que caracteriza lo que hace y determina las acciones que se pueden sobre él.
Preparado - en espera de la CPU.
Ejecutándose - ejecutando instrucciones.
Bloqueado - esperando por un suceso.
Conforme un programa se ejecuta, pasa de un estado a otro.





A su vez el proceso (o partes del espacio de memoria virtual del proceso) puede estar cargado en memoria o "swapped" a disco.

Además de estos estados básicos un proceso puede estar detenido (stopped). En este caso se le prohibe ejecutar al proceso. Hay mecanismos para detener y rearrancar un proceso a través de las señales STOP y CONT que veremos más adelante.
El estado stopped es el estado en que queda un proceso lanzado a correr desde un interprete de comandos (shell) cuando se presiona o la tecla configurada como "suspend" en el terminal que estemos utilizando.
Finalmente el otro estado en que a menudo un administrador encuentra a un proceso es el estado zombie o exiting. Un proceso en este estado está en proceso de terminación. Este caso se discute más en detalle en el apartado "Ciclo de vida de un proceso".

Historia de los SO

En esta entrada se ofrecerá una visión general a lo largo de la historia de los distintos tipos de SO asociados a sus respectivos tipos de máquina. 

  • Primeros sistemas
  • Sistemas por lotes
  • Mejoras en la gestión de la E/S.
  • Sistemas por lote multiprogramados. 
  • Sistemas de tiempo compartido. 
  • Ordenadores personales. 
  • Sistemas paralelos:multiprocesadores. 
  • Sistemas distribuidos. 
  • Sistemas de tiempo real. 
Primeros Sistemas
Se caracterizan por:
  • Gran tamaño
  • Apenas soporte lógico (tableros enchufables, tarjetas perforadas....). 
  • Necesidad de ser un usuario experto para manejarlo.
  • Un solo usuario en cada momento (lista de reserva para poder utilizarlo). 
 El modo de trabajo hacía que la máquina estuviera parada mucho tiempo y el equipo era muy caro.

Sistemas por lotes
Su objetivo sacar más provecho a la máquina gracias a una mejor organización del trabajo. Los operadores agrupaban los trabajos por lotes, que eran trabajos con necesidades similares y que eran ejecutados en la computadora como un grupo de tareas. A medida que la computadora quedaba libre, se ejecutaba un lote. 

Aparece el operador especialista, donde el programador no manipula directamente el equipo, sino que entrega su trabajo (job) al primero y éste somete la tarea al sistema y entrega los resultados al programador, el cual corrige sus errores mientras el operador sigue ejecutando otras tareas. Como resultado de este proceso, hubo un aumento considerable de la productividad.  

Las tareas se agrupaban en lotes que se procesaban de manera automática. El operador se encargaba de preparar lotes con trabajos que requieran una misma operación y se ejecutaban sin más intervención. 

Fue en esta etapa cuando se pensó que podría ser mejor dar las órdenes directamente al computador y no a un operador. Así nació el primer SO. 
Para ello era necesario que el computador tuviera un pequeño monitor residente (controlador) para realizar acciones de manera automática distinguiendo tarjetas de instrucciones de programas de usuarios y tarjetas de control. 

¿Qué elementos tenía un Sistema por Lotes? 
  • Lenguaje de control de tareas (JLC, job control language)
  • Monitor residente 
    • Programa fijo en memoria con rutina imprescindible para que el sistema por lotes funcione: intérprete del JLC, cargador de programas, rutinas de E/S... 
    • automatiza tareas del antiguo operador. 
    • Es el primer sistema operativo auténtico.
Primeros problemas
La E/S era muy lenta en comparación con la CPU. Ello provocaba que ésta quedara ociosa mucho tiempo esperando la finalización de operaciones de E/S. Para tratar el problema se usaron algunas técnicas:
  • Operación fuera de línea (offline): 
El computador central dialoga directamente sólo con dispositivos rápidos (cintas magnéticas). Un pequeño computador (satélite o canal) se encarga de las transferencias con dispositivos lentos (tarjetas, impresora). Como resultado hubo un mejor aprovechamiento del procesador central y una ejecución paralela de cálculos y operaciones de E/S. Se comprobó que se pudo aumentar la velocidad utilizando varios satélites. 
Para trabajar con offline no hacía falta recompilar los programas antiguos. Los trabajos seguían usando los mismos servicios para la E/S, lo que cambiaba era su implementación en el SO: Independencia del dispositivo.
  • Uso de búferes. 
La operación de E/S se realiza sólo cuando el dispositivo está preparado. 
El uso de búferes no resuelve totalmente el problema de la lentitud de los equipos E/S. Su eficacia depende fundamentalmente de la velocidad de los equipos de E/S y del tipo de tareas en ejecucción. 
  • Spooling. (Simultaneous Peripheral Operation On-line)
Se utiliza el disco como un enorme búfer. El proceso lee/escribe sobre el disco en lugar del dipositivo E/S. 
Mientras se ejecuta un trabajo, el SO lee los datos del siguiente trabajo de la cinta/tarjetas del disco e imprime la salida del anterior trabajo del disco a la impresora. 
Permite solapar la E/S de un proceso ya terminado con las operaciones en CPU de otro proceso.


Multiprogramación. 
El modo de operación offline y el spoolig aumentan el rendimiento de la CPU pero tienen sus limitaciones. En algún momento, la CPU queda ociosa esperando por alguna operación de E/S.

En multiprogramación, la CPU y la E/S trabajan a la misma vez por lo que se terminan más trabajos en menos tiempo.


Tiempo compartido
Soportan el uso “interactivo” del sistema: Cada usuario tiene la ilusión de disponer de la máquina completa. debido a la optimización del tiempo de respuesta.
Se basa en asignar fracciones de tiempo - se reparte el tiempo de CPU de forma equitativa entre los procesos. 
Permite la participación activa de los usuarios en la edición, depuración de programas, y ejecución de los procesos.

Ordenadores personales. 
La aparición de microprocesador permitió fabricar computadores baratos, asequibles par el consumo de masas alrededor de los años 80. Se le dió mucha importancia a la facilidad de uso aunque tenían bajos tiempos de respuestas. Se usaban tecnología de los grandes SO pero prescindían de ciertos servicios (protección, multiprogramación, etc...). 

Sistemas paralelos-multiprocesadores. 
Son sistemas con más de un procesador. Pueden ejecutar varias instrucciones simultáneamente en paralelo. Son sistemas estrechamente acoplados puesto que los procesadores comparten una memoria común. 

Ventajas: Aumento de la velocidad de procesamiento con bajo coste y cierta tolerancia a fallos. 

Inconvenientes: Necesidad de sincronización entre procesos.

Sistemas distribuidos. 
Múltiples procesadores conectados mediante una red.
Sistemas debilmente acoplados: los procesadores no comparten memoria ni reloj.

Ventajas:
  • Compartición de recursos dispersos. 
  • Ayuda al trabajo cooperativo de equipos humanos. 
  • Aumento de la velocidad. 
  • Fiabilidad (tolerancia a fallos, alta disponibilidad). 
Inconvenientes
  • No comparten memoria: la comunicación es más compleja y no se puede tener un estado global visible por todos los nodos al instante. 
  • red de comunicación no fiable. 
  • heterogeneidad de los nodos. 

Sistemas de tiempo real.
Para poder ejecutar satisfactoriamente tareas que han de completarse en un plazo prefijado (ej. sistemas de control industrial, sistemas multimedia).
Dos tipo:
  • s.t.r crítico: para tareas que siempre deben cumplir los plazos de terminación. Adecuados para la industria. Muy simples, incompatible con tiempo compartido, memoria virtual, etc. 
  • s.t.r. no crítico: intentan cumplir los plazos, pero no los garantizarán al 100%. Adecuados para multimedia, etc. 

martes, 14 de febrero de 2012

Partes de un Sistema Informático.

¿De qué elementos se compone un Sistema Informático?

Un Sistema Informático es un conjunto de partes que se relacionan entre sí. 
  • Hardware: la parte tangible. El hardware incluye computadoras o cualquier tipo de dispositivo electrónico inteligente, que consisten en procesadores, memoria, sistemas de almacenamiento externo, etc.
  • Software: lo tangible. Se llama así al conjunto general de programas,que más genéricamente se refiere al equipamiento lógico o soporte lógico de una computadora digital. Su objetivo se centra en que un Sistema Informático sea utilizable.
  • Personas (usuarios del sistema): Humanware.
    • Usuarios
    • Programadores

¿Qué es el Sistema Operativo?
El SO controla y coordina el uso del hardware entre los distintos programas para diversos usuarios.  Es un programa que sirve de intermediario entre los usuarios y el hardware cuyo objetivo se centra en:
  • Ejecutar las aplicaciones de los usuarios. 
  • Administrar eficientemente los recursos de la máquina (mayor eficiencia). 
  • Facilitar la interacción con el computador (que sea fácil de usar). 
El SO se encarga de administrar los recursos determinando a quién se les entrega, en qué cantidad y en qué momento y durante cuanto tiempo. Podemos decir, que tiene una Política de Gestión de Recursos.
En el Sistema tenemos dos participantes: los procesos y los recursos.
    • Un proceso es un programa en ejecución. 
    • Un recurso puede ser real o virtual, físico o lógico. 
Los procesos compiten por el uso de los recursos y para que no existe problemas, se necesitará un árbitro imparcial que asigne recursos a los procesos de forma justa y eficiente.
El SO también actúa como interfaz. Ésto es una capa entre el usuario y el hardware que ofrece una abstracción de la realidad, más cómoda, más conveniente, más fácil para el usuario y para el programador.

Definición SO utilizando un ejemplo que permita compararlo con la vida real. 

Un SO es como el dependiente de una tienda cuyo almacén de ser visible para los clientes (usuarios) sería incomprensible (almacén=hardware). El dependiente se encarga de administrar los recursos del almacén a los clientes y facilita la interacción tienda-cliente. La tienda actúa como interfaz entre el almacén y el cliente, la cuál ofrece una visión agradable para él y más fácil a la hora de solicitar algún producto.