BCP O BLOQUE DE CONTROL DE PROCESOS

se refiere a un registro especial donde el sistema operativo agrupa toda la información que necesita conocer respecto a algún proceso en particular. Por tanto, cada vez que un proceso se crea, el sistema operativo crea el BCP, que va a servir como descripción en tiempo de ejecución durante toda la vida del proceso.
Una vez que el BCP es creado, se llena con los atributos definidos como parámetros encontrados en la plantilla del proceso o especificados como parámetros de la llamada al sistema operativo (crear_proceso). Despué de esto, el sistema operativo por lo general asigna valores a otros campos.
Información almacenada en un BCP
Ahora bien, cuando el procesador inicia la ejecución de un proceso, en cualquier instante puntual de tiempo, a lo largo de la ejecución de dicho proceso, éste se puede caracterizar por un conjunto de elementos denominados contexto de ejecución, y corresponde a la información que se almacena en un BCP, esta puede abarcar algunos o todos los campos que se indican a continuación:
- Identificación del proceso (Process Identificator, sus siglas en inglés PID): es única para el proceso y es lo que permite distinguirlo del resto de procesos, pudiendo almacenar el identificador del proceso padre que lo creó y el identificador del usuario, dependiendo del sistema.
- Estado del proceso: si el proceso está actualmente en ejecución o en otro estado, como listo, suspendido, parado o zombi. Los estados varían según el tipo de sistema operativo.
- Información de planificación: se refiere a cómo de prioritarios son el resto de los procesos, y es el evento por el cual el proceso va a esperar mientras está bloqueado. Solo en caso de que se use dicho algoritmo para planificación de CPU.
- Punteros a memoria: en estos se incluyen todos los punteros al código del programa y datos referentes a este proceso, cualquier bloque de memoria compartido con otros procesos o si el proceso usa memoria virtual. A su vez almacena punteros a la pila y el montículo del proceso. Así que describe los segmentos de memoria que han sido asignados al proceso, mostrando los espacios de direcciones o los límites de memoria asignados al proceso.
- Datos de contexto: se encuentran presentes en el registro del procesador mientras el proceso este en ejecución. Esto permite almacenar el valor de todos los registros del procesador, las banderas de estado, señales, entre otras. En resumen, corresponden a todos los datos necesarios para poder ejecutar un proceso en el momento que el sistema operativo lo indique.
- Información de estado E/S y recursos asignados: aquí se incluyen las peticiones de E/S pendientes, dispositivos de E/S asignados a ese proceso, una lista de ficheros en uso, entre otros. Así como una lista de recursos asignados donde involucran descriptores de archivos y sockets abiertos.
- Comunicación entre procesos: cuenta con distintos indicadores, señales y mensajes relacionados con la comunicación entre dos procesos independientes.
- Información de auditoría: aquí es posible incluir la cantidad de tiempo de procesador y de tiempo de reloj utilizados, así como también los límites de tiempo, registros contables, entre otros como las estadísticas del proceso y valores de registro de CPU que también es usado en el cambio de contexto. Y los datos del propietario (owner).
- Signals pendientes: que se encuentren almacenados en un mapa de bits.
ALGORITMOS
FCFS (First-Come, First-Served):
Supongamos que tienes tres procesos llegando en este orden: A, B y C. Sus respectivos tiempos de llegada y ráfagas de CPU son los siguientes:
Proceso Tiempo de llegada Ráfaga de CPU
A 0 5
B 1 3
C 2 4
El orden en el que se ejecutarían bajo FCFS sería: A, B, C.
SJF (Shortest Job First):
Utilizando los mismos procesos y tiempos de llegada que en el ejemplo anterior, pero aplicando SJF, donde el siguiente proceso a ejecutar es el que tiene la ráfaga de CPU más corta:
Proceso Tiempo de llegada Ráfaga de CPU
A 0 5
B 1 3
C 2 4
El orden en el que se ejecutarían bajo SJF sería: B, C, A.
Round Robin:
Supongamos que tenemos los mismos procesos y tiempos de llegada, pero con un quantum de tiempo de 2 unidades.
Proceso Tiempo de llegada Ráfaga de CPU
A 0 5
B 1 3
C 2 4
Con un quantum de tiempo de 2 unidades, el orden en el que se ejecutarían sería:
Ejecutar A por 2 unidades.
Ejecutar B por 2 unidades.
Ejecutar C por 2 unidades.
Ejecutar A por 1 unidad.
Ejecutar A por 2 unidades (terminando su ráfaga de CPU).
El orden final de ejecución sería: A, B, C, A.

