Descarga la aplicación para disfrutar aún más
Vista previa del material en texto
GESTION DE PROCESOS Un proceso es simplemente, un programa en ejecución que necesita recursos para realizar su tarea: tiempo de CPU, memoria, archivos y dispositivos de E/S. El SO es el responsable de: Crear y destruir los procesos. Parar y reanudar los procesos. Ofrecer mecanismos para que se comuniquen y sincronicen. La gestión de procesos podría ser similar al trabajo de oficina. Se puede tener una lista de tareas a realizar y a estas fijarles prioridades alta, media, baja por ejemplo. Debemos comenzar haciendo las tareas de prioridad alta primero y cuando se terminen seguir con las de prioridad media y después las de baja. Una vez realizada la tarea se tacha. Esto puede traer un problema que las tareas de baja prioridad pueden que nunca lleguen a ejecutarse y permanezcan en la lista para siempre. Para solucionar esto, se puede asignar alta prioridad a las tareas más antiguas. Hemos de tener en cuenta que en el ordenador se ejecutan los programas, y cada programa es divido en procesos que se cargan en memoria y se ejecutan uno tras otro. El sistema operativo es el encargado de hacerlo todo, la carga de los procesos en memoria y la ejecución de dichos procesos, pues para que se ejecute un programa es necesario que el microprocesador ejecute los procesos de ese programa. El microprocesador no hace las cosas por sí solo, es el sistema operativo el que determina que proceso se debe ejecutar y cuanto tiempo debe estar ejecutándose, a todo esto se le denomina gestión de procesos. Estados de un proceso Los estados por los que transita un proceso son: Nuevo: El proceso está siendo creado En Ejecución: Se están ejecutando las instrucciones. En espera: El proceso está esperando a que se produzca un suceso Preparado: El proceso está a la espera de que se le asigne a un procesador Terminado: Ha finalizado su ejecución En el estado en ejecución solo puede haber un proceso, sin embargo, varios pueden estar listos o bloqueados. Los procesos no pueden pasar por ellos mismos de listos a ejecución, es el S.O. el http://es.wikipedia.org/wiki/Proceso_(inform%C3%A1tica) http://es.wikipedia.org/wiki/Tiempo_de_CPU que decide cuando se pasa de listo a ejecutado. Bloque De Control De Procesos Cada proceso se encuentra representado en el S.O. mediante una estructura denominada “Bloque de Control de Procesos” o “PCB”, que contiene toda la información que se necesita saber sobre el proceso entre otras cosas debe guardar el estado actual del proceso. Un PCB contiene muchos elementos de información asociados con un proceso específico, entre los que se incluyen: Estado del proceso: El estado puede ser nuevo, en ejecución, en espera, etc. Contador de programas: Contiene la dirección de la siguiente instrucción a ejecutar por el proceso. Registro de CPU: Varían en cuanto a número y tipo, dependiendo de la arquitectura de la computadora. Incluye acumuladores, registro de índices, punteros de pila y registros de propósito general. Información de planificación CPU: Incluye prioridad del proceso, apuntadores a colas de planificación, etc. (Información del algoritmo de planificación). Información de gestión de memoria: Incluye información acerca del valor de los registros base y limites, las tablas de paginación o tablas de segmentos, dependiendo del mecanismo de gestión de memoria. Información contable: Contiene información acerca de la cantidad de CPU y tiempos empleados, los límites de tiempo asignados, el número de trabajo o de proceso. Información del estado de E/S: Esta información incluye, solicitudes pendientes de E/S, dispositivos de E/S asignados al proceso, etc. GESTION DE USUARIOS Y GRUPOS La gestión de usuarios y grupos ha ido evolucionando en los distintos sistemas operativos, siendo inexistente en los primeros y actualmente una parte importante de todos ellos. Los primeros sistemas operativos no disponían de la tecnología multiusuario, y por tanto el tipo de usuario no estaba definido. Así, cualquier que se conectara a la máquina o la usara tenía acceso sin restricciones a toda ella. Esto era una gran desventaja, ya que tanto un usuario inexperto como alguien con malas intenciones podían borrar cualquier archivo de vital importancia para el sistema o usarlo para cualquier propósito sin necesidad de autentificarse. Más tarde los monousuario se fueron quedando obsoletos y surgieron los primeros sistemas multiusuario. Estos permiten proveer de servicios a varios usuarios con los mismos recursos compartidos. Prácticamente todos los sistemas operativos de la actualidad son multiusuario, y podemos clasificarlos según estén basados en Unix (aquí nos centraremos en las distribuciones linux), basados en Windows NT y otros, como los SO para móviles o MAC OS. La tecnología multiusuario permite distribuir los recursos a los diferentes usuarios, agrupándolos y dando permisos a cada uno de ellos. De esta forma, aprovechamos los recursos de nuestro ordenador, minimizamos riesgos de eliminar archivos vitales del sistema sin darnos cuenta, disponemos de más privacidad, pudiendo incluso cifrar nuestros directorios personales, manteniendo los documentos de cada usuario separados y mejor organizado, y cada usuario puede personalizar el sistema a su medida añadiendo los programas que considere necesarios, y adaptando en general la máquina a sus necesidades. Además, el hecho de tener usuarios con contraseñas permite saber quién está usando la máquina en cada momento y dejar un registro de las acciones llevadas a cabo por dicho usuario. Tipos de usuario Principalmente se pueden distinguir dos tipos de usuarios: El administrador es el usuario que tiene privilegios ilimitados. Está pensado para llevar a cabo tareas de mantenimiento o administrativas que conllevan modificar archivos fundamentales del sistema, no debe usarse como usuario por defecto, ya que sería un gran https://belenus.unirioja.es/~jodiazde/Trabajo%20Web/mono.html https://belenus.unirioja.es/~jodiazde/Trabajo%20Web/unix.html https://belenus.unirioja.es/~jodiazde/Trabajo%20Web/win.html riesgo. Los usuarios limitados son los que se deben elegir para un uso general del ordenador. Dependiendo de los distintos sistemas operativos y de la utilidad que se le quiera dar, pertenecerá a varios grupos, de los cuales dependerán los permisos que tenga el usuario. Grupos Los grupos varían bastante en función del sistema operativo que estemos usando. Los grupos nos permiten manejar varios usuarios al mismo tiempo, de forma que cuando asignamos determinados permisos u otras opciones a un grupo, estos se establecen para todos los usuarios pertenecientes a dicho grupo, haciendo la tarea de administración de usuarios mucho más efectiva. En general cabe destacar el grupo administradores, o admin. Los usuarios pertenecientes a estos grupos, a pesar de no ser ellos mismos administradores pueden "tomar prestados" privilegios de administrador durante cortos periodos de tiempo para realizar tareas concretas. De este modo conseguimos mantener la seguridad de nuestro sistema sin la tediosa tarea de cambiar al usuario Administrador cada vez que queramos realizar tareas administrativas. Sistemas Monousuarios Un sistema monousuario, es aquel en el que el tipo de usuario no está definido, y por tanto sólo existe un usuario con todos los privilegios. Normalmente son sistemas operativos antiguos monotarea, o sistemas operativos que incorporan un modo monousuario para tareas administrativas, o como modo a prueba de fallos. Evidentemente en este tipo de sistemas operativos, no existe gestión de usuarios ni de grupos, ya que no existen los mismos. Los principales sistemas monousuarios o con modo monousuario son: Versiones de Windows Las primeras versiones de Windows (1.0, 2.0, 3.1, 3.11) funcionabansobre un entorno MS-DOS. Todos ellos eran sistemas monotarea, por tanto monousuario. Más tarde, sobre 1995, aparecen los primeros sistemas operativos parcialmente independientes de MS-DOS que ya eran multitarea. Estos son Windows 95, y más tarde (1998) Windows 98, sin embargo no son sistemas operativos multiusuario. En Windows 98 ya se pueden gestionar unos usuarios pero con muy pocas opciones, con una seguridad prácticamente nula, sin gestión de permisos ni opción de personalizar la máquina en función de cada usuario. La tecnología multiusuario aparece en los sistemas operativos Windows con la llegada de los basados en Windows NT. Estos ya permiten gestionar recursos, permisos, personalizar el ordenador, etc. Se analizan más profundamente en su sección. Versiones de MAC Al igual que con los sistemas windows, las primeras versiones eran monotarea y no disponían de usuarios diferenciados (Sistema 1, Sistema 2, Sistema 3, Sistema 4, Sistema 6). Sistema 7 (1990) ya incluía alguna diferenciación de usuarios y permitía iniciar algo parecido a sesiones muy primitivas. MAC OS 9.0 ya implementó la tecnología multiusuario propiamente dicha, y a partir de ahí fue evolucionando. En sistemas MAC además hay un modo monousuario distinto del modo seguro ya que el sistema inicia directamente una consola sin iniciar los componentes del núcleo MAC. Versiones Linux Las distribuciones Linux, al estar basadas en Unix, son todas multiusuario. Sin embargo los sistemas operativos basados en Unix, proveen de funcionalidades en modo monousuario a través del sistema SystemV y los runlevels. Windows Concepto de usuario Los sistemas Windows NT son sistemas operativos que administran sesiones. Esto significa que cuando se inicia un sistema, es necesario registrarse con un nombre de usuario y una contraseña. En Windows NT se dispone de una cuenta de Administrador de forma predeterminada, que no se puede borrar, y de otra cuenta Invitado. Es posible (y se recomienda) modificar los permisos de los usuarios (qué acciones pueden realizar) y también agregar usuarios mediante el Administrador de usuarios. El administrador de usuarios es la herramienta por defecto que incorpora Windows NT para dicha tarea. Se encuentra en el Menú Inicio (Programas/Herramientas de administración). Desde esta herramienta podemos crear nuevos usuarios, cada uno con los campos Usuario, Nombre completo, Descripción y Contraseña, y algunas opciones como Forzar al usuario a cambiar la contraseña, o activar o desactivar usuario. Podemos distinguir tres tipos de cuentas en Windows NT: Administrador: Se utiliza para administrar la configuración global de equipos y https://belenus.unirioja.es/~jodiazde/Trabajo%20Web/win.html https://belenus.unirioja.es/~jodiazde/Trabajo%20Web/win.html dominios. Tiene permisos para verlo, ejecutarlo, instalarlo y borrarlo todo. Invitado: Permite que, en ocasiones, los usuarios inicien sesión y tengan acceso al equipo local. Esta opción está desactivada de forma predeterminada. Cuentas creadas por usted, que pueden ser cuentas limitadas, o cuentas con permiso de administrador. Sus permisos dependerán de los grupos a los que pertenezcan. No se aconseja trabajar desde Administrador continuamente, ya que al no tener ninguna restricción sobre el sistema operativo, si un virus entra en tu máquina por la red, o te descargas un archivo infectado y lo ejecutas, tiene control total sobre el sistema pues se ejecuta con los permisos de tu cuenta. El programa malicioso se podrá poner como autoarrancable cada vez que inicies el sistema operativo, e incluso tendrá privilegios para ocultar su presencia a antivirus y cortafuegos. Por tanto, debemos crear una cuenta y configurar en función de nuestras necesidades, y usar la cuenta de Administración sólo para tareas administrativas. Por tanto, conviene tener claro los distintos grupos de nuestro sistema y qué permisos y privilegios tendrán los usuarios pertenecientes a cada grupo. Grupos Windows NT también permite que la administración de usuario mediante grupo. Esto significa que puede definir grupos de usuarios con el mismo tipo de permisos, organizándolos en categorías. Un grupo es un conjunto de cuentas de usuario. Un usuario que se agrega a un grupo obtiene todos los permisos y derechos de ese grupo. Los grupos de usuarios hacen más sencilla la administración, ya que es posible otorgar permisos a varios usuarios a la vez. Hay dos tipos diferentes de grupos: Grupos locales: Otorga a los usuarios permisos para que accedan a un recurso de red. También sirven para conceder a los usuarios privilegios para abrir tareas de sistema (como cambiar la hora, hacer copias de seguridad, recuperar archivos, etc.). Existen grupos locales preconfigurados. Grupos globales: Se usan para organizar las cuentas de usuario de dominio. También se usan en redes de varios dominios, cuando los usuarios de un dominio necesitan tener acceso a recursos de otro dominio. Grupos de Seguridad: Los grupos pueden tener descriptores de seguridad asociados con ellos. Grupos de distribución: Los grupos se utilizan para las listas de distribución de correo electrónico. No pueden tener descriptores de seguridad asociados. Aquí nos centraremos en los primeros, ya que son los que intervienen a la hora de gestionar nuestra propia máquina, y no entraremos en la gestión de cuentas en dominios. Cuando se inicia Windows NT por primera vez, se crean seis grupos de forma predeterminada: Administradores Operadores de copia Duplicadores Usuarios Avanzados Usuarios Invitados El grupo más importante es Administradores. A este grupo pertenecen los usuarios que creamos con privilegios. Hay que diferenciar a los usuarios pertenecientes a este grupo del usuario Administrador. El usuario Administrador tiene capacidad para hacer cualquier cosa, mientras que los usuarios que pertenecen a este grupo pueden ejecutar programas con permisos de administrador, esto es, tomar permisos de administrador sólo para tareas determinadas. El resto de grupos no son demasiado importantes, y basta con saber que podemos agrupar a los usuarios en ellos (o en nuevos grupos que creemos) y de esta forma gestionar los permisos de los grupos directamente, en vez de tener que gestionar los permisos de cada usuario. Por defecto, todos los usuarios (excepto algunos especiales utilizados por servicios o aplicaciones concretas) pertenecen al grupo Usuarios. Gestión de usuarios y grupos desde la consola de comandos Podemos gestionar los usuarios y grupos en Windows NT desde la consola de comandos. Esto se hace desde el comando net accounts, y net group respectivamente. Como la ayuda con net account /? y net group /? no es muy extensa, estos son los comandos más usados: NET ACCOUNTS: Muestra los distintos comandos que se pueden usar NET ACCOUNTS /DOMAIN: Ver la contraseña de inicio de sesión y los requisitos para el dominio de la red. NET ACCOUNTS /FORCELOGOFF:minutes /DOMAIN: Establece el numero de minutos que un usuario tiene antes de ser forzado a salir de su cuenta desde que su cuenta caduca. NET ACCOUNTS /FORCELOGOFF:NO /DOMAIN: Evita la salida de sesion forzada cuando uan cuenta caduca. NET ACCOUNTS /MINPWLEN:C /DOMAIN: Establece el numero de caracteres mínimo de una contraseña. Los valores que puede tomar son 0-14, por defecto 6. NET ACCOUNTS /MAXPWAGE:dd /DOMAIN: Establece el número de dias durante los cuales una contraseña es válida. El rango es 1-49710; the default is 90 days. NET ACCOUNTS /MAXPWAGE:UNLIMITED /DOMAIN: Establace que las contraseñas nunca expiran. NET ACCOUNTS /MINPWAGE:dd /DOMAIN: Establece un minimo de dias que deben pasar antes de que un usuario pueda cambiar su contraseña. (por defecto = 0) NET ACCOUNTS /UNIQUEPW:x /DOMAIN:Requiere que las nuevas contraseñas sean diferentes de 'x' numero de contraseñas anteriores. El rango de 'x' es de 1 a 24. NET ACCOUNTS /SYNC /DOMAIN: Sincroniza la base de datos de cuentas de usuario (PDC and BDC). NET USER [/DOMAIN]: Ver detalles de cuentas de usuario. NET USER username {password | *} /ADD [opciones] [/DOMAIN]: Añade una cuenta de usuario. NET USER [username [password | *] [opciones]] [/DOMAIN]: Modifica una cuenta de usuario. NET USER username [/DELETE] [/DOMAIN]: Borra una cuenta de usuario NET USER administrator /random: Genera una contraseña aleatoria NET GROUP groupname /ADD [/COMMENT:"text"] [/DOMAIN]: Añade un grupo. NET GROUP [groupname [/COMMENT:"text"]] [/DOMAIN]: Edita un grupo. NET GROUP groupname /DELETE [/DOMAIN]: Borra un grupo NET GROUP groupname username [...] /ADD [/DOMAIN]: Añade un usuario a un grupo. NET GROUP groupname username [...] /DELETE [/DOMAIN]: Borra a un usuario de un grupo. Linux Linux es un sistema multiusuario, y por tanto, en él se pueden diferenciar y administrar distintos usuarios y grupos. Usuarios El archivo /etc/passwd contiene toda la información relacionada con el usuario (registro, contraseña, etc.). Este archivo posee un formato especial que permite marcar a cada usuario y cada una de sus líneas tiene el siguiente formato: nombre_de_cuenta : contraseña : numero_de_usuario : numero_de_grupo : comentario : directorio : programa_de_inicio Se especifican siete campos separados por el carácter ":": El nombre de cuenta del usuario La contraseña del usuario (codificada, por supuesto) El número entero que identifica al usuario para el sistema operativo (UID = ID del usuario, identificación del usuario) El número entero que identifica al grupo del usuario (GID = ID del grupo, identificación del grupo) El comentario en el que se puede encontrar la información sobre el usuario o simplemente su nombre real El directorio de conexión, que es el directorio que se abre cuando se conecta al sistema El comando es el que se ejecuta después de la conexión al sistema (con frecuencia éste es el intérprete de comandos) Es importante saber que las contraseñas ubicadas en este archivo están codificadas. Por lo tanto, es inútil editar y reemplazar el campo password al introducir directamente la contraseña. Esto sólo provocaría el bloqueo de la cuenta. Añadiendo usuarios Usaremos el comando: useradd [opciones] nombre de usuario Opciones: (se muestran las más importantes, para ver todas basta con hacer man useradd) c comentario → Para poner un comentario sobre el usuario d directorio → Especificamos la trayectoria absoluta del directorio de conexión HOME. En este directorio se copiarán los ficheros del usuario como el .profile m → Si el directorio de conexión no existe lo crea, siempre que exista el directorio padre de este. g grupo → El grupo de usuarios al que se conecta el usuario. Debe existir previamente. G grupo1,grupo2,.. → Otros grupos a los que se añadirá el usuario. s shell → Trayectoria absoluta del shell de conexión. Para el shell Korm hay que poner la ruta /bin/ksh y para el shell bourne /bin/sh. Modificando usuarios Basta con usar el comando: usermod [opciones] nombre de usuario Grupos El archivo /etc/group contiene una lista de los usuarios que pertenecen a los diferentes grupos. De hecho, cada vez que un gran número de usuarios puede tener acceso al sistema, frecuentemente se los ubica en grupos diferentes, cada uno de los cuales posee sus propios derechos de acceso a los archivos y directorios. Tiene diferentes campos separados por ":": nombre_de_grupo : campo_especial : numero_de_grupo: miembro1, miembro2 Con frecuencia, el campo especial está vacío. El número de grupo corresponde al número del vínculo entre los archivos /etc/group y los archivos /etc/passwd. Añadiendo grupos Para añadir un grupo, el administrador puede cambiar el archivo /etc/group con un editor de texto. También puede usar el comando addgroup o groupadd (no siempre presentes). En el primer caso, sólo tendrá que añadir las líneas relacionadas con los grupos. Por ejemplo, la línea: admin : : 56 : ccm Agregando un usuario a un grupo Para agregar un usuario a un grupo, sólo debe editar el archivo /etc/group y agregar el nombre al final de la línea separando los nombres de los miembros con una coma. Eliminando grupos Para eliminar un grupo, sólo debe editar el archivo /etc/group y eliminar la línea correspondiente. Tenga en cuenta: /etc/passwd, Si ese grupo tenía usuarios, no olvide cambiar los números (GID) del grupo eliminado. También es importante buscar los archivos y directorios de este grupo para cambiarlos (de lo contrario, los archivos y directorios pueden volverse inaccesibles). GESTIÓN DE LA MEMORIA La memoria es uno de los principales recursos de la computadora, la cual debe de administrarse con mucho cuidado. Aunque actualmente la mayoría de los sistemas de cómputo cuentan con una alta capacidad de memoria, de igual manera las aplicaciones actuales tienen también altos requerimientos de memoria, lo que sigue generando escasez de memoria en los sistemas multitarea y/o multiusuario. La parte del sistema operativo que administra la memoria se llama administrador de memoria y su labor consiste en llevar un registro de las partes de memoria que se estén utilizando y aquellas que no, con el fin de asignar espacio en memoria a los procesos cuando éstos la necesiten y liberándola cuando terminen, así como administrar el intercambio entre la memoria principal y el disco en los casos en los que la memoria principal no le pueda dar capacidad a todos los procesos que tienen necesidad de ella. Los sistemas de administración de memoria se pueden clasificar en dos tipos: los que desplazan los procesos de la memoria principal al disco y viceversa durante la ejecución y los que no. El propósito principal de una computadora es el de ejecutar programas, estos programas, junto con la información que accesan deben de estar en la memoria principal (al menos parcialmente) durante la ejecución. Para optimizar el uso del CPU y de la memoria, el sistema operativo debe de tener varios procesos a la vez en la memoria principal, para lo cual dispone de varias opciones de administración tanto del procesador como de la memoria. La selección de uno de ellos depende principalmente del diseño del hardware para el sistema. A continuación se observarán los puntos correspondientes a la administración de la memoria. Aspectos Generales Memoria real: La memoria real o principal es en donde son ejecutados los programas y procesos de una computadora y es el espacio real que existe en memoria para que se ejecuten los procesos. Por lo general esta memoria es de mayor costo que la memoria secundaria, pero el acceso a la información contenida en ella es de más rápido acceso. Sólo la memoria cache es más rápida que la principal, pero su costo es a su vez mayor. Memoria virtual: El término memoria virtual se asocia a dos conceptos que normalmente aparecen unidos: El uso de almacenamiento secundario para ofrecer al conjunto de las aplicaciones la ilusión de tener más memoria RAM de la que realmente hay en el sistema. Esta ilusión existe tanto a nivel del sistema, es decir, teniendo en ejecución más aplicaciones de las que realmente caben en la memoria principal, sin que por ello cada aplicación individual pueda usar más memoria de la que realmente hay o incluso de forma más general, ofreciendo a cada aplicación más memoria de la que existe físicamente en la maquina. Ofrecer a las aplicaciones la ilusión de que están solas en el sistema, y que por lo tanto, pueden usar el espacio de direcciones completo.Esta técnica facilita enormemente la generación de código, puesto que el compilador no tiene por qué preocuparse sobre dónde residirá la aplicación cuando se ejecute. Espacio de direcciones: Los espacios de direcciones involucrados en el manejo de la memoria son de tres tipos: Direcciones físicas: Son aquellas que referencian alguna posición en la memoria física. Direcciones lógicas: Son las direcciones utilizadas por los procesos. Sufren una serie de transformaciones, realizadas por el procesador (la MMU), antes de convertirse en direcciones físicas. Direcciones lineales: Direcciones lineales se obtienen a partir de direcciones lógicas tras haber aplicado una transformación dependiente de la arquitectura. Los programas de usuario siempre tratan con direcciones virtuales, nunca ven las direcciones físicas reales. Unidad de manejo de memoria: La unidad de manejo de memoria (MMU) es parte del procesador. Sus funciones son: Convertir las direcciones lógicas emitidas por los procesos en direcciones físicas. Comprobar que la conversión se puede realizar. La dirección lógica podría no tener una dirección física asociada. Por ejemplo, la página correspondiente a una dirección se puede haber trasladado a una zona de almacenamiento secundario temporalmente. Comprobar que el proceso que intenta acceder a una cierta dirección de memoria tiene permisos para ello. La MMU se inicializa para cada proceso del sistema. Esto permite que cada proceso pueda usar el rango completo de direcciones lógicas (memoria virtual), ya que las conversiones de estas direcciones serán distintas para cada proceso. En todos los procesos se configura la MMU para que la zona del núcleo solo se pueda acceder en modo privilegiado del procesador. La configuración correspondiente al espacio de memoria del núcleo es idéntica en todos los procesos. Intercambio 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: Consiste en trasladar el código y los datos de un proceso completo de memoria al sistema de almacenamiento secundario, para cargar otro previamente almacenado, no permite a un proceso utilizar más memoria RAM de la que realmente existe en el sistema. Esta técnica puede ser ineficiente ya que se tiene que hacer el intercambio completo del proceso, aunque éste solo vaya a ejecutar una pequeña porción del código. Durante el intercambio un proceso puede ser sacado temporalmente de memoria y llevado a un lugar especial del disco y posteriormente vuelto a memoria y continuada su ejecución. El lugar de almacenamiento temporal suele ser un espacio suficientemente grande como para acomodar copias de las imágenes de memoria de todos los usuarios. Asignación contigua: La memoria principal normalmente se divide en dos particiones: Sistema operativo residente, normalmente en la parte baja de memoria con los vectores de interrupción. Procesos de usuario en la parte alta. Asignación de partición simple: Puede utilizarse un esquema de registro de relocalización y límite para proteger un proceso de usuario de otro y de cambios del código y datos del sistema operativo. El registro de relocalización contiene la dirección física más pequeña; el registro limite contiene el rango de las direcciones lógicas. Cada dirección lógica debe ser menor al registro limite. Asignación de particiones múltiples: Bloques de distintos tamaños están distribuidos en memoria, cuando llega un proceso se le asigna un hueco suficientemente grande para acomodarle. El sistema operativo debe tener información sobre: Particiones asignadas Particiones libres (huecos) Asignación de partición dinámica El proceso de compactación es una instancia particular del problema de asignación de memoria dinámica, el cual es el cómo satisfacer una necesidad de tamaño n con una lista de huecos libres. Existen muchas soluciones para el problema. El conjunto de huecos es analizado para determinar cuál hueco es el más indicado para asignarse. Las estrategias más comunes para asignar algún hueco de la tabla son: Primer ajuste: Consiste en asignar el primer hueco con capacidad suficiente. La búsqueda puede iniciar ya sea al inicio o al final del conjunto de huecos o en donde terminó la última búsqueda. La búsqueda termina al encontrar un hueco lo suficientemente grande. Mejor ajuste: Busca asignar el espacio más pequeño de los espacios con capacidad suficiente. La búsqueda se debe de realizar en toda la tabla, a menos que la tabla esté ordenada por tamaño. Esta estrategia produce el menor desperdicio de memoria posible. Peor ajuste: Asigna el hueco más grande. Una vez más, se debe de buscar en toda la tabla de huecos a menos que esté organizada por tamaño. Esta estrategia produce los huecos de sobra más grandes, los cuales pudieran ser de más uso si llegan procesos de tamaño mediano que quepan en ellos. Se ha demostrado mediante simulacros que tanto el primer y el mejor ajuste son mejores que el peor ajuste en cuanto a minimizar el tiempo del almacenamiento. Ni el primer ajuste o el mejor ajuste es claramente el mejor en términos de uso de espacio, pero por lo general el primer ajuste es más rápido.
Compartir