INGENIERIA INFORMATICA

lunes, 19 de septiembre de 2016

CONCEPTO DE PROCESO

2.1 Concepto de proceso


Sistemas Operativos Modernos 
Andrew S Tenenbauw

*Es una esencia un programa en ejecución. Cada proceso tiene asociado un espacio de decisiones, una lista de ubicaciones de memoria que va desde algún mínimo hasta cierto valor máximo.


Sistemas Operativos Distribuidos 
Silberschatz Galvin Gagne

*Una unidad de actividad que se caracteriza por la ejecución de una secuencia de instrucciones, un estado actual, y un conjunto de recursos del sistema asociado.


Sistemas Operativos
Magister  David Luis la Red Martinez

*Una abstracción de datos de un programa en ejecución también llamado tarea.

   -Un programa que se esta ejecutando.
   -Una actividad asincrónica.
   -El emplazamiento del control de un procedimiento que esta siendo ejecutable.
   -Aquella entidad a la cual son asignados los procesadores.
   -La unidad despachable.

TECNICAS DE ADMINISTRACION

2.6 Técnicas de administración del planificar


Las disciplinas del planificador del software del sistema operativo encargado de asignar los recursos de un sistema entre los procesos que solicitan. Los algoritmos  tienen distintas propiedades según los criterios en los que saben para su construcción, lo cual se refleja en qué tipo de procesos se puede ver favorecido frente a otro en la disputa del microprocesador, antes de realizar la  elección de un algoritmo se debe considerar las propiedades de estos frente al criterio de diseño elegido, algunos de estos son:

a) Eficacia: Se expresa  como un porcentaje del tiempo medio de utilización. Aunque pueden parecer lógico intentar mantener este parámetro próximo al 100% con valor elevado.

b) Rendimiento: Es una medida de numero de procesos completados por unidad  de tiempo.

c) Tiempo de retorno  o regreso: Es el intervalo del tiempo que transcurre desde que un proceso se crea o presta hasta que se completa por el sistema.

d)Tiempo de espera: Es el tiempo que el proceso espera hasta que se le concede el procesador.

e)Tiempo de respuesta a un evento: Se denomina al intervalo o del tiempo que transcurre desde que se señala un evento hasta que se ejecuta la primera instrucción de la rutina.

f) Fifo: Es un método utilizado en la estructura de datos, contabilidad de datos y teoría de cola, que guarda analogía con las personas que esperan en una cola y atendidas en que llegaron.

g) Sjf: Al igual que el algoritmo de la fifo las rofagas se ejecutan sin interrupción, solo es útil para entornos bateh.

h) Rr: Cada proceso tiene asignado un intervalo de tiempo de ejecución llamadas Quantums.

Asignación de memoria conflictiva

La memoria esta usualmente dividida en dos particiones:  una para el sistema operativo residente y otra para los procesos del usuario.

Mapeo de  memoria y protección

Cuando el planificador de la CPU selecciona un procesador para su ejecución el despachador carga los registros de re ubicación y del límite los valores correctos.

Asignación de memoria

Es uno de los métodos más simples para asignar la memoria consistente en dividirla en varias particiones múltiples de tamaño fijo en donde se involucran agujeros de primer ajuste, mejor ajuste y peor ajuste.

Fragmentación

Esta estrategia de primer ajuste como la de mejor ajuste para la asignación de memoria sufren de problemas denominados fragmentación de externa.

Segmentación

Es un aspecto importante de la gestión de memoria que se volvió inevitable con los mecanismos de paginación es la separación entre el usuario tiene de la memoria y la memoria física real.

Memoria virtual

La técnica de memoria virtual, es un mecanismo que permite la ejecución de procesos que no se encuentran completamente en memoria. La memoria virtual incluye la separación de la memoria lógica, tal como la percibe el usuario, con respecto a la memoria física.

NIVELES OBJETIVOS PLANIFICACION

2.5 Niveles, objetivos y criterios de  la planificacion


Libro: Sistemas Operativos Modernos
Autor: Andrew S. Tanenbaum

Planificación

Cuando una computadora se multiprograma, con frecuencia tiene varios procesos o hilos que compiten por la CPU al mismo tiempo. Esta situación ocurre cada vez que dos o más de estos procesos se encuentran al mismo tiempo en el estado listo.
La parte del sistema operativo que realiza esa decisión se conoce como planificador de procesos y el algoritmo que utiliza se conoce como algoritmo de planificación.

Introducción a la planificación

Con los sistemas de multiprogramación, el algoritmo de planificación se volvió más complejo debido a que comúnmente había varios usuarios esperando ser atendidos.

Comportamiento de un proceso

Casi todos los procesos alternan ráfagas de cálculos con peticiones de E/S (de disco). Por lo general la CPU opera durante cierto tiempo sin detenerse, después se realiza una llamada al sistema para leer datos de un archivo o escribirlos en el mismo.

Cuándo planificar procesos

Una cuestión clave relacionada con la planificación es saber cuándo tomar decisiones de planificación.
En primer lugar, cuando se crea un nuevo proceso se debe tomar una decisión en cuanto a si se debe ejecutar el proceso padre o el proceso hijo.
un algoritmo de planificación apropiativa selecciona un proceso y deja que se ejecute por un máximo de tiempo fijo.

Categorías de los algoritmos de planificación

Esta situación se presenta debido a que las diferentes áreas de aplicación (y los distintos tipos de sistemas operativos) tienen diferentes objetivos.
Tres de los entornos que vale la pena mencionar son:
1. Procesamiento por lotes.
2. Interactivo.
3. De tiempo real.

Metas de los algoritmos de planificación

Todos los sistemas Equidad - Otorgar a cada proceso una parte justa de la CPU Aplicación de políticas - Verificar que se lleven a cabo las políticas establecidas Balance - Mantener ocupadas todas las partes del sistema
Sistemas de procesamiento por lotes Rendimiento - Maximizar el número de trabajos por hora Tiempo de retorno - Minimizar el tiempo entre la entrega y la terminación Utilización de la CPU - Mantener ocupada la CPU todo el tiempo
Sistemas interactivos Tiempo de respuesta - Responder a las peticiones con rapidez Proporcionalidad - Cumplir las expectativas de los usuarios
Sistemas de tiempo real Cumplir con los plazos - Evitar perder datos Predictibilidad - Evitar la degradación de la calidad en los sistemas multimedia

Planificación en sistemas de procesamiento por lotes
Primero en entrar, primero en ser atendido

Con este algoritmo, la CPU se asigna a los procesos en el orden en el que la solicitan.
Cuando el primer trabajo entra al sistema desde el exterior en la mañana, se inicia de inmediato y se le permite ejecutarse todo el tiempo que desee. La gran fuerza de este algoritmo es que es fácil de comprender e igualmente sencillo de programar.

El trabajo más corto primero

supone que los tiempos de ejecución se conocen de antemano. Por ejemplo, en una compañía de seguros las personas pueden predecir con bastante precisión cuánto tiempo se requerirá para ejecutar un lote de 1000 reclamaciones, ya que se realiza un trabajo similar cada día.

El menor tiempo restante a continuación

Una versión apropiativa del algoritmo tipo el trabajo más corto primero es el menor tiempo restante a continuación (SRTN, Shortest Remaining Time Next).  Con este algoritmo, el planificador siempre selecciona el proceso cuyo tiempo restante de ejecución sea el más corto.

Planificación en sistemas interactivos

Planificación por turno circular

A cada proceso se le asigna un intervalo de tiempo, conocido como quántum, durante el cual se le permite ejecutarse.
Si el proceso se bloquea o termina antes de que haya transcurrido el quántum, la conmutación de la CPU se realiza cuando el proceso se bloquea, desde luego.

Planificación por prioridad

La planificación por turno circular hace la suposición implícita de que todos los procesos tienen igual importancia. Con frecuencia, las personas que poseen y operan computadoras multiusuario tienen diferentes ideas en cuanto a ese aspecto.

Múltiples colas

Uno de los primeros planificadores por prioridad estaba en CTSS, el Sistema de tiempo compartido compatible del M.I.T. que se ejecutaba en la IBM 7094 (Corbató y colaboradores, 1962).
Cada conmutación de procesos ocasionaba intercambiar (swapping) el proceso actual al disco y leer uno nuevo del disco.

El proceso más corto a continuación

Como el algoritmo tipo el trabajo más corto primero siempre produce el tiempo de respuesta promedio mínimo para los sistemas de procesamiento por lotes, sería bueno si se pudiera utilizar para los procesos interactivos también.
Un método es realizar estimaciones con base en el comportamiento anterior y ejecutar el proceso con el tiempo de ejecución estimado más corto.

Planificación garantizada

Un método completamente distinto para la planificación es hacer promesas reales a los usuarios acerca del rendimiento y después cumplirlas.

Planificación por sorteo


Aunque hacer promesas a los usuarios y cumplirlas es una buena idea, es algo difícil de implementar. Sin embargo, se puede utilizar otro algoritmo para producir resultados similares con una implementación mucho más sencilla.

Planificación de sistemas en tiempo real

Es un sistema de tiempo real, el tiempo desempeña un papel esencial ya que por lo general uno o mas dispositivos físicos externos a  la computadora generan estímulos.

Política contra mecanismos

Separa el mecanismo de planificación de la política de planificación esto significa que esta parametrizado de cierta forma pero los procesos de un usuario pueden llenar los parámetros.

Planificación de hilos

La planificación en esta diferencia de forma considerable, dependiendo si hay soporte para hilos a nivel usuario o para hilo a nivel.




Libro: Sistemas Operativos 2da Edición
Autor: William Stallings 

 Planificación del mono procesador

El sistema operativo puede tomar tres tipos de decisiones  que efectúan a la ejecución de los procesos. La planificación a largo plazo determina cuando se admiten los nuevos procesos, al sistema la planificación a medio plazo forma parte de la función de intercambio y determina cuando se lleva parcial o totalmente el proceso será ejecutado a continuación por el microprocesador. Desde el punto de vista de un usuario, la característica más importante de un sistema es en general el tiempo de respuesta mientras que desde el otro punto de vista del sistema.

Planificación de multiprocesadores y en tiempo real

En un multiprocesador frecuentemente acoplado a varios procesadores tienen acceso al mismo procesador durante toda su vida o se puede expedir hacia un procesador distinto.

En este contexto no son aplicables los criterios tradicionales de selección de algoritmos de planificación. En su lugar clave el factor esta en cumplir los plazos. Son apropiados en este contexto los algoritmos que dependen mucho de la propiedad y reacción a los plazos relativos.




Libro: Sistemas Operativos
Autor: Magister David Luis La Red Martinez 


Introducción y definición sobre procesos

El concepto central de cualquier sistema operativo es el proceso: una abstracción de un programa en ejecución también llamado tarea.

Estados de procesos 

Durante su existencia un proceso pasa por una serie de estados discretos, siendo varias las circunstancias que pueden hacer que el mismo cambie de estado.

Procesamiento de interrupciones

Una interrupción es un evento que altera la secuencia en que el procesador ejecuta las interrupciones; es un hecho generado por el hardware de la computadora.

El núcleo del sistema operativo

Controla todas las operaciones que implican procesos y representa solo una pequeña porción del código de todo el sistema operativo pero es de amplio uso.

Planificación de procesos

Cuando mas de un proceso es ejecutable desde el punto de vista lógico, el sistema operativo debe decidir cual de ellos debe ejecutarse en primer termino.
El planificador es la  porción del sistema operativo que decide y el algoritmo de planificación es el utilizado.

Niveles de planificación del procesador

Se consideran 3 niveles importantes de  planificación

   1- Planificación de alto nivel.
   2- Planificación de nivel intermedio.
   3- Planificación de bajo nivel.

Objetivos de la planificación 

- Ser justa
- Maximizar la capacidad de ejecución
- Maximizar el numero de usuario interactivos que reciben unos tiempos de respuesta aceptable
- Ser predecible
- Minimizar la sobrecarga
- Equilibrar el uso de recursos
- Equilibrar respuesta y utilización
- Evitar la postergación indefinida
- Asegurar la prioridad
- Dar preferencia a los procesos que mantienen recursos claves
- Dar mejor tratamiento a los procesos que muestren un "comportamiento deseable"
- Degradarse suavemente con cargas pesadas

Criterios de planificación

* La limitación de un proceso a las operaciones de E/S
* La limitación de un proceso a la CPU
* Si un proceso es por lote (bath) o interactivo
* La prioridad de un proceso

Planificación apropiada Versus no apropiaiva

Es útil cuando los procesos de alta prioridad requieren atención rápida.
Es importante para garantizar buenos tiempos de respuesta en sistemas interactivos de tiempo compartido.

Temporizador de intervalos o reloj de interrupción

El proceso al cual está asignada la CPU se dice que esta en ejecución y puede ser un proceso de sistemas operativo o de usuario.
El sistema operativo posee un reloj de interrupción para generar una interrupción, en algún tiempo futuro especifico o después de un transcurso de tiempo en el futuro.

Prioridades

Prioridades estáticas

Características:

* No cambian
* Los mecanismos de implementación son sencillos
* Implican una sobrecarga relativamente baja
* No responden a cambios en el ambiente que aria deseable ajustar alguna prioridad

Prioridades dinámicas

Características:

* Responden al cambio
* La prioridad inicial asignada a un proceso puede durar poco tiempo, luego se reajusta a u mejor valor
* Los mecanismos de implementación son mas complicados que prioridades estáticas

Tipos de planificación

Planificación a plazo fijo 

Ciertos trabajos se planifican para ser terminados en tiempo especifico o a plazo fijo.

Planificación garantizada

Se establece compromiso de desempeño con el proceso de usuario por ejemplo, si existen "n" procesos en el sistema, el proceso del usuario recibirá cerca del "1/n" de la potencia de la CPU.

Planificación del primero en entrar primero en salir (FIFO)

Los procesos se despachan de acuerdo con su tiempo de llegada a la cola de listos.

Planificación de asignación de rueda (RR)

Los procesos se despachan en FIFO y disponen una cantidad limitada de tiempo de CPU, llamada "división de tiempo" o  "cuanto".

Tamaño del cuanto o Quantum

La determinación del tamaño del cuanto es decisiva para la operación efectiva de un sistema computacional.

Planificación del trabajo mas corto primero (SJF)

Es una disciplina no apropiativa y por lo tanto no recomendable en ambientes de tiempo compartido.

Planificación del tiempo restante mas corto (SRT)

Es la contra parte apropiativa del SJF.
Es útil en sistemas  de tiempo compartido.

Planificación el siguiente con relación de respuesta máxima (HRN)

Comige algunas debilidades de SJF, tales como el acceso de perjuicio hacia los procesos largos y el exceso de favoritismo hacia las nuevos trabajos cortos.

Planificación por prioridad

Considera factores externos al proceso.
Las ideas centrales que son cada proceso tiene asociada una prioridad y que el proceso ejecutable on máxima prioridad es el que tiene el permiso de ejecución.

Colas de retroalimentación de niveles múltiples

- Favorece trabajos cortos.
- Favorece trabajos limitados por la E/S par optimizar el uso de los dispositivos de E/S.
- Determinar la naturaleza de un trabajo lo mas rápido posible y planificar el trabajo de consecuencia.

CONCURRENCIA Y SECUENCIABILIDAD

2.4 Concurrencia y Secuenciabilidad


Concurrencia.

- Es una propiedad de los sistemas en el cual los procesos de una computadora se hace simultaneamente, y pueden interactuar entre ellos. (Ejecución simultanea de mas de un proceso).

Ejemplos:

*Dos o mas procesos decimos que son concurrentes, paralelos, o que se ejecutan concurrentemente, cundo son procesados al mismo tiempo, es decir, que para ejecutar uno de ellos, no hace falta que se aya ejecutado otro.

*Esta ejecución simultanea podria conseguirse completamente, puesto que podemos asignarle, por ejemplo, un proceso A al procesador A y un proceso B al procesador B y cada procesador realizaran la ejecución de su proceso.

Secuenciabilidad

*Un programa secuencial tiene una linea simple de control de flujo.

*Las operaciones de un programa secuencial están ordenadas de acuerdo con un orden estricto.

*La verificación de un programa secuencial es sencilla.

  - Cada sentencia de la respuesta correcta
  - Las sentencias se ejecutan en el orden adecuado

PROCESOS LIGEROS

2.3 Procesos ligeros: Hilos o Hebras


Hilos

En los sistemas operativos tradicionales, cada proceso tiene un espacio de direcciones y un solo hilo de control.

Uso de hilos

Resulta ser que hay varias razones de tener estos miniprocesos, conocidos como hilos.
La principal razón de tener hilos es que en muchas aplicaciones se desarrollan varias actividades a la vez. Un segundo argumento para tener hilos es que, como son mas ligeros que los procesos, son mas fáciles de crear (es decir, rápidos) y destruir. Una tercera razón de tener hilos es también un argumento relacionado con el argumento.

El modelo clásico del hilo

El modelo clásico de proceso se basa en dos conceptos independientes: agrupamiento de recursos y ejecución. Lo que agregan los hilos al modelo de procesos es permitir a cabo varias ejecuciones en el mismo entorno del proceso que son en gran parte independiente unas de las otras.

El termino multhilamiento también se utiliza para describir la situación de permitir varios hilos en el mismo proceso. Cuando se ejecuta un proceso con multihilamiento en un sistema con una CPU, los hilos toman turnos para ejecutarse.

Hilos en POSIX

El paquete de hilos se conoce como Pthreads. Cada uno tiene un identificador, un conjunto de registros y un conjunto de atributos, que se almacenan en una estructura.
Para crear un hilo se utiliza la llamada a Pthreadcreate.
Cuando un hilo ha terminado el trabajo que se le asigna puede terminar llamado a pthread_exit.

Implementación de hilos en el espacio de usuario

Hay dos formas principales de implementar un paquete de hilos: en espacio de usuario y en el kernel.
El primer método es colocar l paquete de hilos completamente en espacio de usuario. El kernel no sabe nada acerca de ellos. Con este método, los hilos se implementan mediante una biblioteca.

Cuando los hilos se administran en espacio de usuario, cada proceso necesita su propia tabla en ese proceso.

Implementaación de hilos en el kernel

La tabla de los hilos de kernel contiene los registros, el estado ademas información de cada hilo. Todas las llamadas que podrían bloquear un hilo se implementan como llamada al sistema, a un costo considerablemente mayor que una llamada a un procedimiento del sistema nen tiempo de ejecución.
Los hilos de kernel no requieren de nuevos llamados al sistema sin bloqueo. Los hilos de kernel resuelven solo algunos problemas.

Implementaciones hibridas

Una de estas formas es utilizar hilos de nivel de kernel y después de multiplexar los hilos de nivel de usuario con algunos o con todos los hilos de nivel kernel.
Cuando se utiliza este método, el programados puede determinar cuantos hilos de kernel va a utilizar y cuantos hilos de nivel usuario va a multiplexar en cada uno.
Con este método, el kernel esta consiente solo de los hilos de nivel kernel y los planifica.

Activaciones del planificador

Aunque los hilos de kernel son mejores que los hilos del nivel usuario en cierta forma clave, también son sin duda mas lentos.
Los objetivos del trabajo de una activación del planificado son imitar la funcionalidad de los hilos de kernel.
La eficiencia se obtiene evitando transiciones innecesarias entre los espacios de usuarios y de kernel.
Para realizar la notificación, el kernel activa el sistema en tiempo de ejecución en una dirección inicial conocida, no muy similar a una señal en Unix. A este mecanismo se le conoce como llamada ascendente (upcall)

Hilos emergentes

Los hilos se utilizan con frecuencia en los sistemas distribuidos. El método tradicional es hacer que un proceso o hilo, que esta bloqueado en una llamada al sistema recibe, espere un mensaje entrante. A dicho hilo se le conoce como hilo emergente (pop-up thread).

Conversión de código de hilado simple a multihilado

Es mucho mas dificil convertir estos programas para que utilicen multihilamiento de lo que podria parecer en un principio.
Para empezar el código de un hilo normalmente consiste de varios procedimientos, al igual que un proceso.
La primera llamada podria ser como se muestra a continuación.

ESTADOS Y TRANSCIONES

2.2 Estados y transiciones de los procesos


Estados de los procesos:


*Ejecución
*Espera
*Bloqueado
*Suspendido
*Terminado/Finalizado


Procesos e hilos

El concepto mas importante en cualquier sistema operativo es el proceso, una abstracción de un programa en ejecución.

Procesos

Considerado primero un servidor web, a donde convergen las peticiones de paginas web provenientes de todos lados. Cuando llega una petición, al servidor verifica si la pagina que se necesita esta en la cache. De ser así, devuelve la pagina, en caso contrario, inicia una petición al disco para obtenerla y, desde la perspectiva de la CPU estas peticiones tardan eternidades mientras se espera el cumplimiento de una petición, muchas mas pueden llegar. Si hay varios discos procedentes, algunas o todas las demás peticiones podrán dirigirse a otros discos mucho antes de que se cumpla la primera petición. Es evidente que se necesita cierta forma de modelar y controlar esta concurrencia. Los procesos (en especial los hilos) pueden ayudar en este caso.

El modelo del proceso

En este modelo, todo el software ejecutable en la computadora, que algunas veces incluye al software, se organiza en varios procesos secuenciales. Un proceso no es mas que una instancia de un programa en ejecución, incluyendo los valores actuales del contador del programa, los registros y las variables.


Creación de un proceso


El sistema operativo necesita cierta manera de crear procesos. El sistema muy simple o sistemas diseñados para ejecutar solo una aplicación, es posible tener presentes todos los procesos que se vayan a requerir cuando el sistema inicie.
Hay cuatro eventos principales que provocan la creación de procesos

1- El arranque del sistema
2- La ejecución, desde un proceso, de una llamada al sistema para la creacion de procesos.
3- Una petición de usuario para crear un proceso.
4. El inicio de un trabajo por lotes.

Terminación de proceso

Una ves que sea un proceso, empieza a ejecutarse y realiza el trabajo al que esta destinado. Sin embargo, nada para siempre, ni siquiera los procesos. Tarde o temprano el nuevo proceso terminara, por lo general debido a una de las siguientes condiciones.

1- Salida normal (voluntaria)
2- Salida por error (voluntaria)
3- Error fatal (voluntaria)
4- Eliminado por otro proceso (voluntaria)

Jerarquías de procesos

En algunos sistemas, cuando un proceso crea otrro, el proceso padre y el proceso hijo continúan asociado en cierta forma. El proceso hijo puede crear por si mismo mas procesos, formando una jerarquía de procesos.


Estados de un proceso


Aunque cada proceso es una entidad independiente, con su propio contador de programas y estado interno, a menudo los procesos necesitan interactuar con otros. Un proceso puede generar cierta salida de otro proceso que utiliza  como entrada.

1- En ejecución (en realidad esta usando la CPU en ese instante)
2- Listo (ejecutable: se detuvo temporalmente para dejar que se ejecute otro proceso)
3- Bloqueado (no puede ejecutarse sino asta que ocurra cierto evento externo)

Implementación de los procesos

Para implementar el modelo de proceso, el sistema operativo mantiene una tabla, llamada tabla de proceso, con solo una entrada por cada proceso.


Modelación de la multiprogramación 


Cuando se utiliza la multiprogramación, el uso de la CPU se puede mejorar. Dicho en forma cruda: si el proceso promedio realiza cálculos solo 20% del tiempo que esta en la memoria, con cinco procesos en memoria a la vez la CPU deberá estar ocupada todo el tiempo.

                                                               Uso de la CPU = 1-p

Estados de los procesos 

1-  Control + Alt + Supr
2- Administrador de tareas
3- Detalles

domingo, 18 de septiembre de 2016

Unidad 2

UNIDAD 2 Administración de procesos y del procesador.

La gestión de procesos es la tarea fundamental de cualquier sistema operativo moderno.
 El sistema operativo debe asignar recursos a los procesos, permitir el intercambio de información entre los mismos, proteger los recursos de un proceso del resto y facilitar la sincronización de procesos.
 Para alcanzar estos objetivos, el sistema operativo mantiene una estructura de datos para cada proceso que describe su estado y los recursos que posee y que permite al sistema operativo imponer un control sobre los procesos (PCB Bloque de Control de Proceso).
 En un monoprocesador multi-programado, debe intercalarse en el tiempo, la ejecución de múltiples procesos. En un multiprocesador, no sólo puede intercalarse la ejecución sino que los procesos se pueden ejecutar simultáneamente. Ambos, intercalación y ejecución simultánea, son formas de concurrencia y llevan a una multitud de problemas complejos, tanto para el programador de aplicaciones como para el sistema operativo.
 El sistema operativo debe llevar a cabo la función de planificar y ofrecer mecanismos para compartir y sincronizar procesos.
 2.1 Concepto de proceso.
 Programas.- Colección de instrucciones que el procesador interpreta y ejecuta, se almacenan en sistemas no volátiles necesitando ser cargados en memoria principal para poder ser ejecutados, se considera un ente estático. Procesos.-Programa en ejecución, el sistema operativo les asigna recursos, Se consideran un ente dinámico. El proceso es una abstracción creada por el SO, que se compone de: Código de Programa: sección texto Contexto de Ejecución: PC, registros del procesador y una pila para invocación de procedimientos Sección de Datos, que contiene variables globales Recursos del sistema. Características Permite modularizar y aislar errores de programas durante su ejecución Soporta concurrencia de actividades, lo que permite un mejor aprovechamiento de los recursos Denominaremos como procesos tanto a los trabajos (Jobs) en sistemas de lotes, como a las tareas (task) en sistemas de tiempo compartido Modelo La diferencia entre un programa (conjunto de instrucciones) y un proceso (instrucciones ejecutándose) es obvia y crucial para entender el funcionamiento de los SO. Imaginemos un mecánico de autos en un taller donde se reparan carros con averías complejas en las que se hace necesario consultar el manual de cada modelo, que contiene las instrucciones para reparar cada posible avería. Además, se permiten reparaciones rápidas a las que se les da mayor prioridad.
 Existe un almacén de refacciones y herramientas suficientes para las reparaciones. Comparando esta situación con un sistema de cómputo se pueden establecer las siguientes analogías: El mecánico sería el CPU (procesador) que realizará el trabajo. El manual de cada reparación sería el programa. Las herramientas serían los recursos disponibles Las refacciones serían los datos. La actividad de usar las herramientas para desmontar las piezas defectuosas sustituyéndolas por otras nuevas siguiendo las instrucciones del manual equivaldría al proceso.
 Suponiendo que en un momento dado el mecánico está realizando una reparación compleja (de las que llevan tiempo) y aparece un carro que solicita una reparación de las rápidas (ha aparecido una interrupción). El mecánico suspende momentáneamente la reparación compleja anotando en qué situación se queda dicha reparación y qué operación estaba realizando en ese momento (guarda el estado del proceso).
Asimismo, sustituye el manual que estaba realizando por el de la nueva reparación que se dispone a realizar (cambio de programa). Comienza la nueva reparación (cambio de proceso), en la que las herramientas no serán las mismas que antes (distintos recursos); las indicaciones del usuario, las refacciones (datos) y las indicaciones del manual (programa) llevarán a feliz término la reparación para que el mecánico regrese a la reparación inicial. Con este ejemplo se resalta que un proceso es una actividad que se apoya en datos, recursos, un estado en cada momento y un programa.

Glosario:

PCB: Bloque central de proceso.
Wait: operación de espera sobre un semáforo. Los semáforos serán rutinas programadas utilizadas en programación concurrente
Cola: estructura de datos dinámica residente en memoria principal derivada de las listas, la cual puede cambiar de tamaño en tiempo de ejecución. Las inserciones y eliminaciones se van a realizar atendiendo al método FIFO (Primero en entrar, Primero en salir).
Carga del sistema: número de procesos (programas activos), que tenemos actualmente cargados en memoria principal. Sobre cualquiera de ellos puede actuar el planificador.
Apuntador o puntero: tipo de dato formado por una dirección de memoria principal. A través de este tipo de dato se puede acceder a cualquier bloque de memoria que esté referenciado, es decir que sepamos su dirección lógica.
SIGNAL: operación de continuación sobre un semáforo. Los semáforos serán rutinas, programadas para utilizarlas en programación concurrente.
Tabla de procesos: estructura de datos que actuando como una tabla de una entrada, almacena los procesos creados en el sistema ya estén listos o bloqueados.
Tiempo real: un sistema de este tipo es aquel que necesita de tiempos de respuesta muy cortos, incluso del orden de microsegundos, en el caso de procesos críticos.
Acumulador: Registro en el que son almacenados temporalmente los resultados aritméticos y lógicos intermedios que serán tratados por el circuito operacional de la unidad aritmético-lógica (ALU).
Asíncrono: término utilizado para especificar la ejecución de distintos procesos de forma independiente unos de los otros respecto al tiempo. En Hardware este concepto es aplicable a dispositivos físicos como la memoria y la CPU, etc.
Hilo: cada una de las unidades de asignación de un proceso, de esta forma cada proceso (elemento que posee recursos), puede mantener varias unidades de asignación de CPU en una misma ejecución. Este concepto se conoce también como 'thread', hebra o proceso ligero
Protocolos: estándar de comunicación entre distintos dispositivos físicos o procesos mediante el cual se regulan los mecanismos y políticas a seguir para llevar a cabo una transmisión perfecta de datos.
CPU: Acrónimo inglés de "Central Processing Unit", en castellano, "Unidad Central de Proceso". Aquella unidad incluida íntegramente en el microprocesador (solo en PC's) de un computador que controla el resto de unidades. Formada por la unidad aritmético-lógica, la unidad de control y de pequeños registros principalmente. El control lo lleva a cabo mediante la interpretación y la ejecución de instrucciones, según las señales que le dicta un reloj.
Depurador: programa especializado en la corrección y eliminación de errores en un código fuente durante su edición, o capturando diversos datos durante su ejecución.
Cliente: aquel proceso o dispositivo solicitante que realiza la petición de un servicio o trabajo a otro proceso denominado 'servidor'.
Interrupción: detención temporal en un punto determinado de un programa, para permitir el acceso y proceso de una rutina que tomará el control del sistema. Puede ocurrir debido a diferentes causas ya sean hardware o software.
Pila: zona reservada de la memoria o registros hardware donde se almacena temporalmente el estado o información de un programa, rutina, etc... . Mantiene una política de inserciones y eliminaciones LIFO (Primero en entrar Último en salir). 
Registro: pequeña memoria interna del microprocesador, formada generalmente por bien estables, es de rápido acceso y son de muy utilizados programando en lenguaje ensamblador.
Rutinas de E/S: conjunto de instrucciones encargado de controlar la transferencia de datos entre los periféricos y el ordenador. Gestionan las capacidades de los puertos.
Tiempo compartido: sistema de reparto de la capacidad de proceso basado en la división del tiempo de CPU entre los distintos trabajos que hay en memoria principal, para que todos avancen en su ejecución.

1.6 NÚCLEO/KERNEL

1.6 Núcleo

EL núcleo del sistema operativo controla todas las operaciones que implican procesos y representa solo una pequeña porción del sistema operativo.
El proceso de interrupciones  se incluye en el núcleo ya que debe ser rápido para optimizar el uso de los recursos del sistema y proveer tiempos de respuesta aceptable a los usuarios interactivos.

Practica tema 1.6 Procesos de Windows

Investigar 3 procesos de Windows
Procesos de host para las tareas, igfxhk module, COM surrogate.
Igfxhk Module: Estos archivos pertenecen al producto de Intel R common interface.
COM surrogate: Archivo de Windows genuino ubicado en   “C:\windows\System32”
Host para las tareas: Es un proceso que se inicia con el sistema y se  encarga de iniciarse con el sistema y checar el registro e iniciar los procesos.


1.5 SINTESIS

1.5 Estructura: Niveles o extractos de diseño.


Nivel 1 Gestión de memoria: Proporciona la facilidad de bajo nivel para la gestión de memoria
Secundaria necesaria para la ejecución de procesos.
Nivel 2 procesadores: Se encarga de actuar en los quantums de  tiempo para cada uno de los procesos, creando interrupciones de hardware cuando no  son respetadas.
Nivel 3 Entrada/Salida: Proporciona las facilidades para poder utilizar  los dispositivos de E/S requeridos en los procesos.
Nivel 4 Información o aplicación e intérprete de lenguajes: Facilita la comunicación con los lenguajes  y el sistema operativo para aceptar las órdenes en cada una de las aplicaciones.
Nivel 5 Control de archivos: Proporciona la  facilidad para almacenamiento a largo plazo y la manipulación  de archivos con nombre, va asignando espacio y accesos a datos en memoria. El núcleo o kernel realiza diferentes tareas tales:
  • Manejo de interrupciones
  • Creación y destrucción  de procesos.
  • Cambio de estado de los procesos.
  • Despacho.
  • Suspensión y reanudación de procesos.
  • Sincronización de procesos.
  • Comunicación entre procesos
  • Manipulación de los bloques de control de proceso.


Una definición más específica de lo que es el núcleo o kernel de un sistema operativo es un conjunto de rutinas  cuya misión es la de  gestionar el procesado, la memoria, E/S y resto de proceso disponible en la instalación. Toda esta gestión la realiza para atender el funcionamiento y peticiones de los trabajos que se ejecuta en el sistema.

1.4 CLASIFICACION S.O


Tema 1.4 del libro de sistemas operativos modernos

Síntesis tipos de S.O
Investigar clasificación de los sistemas operativos.
Tipos de sistemas operativos



En este tema se plantea un poco del funcionamiento de los sistemas operativos y se explica que hace cada uno.

Sistemas operativos mainframe: 

Los sistemas operativos de estos mainframes solo eran exclusivos para este tipo de computadores más robustos. Estos comenzaron a figurarse en  el ámbito computacional como servidores web de alto rendimiento, servidores para sitios de comercio electrónico a gran escala, estos  sistemas estaban profundamente orientados hacia el procesamiento  de muchos trabajos a la vez.
 

Sistemas operativos de servidores: 

Este tipo de sistemas  operativos que se ejecutan en servidores o en computadoras más  grandes  como los mainframes ya mencionados anteriormente,dan  servicio a varios usuarios a la vez a través de una red que les permite compartir los recursos de hardware y software. Algunos de ellos actualmente utilizados son Solaris, Free BSD, Linux Y Windows server.
 

Sistemas operativos de multiprocesadores:

Este tipo de sistema se le conoce como computadoras en paralelo, multi-computadoras o multiprocesadores, estas necesitan sistemas operativos especiales, con la llegada de los chips multi-núcleo los sistemas operativos tienen que lidiar con multiprocesadores de al menos mediana escala, lo único difícil para que estos sistemas que se ejecutan en microprocesadores pueden ser Linux Windows entre otros más conocidos.
 

Sistemas operativos de computadoras personales: 

    Todos los sistemas operativos de hoy en día soportan la multiprogramación  algunos ejemplos comunes son Linux, Free BSD, Windows, Macintosh entre otros más que tal vez no sea necesario presentarlos pero existen para interactuar con el usuario.
 

Sistemas operativos de computadoras de bolsillo:

 Este tipo de sistema operativo  son sistemas cada vez más pequeños, una computadora que cabe en los bolsillos y realiza una pequeña cantidad de funciones, todo esto ha llevado  a  la fusión de los celulares y agendas electrónicas en esencia, los sistemas que operan son más sofisticados, con las finalidades de ofrecer muchas funciones, los sistemas más populares son Symbian OS.
 

Sistemas operativos integrados:

 Se conocen  como integrados o embebidos, operan en las computadoras que controlan dispositivos que no se consideran generalmente como computadoras  ya que  no aceptan software instalado por el usuario. La principal propiedad que diferencia a los sistemas operativos integrados de los dispositivos de bolsillo es la certeza de que  nunca podrá ejecutar software que no sea confiable.
 

Clasificación de los sistemas operativos




EXPOSICIONES PARTE I

1.3   Exposición histórica

PRIMERA GENERACIÓN (tubos de vacío): 

En esta generación los tubos de vacío eran principalmente utilizados  anteriormente antes de la aparición  de los transistores y realizaban funciones  similares  a lo que hoy en día se conoce como circuitos integrados, componentes como capacitores entre otros. Antes del ensamblador se utilizaba solo 0 y 1.

SEGUNDA GENERACIÓN (transistores y sistemas de procesamiento por lotes):

Con el surgimiento de los transistores se hizo posible la construcción  de computadores, estos sustituyeron  a los tubos de vacío, pero aun con todo esto se crearon los mainframes  pero estos necesitan estar  en cuartos especiales  estos solo eran utilizados por las personas capacitadas en la operación  de estas máquinas, el procesamiento por lotes involucra lectura, procesamiento y salida de los datos.

TERCERA GENERACIÓN:

IBM fue un pionero en la utilización de los circuitos integrados, ofrecían mayor ventaja de precio y rendimiento, Fred Brooks Fue uno de los desarrolladores OS 360  la multiprogramación se popularizo  y hoy en día las actualizaciones en hardware y software se hizo mejor posible trabajar de forma más que amigable con el computador personal y el usuario.

CUARTA GENERACIÓN (Las computadoras personales):

Con el desarrollo de los circuitos LS1 las personas podían tener computadoras personales. Cuando Intel presento  el microprocesador 8080 deseaba un sistema operativo en parte para poder probarlo. Partir de 1980 IBMPC  busco software para ejecutarlo en ella, después Bill Gates ofreció a IBM DOS/BASIC.

SISTEMAS OPERATIVOS ACTUALES:

Un sistema operativo es la base  o plataforma en donde se pueden ejecutar y cargar una gran lista de programas, entre estos Mac Os, Windows, Linux, IOS, Windows phone, Solaris, Android, entre otros han ido evolucionando  a través de los años.

TENDENCIAS DE LOS SISTEMAS OPERATIVOS:


En este tema se planteó la renovación  de los sistemas operativos  o evolución de los mismos, actualmente  los que siguen compitiendo en el mercado son Linux, mac-OSx, Windows

1.1 FUNCIONES Y CARACTERISTICAS S.O

1.1   Funciones y características de un sistema operativo

Funciones y objetivos de los sistemas operativos

Un sistema operativo es un programa que controla  la ejecución de los programas de aplicación  y que actúa como interfaz entre el usuario  de un computador  y el hardware de la misma. Puede considerarse que un sistema operativo tiene  tres objetivos o lleva cabo tres funciones.
Comodidad: Un sistema operativo  hace que un computador sea más cómodo  de utilizar
Eficiencia: Un sistema operativo  permite que los recursos  de un sistema operativo se aprovechen de manera eficiente.

Capacidad de evolución: Un sistema operativo  debe construirse de modo que permita el desarrollo efectivo, la verificación  y el a introducción a nuevas  funciones en el sistema y a la vez no interferir en los servicios que brinda.

Características de los Sistemas Operativos

1.concurrencia

Consiste en la existencia de varias actividades simultáneas o paralelas. Ejemplo de ello lo son la superposición de las operaciones de I/O con el proceso de computación, así como la coexistencia en memoria de varios programas. La concurrencia lleva asociado el problema de conmutar de una tarea a otra, así como proteger una determinada actividad de los efectos de las otras, así como la sincronización de tareas que sean mutuamente dependientes.

2.Utilización conjunta de recursos. 

Compartición.
Las razones para la compartición son las siguientes:
a) El coste:
 es absurdo disponer de suficientes recursos para cada usuario por separado.
