Sistemas Operativos, Manejo de la memoria 8 Segmentación — Transcript
Full transcript
- 0:01Hola, ¿qué tal? ¿Cómo estás? Seas
- 0:03bienvenido al curso Fundamentos de
- 0:05Sistemas Operativos. Estamos viendo el
- 0:07tema de manejo de la memoria. Hago
- 0:10referencia al capítulo ocho del libro de
- 0:12texto de Silberschatz y Galvin.
- 0:15A continuación vamos a ver otra técnica
- 0:18diferente a la paginación, que ahora es
- 0:20la segmentación.
- 0:22¿Y qué es la segmentación? Pues la
- 0:24segmentación es un esquema de manejo de
- 0:27la memoria que es visible para el
- 0:28programador.
- 0:30La paginación, a lo mejor no te lo
- 0:32mencioné, pero la paginación es
- 0:34invisible para el programador.
- 0:36¿Por qué es invisible para el
- 0:37programador?
- 0:39Porque de una dirección de memoria el
- 0:41programador no tiene por qué saber
- 0:43cuántos bits son para la página y
- 0:45cuántos bits para el desplazamiento.
- 0:48Es decir, el programador puede estar
- 0:50manipulando direcciones y estar pasando
- 0:53por diferentes páginas sin darse cuenta.
- 0:56En cambio, la segmentación sí es visible
- 1:00para el programador y ahora el
- 1:02programador va a tener que estar atento
- 1:05en no salirse de un segmento. Vamos a
- 1:07ver esto.
- 1:09Ahora pues un programa es una colección
- 1:12de segmentos.
- 1:14Y un segmento pues es una unidad lógica
- 1:16como
- 1:18código,
- 1:19donde está el programa principal, las
- 1:21funciones, todo lo que es el código del
- 1:24programa.
- 1:26Stack. En el stack ¿qué se almacena?
- 1:29Pues por ejemplo, cuando nosotros
- 1:31hacemos una llamada a una función, ahí
- 1:33se almacena la dirección de retorno.
- 1:36También, por ejemplo, ahí se pasan
- 1:38parámetros a las funciones que son
- 1:41parámetros utilizados localmente
- 1:44y todas las variables locales en las
- 1:47funciones
- 1:48se guardan en el stack.
- 1:50Y bueno, pues ustedes saben cómo es un
- 1:52stack.
- 1:53La lógica en un stack es
- 1:56primero en entrar, último en salir.
- 1:59Y porque un stack y las variables
- 2:02globales se guardan en un stack,
- 2:04nosotros podemos hacer programas
- 2:06recursivos,
- 2:07que en algún momento dado ya lo debieron
- 2:10de haber visto.
- 2:12Y bueno, pues los datos.
- 2:15¿Qué hay en el segmento de datos? Pues
- 2:18están las variables globales.
- 2:20Entonces podríamos decir que cuando un
- 2:23proceso está cargado en memoria, pues va
- 2:25a haber un segmento de código,
- 2:27un segmento de stack y un segmento de
- 2:29datos.
- 2:32Ahora pues si vemos una visión lógica de
- 2:35la segmentación, pues en el espacio de
- 2:37usuario tendríamos, por ejemplo, los
- 2:39segmentos del programa. Como podemos ver
- 2:42los segmentos son de diferente tamaño,
- 2:45es decir, ahora tenemos segmentos
- 2:48y estos segmentos son de longitud
- 2:50variable y en el espacio de direcciones
- 2:53físico estos segmentos pues están en
- 2:56diferentes direcciones físicas.
- 3:02Ahora vamos a ver cómo se haría la
- 3:04traducción de direcciones lógicas a
- 3:07direcciones físicas con segmentación,
- 3:11¿de acuerdo?
- 3:12Vamos a suponer que tenemos tres
- 3:14segmentos.
- 3:16Este segmento empieza en la dirección
- 3:1910,000 hexadecimal, es decir, la
- 3:21dirección física donde inicia este
- 3:22segmento es la dirección 10,000
- 3:25hexadecimal.
- 3:26Este segmento mide 4,096
- 3:29bytes que en hexadecimal es 1,000.
- 3:33El segundo segmento
- 3:35empieza en la dirección física 12,000
- 3:39hexadecimal.
- 3:41Este segmento mide
- 3:4416,384
- 3:47bytes que en hexadecimal es 4,000.
- 3:51Y el tercer segmento empieza en la
- 3:53dirección física 18,000
- 3:57hexadecimal
- 3:58y mide
- 4:0010,240
- 4:02bytes que en hexadecimal
- 4:04es 2,800.
- 4:07Bueno, para esto entonces vamos a tener
- 4:09ahora una tabla de segmentos donde el
- 4:13índice de la tabla de segmentos va a ser
- 4:15el número de segmento
- 4:17y en esta tabla va a estar contenida la
- 4:19base
- 4:20que es donde inicia el segmento, por
- 4:23ejemplo, 10,000 para el segmento 0,
- 4:2612,000 para el segmento 1,
- 4:2918,000 para el segmento 2. Y el tamaño
- 4:33aquí está en hexadecimal,
- 4:351,000 que es 4,096 para el segmento 0,
- 4:394,000 hexadecimal que es 16,384
- 4:42para el segmento 1
- 4:44y 2,800 hexadecimal que es 10,240 para
- 4:49el segmento 2.
- 4:52Ahora pues una dirección lógica se va a
- 4:54conformar de segmento y desplazamiento.
- 4:59El número de segmento pues lo vamos a
- 5:01utilizar como índice en la tabla de
- 5:04segmentos,
- 5:05vamos a obtener esta base y a esta base
- 5:09le vamos a sumar el desplazamiento, ¿de
- 5:12acuerdo?
- 5:14Algo que va a ser importante es que aquí
- 5:16tenemos que comparar si este
- 5:18desplazamiento no excede el tamaño del
- 5:21segmento.
- 5:22En este caso no fue así,
- 5:24por lo tanto pues fue
- 5:2612,000 que fue la base más 2F00
- 5:31que es el desplazamiento,
- 5:33esto me dio
- 5:3514F00
- 5:38que es la dirección física que
- 5:40corresponde a esta dirección lógica.
- 5:45Ahora vamos a ver
- 5:47un ejemplo donde tengo
- 5:49una dirección lógica que es segmento 1
- 5:53offset
- 5:544,100.
- 5:57¿Qué va a pasar aquí? Pues resulta que
- 5:59este 4,100
- 6:01excede el tamaño del segmento.
- 6:04¿Qué es lo que va a pasar?
- 6:06Pues esta va a ser una dirección física
- 6:09inválida, ¿de acuerdo?
- 6:12¿Por qué razón? Porque aquí sí, en la
- 6:14segmentación tenemos que estar atento
- 6:17de que el desplazamiento no exceda el
- 6:20tamaño del segmento.
- 6:24Bueno, pues así es como se hace la
- 6:26traducción de direcciones lógicas en un
- 6:29sistema de segmentación a direcciones
- 6:31físicas.
- 6:33Yo tengo una dirección virtual que es
- 6:34segmento, desplazamiento.
- 6:37A este segmento
- 6:40se le suma un apuntador a la tabla de
- 6:42segmentos, ¿para qué?
- 6:44Para saber en dónde está la entrada,
- 6:47donde está el tamaño y la base.
- 6:50A esta base le vamos a sumar el
- 6:53desplazamiento, si es que el
- 6:54desplazamiento no excede el tamaño, ¿de
- 6:56acuerdo?
- 6:58Y esto nos va a dar una dirección
- 7:01física.
- 7:04Es decir, en resumen,
- 7:06una dirección lógica consiste de un par
- 7:08que es segmento desplazamiento
- 7:11y tenemos una tabla de segmentos que
- 7:14mapea de forma bidimensional
- 7:16direcciones
- 7:18físicas.
- 7:20Cada entrada de la tabla contiene la
- 7:22base que es la dirección,
- 7:25donde inicia ese segmento y el límite
- 7:28que indica el tamaño de ese segmento.
- 7:33Vamos a ver que ahora vamos a tener en
- 7:36el procesador un registro que va a ser
- 7:38el
- 7:42¿Qué va a ser ese registro? Pues va a
- 7:44ser un registro que apunta a la
- 7:46dirección de la tabla de segmentos en
- 7:48memoria, es decir,
- 7:50donde inicia la tabla de segmentos, en
- 7:52qué parte de la memoria está.
- 7:55Y también voy a tener otro registro que
- 7:58va a ser el
- 8:01Este registro indica el número de
- 8:03segmentos que va a tener el programa,
- 8:06¿de acuerdo?
- 8:07Por lo tanto, pues una dirección va a
- 8:10ser válida si el número de segmento del
- 8:13cual quiero traducir la dirección
- 8:16va a ser menor que STLR,
- 8:19es decir, no se va a salir
- 8:21de la tabla de segmentos.
- 8:25Recolocación.
- 8:26¿Okay? En la segmentación la
- 8:28recolocación es dinámica.
- 8:31Puede ser también por tabla de segmentos
- 8:35y la compartición
- 8:37también puedo tener segmentos
- 8:39compartidos.
- 8:41Es decir, el mismo número de segmento
- 8:46y la asignación
- 8:48pues la asignación, por ejemplo, puede
- 8:49ser el primer ajuste
- 8:51o el mejor ajuste.
- 8:54En la segmentación voy a tener
- 8:56fragmentación externa, esto pues es el
- 8:59mismo problema que estuvimos viendo con
- 9:01particiones de tamaño variable, ¿se
- 9:03acuerdan?
- 9:06Y en la segmentación pues voy a tener
- 9:09bits de protección asociados a los
- 9:11segmentos,
- 9:12es decir,
- 9:13todo lo que es la compartición de
- 9:15memoria ocurre a nivel de segmentación.
- 9:20Y bueno, en la segmentación lo que vamos
- 9:22a utilizar también o una de las ventajas
- 9:24que tiene la segmentación es que a nivel
- 9:27segmentación es donde se pueden manejar
- 9:29los permisos de cada segmento.
- 9:32Por ejemplo,
- 9:33con estos bits de protección
- 9:36yo puedo indicar que un segmento va a
- 9:37tener permisos de solo ejecución
- 9:40y, por lo tanto, pues un programa no va
- 9:42a poder escribir
- 9:44en un segmento que tenga permisos de
- 9:46solo ejecución.
- 9:47Por ejemplo, esos permisos se
- 9:49utilizarían para lo que es el segmento
- 9:51de código.
- 9:52Sin embargo, por ejemplo, el segmento de
- 9:54datos pues va a tener permisos de
- 9:57lectura y escritura,
- 9:58pero no va a tener permisos de
- 10:00ejecución. Por lo tanto, no puedo tener
- 10:03código cargado en el segmento de datos.
- 10:07Y bueno, pues ya que los segmentos
- 10:09varían en longitud,
- 10:11la asignación de memoria pues es un
- 10:13problema de asignación dinámica.
- 10:16Aquí vemos un ejemplo de la
- 10:18compartición, por ejemplo, es el ejemplo
- 10:20del editor.
- 10:22Los editores de texto, pues bueno,
- 10:24el editor tiene segmentos de código,
- 10:26esos segmentos pues van a estar
- 10:28compartidos, ¿de acuerdo? Es decir, si
- 10:30vemos la tabla de segmentos de los dos
- 10:33procesos,
- 10:34pues
- 10:35en ambos procesos el segmento de código
- 10:37tiene la misma dirección base y tiene el
- 10:40mismo tamaño, ¿de acuerdo?
- 10:43Y pues los segmentos de datos, pues los
- 10:45segmentos de datos van a ser, por
- 10:46ejemplo, en donde los editores de texto
- 10:49pues van a tener los archivos que van a
- 10:51estar editando
- 10:52y estos pues obviamente van a ser
- 10:54diferentes, van a ser diferentes para
- 10:56cada editor
- 10:57porque de esta manera pues cada editor
- 10:59puede estar editando
- 11:00diferentes archivos.
- 11:04Muchas gracias por tu atención, espero
- 11:06haya quedado claro y si no, pues las
- 11:08dudas las preguntamos.
About this transcript
This page contains the full transcript of Sistemas Operativos, Manejo de la memoria 8 Segmentación by Mtro. José Luis Elvira, generated from the public captions YouTube serves with the video. The transcript has 1,438 words across 277 segments, with the original timestamps preserved so you can click any line to jump to that moment in the embedded player.
What you can do with it
Use the transcript to take notes, quote the speaker, build a study guide, generate a summary with ChatGPT or Claude via the YouTube Summary tool, or export it as a timed subtitle file with YouTube to SRT. You can also re-open it in the transcriber to choose a caption track available on the video.
Free YouTube transcript tool
YouTube2Text is a free YouTube transcript generator — no signup, no daily limit. Paste any YouTube link and get the full transcript instantly, with timestamps, click-to-jump, caption language selection, AI prompts for ChatGPT, Claude, and Gemini, and exports to TXT, SRT, VTT, or Markdown.