segunda unidas open suse

39
INGENIERÍA EN COMPUTACIÓN SISTEMAS OPERATIVOS 6CV1 RESENDIZ COLIN PILAR MAGAÑA CASTILLO MIGUEL EDUARDO ORTEGA CORTES LUIS JOEL MARTINEZ CARRICOSA EDGAR JESUS RUIZ GARCIA NATALY INSTITUTO POLITÉCNICO NACIONAL escuela superior de ingeniería mecánica y eléctrica “Culhuacán”

Upload: miguel-magana

Post on 02-Jul-2015

60 views

Category:

Education


1 download

TRANSCRIPT

Page 1: Segunda unidas open suse

INGENIERÍA EN COMPUTACIÓN

SISTEMAS OPERATIVOS

6CV1

RESENDIZ COLIN PILAR

MAGAÑA CASTILLO MIGUEL EDUARDO

ORTEGA CORTES LUIS JOEL

MARTINEZ CARRICOSA EDGAR JESUS

RUIZ GARCIA NATALY

INSTITUTO POLITÉCNICO NACIONALescuela superior de ingeniería mecánica y eléctrica

“Culhuacán”

Page 2: Segunda unidas open suse

JERARQUIA DE MEMORIA

Se conoce como jerarquía de memoria a la organización piramidal de la memoria en niveles que tienen los ordenadores. Su objetivo es conseguir el rendimiento de una memoria de gran velocidad al coste de una memoria de baja velocidad, basándose en el principio de cercanía de referencias.

Los puntos básicos relacionados con la memoria pueden resumirse en:

• Cantidad

• Velocidad

• Coste

Page 3: Segunda unidas open suse
Page 4: Segunda unidas open suse
Page 5: Segunda unidas open suse

Por qué funciona la jerarquía ?

Principio de Localidad:

Los programas acceden a una porción relativamente pequeña del espacio de direcciones en un determinado

lapso de tiempo.

Localidad temporal

• Si un ítem es referenciado en determinado momento, es común que vuelva a ser referenciado poco tiempo

después

Localidad Espacial

• Cuando un ítem es referenciado en determinado momento, es común que los ítems con direcciones “cercanas“

también sea accedidos poco tiempo después.

Page 6: Segunda unidas open suse

Como se maneja la jerarquía?

• Registros <-> Memoria

• por el compilador (programador)

• cache <-> memoria

• por el hardware

• memoria <-> discos

• por el hardware y el sistema operativo (memoria virtual)

• por el programador (archivos)

Page 7: Segunda unidas open suse

MEMORIA SECUNDARIA:

almacenamiento secundario (memoria secundaria, memoria auxiliar o memoria externa) es el conjunto de dispositivos (aparatos) y medios (soportes) de almacenamiento, que conforman el subsistema de memoria de una computadora, junto a la memoria principal. También llamado periférico de almacenamiento.

La memoria secundaria es un tipo de almacenamiento masivo y permanente (no volátil), a diferencia de la memoria RAM que es volátil; pero posee mayor capacidad de memoria que la memoria principal, aunque es más lenta que ésta.

El proceso de transferencia de datos a un equipo de cómputo se le llama "procedimiento de lectura". El proceso de transferencia de datos desde la computadora hacia el almacenamiento se denomina "procedimiento de escritura".

Page 8: Segunda unidas open suse

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. Solo la memoria cache es más rápida que la principal, pero su costo es a su vez mayor.

Page 9: Segunda unidas open suse

Memoria cache

En el caso de Linux, el Sistema Operativo utiliza toda la memoria que no está siendo utilizada con el fin de poder acelerar las lecturas en disco, lo cual es conocido como memoria caché, o buffer. Esta memoria caché es liberada apenas se necesite memoria RAM para algún otro programa, por lo que si bien, no es menoría libre, pasa a serlo apenas se le necesite.

Debido a que la memoria es, desafortunadamente finita, y por lo tanto, un recurso escaso, el "buffer cache" usualmente no puede ser demasiado grande Cuando la "cache" se completa, los datos que no han sido usados por un periodo de tiempo prolongado son descartados y así la memoria es liberada para ser utilizada con nuevos datos.

Page 10: Segunda unidas open suse

Asignación de memoria

La asignación de memoria consiste en el proceso de asignar memoria para propósitos específicos, ya sea en tiempo de compilación o de ejecución. Si es en tiempo de compilación es estática, si es en tiempo de ejecución es dinámica y si son variables locales a un grupo de sentencias se denomina automática

El kernel controla la asignación y sobre-asignación de memoria, dejando que un programa reserve mas memoria de la que hay disponible, esto no significa que en realidad esta cantidad de memoria se vaya a usar.

Page 11: Segunda unidas open suse

La Asignación estática de memoria consiste en el proceso de asignar memoria en tiempo de compilación antes de que el programa asociado sea ejecutado, a diferencia de la asignación dinámica o la automática donde la memoria se asigna a medida que se necesita en tiempo de ejecución

Asignación automática de memoria

Las variables automáticas son variables locales a un bloque de sentencias. Pueden ser asignadas automáticamente en la pila de datos cuando se entra en el bloque de código . Cuando se sale del bloque, las variables son automáticamente desasignadas.3 Las variables automáticas tendrán un valor sin definir cuando son declaradas, por tanto es buena práctica de programación inicializarlas con un valor válido antes de usarlas.

Asignación dinámica de memoria

La asignación dinámica de la memoria es la asignación de almacenamiento de memoria para utilización por parte de un programa de computador durante el tiempo de ejecución de ese programa

Page 12: Segunda unidas open suse

Contigua simple

En este sistema de administración la memoria aparece al programa como una única extensión contigua de direcciones, compartida solo por él y por el sistema operativo. Se hace necesario lograr en este tipo de administración algún mecanismo de protección para el sistema operativo que es residente

• Administración trivial

• No permite multiprogramación

Page 13: Segunda unidas open suse
Page 14: Segunda unidas open suse
Page 15: Segunda unidas open suse
Page 16: Segunda unidas open suse

Partición fija

En este esquema se establecen particiones fijas de la memoria de una sola vez y para

siempre (por hardware o por sistema operativo), o en caso contrario esas particiones son

cambiables en tamaño mientras no haya trabajos ejecutándose (normalmente esta tarea

la realizará el operador desde consola).

Necesita guardar en una tabla de particiones:

– Dirección de comienzo de la partición

– Tamaño de la partición

Page 17: Segunda unidas open suse
Page 18: Segunda unidas open suse
Page 19: Segunda unidas open suse
Page 20: Segunda unidas open suse
Page 21: Segunda unidas open suse
Page 22: Segunda unidas open suse
Page 23: Segunda unidas open suse

Particionada variable

En este esquema las particiones se establecen según la longitud de los

programas iniciales. Al cabo de un tiempo se produce mucha fragmentación, por tanto existen

diversas políticas para asignar una partición de memoria libre. En principio sea cual fuere el

mecanismo de asignación de una partición libre se hace necesario contar con la información de

cuáles son esas particiones libres de aparece una fragmentación de la memoria debido a que

parte de la partición no es utilizada por el programa.

Page 24: Segunda unidas open suse
Page 25: Segunda unidas open suse
Page 26: Segunda unidas open suse
Page 27: Segunda unidas open suse
Page 28: Segunda unidas open suse
Page 29: Segunda unidas open suse
Page 30: Segunda unidas open suse
Page 31: Segunda unidas open suse

paginación

Para tener en cuenta arquitecturas de 64 bits, la paginación en Linux tiene 3 niveles de tablas de páginas en lugar de 2

Page 32: Segunda unidas open suse

Linux gestiona la memoria central y las tablas de páginas utilizadas para convertir las direcciones lineales

(virtuales) en direcciones físicas. Implementa una gestión de la memoria que es ampliamente independiente del

procesador sobre el que se ejecuta En realidad, la gestión de la memoria implementada por Linux considera

que dispone de una tabla de páginas a tres niveles:

(1) directorio global de tablas de páginas (page global dirertory) cuyas entradas contienen las direcciones de

páginas que contienen tablas intermedias

(2) directorio intermedio de tablas de páginas (page middle directory) cuyas entradas contienen las direcciones

de páginas que contienen tablas de páginas

(3) las tablas de páginas (page table) cuyas entradas contienen las direcciones de páginas de memoria que

contienen el código o los datos utilizados por el kernel o los procesos de usuario.

Page 33: Segunda unidas open suse

segmentacion

Se ha preferido la paginación sobre la segmentación porque: (1) La gestión de memoria es más

simple cuando todos los procesos usan los mismos valores de segmentos, es decir, tienen las mismas

direcciones lineales. (2) Un objetivo de Linux es la portabilidad, y muchos procesadores soportan la

segmentación de forma muy limitada.

Para hacer uso de la segmentación, se programa adecuadamente la GDT = Tabla de Descriptores Global.

Esta tabla es implementada por el array gdt_table referenciada por la variable gdt, que se encuentra definido

en el archivo arch/i386/kernel/head.S.

Los segmentos que se definen se superponen en el espacio de direcciones lineal. Como se emplean muy

pocos segmentos, solo es necesaria la GDT. La LDT no se usa por el kernel salvo que lo requiera un

proceso, aunque existe una llamada al sistema que permite crear sus propias LDTs.

Page 34: Segunda unidas open suse

Los segmentos empleados en Linux son los siguientes:

· Segmento de código del kernel.

· Base: 0x00000000, Límite (limit): 0xfffff,

· G = 1 (granularidad en páginas),

· S = 1 (Segmento normal de código o datos),

· Type = 0xa (Código, puede ser leído y ejecutado),

· DPL = 0 (Modo kernel para el nivel de privilegio del descriptor),

· D/B = 1 (Offset de 32 bits),

Segmento de datos del kernel:

· Base: 0x00000000, Límite (limit): 0xfffff,

· G = 1 (granularidad en páginas),

· S = 1 (Segmento normal de código o datos),

· Type = 0x2 (Datos, puede ser leído y escrito),

· DPL = 0 (Modo kernel),

· D/B = 1 (Offset de 32 bits),

· Idéntico al descriptor de segmento anterior salvo por el tipo, y se define por la

macro __KERNEL_DS.

Page 35: Segunda unidas open suse

Segmento de código de usuario:

· Base: 0x00000000, Límite: 0xfffff

· G = 1 (granularidad en páginas)

· S = 1 (Segmento normal de código o datos)

· Type = 0xa (Código, puede ser leído y ejecutado)

· DPL = 3 (Modo usuario)

· D/B = 1 (Offset de 32 bits)

· El descriptor de segmento se define por la macro __USER_CS.

Segmento de datos de usuario:

· Base: 0x00000000, Límite: 0xfffff,

· G = 1 (granularidad en páginas),

· S = 1 (Segmento normal de código o datos),

· Type = 0x2 (Datos, puede ser leído y escrito),

· DPL = 3 (Modo usuario),

· D/B = 1 (Offset de 32 bits),

· El descriptor de segmento se define por la macro __USER_DS.

Page 36: Segunda unidas open suse

Paginación por demanda

Un sistema de paginación por demanda es similar a un sistema de paginación con intercambios. Los

procesos residen en memoria secundaria (en el disco). Cuando queremos ejecutar un proceso, lo

metemos en memoria. Sin embargo, en vez de intercambiar todo el proceso hacia la memoria, utilizamos

un intercambiador perezoso. Un intercambiador perezoso nunca reincorpora una página a memoria a

menos que se necesite. Como ahora consideramos un proceso como una secuencia de páginas, en vez

de un gran espacio contiguo de direcciones, el término intercambio es técnicamente incorrecto. Un

intercambiador manipula procesos enteros, mientras que un paginador trata con las páginas

individualmente de un proceso.

Page 37: Segunda unidas open suse

Segmentación por demanda

Si no se dispone de hardware de paginacion, es posible implementar memoria virtual con segmentacion bajo

demanda Para ello es necesario intercambio hardware de segmentacion que indique si el segmento esta

presente en memoria o no de manaera que:

Se referencia un segmento que esta en memoria: se accede

normalmente

Se referencia un segmento que no esta en memoria: se produce una excepción

Los algoritmos de reemplazo son similares a los de la paginacion bajo demanda. Veamos como lo haca OS/2

El sistema mantenia una lista de los segmentos en memoria. Periodicamente el sistema

Colocaba los segmentos accedidos la final de la lista

Limpiaba los bits de acceso

Cuando habia que reemplazar un segmento se reemplazaba, en caso de ser necesario, el primero (o los

primeros) de la lista: se trata de una aproximancion a LRU pues la lista esta \ordenada\ por tiempo de acceso

Page 38: Segunda unidas open suse

Servicios POSIX

POSIX es el acrónimo de Portable Operating System Interface; la X viene de UNIX como seña de

identidad de la API.

POSIX es el estándar de interfaz de sistemas operativos portables de IEEE basado en el sistema

operativo UNIX. Aunque UNIX era prácticamente un estándar industrial, había bastantes diferencias entre

las distintas implementaciones de UNIX, lo que provocaba que las aplicaciones no se pudieran

transportar fácilmente entre distintas plataformas UNIX.

El POSIX Se trata de un estándar que intenta asegurar la portabilidad entre diferentes sistemas

operativos. Dentro del estándar se especifica el comportamiento de las expresiones regulares y de las

herramientas más comunes que las usan.

Page 39: Segunda unidas open suse

El POSIX es un grupo de estándares en evolución. Cada uno de los estándares que lo componen cubre

diferentes aspectos de los sistemas operativos. Algunos de ellos ya han sido aprobados, mientras que otros

están aún en fase de desarrollo. Los estándares POSIX se pueden agrupar en tres categorías diferentes: