Conceptos Clave de Sistemas Operativos y Arquitectura de Computadoras

Enviado por Chuletator online y clasificado en Otras lenguas extranjeras

Escrito el en español con un tamaño de 6,48 KB

Carreras Críticas

Las carreras críticas son fallos en el comportamiento de los programas que se producen cuando dos o más procesos, hilos o tareas intentan acceder al mismo recurso compartido (como ficheros, zonas de memoria, variables, etc.) para escribir simultáneamente. Dado que la operación de leer la dirección donde escribir, la operación de escritura y la actualización de la dirección de escritura no se realizan a la vez, puede ocurrir un cambio de contexto que implique que dos procesos lean la misma dirección antes de que se pueda actualizar, lo que resulta en que uno de ellos sobrescriba el dato del otro. Los mecanismos básicos que ofrecen los sistemas operativos (SO) para evitar esto son los semáforos, que permiten sincronizar los procesos, y los mutexes, semáforos que solo toman el valor 1 o 0, permitiendo definir zonas de exclusión mutua. Los procesos pueden leer un semáforo y, si es cero, esperan a que aumente su valor antes de continuar con su ejecución; también pueden incrementar el valor de un semáforo.

Planificador de FreeRTOS

El planificador de FreeRTOS está diseñado para repartir el uso del microcontrolador entre tareas, permitiendo su uso en tiempo real. Su algoritmo es apropiativo de prioridad fija con turno circular y reparto de tiempo para tareas de la misma prioridad. Prioridad fija significa que las tareas tienen una prioridad que no cambia. Apropiativo significa que, si hay alguna tarea que se puede ejecutar (en estado "listo") de mayor prioridad que la actual, la tarea de mayor prioridad desplaza a la de menor prioridad y pasa a ejecutarse. Turno circular significa que, si hay tareas con la misma prioridad, estas toman turnos ejecutándose. Reparto de tiempo significa que esos turnos duran un "quantum" de tiempo determinado. (Esto implica que tareas de mayor prioridad tienen que pausarse o bloquearse por sí mismas para dejar tiempo a las tareas de misma prioridad, de lo contrario, estas nunca se ejecutarían). La apropiación puede desactivarse, y el reparto de tiempo puede configurarse.

Procesos, Hilos y Núcleos

Un proceso es el concepto más importante de los SO; es la abstracción de un programa o código en ejecución. El proceso incluye el código del programa, sus ficheros abiertos, su espacio de direcciones, sus datos, etc. El SO hace que cada proceso piense que está solo en la computadora y se encarga de repartir la memoria y la CPU entre todos los procesos activos.

Un hilo es similar a un proceso dentro de un proceso o un proceso ligero. Un hilo consta de su propia secuencia de instrucciones y pila, pero comparte la memoria, ficheros y demás con el resto de hilos de un proceso. Como los procesos piensan que están solos en la computadora, no se ven unos a otros; tienen su propio espacio de direcciones (que, debido a la memoria virtual, no son las mismas que las direcciones físicas) y tienen que comunicarse a través del SO con zonas de memoria compartida, colas, señales, paso de mensajes, etc. Los hilos, al compartir memoria, se pueden comunicar fácilmente, por ejemplo, con variables globales. Dado que Linux planifica a nivel de hilo, 1 proceso con 1 hilo y 1 proceso con 2 hilos son 3 hilos a efectos de planificación.

Los mecanismos básicos que ofrecen los SO para evitar problemas de concurrencia son los semáforos y los mutexes, ya mencionados. El SO se encarga de que las operaciones sobre semáforos sean atómicas, es decir, se realicen sin cambios de contexto entre ellas.

Los interbloqueos (deadlocks) ocurren en casos donde hay varios recursos compartidos y varios procesos. Al usar semáforos, es posible que varios procesos se bloqueen entre sí al intentar acceder a recursos compartidos en poder de otros sin liberar los que ya tienen. Si esos procesos ya tienen el acceso exclusivo a recursos a los que otros procesos quieren acceder, y a su vez solicitan acceso a los recursos de esos, se produce un problema. De esta manera, ya que ningún proceso libera sus recursos antes de pedir el resto, ninguno puede avanzar.

Operaciones Aritméticas y Lógicas (Puertas Lógicas)

Las operaciones aritméticas son las tradicionales de matemáticas: suma, resta, multiplicación, división. Su utilidad es clara. (En la ALU del microprocesador pueden implicar a dos registros, un registro y un dato inmediato, o incluir en la operación a la bandera C).

Las operaciones de desplazamiento consisten en desplazar, a derecha o izquierda, los bits de un número, eliminando bits por un lado (o metiéndolos en la bandera C) y llenando los espacios que quedan con 0 (o el valor de la bandera C) o con los bits que salen por el otro lado, en la rotación. (No son muy intuitivas, pero tienen diversos usos, como, por ejemplo, multiplicar o dividir por 2 fácilmente).

Las operaciones lógicas bit a bit consisten en poder operar solo con un subconjunto de bits de un entero con operaciones lógicas, sin afectar a los demás. (Tienen múltiples usos, como, por ejemplo, para leer banderas o configurar, leer o escribir solo un subconjunto de pines GPIO de un puerto). Las más importantes son:

  • AND: 01011 AND 10001 = 00001
  • OR: 01011 OR 10001 = 11011
  • XOR: 01011 XOR 10001 = 11010
  • NOT: NOT 01011 = 10100

No son lo mismo que las operaciones booleanas, ya que las booleanas operan con todo el número y solo dan 2 resultados posibles: Verdadero o Falso.

Banderas (Flags)

Las banderas son bits del registro PSR (Program Status Register) que indican cómo es el resultado de las operaciones. Son las banderas Z, N, C y V (Q se puede usar en algunos sistemas, pero no se activa con estas operaciones).

  • Z indica que el resultado es cero.
  • N indica que el resultado es negativo.
  • C (Carry), para números sin signo, indica que hubo acarreo en la suma y el resultado está truncado, o que no hubo préstamo en la resta y el resultado es correcto.
  • V (Overflow), para números con signo, indica que hubo desborde en la suma o resta y que el resultado está truncado.

Entradas relacionadas: