Operaciones Privilegiadas, Planificación de CPU y Estructura de Computadoras


Operaciones Privilegiadas

  • Iniciar una operación de I/O: Es privilegiada ya que permite acceso a áreas de los dispositivos o a la memoria que debieran estar vedadas a un usuario normal.
  • Cambiar el modo de redondeo de la unidad de punto flotante: Un proceso debe poder ajustar su ambiente de ejecución. Obviamente, el modo de redondeo deberá almacenarse en el PCB (bloque de control de proceso) del proceso.
  • Cambiar los manejadores de interrupciones: Es privilegiada ya que son parte de la base requerida por el núcleo para mantener control sobre el sistema.
  • Deshabilitar interrupciones: Privilegiada.
  • Poner en cero un área de memoria física: Privilegiada.
  • Pasar de modo usuario a modo supervisor: No Privilegiada.
  • Modificar la tabla de páginas de un proceso: Privilegiada.

flock(2) permite a un proceso bloquear acceso a parte de un archivo.

Planificador del CPU

Selecciona de entre los procesos en memoria que están listos para ejecutar y asigna el CPU a uno de ellos. Las decisiones de planificación pueden tener lugar cuando un proceso:

  1. Conmuta de ejecutar al estado de espera.
  2. Conmuta de ejecutar al estado de listo.
  3. Conmuta de esperar a listo.
  4. Termina.

Planificar bajo los casos 1 y 4 es nonpreemptive. Toda la otra planificación es prioritaria.

Estructura de una Computadora

  • Hardware: Los recursos básicos del PC.
  • Sistema Operativo: Controla y coordina la utilización del hardware entre los distintos programas de aplicación y usuarios.
  • Programas de Aplicación: Definen en qué manera se utilizan los recursos del sistema para resolver problemas de cómputo de los usuarios.
  • Usuarios: Personas, máquinas y otras computadoras.

Servicios del Sistema Operativo

  • Interfaz de usuario: Casi todos los sistemas operativos tienen una IU.
  • Ejecución de programas: El sistema debe ser capaz de cargar un programa en memoria y ejecutarlo, terminar la ejecución ya sea de manera normal o anormal.
  • Operaciones E/S: Un programa en ejecución puede requerir E/S, que puede involucrar un archivo o dispositivo de E/S.
  • Manipulación del sistema de archivos: El sistema de archivos es de gran interés. Obviamente, los programas necesitan leer y escribir archivos y directorios, crearlos y borrarlos, buscarlos, listar información acerca de ellos, manejar sus permisos.
  • Comunicaciones: Los procesos pueden intercambiar información, en la misma computadora o entre computadoras distintas en una red.
  • Detección de errores: El SO está constantemente atento a posibles errores.
  • Asignación de recursos: Cuando varios usuarios o trabajos se ejecutan concurrentemente, deben asignarse recursos a cada uno de ellos.
  • Contabilidad: Para mantener registro de qué usuarios utilizan qué tanto de los recursos del sistema.
  • Protección y seguridad: Los dueños de información almacenada en una computadora multiusuario o en red deben controlar el uso de esa información, procesos concurrentes no deben interferir entre ellos.

Máquinas Virtuales

Una máquina virtual lleva el enfoque de capas a su conclusión lógica. Trata el hardware y el kernel del SO como si fueran hardware ambos. Una máquina virtual ofrece una interfaz idéntica para cualquier hardware que esté abajo. El sistema operativo crea la ilusión de múltiples procesos, cada uno ejecutando en su propio procesador con su propia memoria (virtual). Los recursos de la computadora física se comparten para crear las máquinas virtuales.

Colas de Planificación de Procesos

  • Cola de trabajos: Conjunto de todos los procesos en el sistema.
  • Cola de listos: Conjunto de procesos que residen en memoria principal, listos y en espera de ser ejecutados.
  • Colas de dispositivos: Conjunto de procesos esperando por un dispositivo de E/S.

fork: llamada al sistema para crear nuevos procesos.

exec: llamada al sistema, después de fork, para reemplazar el espacio de memoria del proceso con un programa nuevo.

Llamada a Procedimientos Remotos

Llamada a procedimientos remotos (RPC) es una abstracción para llamar procedimientos entre procesos en un sistema en red.

Stubs: Proxy del lado del cliente en lugar del procedimiento real en el servidor. El stub en el lado del cliente localiza el servidor y marshalls (procesa) los parámetros. El stub en el lado del servidor recibe el mensaje, desempaqueta los parámetros (unmarshalling) y ejecuta el procedimiento en el servidor.

RMI (invocación a procedimientos remotos)

Hebras

  • Uno-a-uno: Cada hebra a nivel de proceso corresponde a una hebra a nivel de núcleo.
  • Muchos-a-uno: Las hebras se implementan totalmente en el proceso, hay una única hebra a nivel del núcleo por proceso.
  • Muchos-a-muchos: Se administran las hebras a nivel de usuario, haciendo que sean atendidas por un núcleo de hebras a nivel de núcleo.

Hebras: Lo más simple y eficiente es implementar las uno a uno ya que no hay duplicación de funciones (scheduling a nivel de núcleo y proceso). La opción muchos a uno es la que menos exige al núcleo pero es muy compleja a nivel de usuario. La alternativa muchos a muchos es la más compleja pero permite implementar muchísimas hebras con impacto moderado sobre el núcleo.

Colas Multiniveles

  1. La cola de listos se particiona en varias colas:
    • foreground (interactive)
    • background (batch)
  2. Cada cola tiene su propio algoritmo de planificación:
    • foreground – RR
    • background – FCFS
  3. Se debe hacer planificación entre colas:
    • Planificación con prioridad fija; (i.e., servir todas las del foreground y luego background). Posibilidad de hambruna.
    • Rebanada de tiempo: cada cola obtiene una cierta cantidad de tiempo de CPU, que puede planificar entre sus procesos; i.e., 80% para foreground en RR, 20% para background en FCFS.

Planificación de la Cola Multinivel

Colas de Varios Niveles con Retroalimentación

  1. Un proceso se puede mover entre las distintas colas; así se puede implementar envejecimiento.
  2. Planificador para colas de varios niveles con retroalimentación con los siguientes parámetros:
    • Número de colas.
    • Algoritmos de planificación para cada cola.
    • Método utilizado para determinar cuándo avanzar un proceso.
    • Método utilizado para determinar cuándo retrasar un proceso.
    • Método utilizado para determinar a qué colas entrará un proceso cuando requiera servicio.

Round Robin (RR)

  1. Cada proceso obtiene una pequeña unidad de tiempo de CPU (time quantum), usualmente 10-100 milisegundos. Después que ha pasado este tiempo, el proceso es sacado (preempted) y se agrega a la cola de listos.
  2. Si hay n procesos en la cola de listos y el tiempo quantum es q, entonces cada proceso obtiene 1/n del tiempo de CPU en pedazos de a lo más q unidades a la vez. Ningún proceso espera más de (n-1)q unidades de tiempo.
  3. Rendimiento:
    • q grande -> FIFO
    • q pequeña -> q debe ser grande con respecto al cambio de contexto, de otra forma la carga administrativa es muy grande.

Dejar un Comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *