Sistemas Operativos resumen Resumido PDF

Title Sistemas Operativos resumen Resumido
Author carito B.
Course Sistemas Operativos
Institution Universidad Tecnológica Nacional
Pages 23
File Size 1.2 MB
File Type PDF
Total Downloads 222
Total Views 660

Summary

REPASO ARQUITECTURA DECOMPUTADORASCOMPONENTESREGISTROSDe uso general: acumulador (AX), contador (CX), base(BX), datos(DX) De segmento: code segment (CS), data segment (DS), stack segment(SS) De uso especifico: - stack pointer (SP, voy guardando cosas temporalmente, las puedo sacar, push y pop, es un...


Description

REPASO ARQUITECTURA COMPUTADORAS

DE

COMPONENTES

REGISTROS De uso general: acumulador (AX), contador (CX), base(BX), datos(DX) De segmento: code segment (CS), data segment (DS), stack segment(SS) De uso especifico: - stack pointer (SP, voy guardando cosas temporalmente, las puedo sacar, push y pop, es una pila), - instruction pointer (IP, apunta a la siguiente instrucción a ejecutar, tiene la dirección de la instrucción a ejecutar), - program counter (PC, lugar de memoria donde está la siguiente instrucción), - program status word (PSW, flags) De control: memory address register (MAR), memory buffer register(MBR), instruction register(IR) CICLO DE INSTRUCCION 1) Búsqueda de instrucción: no sé qué ejecutar, pero tengo el IP que tiene la dirección de la próxima instrucción a ejecutar. Tengo q pedirle a la memoria que me dé lo q está en esa dirección 2) Decodificar la instrucción: entender que micro operaciones hay que hacer, verificar que no falte nada, veo si están todos los operandos (si son necesarios) 3) Búsqueda de operandos: los voy a buscar a memoria 4) Ejecución de la instrucción 5) Escribir resultados 6) Volver a 1

MECANISMOS DE IO – ENTRADA Y SALIDA (IN OUT) Como se maneja y que tan involucrada esta la CPU al buscar cosas en memoria. Lo verde lo hace la CPU. 1) IO PROGRAMADA I) Dispara op lect al módulo de IO: necesito leer esto II) Leer estado del módulo de IO: preguntar si está listo. Puede estar listo o no, o dar error. Si no está preparado, vuelvo a disparar el op lect al módulo de IO. III) Cuando ya está preparado, leer una palabra del módulo de IO. IV) Escribir palabra en memoria: guardar la info V) Voy al siguiente bloque, ¿es el bloque final? Si no, vuelvo al inicio. Si si, siguiente instrucción. El programa que pidió la info no está haciendo nada útil mientras esto se realiza, se desperdicia el recurso de la CPU. Se pregunta activamente el estado de un controlador, cuando el mismo puede avisar cuando está listo (se soluciona con interrupciones). Buscamos sacar en primer lugar que la CPU pregunte si está listo muchas veces. 2) IO BASADA EN INTERRUPCIONES I)

se dispara la op lect al modulo de IO, y se ocupa con otra cosa. II) El controlador del dispositivo IO avisa cuando ya está preparado a través de una interrupción, y ahí se lee el estado del modulo de IO. III) Sigue con los pasos Aparece el concepto de guardar el contexto en registros, para no perder el progreso de las otras cosas. Costo extra, debido a las nuevas cosas que se deben tener en cuenta. Sigue generando mucha dependencia con la CPU.

3) ACCESO DIRECTO A MEMORIA (DMA) -> asumimos q siempre la usamos La DMA hace operaciones por la CPU. La CPU no habla más con el controlador del disco, sino que delega en el DMA. Le da todo lo que quiere mover. I) Dispara op lect de bloque al controlador de DMA. Hace otras cosas. II) lee el estado del módulo del DMA cuando le llegue la interrupción. El DMA pide dato por dato, lo va llevando/escribiendo en la memoria, pregunta el estado constantemente. El DMA hace la espera activa. El DMA interrumpe cuando el bloque ya está escrito en memoria. EN RESUMEN

IO PROGRAMADA

BASADA EN INTERRUPCIONES

DMA

VENTAJA DESVENTAJA Rápido y eficiente para Mal uso de la CPU tiene q hacer transferencias de pocos bytes, una espera activa del módulo evita overhead de mecanismos IO, sin hacer nada más. más complejos. Mejora throughput de Se sigue usando mal la CPU instrucciones: se evita el (aunque en menor medida): la chequeo continuo. CPU se encarga de escribir palabras a memoria. Costo extra. Se libera la CPU. Interviene solo Requiere HW especial. al principio y al final de la Requiere más tiempo inicial de transferencia. set up del pedido. Transferencias mucho más Robo de ciclo de bus. eficientes en la mayoría de los casos. El DMA hace la espera activa, liberando a la CPU. Hay una UNICA interrupción en toda la ejecución. El CPU se comunica solo con el DMA.

INTERRUPCIONES Mecanismo que permite interrumpir la ejecución normal de un programa. Necesito guardar el contexto cuando atienda la interrupción, así luego puedo reanudarlo. No se puede interrumpir en medio del ciclo de instrucción por lo que al finalizar de atender la instrucción en curso se valida si hay interrupciones por atender. Antes de atender una interrupción se guarda información básica en el stack del sistema a nivel HW para poder luego continuar la ejecución actual (del proceso y del SO). Lo mínimo necesario es: -

PC -> para poder continuar con la instrucción que iba a ejecutar si no ocurría la interrupción PSW -> ya que contiene por ejemplo el modo de ejecución (user/kernel) -> Recordar que al atender una interrupción se cambia el modo a kernel

El atender una interrupción no implica que un proceso/hilo sea "removido" de en ejecución y pasado a listos. Simplemente se "pausa" su ejecución por lo que dure la atención de esta. Luego de atenderla, puede llegar a ocurrir que dependiendo del planificador decida seleccionar un nuevo proceso/hilo a ejecutar y ahí si tenga que guardar el contexto en el PCB/TCB.

PROCESAMIENTO

CLASIFICACION  Síncronas vs asíncronas (¿son causadas interna o externamente al procesador?): las interrupciones sincrónicas ocurren como resultado de algo que se ejecutó en la CPU, por lo tanto, son interrupciones que podrían "predecirse". Las asincrónicas están más relacionadas a dispositivos fuera de la CPU, que podrían ocurrir en cualquier momento. sincrónicas: división por cero, acceder a una direc de memoria no permitida, llamado explícito a lanzar una interrupción  Internas vs externas  De HW vs de SW (¿son controlables por el programador?)  Excepciones vs Traps (¿pueden predecirse? Excepción: como un error, una falla a nivel del código. Trap: se puede generar manualmente, se puede llamar o lanzar en tal momento)  Enmascarables vs no enmascarables (¿pueden ignorarse?) CICLO DE INSTRUCCIÓN CON INTERRUPCIONES

INTRO SISTEMAS OPERATIVOS Un SO es un programa que administra, controla y coordina el uso del hardware (recursos) entre los diversos programas de aplicación, también actúa como intermediario entre el hardware y el usuario. Que debe cumplir un SO:  Administrar la ejecución de programas y coordinar la misma  Ser interfaz de usuario, a nivel desarrollo y usuario final  Ser interfaz con los dispositivos  Administrar la memoria, los dispositivos de IO, los archivos  Comunicación entre programas SYSCALLS Pedir ciertos recursos al SO. Forma en la que expone los servicios el SO. (quiero escribir en disco, crear un proceso, dame memoria, abrir un archivo). Wrapper: La idea es encapsular el llamado a la syscall. Función de la syscall ej: lib_write(a,b). funciones que llaman a otras syscalls, abstraen complejidad en su uso, brindan portabilidad. Setean ciertos parámetros de la llamada por nosotros, para q sea más fácil usarla. ALTO NIVEL. llamar directo: permitirá mayor control/granularidad. syscall_write(a,b,c,.....). BAJO NIVEL. MODOS DE EJECUCION Diferentes niveles que definen modo Kernel(full acceso) o modo usuario(acceso restringido). Modo usuario acceso restringido, modo kernel no hay restricciones (privilegios). ¿Como se dan los cambios de modo? De USER a KERNEL Interrupción Syscall: interrupción o Fast syscall De KERNEL a USER Con una instrucción privilegiada Restaurando el contexto del programa que venía ejecutando: para volver a la ejecución normal del programa ¿Como hace el salto de modo la syscall?  Con interrupciones: Cuando desde el modo usuario se envia una syscall, se pasa al modo kernel. El syscall envia una interrupción. Mas ineficiente, tiene q ejecutarse toda la interrupción hasta q se da cuenta q es una syscalls, y se debe acceder a memoria para obtener la direc de instrucción.  Con Fast syscalls: instrucciones especiales para empezar a ejecutar una syscall. Instrucción especifica. Hay instrucciones especiales para empezar a ejecutar syscalls, en vez de lanzar una interrupción se llama a una instrucción en particular que va a ejecutar a la syscall TIPOS DE KERNEL

monolítico: todo el código de mi SO corre en modo kernel. Todo el so está en el kernel. La Comunicación es rápida y evitamos el overhead. el tipo de kernel más utilizado es el monolítico y una de las grandes razones es justamente es el problema de velocidad por tener que comunicar los módulos del SO con IPC (inter process communication) generando más cambios de modo y ctx (más overhead). Microkernel: deja lo importante en modo kernel, todo el resto que sea por nivel usuario. Esta bueno a nivel seguridad, mala comunicación. Robustez, fiabilidad y tolerancia a fallas (menos en modo kernel). Facilidad de intercambiar un módulo con otro. Sí es cierto que al tener sólo una parte pequeña del SO corriendo en modo kernel da mayor aislamiento y estabilidad ya que si falla un módulo no tiene que fallar todo el kernel (a diferencia de un kernel monolítico). Es muy simple intercambiar módulos que corren en modo usuario (ej el tipo de FS a usar). Multicapa

Procesos / hilos Procesos    



múltiples programas pueden ser cargados en memoria y ejecutados concurrentemente. Un mismo programa puede tener varios procesos. Un proceso es un programa en ejecución, que incluye más que el código de este. Un programa por sí solo no es un proceso, sino que es una entidad pasiva, posee instrucciones almacenadas en disco que deben ser leídas. El proceso es una entidad activa. Un programa pasa a ser un proceso cuando se carga en memoria un archivo ejecutable. Es la mínima unidad de planificación, lo q el CPU va a estar ejecutando y elegir q poner a andar

Tenemos en nuestro disco al programa, y cuando lo ejecutamos lo pasamos a proceso en RAM. El proceso tiene: -

-

Código: instrucciones. Estático Datos: variables globales y ctes. Estático Stack: variables temporales y valores de retorno de las funciones de nuestro programa. Se crean y en algún momento desaparecen. Dinámico, las variables temps pueden aparecer y desaparecer, crece y decrece Heap: memoria dinámica que nosotros pedimos. Dinámico, puedo establecer memoria y luego liberarla. PCB: process control block, estructura administrativa. Estático.

LA IMAGEN DEL PROCESO ESTA CONFORMADA POR EL PCB,STACK,HEAP,DATOS Y CODIGO.

Estados del proceso

El proceso se crea -> Estado NUEVO. No se puede ejecutar todavía, pero sé que esta, sabemos su identidad, le asignamos un identificador. No tiene todo cargado en memoria para ejecutarse. Lo admitimos en el sistema, lo cargamos en memoria -> está LISTO/PREPARADO. Puedo elegirlo para ejecutar. ¿Pq no lo haría? Pq está ejecutando otro, hay otros más prioritarios, etc. En estado listo hay muchos procesos que quieren q les asignen CPU para ejecutar. El proceso es seleccionado para ejecutar y se le asigna CPU -> EN EJECUCION. Puede haber más de uno dependiendo de la CPU. El proceso es interrumpido o desaloja la CPU voluntariamente. Tiene que haber algo que le permita al SO tener el control para tomar la decisión de si conviene ejecutar o no. Va de EN EJECUCION a LISTO. El proceso espera que ocurra algo para ejecutarse, IO o un evento (leer algo de un disco, procesos que colaboran entre sí, etc.). EN ESPERA. no los consideramos listos para ejecutar. La IO finaliza o el evento ocurre, pasa a LISTO. SUSPENDIDO EN ESPERA: El proceso está en espera de un suceso (que puede ser una operación de E/S o una señal) y está en memoria virtual SUSPENDIDO PREPARADO/LISTO: El proceso está esperando que le asignen un procesador y está en memoria virtual Pasa a FINALIZADO, libera sección de datos, heap, stack, demás.

Swapping – suspensión Ir llevando imágenes de proceso temporalmente para liberar la RAM. Dps se recupera para que el proceso pueda seguir. Se cambia el lugar de almacenamiento. Aprovechar RAM + uso efectivo de la CPU. Podemos pasar a disco procesos bloqueados que estén en memoria.

Genera dos NUEVOS ESTADOS, q representan lo q está en el disco. Objetivo de la multiprogramación es tener en ejecución varios procesos al mismo tiempo con el fin de maximizar la utilización de la CPU, conmutando la CPU entre los procesos con tanta frecuencia que los usuarios puedan interactuar con todos a la vez.

Cambio de contexto Cuando se necesita desalojar el proceso actual (por una interrupción, fin de quantum, o E/S) de la CPU e intercambiarlo por otro, se hace un cambio de contexto, que consiste en guardar el estado del proceso actual, y restaurar el estado del proceso ingresante. Se da cuando…  se llama una syscalls, guardo los registros en el stack del sistema pq sé que voy a volver, es algo TEMPORAL, y cargo el contexto de la syscalls. Cuando termino eso, vuelvo a cargar lo que está en la cima del stack (PA).  hay un cambio de proceso, el SO guarda el contexto del PA en el PCB del PA para cuando quiera volverse a ejecutar y carga el ctx del PB en la CPU. Llevo el ctx al PCB cuando cambia el proceso, el modo de usuario. Al cambiar de proceso, en el medio tiene que sí o sí ejecutar el planificador de corto plazo, esto quiere decir que va a pasar de ejecutar un proceso de usuario al SO y luego a otro proceso de usuario. Para que esto ocurra se tiene que pasar de modo u -> k y luego de k ->u; en cada uno de estos cambiando el contexto de ejecución de la CPU.  hay una interrupción, el ctx de PA va al stack, se ve que quiere hacer la interrupción y si quiere cambiar de proceso, se guarda el ctx de PA en el PCB. Se ejecuta un PA, se llama a una syscall no bloqueante, se guarda el ctx del PA en el stack, se ejecuta la syscall en el CPU, termina de atenderse, se saca del stack el contexto, sigue el PA, se realiza una interrupción fin de quantum, se guarda el ctx de PA en el stack, al atender la interrupción vemos que queremos atender otro proceso, llevamos el ctx de PA al PCB (el PA pasa a estar en LISTO), se ejecuta el int handler, se carga el ctx del PB que está en su PCB en el CPU y se comienza a ejecutar.

1 process Switch

2 context switch: se guarda el ctx de un proceso y se restaura el del otro Mas de un cambio de modo 2 context switch 1 process switch: se puede elegir al mismo proceso, ejecutar una syscall, atender una interrupción 1 mode switch 1 context switch: paso de ejecutar un proceso de usuario a ejecutar el SO o viceversa 1 context switch no mode switch Por otro lado, no es cierto que:





Al cambiar de contexto se cambie de modo, por ejemplo, cuando uno está atendiendo una interrupción y llega una nueva más prioritaria que decide atender en forma anidada, se cambia el contexto, pero el modo ya se encuentra en modo kernel Al cambiar de contexto o de modo se cambia de proceso -> Ejemplos son: un proceso podría ejecutar una syscall // el SO podría atender una interrupción y luego reanudar la ejecución del proceso interrumpido.

PCB: bloque de control de proceso Posee la información necesaria para que el SO administre el proceso. Se encuentra SIEMPRE cargado en RAM. Guarda…  Estado del proceso  PC/IP: indica la dirección de la siguiente instrucción a ejecutar.  Registros CPU  Información de planificación de CPU: incluye la prioridad del proceso, punteros a colas y otros parámetros.  Información de manejo de memoria: donde están los punteros  Información contable: info que puede servir para tomar decisiones, número de proceso, tiempo de CPU asignado.  Información estado de E/S: lista de dispositivos asociados al proceso, lista de archivos abiertos,… El PCB siempre tiene que estar en RAM ya que es la estructura que usa el SO para administrarlo a cada momento.

Creación de procesos Un proceso puede crear a otro mediante una llamada al sistema (syscall). El proceso creador es el padre, y el creado es el hijo, el cual a su vez puede crear otros procesos. Los procesos serán identificados por un id (PID). Recursos del hijo (CPU – memoria – archivos – dispositivos)…  Puede obtenerlo pidiéndolo al SO  Puede estar restringido a un subset de los recursos del proceso padre Cuando un proceso crea otro puede ocurrir que…  El padre continua la ejecución concurrentemente con el hijo  El padre se queda esperando a que todos o alguno/s de los hijos finalicen Con respecto al espacio de direcciones del proceso puede ocurrir que…  El proceso hijo sea una exacta copia del padre  Al proceso hijo se le pasa una nueva imagen que reemplaza a la anterior, idéntica a la del padre excepto el valor de retorno de fork FORK -> Para crear un proceso desde otro, esta hace que el proceso hijo copie el espacio de direcciones del proceso padre, y ambos continúen la ejecución en la siguiente instrucción de Fork () concurrentemente. Apenas se lo crea tienen el mismo código. Cambia lo q va a tener c/u en su PID y el stack del valor de retorno de fork (para saber diferenciar si el proceso es padre o hijo), el resto de la imagen es idéntica. Hay 3 opciones de retorno de fork: I) Menor a cero, fallo, error II) Cero, el q está ejecutando es el proceso hijo III) Otro valor, lo q esta retornando es el PID del hijo q se creó y soy el padre

Finalización de procesos Un proceso le indica al SO que quiere terminar (syscall exit)  Un proceso hijo indica al padre que termina y su resultado con la syscall wait()  Los recursos usados por el proceso son liberados Un proceso padre puede terminar la ejecución de sus hijos (syscall abort)  El hijo se ha excedido en el uso de recursos asignados  La tarea que realiza el hijo ya no es necesaria El padre va a terminar…  Algunos SOs no permiten que un hijo siga ejecutando si su padre termina. Cuando un proceso finaliza, todos sus hijos son finalizados -> terminación en cascada  Otros SOs transfieren el hijo al padre del padre

Comunicación entre procesos Los procesos que se ejecutan concurrentemente pueden ser  Independientes: no pueden afectar ni verse afectados por otros procesos  Cooperativos: pueden afectar o verse afectados por otros procesos, comparten recursos A diferencia de los hilos (KLTs) los procesos son independientes entre sí, por lo que no comparten memoria en forma inherente. Para poder comunicarse deben establecer una sección de memoria compartida (a través de una syscall) o con paso de mensajes. Técnicas de IPC para comunicarse: Memoria compartida Paso de mensajes Los procesos establecen una zona de memoria protocolo para que se pasen mensajes, compartida la cual se usa para comunicarse establezcan como comunicarse, sin problemas. leyendo y escribiendo datos en la misma. Accedo Procesos en misma maquina o en máquinas a un espacio de memoria compartida, se la pido distribuidas. al SO. Procesos en la misma máquina. Luego q el Es útil para intercambiar pequeñas cantidades de SO le da la memoria, no hay más intervención datos. Es más lento ya que requiere cambios de para esto. contexto (syscalls). Permite una comunicación más rápida. Luego de que la región compartida es establecida, no requiere intervención del SO.

Hilos (hablamos de los KLT) Otra entidad que puede proveer el SO para permitir la ejecución concurrente. Un proceso va a tener varios hilos. Comparte con otras hebras que pertenecen al mismo proceso la sección de código, la sección de datos y otros recursos del sistema operativo, como los archivos abiertos y señales. -

Unidad básica de utilización de la CPU, y consiste en un juego de registros y espacio de pila Comparte el código, los datos y los recursos con los otros hilos del mismo proceso Cada hilo posee su sección de stack Cada hilo es administrado por un TCB, cuya referencia se encuentra en el PCB del proceso que está asociado. Un PCB, con muchos TCB con el contexto particular para cada uno de los hilos.

-

Al compartir recursos, pueden comunicarse sin usar ningún mecanismo de comunicación interproceso del SO No hay protección entre hilos. Un hilo puede escribir en la pila de otro hilo del mismo proceso.

Proceso *Copia de la imagen del proceso padre. 1-los procesos son independientes entre sí, por lo que no comparten memoria en forma inherente. 2-Al finalizar un proceso, el SO libera sus recurs...


Similar Free PDFs