Como desarrollador, es posible que haya centrado sus habilidades en la resolución de problemas y la estructura de datos. Bueno, sin duda esta es una de las habilidades más esenciales. Aparte de eso, ¿alguna vez has tratado de saber qué más es más importante? Considere un escenario en el que está ejecutando un código, pero su programa se ejecuta demasiado lento. Verifica su código y encuentra que no hay nada malo con su código. ¿Cuál podría ser la razón detrás de esto?
Bueno, una de las razones podría ser su sistema operativo. Ahora, si necesita depurar su programa, ¿cómo lo haría si no sabe cómo funciona su sistema operativo? Es posible que esté accediendo a demasiados archivos, que se esté quedando sin memoria o que el intercambio esté en uso. Para resolver este problema, seguramente necesita saber sobre el intercambio o el bloqueo de E/S.
¿Cómo se comunicará con su máquina? ¿Preferirá localmente, o lo hará en Internet? ¿Alguna vez ha tratado de saber por qué algunos programadores prefieren un sistema operativo sobre otro?
De todas las conversaciones anteriores, es posible que haya entendido por qué es importante aprender los sistemas operativos. Siendo un desarrollador debemos entender la importancia de los sistemas operativos. Hoy en este blog, vamos a discutir algunos conceptos importantes de los sistemas operativos que te ayudarán en tu trabajo como desarrollador.
1. Gestión de Procesos y Procesos
El proceso se define básicamente como un programa en ejecución. El proceso debe ejecutarse secuencialmente. Cuando escribe un programa de computadora en un archivo de texto y cuando ejecuta este programa, se convierte en un proceso en su sistema. Este proceso realiza todas las tareas mencionadas en el programa. Un proceso se divide principalmente en cuatro secciones: pila, montón, texto y datos.
- Stack: Stack es responsable de almacenar datos temporales como funciones/parámetros de métodos. Devuelve direcciones y variables locales.
- Montón: el montón asigna la memoria a un proceso dinámicamente durante su tiempo de ejecución.
- Texto: El texto incluye la actividad actual representada por los valores del contador del programa y los datos almacenados en el registro del procesador.
- Datos: Contiene las variables globales y estáticas.
Un proceso pasa principalmente con cinco estados diferentes: Inicio, Listo, En ejecución, En espera, Terminado o Salir.
2. Concepto de Hilos
Puede definir hilo como un flujo de ejecución a través del código de proceso. El hilo realiza un seguimiento de todas las instrucciones que deben ejecutarse a continuación en el contador del programa. Además, el subproceso contiene registros del sistema que contienen las variables de trabajo actuales. En el hilo, la pila contiene el historial de ejecución.
El subproceso puede compartir un segmento de código, un segmento de datos y abrir archivos con su subproceso del mismo nivel. Cuando un segmento de código es alterado por un subproceso, todos los demás subprocesos ven eso. Thread también se llama un proceso ligero. El rendimiento de la aplicación se puede mejorar a través del paralelismo.
Un subproceso pertenece exactamente a un proceso y ninguno de los subprocesos puede existir fuera de un proceso. Los subprocesos se utilizan generalmente en la implementación de servidores web y servidores de red. Principalmente hay dos tipos de hilo…
Subproceso de nivel de usuario: en este nivel de subproceso, el kernel de gestión de subprocesos no es consciente de la existencia de subprocesos. La biblioteca Thread también mantiene el código para crear y destruir el hilo. También contiene el código para pasar mensajes y datos entre subprocesos. El código también se mantiene para programar la ejecución del subproceso y para restaurar el contexto del subproceso.
Subproceso a nivel de kernel: el kernel realiza la gestión a nivel de subproceso. En el área de la aplicación, no encontrará el código de gestión de subprocesos. Es compatible directamente con el sistema operativo.
El núcleo también mantiene la información de contexto para los subprocesos individuales y para los procesos en su conjunto. La programación también se realiza por subprocesos. El kernel es responsable de crear, programar y administrar el espacio del kernel.
3. Programación
En la programación, el administrador de procesos asume la responsabilidad de eliminar el proceso en ejecución de la CPU, también elige otro proceso en función de una estrategia específica. Para la multiprogramación, la programación del sistema operativo es la parte esencial. A la vez se puede cargar más de un proceso en la memoria ejecutable. El proceso comparte la CPU mediante multiplexación de tiempo una vez que se carga.
En las colas de programación de procesos, el sistema operativo mantiene todos los bloques de control de procesos. El sistema operativo mantiene una cola separada para cada uno de los estados del proceso. Los bloques de control de procesos de todos los procesos en el mismo estado de ejecución se mantienen en la misma cola.
Principalmente, su sistema operativo mantiene la siguiente cola de programación de procesos importantes:
- Cola de trabajos: Se responsabiliza de mantener todos los procesos en el sistema
- Cola de Listos: En la memoria principal residen todos los procesos que están listos y esperando para ejecutarse.
- Colas de dispositivos: esta cola almacena los procesos que están bloqueados debido a la falta de disponibilidad de un dispositivo de E/S
4. Gestión de memoria
La administración de memoria se refiere a la funcionalidad de un sistema operativo que maneja y administra la memoria principal. Los procesos se mueven de un lado a otro entre la memoria principal y el disco durante la ejecución.
Las ubicaciones de memoria son rastreadas por la administración de memoria. Cada vez que comprueba cuánta memoria se asigna a los procesos. También decide qué proceso recibe memoria en qué momento. Además, actualiza el estado cada vez que se libera o no se asigna una memoria. El sistema operativo asigna las direcciones lógicas a direcciones físicas en el momento de la asignación de memoria. Principalmente hay tres tipos de direcciones usadas en un programa…
- Direcciones simbólicas: Se utiliza en el código fuente. Los nombres de variables, constantes y etiquetas de instrucciones son los elementos básicos del espacio de direcciones simbólicas.
- Direcciones relativas: durante la compilación, el compilador convierte las direcciones simbólicas en direcciones relativas.
- Direcciones físicas: el cargador asume la responsabilidad de generar estas direcciones en el momento en que el programa se carga en la memoria principal.
5. Comunicación entre procesos
En un sistema operativo, los procesos se dividen en dos tipos: independientes y cooperativos. Los procesos independientes no se ven afectados por la ejecución de otros procesos. Un proceso de cooperación se ve afectado por el otro proceso de ejecución.
Los procesos independientes se ejecutan de manera eficiente y, en estas situaciones, su naturaleza cooperativa se utiliza para aumentar la velocidad computacional, la conveniencia y la modularidad. En este mecanismo, los procesos pueden comunicarse entre sí. La comunicación es vista como un método de cooperación entre ellos.
Publicación traducida automáticamente
Artículo escrito por anuupadhyay y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA