Sistema operativo - Guía rápida

Un sistema operativo (SO) es una interfaz entre un usuario de computadora y el hardware de la computadora. Un sistema operativo es un software que realiza todas las tareas básicas como administración de archivos, administración de memoria, administración de procesos, manejo de entrada y salida y control de dispositivos periféricos como unidades de disco e impresoras.

Algunos sistemas operativos populares incluyen el sistema operativo Linux, el sistema operativo Windows, VMS, OS / 400, AIX, z / OS, etc.

Definición

Un sistema operativo es un programa que actúa como interfaz entre el usuario y el hardware de la computadora y controla la ejecución de todo tipo de programas.

A continuación se muestran algunas de las funciones importantes de un sistema operativo.

  • Gestión de la memoria
  • Gestión del procesador
  • Gestión de dispositivos
  • Gestión de archivos
  • Security
  • Control sobre el rendimiento del sistema
  • Contabilidad de trabajos
  • Error al detectar ayudas
  • Coordinación entre otro software y usuarios

Gestión de la memoria

La gestión de la memoria se refiere a la gestión de la memoria principal o la memoria principal. La memoria principal es una gran variedad de palabras o bytes donde cada palabra o byte tiene su propia dirección.

La memoria principal proporciona un almacenamiento rápido al que puede acceder directamente la CPU. Para que un programa se ejecute, debe estar en la memoria principal. Un sistema operativo realiza las siguientes actividades para la gestión de la memoria:

  • Realiza un seguimiento de la memoria primaria, es decir, qué parte de ella está en uso por quién, qué parte no está en uso.

  • En la multiprogramación, el sistema operativo decide qué proceso obtendrá memoria, cuándo y cuánto.

  • Asigna la memoria cuando un proceso lo solicita.

  • Desasigna la memoria cuando un proceso ya no la necesita o se ha terminado.

Gestión del procesador

En el entorno de multiprogramación, el sistema operativo decide qué proceso recibe el procesador, cuándo y durante cuánto tiempo. Esta función se llamaprocess scheduling. Un sistema operativo realiza las siguientes actividades para la gestión del procesador:

  • Realiza un seguimiento del procesador y el estado del proceso. El programa responsable de esta tarea se conoce comotraffic controller.

  • Asigna el procesador (CPU) a un proceso.

  • Desasigna procesador cuando un proceso ya no es necesario.

Gestión de dispositivos

Un sistema operativo gestiona la comunicación del dispositivo a través de sus respectivos controladores. Realiza las siguientes actividades para la gestión de dispositivos:

  • Realiza un seguimiento de todos los dispositivos. El programa responsable de esta tarea se conoce comoI/O controller.

  • Decide qué proceso recibe el dispositivo, cuándo y durante cuánto tiempo.

  • Asigna el dispositivo de forma eficiente.

  • Desasigna dispositivos.

Gestión de archivos

Un sistema de archivos normalmente se organiza en directorios para facilitar la navegación y el uso. Estos directorios pueden contener archivos y otras direcciones.

Un sistema operativo realiza las siguientes actividades para la gestión de archivos:

  • Realiza un seguimiento de la información, ubicación, usos, estado, etc. Las instalaciones colectivas a menudo se conocen como file system.

  • Decide quién obtiene los recursos.

  • Asigna los recursos.

  • Desasigna los recursos.

Otras actividades importantes

A continuación se presentan algunas de las actividades importantes que realiza un sistema operativo:

  • Security - Mediante contraseña y otras técnicas similares, evita el acceso no autorizado a programas y datos.

  • Control over system performance - Registro de retrasos entre la solicitud de un servicio y la respuesta del sistema.

  • Job accounting - Realizar un seguimiento del tiempo y los recursos utilizados por varios trabajos y usuarios.

  • Error detecting aids - Producción de volcados, trazas, mensajes de error y otras ayudas de depuración y detección de errores.

  • Coordination between other softwares and users - Coordinación y asignación de compiladores, intérpretes, ensambladores y otro software a los distintos usuarios de los sistemas informáticos.

Los sistemas operativos existen desde la primera generación de computadoras y siguen evolucionando con el tiempo. En este capítulo, analizaremos algunos de los tipos importantes de sistemas operativos que se utilizan con más frecuencia.

Sistema operativo por lotes

Los usuarios de un sistema operativo por lotes no interactúan directamente con la computadora. Cada usuario prepara su trabajo en un dispositivo fuera de línea como tarjetas perforadas y lo envía al operador de la computadora. Para acelerar el procesamiento, los trabajos con necesidades similares se agrupan y se ejecutan como un grupo. Los programadores dejan sus programas con el operador y el operador luego clasifica los programas con requisitos similares en lotes.

Los problemas con los sistemas por lotes son los siguientes:

  • Falta de interacción entre el usuario y el trabajo.
  • La CPU suele estar inactiva porque la velocidad de los dispositivos de E / S mecánicos es más lenta que la de la CPU.
  • Difícil proporcionar la prioridad deseada.

Sistemas operativos de tiempo compartido

El tiempo compartido es una técnica que permite a muchas personas, ubicadas en varios terminales, utilizar un sistema informático en particular al mismo tiempo. El tiempo compartido o la multitarea es una extensión lógica de la multiprogramación. El tiempo del procesador que se comparte entre varios usuarios simultáneamente se denomina tiempo compartido.

La principal diferencia entre los sistemas por lotes multiprogramados y los sistemas de tiempo compartido es que, en el caso de los sistemas por lotes multiprogramados, el objetivo es maximizar el uso del procesador, mientras que en los sistemas de tiempo compartido, el objetivo es minimizar el tiempo de respuesta.

La CPU ejecuta varios trabajos cambiando entre ellos, pero los cambios ocurren con mucha frecuencia. Así, el usuario puede recibir una respuesta inmediata. Por ejemplo, en un procesamiento de transacciones, el procesador ejecuta cada programa de usuario en una breve ráfaga o cuanto de cálculo. Es decir, sinlos usuarios están presentes, entonces cada usuario puede obtener un cuanto de tiempo. Cuando el usuario envía el comando, el tiempo de respuesta es de unos segundos como máximo.

El sistema operativo utiliza la programación y la multiprogramación de la CPU para proporcionar a cada usuario una pequeña porción de tiempo. Los sistemas informáticos que se diseñaron principalmente como sistemas por lotes se han modificado a sistemas de tiempo compartido.

Las ventajas de los sistemas operativos de tiempo compartido son las siguientes:

  • Ofrece la ventaja de una respuesta rápida.
  • Evita la duplicación de software.
  • Reduce el tiempo de inactividad de la CPU.

Las desventajas de los sistemas operativos de tiempo compartido son las siguientes:

  • Problema de fiabilidad.
  • Cuestión de seguridad e integridad de los programas y datos del usuario.
  • Problema de comunicación de datos.

Sistema operativo distribuido

Los sistemas distribuidos utilizan múltiples procesadores centrales para servir a múltiples aplicaciones en tiempo real y múltiples usuarios. Los trabajos de procesamiento de datos se distribuyen entre los procesadores en consecuencia.

Los procesadores se comunican entre sí a través de varias líneas de comunicación (como buses de alta velocidad o líneas telefónicas). Estos se conocen comoloosely coupled systemso sistemas distribuidos. Los procesadores en un sistema distribuido pueden variar en tamaño y función. Estos procesadores se denominan sitios, nodos, computadoras, etc.

Las ventajas de los sistemas distribuidos son las siguientes:

  • Con la función de intercambio de recursos, un usuario de un sitio puede utilizar los recursos disponibles en otro.
  • Acelere el intercambio de datos entre sí a través del correo electrónico.
  • Si un sitio falla en un sistema distribuido, los sitios restantes potencialmente pueden seguir funcionando.
  • Mejor servicio a los clientes.
  • Reducción de la carga en la computadora host.
  • Reducción de retrasos en el procesamiento de datos.

Sistema operativo de red

Un sistema operativo de red se ejecuta en un servidor y proporciona al servidor la capacidad de administrar datos, usuarios, grupos, seguridad, aplicaciones y otras funciones de red. El propósito principal del sistema operativo de red es permitir el acceso a archivos e impresoras compartidos entre varias computadoras en una red, generalmente una red de área local (LAN), una red privada u otras redes.

Los ejemplos de sistemas operativos de red incluyen Microsoft Windows Server 2003, Microsoft Windows Server 2008, UNIX, Linux, Mac OS X, Novell NetWare y BSD.

Las ventajas de los sistemas operativos de red son las siguientes:

  • Los servidores centralizados son muy estables.
  • La seguridad está gestionada por el servidor.
  • Las actualizaciones a nuevas tecnologías y hardware se pueden integrar fácilmente en el sistema.
  • El acceso remoto a los servidores es posible desde diferentes ubicaciones y tipos de sistemas.

Las desventajas de los sistemas operativos de red son las siguientes:

  • Alto costo de comprar y ejecutar un servidor.
  • Dependencia de una ubicación central para la mayoría de las operaciones.
  • Se requieren actualizaciones y mantenimiento regulares.

Sistema operativo en tiempo real

Un sistema en tiempo real se define como un sistema de procesamiento de datos en el que el intervalo de tiempo requerido para procesar y responder a las entradas es tan pequeño que controla el entorno. El tiempo que tarda el sistema en responder a una entrada y visualización de la información actualizada requerida se denominaresponse time. Entonces, en este método, el tiempo de respuesta es muy menor en comparación con el procesamiento en línea.

Los sistemas en tiempo real se utilizan cuando existen requisitos de tiempo rígidos para el funcionamiento de un procesador o el flujo de datos y los sistemas en tiempo real se pueden utilizar como dispositivo de control en una aplicación dedicada. Un sistema operativo en tiempo real debe tener limitaciones de tiempo fijas y bien definidas; de lo contrario, el sistema fallará. Por ejemplo, experimentos científicos, sistemas de imágenes médicas, sistemas de control industrial, sistemas de armas, robots, sistemas de control de tráfico aéreo, etc.

Hay dos tipos de sistemas operativos en tiempo real.

Sistemas duros en tiempo real

Los sistemas duros en tiempo real garantizan que las tareas críticas se completen a tiempo. En sistemas duros en tiempo real, el almacenamiento secundario es limitado o falta y los datos se almacenan en ROM. En estos sistemas, la memoria virtual casi nunca se encuentra.

Sistemas suaves en tiempo real

Los sistemas blandos en tiempo real son menos restrictivos. Una tarea crítica en tiempo real tiene prioridad sobre otras tareas y retiene la prioridad hasta que se completa. Los sistemas blandos en tiempo real tienen una utilidad limitada que los sistemas duros en tiempo real. Por ejemplo, multimedia, realidad virtual, proyectos científicos avanzados como exploración submarina y rovers planetarios, etc.

Un sistema operativo proporciona servicios tanto a los usuarios como a los programas.

  • Proporciona a los programas un entorno para ejecutar.
  • Proporciona a los usuarios los servicios para ejecutar los programas de manera conveniente.

A continuación se muestran algunos servicios comunes proporcionados por un sistema operativo:

  • Ejecución del programa
  • Operaciones de E / S
  • Manipulación del sistema de archivos
  • Communication
  • Detección de errores
  • Asignación de recursos
  • Protection

Ejecución del programa

Los sistemas operativos manejan muchos tipos de actividades, desde programas de usuario hasta programas del sistema como la cola de impresión, servidores de nombres, servidor de archivos, etc. Cada una de estas actividades está encapsulada como un proceso.

Un proceso incluye el contexto de ejecución completo (código para ejecutar, datos para manipular, registros, recursos del sistema operativo en uso). Las siguientes son las principales actividades de un sistema operativo con respecto a la gestión de programas:

  • Carga un programa en la memoria.
  • Ejecuta el programa.
  • Maneja la ejecución del programa.
  • Proporciona un mecanismo para la sincronización de procesos.
  • Proporciona un mecanismo para la comunicación de procesos.
  • Proporciona un mecanismo para el manejo de interbloqueos.

Operación de E / S

Un subsistema de E / S se compone de dispositivos de E / S y su software de controlador correspondiente. Los controladores ocultan a los usuarios las peculiaridades de dispositivos de hardware específicos.

Un sistema operativo gestiona la comunicación entre el usuario y los controladores de dispositivo.

  • Operación de E / S significa operación de lectura o escritura con cualquier archivo o dispositivo de E / S específico.
  • El sistema operativo proporciona acceso al dispositivo de E / S requerido cuando sea necesario.

Manipulación del sistema de archivos

Un archivo representa una colección de información relacionada. Las computadoras pueden almacenar archivos en el disco (almacenamiento secundario), con fines de almacenamiento a largo plazo. Los ejemplos de medios de almacenamiento incluyen cinta magnética, disco magnético y unidades de disco óptico como CD, DVD. Cada uno de estos medios tiene sus propias propiedades como velocidad, capacidad, tasa de transferencia de datos y métodos de acceso a los datos.

Un sistema de archivos normalmente se organiza en directorios para facilitar la navegación y el uso. Estos directorios pueden contener archivos y otras direcciones. Las siguientes son las principales actividades de un sistema operativo con respecto a la administración de archivos:

  • El programa necesita leer un archivo o escribir un archivo.
  • El sistema operativo da permiso al programa para operar en archivo.
  • El permiso varía de solo lectura, lectura-escritura, denegado, etc.
  • El sistema operativo proporciona una interfaz para que el usuario cree / elimine archivos.
  • El sistema operativo proporciona una interfaz para que el usuario cree / elimine directorios.
  • El sistema operativo proporciona una interfaz para crear la copia de seguridad del sistema de archivos.

Comunicación

En el caso de sistemas distribuidos que son una colección de procesadores que no comparten memoria, dispositivos periféricos o reloj, el sistema operativo administra las comunicaciones entre todos los procesos. Varios procesos se comunican entre sí a través de líneas de comunicación en la red.

El sistema operativo maneja las estrategias de enrutamiento y conexión, y los problemas de contención y seguridad. Las siguientes son las principales actividades de un sistema operativo con respecto a la comunicación:

  • Dos procesos a menudo requieren que se transfieran datos entre ellos
  • Ambos procesos pueden estar en una computadora o en diferentes computadoras, pero están conectados a través de una red de computadoras.
  • La comunicación se puede implementar mediante dos métodos, ya sea mediante memoria compartida o mediante paso de mensajes.

Manejo de errores

Los errores pueden ocurrir en cualquier momento y en cualquier lugar. Puede ocurrir un error en la CPU, en los dispositivos de E / S o en el hardware de la memoria. Las siguientes son las principales actividades de un sistema operativo con respecto al manejo de errores:

  • El sistema operativo comprueba constantemente posibles errores.
  • El sistema operativo toma las medidas adecuadas para garantizar una informática correcta y coherente.

Administracion de recursos

En el caso de un entorno multiusuario o multitarea, los recursos como la memoria principal, los ciclos de CPU y el almacenamiento de archivos deben asignarse a cada usuario o trabajo. Las siguientes son las principales actividades de un sistema operativo con respecto a la gestión de recursos:

  • El SO gestiona todo tipo de recursos mediante programadores.
  • Los algoritmos de programación de CPU se utilizan para una mejor utilización de la CPU.

Proteccion

Considerando un sistema informático que tiene múltiples usuarios y la ejecución simultánea de múltiples procesos, los diversos procesos deben protegerse de las actividades de los demás.

La protección se refiere a un mecanismo o una forma de controlar el acceso de programas, procesos o usuarios a los recursos definidos por un sistema informático. Las siguientes son las principales actividades de un sistema operativo con respecto a la protección:

  • El sistema operativo garantiza que se controle todo el acceso a los recursos del sistema.
  • El sistema operativo garantiza que los dispositivos de E / S externos estén protegidos contra intentos de acceso no válidos.
  • El sistema operativo proporciona funciones de autenticación para cada usuario mediante contraseñas.

Procesamiento por lotes

El procesamiento por lotes es una técnica en la que un sistema operativo recopila los programas y los datos juntos en un lote antes de que comience el procesamiento. Un sistema operativo realiza las siguientes actividades relacionadas con el procesamiento por lotes:

  • El sistema operativo define un trabajo que tiene una secuencia predefinida de comandos, programas y datos como una sola unidad.

  • El sistema operativo mantiene un número de trabajos en la memoria y los ejecuta sin ninguna información manual.

  • Los trabajos se procesan en el orden de envío, es decir, por orden de llegada.

  • Cuando un trabajo completa su ejecución, se libera su memoria y la salida del trabajo se copia en una cola de salida para su posterior impresión o procesamiento.

Ventajas

  • El procesamiento por lotes lleva gran parte del trabajo del operador a la computadora.

  • Mayor rendimiento a medida que se inicia un nuevo trabajo tan pronto como se termina el trabajo anterior, sin ninguna intervención manual.

Desventajas

  • Programa difícil de depurar.
  • Un trabajo puede entrar en un ciclo infinito.
  • Debido a la falta de esquema de protección, un trabajo por lotes puede afectar a los trabajos pendientes.

Multitarea

La multitarea es cuando la CPU ejecuta varios trabajos simultáneamente al alternar entre ellos. Los cambios ocurren con tanta frecuencia que los usuarios pueden interactuar con cada programa mientras se está ejecutando. Un sistema operativo realiza las siguientes actividades relacionadas con la multitarea:

  • El usuario da instrucciones al sistema operativo o a un programa directamente y recibe una respuesta inmediata.

  • El sistema operativo maneja la multitarea de la manera que puede manejar múltiples operaciones / ejecuta múltiples programas a la vez.

  • Los sistemas operativos multitarea también se conocen como sistemas de tiempo compartido.

  • Estos sistemas operativos fueron desarrollados para proporcionar un uso interactivo de un sistema informático a un costo razonable.

  • Un sistema operativo de tiempo compartido utiliza el concepto de programación y multiprogramación de CPU para proporcionar a cada usuario una pequeña parte de una CPU de tiempo compartido.

  • Cada usuario tiene al menos un programa independiente en la memoria.

  • Un programa que se carga en la memoria y se está ejecutando se denomina comúnmente process.

  • Cuando se ejecuta un proceso, normalmente se ejecuta solo por un período de tiempo muy corto antes de que finalice o necesite realizar E / S.

  • Dado que la E / S interactiva generalmente se ejecuta a velocidades más lentas, puede llevar mucho tiempo completarla. Durante este tiempo, otro proceso puede utilizar una CPU.

  • El sistema operativo permite a los usuarios compartir la computadora simultáneamente. Dado que cada acción o comando en un sistema de tiempo compartido tiende a ser corto, solo se necesita un poco de tiempo de CPU para cada usuario.

  • Como el sistema cambia la CPU rápidamente de un usuario / programa al siguiente, cada usuario tiene la impresión de que tiene su propia CPU, mientras que en realidad una CPU se comparte entre muchos usuarios.

Multiprogramación

Compartir el procesador, cuando dos o más programas residen en la memoria al mismo tiempo, se denomina multiprogramming. La multiprogramación asume un solo procesador compartido. La multiprogramación aumenta la utilización de la CPU al organizar los trabajos de modo que la CPU siempre tenga uno para ejecutar.

La siguiente figura muestra el diseño de la memoria para un sistema de multiprogramación.

Un sistema operativo realiza las siguientes actividades relacionadas con la multiprogramación.

  • El sistema operativo mantiene varios trabajos en la memoria a la vez.

  • Este conjunto de trabajos es un subconjunto de los trabajos que se mantienen en el grupo de trabajos.

  • El sistema operativo selecciona y comienza a ejecutar uno de los trabajos en la memoria.

  • Los sistemas operativos de multiprogramación monitorean el estado de todos los programas activos y los recursos del sistema mediante programas de administración de memoria para garantizar que la CPU nunca esté inactiva, a menos que no haya trabajos para procesar.

Ventajas

  • Utilización de CPU alta y eficiente.
  • El usuario siente que a muchos programas se les asigna CPU casi simultáneamente.

Desventajas

  • Se requiere programación de CPU.
  • Para acomodar muchos trabajos en la memoria, se requiere administración de memoria.

Interactividad

La interactividad se refiere a la capacidad de los usuarios para interactuar con un sistema informático. Un sistema operativo realiza las siguientes actividades relacionadas con la interactividad:

  • Proporciona al usuario una interfaz para interactuar con el sistema.
  • Gestiona los dispositivos de entrada para recibir entradas del usuario. Por ejemplo, teclado.
  • Administra los dispositivos de salida para mostrar las salidas al usuario. Por ejemplo, Monitor.

El tiempo de respuesta del sistema operativo debe ser corto, ya que el usuario envía y espera el resultado.

Sistema de tiempo real

Los sistemas en tiempo real suelen ser sistemas integrados dedicados. Un sistema operativo realiza las siguientes actividades relacionadas con la actividad del sistema en tiempo real.

  • En tales sistemas, los sistemas operativos normalmente leen y reaccionan a los datos de los sensores.
  • El sistema operativo debe garantizar la respuesta a los eventos dentro de períodos de tiempo fijos para asegurar un correcto funcionamiento.

Entorno distribuido

Un entorno distribuido se refiere a múltiples CPU o procesadores independientes en un sistema informático. Un sistema operativo realiza las siguientes actividades relacionadas con el entorno distribuido:

  • El sistema operativo distribuye la lógica de cálculo entre varios procesadores físicos.

  • Los procesadores no comparten memoria ni reloj. En cambio, cada procesador tiene su propia memoria local.

  • El SO gestiona las comunicaciones entre los procesadores. Se comunican entre sí a través de varias líneas de comunicación.

Spooling

Spooling es un acrónimo de operaciones periféricas simultáneas en línea. El spooling se refiere a colocar datos de varios trabajos de E / S en un búfer. Este búfer es un área especial en la memoria o el disco duro a la que pueden acceder los dispositivos de E / S.

Un sistema operativo realiza las siguientes actividades relacionadas con el entorno distribuido:

  • Maneja la cola de datos del dispositivo de E / S, ya que los dispositivos tienen diferentes velocidades de acceso a los datos.

  • Mantiene el búfer de cola que proporciona una estación de espera donde los datos pueden descansar mientras el dispositivo más lento se pone al día.

  • Mantiene la computación en paralelo debido al proceso de puesta en cola, ya que una computadora puede realizar E / S en forma paralela. Es posible hacer que la computadora lea datos de una cinta, escriba datos en un disco y los escriba en una impresora de cintas mientras realiza su tarea informática.

Ventajas

  • La operación de puesta en cola utiliza un disco como un búfer muy grande.
  • El spooling puede superponer la operación de E / S para un trabajo con las operaciones del procesador para otro trabajo.

Proceso

Un proceso es básicamente un programa en ejecución. La ejecución de un proceso debe progresar de forma secuencial.

Un proceso se define como una entidad que representa la unidad básica de trabajo a implementar en el sistema.

Para decirlo en términos simples, escribimos nuestros programas de computadora en un archivo de texto y cuando ejecutamos este programa, se convierte en un proceso que realiza todas las tareas mencionadas en el programa.

Cuando un programa se carga en la memoria y se convierte en un proceso, se puede dividir en cuatro secciones: pila, montón, texto y datos. La siguiente imagen muestra un diseño simplificado de un proceso dentro de la memoria principal:

SN Descripción de Componente
1

Stack

La pila de procesos contiene los datos temporales como parámetros de método / función, dirección de retorno y variables locales.

2

Heap

Se trata de memoria asignada dinámicamente a un proceso durante su tiempo de ejecución.

3

Text

Esto incluye la actividad actual representada por el valor de Program Counter y el contenido de los registros del procesador.

4

Data

Esta sección contiene las variables globales y estáticas.

Programa

Un programa es un fragmento de código que puede ser una sola línea o millones de líneas. Un programa informático generalmente lo escribe un programador informático en un lenguaje de programación. Por ejemplo, aquí hay un programa simple escrito en lenguaje de programación C:

#include <stdio.h>

int main() {
   printf("Hello, World! \n");
   return 0;
}

Un programa de computadora es una colección de instrucciones que realiza una tarea específica cuando la ejecuta una computadora. Cuando comparamos un programa con un proceso, podemos concluir que un proceso es una instancia dinámica de un programa de computadora.

Una parte de un programa de computadora que realiza una tarea bien definida se conoce como algorithm. Una colección de programas de computadora, bibliotecas y datos relacionados se conoce comosoftware.

Ciclo de vida del proceso

Cuando un proceso se ejecuta, pasa por diferentes estados. Estas etapas pueden diferir en diferentes sistemas operativos y los nombres de estos estados tampoco están estandarizados.

En general, un proceso puede tener uno de los siguientes cinco estados a la vez.

SN Estado y descripción
1

Start

Este es el estado inicial cuando se inicia / crea un proceso por primera vez.

2

Ready

El proceso está esperando ser asignado a un procesador. Los procesos listos están esperando que el sistema operativo les asigne el procesador para que puedan ejecutarse. El proceso puede entrar en este estado despuésStart estado o mientras lo ejecuta pero interrumpido por el programador para asignar CPU a algún otro proceso.

3

Running

Una vez que el programador del sistema operativo ha asignado el proceso a un procesador, el estado del proceso se establece en ejecución y el procesador ejecuta sus instrucciones.

4

Waiting

El proceso pasa al estado de espera si necesita esperar un recurso, como esperar la entrada del usuario o esperar a que un archivo esté disponible.

5

Terminated or Exit

Una vez que el proceso finaliza su ejecución, o es terminado por el sistema operativo, se mueve al estado terminado donde espera ser eliminado de la memoria principal.

Bloque de control de proceso (PCB)

Un bloque de control de procesos es una estructura de datos mantenida por el sistema operativo para cada proceso. La PCB se identifica mediante un ID de proceso entero (PID). Una PCB mantiene toda la información necesaria para realizar un seguimiento de un proceso como se enumera a continuación en la tabla:

SN Información y descripción
1

Process State

El estado actual del proceso, es decir, si está listo, en ejecución, en espera o lo que sea.

2

Process privileges

Esto es necesario para permitir / no permitir el acceso a los recursos del sistema.

3

Process ID

Identificación única para cada uno de los procesos en el sistema operativo.

4

Pointer

Un puntero al proceso principal.

5

Program Counter

El contador de programa es un puntero a la dirección de la siguiente instrucción que se ejecutará para este proceso.

6

CPU registers

Varios registros de CPU donde el proceso debe almacenarse para su ejecución para el estado de ejecución.

7

CPU Scheduling Information

Prioridad del proceso y otra información de programación que se requiere para programar el proceso.

8

Memory management information

Esto incluye la información de la tabla de páginas, límites de memoria, tabla de segmentos según la memoria utilizada por el sistema operativo.

9

Accounting information

Esto incluye la cantidad de CPU utilizada para la ejecución del proceso, límites de tiempo, ID de ejecución, etc.

10

IO status information

Esto incluye una lista de dispositivos de E / S asignados al proceso.

La arquitectura de una PCB depende completamente del sistema operativo y puede contener información diferente en diferentes sistemas operativos. Aquí hay un diagrama simplificado de una PCB:

La PCB se mantiene durante un proceso durante toda su vida útil y se elimina una vez que finaliza el proceso.

Definición

La programación de procesos es la actividad del administrador de procesos que maneja la eliminación del proceso en ejecución de la CPU y la selección de otro proceso sobre la base de una estrategia particular.

La programación de procesos es una parte esencial de los sistemas operativos de multiprogramación. Dichos sistemas operativos permiten que se cargue más de un proceso en la memoria ejecutable a la vez y el proceso cargado comparte la CPU utilizando multiplexación de tiempo.

Colas de programación de procesos

El sistema operativo mantiene todos los PCB en colas de programación de procesos. El SO mantiene una cola separada para cada uno de los estados del proceso y los PCB de todos los procesos en el mismo estado de ejecución se colocan en la misma cola. Cuando se cambia el estado de un proceso, su PCB se desvincula de su cola actual y se mueve a su nueva cola de estado.

El sistema operativo mantiene las siguientes colas de programación de procesos importantes:

  • Job queue - Esta cola mantiene todos los procesos en el sistema.

  • Ready queue- Esta cola mantiene un conjunto de todos los procesos que residen en la memoria principal, listos y esperando para ejecutarse. Siempre se coloca un nuevo proceso en esta cola.

  • Device queues - Los procesos que están bloqueados debido a la falta de disponibilidad de un dispositivo de E / S constituyen esta cola.

El sistema operativo puede usar diferentes políticas para administrar cada cola (FIFO, Round Robin, Priority, etc.). El programador del sistema operativo determina cómo mover los procesos entre las colas listas y en ejecución que solo pueden tener una entrada por núcleo de procesador en el sistema; en el diagrama anterior, se ha fusionado con la CPU.

Modelo de proceso de dos estados

El modelo de proceso de dos estados se refiere a los estados de ejecución y no ejecución que se describen a continuación:

SN Estado y descripción
1

Running

Cuando se crea un nuevo proceso, ingresa al sistema como en el estado de ejecución.

2

Not Running

Los procesos que no se están ejecutando se mantienen en cola, esperando su turno para ejecutarse. Cada entrada en la cola es un puntero a un proceso en particular. La cola se implementa mediante el uso de una lista vinculada. El uso del despachador es el siguiente. Cuando se interrumpe un proceso, ese proceso se transfiere a la cola de espera. Si el proceso se ha completado o abortado, el proceso se descarta. En cualquier caso, el despachador luego selecciona un proceso de la cola para ejecutarlo.

Programadores

Los programadores son un software de sistema especial que maneja la programación de procesos de varias maneras. Su tarea principal es seleccionar los trabajos que se enviarán al sistema y decidir qué proceso ejecutar. Los programadores son de tres tipos:

  • Programador a largo plazo
  • Programador a corto plazo
  • Programador de mediano plazo

Programador a largo plazo

También se llama job scheduler. Un planificador a largo plazo determina qué programas se admiten en el sistema para su procesamiento. Selecciona procesos de la cola y los carga en la memoria para su ejecución. Procesar cargas en la memoria para la programación de la CPU.

El objetivo principal del programador de trabajos es proporcionar una combinación equilibrada de trabajos, como enlazados por E / S y enlazados por procesador. También controla el grado de multiprogramación. Si el grado de multiprogramación es estable, entonces la tasa promedio de creación de procesos debe ser igual a la tasa de salida promedio de los procesos que abandonan el sistema.

En algunos sistemas, el planificador a largo plazo puede no estar disponible o ser mínimo. Los sistemas operativos de tiempo compartido no tienen un planificador a largo plazo. Cuando un proceso cambia el estado de nuevo a listo, se utiliza un planificador a largo plazo.

Programador a corto plazo

También se llama como CPU scheduler. Su principal objetivo es aumentar el rendimiento del sistema de acuerdo con el conjunto de criterios elegido. Es el cambio del estado listo al estado de ejecución del proceso. El programador de CPU selecciona un proceso entre los procesos que están listos para ejecutarse y asigna CPU a uno de ellos.

Los programadores a corto plazo, también conocidos como despachadores, toman la decisión de qué proceso ejecutar a continuación. Los programadores a corto plazo son más rápidos que los programadores a largo plazo.

Programador de mediano plazo

La programación a mediano plazo es parte de swapping. Elimina los procesos de la memoria. Reduce el grado de multiprogramación. El planificador de mediano plazo está a cargo de manejar los procesos de intercambio.

Un proceso en ejecución puede suspenderse si realiza una solicitud de E / S. Un proceso suspendido no puede avanzar hacia su finalización. En esta condición, para eliminar el proceso de la memoria y dejar espacio para otros procesos, el proceso suspendido se traslada al almacenamiento secundario. Este proceso se llamaswapping, y se dice que el proceso se cambia o se implementa. Puede ser necesario cambiar para mejorar la mezcla del proceso.

Comparación entre Scheduler

SN Programador a largo plazo Programador a corto plazo Programador de mediano plazo
1 Es un programador de trabajos Es un programador de CPU Es un programador de intercambio de procesos.
2 La velocidad es menor que la del programador a corto plazo La velocidad es la más rápida entre otros dos La velocidad se encuentra entre el programador a corto y largo plazo.
3 Controla el grado de multiprogramación Proporciona un menor control sobre el grado de multiprogramación. Reduce el grado de multiprogramación.
4 Está casi ausente o es mínimo en el sistema de tiempo compartido. También es mínimo en el sistema de tiempo compartido. Es parte de los sistemas de tiempo compartido.
5 Selecciona procesos del grupo y los carga en la memoria para su ejecución. Selecciona aquellos procesos que están listos para ejecutarse Puede reintroducir el proceso en la memoria y la ejecución puede continuar.

Cambio de contexto

Un cambio de contexto es el mecanismo para almacenar y restaurar el estado o el contexto de una CPU en el bloque de control de procesos para que la ejecución de un proceso pueda reanudarse desde el mismo punto en un momento posterior. Con esta técnica, un conmutador de contexto permite que varios procesos compartan una sola CPU. El cambio de contexto es una parte esencial de las características de un sistema operativo multitarea.

Cuando el programador cambia la CPU de ejecutar un proceso a ejecutar otro, el estado del proceso en ejecución actual se almacena en el bloque de control del proceso. Después de esto, el estado del proceso que se ejecutará a continuación se carga desde su propia PCB y se usa para configurar la PC, los registros, etc. En ese momento, el segundo proceso puede comenzar a ejecutarse.

Los cambios de contexto son computacionalmente intensivos ya que el registro y el estado de la memoria deben guardarse y restaurarse. Para evitar la cantidad de tiempo de cambio de contexto, algunos sistemas de hardware emplean dos o más conjuntos de registros de procesador. Cuando se cambia el proceso, la siguiente información se almacena para su uso posterior.

  • Contador de programa
  • Información de programación
  • Valor de registro base y límite
  • Registro utilizado actualmente
  • Estado cambiado
  • Información del estado de E / S
  • Informacion de cuenta

Un programador de procesos programa diferentes procesos que se asignarán a la CPU en función de algoritmos de programación particulares. Hay seis algoritmos de programación de procesos populares que discutiremos en este capítulo:

  • Programación por orden de llegada (FCFS)
  • Programación del siguiente trabajo más corto (SJN)
  • Programación prioritaria
  • Tiempo restante más corto
  • Programación de Round Robin (RR)
  • Programación de colas de varios niveles

Estos algoritmos son non-preemptive or preemptive. Los algoritmos no preventivos están diseñados para que una vez que un proceso entre en el estado de ejecución, no se pueda adelantar hasta que complete el tiempo asignado, mientras que la programación preventiva se basa en la prioridad, donde un programador puede adelantarse a un proceso en ejecución de baja prioridad en cualquier momento cuando haya una prioridad alta. el proceso entra en un estado listo.

Primero llega, primero sirve (FCFS)

  • Los trabajos se ejecutan por orden de llegada.
  • Es un algoritmo de programación preventivo y no preventivo.
  • Fácil de entender e implementar.
  • Su implementación se basa en la cola FIFO.
  • Deficiente rendimiento debido a que el tiempo medio de espera es elevado.

Wait time de cada proceso es el siguiente:

Proceso Tiempo de espera: hora de servicio - hora de llegada
P0 0-0 = 0
P1 5 - 1 = 4
P2 8 - 2 = 6
P3 16 - 3 = 13

Tiempo medio de espera: (0 + 4 + 6 + 13) / 4 = 5,75

