elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  BitMap
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: BitMap  (Leído 2,989 veces)
ccsponcer3

Desconectado Desconectado

Mensajes: 11


Ver Perfil
BitMap
« en: 11 Junio 2016, 05:33 am »

Hola gente, que tal. Bueno, tengo que implementar un BitMap en C para una particion Swap(archivo que cree yo que en principio esta vacio) y lo que tengo que hacer esen principio cuando llega un "programa" responder mediante el bitMap si mi particion tiene o no espacio para alojar a dicho programa
La cuestion es que no se como programar el bitmap en si y como recorrera la particion creada para que luego yo pueda decir si puedo aceptar o no el programa que llega a swap


Espero que me puedan tirar una mano, gracias!


En línea

AlbertoBSD
Programador y
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.705


🏴 Libertad!!!!!


Ver Perfil WWW
Re: BitMap con Swap
« Respuesta #1 en: 11 Junio 2016, 06:00 am »

Cuando un Sistema Operativo tiene que administrar un area swap tiene que tener un algotimo como el que comentas.

Basicamente para facilitarse la vida el sistema lo que hace es dividir el espacio total de la swap en bloques de X cantidad de kilobytes o megabytes.

Digamos que solo tienes 1 GB de memoria swap  lo divides en segmentos de 1 MB quiere decir que solo tienes 1024 segmentos, por lo cual tendrias que tener un mapa de bits de 1024 elemtos.

Si el sistema quiere almacenar un programa que necesitas 5.7 MB entonces el sistema tendra que buscar un segmento de 6 bits libres en el mapa de bis y asignárselos entonces tu funcion le indica al sistema que si tiene espacio. Para posteriomente bajar el programa a la swap.

El mapa de bits seria como:

Código
  1. #include<stdio.h>
  2. #include<string.h>
  3.  
  4. #define MAX_SEGMENT 1024
  5.  
  6. typedef unsigned char byte;
  7.  
  8.  
  9.  
  10. int main() {
  11. byte swap_map[MAX_SEGMENT];
  12. int i;
  13. memset(swap_map,0,MAX_SEGMENT);
  14. printf("Mapa actual\n");
  15. while(i < MAX_SEGMENT){
  16. printf("%i",swap_map[i]);
  17. i++;
  18. }
  19. printf("\n");
  20. }

Aunque ahi es mapa de bytes xD pero para el ejemplo sirve igual.

Por cierto si puede cambiar el titulo a BitMap con Swap o algo mas descriptivo estaria Genial.

La funcion para saber si existe espacio seria:

Código
  1. int existe_espacio(int requerido) {
  2. int r = 0;
  3. if(requerido <= segmentos_libres ){
  4. r = 1;
  5. }
  6. return r;
  7. }

o
Código
  1. int existe_espacio(int requerido) {
  2. return (requerido <= segmentos_libres );
  3. }


Claro que tendrias que agregar una variable global llamada segmentos_libres

Código
  1. int segmentos_libres;

Saludos!


« Última modificación: 11 Junio 2016, 06:22 am por AlbertoBSD » En línea

ccsponcer3

Desconectado Desconectado

Mensajes: 11


Ver Perfil
Re: BitMap
« Respuesta #2 en: 16 Junio 2016, 21:20 pm »

Muchas gracias! fue de mucha ayuda, para la proxima tendre mas en cuenta lo del asunto.
saludos!
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Dividir un bitmap
.NET (C#, VB.NET, ASP)
David Vans 0 3,022 Último mensaje 25 Mayo 2008, 19:37 pm
por David Vans
¿Cual estructura interna de un BitMap?
Diseño Gráfico
do-while 0 5,457 Último mensaje 8 Febrero 2010, 11:35 am
por do-while
Cargar Bitmap como fondo de Dialog Box (help )
Programación C/C++
codeliber 1 2,198 Último mensaje 18 Mayo 2010, 16:29 pm
por codeliber
Obtener cada pixel del area de un Bitmap (Locked)
.NET (C#, VB.NET, ASP)
GonzaFz 0 1,936 Último mensaje 20 Junio 2012, 08:33 am
por GonzaFz
[SOLUCIONADO] Problema al convertir Bitmap a Ico
.NET (C#, VB.NET, ASP)
Eleкtro 1 2,516 Último mensaje 19 Julio 2013, 22:12 pm
por Eleкtro
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines