Introducción a los Sistemas Operativos


Objetivos y Funciones de un Sistema Operativo

Un sistema operativo es un programa que controla la ejecución de aplicaciones y programas, actuando como interfaz entre las aplicaciones y el hardware del computador. Sus objetivos son los siguientes:

  • Facilidad de uso: Un SO facilita el uso de una computadora.
  • Eficiencia: Permite la utilización eficiente de los recursos en la computadora.
  • Capacidad para evolucionar: Se debe construir de forma en la que este se pueda desarrollar.

Entre sus servicios, los SO ofrecen el desarrollo de programas, ejecución de programas, acceso a dispositivos E/S, acceso a ficheros, al sistema, entre otros.

El SO como interfaz (Estructura Genérica de un Sistema)

Podemos analizarlo como una capa que envuelve al hardware, formado por capas como una cebolla, en el centro se encontraría el Hardware, luego el Núcleo, el SO, y finalmente en la capa externa el Nivel de Usuario. La interfaz es para el usuario en general, administradores y desarrolladores. Este puede aparecer de varias maneras, como CLI, GUI, API.

La Evolución de los SO

La Generación 0:

Se manejaban con 0 y 1, lo que representaba una válvula, no tenían SO, solo podían hacer cálculos numéricos y la memoria se manejaba por registros. A principios de 1950 se mejoran las rutinas por la aparición de las tarjetas perforadas.

La Generación 1 y 2: Transistores:

Más memoria, pero surgía la necesidad de cargar: Rutinas, Controladores, Drivers, Impresora. Se usan los Monitores, un SO básico que incluía controladores y rutinas específicas.

La Generación 3

Primer SO lanzado por IBM que trabajaba con el punto fijo como flotante. Nació el concepto de Multiprocesamiento y las Unidades de Control, o como lo conocemos como controladores, el cual controla el flujo de datos a través del procesador y coordina actividades con las otras unidades, tiene su propio hardware específico y puede ejecutar instrucciones. Estas computadoras tienen electrónica y permiten ejecutar instrucciones. Otro concepto naciente en esta generación es la Concurrencia.

Aparecen más modelos comerciales por lo que se empezó a vender de manera masiva y se generan tres grandes familias de software:

  • Mainframe (IBM): Sistemas propios.
  • Servidores (HP, Lenovo, Dell): Unix/Linux.
  • WorkStation (Varias): Windows/Linux.

System Calls

Las llamadas al sistema permiten que un programa de usuario solicite al SO realizar tareas específicas reservadas para el mismo, se invocan de varias formas, pero generalmente como excepciones, transfiriendo el control del programa de usuario al SO, o sea pasamos del modo usuario al kernel (ez). Lo que hará el kernel es verificar y ejecutar la solicitud, luego devuelve el control al programa.

¿Cómo actúan estas llamadas? Actúan como interfaz entre el usuario y el SO y están disponibles como rutinas en lenguajes como C, aunque requerirá un ensamblador porque son de bajo nivel, cada SO tiene diferentes nombres para las llamadas.

Una API (Application Programming Interface), permite a diferentes aplicaciones comunicarse y compartir funcionalidades. Las funciones de una API generalmente invocan llamadas al sistema, facilitando la portabilidad del software entre diferentes sistemas que soportan la misma API. El sistema de soporte en tiempo de ejecución de la mayoría de los lenguajes de programación proporcionan una interfaz que actúa como enlace entre las funciones del API y las llamadas al sistema directamente, mejorando la portabilidad y la facilidad de desarrollo.

Agrupación de las llamadas al sistema

  • Control de procesos: Un programa en ejecución necesita poder interrumpir dicha ejecución de manera normal (end) o de manera anormal (abort)
  • Manipulación de archivos: Crear, eliminar, modificar, leer archivos, etc.
  • Manipulación de los dispositivos E/S: Un proceso puede necesitar un recurso o varios recursos. Si estos están disponibles entonces pueden ser concedidos, de lo contrario el proceso debe esperar a que haya suficientes recursos disponibles.(request,release,open,close,etc)
  • Mantenimiento de la Información: Llamadas para transferencia de información entre programa del usuario y el SO (date,tine,uname,free,etc.)
  • Comunicación (entre procesos): Pasaje de mensajes (Utilización del kernel) o memoria compartida (no hay utilización del kernel).

Gestión de procesos:

Proceso: entidad dinámica que se genera cuando se ejecuta un programa; programa en ejecución; unidad de trabajo en un sistema.

Un proceso necesita para llevar a cabo su tarea ciertos recursos, entre los que se incluyen tiempo de CPU, memoria, archivos y dispositivos de E/S. Estos se asignan al proceso en el momento de crearlo o mientras se está ejecutando. Además de los diversos recursos físicos y lógicos, pueden pasársele diversos datos de inicialización.

Cada sistema consta de una colección de procesos, siendo algunos procesos del sistema operativo y el resto procesos de usuario. Todos estos procesos pueden, potencialmente, ejecutarse en forma concurrente. El sistema operativo es responsable de las siguientes actividades en lo que se refiere a la gestión de procesos:

  • Crear y borrar los procesos de usuario y del sistema.
  • Suspender y reanudar los procesos.
  • Proporcionar mecanismos para la sincronización de procesos.
  • Proporcionar mecanismos para la comunicación ente procesos.
  • Programar procesos y subprocesos en las CPUs.

Gestión de memoria

El sistema operativo es responsable de las siguientes actividades en lo que se refiere a la gestión de memoria:

  • Controlar qué partes de la memoria están actualmente en uso y por parte de quién.
  • Decidir qué datos y procesos (o partes de procesos) añadir o extraer de la memoria.
  • Asignar y liberar la asignación de espacio de memoria según sea necesario.

Gestión del sistema de archivos

Un archivo es una colección de información relacionada definida por su creador. Comúnmente los archivos representan programas (tanto en formato fuente como objeto) y datos. Los archivos normalmente se organizan en directorios para hacer más fácil su uso. El sistema operativo es responsable de las siguientes actividades en lo que se refiere a la gestión de archivos

  • Creación y borrado de archivos.
  • Creación y borrado de directorios para organizar los archivos.
  • Soporte de primitivas para manipular archivos y directorios.
  • Asignación de archivos a los dispositivos de almacenamiento secundario.-

Gestión del almacenamiento masivo

Almacenamiento secundario como respaldo de la memoria principal. El sistema operativo es responsable de las siguientes actividades en lo que se refiere a la gestión de disco:

  • Gestión del espacio libre
  • Asignación del espacio de almacenamiento.
  • Planificación del disco.

Gestión de sistemas de E/S

Uno de los propósitos del sistema operativo es ocultar al usuario las peculiaridades de los dispositivos hardware específicos. En UNIX, p.e., estas se ocultan mediante el subsistema de E/S. El subsistema de E/S consta de varios componentes:

  /Un componente de gestión de memoria que incluye almacenamiento en búfer, gestión de cache y gestión de colas. /Una interfaz general para controladores de dispositivo. /Controladores para dispositivos de hardware específicos.  Solo el controlador del dispositivo conoce las peculiaridades del dispositivo especifico al que esta asignado

Procesos Podriamos definir a un proceso como una entidad dinamica generada al ejecutar un programa, seria un codigo ejecutable del programa. Ademas incluye uba actividad representada por el contador del programa y por los contenidos del registro del procesador,por lo general tambien incluye una pila de procesos (contiene datos temporales) y una seccion de datos (variables globales). El proceso puede incluir un cumulo de memoria, que es la memoria que se le asigna dinamicamente al proceso en tiempo de ejecucion.  Es un programa una proceso? Por si mismo un programa no es un proceso, sino una entidad estatica, un archivo con listas de instrucciones almacenadas en disco. Mientras que un proceso es dinamico von un contador de programa que especifica la siguiente instruccion que hay que ejecutar y un conjunto d recursos asociados Un proceso crear, ejecutar y termina


Diagrama de 5 Estados (Estado del proceso) 

Cuando se ejecuta un proceso se cambia de estado, el estado de un proceso se define segun la actividad que realiza, los estados en los que puede encontrarse son los siguientes: Nuevo: El proceso esta siendo creado. En ejecucion: Se esta ejecutando las instrucciones. En espera: El proceso esta esperando a que se produzca un suceso (como la terminacion de una operacion E/S o la recepcion de una senial). Preparado: El proceso esta en espera de que se lo asigne a un procesador. Terminado: Termina la ejecucion. 

Elementos/PCB    Se caracteriza por una seria de elementos, que se almacenan en el bloque de control del proceso

Identificador: Para distinguirlo del resto de procesos. Estado. Si el proceso está actualmente corriendo, está en el estado en ejecución. Prioridad: Nivel de prioridad relativo al resto de procesos. Contador de programa. La dirección de la siguiente instrucción del programa que se ejecutará. – Punteros a memoria. Incluye los punteros al código de programa y los datos asociados a dicho proceso, además de cualquier bloque de memoria compartido con otros procesos. Datos de contexto. Estos son datos que están presenten en los registros del procesador cuando el proceso está corriendo. Información de estado de E/S. Incluye las peticiones de E/S pendientes, dispositivos de E/S (por ejemplo, una unidad de cinta) asignados a dicho proceso, una lista de los ficheros en uso por el mismo, etc. Información de auditoría. Puede incluir la cantidad de tiempo de procesador y de tiempo de reloj utilizados, así como los límites de tiempo, registros contables, etc. Valores de registro de CPU. Se utilizan también en el cambio de contexto. Espacio de direcciones de memoria. /Lista de recursos asignados (incluyendo descriptores de archivos y sockets abiertos). Estadísticas del proceso. Datos del propietario (owner). Permisos asignados.

Planificadores Concepto, Tipos y Objetivo 

El objetivo de la planificacion de procesos es asignar procesos a ser ejecutados por el procesador a lo largo del tiempo, cumpliendo asi los objetivos del sistema tales como tiempo de respuesta, rendimiento y eficiencia del procesador. Generalmente se divide en tres funciones, las cuales sus nombres indican el tiempo en el que se ejecutan:


Planficador a largo plazo: Selecciona procesos de la cola de trabajos y los carga en memoria para su ejecuccion. Controla el grado de multiprogramacion, osea el numero de procesos en memoria. Esto se hace cuando se crea el proceso. Planificador a corto plazo: Selecciona entre los procesos que estan preparados para ser ejecutados y asigna la CPU a uno de ellos. Administra procesos en general y se ejecuta muy seguido sobre procesos cargados en memoria. Planificador a mediano plazo: Ventajoso para eliminar procesos de la memoria y reducir el grado de multiprogramacion. Luego el proceso puede volver a cargarse en memoria, continuando su ejecucion en el punto en el que se interrumpio. Denominado esquema de intercambio. El planificador de mediano plazo descarga y luego vuelve a cargar el proceso.

Aloritmos de PlanificacionFCFSPrimeramente veremos el algoritmo FCFS (Primero en llegar, Primero en servirse / o en ingles first-comefirst-served). En el momento en que un proceso pasa al estado de listo,se une a la cola de listos. Cuando el proceso actualmente en ejecucion deja de ejecutar, se selecciona para ejecutar el proceso que ha estado mas tiempo en la cola de listos. FCFS funciona mucho mejor para procesos largos que para procesos cortos.  

RR  (Round Robin), se usa para asegurar un reparto justo de la CPU entre los procesos en ejecucion. Su funcionamiento se basa en la asignacion de un intervalo de tiempo fijo, conocido como «quantum» o «cuanto», a cada proceso de ejecucion. Todos los procesos se colocan en una cola circular y se le asigna un tiempo de ejecucion en orden, de forma secuencial. Aunque el RR puede generar una sobrecarga adicional debido a los cambios frecuentes de contexto, sobre todo con procesos de larga duracion o con un quantum muy pequenio.

SFJ El algoritmo SJF (Shortest Job First), se usa para determinar procesos que se ejecutaran a continuacion en el SO, se basa en el tiempo estimado de duracion de los procesos para tomar decisiones de la planificacion

Dejar un Comentario

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