SISTEMAS DE ARCHIVOS

Algunos de los sistemas de archivos mas usados de windows son:
NTFS: El sistema de archivos principal para las versiones recientes de Windows y Windows Server, proporciona un conjunto completo de características, incluidos descriptores de seguridad, cifrado, cuotas de disco y metadatos enriquecidos.
ExFAT: El sistema de archivos eExFAT usa 64 bits para describir el tamaño de archivo, lo que permite aplicaciones que dependen de archivos muy grandes.
UDF: Es una implementación de sistema de archivos local grabable que se puede almacenar como de sólo lectura en soporte de DVD-ROM o como lectura y grabación en soporte de almacenamiento DVD-RAM.
FAT32: Es un sistema de archivos utilizado para dispositivos de almacenamiento y sistemas de archivos. Son formas de organizar el almacenamiento en dispositivos tales como discos duros, unidades SSD, tarjetas de memoria, tarjetas microSD, y así sucesivamente.

SISTEMAS DE ACRHIVOS MAS USADOS DE LINUX
Ext4 (Cuarto sistema de archivos extendido):
Es una evolución del sistema de archivos Ext3 y es el sistema de archivos predeterminado para muchas distribuciones de Linux. Ofrece mejoras significativas en cuanto a capacidad máxima de archivos y tamaño de volumen en comparación con Ext3, además de mejor rendimiento y confiabilidad.
XFS (sistema de archivos XFS):
Es un sistema de archivos de alto rendimiento que se enfoca en el manejo eficiente de grandes volúmenes de datos y archivos. Es particularmente adecuado para sistemas con grandes cantidades de archivos y almacenamiento masivo.
Btrfs (sistema de archivos de árbol B):
Es un sistema de archivos moderno diseñado para mejorar la administración de datos y la integridad de los mismos. Ofrece funciones avanzadas como instantáneas (snapshots), compresión, subvolumenes y administración eficiente del espacio.
ZFS (sistema de archivos Zettabyte):
Aunque es más asociado con sistemas operativos como Solaris y FreeBSD, ZFS también se utiliza en sistemas Linux a través de soluciones como ZFS on Linux (ZoL). Es altamente robusto y cuenta con características como integridad de datos, instantáneas, compresión y de duplicación.
Ext3 (Tercer sistema de archivos extendido):
Aunque está siendo reemplazado gradualmente por Ext4, Ext3 sigue siendo utilizado en algunos sistemas más antiguos o en situaciones donde la compatibilidad con versiones anteriores es crucial. Es conocido por su estabilidad y confiabilidad.

SISTEMA DE ARCHIVO MAS USADO DE MAC OS
APFS (sistema de archivos de Apple):Introducido en macOS High Sierra (10.13) en 2017, APFS reemplazó gradualmente al sistema de archivos HFS+ como el estándar para dispositivos macOS. APFS está diseñado específicamente para dispositivos de estado sólido (SSD) y ofrece ventajas como cifrado nativo, instantáneas de archivos, eficiencia en el manejo del espacio, así como soporte para características avanzadas como clonación de archivos y de duplicación de datos.

SISTEMA DE ARCHIVO MAS USADO DE ANDROID
ext4 (Fourth Extended File System):
Ext4 es una evolución del sistema de archivos Ext3 y es el sistema de archivos predeterminado en la mayoría de los dispositivos Android. Ofrece un buen equilibrio entre rendimiento, confiabilidad y compatibilidad. Ext4 es capaz de manejar grandes volúmenes de datos y archivos, lo que lo hace adecuado para dispositivos de almacenamiento de dispositivos móviles.

SISTEMA DE ARCHIVO MAS USADO DE IOS
APFS (sistema de archivos de Apple):
Al igual que macOS, iOS utiliza APFS como su sistema de archivos predeterminado desde iOS 10.3, lanzado en marzo de 2017. APFS se reemplazó gradualmente al sistema de archivos HFS+ en dispositivos iOS. Al igual que en macOS, APFS en iOS ofrece beneficios como un mejor manejo del almacenamiento flash, cifrado nativo, instantáneas de archivos, eficiencia en el uso del espacio y soporte para características avanzadas como clonación de archivos y deduplicación de datos.
