Programación (informática)


En informática , la programación es la acción de asignar recursos para realizar tareas . Los recursos pueden ser procesadores , enlaces de red o tarjetas de expansión . Las tareas pueden ser hilos , procesos o flujos de datos .

La actividad de programación se lleva a cabo mediante un proceso denominado planificador . Los planificadores a menudo están diseñados para mantener ocupados todos los recursos de la computadora (como en el equilibrio de carga ), permitir que varios usuarios compartan los recursos del sistema de manera efectiva o lograr una calidad de servicio objetivo .

La programación es fundamental para la computación en sí misma y una parte intrínseca del modelo de ejecución de un sistema informático; el concepto de programación hace posible tener una computadora multitarea con una sola unidad central de procesamiento (CPU).

En la práctica, estos objetivos a menudo entran en conflicto (por ejemplo, rendimiento frente a latencia), por lo que un programador implementará un compromiso adecuado. La preferencia se mide por cualquiera de las preocupaciones mencionadas anteriormente, dependiendo de las necesidades y objetivos del usuario.

En entornos de tiempo real , como los sistemas integrados para el control automático en la industria (por ejemplo , la robótica ), el programador también debe garantizar que los procesos puedan cumplir con los plazos ; esto es crucial para mantener estable el sistema. Las tareas programadas también pueden distribuirse a dispositivos remotos a través de una red y administrarse a través de un back-end administrativo.

El planificador es un módulo del sistema operativo que selecciona los siguientes trabajos que se admitirán en el sistema y el siguiente proceso que se ejecutará. Los sistemas operativos pueden presentar hasta tres tipos de programadores distintos: un programador a largo plazo (también conocido como programador de admisión o programador de alto nivel), un programador a mediano o mediano plazo y un programador a corto plazo . Los nombres sugieren la frecuencia relativa con la que se realizan sus funciones.


Un grupo de subprocesos de muestra (cuadros verdes) con una cola (FIFO) de tareas en espera (azul) y una cola de tareas completadas (amarillo)
Una estructura altamente simplificada del kernel de Linux, que incluye programadores de procesos, programadores de E/S y programadores de paquetes .