En esta página vamos a tratar de presentar conceptos tan importantes como los programas, los procesos, servicios, lenguajes de programación, etc. Estos contenidos se van a tratar de hacer lo menos dependiente de ningún sistema operativo posible para hacerlos genéricos. No obstante, es importante poder comprobar cómo se aplican todos estos conceptos en sistemas operativos reales, para ello se han creado una serie de publicaciones en www.educatica.es, en la que trabajaremos con estos conceptos.
- GNU/Linux.
Lo primero que tenemos que saber antes de hablar de gestión CPU y de procesos es entender qué es un proceso.
Algunas definiciones
¿Qué es un proceso?
Un proceso es un programa en ejecución.
¿Qué es un programa?
Una serie de instrucciones que al ejecutarse en secuencia realizan una función. Esta función está definida en uno o varios algoritmos que determinan qué hace el programa.
¿Dónde y cómo se almacena un programa?
Los programas, para que tengan persistencia, es decir puedan reutilizarse a lo largo del tiempo (que no se pierdan, vamos) se almacenan en uno o varios ficheros en una memoria secundaria o auxiliar, por ejemplo el disco duro de nuestro equipo.
Dependiendo del lenguaje de programación o plataforma que utilicemos el programa se almacenará en código fuente y/o código binario o ejecutable.
Lenguaje de programación y plataforma de ejecución
Un lenguaje de programación es un lenguaje que permite crear programas implementando algoritmos de forma no ambigua y que pueda ser compilado y ejecutado en una CPU o bien interpretado por un interprete de dicho lenguaje.
No te preocupes, vamos a desgranar la definición anterior. Un lenguaje de programación proporciona una serie de palabras reservadas y herramientas que facilitan la creación de programas. El lenguaje que usamos los humanos para expresarnos se denomina lenguaje natural y es muy ambiguo para ser comprendiendo (hoy en día no lo tengo tan claro) por una máquina.
Para que la CPU del sistema en el que pretendemos ejecutar el programa pueda ejecutarlo tiene que estar expresado en código máquina: una serie de 1s y 0s que codifican cada una de las instrucciones que entiende, es capaz de ejecutar, la CPU.
Si el lenguaje de programación es compilado, hay que traducir el programa de código fuente a código máquina con el uso de un programa especial llamado compilador.
El resultado del compilador es un programa binario ejecutable.
Si el lenguaje de programación es interpretado, entonces este programa tiene que ejecutarse con un interprete de dicho lenguaje. Por ejemplo, Python. Podemos escribir un programa en python pero para ejecutarlo tenemos que utilizar otro programa, que si está compilado en código máquina, que ejecute el primer programa línea a línea.
Algunos lenguajes de programación interpretados.Python, php, bash shell script…
¿Cómo se ejecuta un programa?
Para que un programa pueda ejecutarse, tiene que cargarse en memoria principal. Para ello debemos indicarle al sistema operativo que queremos ejecutar el programa almacenado en un fichero ejecutable.
Si estamos en una terminal podemos hacerlo de la misma forma que haríamos para ejecutar un comando o aplicación.
Si estamos en entorno gráfico de usuario, utilizando la herramienta de navegación de sistemas de ficheros o bien algún acceso directo o enlace en algún menú, se lanzaría el programa.
El sistema operativo detecta la peticion y carga el programa (o parte de él) en memoria principal para que se inicie la ejecución del mismo.
En este punto, cuando se carga y ejecuta el programa, estaríamos hablando de un proceso.
¿Qué es un servicio?
Un programa que se ejecuta (proceso) en segundo plano y realiza alguna función en el sistema. Cuando decimos que un proceso está en segundo plano significa que no tiene interfaz de usuario ni necesita interactuar con el usuario mientras se ejecuta.
Es decir, parece que no está ejecutándose, es transparente para el usuario, no es consciente de su ejecución porque no tiene interfaz de usuario (directamente) sin embargo, lleva a cabo alguna función.
Una herramienta antimalware instalada en un sistema operativo de Microsoft está analizando el sistema continuamente, sin embargo el usuario no es consciente de dicho análisis salvo cuando detecte alguna amenaza.