Resumen Primer Parcial Sistemas

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 31

Parcial 1: Arquitectura y Sistemas Operativos

Clase 1

Software
Es el conjunto integral de programas de cómputo, procedimientos, reglas,
documentación y datos interrelacionados que desempeñan un papel
fundamental en el funcionamiento y la operación de un sistema de
computación.
Es el soporte lógico de un sistema informático, que comprende el conjunto de
componentes lógicos necesarios que hacen posible la realización de tareas
específicas, en contraposición a los componentes físicos que son llamados
hardware.
La interacción entre el software y el hardware hace operativo un ordenador (u
otro dispositivo), es decir, el software envía instrucciones que el hardware
ejecuta, haciendo posible su funcionamiento.

Clasificación y tipos

Según su Propósito o Función:


Software de Base o de Sistema: tiene como objetivo principal liberar al usuario
y al programador de los detalles técnicos específicos del hardware de una
computadora. Esto significa que aísla al usuario y al programador de la
complejidad interna de la memoria, discos, puertos, dispositivos de
comunicación, impresoras, pantallas y teclados, entre otros componentes.
El software de sistema le proporciona al usuario y al programador interfaces de
alto nivel adecuadas, controladores, herramientas y utilidades de apoyo que
permiten el mantenimiento del sistema global.
Incluye:
 Sistemas Operativos.
 Controladores de dispositivos: facilitan la comunicación entre el
hardware y el sistema operativo (ej. Controlador de tarjeta gráfica
NVIDIA).
 Herramientas de Diagnóstico: ayudan a identificar y resolver problemas
del sistema.
 Herramientas de Corrección y Optimización: mejoran el rendimiento y
solucionan errores.
 Servidores: proporcionan servicios a otros dispositivos o programas en
una red.
 Utilidades BIOS: configuran y gestionan el firmware de la placa base de
una computadora.

Software de Aplicación: es aquel que permite a los usuarios llevar a cabo una o
varias tareas específicas, en cualquier campo de actividad susceptible de ser
automatizado o asistido, con especial énfasis en los negocios. Ejemplos son los
programas de procesamiento de texto, hojas de cálculo, navegadores web y
videojuegos.
Incluye, entre otros:
 Aplicaciones para Control de sistemas y automatización industrial.
 Aplicaciones informáticas.
 Software educativo (ej. Duolingo).
 Software empresarial.
 Bases de datos.
 Telecomunicaciones (por ej. Internet y toda su estructura lógica).
 Software médico.
 Software de Entretenimiento (ej. videojuegos).
 Software de cálculo numérico y simbólico.
 Software de diseño asistido (CAD), como Photoshop.
 Software de control numérico (CAM).
 Software de Comunicación: Facilita la comunicación en línea. Ejemplo:
WhatsApp para mensajería instantánea.

Software de Programación: es el conjunto de herramientas que permiten al


programador desarrollar programas de informática, usando diferentes
alternativas y lenguajes de programación, de una manera práctica. Incluyen:
 Editores de texto.
 Compiladores.
 Intérpretes.
 Enlazadores.
 Depuradores.
 Entornos de desarrollo integrados (IDE): agrupan las anteriores
herramientas, usualmente en un entorno visual, de forma tal que el
programador no necesite introducir múltiples comandos para compilar,
interpretar, depurar, etc. Habitualmente cuentan con una avanzada
interfaz gráfica de usuario (GUI).
Programa Residente: Un "Programa Residente" se refiere a un software que se
mantiene en la memoria de la computadora en todo momento, lo que explica
por qué se los llama "residentes en memoria". Mientras utilizas cualquier
aplicación en tu ordenador, esta utiliza una parte de la memoria, pero cuando
cierras la aplicación, la memoria se libera y está disponible para otros
propósitos. Sin embargo, los programas residentes permanecen en la memoria
constantemente, incluso cuando no los estás utilizando en ese momento, lo
que significa que ocupan una porción permanente de la memoria de tu
ordenador.
¿Para qué son útiles los programas residentes en memoria?
Cada vez que enciendes tu ordenador, los programas residentes en memoria,
como el software antivirus, se cargan junto con el sistema operativo. Esto
asegura que estos programas estén disponibles desde el primer momento en
que enciendes tu ordenador. En el caso del software antivirus, esto garantiza
que tu sistema esté protegido desde el momento en que arranca, sin que
necesites abrir manualmente el programa antivirus cada vez que enciendes la
computadora.
Clase 2

Sistemas Operativos
Un Sistema Operativo es un software o programa esencial que desempeña el
papel de administrador del hardware de una computadora. Este componente
fundamental proporciona las bases necesarias para el funcionamiento de
programas de aplicación y actúa como un intermediario crucial entre el usuario
y el hardware del sistema.
Los Sistemas Operativos pueden variar en su diseño y enfoque. Algunos se
diseñan para ser simples y prácticos, mientras que otros se centran en la
eficiencia, y algunos logran combinar ambas características.

Función
Un sistema informático puede dividirse en: el Hardware, el Sistema Operativo,
los Programas de Aplicación y los Usuarios.
El sistema operativo controla y coordina el uso del hardware entre los diversos
programas de aplicación por parte de los distintos usuarios. Sus principales
funciones incluyen la gestión de recursos, control de procesos, administración
de memoria, gestión de archivos, seguridad, y facilitar la interacción entre el
usuario y la máquina. En resumen, el SO permite que la computadora funcione
de manera efectiva y que los usuarios realicen tareas en ella.

Punto de vista del usuario


El Sistema Operativo se diseña para que sea de fácil uso, prestando cierta
atención al rendimiento y ninguna a la utilización de recursos (el modo que se
comparten los recursos de hardware y software), todo para un solo usuario.
Además, el SO proporciona una interfaz para que los usuarios interactúen con
la computadora. Esto puede ser una pantalla de inicio o un escritorio en una
computadora de escritorio, o una pantalla táctil en un dispositivo móvil. Todo
esto hace que la computadora sea fácil de usar.
En entornos donde varios usuarios acceden a un sistema central compartido, el
diseño del sistema operativo se enfoca en asegurar que los recursos se utilicen
de manera eficiente para satisfacer las necesidades de todos los usuarios
concurrentes.
Claro, aquí tienes una redacción más clara:
Desde la perspectiva del usuario, el sistema operativo es el software más
directamente vinculado al hardware de la computadora. Actúa como un
"asignador de recursos", controlando cómo se utiliza el tiempo de la CPU, la
memoria, el espacio de almacenamiento de archivos y los dispositivos de
entrada/salida, entre otros recursos. En esencia, el sistema operativo
desempeña el papel de administrador de estos recursos.
Además, se puede ver al sistema operativo como un "programa de control" que
supervisa y gestiona la ejecución de los programas de usuario. Su función es
prevenir errores y mejorar la eficiencia en el uso de la computadora, incluyendo
la interacción con dispositivos de entrada/salida.

Definición
No existe una definición universalmente aceptada sobre qué forma parte de un
sistema operativo.
Una definición más común es que un sistema operativo es aquel programa que
se ejecuta continuamente en la computadora (denominado Kernel), siendo todo
lo demás programas del sistema y programas de aplicación.

Clasificación
 Sistemas de un solo Procesador: estos sistemas están optimizados para
administrar tareas y recursos en una sola unidad central de
procesamiento (CPU). Este procesador principal se encarga de realizar
una amplia variedad de tareas, incluyendo la ejecución de programas y
procesos de usuario.
Es importante destacar que, aunque un dispositivo pueda tener otros
procesadores de propósito especial, como coprocesadores gráficos o
aceleradores de hardware, estos no se consideran como "procesadores
adicionales" en el contexto de la administración general del sistema
operativo. Solo se tiene en cuenta el procesador central que realiza la
mayoría de las operaciones.

 Sistemas Multiprocesador (sistemas paralelos): disponen de dos o más


procesadores que se comunican entre sí, compartiendo el bus de la
computadora, el reloj, la memoria y los dispositivos periféricos.

Existen varias ventajas en el uso de sistemas multiprocesador:

Mayor Rendimiento: Debido a que múltiples procesadores pueden


realizar tareas simultáneamente, se logra un mayor rendimiento en
comparación con un sistema de un solo procesador.
Economía de Escala: La utilización de varios procesadores puede ser
más económica que la implementación de un solo procesador
extremadamente rápido para lograr el mismo nivel de rendimiento.

Mayor Fiabilidad: Los sistemas multiprocesador a menudo son más


confiables porque si un procesador falla, los otros pueden continuar
funcionando, lo que proporciona redundancia y capacidad de
recuperación.

Degradación Suave: En caso de falla de un procesador, el sistema


puede continuar funcionando a un rendimiento reducido en lugar de
experimentar una falla catastrófica.

Sistemas Tolerantes a Fallos: Algunos sistemas multiprocesador, como


el antiguo sistema Tandem (ahora HP NonStop), están diseñados
específicamente para ser tolerantes a fallos, lo que significa que pueden
mantener la operación incluso si se produce una falla.

Existen dos enfoques principales en los sistemas multiprocesador:

Multiprocesamiento Asimétrico: En este enfoque, hay una relación de


maestro-esclavo entre los procesadores, lo que significa que uno de
ellos tiene un papel principal y controla el funcionamiento de los demás.

Multiprocesamiento Simétrico (SMP): En este caso, todos los


procesadores tienen un estatus y funciones similares, y trabajan juntos
en la ejecución de tareas.

 Sistemas en Cluster: Los sistemas en cluster son configuraciones que


utilizan múltiples unidades de procesamiento (CPU) y se distinguen de
los sistemas multiprocesador en que están compuestos por dos o más
sistemas individuales que están interconectados. Estas computadoras
en cluster comparten su almacenamiento y están conectadas a través de
una red local (LAN).
Los sistemas en cluster tienen como objetivo proporcionar un servicio
con alta disponibilidad, loo que significa que continúan funcionando
incluso si uno o más sistemas dentro del cluster experimentan fallas.

Hay dos tipos principales de clusters:


Cluster Asimétrico: En este tipo, una máquina se encuentra en espera
en caliente, lista para tomar el control si la máquina principal que ejecuta
las aplicaciones falla. Cuando ocurre una falla, la máquina en espera
asume el rol de servidor activo.
Cluster Simétrico: En un cluster simétrico, dos o más sistemas ejecutan
aplicaciones y se monitorean mutuamente. Si uno de los sistemas falla,
otro puede continuar ejecutando las aplicaciones sin interrupciones.

Componentes
Gestión de Procesos: El sistema operativo es como el director de una orquesta,
coordinando la ejecución de programas o procesos en la computadora. Realiza
varias tareas importantes:
 Creación y eliminación de procesos: Cuando abres una aplicación, el
sistema operativo crea un proceso para ejecutarla y lo elimina cuando ya
no es necesario.
 Suspensión y reanudación de procesos: Puede suspender
temporalmente un proceso para liberar recursos y luego reanudarlo más
tarde.
 Sincronización entre procesos: Asegura que los procesos se ejecuten en
el orden correcto y evita problemas como la competencia por recursos
compartidos.
 Comunicación entre procesos: Facilita la transferencia de datos y la
comunicación entre procesos cuando es necesario.
 Tratamiento de interbloqueos: Evita situaciones en las que dos o más
procesos quedan atrapados esperándose mutuamente, lo que podría
paralizar la computadora.

Gestión de Memoria: El sistema operativo gestiona la memoria RAM, que es


como la mesa de trabajo de la computadora. Realiza tareas como:
 Seguimiento del uso de la memoria: Controla qué partes de la memoria
están siendo utilizadas por diferentes programas y procesos.
 Asignación y liberación de memoria: Asigna espacio de memoria a
programas en ejecución y lo libera cuando ya no se necesita.
 Paginación y segmentación: Divide la memoria en fragmentos
gestionables para garantizar un uso eficiente y seguro.

Gestión de Almacenamiento: Aquí, el sistema operativo administra el


almacenamiento a largo plazo, como discos duros y unidades USB:
 Gestión del sistema de archivos: Organiza y facilita el acceso a archivos
y directorios. Crea, borra y organiza archivos y directorios, y asigna
archivos a dispositivos de almacenamiento específicos.
 Gestión de almacenamiento masivo: Controla el espacio libre en los
dispositivos de almacenamiento, asigna espacio de almacenamiento a
archivos y planifica cómo se utiliza el disco.
 Almacenamiento en Caché: Similar a tener un bloc de notas cerca
mientras trabajas en una tarea, el almacenamiento en caché es como
una memoria temporal que mejora el rendimiento al guardar datos
frecuentemente utilizados en un lugar de acceso rápido.
 Sistemas de E/S (Entrada/Salida): Cuando interactúas con la
computadora, como al escribir en un teclado o ver una película, el
sistema operativo coordina todo:
- Gestión de memoria: Administra el almacenamiento temporal de
datos en búfer y la gestión de caché para agilizar la lectura y
escritura de datos.
- Interfaz de controladores de dispositivo: Permite que los programas
se comuniquen con hardware específico, como tarjetas gráficas o
impresoras.
- Controladores de dispositivos: Son programas que permiten que la
computadora interactúe con hardware específico, como tarjetas de
red o dispositivos USB.

Protección y Seguridad: En un entorno donde varios usuarios comparten una


computadora, la protección y seguridad son vitales:
 Protección: Controla quién puede acceder a qué recursos del sistema y
evita que los usuarios interfieran entre sí.
 Seguridad: Protege el sistema contra amenazas como virus, malware y
accesos no autorizados. Incluye medidas como contraseñas, cifrado y
cortafuegos.

Virus
Un virus informático es una aplicación o código malintencionado que se emplea
para ejecutar actividades destructivas en un dispositivo o red local. La actividad
malintencionada de este código puede dañar el sistema local de archivos, robar
datos, interrumpir servicios, descargar más malware o cualquier otra acción
que esté codificada en el programa. Muchos virus simulan ser programas
legítimos para convencer a los usuarios de que los ejecuten en su dispositivo,
insertando así la carga útil del virus.
Todos los virus tienen una carga útil, que es la que ejecuta la acción. Un hacker
puede codificar cualquier tipo de virus, incluyendo bromas sencillas que no
causan daño alguno. Si bien algunos virus tienen cargas útiles inofensivas, la
mayoría de ellos causan daños al sistema y a sus datos.
Existen nueve clases principales de virus, algunos de los cuales podrían estar
repletos de otro malware para incrementar las oportunidades de infección y de
daño. Ellos son:
- Virus de sector de arranque
- Virus de acción directa
- Virus de script
- Virus polimórfico
- Secuestrador del navegador
- Virus que infecta archivos
- Virus residentes
- Virus multipartitos
- Virus de macros

Sistemas Operativos – Sistemas Distribuidos


Un sistema operativo distribuido es un conjunto de computadoras físicamente
separadas y posiblemente heterogéneas que están interconectadas en una red.
Su objetivo principal es proporcionar a los usuarios acceso a diversos recursos
mantenidos por el sistema, todo ello a través de una conexión en red.
La red en este contexto se refiere a una vía de comunicación entre dos o más
sistemas. La funcionalidad de un sistema distribuido puede variar según la red
que se utilice. Las redes pueden diferir en el protocolo que emplean, la
distancia entre los nodos y el medio de transporte utilizado. TCP/IP es el
protocolo más comúnmente utilizado en estos sistemas, aunque existen
muchos otros.
En términos de la distancia entre sus nodos, existen diferentes tipos de redes:
 LAN (Red de Área Local): Conecta dispositivos dentro de la misma
habitación, planta o edificio. Es común en entornos empresariales y
domésticos.
 WAN (Red de Área Extendida): Conecta dispositivos en diferentes
edificios, ciudades o incluso países. Las empresas multinacionales
suelen utilizar redes WAN para conectar sus sucursales en todo el
mundo.
 MAN (Red de Área Metropolitana): Cubre áreas metropolitanas,
como una ciudad o una región urbana.
Mediante un sistema operativo de red distribuida, es posible lograr la
compartición de archivos y establecer un esquema de comunicación entre
procesos que se ejecutan en diferentes computadoras. Estos sistemas
permiten a múltiples usuarios y sistemas trabajar juntos de manera coordinada,
compartiendo recursos y datos de manera eficiente a través de una red
interconectada.
Sistemas de Propósito General
Sistemas Embebidos en Tiempo Real
Estos sistemas operativos se encuentran en una amplia gama de dispositivos,
desde automóviles hasta robots de fábrica, microondas y lavarropas. Por lo
general, están diseñados para tareas muy específicas y, en su mayoría, son
sistemas primitivos con funcionalidades limitadas. A menudo, carecen de una
interfaz de usuario o tienen una muy básica.
Algunos de estos sistemas son computadoras de propósito general que
ejecutan sistemas operativos como Unix o Windows. Otros son sistemas
hardware con un sistema operativo embebido específico. También existen
dispositivos hardware con circuitos integrados dedicados, sin ningún sistema
operativo visible.
Estos sistemas casi siempre utilizan sistemas operativos en tiempo real y se
utilizan como controladores en aplicaciones especializadas, como
experimentos científicos, imágenes médicas, control industrial, sistemas de
visualización, inyección de gasolina en motores de automóviles, controladoras
de electrodomésticos, armamentos y más. Estos sistemas operativos en tiempo
real tienen restricciones fijas y bien definidas, a diferencia de los sistemas de
tiempo compartido o de procesamiento por lotes.

Sistemas Multimedia
Una tendencia reciente en los sistemas operativos es la incorporación de datos
multimedia, que incluyen archivos de audio, video y archivos convencionales.
Estos datos multimedia deben entregarse cumpliendo restricciones de tiempo
específicas, como mantener una tasa de cuadros de 30 por segundo (fps).
Ejemplos de sistemas multimedia incluyen archivos de audio MP3, películas en
DVD y más. Estos sistemas no se limitan únicamente a las PC de escritorio,
sino que también se encuentran en dispositivos más pequeños como PDA
(Asistente Digital Personal) y teléfonos móviles.

Sistemas de Mano
Estos sistemas incluyen dispositivos como PDA, Palm, Pocket PC y teléfonos
móviles o tablets. Utilizan sistemas operativos embebidos diseñados
específicamente para su propósito. Los desarrolladores de aplicaciones y
sistemas para estos dispositivos enfrentan varios desafíos debido a las
limitaciones de tamaño, memoria y procesador.
() Un sistema operativo embebido, también conocido como sistema operativo
embebido o sistema embebido, es un tipo de sistema operativo diseñado
específicamente para ser parte integral de un dispositivo o sistema electrónico.
Está "embebido" directamente en el hardware del dispositivo y es responsable
de controlar y gestionar las funciones y operaciones de ese dispositivo en
particular. La característica distintiva de un sistema operativo embebido es que
está altamente optimizado y adaptado para las necesidades y limitaciones
específicas del dispositivo en el que se encuentra.
Además, la gestión de la energía es crucial, ya que un procesador más rápido
en un dispositivo móvil requiere baterías más potentes, lo que afecta el tamaño
y la portabilidad del dispositivo. La E/S, como la comunicación con teclados,
también puede ser un desafío, al igual que las pantallas más pequeñas para
mostrar contenido. Estos dispositivos suelen utilizar tecnologías inalámbricas
para la conectividad.
A pesar de estos desafíos, los sistemas de mano ofrecen portabilidad y
practicidad, lo que los convierte en herramientas útiles para una variedad de
aplicaciones y tareas.

En resumen:
¡Por supuesto! Aquí tienes una versión aún más resumida:
**Sistemas Embebidos en Tiempo Real**:
- Controlan dispositivos especiales como lavadoras o robots.
- Realizan tareas específicas y a menudo trabajan con un reloj.
**Sistemas Multimedia**:
- Manejan música y videos en dispositivos como computadoras y teléfonos.
- Se aseguran de que se reproduzcan de manera suave y en el momento
adecuado.
**Sistemas de Mano**:
- Son los cerebros de teléfonos y tabletas.
- Optimizan el rendimiento y la duración de la batería en dispositivos
pequeños.

Entornos Informáticos
Sistema informático tradicional
 En este entorno, es común encontrar una configuración de oficina con
múltiples PCs conectadas en red.
 Los servidores proporcionan servicios como el almacenamiento de
archivos compartidos y la impresión.
 En el pasado, el acceso remoto a estos sistemas era complicado, y las
empresas a menudo utilizaban terminales conectadas a mainframes
centralizados (Un mainframe centralizado se refiere a un tipo de
computadora de gran escala y alto rendimiento que actúa como el
núcleo central de procesamiento de datos en una organización o
empresa).
 Con el avance de las tecnologías web, se ha facilitado el acceso remoto
y la interconexión. Los portales web ofrecen acceso a servidores
internos, permitiendo una experiencia basada en web para los usuarios.
 Las computadoras hogareñas, con mayor acceso a Internet y recursos,
pueden incluso servir páginas web, y algunas están equipadas con
cortafuegos para mayor seguridad.
Este panorama refleja cómo la evolución tecnológica ha influido en la forma en
que los sistemas operativos gestionan la comunicación y el acceso a la
información, desde el entorno tradicional de oficina hasta la informática basada
en web y las capacidades avanzadas de las computadoras hogareñas.

Sistema cliente-servidor
Con el avance de la tecnología, los PCs se han vuelto más rápidos, poderosos
y de fácil acceso/están al alcance económico de la mayoría de las personas, lo
que ha llevado a un cambio en la arquitectura de los sistemas informáticos. En
este enfoque, muchos sistemas actuales operan como servidores para
satisfacer las solicitudes de sistemas clientes.
Estos servidores se clasifican en 2 categorías principales:
 Sistema servidor de cálculo: Proporciona una interfaz a la que un cliente
puede enviar una solicitud para realizar una acción o acceder a datos. El
servidor responde ejecutando la acción solicitada y luego devuelve los
resultados al cliente.
Ejemplo: un servidor que ejecuta un sistema de gestión de bases de
datos, permitiendo que múltiples usuarios realicen consultas y
actualizaciones de datos de manera concurrente.

 Sistema servidor de archivos: Ofrece una interfaz a través de la cual los


clientes pueden crear, modificar, leer o eliminar archivos almacenados
en el servidor. Un ejemplo típico sería un servidor web que suministra
archivos web a los usuarios.
Este enfoque permite compartir y administrar recursos de archivo de
manera centralizada, lo que facilita la colaboración y el acceso a datos
compartidos.
En resumen, la arquitectura cliente-servidor ha transformado la forma en que
los sistemas informáticos gestionan las solicitudes y los recursos. Al permitir
que los sistemas actúen como servidores para satisfacer las necesidades de
los sistemas clientes, se ha logrado una mayor eficiencia y colaboración en una
amplia gama de aplicaciones, desde bases de datos hasta servicios web.
Sistemas entre iguales (P2P)
Los sistemas entre iguales, conocidos como P2P (peer to peer, de igual a
igual), se caracterizan por la igualdad de los nodos que los componen.
En un entorno P2P, no hay una distinción clara entre roles de cliente y servidor;
todos los nodos se consideran iguales y pueden actuar tanto como clientes
como servidores según sea necesario.
Una ventaja clave de los sistemas P2P en comparación con los sistemas
cliente-servidor tradicionales es que no existe un servidor central como un
cuello de botella. En cambio, varios nodos distribuidos pueden proporcionar
servicios, lo que mejora la escalabilidad y la redundancia.
Para unirse a una red P2P, un nodo debe inicialmente conectarse a la red P2P,
después de lo cual puede comenzar a proporcionar servicios y solicitar
servicios de otros nodos en la misma red.
Ejemplos populares de sistemas P2P incluyen aplicaciones como Ares y
uTorrent, que permiten compartir archivos y recursos directamente entre
usuarios sin depender de un servidor central.

En resumen, los sistemas P2P son una forma descentralizada de compartir


recursos y servicios, donde todos los nodos son iguales y pueden desempeñar
roles tanto de cliente como de servidor. Esto ofrece ventajas en términos de
escalabilidad y redundancia, lo que los hace populares en aplicaciones de
intercambio de archivos y otras colaborativas.

Sistema basado en la web


La informática basada en la Web ha generado un creciente interés en los
sistemas de interconexión a través de redes. La implementación de sistemas
basados en la Web ha dado lugar a la aparición de nuevas categorías de
dispositivos y mecanismos de equilibrio de carga. Estos mecanismos
distribuyen las conexiones de red entre una serie de servidores similares.
La creciente influencia de la Web ha llevado a un aumento en la complejidad de
muchos dispositivos tecnológicos, ya que los usuarios demandan
funcionalidades avanzadas y experiencias en línea cada vez más sofisticadas.
En resumen, la informática basada en la Web ha revolucionado la forma en que
interactuamos con la tecnología, impulsando el desarrollo de dispositivos más
avanzados y sistemas de red que pueden satisfacer las demandas de una
experiencia en línea cada vez más compleja.

Kernel
Componentes de un SO:
- Kernel (Núcleo).
- Gestor de Procesos
- Gestor de Memoria
- Gestor de Almacenamiento
- Gestor de Dispositivos de Entrada/Salida (E/S)
- Interfaz de Usuario: Proporciona una interfaz a través de la cual los
usuarios interactúan con el sistema operativo y ejecutan
aplicaciones. Puede ser una interfaz de línea de comandos (CLI) o
una interfaz gráfica de usuario (GUI). Shell (Intérprete de comandos).
- Utilidades del Sistema: Son programas y herramientas que ayudan
en la administración y el mantenimiento del sistema. Esto incluye
utilidades de diagnóstico, herramientas de seguridad y utilidades de
administración.
- Gestor de Red (en sistemas en red). Administra la conectividad de
red, incluyendo la configuración de redes, el enrutamiento y la
seguridad en sistemas que forman parte de una red.
- Controlador de Dispositivos: Son programas que permiten que el
sistema operativo se comunique con hardware específico, como
tarjetas de video, impresoras, teclados y otros dispositivos
periféricos.
- Sistema de Archivos: Define cómo se organizan y almacenan los
datos en el sistema. Cada sistema operativo puede utilizar diferentes
sistemas de archivos, como NTFS en Windows o ext4 en sistemas
Linux.
- Seguridad y Control de Acceso
- Gestión de Energía (en dispositivos móviles): Administra el uso de
energía en dispositivos móviles para prolongar la duración de la
batería y garantizar un uso eficiente de la energía.

El kernel es el componente central de un sistema operativo y actúa como la


interfaz entre el software y el hardware. Es un programa que controla todos los
accesos al procesador y la memoria del sistema, siendo responsable de los
controladores de hardware más críticos. Su papel fundamental es gestionar los
recursos de hardware de la manera más eficiente posible.
Independientemente de si se trata de un sistema Linux, macOS, Windows, un
smartphone, un servidor, una virtualización como KVM o cualquier otro tipo de
computadora, el kernel desempeña un papel esencial. Su estructura
generalmente consta de varias capas:

1. Interfaz con el Hardware: La capa más baja del kernel interactúa


directamente con el hardware, incluyendo procesadores, memoria y
dispositivos. Aquí se encuentran controladores esenciales como los de red o
PCI Express.

2. Gestión de Memoria: Esta capa se encarga de distribuir tanto la memoria


RAM como la memoria virtual del sistema.

3. Gestión de Procesos: El kernel incluye un gestor de procesos (scheduler)


que administra el tiempo de ejecución de los procesos, permitiendo el
multitasking.

4. Gestión de Dispositivos: La capa de gestión de dispositivos facilita la


comunicación y la interacción fluida entre el software y los dispositivos de
hardware, garantizando su correcto funcionamiento y configuración en el
sistema operativo.

5. Sistema de Archivos: La capa más alta del kernel se relaciona con el sistema
de archivos y asigna espacio en la memoria principal (Caché, RAM, etc.) o
secundaria (disco duro, USB, etc.) a los procesos.

Secuencia del proceso


La secuencia de procesamiento que sigue el kernel comienza desde el
hardware del sistema y se extiende hasta el software de aplicación. Su labor
concluye en la Interfaz Gráfica del Usuario (GUI), lo que significa que el kernel
es la base sobre la cual se ejecutan las aplicaciones y se comunica con el
usuario. Se puede pensar en el kernel como el núcleo central, mientras que el
shell (la interfaz de usuario) lo rodea, estableciendo la comunicación con el
usuario.

Kernel para un programa informático


En un sistema informático, un programa puede enviar lo que se conocen como
"System Calls" o llamadas al sistema al kernel. Un ejemplo común de esto es
cuando se desea escribir un archivo en el disco. Estas llamadas al sistema son
solicitudes realizadas por el programa para llevar a cabo tareas específicas que
requieren acceso a recursos del sistema, como la CPU o el sistema de
archivos.

El kernel, que es el núcleo del sistema operativo, actúa como un intermediario


entre el programa y la CPU. Traduce estas llamadas al sistema al lenguaje de
máquina que la CPU puede entender y las ejecuta. El kernel, por tanto, controla
y gestiona todas las instrucciones que se envían a la CPU en nombre de los
programas en ejecución.
Es importante destacar que este proceso de comunicación entre programas y
el kernel ocurre en segundo plano, de manera transparente para el usuario. El
usuario generalmente no es consciente de las complejas operaciones que
realiza el kernel para garantizar el funcionamiento adecuado de las
aplicaciones y el sistema en su conjunto.

Tareas del Kernel


El kernel de un sistema operativo desempeña un conjunto vital de tareas que
son esenciales para el funcionamiento eficiente del sistema. Estas tareas
incluyen:
1. Procesamiento Multitarea: El kernel es responsable de gestionar múltiples
tareas de manera concurrente, permitiendo el procesamiento paralelo de
diferentes actividades. Esto habilita el multitasking, lo que significa que puede
ejecutar varios programas al mismo tiempo, alternando entre ellos de manera
rápida y eficiente. Esto asegura que el sistema sea receptivo y que los usuarios
puedan realizar varias acciones a la vez.

