miércoles, 17 de junio de 2020

Programación III

Asignatura: Laboratorio de Programación III

Curso: 6° Informática


Profesora: Evangelina Rivero



Actividades:

1) Leer el texto
2) ¿Qué es la shell? ¿Cómo actúa? ¿Cómo funciona?
3) ¿A qué se conoce como shell? Concepto. ¿Cuáles son los shell más utilizados?
4) ¿Cómo es la estructura del comando?
5) ¿Cuáles son las características de la shell?
6) ¿Cuáles son los aspectos prácticos?

Shell

INTRODUCCION

El intérprete de comandos es la interfaz entre el usuario y el sistema operativo. Por esta razón, se le da el nombre inglés "shell", que significa "caparazón".


Por lo tanto, la shell actúa como un intermediario entre el sistema operativo y el usuario gracias a líneas de comando que este último introduce. Su función es la de leer la línea de comandos, interpretar su significado, llevar a cabo el comando y después arrojar el resultado por medio de las salidas.

La shell es un archivo ejecutable que debe interpretar los comandos, transmitirlos al sistema y arrojar el resultado. Existen varios shells. La más común es sh (llamada "Bourne shell"), bash ("Bourne again shell"), csh ("C Shell"), Tcsh ("Tenex C shell"), ksh ("Korn shell") y zsh ("Zero shell"). Generalmente, sus nombres coinciden con el nombre del ejecutable.

CONCEPTO DEL SHELL

 Se conoce con el nombre de Shell al programa que atiende a los ordenes tecleadas en el terminal y las traduce (interpreta) a instrucciones en la sintaxis interna del sistema; es decir es él interprete de comandos del sistema operativo UNIX. También se le conoce con el nombre de caparazón. (Análogo al Command.com de MS−DOS). El shell es un programa del sistema operativo, pero no forma parte del núcleo del mismo. Se ejecuta cada vez que un usuario se identifica ante el sistema y comienza una sesión. Se ejecuta un shell para cada usuario que se conecta al sistema. Cuando un usuario introduce una orden, el shell, que es un programa en continua ejecución, analiza la línea y llama a ejecución al programa o programas que realiza la función solicitada por la orden. El shell es también un lenguaje de programación que soporta todas las estructuras propias de los lenguajes modernos. Además permite la utilización de todas las primitivas del sistema operativo de control de procesos, interrupciones y utilidades para diseñar programas de comandos por el usuario. A los programas realizados con el shell se les llama Shell Scripts, Procedimientos Shell o Guiones de Comando. 

 Algunos de los shell más utilizados son:

Bourne Shell: Es el interprete de comandos básico. Se invoca con la orden sh.

C-Shell: Es el interprete de comandos creado por Bill Joy en Berkeley para el sistema operativo BSD y para el XENIX, un poco mas completo que el anterior. Su programación es prácticamente lenguaje C. Se invoca con la orden csh.

Korn Shell: Se basa en los dos anteriores, siendo compatible con el Bourne en un 95 por 100. Añade posibilidades de programación avanzada, facilidades aritméticas y mayor rapidez de ejecución. Se invoca con la orden ksh.

Bash: Es el shell utilizado por Linux por defecto y amplia las capacidades del Bourne. Se invoca con bash.

El superusuario debe asignar a cada usuario, en el momento de la creación del mismo, el shell que éste vaya a utilizar.

ESTRUCTURA DE UNA LINEA DE COMANDO

Una vez iniciada una sesión UNIX y estando presente el prompt $, el interprete de comandos Shell está preparado para recibir un comando, cuya estructura es la siguiente:

$ comando [parámetros] [argumentos] [separador]

·         nombre: Nombre del comando

·         parámetros: Posibles variaciones de actuación del comando.

·         argumentos: Nombre del elemento (archivo, directorio.) sobre el que se quiere aplicar el comando.

·         separador: Delimitador que sirve para separar comandos

       Ejemplo:

$cc

−o

Ejemplo.c

;

Who

Comando

Parámetros

argumento

Separador

Otro comando

       Los comandos consisten en una secuencia de letras, números y caracteres. Hay que tener en cuenta que UNIX hace diferencia entre mayúsculas y minúsculas.

Hay que separar el comando de las opciones por un espacio en blanco o un tabulador. Las opciones también deben separase entre sí por un espacio.

Si un comando es más largo que una línea hay que teclear \ (barra invertida) y pulsar intro, para continuar introduciendo el comando en la línea siguiente. Podemos escribir varios comandos en la misma línea separándolos por ; (punto y coma).

Un comando de una sóla línea es referido como una línea de comando.

CARACTERISTICAS DEL SHELL

La característica más destacable del shell es la versatilidad: facilidad de modificación y de adaptación a las necesidades y preferencias de cada usuario en particular.

Proporciona diversas facilidades al usuario:

·         Redireccionamiento de la salida o la entrada standard.

·         Metacaracteres, caracteres especiales con significado propio.

·         Filtros, que se encargan de gestionar la información de los ficheros.

·         Conexionado entre órdenes, mediante el uso de tuberias (pipes). Cuando se interconexionan dos órdenes, la salida de un proceso se convierte en la entrada del siguiente. Así se elimina la necesidad de crear ficheros temporales intermedios.

·       Lenguaje de programación del shell, que permite concatenar órdenes en un fichero de texto ejecutable con permiso de ejecución para automatizar procesos, lo que se conoce con el nombre de Explotación Batch o por lotes.

       ASPECTOS PRACTICOS

      Shell mantiene una historia de comandos. El histórico de comandos se guarda en el fichero .bash_history, donde están guardados todos los comandos escritos., almacena hasta 50 comandos antiguos. Al editar .bash_history presenta una lista numerada de comandos, incluidos los introducidos en entradas anteriores al sistema. Si la lista es muy larga podemos ver los n últimos.

       Ejemplo:

history Lista numerada de todos los comandos. history 10 Nos visualizará los 10 últimos comandos introducidos.

Podemos volver a usar un comando de la lista tecleando el número asociado al comando precedido de signo admiración.

Ejemplo: 3

Si necesita repetir el último comando basta con teclear dos admiraciones: !!

Si quieres repetir un comando sin conocer su número de orden en la lista seguir los pasos de este ejemplo: more /usr/lib/X11/xdm/xdm−config (este comando se tecleó anteriormente) basta con teclear !more.

Si al editar una línea de comando pulsamos la tecla tab, el shell buscará archivos o directorios cuyos nombres comiencen por lo escrito en la línea de comandos con el fin de completarla. Puede ocurrir que se ajuste más de un fichero, en cuyo caso avisa con una señal sonora, tras la cual, si pulsamos de nuevo tab , nos mostrará todos los posibles casos para que completemos nosotros un poco y él pueda afinar más el ajuste. La diferencia entre completar el nombre de comando o el de un argumento radica en el lugar donde se busca. En el primer caso se busca en todos los directorios de la variable de entorno PATH, mientras que en el segundo únicamente en el directorio de trabajo. Bash también puede buscar en el histórico. La combinación de teclas que hace esto es Alt−Tab.

Cada cierto tiempo conviene borrar el fichero .bash_history. Existe uno por usuario.

VIDEOS TUTORIALES SOBRE SHELL:

Vídeo de YouTube


Vídeo de YouTube


PROGRAMAR EN SHELL:

Vídeo de YouTube


domingo, 31 de mayo de 2020

Hardware I

Asignatura: Hardware I

Curso: 4° Informática

Profesora: Evangelina Rivero


Actividades
1) ¿Qué es el procesador?
2) ¿Cuáles son los componentes  el procesador?
3) ¿Cómo funciona el procesador?

El procesador
  1. ¿Qué es procesador?

El procesador es el cerebro del sistema, justamente procesa todo lo que ocurre en la PC y ejecuta todas las acciones que existen. Cuanto más rápido sea el procesador que tiene una computadora, más rápidamente se ejecutarán las órdenes que se le den a la máquina. Este componente es parte del hardware de muchos dispositivos, no solo de tu computadora.

El procesador es una pastilla de silicio que va colocada en el socket sobre la placa madre dentro del gabinete de la computadora de escritorio, la diferencia en una portátil es que está directamente soldado. El procesador está cubierto de algo que llamamos encapsulado, y de lo cual existen 3 tipos: PGA, LGA y BGA.

El procesador es uno de los componentes de la computadora que más ha evolucionado, dado a que se les exige a los ingenieros que cada vez ofrezcan mejores procesadores para que las computadoras funcionen más rápidas y de forma más eficaz. Su evolución no ha sido solo interna, sino que también su forma externa fue modificada. Los fabricantes de procesadores de PC más populares son Intel y AMD.

Este componente es el más importante podríamos decir, y generalmente el más caro, pero sin el resto de los componentes no podría servir ni actuar.

Ver además: CPU.

  1. Componentes de un procesador

Un procesador está compuesto de:

  • Núcleos
  • Caché
  • Controlador de memoria
  • Tarjeta gráfica
  • Otros elementos auxiliares
  1. Funcionamiento de un procesador

Procesador
El procesador se encarga de que todo marche como está programado.

El funcionamiento del procesador está determinado por un reloj que sincroniza todos los bloques funcionales y se encarga de que todo marche como debe ser o está programado para ser.

El funcionamiento tiene etapas:

  • Leer la instrucción de la memoria
  • Buscar los datos
  • Realizar la operación
  • Pasar a la siguiente instrucción



Fuente: https://concepto.de/procesador/#ixzz6O3t4i1Im

Programación I

Asignatura: Programación I

Curso: 4° Informática

Profesora: Evangelina Rivero


Variables y Constantes


Actividades:
1) ¿Qué es una variable?
2) ¿Qué es una constante?
3) ¿Qué es la declaración de variable y qué es el ámbito de una variable?
4) ¿Qué tipo de datos pueden almacenar? Explica todos los casos.
5) Realiza un breve resumen sobre el caso del programa Pseint



Constantes y Variables

Tunel cilíndrico formado por tiras de ceros y unos
Imagen en Flickr de Marcos Gasparutti con Algunos derechos reservados
Una variable no es más que una zona de memoria que un programa utiliza para almacenar un valor que puede cambiar durante la ejecución. El programador, cuando realiza el programa será el encargado de decidir qué nombre o identificador se le asignará a esa zona de memoria. Al reservar esa zona de memoria hay que especificar qué tipo de dato será el que se almacenará en ella, y ese tipo no cambiará nunca. Por tanto, ese espacio se puede llenar con distintos valores a medida que el programa se ejecuta, aunque todos ellos serán del mismo tipo, que no es otro que el tipo de dato que el programador haya definido al crear la variable. Por tanto, cuando programes establecerás las variables que necesites y el tipo de dato que almacenará cada una.





Una constante en cambio es un valor que se almacena en una zona de la memoria pero que no varía durante la ejecución del programa. Un ejemplo podría ser el número PI, que siempre permanecerá con el mismo valor. Las constantes también llevan asociadas un nombre, es decir, un identificador. Cuando se crea una constante, se especifica el identificador o nombre de la constante y el valor que va a tener (y por tanto también el tipo de dato), luego, a medida que se vaya necesitando dicha constante en el programa, sólo hay que poner el nombre o identificador de esa constante.

A la acción de crear una variable (o una constante) por primera vez en un programa se le denomina declaración de variable (o constante). La vida de las variables y constantes dentro de un programa abarcará desde que son declaradas por primera vez hasta la finalización del programa. Todo ese tiempo es lo que se llama ámbito de la variable (o constante). El programador podrá hacer referencia a las variables y constantes utilizando sus identificadores, pero siempre dentro del ámbito de las mismas (o sea, desde que son declaradas hasta que el programa termina).

Actividad

Loro de peluche mirando código fuente en una pantalla de ordenador
Imagen en Flickr de Berto García con Algunos derechos reservados

Un dilema que todo programador tendrá cuando está haciendo un programa será qué tipo de elemento, variable o constante, y de qué tipo de dato, se necesita en cada caso. La respuesta a la primera parte es simple: Si el elemento no va a variar a lo largo de la ejecución del programa, el elemento a utilizar será una constante, en caso contrario se deberá utilizar una variable.

La respuesta a la segunda parte del dilema (qué tipo de dato será el más adecuado), es algo menos sencillo, pero resolviendo una serie de cuestiones claves y siguiendo unas reglas básicas y elementales podrás decidirlo sin mucha dificultad. Aquí tienes un guión:

  1. ¿El dato es de tipo texto o puede llevar algún texto dentro? Si es así será de tipo carácter o de tipo cadena, dependiendo de si se va a almacenar un sólo carácter o varios.
  2. ¿El dato a almacenar solo admite dos valores posibles? Si ocurre esto, podemos elegir un tipo de dato lógico o booleano, que encaja perfectamente con la cantidad de datos posibles a almacenar (verdadero o falso).
  3. ¿El dato que necesitamos almacenar es un número? En ese caso está clara la decisión, aunque ahora viene una segunda cuestión, ¿qué tipo de número?:
    1. Si el dato no lleva decimales, escogeremos un tipo de dato entero.
    2. Si lleva decimales, sería un tipo de dato no entero, es decir, real, doble u otro tipo de dato que el lenguaje admita con números decimales.
  4. Llegados a este punto ya sabrás el tipo de dato o lo tendrás casi claro, pero ahora viene la clave para ser un buen programador. Debes observar el lenguaje elegido y ver los tipos de datos que ofrece el mismo, porque en ocasiones pueden servirte varios. Piensa que necesitamos, por ejemplo, almacenar un dato numérico, en ese caso, los lenguajes tendrán disponibles varios tipos de datos enteros y varios tipos de datos numéricos con decimales, ¿cuál elegimos entonces?. Fácil, elige el tipo de dato que te permita almacenar los valores de forma correcta, sin que se produzcan desbordamientos de datos (overflow) pero que representen a un intervalo de datos menor, ya que serán los que ocupen menos espacio en memoria. Esta regla parece inocente e innecesaria pero no lo es, piensa que el mejor programador es el que es capaz de hacer el mismo programa que los demás pero haciendo que éste necesite menos recursos de la máquina.

Conocimiento previo

Hay lenguajes de programación que obligan al programador a declarar todas las variables y constantes que utilizará en su programa. En cambio, existen otros lenguajes que no obligan al programador a declarar las variables y constantes, sino que el propio lenguaje "autodeclara" las mismas la primera vez que el programador las usa en su programa. En este último caso, a las variables y constantes se les suele asignar, dependiendo del lenguaje, o bien un tipo de dato acorde al valor almacenado esa primera vez, o un tipo de dato estandarizado y prefijado por el propio lenguaje.

Configuración de PSeInt con pseudocódigo flexible
Imagen de creación propia bajo licencia deCreative Commons

En PSeInt existe la posibilidad de configurar el entorno para distintas versiones de pseudocódigo, que van desde la más flexible a otras más estrictas, pasando por las versiones que suelen usarse en distintas instituciones y universidades. Puedes usar la versión flexible al principio, que es bastante permisiva ya que puedes utilizar variables y constantes sin tenerlas que declarar previamente. Luego, si lo estimas oportuno, podrás ir cambiando a otras versiones más estrictas.

Si lo prefieres también tienes la opción de crear un perfil totalmente personalizado para tu propio pseudcódigo. Tan sólo tienes que acceder a la configuración de las opciones del lenguaje y hacer clic en el botón de "Personalizar" el perfil que encontrarás en la ventana, bajo la lista de los distintos perfiles . Si te decides por personalizar tu propio perfil, encontrarás una lista de opciones a elegir, algunas de las cuales ya te sonarán bastante, otras las irás encontrando en los próximos temas, no te preocupes por ellas.


Sistemas Operativos I

Asignatura: Sistemas Operativos I

Curso: 4° Informática

Profesora: Evangelina Rivero


Las diferentes unidades de medida de los archivos (bit, byte, etc.) 



Actividades
1) Miramos el siguiente vídeo https://www.youtube.com/watch?v=l_dwZsqGqag
2) Copia del vídeo el cuadro de las medidas.
3) ¿Cuáles son las medidas más usadas? ¿Y a cuánto equivalen?


Medidas de almacenamiento de información.

Así como usamos medidas para saber cuánto pesan o miden las cosas, también hay unidades de medida que te permiten calcular la capacidad de almacenamiento de información o procesamiento de datos. 

Las unidades de medida más usadas son el Bit, Byte, Kilobyte, Megabyte, Gigabyte y Terabyte. 

Para que entiendas cómo se relacionan estas unidades de medida entre sí, imagina esto:

Tienes un libro muy grande, y una sola letra de ese libro representa un Byte. Esta letra está compuesta por (8) ocho partes y cada una de esas partes se llama Bit.

Si juntas varias letras (bytes) formarías palabras, y con las palabras un párrafo, que aquí contaría como un Kilobyte.

Con varios párrafos (Kilobytes) podrías conformar algunas páginas del libro, lo que podría ser un Megabyte.

Y uniendo todas las páginas (megabytes), tendrías el libro completo, que puedes imaginar que es Gigabyte.

Si unes ese libro a muchos otros libros (Gygabytes), tendrías una gran biblioteca que, en este caso, equivaldría a un Terabyte

Metáfora sobre medidas de almacenamiento de información.

Aunque la capacidad de almacenamiento de cada una de las unidades de medida no es exactamente igual al ejemplo que te acabamos de dar, ya tienes una idea de cómo funcionan y se organizan. Equivalencias reales:

Bit:

Es la unidad mínima de información empleada en informática. 

Byte (B):

Equivale a 8 bits. Con dos bytes guardas o procesas una letra.

Kilobyte (kB):

1024 bytes forman un Kilobyte. 

Megabyte (MB):

Equivale a 1024 Kilobytes. 

Gigabyte (GB):

Es igual a 1024 Megabytes. Es la unidad de medida que se suele usar para determinar la capacidad de almacenamiento de las USB.

Terabyte (TB):

Lo componen 1024 Gigabytes. Muchas veces esta medida determina la capacidad de almacenamiento de los discos duros. ¡Imagina la cantidad de archivos que podrías guardar!

Aplicaciones I

Asignatura: Aplicaciones I

Curso: 4° Informática

Profesora: Evangelina Rivero


Tema: Planillas de Cálculo


2) En la computadora o en el celular buscamos planilla de cálculo
3) En las carpetas trabajamos con el texto que se presenta a continuación
4) ¿Qué es una planilla de cálculos? Ejemplos. ¿Cómo está formada una planilla de cálculos
5) Tipos de fórmulas. Explica cada una de ellas.


Una planilla de cálculo es un software de aplicación utilizado para procesar datos por medio de operaciones simples o complejas.

Algunos ejemplos que utilizaremos en clase son:

  • Ms Excel es una planilla de cálculo propietaria y pago.
  • Open Calc es una planilla de cálculo libre.
  • Gnumeric es una planilla de cálculo libre.

Estas tres no son las únicas, existen otras como pueden ser Social Calc, la planilla que ofrece Google Docs, KSpread de KOffice, Numbers, Lotus 1-2-3, Quattro pro, etc.

Una planilla está formada por hojas de cálculo en donde los datos se disponen en forma de tablas, la cual está dividida en columnas y filas. Los datos se ingresan en celdas que se definen como la intersección entre una columan y una fila.

Ventana de Microsoft Excel

Si observamos las tres ventanas, podremos ver que no existen grandes diferencias entre estas tres planillas de cálculo. Clickea sobre las imágenes para agrandarlas y ver en detalle las características de las ventanas.

Clickea sobre la imagen para ver en detalle las barras de menú y herramientas. Clickeando con el botón derecho sobre las imágenes podrás guardarlas utilizando la opción Guardar imagen como para que luego puedas imprimirla y pegarla en tu cuaderno.

Muchos de lo comandos que tienen las planillas de cálculo son iguales a la de los procesadores de texto, por lo tanto, también se pueden aplicar en éstas. 

CREACIÓN DE FORMULAS

Al introducir una fórmula hay que tener en cuenta lo dicho anteriormente, o sea, principalmente, las mismas deben comenzar con el símbolo de + o de =.

Las mismas pueden ser de tres tipos: fórmulas comunes, fórmulas en base a referencias, y una combinación de ambas.

Fórmulas comunes

Son las anotaciones de cualquier tipo de fórmula matemática, como por ejemplo:

+45*10/18

+23+11+15

+65-(11+56+98)

Fórmulas con referencias

Estas son las fórmulas que en vez de utilizar números, usan referencias de celdas para realizar los cálculos indicando al programa donde buscar los datos usando el contenido de la celda para los cálculos, por lo tanto al cambiar cualquiera de los datos de las referencias automáticamente se cambia el resultado de la fórmula, por ejemplo:

+A15*B3/H8

+C11+C12+C13

+D23-(E23+F23+G23)

Existen tres tipos de referencias: referencias relativas, referencias absolutas y referencias mixtas.

Referencias Relativas

La ventaja de usar referencias relativas en una fórmula es el hecho de que al copiar o mover la fórmula automáticamente se actualizan las referencias.

El copiarla para F5 la misma se actualizará en todos sus argumentos una columna, ya que se copió en forma horizontal, por lo tanto quedará: +F1+F2+F3+F4.

Referencias absolutas y mixtas

Si bien usar referencias relativas representa una gran ventaja, ya que no se tendrá la necesidad de repetir varias veces una anotación de este tipo ya que podemos anotar una vez y después copiarla las veces que sea necesario, por otro lado puede generar un problema, analicemos el siguiente caso:

La fórmula que calcula el IVA (+B2*B11) hace referencia a la celda B11 y está escrita para el primer registro, al copiarla para el segundo la misma se actualizará en filas ya que se copia verticalmente, por lo tanto quedará corrida un lugar en todas las referencias de filas (+B3*B12). En este caso la actualización de fórmula juega en contra de los intereses de la planilla ya que el primer argumento de la fórmula queda perfecto pero el segundo no, pues en la celda B12 no tenemos datos.

Para solucionar estos problemas es que existen lo que llamamos referencias absolutas que es nada mas y nada menos que “fijar” el o los argumentos deseados para que estos no se actualicen al copiar o mover una fórmula. Esto se hace mediante dos símbolos de pesos ($), uno para la columna y el otro para la fila de la referencia, pudiendo usar de a uno (referencia mixta) o los dos (referencia absoluta), según de que forma se desee “fijar” esa referencia. Para este caso alcanzaría con fijar la fila de la referencia por lo tanto al anotar la fórmula para el primer registro se escribiría de esta forma: +B2*B$11.

Nota Importante: Para cambiar el tipo de referencia de una celda al escribirla se presiona F4.

Operadores de referencia

Los operadores de referencia son símbolos que se utilizan para indicar diferentes tipos de argumentos en una fórmula y existen tres tipos de operadores de referencia:

– Rango (dos puntos) produce una referencia para todas las celdas entre las dos referencias, incluyéndolas.

– Unión (punto y coma) produce una referencia que incluye las dos referencias.

– Mixta combinación de las dos anteriores.

Para hacer referencia a Escribir

Toda la columna A                            A:A

Toda la fila 1                                   1:1

Filas 1 al 3                                       1:3

Columnas A a la C                             A:C

El rango de A15 a A20 y C10 a C17      A15:A20;C10:C17

La hoja de calculo completa              A:IV o 1:16384

Introducir referencias

Es posible introducir las referencias en las fórmulas al escribirlas. Sin embargo, la manera más fácil es seleccionar la celda o el rango directamente en la hoja de cálculo. Después de escribir un signo igual o un operador, simplemente haga clic en la celda o arrastre por el rango de celdas en el que desea introducir la referencia. La selección está rodeada por una línea punteada llamada borde móvil, y la referencia a la celda o el rango aparece en la fórmula.

Nota: – Para seleccionar celdas no adyacentes, hacer clic en la celdas manteniendo CTRL presionado.

Sistemas Operativos III

Asignatura: Sistema Operativos III

Curso: 6° Informática

Profesora: Evangelina Rivero


Tema: Memoria virtual y su administración

Actvidades:
1) Ver el siguiente video: https://www.youtube.com/watch?v=hyvwTuo8QbY y tomar nota de los conceptos más importantes
2) ¿Qué es la administración de la memoria virtual?
3) Define espacio de direcciones físicas y lógicas
4) ¿Qué es la paginación? Explica como se realiza este procedimiento
5) ¿Qué es la segmentación? Explica como se realiza este procedimiento
6) ¿Qué es la paginación por demanda? ¿Cuándo y por qué se realiza este procedimiento?
7) ¿Qué es el fallo de página y por qué puede producirse?
8) ¿Qué es la segmentación paginada y  por qué se produce?
9) ¿Qué es la paginación segmentada y por qué se produce?



Administración de la memoria virtual

Es un método mediante el cual, un sistema operativo simula tener más memoria principal que la que existe físicamente. Para implementar la memoria virtual se utiliza un medio de almacenamiento secundario de alta velocidad de acceso, generalmente en disco duro de la máquina. Un sistema de memoria virtual se implementa utilizando paginación como método de administración de memoria básica y algún mecanismo de intercambio (para descargar páginas de la memoria principal hacia el disco duro y para cargar esas páginas de nuevo a la memoria).


La memoria virtual es una técnica para proporcionar la simulación de un espacio de memoria mucho mayor que la memoria física de una máquina. Esta “ilusión” permite que los programas se hagan sin tener en cuenta el tamaño exacto de la memoria física. La ilusión de la memoria virtual esta soportada por el mecanismo de traducción de memoria, junto con una gran cantidad de almacenamiento rápido en disco duro. Así en cualquier momento el espacio de direcciones virtual hace un seguimiento de tal forma que una pequeña parte de él, está en memoria real y el resto almacenado en el disco, y puede ser referenciado fácilmente.

ESPACIO DE DIRECCIONES LOGICAS Y FISICAS

El concepto de espacio de direcciones lógicas vinculado a un espacio de direcciones físicas separado es crucial para una buena gestión de memoria
  • Dirección lógica: es la dirección que genera el proceso; también se conoce como dirección virtual.
  •  Dirección física: dirección que percibe la unidad de memoria.


Las direcciones lógicas y físicas son iguales en los esquemas de vinculación en tiempo de compilación y de carga; pero difieren en el esquema de vinculación en tiempo de ejecución.


PAGINACION


Tanto las particiones de tamaño fijo como las de tamaño variable hacen un uso ineficiente de la memoria; las primeras generan fragmentación interna, mientras que las segundas originan fragmentación externa. Supóngase, no obstante, que la memoria principal se encuentra particionada en trozos iguales de tamaño fijo relativamente pequeños y que cada proceso está dividido también en pequeños trozos de tamaño fijo y del mismo tamaño que los de memoria. En tal caso, los trozos del proceso, conocidos como páginas, pueden asignarse a los trozos libres de memoria, conocidos como marcos o marcos de página.  

En un instante dado, algunos de los marcos de memoria están en uso y otros están libres. El sistema operativo mantiene una lista de los marcos libres. El proceso A, almacenado en disco, consta de cuatro páginas. Cuando llega el momento de cargar este proceso, el sistema operativo busca cuatro marcos libres y carga las cuatro páginas del proceso A en los cuatro marcos. El proceso B, que consta de tres páginas y el proceso C, que consta de cuatro, se cargan a continuación. Más tarde, el proceso B se suspende y es expulsado de memoria principal. Después, todos los procesos de memoria principal están bloqueados y el sistema operativo tiene que traer un nuevo proceso, el proceso D, que consta de cinco páginas.

Supóngase ahora, como en este ejemplo, que no hay suficientes marcos sin usar contiguos para albergar al proceso. ¿Impedirá esto al sistema operativo cargar D? La respuesta es negativa, puesto que se puede emplear de nuevo el concepto de dirección lógica. Ya no será suficiente con un simple registro base. En su lugar, el sistema operativo mantiene una tabla de páginas para cada proceso. La tabla de páginas muestra la posición del marco de cada página del proceso. Dentro del programa, cada dirección lógica constará de un número de página y de un desplazamiento dentro de la página. Recuérdese que, en el caso de la partición simple, una dirección lógica era la posición de una palabra relativa al comienzo del programa; el procesador realizaba la traducción a dirección física. Con paginación, el hardware del procesador también realiza la traducción de direcciones lógicas a físicas. Ahora, el procesador debe saber cómo acceder a la tabla de páginas del proceso actual. Dada una dirección lógica (número de página, desplazamiento), el procesador emplea la tabla de páginas para obtener una dirección física (número de marco, desplazamiento).

                            

SEGMENTACIÓN


Es un esquema de manejo de memoria mediante el cual la estructura del programa refleja su división lógica; llevándose a cabo una agrupación lógica de la información en bloques de tamaño variable denominados segmentos. Cada uno de ellos tienen información lógica del programa: subrutina, arreglo, etc. Luego, cada espacio de direcciones de programa consiste de una colección de segmentos, que generalmente reflejan la división lógica del programa. 
La segmentación permite alcanzar los siguientes objetivos:


1. Modularidad de programas: cada rutina del programa puede ser un bloque sujeto a cambios y recopilaciones, sin afectar por ello al resto del programa.

2. Estructuras de datos de largo variable: ejm. Stack, donde cada estructura tiene su propio tamaño y este puede variar.

3. Protección: se puede proteger los módulos del segmento contra accesos no autorizados.

4. Comparación: dos o más procesos pueden ser un mismo segmento, bajo reglas de protección; aunque no sean propietarios de los mismos

5. Enlace dinámico entre segmentos: puede evitarse realizar todo el proceso de enlace antes de comenzar a ejecutar.



PAGINACION POR DEMANDA


La paginación por demanda introdujo la idea de cargar más una porción del programa en la memoria para su procesamiento.
 Con la paginación por de manda, las tareas siguen divididas en páginas de tamaño igual que inicialmente residen en almacenamiento secundarios.

Cuando se empieza a ejecutar la tarea, sus páginas pasan a la memoria solo conforme se necesitan. La paginación pro demanda aprovecha el hecho que los programas se escriben de manera secuencial, de manera que mientras una sección o modulo está en proceso, los demás están ocioso (madnick & donovan, 1974).Una de las innovaciones de mayor importancia en la paginación por demanda es que hizo posible el amplio uso de la memoria virtual, el esquema de paginación por demanda permite al usuario ejecuta tareas con menos memoria principal de lo que se requería si el sistema operativo estuviera utilizando el esquema de asignación de memoria paginada que ya se describió.

FALLO DE PÁGINA

Un fallo de página es la secuencia de eventos que ocurren cuando un programa intenta acceder a datos (o código) que está en su espacio de direcciones, pero que no está actualmente ubicado en la RAM del sistema. El sistema operativo debe manejar los fallos de página haciendo residentes en memoria los datos accedidos, permitiendo de esta manera que el programa continúe la operación como que si el fallo de página nunca ocurrió.

En el caso de nuestra aplicación hipotética, el CPU primeramente presenta la dirección deseada (12374) al MMU. Sin embargo, el MMU no tiene traducción para esta dirección. Por tanto, interrumpe al CPU y causa que se ejecute un software, conocido como el manejador de fallos de página. El manejador de fallos de página determina lo que se debe hacer para resolver esta falla de página. 

 El mismo puede:
  • Encontrar dónde reside la página deseada en disco y la lee (este es usualmente el caso si el fallo de página es por una página de código)
  • Determina que la página deseada ya está en RAM (pero no está asignada al proceso actual) y reconfigura el MMU para que apunte a el
  • Apunta a una página especial que solamente contiene ceros y asigna una nueva página para el proceso solamente si este intenta alguna vez escribir a la página especial (esto se llama una página de copia en escritura y es utilizada a menudo por páginas que contienen datos inicializados a cero)
  • Obtener la página deseada desde otro lugar (lo que se discute en detalle más adelante)
  • Mientras que las primeras tres acciones son relativamente sencillas, la última no lo es. Por eso necesitamos cubrir algunos tópicos adicionales.

 

SEGMENTACION PAGINADA


Paginación y segmentación son técnicas diferentes, cada una de las cuales busca brindar las ventajas enunciadas anteriormente.
Para la segmentación se necesita que estén cargadas en memoria, áreas de tamaños variables. Si se requiere cargar un segmento en memoria; que antes estuvo en ella y fue removido a memoria secundaria; se necesita encontrar una región de la memoria lo suficientemente grande para contenerlo, lo cual no es siempre factible; en cambio "recargar" una página implica solo encontrar un merco de pagina disponible.


A nivel de paginación, si quiere referenciar en forma cíclicas n paginas, estas deberán ser cargadas una a una generándose varias interrupciones por fallas de paginas; bajo segmentación, esta página podría conformar un solo segmento, ocurriendo una sola interrupción, por falla de segmento. No obstante, si bajo segmentación, se desea acceder un área muy pequeña dentro de un segmento muy grande, este deberá cargarse completamente en memoria, desperdiciándose memoria; bajo paginación solo se cargara la página que contiene los ítems referenciados.
Puede hacerse una combinación de segmentación y paginación para obtener las ventajas de ambas. En lugar de tratar un segmento como una unidad contigua, este puede dividirse en páginas. Cada segmento puede ser descrito por su propia tabla de páginas.


Los segmentos son usualmente múltiplos de páginas en tamaño, y no es necesario que todas las páginas se encuentren en memoria principal a la vez; además las páginas de un mismo segmento, aunque se encuentren contiguas en memoria virtual; no necesitan estarlo en memoria real.Las direcciones tienen tres componentes: (s, p, d), donde la primera indica el número del segmento, la segunda el número de la página dentro del segmento y la tercera el desplazamiento dentro de la página. Se deberán usar varias tablas:

  • SMT (tabla de mapas de segmentos): una para cada proceso. En cada entrada de la SMT se almacena la información descrita bajo segmentación pura, pero en el campo de dirección se indicara la dirección de la PMT (tabla de mapas de páginas) que describe a las diferentes páginas de cada segmento.
  • PMT (tabla de mapas de páginas): una por segmento; cada entrada de la PMT describe una página de un segmento; en la forma que se presentó la página pura.
  • TBM (tabla de bloques de memoria): para controlar asignación de páginas por parte del sistema operativo.
  • JT (tabla de Jobs): que contiene las direcciones de comienzo de cada una de las SMT de los procesos que se ejecutan en memoria.
 En el caso, de que un segmento sea de tamaño inferior o igual al de una página, no se necesita tener la correspondiente PMT, actuándose en igual forma que bajo segmentación pura; puede arreglarse un bit adicional (S) a cada entrada de la SMT, que indicara si el segmento esta paginado o no.



PAGINACION SEGMENTADA


Es la combinación de segmentación y paginación.

  •   Los segmentos se dividen páginas y se meten en marcos o particiones.
  •   Mantiene la visión original del espacio lógico de los procesos. 
  •  Cualquier marco es igualmente bueno.
  • El desplazamiento del segmento se descompone de un número de página y un desplazamiento de la misma.

Aplicaciones I - Planillas de Cálculo

  Asignatura: Aplicaciones I Curso: 4° Informática Profesora: Evangelina Rivero - e-mail:evange_rivero@hotmail.com Tema: Planillas de Cálcul...