¿Qué es un Sistema Operativo?

¿Qué es un Sistema Operativo?

Es un conjunto de programas destinados a permitir la comunicación del usuario con un computador y gestionar sus recursos de manera eficiente.

Historia de los Sistemas Operativos

Primera generación (1945-1955) – Bulbos y conexiones.

Segunda generación (1955-1965) – Transistores y sistemas de procesamientos por lotes.

Tercera generación (1965-1980) – Circuitos integrados y Multiprogramación

Cuarta generación (1980-1990) – Computadoras personales.

Funciones de un Sistema Operativo



  • Gestionar los recursos del equipo ejecutando servicios para los procesos (programas)
  • Brindar una interfaz al usuario, ejecutando instrucciones (comandos).

Elementos que administran SO

  • El CPU
  • Los dispositivos de E/S
  • La memoria.
  • Las colas de procesos.
  • Administración de recursos.

Componentes del Sistema Operativo

  • Gestión de procesos.
  • Gestión de memoria.
  • Gestión de archivos y directorios.
  • Gestión de la E/S (Entrada/Salida).
  • Seguridad y protección.
  • Comunicación y sincronización entre procesos.
  • Intérprete de órdenes

Administración de tareas:

Monotarea: Si solamente puede ejecutar un proceso (aparte de los procesos del propio S.O.) en un momento dado.

Multitarea: Si es capaz de ejecutar varios procesos al mismo tiempo. Este tipo de S.O. normalmente asigna los recursos disponibles (CPU, memoria, periféricos) de forma alternada a los procesos que los solicitan.

Administración de usuarios:

Monousuario: Si sólo permite ejecutar los programas de un usuario al mismo tiempo.

Multiusuario: Si permite que varios usuarios ejecuten simultáneamente sus programas, accediendo a la vez a los recursos de la computadora.

Manejo de recursos:

Centralizado: Si permite utilizar los recursos de una sola computadora.

Distribuido: Si permite utilizar los recursos (memoria, CPU, disco, periféricos…) de más de una computadora al mismo tiempo.

Número de procesos



  • Uniproceso
  • Multiproceso
  • Simétrico
  • asimétrico

Tipos de Sistemas Operativos

  • Sistemas por lotes es el grupo de trabajo con necesidades similares y los cuales eran ejecutados en una computadora como un grupo.
  • Sistema de computadoras personal: son aquellos que se utilizan en los minicomputadores que son muchos más pequeños y económicos que los sistemas de microcomputador.
  • Sistemas paralelos: son sistemas que tienen más de un CPU en comunicación intima, los cuales comparten el bus del computador, el reloj y a veces la memoria y los dispositivos periféricos
  • Sistema distribuido: es una colección de procesadores que no comparten memoria, dispositivos periféricos,
  • Sistema de tiempo real suave: en este una tarea crítica tiene prioridad sobre las demás, reteniendo dicha prioridad basta que se complete.
  • Sistema de tiempo real: es aquel sistema donde para que las operaciones computacionales estén correctas no depende de la lógica e implementación de los programas computacionales sino del tiempo en que dicha operación entrego su resultado.
  • Sistema de tiempo compartido multitarea: es cuando la CPU ejecuta múltiples tareas o trabajos conmutando entre ellos, es decir, que puede realizar varias tareas a la vez.

Procesos

1-¿qué es proceso? Es un programa en ejecución.

¿Qué son procesos cooperantes y procesos independientes? Un proceso es cooperante cuando los procesos interactúan entre si y pertenecen a una misma aplicación. Los independientes no interactúan y no requieren información de otros.

¿Cuáles son los estados de un proceso?

  • Nuevo: cuando el proceso se está creando.
  • En ejecución: cuando están ejecutando instrucciones en el procesador en un momento dado.
  • En espera: cuando están esperando respuesta de algún otro proceso para poder continuar su ejecución.
  • Listo: son los que pueden pasar a estado de ejecución si el planificador los selecciona.

¿Qué es la planificación de procesos? Es el proceso mediante el cual el sistema operativo selecciona que proceso va a ejecutar.

Tipos de planificación: Round robin, Por prioridad, Por orden de llegada, Primero el trabajo más corto.

La comunicación entre procesos: es una función básica de los sistemas operativos, los procesos pueden comunicarse entre sí a través de compartir espacios de memoria, los tipos son: Directa, indirecta, simétrica, asimétrica.

¿Qué son las hebras?

Las hebras (o threads) es una técnica de estructuración de procesos especial para mejorar el rendimiento de los sistemas operativos, reduciendo el recargo por conmutación de proceso.

¿Qué es conmutación? Es el mecanismo mediante el cual el sistema almacena la información del proceso que se está ejecutando y recupera la información del proceso que ejecutará enseguida.

¿Qué es sección crítica? Es una sección de código en la que un proceso realiza algún trabajo con el estado compartido y no desea que otros procesos trabajen ahí también.



¿Qué son las señales? Son el mecanismo de comunicación que se establece entre los procesos.

¿Qué sucede cuando un proceso recibe una señal? Cuando un proceso recibe una señal detiene su ejecución y divide a la rutina del tratamiento de la señal que está en el mismo proceso y luego continúa su ejecución.

¿Qué es una variable cerradura? Son aquellas que cada proceso antes de entrar a la sección critica debe verificar su estado.

¿Cómo pueden ser las direcciones de un proceso? Lógicas, reubicables o físicas.

¿Cuándo se producen las condiciones de competencia? Se dan cuando dos o más procesos intentan acceder a un mismo recurso.

¿Cómo pueden evitarse las condiciones de competencia? Pueden evitarse haciendo que cada proceso desactive todas sus interrupciones antes de entrar a su sección crítica y las active cuando salga de esta.

El sistema operativo se encuentra estructurado de la siguiente forma:

  • Estructura modular.
  • Estructura de anillos o capas.
  • Estructura microkernel.
  • Estructura multinucleo.
  • Estructura de máquinas virtuales.
  • Hebra o subproceso: es la unidad de procesamiento más pequeña que puede ser planificada por un sistema operativo.
  • La creación de un nuevo hilo: es una característica que permite a una aplicación realizar varias tareas a la vez.
  • Un hilo es: simplemente una tarea que puede ser ejecutada al mismo tiempo con otra tarea.
  • Multihilo: se refiere a la capacidad de un sistema operativo de dar soporte a múltiples hilos de ejecución en un solo proceso.
  • La biblioteca de hebras: se pueden utilizar en cualquier sistema operativo, basta con disponer de la capa de software de hilos.
  • La biblioteca de hebras permite utilizar una planificación específica, dentro del tiempo asignado por el sistema operativo. Planificación que es distinta de la del sistema operativo. En los hilos de sistema se utiliza la planificación del sistema operativo.
  • La planificación es el conjunto de políticas y mecanismos construidos dentro del sistema operativo que gobiernan la forma de conseguir que los procesos a ejecutar lleguen a ejecutarse.
  • El kernel decide cuál es la siguiente hebra ejecutable que puede ejecutar el procesador. El kernel mantiene una lista de hebras ejecutables. Busca la hebra con la prioridad más alta y selecciona dicha hebra.

Memoria principal.

  • Memoria primaria (MP), memoria principal, memoria central o memoria interna es la memoria de La computadora donde se almacenan temporalmente tanto los datos como los programas que la unidad central de procesamiento (CPU) está procesando o va a procesar en un determinado momento.
  • La función de la memoria principal: es almacenar datos e instrucciones de programa de forma temporal.
  • La memoria está estructurada en forma de una colección de celdas, en cada una de las cuales cabe una unidad específica de información: octetos o palabras.
  • El objetivo del intercambio es dar cabida a la ejecución de más aplicaciones de las que pueden residir simultáneamente en la memoria del sistema.
  • Intercambio: Consiste en trasladar el código y los datos de un proceso completo de memoria al sistema de almacenamiento secundario.



  • La segmentación: permite al programador contemplar la memoria como si contara de varios espacios de direcciones o segmentos.
  • La memoria virtual: es una técnica de gestión de la memoria que permite que el sistema operativo disponga, tanto para el software de usuario como para sí mismo, de mayor cantidad de memoria que esté disponible físicamente.
  • Paginación de memoria dividen los programas en pequeñas partes o páginas. Del mismo modo, la memoria es dividida en trozos del mismo tamaño que las páginas llamados marcos de página.
  • Copia Durante la escritura. Es una política de optimización utilizada en programación.
  • Sustitución de página. Cuando ocurre una falla de página, el SO tiene que escoger la página que está fallando para sacarla de la memoria y así puede entrar la nueva página. La nueva página solo sobrescribe la que está siendo desalojada.

¿Qué funciones lleva a cabo el sistema operativo como administrador de la memoria?

  • Lleva el control sobre qué partes de la memoria están en uso y cuáles no.
  • Asigna memoria a los procesos cuando lo necesitan y libera la misma cuando estos finalizan.
  • Administra el intercambio entre memoria principal y secundaria.

¿Cuáles requisitos deben satisfacerse en la administración de la memoria?

  • Reubicación: permitir que un programa pueda ser “movido”, descargado y cargado dentro de la memoria sin problemas de direccionamiento.
  • Protección: contra interferencias no deseadas por parte de otros procesos, ni un proceso acceder a partes asignadas al SO.
  • Posibilidad de compartir: que los procesos en memoria puedan compartir, código o datos comunes a ellos, manteniendo la integridad de la información y sin comprometer la protección.
  • Organización lógica: permitir el uso de técnicas que refieran no direcciones reales, sino una abstracción más cercana al usuario, como pueden ser los módulos.
  • Organización física: permitir una organización como mínimo de dos niveles (memoria real y memoria secundaria) que permitan la rápida ejecución de los procesos por un lado, y el almacenamiento a largo plazo de programas y datos.

 

¿Por qué los programas y datos deben estar en el almacenamiento principal?

Para poderlos ejecutar y referenciarlos directamente.

¿Qué es el swapping? Es la técnica de llevar temporalmente un proceso a memoria secundaria.

¿Qué es multiprogramación? En un ambiente de multiprogramación hay varios procesos compartiendo la memoria.

¿Cuáles son las alternativas para proteger los espacios de los procesos entre sí con respecto a la memoria del sistema?

División de la memoria en particiones: un proceso puede ocupar una partición y cada partición es ocupada por solo proceso. Cuando se asigna memoria a un proceso, se asigna la partición cuando el proceso finaliza, se libera la partición.

División de la memoria en particiones fijas: se divide la memoria en n particiones fijas, normalmente, desiguales. Al llegar un proceso se queda en espera hasta que haya una partición lo suficientemente grande como para contenerlo.

Cola de procesos por partición: se encolan los procesos de acuerdo a la partición asignada, normalmente por tamaño.

Cola única: los procesos a la espera de ser cargados se encolan en una cola única y un módulo administra el uso de todas las particiones. Si hay una partición justa para ese proceso se asigna, si no hay de su tamaño pero hay mayor, se asigna la mayor. También puede influir en la decisión de la carga la prioridad del proceso.

División de la memoria en particiones dinámicas: las particiones son variables en número y longitud. Cuando se carga un proceso en memoria se le asigna toda la memoria que necesita, quedando bien delimitado su espacio de direcciones.



¿Qué es fragmentación? Huecos en la memoria que no pueden usarse debido a lo pequeño de su espacio.

¿Qué es fragmentación interna? Al ser dividir la memoria en particiones fijas, un espacio que no se use dentro de la partición se pierde. A esta situación se le conoce como fragmentación interna.

¿Qué es fragmentación externa? Cuando la memoria queda fragmentada en pequeños huecos que no son suficientemente grandes como para poder asignarlos a los procesos listos y cuando la suma de estos fragmentos resulta en un espacio que puede ser utilizado, pero no disponible por no ser contiguo.

¿Qué es una superposición? Una superposición mantiene en memoria solo aquellas instrucciones y datos necesarios en un momento dado.

¿Qué es segmentación? Consiste en la asignación de bloques de memoria de tamaño variable.

¿Los segmentos pueden crecer o reducirse sin afectar a los demás? Si pueden.

¿En qué consisten los algoritmos de reemplazo de página? Cuando ocurre un fallo de página el sistema operativo debe decidir que páginas pueden ser sacadas de memoria para cargar una nueva.

¿En qué consiste el algoritmo de reemplazo óptimo? Reemplaza la página que se va a utilizar más lejos.

¿En qué consiste el algoritmo de reemplazo el menos reciente usado? Es lo contrario del anterior.

¿En qué consiste el algoritmo de reemplazo primero en entrar primero en salir (fifo)? El sistema operativo tiene una lista de todas las páginas que se encuentran en memoria, siendo la primera página la más antigua y la última la más reciente, en un fallo de página se elimina la primera página y se añade la nueva al final de la lista. También existen los algoritmos de reemplazo de página de la segunda oportunidad y el del reloj.



¿Qué es paginación? Es una técnica de manejo de memoria en el cual el espacio se divide en secciones de igual tamaño denominadas marcos de página.

SISTEMAS DE ARCHIVOS

¿Qué es un Sistema de Archivos?

Es la parte del Sistema Operativo que trabaja con los archivos.

¿Qué es un Archivo?

Son un mecanismo de abstracción. Son una forma de almacenar información en un disco y volver a leerla más adelante.

¿Qué es extensión de archivo?

Es la parte posterior al punto e indica por lo general algo relativo al archivo.

¿Qué es un Archivo Regular?

Es un tipo de archivo que contiene información del usuario.

¿Qué son los Directorios?

Son tipos de archivos de sistema para el mantenimiento de una estructura.

¿Qué son Archivos Especiales de Caracteres?

Tipo de archivos que tienen relación con la entrada y salida.

¿Qué son Archivos Especiales por Bloques?

Tipo de archivo que se utiliza para modelar discos.

¿Cómo se realiza el acceso a un Archivo?

Puede ser acceso secuencial o aleatorio.

¿Qué son Atributos de Archivos?

Son elementos adicionales que tienen un archivo. Por ejemplo, nombre, datos, fechas y hora de creación, así como su tamaño.

¿Cuáles son las operaciones básicas que se pueden realizar con un archivo?

Crear, Abrir, Cerrar, Leer, Buscar, Eliminar, copiar pegar, cambiar nombre.

¿Qué son los Descriptores de Archivos?

Son enteros pequeños que aparecen al abrir un archivo.

¿Cómo puede ser la ruta?

Ruta absoluta o Ruta relativa.

¿Qué es una Asignación Adyacente?

Se utiliza para almacenar cada archivo con un bloque adyacente de datos en el disco.

¿Qué es una Asignación en forma de lista ligada?

Almacena archivos con el propósito de mantener a cada uno de ellos como una lista ligadas de bloques.

¿Qué son Archivos compartidos?

Son los archivos que pueden compartir los usuarios que trabajan juntos en un proyecto.

¿Qué es Administración del espacio en disco?

Para administrar el espacio del disco se necesita asignar N bytes consecutivos de espacio en el disco y dividir el archivo en cierto número de bloques.

¿Qué es tamaño de bloque?



Es el tamaño de almacenamiento que van a tener los archivos por bloques.

¿Qué es la Consistencia del sistema de archivos?

Es la confiabilidad que puede tener el usuario a la hora de leer, escribir y modificar bloques de archivos.

¿Qué es el Desempeño del sistema de archivos?

Es la forma en que el sistema de archivo se desenvuelve.

¿Qué es Seguridad?

