Bloque2-Tema4-TeoriaSO Flashcards
Definicion sistema operativo.
Un sistema operativo es un conjunto de programas integrados que tienen como objetivo
aprovechar el hardware de una computadora y utilizarlo en forma segura y eficiente. Para lograrlo,
se pueden resumir las siguientes funciones básicas:
- Gestionar los recursos de hardware de la computadora (procesador, memoria y periféricos
- Ser una interfaz entre el usuario y la computadora.
- Ser la plataforma para los programas de aplicación del usuario.
Componentes /servicios de un sistema operativo.
- Gestión de procesos (planificadores)
- Gestión de memoria (técnicas de paginación, segmentación)
- Gestión de Entrada/Salida (controladores de dispositivos)
- Gestión de Archivos/Almacenamiento (sistemas de ficheros)
- Sistema de Protección (niveles de seguridad)
Clasificacion de sistemas operativos por el Nº de usuarios.
- Monousuario: solo 1 usuario puede usar los recursos del sistema simultáneamente.
- Multiusuario: varios usuarios pueden usar los recursos del sistema simultáneamente. Por tanto, aunque haya más de un usuario dado de alta en el sistema, si no pueden trabajar de forma simultánea, el SO no es multiusuario.
Clasificacion de sistemas operativos por el tiempo de respuesta((tiempo que tarda el usuario en obtener los resultados después de iniciar la ejecución de un programa).
- Procesamiento por lotes: el tiempo de respuesta no es importante y suele ser alto. Los procesos se ejecutan secuencialmente unos tras otro. No existe interacción con el usuario. Ejemplo: copias de seguridad.
- Tiempo compartido: el procesador divide su tiempo entre todos los procesos (usando algoritmos de
planificación como Round Robin). Ejemplo: sistemas multiusuarios interactivos (los usuarios interactúan con el sistema). - Tiempo real: en estos SO, los procesos requieren un tiempo de respuesta muy bajo o inmediato. Ejemplos donde esto es especialmente importante: sistema donde el tiempo de respuesta es crucial como sistemas médicos de monitorización de pacientes, sistemas bancarios, tráfico aéreo…
Clasificacion de los sistemas operativos en base al Nº de procesos o tareas.
- Monotarea: solo puede ejecutar 1 tarea a la vez.
- Multitarea o multiprogramación: puede ejecutar varios programas a la vez.
Clasificacion de los sistemas operativos en base al Nº de procesadores.
- Monoproceso / monoprocesador: el SO es capaz de gestionar solo 1 procesador, de manera que si
tuviese más sería inútil. En estos SO los procesos irán alternando su ocupación en la CPU. - Multiproceso / multiprocesador: el SO es capaz de gestionar varios procesadores, de modo
que puede usarlos simultáneamente para distribuir su carga de trabajo. Estos sistemas trabajan de dos formas:
* Asimétrica: el SO reparte las tareas, que está realizando, entre los procesadores. Determinados
procesos los ejecutará siempre un procesador, y el otro procesador sólo se utilizará para realizar
procesos de usuario. En este caso, es posible que un procesador esté siempre trabajando y el
otro, en ocasiones, sin actividad.
* Simétrica: los procesos son enviados indistintamente a cualquiera de los procesadores
disponibles.
Que es la unidad de gestion de memoria (MMU)
Es un dispositivo de hardware formado por un grupo de circuitos integrados, responsable del manejo de los accesos a la memoria por parte de la Unidad de Procesamiento Central o procesador.
Que es la segmentacion?
- Dividir el programa en segmentos variables (text, data, stack)
- Ubicar los segmentos en una zona libre y contigua
- Produce fragmentación externa à Puede haber mucha memoria libre (pequeños huecos)
pero donde no entra un segmento grande (habría que defragmentar
De que se compone la tabla de segmentos para la segmentacion?
Numero de segmento
y en la propia tabla:
-Base Adress-> donde empieza
-Limit-> Hasta donde llega
Que es la paginacion?
*Dividir el programa en bloques de tamaño fijo (página)
* Dividir la memoria en zonas de tamaño fijo (marcos)
* Ubicar las páginas en marcos libres
* No produce fragmentación externa pero si interna (ej. si el ultimo marco no está
relleno) (Una partición asignada y no ocupada totalmente por el proceso.)
* Técnica adecuada para la gestión de memoria virtual
* La MMU nos ayuda con el TLB (cache de la Page Table) a realizar la traducción
Que es la memoria virtual?
- La memoria virtual permite ejecutar procesos que requieren más memoria que la disponible en el sistema, manteniendo en memoria principal solo aquella memoria que el proceso esté utilizando y el resto en el disco.
- Cuando una página solicitada no se encuentra en memoria principal se produce un “Fallo de pagina”. El “Fallo de página” genera un trap a nivel del SO, que activa una rutina de atención que carga la página en memoria principal. Se produce Hiperpaginación cuando hay un excesivo número de intercambios con el almacenamiento secundario.
- Si la memoría está llena se ejecuta un algoritmo de reemplazo para tener en memoría principal las páginas más “importantes” y en disco (swap) las demás
Que es la hiperpaginacion?
Cuando hay un excesivo número de intercambios con el almacenamiento secundario.
Que es el algoritmo FIFO?
El algoritmo reemplaza la página que lleva más tiempo en memoria principal
Que es el algoritmo LRU?
(Least Recently Used) -> Este algoritmo asocia a cada página el tiempo en que fue referenciada. La página elegida por el algoritmo de reemplazo será la que fue accedida hace más tiempo
Que es el algoritmo NRU.
(Not Recently Used) -> En este algoritmo a las páginas se les asigna un bit de referencia y otro de modificación. El bit de referencia se enciende cada vez que se lee la página, mientras que el de modificación solo se enciende cada vez que se escribe. Cada cierto tiempo el bit de referencia es apagado. Cuando una página debe ser reemplazada, el sistema operativo divide las páginas en cuatro categorías:
Categoría 0: No referenciada, No modificada
Categoría 1: No referenciada, modificada
Categoría 2: referenciada, No modificada
Categoría 3: referenciada, modificada
Las mejores páginas para cambiar son las que se encuentran en la categoría 0, mientras que las peores son las de la categoría 3.
Que es un proceso?
Un proceso es un programa en ejecución que necesita estar cargado en memoria y disponer de
recursos (CPU, memoria, archivos, dispositivos de E/S) para cumplir su objetivo. Se trata de una
entidad activa.
Que secciones/segmentos constituyen un proceso en memoria?
- Código (Text): instrucciones del proceso.
- Datos (Data): variables globales del proceso.
- Memoria dinámica (Heap): Memoria dinámica que genera el proceso.
- Pila (Stack): utilizado para preservar el estado en la invocación anidada de
procedimientos y funciones
Que es la tabla de procesos?
Cuando un proceso se ejecuta, el SO le asigna un espacio de direcciones de memoria (que
contiene las instrucciones, los datos y la pila que es una estructura para almacenar y recuperar
datos del proceso) y lo añade a la tabla de procesos.
El SO guarda en la tabla de procesos por cada proceso una estructura de datos llamada Bloque
de Control de Proceso (PCB) que almacena la siguiente información
- Identificación de proceso: del proceso en sí (PID), del proceso padre (PPID) y de usuario.
- Información de estado del proceso: preparado, en ejecución, bloqueado, ….
- Prioridad del proceso.
- Dirección de memoria donde se ha cargado el proceso
- Otros: recursos utilizados, valores de los registros del procesador, propietarios, permisos.
Estados de un proceso?
- Nuevo: Cuando el proceso es creado.
- En Ejecución: El proceso tiene asignado un procesador y está ejecutando sus instrucciones.
- Bloqueado: El proceso está esperando por un evento (que se complete un pedido de E/S o una señal).
- Preparado: El proceso está listo para ejecutar, solo necesita del recurso procesador.
- Terminado: El proceso finalizó su ejecución.
Hay dos mas para el esquema con 5 estados que son:
-Preparado/Suspendido (Se active de suspende desde preparado)
-Bloqueado/Suspendido (Se activa se suspende desde bloqueado)
Mirar imagen bloque 2 tema 4
Posibles transiciones de un proceso?
- Nuevo -> Preparado: el SO está preparado para admitir un proceso más.
- Preparado -> Ejecución: el planificador escoge un proceso para la ejecución.
- Ejecución -> Preparado: el proceso en ejecución es interrumpido y expulsado del procesador porque ya ha consumido su tiempo asignado o porque otro proceso de mayor prioridad está esperando.
- Ejecución -> Bloqueado: el proceso abandona voluntariamente la CPU y espera a un evento externo.
- Bloqueado -> Preparado: finaliza el evento que estaba esperando el proceso y pasa al estado preparado.
- Ejecución -> Terminado: el proceso termina su ejecución (terminación normal).
- Preparado/Bloqueado -> Terminado: el proceso es eliminado (terminación anormal).
Que es la lista de procesos del sistema (job queue)
Es una lista especial, porque los procesos que están en
ella no esperan por nada en particular, sino que es la
lista de todos los procesos del sistema. Al crearse un
nuevo proceso se agrega el PCB a esta lista. Cuando el
proceso termina su ejecución es borrado
Que es la cola de procesos listos (ready queue)?
Esta cola se compondrá de los procesos que estén en estado listo/preparado.
La estructura de esta cola dependerá de la estrategia
de planificación utilizada
Que es la cola de espera de dispositivos (device queue)?
Los procesos que esperan por un dispositivo de E/S
particular son agrupados en una lista específica al
dispositivo. Cada dispositivo de E/S tendrá su cola de
espera, por lo que existirán varias device queue
Es la listado de bloqueados.
Que es el cambio de contexto? (Context switch)
Consisten en quitarle la CPU al proceso “en ejecución” y asignársela a otro
estado “preparado”.
Quien realiza el cambio de contexto.
un componente del SO llamado dispatcher o planificador a corto plazo y en ella se guarda el contexto del proceso en ejecución en su PCB y se restaura el contexto del nuevo proceso a ejecutar mediante su PCB
Que es el PCB?
El bloque de control del proceso o en inglés PCB es un registro especial donde el sistema operativo agrupa toda la información que necesita conocer respecto a un proceso particular.
Que es el planificador a largo plazo?
- Selecciona procesos de la cola de esperando ejecución y los carga a memoria
- Controla el grado de multiprogramación. Es importante que elija un conjunto equilibrado de procesos.
- Se ejecuta con poca frecuencia.
Que es el Planificador a corto plazo / Distpacher?
- Selecciona entre los procesos preparados en memoria y les asigna la CPU.
- Se ejecuta con mucha frecuencia
Que es el Planificador a medio plazo?
Decide qué proceso pasa de la memoria principal a la secundaria (memoria virtual) o viceversa.
Tipos de planificacion de algoritmos a corto plazo?
- Planificación no apropiativa (non-preemptive):
- Algoritmos no expulsivos.
- Los procesos se ejecutan hasta que terminan o se bloquean.
- Sencillo de implementar.
- Rendimiento negativo en general.
- Planificación aproviativa (preemptive):
- Algoritmos expulsivos.
- Los procesos pueden ser expulsados de la CPU.
- Mayor coste de implementación. Necesitan soporte hardware adicional (relojes).
- Mejora el servicio y evita monopolización de la CPU.
Como funciona el algoritmo FCFS(First Come First Served).
NO APROPIATIVO
La CPU es asignada a los procesos en el mismo orden que la solicitan.
Ventajas
* Sencillo de implementar (cola FIFO).
Inconvenientes
* Mal tiempo de espera
* Efecto convoy.
* No válido para procesos interactivos
Que es el efecto convoy?
Procesos con largas ráfagas de CPU retrasan a procesos con ráfagas cortas
Como funciona el algoritmo SJF(Shortest Job First)?
NO APROPIATIVO
Primero el que menos tiempo total de CPU requiere y se ejecuta hasta que se termine o se suspenda.
Ventajas
* Optimiza el tiempo de espera
* Favorece los procesos orientados a E/S
Desventajas
*Es costoso averiguar cuándo dura la siguiente racha de CPU
*Inanición de los procesos con rachas de CPU largas
Como funciona el algoritmo SRTF(Shortest Remaining Time First)?
APROPIATIVO
-Primero al que menos tiempo de CPU le queda para acabar.
-Versión apropiativa de SJF (como el SJF, solo que puede echar a los procesos)
Como funciona el algoritmo Planificación por prioridades?
-Primero el que tiene más prioridad.
-Cada proceso tiene asignada una prioridad. El planificador selecciona el proceso con prioridad más alta (a igual prioridad se selecciona con FCFS).
-Las prioridades pueden ser dinámicas (cambian con el tiempo) o estáticas (se mantienen)
Como funciona el algoritmo Round Robin?
APROPIATIVO
-Todos el mismo tiempo por turnos.
-A cada proceso se le asigna una cantidad de tiempo de CPU llamada “quantum”. Si el proceso tiene un intervalo de CPU mayor que el quantum es expulsado de la CPU.
-La cola de preparados se gestiona con una política FIFO.
-Si el valor del quantum es grande el algoritmo degenera en FCFS. Si es pequeño se generará sobrecarga debido a cambios de contexto
Como funciona el algoritmo Multilevel Queue?
APROPIATIVO
Este algoritmo propone dividir la lista de procesos listos en varias colas, una para cada tipo de proceso. Cabe destacar que los procesos no podrán
cambiar de cola, que cada cola tendrá su propio algoritmo de planificación, y que existirá un algoritmo de planificación entre colas.
Que es un Thread(hilo)?
Un hilo es una unidad básica de utilización de CPU, la cual contiene un id de hilo, su propio program counter, un conjunto de registros y una pila; se representa a nivel del SO con una estructura llamada TCB (Thread Control Block)
Si un proceso tiene múltiples hilos, puede realizar más de una tarea a la vez (esto es real cuando se posee más de una CPU o Core).
Que tipos de hilos existen?
Hilos a nivel de usuario y de kernel
Que son los hilos a nivel de usuario?
Son implementados en alguna librería. Estos hilos se gestionan sin soporte del SO, el cual solo reconoce un hilo de ejecución.
Que son los hilos a nivel de Kernel?
el SO es quien crea, planifica y gestiona los hilos. Se reconocen tantos hilos como se hayan creado.
Modos de comunicacion/sincronizacion de procesos(Concurrencia)?
1.- Memoria compartida
Necesitan un mecanismo de sincronización externo.
La responsabilidad de la comunicación recae en los procesos (el sistema operativo sólo proporciona llamadas para manipular dicha memoria compartida).
2.- Paso de mensajes
La responsabilidad de la comunicación y sincronización recae en el Sistema Operativo que proporciona un enlace lógico entre procesos.
Los procesos sólo tienen que invocar correctamente a dos llamadas básicas: send y receive (bloqueantes o no).
3.- Canalizaciones (tuberías) con nombre y sin nombre
Algoritmos para la exclusion mutua?
-Dekker.
-Peterson.
-Eisenberg – McGuire.
-Panadería de Lamport.
Que mecanismos podrías usar para la sincronizaron de procesos?
Semaforos o Monitores
Que es un fichero/archivo?
Conjunto de información de un determinado tipo que está almacenada en un dispositivo de almacenamiento
Que es una carpeta/directorio?
Tipo especial de fichero que se utiliza para organizar ficheros (u otras carpetas)
Que es un sistema de ficheros?
Parte del SO que permite “administrar” la información almacenada de los dispositivos de E/S en forma de ficheros.
Que tipos de ficheros hay?
- Ficheros normales o regulares: Aquellos ficheros que contienen datos (información).
- Directorios: Fichero que se utiliza para organizar los ficheros (u otras carpetas).
- Ficheros especiales de dispositivos: representan a dispositivos de E/S.
Dentro de los tipos de asignacion de espacio, que es la asignación contigua?
Cada directorio contiene la los nombres de archivos y la dirección del bloque inicial de cada archivo, así como el tamaño total de los mismos.
Por ejemplo, si un archivo comienza en el sector 17 y mide 10 bloques, cuando el archivo sea accedido, el brazo se moverá inicialmente al bloque 17 y de ahí hasta el 27.
Si el archivo es borrado y luego creado otro más pequeño, quedarán huecos inútiles entre archivos útiles, lo cual se llama fragmentación externa
Dentro de los tipos de asignacion de espacio, que es la asignación enlazada?
Con este criterio los directorios contienen los nombres de archivos y por cada uno de ellos la dirección del bloque inicial que compone al archivo.
Cuando un archivo es leído, el brazo va a esa dirección inicial y encuentra los datos iniciales junto con la dirección del siguiente bloque y así sucesivamente.
Con este criterio no es necesario que los bloques estén contiguos y no existe la fragmentación externa, pero en cada “eslabón” de la cadena se desperdicia espacio con las direcciones mismas. En otras palabras,
lo que se crea en el disco es una lista ligada.
Que es un dispositivo de bloque?
Es aquel que almacena la información en bloques de tamaño fijo, cada uno con su propia dirección. La propiedad esencial de un
dispositivo de bloque es la posibilidad de leer o escribir en un bloque de forma independiente de los demás. Los
discos son dispositivos de bloque.
Que es un dispositivo de caracter?
Es aquel que envía o recibe un flujo de caracteres, sin sujetarse a una estructura de bloques. No se pueden utilizar direcciones ni tienen una operación de búsqueda. Las terminales, impresoras de
línea, cintas de papel, tarjetas perforadoras, interfaces de una red, ratones (para apuntar a una pantalla) y muchos
otros dispositivos no parecidos a los discos son dispositivos de carácter
Como realiza la entrada/salida el sistema operativo?
Escribiendo comandos en los registros del controlador.
Dentro de las tecnicas de comunicacion/sincronizacion, que es la E/S programada?
el procesador ejecuta un programa que controla las operaciones de E/S. El problema es que el procesador se tiene que quedar esperando (parado) a recibir respuesta
(polling)
Dentro de las tecnicas de comunicacion/sincronizacion, que es la E/S controlada por interrupciones?
Los dispositivos envían una señal de interrupción para llamar
la atención del sistema
Dentro de las tecnicas de comunicacion/sincronizacion, que es la E/S mediante el uso de DMA(Direct Access memory)
un chip se encarga de la transferencia y accede a la memoria para leer o escribir datos que recibe y envía el dispositivo sin pasar por el procesador
Que es el Caching?
consiste en almacenar una caché temporal, de rápido acceso, los datos que se usan con más frecuencia.
Que es el Buffering?
Consiste en utilizar un área de memoria como buffer, simulando un dispositivo o un periférico lógico, que hará de dispositivo intermedio entre el periférico real y el procesador.
Que es el spooling?
técnica en la cual la computadora introduce trabajos en un buffer (un área especial en memoria o en un disco), de manera que un dispositivo pueda acceder a ellos cuando esté listo.
Diferencia buffering y spooling: La diferencia básica entre Spooling y Buffering es que Spooling superpone la E / S de un trabajo con la ejecución de otro trabajo mientras que el buffering superpone la E / S de un trabajo con la ejecución del mismo trabajo.
Que es POSIX?
POSIX es una norma escrita por la IEEE, que define una interfaz estándar del sistema operativo y el entorno, incluyendo un intérprete de comandos.
Que es TLB?(Translation lookaside buffer)
Memoria cache, parte del chip de la MMU(memory management unit), que guarda la traducciones recientes de memoria virtual a memoria fisica.
Que es el flat model?
Memory addressing paradigm in which “memory appears to the program as a single contiguous address space.”