Trabajo más corto siguiente (SJN)

  • Esto también se conoce como shortest job firsto SJF

  • Este es un algoritmo de programación preventivo y no preventivo.

  • El mejor enfoque para minimizar el tiempo de espera.

  • Fácil de implementar en sistemas Batch donde el tiempo de CPU requerido se conoce de antemano.

  • Imposible de implementar en sistemas interactivos donde se desconoce el tiempo de CPU requerido.

  • El procesador debe saber de antemano cuánto tiempo llevará el proceso.

Dado: Tabla de procesos, y su Hora de llegada, Hora de ejecución

Proceso Hora de llegada Tiempo de ejecución Tiempo de servicio
P0 0 5 0
P1 1 3 5
P2 2 8 14
P3 3 6 8

Waiting time de cada proceso es el siguiente:

Proceso Tiempo de espera
P0 0-0 = 0
P1 5 - 1 = 4
P2 14 - 2 = 12
P3 8 - 3 = 5

Tiempo promedio de espera: (0 + 4 + 12 + 5) / 4 = 21/4 = 5.25

Programación basada en prioridades

  • La programación de prioridades es un algoritmo no preventivo y uno de los algoritmos de programación más comunes en los sistemas por lotes.

  • A cada proceso se le asigna una prioridad. El proceso con mayor prioridad se ejecutará primero y así sucesivamente.

  • Los procesos con la misma prioridad se ejecutan por orden de llegada.

  • La prioridad se puede decidir en función de los requisitos de memoria, los requisitos de tiempo o cualquier otro requisito de recursos.

Dado: Tabla de procesos, y su hora de llegada, hora de ejecución y prioridad. Aquí estamos considerando que 1 es la prioridad más baja.

Proceso Hora de llegada Tiempo de ejecución Prioridad Tiempo de servicio
P0 0 5 1 0
P1 1 3 2 11
P2 2 8 1 14
P3 3 6 3 5

Waiting time de cada proceso es el siguiente:

Proceso Tiempo de espera
P0 0-0 = 0
P1 11 - 1 = 10
P2 14 - 2 = 12
P3 5 - 3 = 2

Tiempo medio de espera: (0 + 10 + 12 + 2) / 4 = 24/4 = 6

Tiempo restante más corto

  • El tiempo restante más corto (SRT) es la versión preventiva del algoritmo SJN.

  • El procesador se asigna al trabajo más cercano a su finalización, pero puede ser reemplazado por un nuevo trabajo listo con un tiempo de finalización más corto.

  • Imposible de implementar en sistemas interactivos donde se desconoce el tiempo de CPU requerido.

  • A menudo se utiliza en entornos por lotes donde los trabajos cortos deben dar preferencia.

Programación Round Robin

  • Round Robin es el algoritmo de programación de procesos preventivos.

  • Cada proceso tiene un tiempo fijo para ejecutarse, se llama quantum.

  • Una vez que un proceso se ejecuta durante un período de tiempo determinado, se reemplaza y otro proceso se ejecuta durante un período de tiempo determinado.

  • La conmutación de contexto se utiliza para guardar estados de procesos apropiadamente.

Wait time de cada proceso es el siguiente:

Proceso Tiempo de espera: hora de servicio - hora de llegada
P0 (0 - 0) + (12 - 3) = 9
P1 (3 - 1) = 2
P2 (6 - 2) + (14 - 9) + (20 - 17) = 12
P3 (9 - 3) + (17 - 12) = 11

Tiempo promedio de espera: (9 + 2 + 12 + 11) / 4 = 8.5

Programación de colas de varios niveles

Las colas de varios niveles no son un algoritmo de programación independiente. Hacen uso de otros algoritmos existentes para agrupar y programar trabajos con características comunes.

  • Se mantienen múltiples colas para procesos con características comunes.
  • Cada cola puede tener sus propios algoritmos de programación.
  • Se asignan prioridades a cada cola.

Por ejemplo, los trabajos vinculados a la CPU se pueden programar en una cola y todos los trabajos vinculados a E / S en otra cola. Luego, el Programador de procesos selecciona alternativamente trabajos de cada cola y los asigna a la CPU según el algoritmo asignado a la cola.

¿Qué es Thread?

Un hilo es un flujo de ejecución a través del código de proceso, con su propio contador de programa que realiza un seguimiento de qué instrucción ejecutar a continuación, registros del sistema que contienen sus variables de trabajo actuales y una pila que contiene el historial de ejecución.

Un hilo comparte con sus hilos pares poca información como segmento de código, segmento de datos y archivos abiertos. Cuando un hilo altera un elemento de memoria de segmento de código, todos los demás hilos lo ven.

Un hilo también se llama lightweight process. Los subprocesos proporcionan una forma de mejorar el rendimiento de las aplicaciones mediante el paralelismo. Los subprocesos representan un enfoque de software para mejorar el rendimiento del sistema operativo al reducir el subproceso de sobrecarga es equivalente a un proceso clásico.

Cada hilo pertenece exactamente a un proceso y ningún hilo puede existir fuera de un proceso. Cada hilo representa un flujo de control independiente. Los subprocesos se han utilizado con éxito en la implementación de servidores de red y servidores web. También proporcionan una base adecuada para la ejecución paralela de aplicaciones en multiprocesadores de memoria compartida. La siguiente figura muestra el funcionamiento de un proceso de un solo subproceso y uno de varios subprocesos.

Diferencia entre proceso e hilo

SN Proceso Hilo
1 El proceso es pesado o requiere muchos recursos. El hilo es liviano y consume menos recursos que un proceso.
2 La conmutación de procesos necesita interacción con el sistema operativo. El cambio de hilo no necesita interactuar con el sistema operativo.
3 En múltiples entornos de procesamiento, cada proceso ejecuta el mismo código pero tiene su propia memoria y recursos de archivo. Todos los hilos pueden compartir el mismo conjunto de archivos abiertos, procesos secundarios.
4 Si un proceso está bloqueado, ningún otro proceso se puede ejecutar hasta que se desbloquee el primer proceso. Mientras un hilo está bloqueado y esperando, se puede ejecutar un segundo hilo en la misma tarea.
5 Múltiples procesos sin usar subprocesos consumen más recursos. Los procesos de varios subprocesos utilizan menos recursos.
6 En múltiples procesos, cada proceso opera independientemente de los demás. Un hilo puede leer, escribir o cambiar los datos de otro hilo.

Ventajas del hilo

  • Los hilos minimizan el tiempo de cambio de contexto.
  • El uso de subprocesos proporciona simultaneidad dentro de un proceso.
  • Comunicación eficiente.
  • Es más económico crear y cambiar de contexto los hilos.
  • Los subprocesos permiten la utilización de arquitecturas multiprocesador a una mayor escala y eficiencia.

Tipos de hilo

Los hilos se implementan de dos formas siguientes:

  • User Level Threads - Hilos administrados por el usuario.

  • Kernel Level Threads - Subprocesos gestionados por el sistema operativo que actúan sobre el kernel, un núcleo del sistema operativo.

Hilos de nivel de usuario

En este caso, el núcleo de administración de subprocesos no es consciente de la existencia de subprocesos. La biblioteca de subprocesos contiene código para crear y destruir subprocesos, para pasar mensajes y datos entre subprocesos, para programar la ejecución de subprocesos y para guardar y restaurar contextos de subprocesos. La aplicación comienza con un solo hilo.

Ventajas

  • El cambio de hilo no requiere privilegios de modo Kernel.
  • El hilo de nivel de usuario puede ejecutarse en cualquier sistema operativo.
  • La programación puede ser específica de la aplicación en el subproceso de nivel de usuario.
  • Los hilos de nivel de usuario son rápidos de crear y administrar.

Desventajas

  • En un sistema operativo típico, la mayoría de las llamadas al sistema se bloquean.
  • La aplicación multiproceso no puede aprovechar el multiprocesamiento.

Hilos de nivel de kernel

En este caso, la gestión de subprocesos la realiza el Kernel. No hay código de gestión de subprocesos en el área de la aplicación. Los subprocesos del kernel son compatibles directamente con el sistema operativo. Cualquier aplicación puede programarse para ser multiproceso. Todos los subprocesos de una aplicación se admiten en un solo proceso.

El kernel mantiene información de contexto para el proceso en su conjunto y para los hilos individuales dentro del proceso. La programación por parte del núcleo se realiza por subprocesos. El Kernel realiza la creación, programación y administración de hilos en el espacio del Kernel. Los subprocesos del núcleo son generalmente más lentos de crear y administrar que los subprocesos del usuario.

Ventajas

  • Kernel puede programar simultáneamente varios subprocesos del mismo proceso en varios procesos.
  • Si un hilo en un proceso está bloqueado, el Kernel puede programar otro hilo del mismo proceso.
  • Las propias rutinas del kernel pueden ser multiproceso.

Desventajas

  • Los subprocesos del núcleo son generalmente más lentos de crear y administrar que los subprocesos del usuario.
  • La transferencia de control de un subproceso a otro dentro del mismo proceso requiere un cambio de modo al núcleo.

Modelos de subprocesos múltiples

Algunos sistemas operativos proporcionan un subproceso de nivel de usuario combinado y un servicio de subproceso de nivel de kernel. Solaris es un buen ejemplo de este enfoque combinado. En un sistema combinado, varios subprocesos dentro de la misma aplicación pueden ejecutarse en paralelo en varios procesadores y una llamada al sistema de bloqueo no necesita bloquear todo el proceso. Los modelos de subprocesos múltiples son de tres tipos

  • Relación de muchos a muchos.
  • Relación de muchos a uno.
  • Relación uno a uno.

Modelo de muchos a muchos

El modelo de muchos a muchos multiplexa cualquier número de subprocesos de usuario en un número igual o menor de subprocesos del núcleo.

El siguiente diagrama muestra el modelo de subprocesos de muchos a muchos donde 6 subprocesos a nivel de usuario se multiplexan con 6 subprocesos a nivel de kernel. En este modelo, los desarrolladores pueden crear tantos subprocesos de usuario como sea necesario y los subprocesos de Kernel correspondientes pueden ejecutarse en paralelo en una máquina multiprocesador. Este modelo proporciona la mejor precisión en la concurrencia y cuando un hilo realiza una llamada al sistema de bloqueo, el kernel puede programar otro hilo para su ejecución.

Modelo de muchos a uno

El modelo de muchos a uno asigna muchos subprocesos a nivel de usuario a un subproceso a nivel de Kernel. La gestión de subprocesos se realiza en el espacio del usuario mediante la biblioteca de subprocesos. Cuando el hilo realiza una llamada al sistema de bloqueo, todo el proceso se bloqueará. Solo un subproceso puede acceder al Kernel a la vez, por lo que varios subprocesos no pueden ejecutarse en paralelo en multiprocesadores.

Si las bibliotecas de subprocesos a nivel de usuario se implementan en el sistema operativo de tal manera que el sistema no las admite, entonces los subprocesos del núcleo utilizan los modos de relación de muchos a uno.

Modelo uno a uno

Existe una relación de uno a uno entre el subproceso a nivel de usuario y el subproceso a nivel de kernel. Este modelo proporciona más simultaneidad que el modelo de muchos a uno. También permite que se ejecute otro hilo cuando un hilo realiza una llamada al sistema de bloqueo. Admite múltiples subprocesos para ejecutarse en paralelo en microprocesadores.

La desventaja de este modelo es que la creación de un hilo de usuario requiere el hilo del Kernel correspondiente. OS / 2, Windows NT y Windows 2000 utilizan un modelo de relación uno a uno.

Diferencia entre subprocesos a nivel de usuario y a nivel de kernel

SN Hilos a nivel de usuario Subproceso a nivel de kernel
1 Los subprocesos a nivel de usuario son más rápidos de crear y administrar. Los subprocesos a nivel de kernel son más lentos de crear y administrar.
2 La implementación se realiza mediante una biblioteca de subprocesos a nivel de usuario. El sistema operativo admite la creación de subprocesos del kernel.
3 El hilo a nivel de usuario es genérico y puede ejecutarse en cualquier sistema operativo. El hilo de nivel de kernel es específico del sistema operativo.
4 Las aplicaciones multiproceso no pueden aprovechar el multiprocesamiento. Las propias rutinas del kernel pueden ser multiproceso.

La administración de memoria es la funcionalidad de un sistema operativo que maneja o administra la memoria primaria y mueve los procesos hacia adelante y hacia atrás entre la memoria principal y el disco durante la ejecución. La gestión de la memoria realiza un seguimiento de todas y cada una de las ubicaciones de la memoria, independientemente de si está asignada a algún proceso o si es gratuita. Comprueba cuánta memoria se asignará a los procesos. Decide qué proceso obtendrá memoria en qué momento. Realiza un seguimiento cada vez que se libera o no se asigna algo de memoria y, en consecuencia, actualiza el estado.

Este tutorial le enseñará conceptos básicos relacionados con la gestión de la memoria.

Espacio de direcciones de proceso

El espacio de direcciones de proceso es el conjunto de direcciones lógicas a las que un proceso hace referencia en su código. Por ejemplo, cuando se utiliza el direccionamiento de 32 bits, las direcciones pueden oscilar entre 0 y 0x7fffffff; es decir, 2 ^ 31 números posibles, para un tamaño teórico total de 2 gigabytes.

El sistema operativo se encarga de asignar las direcciones lógicas a las direcciones físicas en el momento de la asignación de memoria al programa. Hay tres tipos de direcciones que se utilizan en un programa antes y después de que se asigne la memoria:

SN Direcciones de memoria y descripción
1

Symbolic addresses

Las direcciones utilizadas en un código fuente. Los nombres de variables, constantes y etiquetas de instrucción son los elementos básicos del espacio de direcciones simbólico.

2

Relative addresses

En el momento de la compilación, un compilador convierte direcciones simbólicas en direcciones relativas.

3

Physical addresses

El cargador genera estas direcciones en el momento en que se carga un programa en la memoria principal.

Las direcciones virtuales y físicas son las mismas en los esquemas de enlace de direcciones en tiempo de compilación y en tiempo de carga. Las direcciones virtuales y físicas difieren en el esquema de vinculación de direcciones en tiempo de ejecución.

El conjunto de todas las direcciones lógicas generadas por un programa se denomina logical address space. El conjunto de todas las direcciones físicas correspondientes a estas direcciones lógicas se denominaphysical address space.

La asignación de tiempo de ejecución de la dirección virtual a la física la realiza la unidad de gestión de memoria (MMU), que es un dispositivo de hardware. MMU utiliza el siguiente mecanismo para convertir la dirección virtual en dirección física.

  • El valor en el registro base se suma a cada dirección generada por un proceso de usuario, que se trata como un desplazamiento en el momento en que se envía a la memoria. Por ejemplo, si el valor de registro base es 10000, entonces un intento del usuario de utilizar la ubicación de dirección 100 se reasignará dinámicamente a la ubicación 10100.

  • El programa de usuario se ocupa de direcciones virtuales; nunca ve las direcciones físicas reales.

Carga estática vs dinámica

La elección entre carga estática o dinámica debe hacerse en el momento de desarrollar el programa informático. Si tiene que cargar su programa de forma estática, en el momento de la compilación, los programas completos se compilarán y vincularán sin dejar ningún programa externo o dependencia de módulo. El enlazador combina el programa de objeto con otros módulos de objeto necesarios en un programa absoluto, que también incluye direcciones lógicas.

Si está escribiendo un programa cargado dinámicamente, entonces su compilador compilará el programa y para todos los módulos que desee incluir dinámicamente, solo se proporcionarán referencias y el resto del trabajo se realizará en el momento de la ejecución.

En el momento de la carga, con static loading, el programa absoluto (y los datos) se cargan en la memoria para que comience la ejecución.

Si esta usando dynamic loading, las rutinas dinámicas de la biblioteca se almacenan en un disco en forma reubicable y se cargan en la memoria solo cuando el programa las necesita.

Vinculación estática vs dinámica

Como se explicó anteriormente, cuando se usa un enlace estático, el enlazador combina todos los demás módulos que necesita un programa en un solo programa ejecutable para evitar cualquier dependencia del tiempo de ejecución.

Cuando se utiliza la vinculación dinámica, no es necesario vincular el módulo o biblioteca real con el programa, sino que se proporciona una referencia al módulo dinámico en el momento de la compilación y la vinculación. Las bibliotecas de vínculos dinámicos (DLL) en Windows y los objetos compartidos en Unix son buenos ejemplos de bibliotecas dinámicas.

Intercambio

El intercambio es un mecanismo en el que un proceso se puede intercambiar temporalmente de la memoria principal (o mover) al almacenamiento secundario (disco) y hacer que la memoria esté disponible para otros procesos. En algún momento posterior, el sistema intercambia el proceso del almacenamiento secundario a la memoria principal.

Aunque el rendimiento generalmente se ve afectado por el proceso de intercambio, ayuda a ejecutar múltiples y grandes procesos en paralelo y esa es la razón Swapping is also known as a technique for memory compaction.

El tiempo total que tarda el proceso de intercambio incluye el tiempo que lleva mover todo el proceso a un disco secundario y luego copiar el proceso a la memoria, así como el tiempo que tarda el proceso en recuperar la memoria principal.

Supongamos que el proceso de usuario tiene un tamaño de 2048 KB y en un disco duro estándar donde se realizará el intercambio tiene una tasa de transferencia de datos de alrededor de 1 MB por segundo. La transferencia real del proceso de 1000K hacia o desde la memoria tomará

2048KB / 1024KB per second
= 2 seconds
= 2000 milliseconds

Ahora, considerando el tiempo de entrada y salida, se necesitarán 4000 milisegundos completos más otros gastos generales en los que el proceso compite para recuperar la memoria principal.

Asignación de memoria

La memoria principal generalmente tiene dos particiones:

  • Low Memory - El sistema operativo reside en esta memoria.

  • High Memory - Los procesos de usuario se mantienen en memoria alta.

El sistema operativo utiliza el siguiente mecanismo de asignación de memoria.

SN Asignación y descripción de memoria
1

Single-partition allocation

En este tipo de asignación, el esquema de registro de reubicación se utiliza para proteger los procesos de los usuarios entre sí y de cambiar el código y los datos del sistema operativo. El registro de reubicación contiene el valor de la dirección física más pequeña, mientras que el registro de límite contiene un rango de direcciones lógicas. Cada dirección lógica debe ser menor que el registro de límite.

2

Multiple-partition allocation

En este tipo de asignación, la memoria principal se divide en una cantidad de particiones de tamaño fijo donde cada partición debe contener solo un proceso. Cuando una partición está libre, se selecciona un proceso de la cola de entrada y se carga en la partición libre. Cuando el proceso termina, la partición está disponible para otro proceso.

Fragmentación

A medida que los procesos se cargan y eliminan de la memoria, el espacio de memoria libre se divide en pequeños pedazos. A veces sucede que los procesos no se pueden asignar a bloques de memoria debido a su pequeño tamaño y los bloques de memoria no se utilizan. Este problema se conoce como fragmentación.

La fragmentación es de dos tipos:

SN Fragmentación y descripción
1

External fragmentation

El espacio de memoria total es suficiente para satisfacer una solicitud o para residir un proceso en él, pero no es contiguo, por lo que no se puede utilizar.

2

Internal fragmentation

El bloque de memoria asignado al proceso es más grande. Una parte de la memoria no se utiliza, ya que no puede ser utilizada por otro proceso.

El siguiente diagrama muestra cómo la fragmentación puede causar pérdida de memoria y se puede utilizar una técnica de compactación para crear más memoria libre a partir de la memoria fragmentada:

La fragmentación externa se puede reducir compactando o mezclando el contenido de la memoria para colocar toda la memoria libre junta en un bloque grande. Para que la compactación sea factible, la reubicación debe ser dinámica.

La fragmentación interna se puede reducir asignando efectivamente la partición más pequeña pero lo suficientemente grande para el proceso.

Paginación

Una computadora puede utilizar más memoria que la cantidad instalada físicamente en el sistema. Esta memoria adicional en realidad se llama memoria virtual y es una sección de un disco duro que está configurado para emular la RAM de la computadora. La técnica de paginación juega un papel importante en la implementación de la memoria virtual.

La paginación es una técnica de administración de memoria en la que el espacio de direcciones del proceso se divide en bloques del mismo tamaño llamados pages(el tamaño es una potencia de 2, entre 512 bytes y 8192 bytes). El tamaño del proceso se mide en número de páginas.

De manera similar, la memoria principal se divide en pequeños bloques de memoria (física) de tamaño fijo llamados frames y el tamaño de un marco se mantiene igual al de una página para tener un uso óptimo de la memoria principal y evitar la fragmentación externa.

Traducción de direcciones

La dirección de la página se llama logical address y representado por page number y el offset.

Logical Address = Page number + page offset

La dirección de la trama se llama physical address y representado por un frame number y el offset.

Physical Address = Frame number + page offset

Una estructura de datos llamada page map table se utiliza para realizar un seguimiento de la relación entre una página de un proceso y un marco en la memoria física.

Cuando el sistema asigna un marco a cualquier página, traduce esta dirección lógica en una dirección física y crea una entrada en la tabla de páginas que se utilizará durante la ejecución del programa.

Cuando se va a ejecutar un proceso, sus páginas correspondientes se cargan en los marcos de memoria disponibles. Suponga que tiene un programa de 8Kb pero su memoria puede acomodar solo 5Kb en un momento dado, entonces el concepto de paginación entrará en escena. Cuando una computadora se queda sin RAM, el sistema operativo (SO) moverá las páginas de memoria inactivas o no deseadas a la memoria secundaria para liberar RAM para otros procesos y las recuperará cuando el programa las necesite.

Este proceso continúa durante toda la ejecución del programa, donde el sistema operativo sigue eliminando las páginas inactivas de la memoria principal y las escribe en la memoria secundaria y las recupera cuando el programa lo requiere.

Ventajas y desventajas de la paginación

Aquí hay una lista de ventajas y desventajas de la paginación:

  • La paginación reduce la fragmentación externa, pero aún sufre de fragmentación interna.

  • La paginación es simple de implementar y se asume como una técnica de administración de memoria eficiente.

  • Debido al tamaño igual de las páginas y los marcos, el intercambio se vuelve muy fácil.

  • La tabla de páginas requiere espacio de memoria adicional, por lo que puede no ser buena para un sistema con poca RAM.

Segmentación

La segmentación es una técnica de gestión de la memoria en la que cada trabajo se divide en varios segmentos de diferentes tamaños, uno para cada módulo que contiene piezas que realizan funciones relacionadas. Cada segmento es en realidad un espacio de direcciones lógicas diferente del programa.

Cuando se va a ejecutar un proceso, su segmentación correspondiente se carga en la memoria no contigua, aunque cada segmento se carga en un bloque contiguo de memoria disponible.

La administración de la memoria de segmentación funciona de manera muy similar a la paginación, pero aquí los segmentos son de longitud variable, mientras que las páginas de paginación tienen un tamaño fijo.

Un segmento de programa contiene la función principal del programa, funciones de utilidad, estructuras de datos, etc. El sistema operativo mantiene unsegment map tablepara cada proceso y una lista de bloques de memoria libres junto con los números de segmento, su tamaño y las ubicaciones de memoria correspondientes en la memoria principal. Para cada segmento, la tabla almacena la dirección inicial del segmento y la longitud del segmento. Una referencia a una ubicación de memoria incluye un valor que identifica un segmento y un desplazamiento.

Una computadora puede utilizar más memoria que la cantidad instalada físicamente en el sistema. Esta memoria extra en realidad se llamavirtual memory y es una sección de un disco duro que está configurado para emular la RAM de la computadora.

La principal ventaja visible de este esquema es que los programas pueden ser más grandes que la memoria física. La memoria virtual tiene dos propósitos. Primero, nos permite extender el uso de la memoria física usando el disco. En segundo lugar, nos permite tener protección de memoria, porque cada dirección virtual se traduce a una dirección física.

