Microsoft MVP

Email y Rss

email rss

Klout

Seguidores en facebook

Timeline de mi Twitter

Tienes preguntas?

Ideas de un Conejo
Más allá de los sistemas de información: (C#)=> videojuegos, soluciones a problemas interesantes y Sistemas Operativos
XNA
C#
Sistemas Operativos
Varios
Windows Phone
WinRT
XAML
Azure
HTML 5
Acerca de

Sistemas Operativos – Manejador de procesos – Parte 2 – Procesos

June 13th, 2010 by JuanK

Follow @JuanKRuiz

En el post de Manejador de Procesos 1 – Fundamentos  vimos, entre otros temas, que un proceso es un conjunto de instrucciones que se ejecutan con un objetivo determinado, y pudimos ver de manera superficial de que se compone un proceso.

Estos son los otros dos artículos de la serie:

 

Parte 1 : Manejador de Procesos – Fundamentos

Parte 3 : Manejador de Procesos – Threads

 

Como parte del tema de procesos profundizaremos un poco más al respecto de ellos.

 

El Proceso

Un proceso esta básicamente compuesto por un conjunto de instrucciones, pero hasta allí nada lo diferencia de lo que es un programa guardado en disco, el proceso se define por estar en ejecución – o al menos esperando para ejecución- sino esta en ejecución no hay proceso.

Un proceso en ejecución entonces tiene, además de sus instrucciones, características propias que lo describen y que definen su estado mientras este se ejecuta, estas características son:

 

  • El estado del proceso: el valor de cada uno de los registros el procesador y las las banderas establecidas
  • El conjunto de instrucciones
  • La pila (es decir el Stack)
  • Memoria de trabajo > Espacio de memoria reservado en el heap (es decir el montón de memoria) y sus contenidos

 

Las describiremos con mayor detalle.

 

El Estado Del Proceso

En cada ciclo de reloj, comprendido desde que se envía una instrucción -del conjunto de instrucciones del procesador- hasta que se obtiene una respuesta, existe un estado diferente de cada proceso.

 

Una forma fácil de ver que es el estado de un proceso es imaginar un proceso en ejecución como una película, compuestas por muchos cuadros independientes, si tomamos uno de los cuadros tenemos una fotografía de un único instante en el tiempo de ejecución, esa fotografía es el estado del proceso.

 

En ese estado podemos identificar que datos tenia el procesador en cada uno de sus registros en ese momento, así como las banderas que se encontraban activadas.

Esto permite, por ejemplo y como lo vimos en el post anterior, suspender un proceso de repente y volverlo a activar posteriormente justo donde se encontraba, simplemente tomando su estado para y en otro momento restableciéndolo el proceso podrá seguir con la ejecución justo donde estaba.

 

El Conjunto de Instrucciones

No se como explicar esto… pues el conjunto de instrucciones que componen el proceso… jajajaja

Rabbid

 

La Pila – El Stack

A bajo nivel la mayoría del trabajo no se hace accediendo directamente a los objetos sino a los registros y a una útil herramienta llamada stack, como su nombre lo indica el stack es una pila donde los elementos se colocan uno sobre otro y solo es accesible de manera inmediata el elemento que esta en la cima de la pila. Allí es donde los objetos se almacenan de manera temporal previo a su utilización.

 

La porción de memoria donde se localiza el stack (stack segment) esta alineada con la porción de memoria donde están las instrucciones de un programa (code segment)

 

Su funcionamiento es muy sencillo y consta de dos instrucciones principales: POP y PUSH.

 

POP quita un elemento de la cima de la pila y lo coloca en uno de los registros: image

 

PUSH coloca un elemento de uno de los registros en la cima de la pila:

image 

Un stack solo pertenece a un único proceso,  el stack se crea en el momento que el programa se carga en memoria.

 

A quien desee una explicación más detallada al respecto nuevamente le recomiendo que estudie el Tutorial de Assembler.

 

Memoria de Trabajo

De manera habitual los tipos valor (como enteros, caracteres sencillos, flotantes etc. y algunas estructuras más complejas) son guardados en el stack, mientras que los tipos referencia son guardados en la memoria de trabajo.

 

Cuando en programación se usa un objeto por referencia realmente sucede que en el stack se guarda una dirección que apunta a la memoria de trabajo, exactamente a donde se encuentra el objeto referenciado.

image De esta forma un objeto puede tener referenciadas varias porciones de memoria como parte de su memoria de trabajo, y es el sistema operativo quien lleva un inventario de que páginas de memoria han sido asignadas a un proceso determinado, y a la vez lleva un inventario de que porciones de esa página se están usando desde los objetos del proceso.

 

Con la información que hemos revisado hasta el momento ya podemos meternos en temas u poco más complejos, pero no se preocupen que mantendré el estilo que he usado hasta ahora, veremos solo la información necesaria para entender de que se trata el asunto y dejaremos los altos tecnicismos para los libros o para otras web dedicadas al tema.

Estos son los otros dos artículos de la serie:

Parte 1 : Manejador de Procesos – Fundamentos

Parte 3 : Manejador de Procesos – Threads

 

Print Friendly

Follow @JuanKRuiz

  • 5 Comentarios »
  • Publicado en la categoría 'Sistemas Operativos'

5 comentarios to “Sistemas Operativos – Manejador de procesos – Parte 2 – Procesos ”


  • Mario Salazar Says:
    January 22nd, 2009 at 7:56 pm  

    Mis respetos, veo que eres uno de los 3 o 4 programadores que les interesa el Ensamblador, aunque el conjunto de instrucciones 8086 no es precisamente la vanguardia en tecnologia. Te invito a juzgar mi blog sobre Lenguaje Ensamblador. Habla sobre como programar en Ensamblador para Windows (32 y 64 bits) desde cero. Por cierto, ten cuidado porque la mayoria de los ‘game developers’ que conozco odian este lenguaje.
    Por ahora es un blog sencillo pero pronto podre incluir temas como OpenGL, DirectX y 3D en este lenguaje.

  • JuanK Says:
    January 22nd, 2009 at 9:35 pm  

    Hola, gracias por tus comentarios.

    Así es ese ensamblador 8086 no es de vanguardia pero noes obsoleto y en mi opinión es el más facil para aprender, no soy programador de assembler pero me gusta el tema a nivel entusiasta porque para los grandes problemas suelen haber soluciones muy utiles y eficientes programando a bajo nivel. Lo de los game developers es cierto… pero los game developers mas serios y expertos lo adoran pues es basicamente programar una gpu se debe hacer a traves de su propio ‘ensamblador’ es decir se requiere HLSL o similar para programar shaders en la GPU de las tarjetas graficas y el ensamblador para las rutinas más exigentes a nivel de velocidad de procesamiento. Tu blog luce muy interesante lo estere revisando en estos días. saludos

  • Sistemas Operativos - Manejador de procesos - Fundamentos | Ideas de un Conejo Says:
    January 31st, 2009 at 1:29 pm  

    [...] Manejador de procesos 2 – Procesos [...]

  • Sistemas Operativos - Manejador de procesos - Parte 3 - Threads | Ideas de un Conejo Says:
    October 18th, 2009 at 1:07 pm  

    [...] Parte 2 : Manejador de Procesos – Procesos [...]

  • Ideas de un Conejo Says:
    October 18th, 2009 at 1:31 pm  

    [...] Parte 2 : Manejador de Procesos – Procesos [...]

Deja un comentario

Redes Sociales

Follow @JuanKRuiz
Answer Questions

Busca en el blog

Artículos Relacionados

  • Sistemas Operativos – Manejador de procesos – Parte 1 – Fundamentos
  • Sistemas Operativos – Manejador de procesos – Parte 3 – Threads
  • Artículos Relacionados

  • Sistemas Operativos – Manejador de procesos – Parte 1 – Fundamentos
  • Sistemas Operativos – Manejador de procesos – Parte 3 – Threads
  • Nube de Temas

    API - Azure - C# - codigo - Forms - IE - IE9 - Image - imagenes - IT - Microsoft - MVP - Pinned - PowerShell - Proceso - rendimiento - RSS - sistema - Sistemas Operativos - Site - Visual - WCF - Windows - Windows 8 - Windows Store - WinRT - WndProc - WPF - XAML - XNA

    Blogs recomendados

  • VBCodigoPocketPC Espacio para tratar temas de programacion para dispositivos moviles, Pocket PC, Compact Framework, Embbeded Visual Basic, Visual Basic.NET , C# (C Sharp)
  • Róbinson Moscoso Estaré publicando acá cosas sobre tecnologia .NET, situacioines cotidianas de las que voy aprendiendo… sirve como extensión de memoria.
  • .Net C# Blog de Nelsón Venegas
  • Warnov Microsoft Developer Evangelist
  • IT LIfe Blog de mi Hermano que esta en el lado claro: IT
  • Sorey Garcia Una chica del común con la firme intención de no serlo
  • Black Byte videojuegos, modelado y animación 3d
  • Road to IT World Cosas interesantes de IT
  • Marcela Chitiva Un poco de esto… un poco de aquello
  • Surviving the Nigth El mejor blog para aquellos que nos gustan los “internals”
  • Meta

    1. Log in
    2. WordPress

    Ideas de un Conejo is powered by Wordpress. Theme designed by Juan Carlos Ruiz.