2. Carga y Protección del Kernel: Cuando se enciende un ordenador, una de


las primeras acciones que ocurren es la carga del kernel en la memoria. Esta
operación se lleva a cabo en una zona protegida conocida como gestor de
arranque, lo que garantiza que el kernel como programa no pueda ser
modificado ni eliminado de manera accidental o maliciosa.

3. Inicialización de Dispositivos: El kernel se encarga de encender y gestionar


los dispositivos conectados al sistema, asegurando que estén listos para su
uso. Esto implica la detección y configuración de hardware, como unidades de
disco, tarjetas de red y periféricos.
4. Gestión de Procesos: Inicia y controla los procesos en el sistema, asignando
recursos como tiempo de CPU y memoria a cada proceso de manera equitativa
y eficiente. También es responsable de iniciar y detener otros procesos del
sistema, como servicios y demonios.

5. Administración de Servicios del Sistema: Se encarga de cargar y gestionar


los servicios del sistema, que son programas esenciales para el funcionamiento
del sistema operativo. Estos servicios incluyen el sistema de archivos, la
administración de redes y otros componentes críticos.

6. Administración de Espacio de Almacenamiento: El kernel supervisa la


asignación de espacio de almacenamiento en la memoria principal (caché,
RAM, etc.) y en dispositivos de almacenamiento secundario (como discos
duros y unidades USB) para los procesos en ejecución. Esto asegura que los
datos y programas se almacenen y recuperen de manera eficiente.

Funcionamiento del Kernel


La capa más baja del kernel está cerca de los componentes del hardware, lo
que le permite comunicarse directamente con el procesador y el
almacenamiento. A lo largo de las cinco capas del kernel, sus funciones varían,
desde la gestión de procesos hasta el control de dispositivos. En contraste, la
capa superior no tiene acceso directo a los componentes del hardware, pero
facilita la comunicación con el software.
Los programas de aplicación se ejecutan en el sistema de manera
independiente al kernel y solo acceden a sus funciones a través de él. Sin el
kernel, la comunicación entre los programas y el hardware sería imposible.
En cuanto a su funcionamiento, los kernels con capacidades multitarea pueden
ejecutar varios procesos simultáneamente. Aunque una CPU puede gestionar
un solo proceso a la vez, a menos que sea un sistema multinúcleo, el
"scheduler" se encarga de realizar cambios rápidos entre procesos para dar la
sensación de multitarea.

Las cuatro funciones principales del kernel pueden derivarse de sus


componentes:
 Gestión de Almacenamiento: Controla la cantidad de memoria
utilizada y su ubicación.
 Gestión de Procesos: Determina qué procesos pueden utilizar la
CPU, cuándo y por cuánto tiempo.
 Controlador de Dispositivos: Establece la comunicación entre el
hardware y los procesos.
 Llamadas al Sistema y Seguridad: Maneja las solicitudes de servicio
de los procesos.

Las funciones del kernel son invisibles para los usuarios y operan en su propio
mundo dentro del sistema. La interacción entre ambos mundos se realiza a
través de una interfaz de llamadas al sistema, conocida como SCI.
Para comprender cómo funciona el kernel del sistema operativo, se puede
pensar en el ordenador dividido en tres niveles:
1. Hardware: La base del sistema, que incluye la memoria, el procesador y
los dispositivos de entrada/salida. La CPU realiza la lectura y escritura
de código al igual que los cálculos que requiere la memoria.
2. Kernel: El núcleo del sistema operativo, que comunica las instrucciones
a la CPU.
3. Procesos de Usuario: Todos los procesos en ejecución que gestiona el
kernel, permitiendo la comunicación entre procesos y servidores (IPC).

Existen dos modos para el código de un sistema: el modo kernel y el modo


usuario. El código en modo kernel tiene acceso completo al hardware, mientras
que el código en modo usuario tiene acceso restringido a través de SCI. Si se
produce un error en el modo de usuario, el kernel interviene para reparar los
posibles daños. Sin embargo, un fallo en el kernel puede llevar al colapso de
todo el sistema, por lo que se toman precauciones de seguridad para evitarlo.

Tipos de Kernel
Los sistemas operativos se pueden clasificar en tres grupos según sus
características en relación con el kernel:
Kernel Monolítico: En este enfoque, un único kernel grande se encarga de
todas las tareas. Es responsable de gestionar la memoria, los procesos, la
comunicación entre procesos y proporciona funciones de soporte de drivers y
hardware. Ejemplos de sistemas operativos que utilizan un kernel monolítico
son Linux, OS X y Windows.

Microkernel: El microkernel se ha diseñado intencionalmente para ser pequeño,


de modo que, en caso de fallo, no paralice todo el sistema operativo. Sin
embargo, para realizar las mismas funciones que un kernel grande, se divide
en varios módulos. Hasta el momento, solo un componente, llamado Mach, se
utiliza en OS X como ejemplo de aplicación de microkernel. No existen
sistemas operativos completos basados únicamente en microkernels.
Kernel Híbrido: Los sistemas que utilizan un kernel híbrido combinan
características de los kernels monolíticos y microkernels. En estos casos, el
kernel grande se vuelve más compacto y modular, permitiendo que otras partes
del kernel se carguen dinámicamente. Linux y OS X, por ejemplo, implementan
en cierta medida un kernel híbrido.

Además, es importante destacar que algunos kernels, como el de Linux, son de


código abierto, lo que significa que su código fuente está disponible para su
inspección y modificación por parte de la comunidad de desarrolladores. Apple
ha liberado como código abierto los tipos de kernel utilizados en sus sistemas
operativos, y Microsoft incluso utiliza un kernel de Linux en el Windows
Subsystem for Linux.
Procesos
Un proceso es un programa en ejecución en un sistema informático. Puede
entenderse como una tarea o trabajo que la computadora está llevando a cabo
en un momento dado. Los procesos son la forma en que los programas toman
vida y realizan tareas específicas en una máquina. Son gestionados por el
sistema operativo y pueden ser considerados sinónimos de "tarea" o "job".
Un proceso consta de varios componentes esenciales que le permiten
funcionar adecuadamente:
1. Contador de Programa: El contador de programa es un componente crucial
en un proceso. Es un registro que apunta a la próxima instrucción que debe
ejecutar el proceso. A medida que el proceso avanza, este contador se
actualiza para apuntar a la siguiente instrucción en el programa.

2. Stack (Pila): La pila es una región de memoria utilizada para gestionar las
llamadas a funciones y el almacenamiento temporal de datos. Cuando se llama
a una función, se almacenan en la pila los valores de sus variables locales y el
contador de programa actual. Esto permite que el proceso retome su ejecución
desde el punto donde se quedó después de que la función haya terminado.

3. Sección de Datos: La sección de datos es donde se almacenan los datos


necesarios para que el proceso realice su trabajo. Esto puede incluir variables,
arreglos, estructuras de datos y otros elementos necesarios para la ejecución
del programa. La sección de datos es vital para que el proceso mantenga su
estado y realice cálculos y operaciones.

Además de estos componentes, un proceso también puede incluir otros


recursos asignados, como espacio de memoria, archivos abiertos, registros de
CPU y otros elementos necesarios para su ejecución.
Los sistemas operativos gestionan múltiples procesos en un sistema
informático, programando su ejecución de manera que se pueda lograr una
asignación eficiente de los recursos de la CPU y la memoria. La administración
de procesos es esencial para garantizar que los programas se ejecuten de
manera ordenada y que la computadora funcione de manera eficiente,
permitiendo que varios programas se ejecuten simultáneamente sin interferirse
mutuamente.
Diferencias entre un programa y un proceso
Programa:
 Es estático, lo que significa que es una entidad inmutable una vez que
se ha creado.
 No posee un Contador de Programa asociado, ya que no está en
ejecución.
 Su existencia abarca desde el momento en que se crea o edita hasta
que se borra o se reemplaza por una nueva versión.
 Por ejemplo, un archivo de programa en disco, como un archivo
ejecutable (.exe) o un script, se considera un programa.

Proceso:
 Es dinámico, está en constante cambio y puede interactuar activamente
con el sistema.
 Su ciclo de vida comienza cuando se inicia o “dispara” y finaliza cuando
completa su ejecución.
 Los procesos representan instancias activas de programas que se están
ejecutando en un momento determinado en la computadora.

Estado de los procesos – modelo de 5 estados


Un proceso experimenta cambios de estado a lo largo de su ciclo de vida,
reflejando su evolución en el entorno de ejecución del sistema operativo. Aquí
te presento los principales estados por los que pasa un proceso:

1. Nuevo: En esta etapa, el proceso se crea en el sistema, generalmente como


respuesta a una solicitud del usuario o de otro proceso. En este punto, el
proceso aún no ha comenzado su ejecución. El sistema operativo crea un
Bloque de Control de Procesos (BCP) para el proceso, asigna una
identificación única y realiza configuraciones iniciales, como la reserva de
memoria y la carga del programa desde el almacenamiento secundario.
() Estado En Espera o Suspendido: Si un proceso solicita una operación de E/S
y debe esperar a que se complete, se coloca en el estado En Espera (también
llamado Suspendido). En este estado, el proceso está esperando que ocurra
algún evento, como la finalización de la E/S. Una vez que el evento esperado
sucede, el proceso vuelve al estado Listo.
2. Espera: Cuando un proceso necesita esperar la ocurrencia de algún evento
o condición antes de continuar su ejecución, se coloca en el estado de espera.
Puede estar esperando una entrada de datos, una señal de otro proceso o
cualquier otra acción que no pueda realizarse de inmediato. Una vez que el
evento esperado sucede, el proceso vuelve al estado Listo.

3. Listo: En este estado, el proceso está preparado para ejecutarse, pero está
esperando su turno para obtener acceso a la CPU. En sistemas
multiprocesador o multitarea, varios procesos listos pueden competir por el
tiempo de CPU disponible. Cuando se le asigna tiempo de CPU y comienza a
ejecutarse, pasa al estado En Ejecución.
4. Corriendo (Ejecutando): En este estado, el proceso está activo y sus
instrucciones se están ejecutando en la CPU. Durante este período, el sistema
operativo asigna recursos de procesador al proceso para que realice sus
tareas.
5. Terminado: Cuando un proceso ha completado todas sus tareas y no tiene
más trabajo por hacer, se encuentra en el estado terminado. En este punto, el
proceso ha finalizado su ejecución y se está preparando para ser eliminado del
sistema. Esto puede deberse a la finalización normal del proceso, un aborto
debido a un problema detectado por el proceso o el sistema operativo, o
cuando un proceso padre decide que el proceso hijo ya no es necesario y
solicita su eliminación.

En un sistema operativo, excepto en el estado de Ejecución, es común que


haya varios procesos en cualquiera de los otros estados. Para llevar un
seguimiento de estos procesos, la mayoría de los sistemas operativos utilizan
estructuras de datos, como colas, para cada estado. Por ejemplo, el estado
Listo suele mantenerse en una estructura llamada "cola lista", y puede haber
múltiples colas vinculadas si es necesario. El estado de Ejecución
generalmente contiene un solo proceso, a menos que el sistema tenga
múltiples unidades de procesamiento, en cuyo caso cada unidad de
procesamiento puede tener su propia lista de procesos en ejecución.
En el caso del estado En Espera, puede haber varias colas dependiendo de las
operaciones que se estén esperando. Algunos sistemas siguen una política de
"Primero en llegar, primero en ser atendido" (FCFS, por sus siglas en inglés),
mientras que otros utilizan algoritmos de planificación más avanzados para
determinar qué proceso se atiende a continuación. Estas estructuras y políticas
de planificación permiten al sistema operativo gestionar eficientemente la
ejecución de múltiples procesos y optimizar los recursos disponibles.
DIBUJAR DIAGRAMA DE PROCESOS ACÁ

Bloque de Control de Procesos (PCB)


El Bloque de Control de Procesos (PCB, por sus siglas en inglés, Process
Control Block) es una estructura de datos esencial que almacena información
crítica relacionada con cada proceso en un sistema operativo. Esta información
es utilizada por el sistema operativo para administrar y controlar
adecuadamente la ejecución de los procesos. Componentes clave que se
encuentran dentro de un PCB:

1. Estado de Proceso: Indica el estado actual del proceso, como si está en


ejecución, en espera, listo para ejecutar, suspendido, etc. El sistema operativo
utiliza esta información para tomar decisiones sobre la asignación de recursos
y la planificación de la CPU.
2. Contador de Programa: Es un registro que almacena la dirección de
memoria de la próxima instrucción que se ejecutará en el proceso. Cuando el
proceso se reanuda después de un cambio de contexto, el contador de
programa se utiliza para continuar la ejecución desde donde se detuvo.
3. Registros de CPU: Los registros de la CPU contienen valores importantes
que representan el estado actual del proceso, como valores de registros
generales, registros de punto flotante, registros de condición, etc. Estos
registros se almacenan y restauran en el PCB durante los cambios de contexto.
4. Información de planificación de CPU: Incluye detalles sobre la prioridad del
proceso, el tiempo de CPU utilizado hasta el momento y otros datos relevantes
para la planificación de la CPU. Esto permite al sistema operativo tomar
decisiones sobre qué proceso debe ejecutarse a continuación.
5. Información de administración de memoria: Contiene datos sobre la
ubicación de la memoria asignada al proceso, como las direcciones de inicio y
fin de su espacio de direcciones, así como información de protección de
memoria.
6. Información contable: Esta sección puede incluir estadísticas sobre el
rendimiento del proceso, como el tiempo total de CPU utilizado, el número de
operaciones de E/S realizadas y otros datos que son útiles para el monitoreo y
la gestión del sistema.
7. Información de estado E/S: Algunos procesos pueden estar esperando que
se complete una operación de E/S, como lectura o escritura en disco. Esta
información indica el estado actual de las operaciones de E/S asociadas al
proceso.

El PCB es fundamental para la administración y coordinación de procesos en


un sistema operativo. Cada vez que se produce un cambio de contexto (cuando
el sistema operativo decide cambiar de un proceso a otro), la información
contenida en el PCB se utiliza para guardar el estado del proceso que se está
deteniendo y cargar el estado del proceso que se está iniciando. Esto permite
una conmutación suave y eficiente entre procesos en un sistema multitarea.

Colas de Planificación de Procesos


Las Colas de Planificación de Procesos son un componente esencial en la
gestión de procesos de un sistema operativo. Estas colas se utilizan para
organizar y administrar la ejecución de los procesos de manera eficiente. Aquí
tienes una descripción de las principales colas de planificación de procesos:
Cola de Job (o Tareas): Esta cola contiene todos los procesos que existen en el
sistema operativo. Incluso aquellos que aún no se han cargado en la memoria
principal. Los procesos en esta cola pueden estar en diferentes estados, como
pendientes, listos o en espera. La cola de trabajo es una representación
completa de todos los trabajos que el sistema operativo debe gestionar.

Cola de Listos: La cola de procesos listos es un conjunto de todos los procesos


que se encuentran en la memoria principal y están listos para ejecutarse en la
CPU. Estos procesos están en espera de su turno para obtener tiempo de CPU
y ejecutarse. La planificación de la CPU se basa en esta cola, ya que el
sistema operativo selecciona procesos de esta cola para ejecutarlos en la CPU
según el algoritmo de planificación utilizado.

Colas de Dispositivos: Estas colas están asociadas a dispositivos de


entrada/salida (E/S). Cada dispositivo de E/S tiene su propia cola de procesos
que están esperando realizar operaciones de E/S en ese dispositivo en
particular. Por ejemplo, puede haber una cola de procesos esperando leer o
escribir en un disco duro y otra cola de procesos esperando imprimir en una
impresora. La gestión de estas colas garantiza que las operaciones de E/S se
realicen de manera eficiente y justa entre los procesos.

Migración de Procesos entre las Colas: En algunos sistemas operativos, los


procesos pueden moverse entre las diferentes colas de planificación según
cambie su estado. Por ejemplo, un proceso que estaba en la cola de listos y
que ha iniciado una operación de E/S podría moverse temporalmente a la cola
de dispositivos relacionada con esa E/S. Una vez que la operación de E/S se
completa, el proceso regresa a la cola de listos para su ejecución en la CPU.
Esta migración de procesos entre colas garantiza una gestión dinámica y
eficiente de los recursos del sistema.

Planificadores de Procesos:
Los Planificadores de Procesos son componentes clave en la gestión de la
ejecución de procesos en un sistema operativo. Estos planificadores
desempeñan roles específicos en función de su alcance y objetivo.
Planificadores de procesos más comunes:

1. Planificador de Largo Plazo (o Planificador de Jobs): Este planificador es


responsable de seleccionar qué procesos recién creados o cargados en el
sistema deben ser colocados en la cola de procesos listos. Su objetivo es
controlar el grado de multiprogramación, es decir, cuántos procesos pueden
estar en memoria principal en un momento dado. El planificador de largo plazo
toma decisiones sobre qué procesos deben estar disponibles para su ejecución
en el futuro y se invoca con menos frecuencia, generalmente en intervalos de
segundos o minutos.

2. Planificador de Corto Plazo (o Planificador de CPU): El planificador de corto


plazo es el encargado de seleccionar qué proceso de la cola de procesos listos
debe ser ejecutado de inmediato y colocado en la unidad central de
procesamiento (CPU). Su función es garantizar una asignación eficiente de la
CPU a los procesos para lograr una ejecución rápida y justa. Este planificador
se invoca muy frecuentemente, en intervalos de milisegundos, y debe ser
extremadamente rápido para tomar decisiones instantáneas sobre qué proceso
se ejecutará a continuación.

3. Planificador de Mediano Plazo: En algunos sistemas operativos, se utiliza un


planificador de mediano plazo para administrar procesos en estado de espera
que requieren una migración temporal fuera de la memoria principal debido a
limitaciones de recursos. Por ejemplo, si un proceso está realizando una
operación de E/S prolongada, podría moverse temporalmente a un estado de
espera fuera de la memoria principal y, posteriormente, regresar cuando esté
listo para ejecutarse nuevamente. El planificador de mediano plazo se encarga
de esta migración y gestión de recursos.

Los procesos en un sistema pueden clasificarse en dos categorías principales


según su comportamiento:

- Procesos Limitados por E/S: Estos procesos pasan la mayor parte de su


tiempo realizando operaciones de entrada/salida en lugar de computaciones
intensivas. Tienen ráfagas (bursts) de CPU muy cortas y, por lo tanto, pasan
más tiempo esperando E/S que utilizando la CPU.

- Procesos Limitados por CPU: Estos procesos pasan la mayor parte de su


tiempo realizando cálculos y procesamiento intensivo en la CPU en lugar de
operaciones de E/S. Tienen ráfagas (bursts) de CPU largas y requieren más
tiempo de CPU para completar sus tareas.

Cuando un proceso abandona el estado de ejecución, ingresa inmediatamente


al estado de Listo. Esto puede ocurrir por diversas razones, como la espera de
un evento. Para decidir cuándo se ejecutará un proceso en estado Listo en
relación con otros procesos en ese mismo estado, interviene un componente
del sistema operativo conocido como el Planificador a corto plazo. Existen
varias estrategias para tomar esta decisión.
Planificación FCFS (First Come First Served): Este método, utilizado
históricamente en muchos sistemas operativos, emplea un enfoque FIFO
(primero en llegar, primero en ser atendido) con una cola estándar. Es conocido
como FCFS. Sus ventajas incluyen su facilidad de implementación y
comprensión, además de ser justo al no favorecer a un proceso en detrimento
de otro. A menudo, se mejora al permitir que un proceso en ejecución ceda el
control al siguiente proceso en estado Listo mediante una llamada al sistema
(Multitarea Cooperativa).

Planificación por Prioridad: En situaciones en las que algunos procesos son


más importantes que otros, se utiliza un algoritmo basado en prioridades. Cada
proceso se prioriza y, por lo general, se otorga prioridad más alta al proceso
con el número de identificación más bajo. Sin embargo, este enfoque puede
llevar a problemas de inanición, donde procesos de prioridad alta postergan a
los de prioridad baja. Para abordar este problema, se utiliza un mecanismo
llamado envejecimiento, donde los procesos que se posponen muchas veces
ven aumentada su prioridad con el tiempo, permitiéndoles eventualmente
ejecutarse.

Planificación garantizada: El FCFS, aunque justo, puede no asignar tiempo de


CPU de manera equitativa si un proceso realiza muchas operaciones de E/S, lo
que puede dar lugar a un uso desigual del tiempo de CPU. Para abordar esto,
el sistema operativo sigue el tiempo total de CPU utilizado por cada proceso y
calcula la proporción real de tiempo de CPU utilizado respecto al tiempo
autorizado. Luego, elige ejecutar el proceso con la proporción más pequeña, lo
que se conoce como planificación por participación equitativa.

Planificación SRTF (Shortest Remaining Time First): Este algoritmo, también


conocido como "primero con el tiempo restante más corto", selecciona el
proceso que se ejecutará durante el menor tiempo posible. Su objetivo es
minimizar los tiempos de entrega para todos los procesos. Una variante de este
enfoque se basa en la cantidad de tiempo que cada proceso necesitará antes
de realizar una operación de E/S, proporcionando prioridad a los procesos
interactivos. Se utiliza una función de decaimiento exponencial para pronosticar
el comportamiento futuro del proceso en función de su historial de rendimiento,
eligiendo aquellos que consumen menos tiempo de CPU antes de realizar una
E/S. Este método es una variante de la planificación por prioridad.
Razon de Respuesta más alta (HRRN): El algoritmo HRRN (Highest Response
Ratio Next) es similar a la planificación del menor trabajo siguiente, pero con
una diferencia fundamental: la prioridad de un proceso se basa en su tiempo de
ejecución estimado y la cantidad de tiempo que ha pasado en espera. En este
enfoque, un proceso recibe una prioridad más alta cuanto más tiempo haya
esperado. La fórmula para calcular la prioridad se expresa como:

Prioridad = (Tiempo en espera + Tiempo de ejecución estimado) / Tiempo de


ejecución estimado
Este algoritmo tiene como objetivo reducir la probabilidad de inanición, ya que
los procesos que han estado esperando durante mucho tiempo obtienen una
prioridad más alta y, por lo tanto, tienen una mayor posibilidad de ser
ejecutados pronto. Esto asegura que incluso los procesos que han estado en
espera durante períodos prolongados tengan la oportunidad de ejecutarse y no
sean completamente excluidos en favor de procesos más cortos en espera.

Cambio de Contexto
El cambio de contexto es un proceso esencial en la gestión de la CPU en un
sistema operativo. Cuando la CPU cambia de la ejecución de un proceso a
otro, es necesario realizar un cambio de contexto para garantizar una transición
suave y eficiente. Aquí se detallan algunos aspectos clave relacionados con el
cambio de contexto:
- Durante el cambio de contexto, el sistema operativo debe guardar el estado
completo del proceso que estaba en ejecución (conocido como el "viejo
proceso") en ese momento. Este estado incluye información vital, como los
valores de los registros de la CPU y otros datos relacionados con la ejecución
del proceso.
- Simultáneamente, se debe cargar el estado del nuevo proceso al que se va a
dar acceso a la CPU.
- El contexto de un proceso, que comprende su estado completo, se encuentra
representado en una estructura de datos conocida como Bloque de Control de
Procesos (PCB). El PCB almacena información esencial sobre el proceso, lo
que facilita su gestión y cambio de contexto.
- Es importante tener en cuenta que el cambio de contexto conlleva un cierto
grado de sobrecarga. Durante este proceso, el sistema operativo no realiza
trabajo útil en términos de ejecución de procesos reales. En cambio, se dedica
a realizar las operaciones necesarias para guardar y cargar el contexto de
manera precisa.
- El tiempo que lleva realizar un cambio de contexto puede variar según el
soporte de hardware y la eficiencia de las operaciones involucradas. Los
sistemas operativos están diseñados para minimizar esta sobrecarga y hacer
que el cambio de contexto sea lo más rápido y eficiente posible.

En resumen, el cambio de contexto es una operación crítica que permite a un


sistema operativo gestionar múltiples procesos de manera efectiva,
garantizando una transición fluida entre ellos. La optimización de este proceso
es fundamental para maximizar el rendimiento del sistema en su conjunto.

Parte 2: Procesos
En la mayoría de los SO, un programa se guarda en un archivo en
almacenamiento secundario (disco). Luego, el SO recibe instrucciones de un
usuario o de otro proceso para ejecutar un programa. El SO trae ese programa
a almacenamiento primario (memoria) y comienza a ejecutarlo. Esta entidad en
ejecución se denomina proceso.
En un sistema operativo, es posible ejecutar múltiples copias de un mismo
programa al mismo tiempo, lo que se conoce como procesos. Cada copia de un
programa se considera un proceso independiente. El sistema operativo debe
gestionar diversos aspectos de cada proceso, como su estado, cambios de
estado y eventos que afectan su ejecución.
Cuando un sistema ejecuta varios procesos simultáneamente, el sistema
operativo debe tomar decisiones sobre cuál proceso ejecutar a continuación.
Además, en ocasiones, un proceso puede iniciar otros procesos para realizar
tareas adicionales. Este intercambio de procesos es esencial para optimizar el
rendimiento del sistema operativo y las aplicaciones que se ejecutan en él.
Además, se ha desarrollado un mecanismo de hilos que permite que un
proceso realice múltiples tareas al mismo tiempo. Estos hilos están disponibles
en algunos lenguajes de programación de alto nivel y en APIs de hilos
comunes en varios sistemas operativos.
A medida que un proceso se ejecuta, cambia de estado y modifica varios
aspectos, como el contador de programa, registros de CPU, registros de estado
del sistema y puntero de pila. Este conjunto de cambios se conoce como el
estado del proceso. Dado que varios procesos se ejecutan en el hardware al
mismo tiempo, se busca que estos cambios de proceso sean transparentes, lo
que crea una especie de "CPU virtual" donde cada proceso puede actuar como
si fuera el único en ejecución.

Apropiación
En el contexto de la planificación de procesos, la apropiación se refiere al acto
de quitar un recurso, como la CPU, a un proceso en ejecución para asignarlo a
otro proceso de mayor prioridad. Este cambio se produce cuando un proceso
de alta prioridad ha estado esperando un recurso, como la finalización de una
operación de E/S, y su prioridad es superior a la del proceso en ejecución en
ese momento. La apropiación se basa en la idea de asignar un tiempo de
ejecución específico a cada proceso antes de cambiar a otro proceso.

Si aplicamos la apropiación al algoritmo FCFS (First Come First Served), se


convierte en el algoritmo round-robin, donde se otorga un tiempo de CPU
específico a cada proceso en cola. Si un proceso excede ese tiempo, se le
quita la CPU y se coloca al final de la cola de ejecución.

Colas Multinivel
Los sistemas operativos modernos utilizan un enfoque más avanzado llamado
"colas multinivel" en la planificación de procesos. En este método, se utilizan
múltiples colas, cada una con su propio conjunto de procesos. Cada cola puede
tener un tiempo de asignación de CPU diferente y prioridades diferentes. Los
procesos se colocan en una de estas colas según su prioridad y necesidades.
El mecanismo utilizado para compartir la CPU en las colas multinivel puede ser
de "prioridad estricta", lo que significa que las colas de prioridad superior se
atienden primero siempre que haya procesos en ellas. Otra opción es asignar
un tiempo de CPU a cada cola, lo que garantiza que incluso las colas de menor
prioridad reciban servicio y evita la inanición.
Además, algunos sistemas operativos modernos incorporan un mecanismo de
retroalimentación a las colas multinivel. Esto implica que un proceso nuevo se
coloca en una cola de alta prioridad, pero si ejecuta durante más tiempo del
permitido en esa cola sin bloquearse, se mueve a la siguiente cola de prioridad
más baja. Esto asegura un equilibrio entre procesos interactivos y procesos de
larga duración.

Planificador a largo plazo


En sistemas de computación con flujos de trabajo orientados por lotes, existe
un módulo llamado "planificador a largo plazo". Este planificador decide
cuántos procesos se ejecutarán simultáneamente y cuándo se ejecutarán.
Inicialmente, se inicia con un número mínimo de procesos. Si todos los
procesos en ejecución utilizan mucha E/S, el planificador busca procesos que
aumenten la utilización de la CPU. Esto se basa en información de contabilidad
proporcionada por los procesos.
El planificador a largo plazo puede utilizar una variedad de algoritmos de
planificación a corto plazo, como FCFS, para decidir qué procesos se
ejecutarán y cuándo. Su objetivo principal es optimizar el rendimiento del
sistema y asegurarse de que los recursos se utilicen de manera eficiente.
Afinidad con los procesadores
La afinidad con los procesadores se refiere a la preferencia o vínculo entre un
proceso y una CPU específica en sistemas con multiprocesamiento. Cuando un
proceso muestra una afinidad con una CPU, el sistema operativo intenta
programar ese proceso en la misma CPU siempre que sea posible. Esto se
hace para evitar los costos generales asociados con cambiar un proceso de
una CPU a otra, como la pérdida de memoria caché y la degradación del
rendimiento.
La afinidad con los procesadores es especialmente útil en situaciones donde
ciertos procesos se consideran más importantes que otros, como un servidor
de base de datos de alta prioridad. Un administrador de sistemas puede
configurar la afinidad para que un proceso esté vinculado a una CPU
específica, asegurando un rendimiento óptimo.

También podría gustarte