A continuación se presentan las situaciones en las que no es necesario cargar el programa completo en la memoria principal.

  • Las rutinas de manejo de errores escritas por el usuario se usan solo cuando ocurre un error en los datos o en el cálculo.

  • Es posible que algunas opciones y funciones de un programa se utilicen en raras ocasiones.

  • A muchas tablas se les asigna una cantidad fija de espacio de direcciones, aunque en realidad solo se utiliza una pequeña cantidad de la tabla.

  • La capacidad de ejecutar un programa que está solo parcialmente en la memoria contrarrestaría muchos beneficios.

  • Se necesitaría menos cantidad de E / S para cargar o intercambiar cada programa de usuario en la memoria.

  • Un programa ya no estaría limitado por la cantidad de memoria física disponible.

  • Cada programa de usuario podría ocupar menos memoria física, podrían ejecutarse más programas al mismo tiempo, con el correspondiente aumento en la utilización y el rendimiento de la CPU.

Los microprocesadores modernos diseñados para uso general, una unidad de gestión de memoria o MMU, están integrados en el hardware. El trabajo de la MMU es traducir direcciones virtuales en direcciones físicas. A continuación se ofrece un ejemplo básico:

La memoria virtual se implementa comúnmente mediante paginación por demanda. También se puede implementar en un sistema de segmentación. La segmentación de demanda también se puede utilizar para proporcionar memoria virtual.

Paginación de demanda

Un sistema de paginación por demanda es bastante similar a un sistema de paginación con intercambio donde los procesos residen en la memoria secundaria y las páginas se cargan solo bajo demanda, no por adelantado. Cuando se produce un cambio de contexto, el sistema operativo no copia ninguna de las páginas del programa antiguo en el disco o ninguna de las páginas del nuevo programa en la memoria principal. En cambio, simplemente comienza a ejecutar el nuevo programa después de cargar la primera página y recupera esa las páginas del programa según se hace referencia a ellas.

Mientras se ejecuta un programa, si el programa hace referencia a una página que no está disponible en la memoria principal porque fue intercambiada hace un tiempo, el procesador trata esta referencia de memoria no válida como una page fault y transfiere el control del programa al sistema operativo para exigir que la página vuelva a la memoria.

Ventajas

A continuación se muestran las ventajas de la localización por demanda:

  • Gran memoria virtual.
  • Uso más eficiente de la memoria.
  • No hay límite en el grado de multiprogramación.

Desventajas

  • El número de tablas y la cantidad de sobrecarga del procesador para manejar las interrupciones de página son mayores que en el caso de las técnicas de administración de páginas simples.

Algoritmo de reemplazo de página

Los algoritmos de reemplazo de página son las técnicas mediante las cuales un sistema operativo decide qué páginas de memoria intercambiar y escribir en el disco cuando es necesario asignar una página de memoria. La paginación ocurre cada vez que ocurre una falla en la página y una página libre no se puede usar para la contabilidad de propósitos de asignación para razonar que las páginas no están disponibles o el número de páginas libres es menor que las páginas requeridas.

Cuando se vuelve a hacer referencia a la página que se seleccionó para el reemplazo y se paginó, debe leerse desde el disco, y esto requiere que se complete la E / S. Este proceso determina la calidad del algoritmo de reemplazo de página: cuanto menor es el tiempo de espera para las entradas de página, mejor es el algoritmo.

Un algoritmo de reemplazo de página analiza la información limitada sobre el acceso a las páginas proporcionada por el hardware e intenta seleccionar qué páginas deben reemplazarse para minimizar el número total de páginas perdidas, mientras lo equilibra con los costos del almacenamiento primario y el tiempo de procesamiento del algoritmo. sí mismo. Hay muchos algoritmos de sustitución de páginas diferentes. Evaluamos un algoritmo ejecutándolo en una cadena particular de referencia de memoria y calculando el número de fallas de página,

Cadena de referencia

La cadena de referencias de memoria se llama cadena de referencia. Las cadenas de referencia se generan artificialmente o rastreando un sistema dado y registrando la dirección de cada referencia de memoria. La última opción produce una gran cantidad de datos, donde notamos dos cosas.

  • Para un tamaño de página determinado, debemos considerar solo el número de página, no la dirección completa.

  • Si tenemos una referencia a una página p, luego cualquier referencia inmediatamente siguiente a la página pnunca causará una falla en la página. La página p estará en la memoria después de la primera referencia; las referencias inmediatamente siguientes no fallarán.

  • Por ejemplo, considere la siguiente secuencia de direcciones: 123,215,600,1234,76,96

  • Si el tamaño de la página es 100, la cadena de referencia es 1,2,6,12,0,0

Algoritmo primero en entrar, primero en salir (FIFO)

  • La página más antigua de la memoria principal es la que se seleccionará para su reemplazo.

  • Fácil de implementar, mantenga una lista, reemplace las páginas de la cola y agregue nuevas páginas en la cabecera.

Algoritmo de página óptima

  • Un algoritmo de reemplazo de página óptimo tiene la tasa de fallas de página más baja de todos los algoritmos. Existe un algoritmo de reemplazo de página óptimo y se ha denominado OPT o MIN.

  • Reemplace la página que no se utilizará durante un período de tiempo más largo. Utilice el tiempo en que se utilizará una página.

Algoritmo de uso menos reciente (LRU)

  • La página que no se ha utilizado durante más tiempo en la memoria principal es la que se seleccionará para su reemplazo.

  • Fácil de implementar, mantenga una lista, reemplace las páginas mirando hacia atrás en el tiempo.

Algoritmo de almacenamiento en búfer de página

  • Para que un proceso comience rápidamente, mantenga un grupo de marcos libres.
  • En caso de error de página, seleccione una página para reemplazarla.
  • Escriba la nueva página en el marco del grupo gratuito, marque la tabla de páginas y reinicie el proceso.
  • Ahora escriba la página sucia fuera del disco y coloque el marco que contiene la página reemplazada en el grupo libre.

Algoritmo de uso menos frecuente (LFU)

  • La página con el recuento más pequeño es la que se seleccionará para su reemplazo.

  • Este algoritmo sufre la situación en la que una página se usa mucho durante la fase inicial de un proceso, pero luego nunca se vuelve a usar.

Algoritmo de uso más frecuente (MFU)

  • Este algoritmo se basa en el argumento de que la página con el recuento más pequeño probablemente se acaba de traer y aún no se ha utilizado.

Uno de los trabajos importantes de un sistema operativo es administrar varios dispositivos de E / S, incluidos mouse, teclados, panel táctil, unidades de disco, adaptadores de pantalla, dispositivos USB, pantalla de mapa de bits, LED, convertidor de analógico a digital, encendido / interruptor de apagado, conexiones de red, E / S de audio, impresoras, etc.

Se requiere un sistema de E / S para tomar una solicitud de E / S de la aplicación y enviarla al dispositivo físico, luego tomar cualquier respuesta que provenga del dispositivo y enviarla a la aplicación. Los dispositivos de E / S se pueden dividir en dos categorías:

  • Block devices- Un dispositivo de bloque es aquel con el que el conductor se comunica enviando bloques completos de datos. Por ejemplo, discos duros, cámaras USB, Disk-On-Key, etc.

  • Character devices- Un dispositivo de caracteres es aquel con el que el conductor se comunica enviando y recibiendo caracteres individuales (bytes, octetos). Por ejemplo, puertos serie, puertos paralelos, tarjetas de sonido, etc.

Controladores de dispositivos

Los controladores de dispositivo son módulos de software que se pueden conectar a un sistema operativo para manejar un dispositivo en particular. El sistema operativo toma la ayuda de los controladores de dispositivos para manejar todos los dispositivos de E / S.

El controlador de dispositivo funciona como una interfaz entre un dispositivo y un controlador de dispositivo. Las unidades de E / S (teclado, mouse, impresora, etc.) generalmente constan de un componente mecánico y un componente electrónico donde el componente electrónico se denomina controlador de dispositivo.

Siempre hay un controlador de dispositivo y un controlador de dispositivo para que cada dispositivo se comunique con los sistemas operativos. Un controlador de dispositivo puede manejar varios dispositivos. Como interfaz, su tarea principal es convertir el flujo de bits en serie en un bloque de bytes y realizar la corrección de errores según sea necesario.

Cualquier dispositivo conectado a la computadora está conectado por un enchufe y un enchufe, y el enchufe está conectado a un controlador de dispositivo. A continuación se muestra un modelo para conectar la CPU, la memoria, los controladores y los dispositivos de E / S donde los controladores de la CPU y de los dispositivos utilizan un bus común para la comunicación.

E / S sincrónicas vs asincrónicas

  • Synchronous I/O - En este esquema, la ejecución de la CPU espera mientras procede la E / S

  • Asynchronous I/O - La E / S procede al mismo tiempo que la ejecución de la CPU

Comunicación a dispositivos de E / S

La CPU debe tener una forma de pasar información hacia y desde un dispositivo de E / S. Hay tres enfoques disponibles para comunicarse con la CPU y el dispositivo.

  • E / S de instrucción especial
  • E / S mapeadas en memoria
  • Acceso directo a memoria (DMA)

E / S de instrucción especial

Esto usa instrucciones de CPU que están diseñadas específicamente para controlar dispositivos de E / S. Estas instrucciones normalmente permiten que los datos se envíen a un dispositivo de E / S o se lean desde un dispositivo de E / S.

E / S mapeadas en memoria

Cuando se utilizan E / S asignadas en memoria, la memoria y los dispositivos de E / S comparten el mismo espacio de direcciones. El dispositivo está conectado directamente a ciertas ubicaciones de la memoria principal para que el dispositivo de E / S pueda transferir bloques de datos hacia / desde la memoria sin pasar por la CPU.

Mientras usa IO mapeado en memoria, el sistema operativo asigna búfer en la memoria e informa al dispositivo de E / S que use ese búfer para enviar datos a la CPU. El dispositivo de E / S funciona de forma asincrónica con la CPU, interrumpe la CPU cuando termina.

La ventaja de este método es que todas las instrucciones que pueden acceder a la memoria se pueden utilizar para manipular un dispositivo de E / S. La E / S asignada en memoria se utiliza para la mayoría de los dispositivos de E / S de alta velocidad, como discos, interfaces de comunicación.

Acceso directo a memoria (DMA)

Los dispositivos lentos como los teclados generarán una interrupción en la CPU principal después de que se transfiera cada byte. Si un dispositivo rápido como un disco genera una interrupción para cada byte, el sistema operativo dedicaría la mayor parte de su tiempo a manejar estas interrupciones. Entonces, una computadora típica usa hardware de acceso directo a memoria (DMA) para reducir esta sobrecarga.

El acceso directo a la memoria (DMA) significa que la CPU le otorga al módulo de E / S autoridad para leer o escribir en la memoria sin participación. El propio módulo DMA controla el intercambio de datos entre la memoria principal y el dispositivo de E / S. La CPU solo está involucrada al principio y al final de la transferencia y se interrumpe solo después de que se haya transferido todo el bloque.

El acceso directo a la memoria necesita un hardware especial llamado controlador DMA (DMAC) que administra las transferencias de datos y arbitra el acceso al bus del sistema. Los controladores están programados con punteros de origen y destino (dónde leer / escribir los datos), contadores para rastrear el número de bytes transferidos y configuraciones, que incluyen E / S y tipos de memoria, interrupciones y estados para los ciclos de la CPU.

El sistema operativo utiliza el hardware DMA de la siguiente manera:

Paso Descripción
1 El controlador de dispositivo recibe instrucciones para transferir datos del disco a una dirección de búfer X.
2 Luego, el controlador del dispositivo indica al controlador de disco que transfiera datos al búfer.
3 El controlador de disco inicia la transferencia DMA.
4 El controlador de disco envía cada byte al controlador DMA.
5 El controlador DMA transfiere bytes al búfer, aumenta la dirección de memoria, disminuye el contador C hasta que C se vuelve cero.
6 Cuando C se vuelve cero, DMA interrumpe la CPU para señalar la finalización de la transferencia.

Sondeo vs E / S de interrupciones

Una computadora debe tener una forma de detectar la llegada de cualquier tipo de entrada. Hay dos formas en que esto puede suceder, conocidas comopolling y interrupts. Ambas técnicas permiten al procesador lidiar con eventos que pueden ocurrir en cualquier momento y que no están relacionados con el proceso que se está ejecutando actualmente.

Sondeo de E / S

El sondeo es la forma más sencilla de que un dispositivo de E / S se comunique con el procesador. El proceso de verificar periódicamente el estado del dispositivo para ver si es el momento de la siguiente operación de E / S se denomina sondeo. El dispositivo de E / S simplemente coloca la información en un registro de estado y el procesador debe venir y obtener la información.

La mayoría de las veces, los dispositivos no requerirán atención y, cuando lo haga, tendrá que esperar hasta que el programa de sondeo los interrogue. Este es un método ineficiente y gran parte del tiempo de los procesadores se pierde en encuestas innecesarias.

Compare este método con un maestro que pregunta continuamente a todos los estudiantes de una clase, uno tras otro, si necesitan ayuda. Obviamente, el método más eficaz sería que el alumno informara al profesor cuando necesite ayuda.

Interrumpe la E / S

Un esquema alternativo para tratar con E / S es el método impulsado por interrupciones. Una interrupción es una señal al microprocesador desde un dispositivo que requiere atención.

Un controlador de dispositivo coloca una señal de interrupción en el bus cuando necesita la atención de la CPU cuando la CPU recibe una interrupción. Guarda su estado actual e invoca el manejador de interrupciones apropiado usando el vector de interrupciones (direcciones de rutinas del sistema operativo para manejar varios eventos). Una vez resuelto el dispositivo de interrupción, la CPU continúa con su tarea original como si nunca hubiera sido interrumpida.

El software de E / S a menudo se organiza en las siguientes capas:

  • User Level Libraries- Esto proporciona una interfaz simple para el programa de usuario para realizar entradas y salidas. Por ejemplo,stdio es una biblioteca proporcionada por los lenguajes de programación C y C ++.

  • Kernel Level Modules - Esto proporciona un controlador de dispositivo para interactuar con el controlador de dispositivo y los módulos de E / S independientes del dispositivo utilizados por los controladores de dispositivo.

  • Hardware - Esta capa incluye hardware real y controlador de hardware que interactúa con los controladores de dispositivo y da vida al hardware.

Un concepto clave en el diseño de software de E / S es que debe ser independiente del dispositivo, donde debería ser posible escribir programas que puedan acceder a cualquier dispositivo de E / S sin tener que especificar el dispositivo por adelantado. Por ejemplo, un programa que lee un archivo como entrada debería poder leer un archivo en un disquete, en un disco duro o en un CD-ROM, sin tener que modificar el programa para cada dispositivo diferente.

Controladores de dispositivo

Los controladores de dispositivo son módulos de software que se pueden conectar a un sistema operativo para manejar un dispositivo en particular. El sistema operativo toma la ayuda de los controladores de dispositivos para manejar todos los dispositivos de E / S. Los controladores de dispositivo encapsulan el código dependiente del dispositivo e implementan una interfaz estándar de tal manera que el código contiene lecturas / escrituras de registro específicas del dispositivo. El controlador del dispositivo, generalmente lo escribe el fabricante del dispositivo y se entrega junto con el dispositivo en un CD-ROM.

Un controlador de dispositivo realiza los siguientes trabajos:

  • Para aceptar la solicitud del software independiente del dispositivo anterior.
  • Interactuar con el controlador del dispositivo para tomar y dar E / S y realizar el manejo de errores requerido
  • Asegurarse de que la solicitud se ejecute correctamente

La forma en que un controlador de dispositivo maneja una solicitud es la siguiente: Supongamos que llega una solicitud para leer un bloque N. Si el controlador está inactivo en el momento en que llega una solicitud, comienza a ejecutar la solicitud inmediatamente. De lo contrario, si el controlador ya está ocupado con alguna otra solicitud, coloca la nueva solicitud en la cola de solicitudes pendientes.

Controladores de interrupciones

Un manejador de interrupciones, también conocido como rutina de servicio de interrupciones o ISR, es una pieza de software o más específicamente una función de devolución de llamada en un sistema operativo o más específicamente en un controlador de dispositivo, cuya ejecución se desencadena por la recepción de una interrupción.

Cuando ocurre la interrupción, el procedimiento de interrupción hace lo que tiene que hacer para manejar la interrupción, actualiza las estructuras de datos y despierta el proceso que estaba esperando que ocurriera una interrupción.

El mecanismo de interrupción acepta una dirección, un número que selecciona una rutina / función específica de manejo de interrupciones de un conjunto pequeño. En la mayoría de las arquitecturas, esta dirección es un desplazamiento almacenado en una tabla llamada tabla de vectores de interrupción. Este vector contiene las direcciones de memoria de los manejadores de interrupciones especializados.

Software de E / S independiente del dispositivo

La función básica del software independiente del dispositivo es realizar las funciones de E / S que son comunes a todos los dispositivos y proporcionar una interfaz uniforme al software a nivel de usuario. Aunque es difícil escribir software completamente independiente del dispositivo, podemos escribir algunos módulos que son comunes entre todos los dispositivos. A continuación se muestra una lista de funciones del software de E / S independiente del dispositivo:

  • Interfaz uniforme para controladores de dispositivos
  • Nomenclatura de dispositivos: nombres nemotécnicos asignados a números de dispositivo principales y secundarios
  • Protección del dispositivo
  • Proporcionar un tamaño de bloque independiente del dispositivo
  • Almacenamiento en búfer porque los datos que provienen de un dispositivo no se pueden almacenar en el destino final.
  • Asignación de almacenamiento en dispositivos de bloque
  • Asignación y liberación de dispositivos dedicados
  • Error al reportar

Software de E / S de espacio de usuario

Estas son las bibliotecas que brindan una interfaz más rica y simplificada para acceder a la funcionalidad del kernel o, en última instancia, interactuar con los controladores de dispositivo. La mayor parte del software de E / S a nivel de usuario consta de procedimientos de biblioteca, con algunas excepciones, como el sistema de spooling, que es una forma de tratar los dispositivos de E / S dedicados en un sistema de multiprogramación.

Las bibliotecas de E / S (por ejemplo, stdio) están en el espacio del usuario para proporcionar una interfaz al SW de E / S independiente del dispositivo residente del SO. Por ejemplo, putchar (), getchar (), printf () y scanf () son ejemplos de biblioteca de E / S de nivel de usuario stdio disponible en la programación C.

Subsistema de E / S del kernel

El subsistema de E / S del núcleo es responsable de proporcionar muchos servicios relacionados con E / S. A continuación se muestran algunos de los servicios prestados.

  • Scheduling- El núcleo programa un conjunto de solicitudes de E / S para determinar un buen orden en el que ejecutarlas. Cuando una aplicación emite una llamada de bloqueo del sistema de E / S, la solicitud se coloca en la cola de ese dispositivo. El programador de E / S del núcleo reorganiza el orden de la cola para mejorar la eficiencia general del sistema y el tiempo de respuesta promedio experimentado por las aplicaciones.

  • Buffering - El subsistema de E / S del kernel mantiene un área de memoria conocida como bufferque almacena datos mientras se transfieren entre dos dispositivos o entre un dispositivo con una operación de aplicación. El almacenamiento en búfer se realiza para hacer frente a un desajuste de velocidad entre el productor y el consumidor de un flujo de datos o para adaptarse entre dispositivos que tienen diferentes tamaños de transferencia de datos.

  • Caching- El núcleo mantiene la memoria caché, que es una región de memoria rápida que contiene copias de datos. El acceso a la copia en caché es más eficiente que el acceso al original.

  • Spooling and Device Reservation- Un spool es un búfer que contiene la salida de un dispositivo, como una impresora, que no puede aceptar flujos de datos intercalados. El sistema de cola copia los archivos de cola en cola en la impresora uno por uno. En algunos sistemas operativos, la puesta en cola es administrada por un proceso demonio del sistema. En otros sistemas operativos, es manejado por un hilo del kernel.

  • Error Handling - Un sistema operativo que utiliza memoria protegida puede proteger contra muchos tipos de errores de hardware y aplicaciones.

Archivo

Un archivo es una colección con nombre de información relacionada que se registra en un almacenamiento secundario, como discos magnéticos, cintas magnéticas y discos ópticos. En general, un archivo es una secuencia de bits, bytes, líneas o registros cuyo significado es definido por el creador y usuario del archivo.

Estructura de archivo

Una estructura de archivo debe estar de acuerdo con un formato requerido que el sistema operativo pueda comprender.

  • Un archivo tiene una determinada estructura definida según su tipo.

  • Un archivo de texto es una secuencia de caracteres organizada en líneas.

  • Un archivo fuente es una secuencia de procedimientos y funciones.

  • Un archivo de objeto es una secuencia de bytes organizada en bloques que son comprensibles para la máquina.

  • Cuando el sistema operativo define diferentes estructuras de archivos, también contiene el código para admitir estas estructuras de archivos. Unix, MS-DOS admite un número mínimo de estructura de archivos.

Tipo de archivo

El tipo de archivo se refiere a la capacidad del sistema operativo para distinguir diferentes tipos de archivos, como archivos de texto, archivos de origen y archivos binarios, etc. Muchos sistemas operativos admiten muchos tipos de archivos. Los sistemas operativos como MS-DOS y UNIX tienen los siguientes tipos de archivos:

Archivos ordinarios

  • Estos son los archivos que contienen información del usuario.
  • Estos pueden tener texto, bases de datos o programas ejecutables.
  • El usuario puede aplicar varias operaciones en archivos como agregar, modificar, eliminar o incluso eliminar todo el archivo.

Archivos de directorio

  • Estos archivos contienen una lista de nombres de archivos y otra información relacionada con estos archivos.

Archivos especiales

  • Estos archivos también se conocen como archivos de dispositivo.
  • Estos archivos representan dispositivos físicos como discos, terminales, impresoras, redes, unidades de cinta, etc.

Estos archivos son de dos tipos:

  • Character special files - Los datos se manejan carácter a carácter como en el caso de terminales o impresoras.

  • Block special files - Los datos se manejan en bloques como en el caso de discos y cintas.

Mecanismos de acceso a archivos

El mecanismo de acceso a archivos se refiere a la forma en que se puede acceder a los registros de un archivo. Hay varias formas de acceder a los archivos:

  • Acceso secuencial
  • Acceso directo / aleatorio
  • Acceso secuencial indexado

Acceso secuencial

Un acceso secuencial es aquel en el que se accede a los registros en alguna secuencia, es decir, la información en el archivo se procesa en orden, un registro tras otro. Este método de acceso es el más primitivo. Ejemplo: los compiladores suelen acceder a los archivos de esta forma.

Acceso directo / aleatorio

  • La organización de archivos de acceso aleatorio proporciona acceso directo a los registros.

  • Cada registro tiene su propia dirección en el archivo con la ayuda de la cual se puede acceder directamente para leer o escribir.

  • Los registros no necesitan estar en ninguna secuencia dentro del archivo y no necesitan estar en ubicaciones adyacentes en el medio de almacenamiento.

Acceso secuencial indexado

  • Este mecanismo está construido sobre la base del acceso secuencial.
  • Se crea un índice para cada archivo que contiene punteros a varios bloques.
  • El índice se busca secuencialmente y su puntero se usa para acceder al archivo directamente.

Asignación de espacio

A los archivos se les asignan espacios en disco por sistema operativo. Los sistemas operativos se implementan siguiendo tres formas principales de asignar espacio en disco a los archivos.

  • Asignación contigua
  • Asignación vinculada
  • Asignación indexada

Asignación contigua

  • Cada archivo ocupa un espacio de direcciones contiguo en el disco.
  • La dirección de disco asignada está en orden lineal.
  • Fácil de implementar.
  • La fragmentación externa es un problema importante con este tipo de técnica de asignación.

Asignación vinculada

  • Cada archivo lleva una lista de enlaces a bloques de disco.
  • El directorio contiene un enlace / puntero al primer bloque de un archivo.
  • Sin fragmentación externa
  • Utilizado eficazmente en archivos de acceso secuencial.
  • Ineficiente en caso de archivo de acceso directo.

Asignación indexada

  • Brinda soluciones a problemas de asignación contigua y vinculada.
  • Se crea un bloque de índice que tiene todos los punteros a los archivos.
  • Cada archivo tiene su propio bloque de índice que almacena las direcciones del espacio en disco ocupado por el archivo.
  • El directorio contiene las direcciones de los bloques de índice de archivos.

La seguridad se refiere a proporcionar un sistema de protección a los recursos del sistema informático, como la CPU, la memoria, el disco, los programas de software y, lo más importante, los datos / información almacenados en el sistema informático. Si un programa informático es ejecutado por un usuario no autorizado, puede causar daños graves a la computadora o los datos almacenados en ella. Por lo tanto, un sistema informático debe estar protegido contra el acceso no autorizado, el acceso malintencionado a la memoria del sistema, virus, gusanos, etc. Vamos a discutir los siguientes temas en este capítulo.

  • Authentication
  • Contraseñas de un solo uso
  • Amenazas del programa
  • Amenazas del sistema
  • Clasificaciones de seguridad informática

Autenticación

La autenticación se refiere a identificar a cada usuario del sistema y asociar los programas en ejecución con esos usuarios. Es responsabilidad del sistema operativo crear un sistema de protección que garantice que un usuario que está ejecutando un programa en particular sea auténtico. Los sistemas operativos generalmente identifican / autentican a los usuarios utilizando las siguientes tres formas:

  • Username / Password - El usuario debe ingresar un nombre de usuario registrado y una contraseña con el sistema operativo para iniciar sesión en el sistema.

  • User card/key - El usuario debe perforar la tarjeta en la ranura de la tarjeta o ingresar la clave generada por el generador de claves en la opción proporcionada por el sistema operativo para iniciar sesión en el sistema.

  • User attribute - fingerprint/ eye retina pattern/ signature - El usuario debe pasar su atributo a través del dispositivo de entrada designado utilizado por el sistema operativo para iniciar sesión en el sistema.

Contraseñas de un solo uso

Las contraseñas de un solo uso brindan seguridad adicional junto con la autenticación normal. En el sistema de contraseña de un solo uso, se requiere una contraseña única cada vez que el usuario intenta iniciar sesión en el sistema. Una vez que se utiliza una contraseña de un solo uso, no se puede volver a utilizar. Las contraseñas de un solo uso se implementan de varias maneras.

  • Random numbers- Los usuarios reciben tarjetas con números impresos junto con los alfabetos correspondientes. El sistema solicita números correspondientes a unos pocos alfabetos elegidos al azar.

  • Secret key- Al usuario se le proporciona un dispositivo de hardware que puede crear una identificación secreta mapeada con la identificación del usuario. El sistema solicita dicha identificación secreta que se generará cada vez antes de iniciar sesión.

  • Network password - Algunas aplicaciones comerciales envían contraseñas de un solo uso al usuario en el móvil / correo electrónico registrado, que se debe ingresar antes de iniciar sesión.

Amenazas del programa

Los procesos y el kernel del sistema operativo realizan la tarea designada según las instrucciones. Si un programa de usuario hizo que estos procesos realizaran tareas maliciosas, entonces se conoce comoProgram Threats. Uno de los ejemplos comunes de amenaza de programa es un programa instalado en una computadora que puede almacenar y enviar credenciales de usuario a través de la red a algún pirata informático. A continuación se muestra la lista de algunas amenazas conocidas del programa.

  • Trojan Horse - Dicho programa captura las credenciales de inicio de sesión del usuario y las almacena para enviárselas a usuarios malintencionados que luego pueden iniciar sesión en la computadora y acceder a los recursos del sistema.

  • Trap Door - Si un programa que está diseñado para funcionar como se requiere, tiene un agujero de seguridad en su código y realiza una acción ilegal sin el conocimiento del usuario, entonces se le pide que tenga una trampilla.

  • Logic Bomb- La bomba lógica es una situación en la que un programa se comporta mal solo cuando se cumplen ciertas condiciones; de lo contrario, funciona como un programa genuino. Es más difícil de detectar.

  • Virus- El virus como su nombre sugiere puede replicarse en el sistema informático. Son muy peligrosos y pueden modificar / eliminar archivos de usuario, bloquear sistemas. Generalmente, un virus es un pequeño código incrustado en un programa. A medida que el usuario accede al programa, el virus comienza a incrustarse en otros archivos / programas y puede inutilizar el sistema para el usuario.

Amenazas del sistema

Las amenazas del sistema se refieren al uso indebido de los servicios del sistema y las conexiones de red para causar problemas al usuario. Las amenazas del sistema se pueden utilizar para lanzar amenazas de programas en una red completa llamada ataque de programa. Las amenazas del sistema crean un entorno tal que los recursos del sistema operativo / archivos de usuario se utilizan incorrectamente. A continuación se muestra la lista de algunas amenazas conocidas del sistema.

  • Worm- El gusano es un proceso que puede ahogar el rendimiento de un sistema utilizando los recursos del sistema a niveles extremos. Un proceso de Worm genera sus múltiples copias donde cada copia usa recursos del sistema, evita que todos los demás procesos obtengan los recursos necesarios. Los procesos de gusanos pueden incluso cerrar una red completa.

  • Port Scanning - El escaneo de puertos es un mecanismo o medio por el cual un pirata informático puede detectar vulnerabilidades del sistema para realizar un ataque en el sistema.

  • Denial of Service- Los ataques de denegación de servicio normalmente impiden al usuario hacer un uso legítimo del sistema. Por ejemplo, es posible que un usuario no pueda utilizar Internet si la denegación de servicio ataca la configuración de contenido del navegador.

Clasificaciones de seguridad informática

Según los criterios de evaluación de los sistemas informáticos de confianza del Departamento de Defensa de los EE. UU., Existen cuatro clasificaciones de seguridad en los sistemas informáticos: A, B, C y D. Se trata de especificaciones ampliamente utilizadas para determinar y modelar la seguridad de los sistemas y de las soluciones de seguridad. A continuación se muestra una breve descripción de cada clasificación.

SN Tipo de clasificación y descripción
1

Type A

Nivel más alto. Utiliza especificaciones formales de diseño y técnicas de verificación. Otorga un alto grado de garantía de la seguridad del proceso.

2

Type B

Proporciona sistema de protección obligatorio. Tener todas las propiedades de un sistema de clase C2. Adjunta una etiqueta de confidencialidad a cada objeto. Es de tres tipos.

  • B1- Mantiene la etiqueta de seguridad de cada objeto del sistema. La etiqueta se utiliza para tomar decisiones de control de acceso.

  • B2 - Extiende las etiquetas de confidencialidad a cada recurso del sistema, como objetos de almacenamiento, admite canales ocultos y auditoría de eventos.

  • B3 - Permite la creación de listas o grupos de usuarios para el control de acceso para otorgar acceso o revocar el acceso a un objeto con nombre dado.

3

Type C

Proporciona protección y responsabilidad al usuario mediante capacidades de auditoría. Es de dos tipos.

  • C1- Incorpora controles para que los usuarios puedan proteger su información privada y evitar que otros usuarios lean / borren accidentalmente sus datos. Las versiones de UNIX son en su mayoría de clase Cl.

  • C2 - Agrega un control de acceso de nivel individual a las capacidades de un sistema de nivel de Cl.

4

Type D

Nivel más bajo. Protección mínima. MS-DOS, Windows 3.1 entran en esta categoría.

Linux es una de las versiones populares del sistema operativo UNIX. Es de código abierto ya que su código fuente está disponible gratuitamente. Es de uso gratuito. Linux fue diseñado considerando la compatibilidad con UNIX. Su lista de funciones es bastante similar a la de UNIX.

Componentes del sistema Linux

El sistema operativo Linux tiene principalmente tres componentes

  • Kernel- El kernel es la parte central de Linux. Es responsable de todas las actividades principales de este sistema operativo. Consta de varios módulos e interactúa directamente con el hardware subyacente. Kernel proporciona la abstracción necesaria para ocultar detalles de hardware de bajo nivel en el sistema o los programas de aplicación.

  • System Library- Las bibliotecas del sistema son funciones o programas especiales que utilizan programas de aplicación o utilidades del sistema para acceder a las funciones del Kernel. Estas bibliotecas implementan la mayoría de las funcionalidades del sistema operativo y no requieren derechos de acceso al código del módulo del kernel.

  • System Utility - Los programas de utilidad del sistema son responsables de realizar tareas especializadas a nivel individual.

Modo kernel vs modo usuario

El código del componente del kernel se ejecuta en un modo privilegiado especial llamado kernel modecon pleno acceso a todos los recursos de la computadora. Este código representa un solo proceso, se ejecuta en un solo espacio de direcciones y no requiere ningún cambio de contexto y, por lo tanto, es muy eficiente y rápido. Kernel ejecuta cada proceso y proporciona servicios del sistema a los procesos, proporciona acceso protegido al hardware a los procesos.

El código de soporte que no es necesario para ejecutarse en modo kernel se encuentra en la biblioteca del sistema. Los programas de usuario y otros programas del sistema funcionan enUser Modeque no tiene acceso al hardware del sistema ni al código del kernel. Los programas / utilidades de usuario utilizan las bibliotecas del sistema para acceder a las funciones del núcleo y obtener las tareas de bajo nivel del sistema.

Caracteristicas basicas

A continuación se muestran algunas de las características importantes del sistema operativo Linux.

  • Portable- Portabilidad significa que el software puede funcionar en diferentes tipos de hardware de la misma manera. Los programas de aplicación y kernel de Linux admiten su instalación en cualquier tipo de plataforma de hardware.

  • Open Source- El código fuente de Linux está disponible gratuitamente y es un proyecto de desarrollo basado en la comunidad. Varios equipos trabajan en colaboración para mejorar la capacidad del sistema operativo Linux y está en continua evolución.

  • Multi-User - Linux es un sistema multiusuario, lo que significa que varios usuarios pueden acceder a los recursos del sistema como memoria / ram / programas de aplicación al mismo tiempo.

  • Multiprogramming - Linux es un sistema de multiprogramación que significa que se pueden ejecutar múltiples aplicaciones al mismo tiempo.

  • Hierarchical File System - Linux proporciona una estructura de archivos estándar en la que se organizan los archivos del sistema / archivos de usuario.

  • Shell- Linux proporciona un programa intérprete especial que se puede utilizar para ejecutar comandos del sistema operativo. Se puede utilizar para realizar varios tipos de operaciones, llamar a programas de aplicación. etc.

  • Security - Linux proporciona seguridad al usuario mediante funciones de autenticación como protección con contraseña / acceso controlado a archivos específicos / cifrado de datos.

Arquitectura

La siguiente ilustración muestra la arquitectura de un sistema Linux:

La arquitectura de un sistema Linux consta de las siguientes capas:

  • Hardware layer - El hardware consta de todos los dispositivos periféricos (RAM / HDD / CPU, etc.).

  • Kernel - Es el componente central del sistema operativo, interactúa directamente con el hardware, proporciona servicios de bajo nivel a los componentes de la capa superior.

  • Shell- Una interfaz para el kernel, que oculta la complejidad de las funciones del kernel a los usuarios. El shell toma comandos del usuario y ejecuta las funciones del kernel.

  • Utilities - Programas de utilidad que brindan al usuario la mayoría de las funcionalidades de un sistema operativo.