b) Aprovechamiento de los trabajos de otros.
 La utilidad es poder utilizar rutinas y programas desarrollados por otras personas.
c) Posibilidad de compartir datos: 
Utilización de una misma base de datos para varios programas distintos, asociados posiblemente a distintos usuarios.
d) Eliminación de redundancias:
poder disponer de una sola copia de un programa (por ejemplo un compilador) y compartirlo con otros.

3.Permite que el usuario guarde sus datos o programas en el propio ordenador: 

No tener que usar medios externos (portables). Los problemas que se plantean son de protección de la información frente a terceros y protegerlos frente a fallos del sistema.

4.Un Sistema Operativo debe ser determinista en el sentido de que el mismo programa ejecutado con los mismos datos

En momentos diferentes, debe producir los mismos resultados. En cambio será indeterminista porque en caso de variabilidad de las situaciones puede responder de un modo impredecible. Deben tomarse las medidas oportunas.
Estas situaciones pueden ser debidas a petición de recursos, errores de ejecución en programas o bien interrupción de periféricos.

CONCEPTOS SISTEMA OPERATIVO

1.1   Definición y concepto

SILBERSCHATZ GALVIN GAGNE DUNDAMENTOS DE LOS SISTEMAS OPERATIVOS

En general  no disponemos de ninguna definición  de sistema operativo que sea  completamente adecuada, los sistemas operativos  existen porque  ofrecen la forma razonable  de resolver  un problema de crear  un sistema informático utilizable. Además  no hay ninguna definición universalmente aceptada  sobre que forma parte de un sistema operativo.

ANDREWS. TENEBAUM SISTEMAS OPERATIVOS MODERNOS

En ciertos sistemas la idea  se lleva hasta el extremo y partes de lo que generalmente se considera como el sistema operativo (por ejemplo el sistema de archivos) se ejecutan  en espacio del usuario, todo lo que se ejecuta en modo kernel  forma sin duda  parte del sistema operativo, pero podría decirse  que algunos programas  que se ejecutan fuera  de este modo también  forman parte del sistema.

DAVID LUIS LA RED MARTINEZ SISTEMAS OPERATIVOS MAGISTER

Un sistema operativo distribuido  es una colección de computadoras independientes que aparecen a los usuarios del sistema como una única computadora.
Sistemas operativos distribuidos es un grupo de programas de proceso con las rutinas de control necesarias  para mantener continuamente operativos dichos programas.

WILLIAM STALLING SISTEMAS OPERATIVOS 2DA EDICION.


Es un programa del sistema que controla todos los recursos del computador y ofrece le soporte básico sobre el  cual puede escribirse  los programas que se aplican.

TIME-LINE

LINEA DEL TIEMPO SISTEMAS OPERATIVOS


UNIDAD I

