Resumen Primer Parcial Sistemas
Resumen Primer Parcial Sistemas
Resumen Primer Parcial Sistemas
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
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.
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.
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.
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.
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 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.
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.
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.
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).
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.
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.
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.
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.
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:
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.
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.
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.