Es la protección que se le da a la información que contienen los archivos.

¿Qué es un mecanismo de protección?

Son los mecanismos utilizados para resguardar la información de la computadora.

Interbloqueo

¿Qué es un bloqueo mutuo?

Es cuando un proceso espera por un recurso y nunca cambiar de estado porque el recurso solicitado está retenido por otro proceso en espera.

¿Cuándo hay un bloqueo?

1) cuando en un medio ambiente de multiprogramación, varios procesos pueden competir por un número finito de recursos.

2) Cuando un proceso requiere un recurso no disponible pasa a un estado de espera.

¿De qué manera se puede representar gráficamente un bloqueo?

Gráficamente, los bloqueos mutuos pueden describirse a través de un grafo de asignación de recursos.

¿Qué podemos hacer para manejar el bloqueo mutuo?

  1. Usar un protocolo para asegurar que el sistema nunca entre en un estado de bloqueo.
  2. Permitir entrar a un estado de bloqueo y luego recuperarse.
  3. Ignorar el problema

¿Qué se debe hacer para evitar que un proceso entre en estado de bloqueo?

1) Prevenir del bloqueo

2) Evitar el bloqueo

¿Cómo se previene un bloqueo?

1) Asegurando que al menos una de las condiciones para el bloqueo no se cumplirá.

2) Estableciendo restricciones sobre cómo pueden solicitarse los recursos.

¿De qué manera se evita un bloqueo en un sistema operativo?

1) Para eso el S.O. necesita conocer con anticipación que recursos requerirá un proceso durante su tiempo de vida.

2) Con esa información, el S.O. puede decidir para cada requerimiento si el proceso debe esperar o no.

  1. La decisión se realiza en función de los recursos actualmente disponibles, los asignados, y los requerimientos y liberaciones futuras de cada proceso.

¿Qué podemos hace para permitir entrar a un estado de bloqueo y luego recuperarse?

1) Crear un algoritmo que examine el estado del sistema para determinar si ha ocurrido un bloqueo.

2) Crear otro algoritmo para manejar la recuperación desde el bloqueo.

¿Qué sucede si el sistema operativo ignora un bloqueo?

1) Ante un bloqueo el sistema sufrirá un deterioro en su performance (proceso continuo de su revisión de su desempeño).

2) Eventualmente el sistema se detendrá y necesitará reinició manual.

¿Cómo se previene un bloqueo?

1) Evitando una Exclusión mutua.

2) Evitando una Retención y espera.

3) Evitando una espera circular

¿Qué es la exclusión mutua?

Son algoritmos usados para evitar que fragmentos de código conocidos como secciones críticas accedan al mismo tiempo a recursos que no deben ser compartidos.

¿Porque se debe evitar la retención y espera?

Para garantizar que, siempre que un proceso requiere un recurso, no tiene otro retenido.

¿Cómo se evita la retención y espera?

1) Creando un protocolo para que cada proceso requiera y reciba todos sus recursos antes de comenzar su ejecución.

2) Creando un protocolo para que cada proceso pueda requerir algunos recursos y usarlos, pero cuando requiere otro recurso adicional, antes debe liberar los ya asignados.



¿Cómo se evita una espera circular?

Imponiendo un orden a todos los tipos de recursos del sistema donde cada proceso debe requerir recursos en un orden creciente de enumeración.

¿Cómo se detecta un bloqueo?

1) Creando un algoritmo que examine el estado del sistema para determinar si ha ocurrido un bloqueo.

 

2) creando un algoritmo para recuperarse del bloqueo.

¿Qué algoritmo puede ser usado para evitar un bloqueo?

El algoritmo del banquero

¿Qué es el algoritmo del banquero?

Es aquel algoritmo que declara el máximo número de instancias de cada tipo de recurso que pueda necesitar, y a la vez cuando un proceso solicita un conjunto de recursos, el sistema debe determinar si la asignación de esos recursos dejará al sistema en un estado seguro.