miércoles, 8 de agosto de 2018

sistema operativos

¿Qué es un sistema operativo?
El sistema operativo es el principal programa que se ejecuta en toda computadora
de propósito general.
Los hay de todo tipo, desde muy simples hasta terriblemente complejos, y
entre más casos de uso hay para el cómputo en la vida diaria, más variedad
habrá en ellos.
A lo largo del presente texto, no se hace referencia al sistema operativo como
lo ve o usa el usuario final, o como lo vende la mercadotecnia—el ambiente
gráfico, los programas que se ejecutan en éste, los lenguajes de programación
en los cuales están desarrollados y en que más fácilmente se puede desarrollar
para ellos, e incluso el conjunto básico de funciones que las bibliotecas base
ofrecen son principal mente clientes del sistema operativo — se ejecutan sobre
él, y ofrecen sus interfaces a los usuarios (incluidos, claro, los desarrolladores).
La diferencia en el uso son sólo –cuando mucho– consecuencias del diseño de
un sistema operativo. Más aún, con el mismo sistema operativo –como pueden
constatar lo comparando dos distribuciones de Linux, o incluso la forma
de trabajo de dos usuarios en la misma computadora– es posible tener entornos
operativos completamente disimiles.
Resultado de imagen para sistemas operativos
¿Por qué estudiar los sistemas operativos?
La importancia de estudiar este tema radica no sólo en comprender los mecanismos
que emplean los sistemas operativos para cumplir sus tareas sino
en entenderlos para evitar los errores más comunes al programar, que pueden
resultar desde un rendimiento deficiente hasta pérdida de información.
Como desarrolladores, comprender el funcionamiento básico de los sistemas
operativos y las principales alternativas que ofrecen en muchos de sus
puntos, o saber diseñar algoritmos y procesos que se ajusten mejor al sistema
operativo en que vayan a ejecutarse, puede resultar en una diferencia cualitativa
decisiva en el producto final.
Resultado de imagen para importancia de los sistemas operativos
Funciones y objetivos del sistema operativo
El sistema operativo es el único programa que interactúa directamente con
el hardware de la computadora. Sus funciones primarias son:
Abstracción Los programas no deben tener que preocuparse de los detalles de
acceso a hardware, o de la configuración particular de una computadora.
El sistema operativo se encarga de proporcionar una serie de abstracciones
para que los programadores puedan enfocarse en resolver las necesidades
particulares de sus usuarios. Un ejemplo de tales abstracciones
es que la información está organizada en archivos y directorios (en uno o
muchos dispositivos de almacenamiento).
Administración de recursos.- Una sistema de cómputo puede tener a su disposición
una gran cantidad de recursos (memoria, espacio de almacenamiento,
tiempo de procesamiento, etc.), y los diferentes procesos que se
ejecuten en él compiten por ellos. Al gestionar toda la asignación de recursos,
el sistema operativo puede implementar políticas que los asignen de
forma efectiva y acorde a las necesidades establecidas para dicho sistema.
Aislamiento.-  En un sistema multiusuario y multitarea cada proceso y cada
usuario no tendrá que preocuparse por otros que estén usando el mismo
sistema —Idealmente, su experiencia será la misma que si el sistema
estuviera exclusivamente dedicado a su atención (aunque fuera un sistema
menos poderoso).
Para implementar correctamente las funciones de aislamiento hace falta
que el sistema operativo utilice hardware específico para dicha protección
Resultado de imagen para funcion de los sistemas operativos
Sistemas de tiempo compartido
El modo de interactuar con las computadoras se modificó drásticamente
durante los años sesenta, al extenderse la multitarea para convertirse en sistemas
interactivos y multiusuarios, en buena medida diferenciados de los anteriores
por la aparición de las terminales (primero teletipos seriales, posteriormente
equipos con una pantalla completa como se conocen hasta hoy).
En primer término, la tarea de programación y depuración del código se
simplificó fuertemente al poder hacer el programador directamente cambios y
someter el programa a la ejecución inmediata. En segundo término, la computadora
nunca más estaría simplemente esperando a que esté listo un progama: mientras
un programador editaba o compilaba su programa, la computadora seguía
calculando lo que otros procesos requirieran.
Un cambio fundamental entre el modelo de multiprogramación y de tiempo
compartido es el tipo de control sobre la multitarea
Multitarea cooperativa o no apropiativa (Cooperative multitasking).
 La implementaronlos sistemas multiprogramados: cada proceso tenía control del
CPU hasta que éste hacía una llamada al sistema (o indicara su disposición
a cooperar por medio de la llamada yield: ceder el paso).
Un cálculo largo no era interrumpido por el sistema operativo, en consecuencia
un error de programador podía congelar la computadora completa
Resultado de imagen para sistemas operativos de tiempo compartido
Administración de procesos

Concepto y estados de un proceso
En un sistema multiprogramado o de tiempo compartido, un proceso es la
imagen en memoria de un programa, junto con la información relacionada con
el estado de su ejecución.
Un programa es una entidad pasiva, una lista de instrucciones; un proceso
es una entidad activa, que –empleando al programa– define la actuación que
tendrá el sistema.
En contraposición con proceso, en un sistema por lotes se habla de tareas.
Una tarea requiere mucha menos estructura, típicamente basta con guardar
la información relacionada con la contabilidad de los recursos empleados. Una
tarea no es interrumpida en el transcurso de su ejecución. Ahora bien, esta distinción
no es completamente objetiva —y se pueden encontrar muchos textos
que emplean indistintamente una u otra nomenclatura.
Si bien el sistema brinda la ilusión de que muchos procesos se están ejecutando
al mismo tiempo, la mayor parte de ellos típicamente está esperando
para continuar su ejecución —en un momento determinado sólo puede estar
ejecutando sus instrucciones un número de procesos igual o menor al número

de procesadores que tenga el sistema.

Resultado de imagen para proceso del sistema operativo
Estados de un proceso

Un proceso, a lo largo de su vida, alterna entre diferentes estados de ejecución.
Éstos son:
Nuevo.- Se solicitó al sistema operativo la creación de un proceso, y sus recursos
y estructuras están siendo creadas.
Listo.- Está listo para iniciar o continuar su ejecución pero el sistema no le ha
asignado un procesador.
En ejecución.- El proceso está siendo ejecutado en este momento. Sus instrucciones
están siendo procesadas en algún procesador.
Bloqueado En espera de algún evento para poder continuar su ejecución (aun
si hubiera un procesador disponible, no podría avanzar).
Zombie El proceso ha finalizado su ejecución, pero el sistema operativo debe
realizar ciertas operaciones de limpieza para poder eliminarlo de la lista.1
Terminado El proceso terminó de ejecutarse; sus estructuras están a la espera
de ser limpiadas por el sistema operativo.
Resultado de imagen para proceso del sistema operativo
los hilos y el sistema operativo
La programación basada en hilos puede hacerse completamente y de forma
transparente en espacio de usuario (sin involucrar al sistema operativo). Estos
hilos se llaman hilos de usuario (user threads), y muchos lenguajes de programación
los denominan hilos verdes (green threads). Un caso de uso interesante es en
los sistemas operativos mínimos (p. ej. para dispositivos embebidos), capaces
de ejecutar una máquina virtual (ver sección B.2.1) de alguno de esos lenguajes:
si bien el sistema operativo no maneja multiprocesamiento, mediante los
hilos de usuario se crean procesos con multitarea interna.
Los procesos que implementan hilos ganan un poco en el rendimiento gracias
a no tener que reemplazar al PCB activo cuando intercalan la ejecución
de sus diferentes hilos; pero además de esto, ganan mucho más por la ventaja
de compartir espacio de memoria sin tener que establecerlo explícitamente a
través de mecanismos de comunicación entre procesos (IPC, Inter Process Communications).
Dependiendo de la plataforma, a veces los hilos de usuario inclusive
utilizan multitarea cooperativa para pasar el control dentro de un mismo
proceso. Cualquier llamada al sistema bloqueante (como obtener datos de un
archivo para utilizarlos inmediatamente) interrumpirá la ejecución de todos los
hilos de ese proceso, dado que el control de ejecución es entregado al sistema
operativo quien en este caso no conoce nada sobre los hilos.
Continuando con el desarrollo histórico de este mecanismo, el siguiente
paso fue la creación de hilos informando al sistema operativo, típicamente denominados
hilos de kernel (kernel threads). Esto se hace a través de bibliotecas
de sistema que los implementan de forma estándar para los diferentes sistemas
operativos o arquitecturas (p. ej. pthreads para POSIX o Win32_Thread
para Windows). Estas bibliotecas aprovechan la comunicación con el sistema
operativo tanto para solicitudes de recursos (p. ej. un proceso basado en hilos
puede beneficiarse de una ejecución verdaderamente paralela en sistemas
multiprocesador) como para una gestión de recursos más comparable con una
situación de multiproceso estándar.
Resultado de imagen para los hilos y el sistema operativo