Unidad I Introducción a los sistemas operativos
Trabajo en clase
 Investigar y escribir una síntesis de dos cuartillas.
Línea del tiempo de los sistemas operativos
Un sistema operativo es un programa que administra el hardware de una computadora. También  proporciona las bases para los programas de aplicación, y actúa como intermediario entre el usuario y el hardware.
Un sistema operativo es un programa  o conjunto de programas que torna amigable, eficiente y productivo  el uso del computador (hardware), permitiendo la ejecución de aplicaciones del usuario. Es el intermediario entre las aplicaciones de usuario y hardware.
 Sus metas constan en las siguientes:


  1. ·         Brindar un ambiente de realización y ejecución  de aplicaciones.
  2. ·         Proveer un entorno  sin interferencias a cada usuario
  3. ·         Administra en forma equitativa los recursos (hardware, software).
  4. ·         Hacerlo de la forma más amigable e intuitiva posible
  5. ·         Sus tareas constan de:
  6. ·         Implementar diferentes  entornos para  para diferentes usos (interfaz gráfica, shells, tipo web etc.)
  7. ·         Proveer una o más interfaces con el usuario.
  8. ·         Proveer  a las aplicaciones un conjunto de servicios(a través  de system services).
  9. ·         Eficiencia y equidad de la administración de recursos.

Se puede decir que  un sistema operativo es un: 
  • Administrador de  recursos. Consiste en administrar los recursos disponibles 
  • Programa de control: Controla la ejecución  de los programas  para la prevención  de errores  y mal uso del sistema.

Regresando a comienzos de la historia der los sistemas operativos podemos encontrar los siguientes:
Sistemas batch o por lotes (70’s y comienzos de los 80’s) Estos constaban de una entrada de trabajos y una salida impresa, por lo cual la interacción del usuario era nula. Sus características eran  que solo soporta baban un trabajo a la vez, y las tareas relacionadas se agrupaban en conjuntos o lotes para su ejecución y el procesamiento más eficiente.
Los sistemas de tiempo compartido.
Estos tipos de sistemas eran multiusuarios, ejecutaban programas  de forma concurrente con una elevada tasa de despacho de procesador (Cambio de contexto), de forma tal de permitir a los usuarios que interactúen  directamente con el sistema como si fueran su único usuario.
La necesidad de acceder  y actualizar los datos de forma concurrente creo la necesidad  de evolucionar  el sistema de archivos a uno multiusuario, incorporando técnicas  de protección de accesos.
Sistemas para computadoras personales:
Fueron diseñados en base  a que serían utilizados por un único usuario y todo el énfasis den el desarrollo  estuvo en mejorar la interacción  con el usuario. Se desarrolló  la interfaz de ventanas que hoy conocemos.
Sistemas paralelos (Comienzo de los 90’s)
Son sistemas que permitieron la ejecución simultánea  y sincronizada de procesos se clasifican en:
Altamente integrados:”higthtly coupled”. On sistemas donde los canales de interconexión  son de alta velocidad (Bus o memoria compartida)
Poco integrados (“Closely coupled”) son sistemas donde los canales  interconexión son de baja velocidad.
Sistemas de tiempo real
Son sistemas  en los cuales todo el resultado debe producirse  en un cierto tiempo.
En si  es parte de algunos sistemas  que fueron evolucionando  a través de los años, mejorando en fallos y ser más eficientes  para los usuarios actualmente.









PRESENTACION

                                  Sistemas operativos I



Pedro Tamayo Gomez

Lunes 11:00-12:00 Martes 9:00-11:00 Jueves 12:00-13:00

Encuadre

Trabajo en clase               20 %
Tareas                              20%
Insumos                           20%
Actividades Actitudinales 10%
Examen                           30%


  • Examen Diagnostico
  • 1.       ¿Qué es un sistema operativo?
  • 2.       Escribe el proceso de encendido de una computadora
  • 3.       ¿A qué se le llama tarea o proceso?
  • 4.       ¿Qué es multitarea?
  • 5.       ¿Qué es multiprocesamiento?
  • 6.       ¿Con que unidades se mide la capacidad de almacenamiento de un disco duro?
  • 7.       ¿Con que unidades se mide la capacidad de procesamiento de una computadora?
  • 8.       ¿Qué es un cuello de botella?
  • 9.       ¿Qué es un driver?
  • 10.   Escribe como administrar recursos de software y hardware en una computadora

  • 1.       Es el conjunto de aplicaciones que  trabajan para administrar recursos de una maquina
  • 2.       Ingresar suministro de  energía eléctrica al equipo, el equipo inicia el BIOS, verificación de hardware del equipo, buscar el BOOT  o arranque del SO, cargar el BOOT, cargar el sistema operativo.
  • 3.       La sucesión de tareas  que suceden dentro del SO
  • 4.       A las tareas que  trabajan de forma paralela a la  vez.
  • 5.       Capacidad del CPU para trabajar con muchos procesos  a la vez.
  • 6.       Megabyte, Gigabyte, Terabyte.
  • 7.       Cuando el hardware  no puede administrar el software.
  • 8.       MHz, GHz, etc.
  • 9.       Software del fabricante  del hardware, indispensable para que el dispositivo pueda funcionar correctamente.
  • 10.   Monitoreando las aplicaciones ejecutadas, los recursos consumidos y el hardware existente.

  • 1)      Conjunto de órdenes y programas que controlan los procesos básicos de una computadora, y administra el hardware.
  • 2)      Encendido de la placa madre,procesador,BIOS, power on selft test(post),tarjeta de video, inicialización del hardware, unidad, BOOT , grub ,kernel , proceso base init.
  • 3)      Programa en ejecución.
  • 4)      Permitir que varios procesos o aplicaciones se ejecuten aparentemente al mismo tiempo.
  • 5)      El uso de dos o más procesadores del computador.
  • 6)      La capacidad de un disco duro se mide en megabytes, más conocidos como megas.
  • 7)      Unidades de medida  HZ.
  • 8)      Cuando la capacidad de los componentes se ve limitada.
  • 9)      Software que hace la conexión entre el hardware y el software.
  • 10)   El mismo sistema revisa la compatibilidad de hardware y software.