|
Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.
Mensajes - aguila3000
1
« en: Domingo 4 de Agosto de 2013, 16:37 »
2
« en: Domingo 4 de Agosto de 2013, 16:32 »
3
« en: Domingo 4 de Agosto de 2013, 16:22 »
4
« en: Domingo 4 de Agosto de 2013, 16:21 »
5
« en: Miércoles 9 de Febrero de 2011, 02:10 »
Gracias, es lo que habia leído. Al parecer el uso de esas caracteristicas aun no es alcanzable por las supercomputadoras, http://en.wikipedia.org/wiki/Jaguar_(computer), en este artículo mencionan el uso de Linux con una memoria de 360 TiB, aunque no mencionan si es física o virtual, me imagino debe ser física. Me imagino que con la memorias de intercambio con discos duros, si pueden llegar a los 16 EiB, facilmente. Y muchas gracias por tus comentarios.
6
« en: Martes 8 de Febrero de 2011, 15:57 »
No hay problema, disculpa aceptada . Una de las dudas que tengo es que obviamente no creo sea posible direccionar 2^64=16 EiB de memoria virtual, a menos que existan discos duros en donde se puedan crear 2^64=16 EiB o más de espacio de intercambio (swap), al menos no se si existan esos discos duros o se tengan que emular usando varios discos duros. En fin seguire investigando a ver que encuentro. como dice el dicho: preguntando se llega a Roma.
8
« en: Lunes 7 de Febrero de 2011, 23:06 »
Hola.
Tengo entendido que el espacio de memoria virtual direccionable por un S.O. Linux de 32 bits, es de 4GiB, en donde 1GiB es usado por el kernel y 3GiB para los procesos. En el caso de un S.O. Linux de 64bits, por lógica el espacio de memoria virtual direccionable es de : 17179869184 GiB, me interesa saber o donde puedo encontrar información de ¿Como se gestiona la memoria Linux 64 bits ?. Es decir cuanta memoria se usa para el kernel y cuanta para los procesos. Si es igual al de 32bits entonces debería ser así: 1 GiB para el kernel y el resto para los procesos 17179869183 GiB, pero realmente no estoy seguro y me parece que es distinto.
9
« en: Martes 21 de Diciembre de 2010, 03:52 »
Haciendo preguntas por qui y por alla, encontre esto: http://www.freepascal.org/docs-html/prog/progsu158.htmly esto: http://www.freepascal.org/docs-html/rtl ... fails.htmlen fpc existe una variable ReturnNilIfGrowHeapFails, que define el comportamiento de la administración de memoria, si es true entonces las funciones como getmem, reallocmem y new devuelven nil, en caso contrario devuelve false. Por defecto es false, No se realmente porque estará en False, si alguien sabe me gustaría saberlo. El programa quedaría algo así: Var p01,p02,p03,p04:^byte; Begin ReturnNilIfGrowHeapFails:=true; getmem(p01,1024*1024*1024); if (p01<>nil) then Writeln('ok 1') else Writeln('ko 1'); getmem(p02,1024*1024*1024); if (p02<>nil) then Writeln('ok 2') else Writeln('ko 2'); getmem(p03,1024*1024*1024); if (p03<>nil) then Writeln('ok 3') else Writeln('ko 3'); getmem(p04,1024*1024*1024); if (p04<>nil) then Writeln('ok 4') else Writeln('ko 4'); End.
10
« en: Martes 21 de Diciembre de 2010, 01:25 »
Y que sería mejor ¿Qué devuelve nil? o ¿Usar excepciones?
11
« en: Lunes 20 de Diciembre de 2010, 03:01 »
ok, pero en C++, No tengo ese problema, cuando la variable dinámica no se puede crear, entonces me devuelve null o nil =0 En freepascal, porque no es lo mismo. Probe con gnu y sale lo siguiente: ./a.out: out of heap when allocating 1073741824 bytes (error #853 at 804dc86) ¿ Sabes si este problema sucede con Delphi ? #include <iostream> #include <cstdlib> using namespace std; int main () { char *p01; p01 = (char*) malloc(1024*1024*1024); if (p01!=NULL) cout << "ok01n"; else cout << "ko01n"; char *p02; p02 = (char*) malloc(1024*1024*1024); if (p02!=NULL) cout << "ok02n"; else cout << "ko02n"; char *p03; p03 = (char*) malloc(1024*1024*1024); if (p03!=NULL) cout << "ok03n"; else cout << "ko03n"; char *p04; p04 = (char*) malloc(1024*1024*1024); if (p04!=NULL) cout << "ok04n"; else cout << "ko04n"; return 0; }
12
« en: Domingo 19 de Diciembre de 2010, 12:02 »
Gracias por tu respuesta. Si no hay memoria, entonces. ¿Cómo puedo evitar crear más variables dinámicas?
Al usar getmem, se supone que al no haber memoria debe darme nil, pero eso no sucede y sale el error runtime error 203. Estoy usando Win32 (WindowsXP Pro, Vista) y el compilador freepascal, en Linux tambien me sucede lo mismo.
13
« en: Domingo 19 de Diciembre de 2010, 01:22 »
He escrito el siguiente programa, y tengo algunas preguntas: Var p01,p02,p03,p04:^byte; Begin getmem(p01,1024*1024*1024); if (p01<>nil) then Writeln('ok 1') else Writeln('ko 1'); getmem(p02,1024*1024*1024); if (p02<>nil) then Writeln('ok 2') else Writeln('ko 2'); getmem(p03,1024*1024*1024); if (p03<>nil) then Writeln('ok 3') else Writeln('ko 3'); getmem(p04,1024*1024*1024); if (p04<>nil) then Writeln('ok 4') else Writeln('ko 4'); End.
¿Cómo puedo saber que ya no tengo memoria para los punteros? ¿Cómo puedo evitar el error: "runtime error 203 ..."? ¿Cómo puedo crear punteros de 4GB o de tamaño mayor?
14
« en: Jueves 18 de Marzo de 2010, 23:38 »
Bueno por fin entendí, cual es el problema. Sucede que la rutina Writeln o Write, hace uso de la función WriteFile de la api de windows. Esta función tiene un parametro lpNumberOfBytesWritten, que devuelve los bytes enviados a consola o un archivo que se escribieron satisfactoriamente. Freepascal hace uso de ese parametro comprobando el valor devuelto, si este devuelve un valor igual a cero significa que algo estuvo mal. La funcion Writefile tiene un fallo, sucede que cuando se usa en consola con Unicode(65001), no devuelve los bytes escritos en consola pero los escribe y eso hace que salte el error en pascal. La solución es usar directamente esta función de la api de windows, si es que sólo quieren escribir o enviar salidas a consola en unicode (utf8), sólo en Windows. Nota: esto es asi, si el código fuente se escribe en utf8. Uses Windows; Var Arch:Word; BB:longWord; cad:string; Begin Arch:=GetStdHandle(STD_OUTPUT_HANDLE); //Se obtiene manejador cad:='camión'+#$0D+#$0A; //Se añade Saltos de línea WriteFile(Arch,cad[1],length(cad),BB,nil); Writeln('BB = ',BB) End.
usando clases TStream tambien sería de este modo : uses classes,windows; var s: string; OutputStream: TStream; Begin OutputStream := THandleStream.Create(GetStdHandle(STD_OUTPUT_HANDLE)); s:='camión'; OutputStream.write(s[1],Length(s)); OutputStream.free; End.
No se realmente si sea la solución perfecta o idonea, pero si a alguien se le ocurre algo mejor. La ayuda no vendría mal.
15
« en: Jueves 18 de Febrero de 2010, 00:46 »
Si soporta UTF8, debes cambiar las fuentes a lucida, y después en la consola ejecutas el siguiente comando chcp 65001, que seria el UTF8 en la consola de Windows. No se si windowsXP lo soporta.
16
« en: Miércoles 17 de Febrero de 2010, 20:56 »
No entiendo UTF8 en consola Windows Yo escribí el siguiente programa, usando un editor UTF8, sin marca de BOM. Usando el comando chcp, cambio el código de página a 65001, el UTF8 para Windows. {código de página UTF8} //sin firma Unicode BOM Begin Writeln('code page UTF8 - 65001 en Windows'); Writeln('camión') End.
Compilo el programa, y después lo ejecuto y aparece el siguiente error : Runtime error 101 at $00401460 $00401460 $004069B1
El mismo programa, cuando lo compilo y lo ejecuto en linux. funciona bien. ¿ Qué estoy haciendo mal ? ¿ Cómo puedo correguir ese problema ?
17
« en: Martes 4 de Agosto de 2009, 02:44 »
En C no puedes comparar directamente una cadena de caracteres, tienes que hacerlo usando la función strcmp if(strcmp(cad,"Juan") == 0) printf( "este es juan" );
18
« en: Martes 4 de Agosto de 2009, 02:32 »
Debes usar arreglos. Un arreglo te permite crear variables todas de un mismo tipo de dato, a las cuales puedes acceder indicando su posición en el arreglo. Para declarar un array en C se hace de la siguiente manera. El código anterior te crear 100 variables de tipo int. Para leer los numeros y almacenarlos haces lo siguiente usando un bucle y colocando entre corchetes la posición de la variable. for (i=0;i<10,i++){ scanf("%d",&Numeros[i]) }
19
« en: Martes 4 de Agosto de 2009, 02:14 »
Si revisas bien tu programa hay muchos errores. Sólo necesitas un bucle Repeat Until Algo asi : Repeat {Aqui colocas todas las instrucciones que quieres se repitan} writeln('¿Desea salir de la aplicacion?: S/N '); readln (respuesta) Until respuesta='S'
20
« en: Martes 4 de Agosto de 2009, 00:48 »
Bueno usando pilas y colas el algoritmo seria mas o meno asi : PROCEDURE encriptar (VAR palabra:string) Var Pila:TPila; Cola:TCola; Car:Char; i:Integer; sacarpila:boolean; aux:string; Begin sacarpila:=false; i:=1; While (i<length(palabra)) do Begin if Not(palabra[i] in ['a','e','i','o','u']) then Cola.Meter(palabra[i]) else Begin While (palabra[i] in ['a','e','i','o','u']) do Begin Pila.Meter(palabra[i]); i:=i+1 End; sacarpila:=true; i:=i-1 End; if sacarpila then Begin While Not(Pila.EsVacia) do Begin car:=Pila.Sacar; Cola.Meter(car) End; sacarpila:=false End; i:=i+1 End; While Not(Cola.EsVacia) do aux:=aux+Cola.Sacar; palabra:=aux; End;
Estoy asumiendo que TPila y TCola, son Clases y contiene los métodos Sacar,Meter y EsVacia. En caso estes usando Procedmientos y funciones y no clases entonces debes hacer los cambios pertinentes. El procedimiente se puede resumir en el siguient enunciado : Recorrer todas las letras en palabra, cuando una letra es una consonate entonces lo colocas en la cola, y cuando son vocales loc colocas en la pila, ni bien termines de colocar las letras en la pila los sacas de la pila para colocarlas en la cola, y el proceso se repite hasta terminar con la palabra. Espero te ayude en algo. suerte
21
« en: Lunes 3 de Agosto de 2009, 23:30 »
Debes hacer algo parecido a esto : Var a,b:integer; Begin Repeat Write('Ingrese un numero : ');readln(a); Write('Ingrese un numero : ');readln(b); Writeln('La suma es : ',a+b); Until false; End.
Sólo que te va a hacer un bucle infinito. Para salir del bucle tienes que presionar Ctrl+C.
22
« en: Viernes 27 de Febrero de 2009, 17:44 »
Gracias por tu respuesta. Estuve investigando y esto es mas o menos lo que encontre :
Limites de memoria
Windows XP (32Bits) -Soporta un máximo de 4GB de RAM -Cada aplicación no podrá usar más de 2GB de RAM - memoria virtual de 4GB -Soporta DirectX9
Windows Vista (32Bits) -Soporta un máximo de 4Gb de RAM -Cada aplicación no podrá usar más de 2Gb de RAM - memoria virtual de 4GB -Soporta DirectX10
Como dicen en Win32 sólo se puede usar un máximo de 2 GB de memoria por programa o aplicación. Mi pregunta es Si a esos 2GB de memoria RAM que da Win32 a cada aplicación son lo que dicen Memoria Virtual. Como saber de los 2GB cuanto espacio me queda libre.
Espero alguien me pueda responder.
23
« en: Domingo 18 de Enero de 2009, 16:39 »
Mi pregunta es : ¿Como puedo saber si tengo memoria RAM disponible para mi programa?
Por ejemplo si quiero crear una lista dinamica de 2GB Como hago para saber si hay memoria disponible en el sistema para crear dicha variable.
Espero me puedan ayudar.
24
« en: Viernes 4 de Enero de 2008, 20:16 »
ok, gracias por tu ayuda
att. aguila3000
25
« en: Viernes 4 de Enero de 2008, 17:58 »
Gracias. Pero podrias explicarme un poco mejor tu ejemplo, para facilitar el alineamiento. Att. aguila3000
|
|
|