5.1 Programas y procesos.
Enviado por marisandovalp • 27 de Octubre de 2016 • Apuntes • 1.213 Palabras (5 Páginas) • 280 Visitas
[pic 1][pic 2]
[pic 3]
Estructura de un proceso
5.1 Programas y procesos
Un programa es una colección de instrucciones y de datos que se encuentran almacenados en un fichero ordinario. Este fichero tiene en su nodo-i un atributo que lo identifica como ejecutable. Puede ser ejecutado por el propietario, el grupo y el resto de los usuarios, dependiendo de los permisos que tenga el fichero.
Los usuarios pueden crear ficheros ejecutables de varias formas. Una de la más sencillas es mediante la escritura de programas para el intérprete de órdenes. Mediante este mecanismo se deben seguir dos pasos para obtener un programa. El primero es editar un fichero de texto que contenga una serie de líneas que puedan ser interpretadas por un intérprete de órdenes. Una vez editado el programa, hay que cambiar sus atributos para que sea ejecutable, esto se consigue con la orden chmod. Para poder ejecutar un fichero así creado tendremos que arrancar un intérprete órdenes, pasándole como parámetro el nombre de nuestro fichero de órdenes.
Trabajar con ficheros de órdenes presenta grandes ventajas a la hora de realizar programas cortos que no sean de gran complejidad, pero es una seria limitación a la hora de afrontar el desarrollo de una aplicación.
Primero se debe crear un fichero de texto que contenga el código fuente de nuestro programa(extensión.c) el compilador de C se va a encargar de traducir el código fuente a código objeto que entiende nuestra máquina. El compilador va a crear un fichero de salida, que por defecto se llama a.out, y lo va a marcar como ejecutable. El compilador puede recibir parámetro que le indique que cree el programa ejecutable con otro nombre distinto de a.out.
Cuando un programa es leído del disco por el núcleo y es cargado en memoria para ejecutarlo se convierte en un proceso. En un proceso no solo hay una copia del proceso, sino además el núcleo le añade información adicional para poder manejarlo.
Un proceso se compone de tres bloques fundamentales que se conocen como segmentos los cuales son:
- Segmento de texto: contiene las instrucciones que entiende la CPU de nuestra máquina.
- Segmento de datos: contiene los datos que deben ser inicializados al arrancar el proceso.
- Segmento de pila: lo crea el núcleo al arrancar el proceso y su tamaño es gestionado dinámicamente por el núcleo.
Debido a que los procesos se pueden ejecutar en dos modos: usuario y supervisor (kernel). El sistema maneja sendas pilas por separado.
La pila del modo usuario: contiene unos argumentos, variables locales y otros datos relativos a funciones que se ejecutan en modo usuario.
La pila del modo supervisor: contiene los marcos de la pila de las funciones que se ejecutan en modo supervisor (estas funciones son las llamadas al sistema).
Un mismo programa puede estar siendo ejecutado en un instante determinado por varios procesos a la vez.
Desde un punto de vista funcional un proceso en UNIX es la entidad que se crea tras la llama fork. Todos los procesos, excepto el primero (proceso No.0), son creados mediante una llamada fork. El proceso que llama a fork se llama como proceso padre y el proceso creado es el proceso hijo. Todos los procesos tiene un único proceso padre, pero pueden tener varios procesos hijo. El núcleo identifica cada proceso mediante su PID (process identification) que es un número asociado a cada proceso y que no cambia durante el tiempo de vida de este.
El proceso 0 es especial: es creado cuando arranca el sistema y después de hacer una llamada a fork se convierte en el proceso intercambiador (encargado de la gestión de la memoria virtual). El proceso hijo creado se llama init y su PID vale 1. Este proceso es el encargado de arrancar los demás procesos del sistema según la configuración que se indique en el fichero.
5.2 Estado de un proceso
El tiempo de vida de un proceso se puede dividir en un conjunto de estados cada uno con unas características determinadas.
...