Resumen de clase PDF

Title Resumen de clase
Course Sistemas Operativos
Institution Universidad Tecnológica Nacional
Pages 44
File Size 2.7 MB
File Type PDF
Total Downloads 487
Total Views 557

Summary

Warning: TT: undefined function: 3203/04/Introducción al HardwareEl procesador está compuesto por: registros, la unidad aritmética lógica (UAL), la cache, etc. Registros visibles: Los que el usuario puede manipular de manera directa.  Registros de control y estado: Suelen ser registros que nos per...


Description

03/04/2020

Introducción al Hardware El procesador está compuesto por: registros, la unidad aritmética lógica (UAL), la cache, etc.  

Registros visibles: Los que el usuario puede manipular de manera directa. Registros de control y estado: Suelen ser registros que nos permiten administrar y mantener un buen mantenimiento del computador.

Elementos básicos de una computadora La memoria RAM es aquella con que vamos a guardar todos los programas y datos que vamos a estar usando mientras tenemos la computadora encendida. Todos los programas que se ejecutan están en la memoria. Módulo de entrada/salida donde se conectan todos los dispositivos externos a la computadora. Una computadora sin módulos de entrada/salida no funcionaría para nada. Se encarga de enviar las cosas provenientes de estos dispositivos hacia el procesador. Todos estos elementos se conectan por el BUS . Dentro del procesador hay un conjunto de registros. Estos pueden ser de uso general, visibles al programador, o de control y estado (el PC, los flags, IR, etc.), que son para gestionar la administración del sistema. El program counter (PC) puede ser manipulado por hardware y software, y contiene la dirección de la próxima instrucción a ser ejecutada. El procesador tiene un set de instrucciones que se dividen en privilegiadas y no privilegiadas. Las privilegiadas solo se pueden ejecutar en modo kernel, mientras que las no privilegiadas pueden ser ejecutadas por el modo usuario también. Las segundas son las que pueden hacer cualquier programador. Las primeras son preferentemente para que las haga el sistema operativo y están relacionadas con cosas que pueden afectar a la computadora, por ejemplo, intentar acceder a un dispositivo de entrada y salida.

Ciclo de instrucción Es interrumpible. Una vez que una instrucción empieza a ejecutarse, no puede interrumpirse hasta el final. Si tenemos un procesador podemos ejecutar un solo programa a la vez. Para poder ejecutar un conjunto de instrucciones, una computadora debe cargar las instrucciones del disco (I/O) solamente a memoria. Los pasos que se ejecutan dentro de una instrucción son: fetch, decode, execute.

Interrupciones Una interrupción es un mecanismo que tienen los dispositivos de hardware para cortar el flujo de instrucción de un programa. Así, una vez atendida, implica siempre un cambio a modo kernel, pero el programa que se estaba ejecutando y se interrumpió, no se entera de que fue 1

interrumpido. Se utilizan para cortar la ejecución de la secuencia actual de instrucciones para que el SO pueda seguir haciendo cosas. Nos ayuda a hacer las cosas en “paralelo” aunque realmente no es así. Son notificaciones de eventos dirigidas al procesador. Cualquier dispositivo de E/S puede enviar interrupciones al procesador para que detenga lo que está haciendo y se ponga a hacer otra cosa. Siempre estas notificaciones tienen de destino final el procesador. Para atender una interrupción, es necesario, previamente guardar el estado de todos los registros del procesador. Después de ejecutar cada instrucción, antes de pasar a la siguiente, pregunta por un flag si hubo alguna interrupción, y en caso positivo, se la atiende. Esto es porque una vez que se ejecuta la instrucción, esta no se puede interrumpir mientras se está ejecutando. Se pueden clasificar de varias maneras dependiendo de quien lo origino:  Hardware (externas al procesador): Las que vienen de un dispositivo de E/S. Por ejemplo: Un disco, una posición de memoria que se rompió.  Software (internas al procesador): Se originan dentro del procesador como consecuencia de la ejecución de una instrucción. Por ejemplo: Hacer una división por 0.  Enmascarables: Se tienen que atender siempre. Por ejemplo: Una falla de hardware no se puede pasar por alto (falla eléctrica, de memoria, etc.), no puede postergarse.  No enmascarables: Pueden no ser ejecutadas en el mismo instante. Por ejemplo: Una lectura de disco, pero la computadora está haciendo algo más importante, se puede postergar.  E/S.  Fallas de Hardware: Falla cuando no se encuentre un dispositivo, por lo que no se pueda usar.  Clock: Reloj de la computadora. Dispositivo Hardware que nos interrumpe cada cierto tiempo que podemos definir como sistema operativo. Ciclo sin interrupciones:

Ciclo con interrupciones: La interrupción se atiende siempre que se termina una ejecución.

2

El fetch busca la siguiente instrucción que se tiene que ejecutar a la memoria. En la memoria están todas las instrucciones del programa que se tiene que ejecutar. Una vez ejecutada la instrucción, se pregunta si las interrupciones están habilitadas o no, y de serlo, se atiende, y si no, se vuelve a la etapa de fetch actualizando el valor del PC para que busque la siguiente instrucción del programa.

¿Qué es lo que pasa cuando llega una interrupción? 1. 2. 3. 4. 5. 6. 7. 8.

Se genera una interrupción. Finaliza la instrucción actual. Se guarda PC y PSW (Procesador Status Word) del programa. Se carga en PC la dirección del manejador de interrupciones. Se guarda la información del procesador. Procesa la interrupción. Restaura información del procesador guardada. Restaura PC y PSW.

Los primeros 5 puntos son los que pasan dentro del procesador. El procesador está programado para que pasen esas cosas. Después de finalizar la instrucción, el procesador es el que pregunta si hay interrupciones. A partir de que el PC cambia de posición, empieza a funcionar el software. La manipulación del program counter es algo que realiza el sistema operativo, para que, si tenemos un programa abierto, podamos usar otro.

Técnicas de entrada/salida  E/S programada.  E/S por interrupciones.  Acceso directo a memoria (DMA).

3

Jerarquía de memoria Cuando hablemos de memoria nos referimos a la memoria RAM, pero todas las memorias tienen tamaños y velocidades diferentes, aunque las utilizamos para tener un sistema de memoria acorde al que necesitamos. Memoria interna de la computadora:  Registros de CPU: La que se encuentra más cerca del procesador.  Memoria Cache.  Memoria RAM. Memoria secundaria:  Disco de estado sólido.  Disco magnético. Almacenamiento terciario:  Discos ópticos CD/DVD  Almacenamiento fuera de línea (cintas): La que se encuentra más lejos del procesador. Mientras más lejos se encuentre del CPU, mayor tamaño tiene, pero menor costo y más lento.

Introducción a Sistemas Operativos Un sistema operativo administra los recursos del sistema y los programas en ejecución. Además, se administra a sí mismo. Hay muchos tipos de sistemas operativos. Funciones que tiene el sistema operativo: (las primeras 2 son las favoritas de Dan)  Administrar la ejecución de programas.  Interfaz para usuario y programadores. Como todo el hardware es diferente entre sí, esto desliga al programador a tener que averiguar con cuál hardware está trabajando.  Administración de los recursos de hardware y software.  Administrar los dispositivos de entrada/salida.  Administrar los archivos.  Comunicación entre programas.  Asignación de recursos.  Protección y Seguridad. Capas de una computadora:    

Aplicaciones (Chrome, block de notas, etc.), utilizadas por el usuario final. Utilidades (compilador, interfaces gráficas, etc.), utilizado por el programador. Sistema operativo (kernel) (memoria, disco, procesador), utilizado por el programador. Hardware, utilizado por el diseñador del sistema operativo.

Llamadas al sistema (Syscall) 4

Funciones incluidas en la parte principal (en el núcleo) del sistema operativo, y suele estar relacionada al uso de recursos de la computadora. Permite a los programas acceder a recursos de manera más segura. Se utilizan para solicitar un servicio al sistema operativo. Por ejemplo, escribir algo en un archivo. Yo le estoy pidiendo como programador/usuario al sistema operativo que se escriba eso en el archivo. Suelen ser utilizadas a través de una API por medio de wrappers. Estas son funciones que incluyen alguna llamada al sistema. Un programa escrito utilizando wrappers de una biblioteca standard permite portabilidad.

Modos de ejecución Separar en dos modos aumenta la seguridad, evitando que el usuario ejecute instrucciones privilegiadas que puedan dañar al sistema. El procesador va cambiando de modo usuario a modo kernel constantemente. Motivos para que haya cambio de modo: Son las interrupciones (se está ejecutando una instrucción en modo usuario, se realiza la interrupción en modo kernel, y luego vuelve a modo usuario para que pueda seguir ejecutando sus programas de usuario), y las llamadas al sistema (mecanismo que ofrece el SO para que los programas o programadores puedan pedir algún servicio al SO). Modo kernel es el sistema operativo: Puede ejecutar instrucciones privilegiadas y no privilegiadas. Modo usuario es todo lo que no sea el sistema operativo: El Word, el Chrome, el block de notas, etc. Solo puede ejecutar instrucciones no privilegiadas. Si un usuario, un programador, necesita hacer algo que implique una instrucción privilegiada, debe hacerlo a través de una Syscall.

14/04/2020

Sistemas monoprogramados vs. Sistemas multiprogramados En un sistema monoprogramado hay un único programa que se está ejecutando, además del sistema operativo. Las operaciones tardan mucho tiempo, por lo que hay tiempo del procesador que se está desperdiciando y este es muy importante.

5

En los sistemas multiprogramados se pueden ejecutar más de dos programas, no en el mismo instante, pero si en un mismo intervalo de tiempo. La multiprogramación es un modo de operación que permite que dos o más programas ejecuten de forma concurrente. Durante esta puede haber varios programas en un intervalo de tiempo. La creación de estos sistemas dio pie a que existieran los sistemas multiusuarios, es decir, que pueda estar ejecutando más de un usuario. Distinto es el multiprocesamiento, que son múltiples procesadores. En este hay muchos procesadores que pueden ejecutar en paralelo dos procesos diferentes. Ejecución concurrente son dos o más programas ejecutando en el mismo intervalo de tiempo. Este intervalo va de 0 hasta algún número.

Procesos Un programa es una secuencia de instrucciones compiladas a código máquina. Esto significa que escribimos nuestros programas en un lenguaje de programación, lo compilamos y genera un archivo binario (ejecutable) donde encontramos las instrucciones que debe seguir el programa. Es un archivo dentro de la computadora que si nunca lo abriste seguro nunca lo necesitaste. Un proceso es mucho más que un programa que se está ejecutando. Es una secuencia de instrucciones (un programa) que contiene el programa y más componentes asociados al proceso y la memoria que utiliza. Un proceso tiene vida y está todo el tiempo haciendo algo. El SO trabaja con procesos.

6

Se puede ejecutar un único proceso en un determinado momento en una CPU. La única situación en la que pueden ejecutar 2 o más procesos en el mismo instante de tiempo es cuando hay 2 o más procesadores (multiprocesamiento). Si el sistema tiene un solo procesador, entonces puede ejecutar un solo proceso en un instante de tiempo.

Estructuras que contiene un proceso:    

Código: Espacio asignado para almacenar la secuencia de instrucciones del programa. Van a haber un conjunto de instrucciones haciendo referencia a las declaraciones. Datos: Espacio asignado para almacenar variables globales. Pila: Espacio usado para guardar variables locales, parámetros y, además, los puntos de retorno a la función. Heap (cúmulo o montículo): Espacio asignado para el uso de memoria dinámica. Se pide esta memoria a medida que el proceso va avanzando.

Contexto de ejecución del proceso Está compuesto por los registros del procesador y por el PSW (Program Status Word).

Atributos para diferenciar a un proceso de otro: Process ID (PID): Identificador univoco de un proceso. Parent Process ID (PPID): El identificador del proceso padre. User ID (UID): El id de quien creo el proceso. Información de gestión de memoria. Información de planificación: Cuando un proceso tiene prioridad sobre otro para ejecutarse.  Información de E/S: Dispositivos que utiliza el proceso.  Información contable o de estadística: Cuánto se usó el procesador, cuanto tardo en responder, cuanta memoria se usó, etc.     

Toda esta información está guardada en el Bloque de Control del Proceso (PCB). Este bloque contiene toda la información relacionada al proceso y se guarda en la parte de la memoria del kernel para poder administrar todos los procesos. Es básicamente una lista que le permite 7

al SO ir para adelante o para atrás. Trabaja de este lado por la información estadística que contiene. Dentro del PCB, la información del contexto de ejecución (registros del procesador) tiene utilidad solamente cuando el proceso no está ejecutando, pero tampoco finalizo. El PCB es una estructura y para el manejo propio del SO maneja todo con punteros. Tienen una cantidad finita de espacio, aunque sea un número muy grande. Como procesos no sabemos cuál es nuestro PID porque el programador no tiene acceso al PCB, a menos que programes sistemas operativos. Para saber este tipo de información habrá que hacer una llamada al sistema. Hay un solo PCB por cada proceso. Contiene la dirección a las estructuras del proceso y guarda el contexto de ejecución cuando el proceso no este ejecutando, además de los atributos.

Representación del proceso en el sistema Un proceso puede modificar los siguientes elementos de su imagen:   

datos estáticos pila

heap

Estos son espacios de memoria utilizados para que el programador guarde datos (Arrays, Variables, etc.). El código del programa no puede modificarse y el PCB solo lo manipula el Sistema Operativo.

Ciclos de vida de un proceso (esto es desde que inicia hasta que termina) Sobre los estados: Un proceso está Listo cuando está esperando para ser pasado al procesador y poder ejecutar sus instrucciones. El estado Suspendido sirve para un proceso que está siendo depurado. Uno de los usos de este estado es para la depuración de procesos. Otro uso es para aquellos procesos que pasan de Memoria Principal al Área de Intercambio (o Swapping). El proceso en estado Finalizado, aunque no conserva el código, los datos, la pila y el heap, mantiene el PCB, por lo tanto, sigue existiendo. Se mantiene por fines estadísticos o porque ningún proceso tomó su valor de retorno. Su padre pudo haber finalizado, pero el proceso puede seguir ejecutando. Estado de los procesos: Diagrama de 2 estados.

8

Esto no va a ser siempre así. En algún momento de tiempo puede ser que el PCB3 pase a “No ejecutado” para que el PCB4 pase a ejecutar. Los procesos constantemente pueden pasar de un estado a otro. Los PCBs están enlazados entre sí, al azar, o quizás no, pero todos tienen una prioridad para ejecutarse antes que otro. Para que funcione bien tiene que tener los estados listos, bloqueado, y ejecutando, por lo que el diagrama de 2 estados no funciona muy bien. Estado de los procesos: Diagrama de 3 estados.

En este diagrama, un proceso que no está listo es uno que está bloqueado. Se bloquea porque seguramente hubo una llamada al sistema. No podrá seguir ejecutando hasta que no obtenga lo que pidió. Un ejemplo sería si solicitó abrir un archivo para adquirir información. Hasta no obtenerla, estará bloqueado. Para que un proceso ejecutando pase a bloqueado puede ser una llamada al sistema porque necesita algo del Sistema Operativo o, raramente, porque el proceso quiere dejar de ejecutar porque prefiere que ejecute otro o decide hacer otras cosas. Un proceso bloqueado puede pasar a listo cuando obtiene lo que se le solicitó al Sistema Operativo. Se entera que obtuvo dicha información a través de una interrupción. Esta interrupción nos dirá que la lectura del disco, o lo que se necesitaba hacer, ya finalizó. Cuando se dispara dicha interrupción, el Sistema Operativo lo agarra, lo pasa al espacio de memoria donde debe pasar los datos, y cambia el estado del proceso. Para que un proceso que esté ejecutando pase a la cola de listos, puede darse porque se le acabó el tiempo que se le asigno para ejecutar, o porque se produjo una interrupción y un proceso que estaba bloqueado o un proceso nuevo tiene más prioridad que el que se está ejecutando. Estado de los procesos: Diagrama de 5 estados. 9

El estado finalizado es cuando el PCB se queda aguardando para ver qué valor se retorna. El lugar que ocupaba en memoria y datos globales se liberan. Solo conserva su PCB, el resto lo elimina para no seguir ocupando espacio. Cuando otro proceso toma el valor de retorno de dicho proceso, sale del sistema y deja de existir. Estado de los procesos: Diagrama de 7 estados.

Los nuevos estados (ready/suspended y blocked/suspended) se usan cuando hay un intercambio de memoria. El estado suspendido sirve para un proceso esperando por un evento. Un proceso Ejecutando puede realizar una llamada al sistema y pasa al estado Bloqueado. En un algoritmo con desalojo puede ser desalojado y pasa a estado Listo. Cuando un proceso finaliza de manera normal (exit) o por algún evento inesperado, pasa al estado Finalizado. Para pasar a Suspendido, debe pasar previamente por Bloqueado o Listo. Cuando quiero agregar un proceso, pero no tengo memoria disponible, puedo pasar cosas al disco para liberar espacio. Al liberarlo, el proceso que estaba en estado New esperando para entrar, puede pasar a estado Ready. La imagen de un proceso puede estar ubicada en memoria cuando su estado es Bloqueado. Cuando el proceso está bloqueado, tiene su imagen en memoria, pero cuando se encuentra “Listo/Suspendido” o “Bloqueado/Suspendido”, algunas estructuras que componen la imagen del proceso se encuentran en el área de intercambio (habitualmente en disco). Depuración (debugging): Sirve para poder cortar la ejecución mientras mi proceso se está ejecutando. Cuando se llama un debugger y se agrega un breakpoint donde queremos parar, lo que estamos haciendo es agregar una interrupción particular. El debugger está programado para que pueda acceder a los datos del programa que está siendo debuggeado. Para activarlo

10

hay que hacerlo en modo kernel, y se activa vía la palabra PSW. En el modo debug significa que cada instrucción va a ser de alguna manera interrumpida para que se ejecute otro proceso.

E/S bloqueante y no bloqueante Las bloqueantes son como las recién mencionadas. El proceso se está ejecutando, pero necesita algo del Sistema Operativo entonces se lo solicita y se bloquea hasta que lo recibe. Las no bloqueantes son aquellas en las que el proceso necesita algo del sistema operativo, pero no se bloquea hasta que lo obtiene, sino que se sigue ejecutando. El problema es que, a diferencia de las E/S bloqueantes, al seguir ejecutando hay que preguntar a cada rato si la información que había solicitado ya está disponible o todavía no y hay que reintentar más tarde o no está disponible y se produce un error.

Creación de un proceso Puede ser creado por el sistema operativo para dar algún servicio. Yo creo un proceso porque necesito que haga algo para mí. También puede ser creado a pedido de otro proceso. El proceso que crea otro proceso se llamará padre y el creado se llamará hijo. El proceso padre e hijo pueden ejecutar de forma concurrente o el padre puede esperar a que los hijos finalicen. Pasos para crear un proceso: 1. 2. 3. 4.

Se asigna el Process ID. Dicho PID se va creando uno a uno. Se reserva espacio de estructuras (código, datos, pilas y heap). Se inicializa el PCB. Se ubica el PCB en listas de planificación.

En C en Linux, un proceso se crea a través de la función fork(): int pid; char *programa[]; = {“ps”, “f”, NULL); pid = fork(); if(pid o){ wait(NULL); printf( }

Finalización de un proceso a) Terminación normal, donde se ejecuta la llamada al sistema exit. No la escribimos cuando programamos, pero...


Similar Free PDFs