Kalifornský zákon AB 1043 platný od 1. ledna 2027 vyžaduje, aby operační systémy požadovaly po uživatelích věk nebo datum narození a skrze API poskytovaly aplikacím informaci, zda je uživatel mladší 13 let, má 13 až 16 let, má 16 až 18 let nebo má alespoň 18 let. Vývojáři linuxových distribucí řeší, co s tím (Ubuntu, Fedora, …).
Konference LinuxDays 2026 proběhne o víkendu 3. a 4. října v Praze v areálu ČVUT v Dejvicích na FIT. Čekají vás desítky přednášek, workshopy, stánky a setkání se spoustou chytrých lidí.
Nové verze webových prohlížečů Chrome a Firefox jsou vydávány každé 4 týdny. Aktuální verze Chrome je 145. Aktuální verze Firefoxu je 148. Od září přejde Chrome na dvoutýdenní cyklus vydávání. V kterém týdnu bude mít Chrome větší číslo verze než Firefox? 😀
Apple představil nové čipy M5 Pro a M5 Max, MacBook Pro s čipy M5 Pro a M5 Max, MacBook Air s čipem M5 a Studio Display a nový Studio Display XDR.
Bylo spuštěno hlasování o přednáškách a workshopech pro letošní Installfest, jenž proběhne o víkendu 28. a 29. března v Praze na Karlově náměstí 13.
Byla vydána (Mastodon, 𝕏) třetí RC verze GIMPu 3.2. Přehled novinek v oznámení o vydání. Podrobně v souboru NEWS na GitLabu.
Apple představil iPhone 17e a iPad Air s čipem M4.
Byla vydána verze 1.0 editoru kódů Gram. Jedná se o fork editoru Zed bez telemetrie a umělé inteligence.
Byla oznámena spolupráce GrapheneOS s Motorolou. Podrobnosti v tiskové zprávě. GrapheneOS (Wikpedie) je varianta Androidu zaměřující se na bezpečnost a soukromí.
Armbian, tj. linuxová distribuce založená na Debianu a Ubuntu optimalizovaná pro jednodeskové počítače na platformě ARM a RISC-V, ke stažení ale také pro Intel a AMD, byl vydán ve verzi 26.2.1. Přehled novinek v Changelogu.
convert mi ho bez problémů zmenšil na 1500x1500, jen při tom potřeboval skoro 2 GB paměti (samozřejmě virtuální).
program požádá třeba o 1M ram a tu potřebuje dostat v celku, takže pro alokaci musí být v RAM volný blok o velikosti 1M.V Linuxe je to pravda, v BSD nikoli, tam neexistuje fragmentacia pamate.
program požádá třeba o 1M ram a tu potřebuje dostat v celku, takže pro alokaci musí být v RAM volný blok o velikosti 1M
Musí být volný blok virtuální paměti, ne fyzické (ta může být klidně celá plná - tedy až na rezervu definovanou v /proc/sys/vm/min_free_kbytes).
To jste na omylu program požádá třeba o 1M ram a tu potřebuje dostat v celku, takže pro alokaci musí být v RAM volný blok o velikosti 1M.Nejsem expert na jadro ale jak to popisujete, tak mi z toho plyne, ze virtualni pamet je prakticky nanic. Resp. pokud by se neco odswapovalo, tak by to musel byt cely alokovany blok pameti. Funguje to opravdu takto? Ja zil doted v predstave, ze fyzicka pamet a pamet jak ji vidi proces spolu vubec nesouvisi a provadi se preklad v procesoru pomoci tabulek.
brk() a mmap(), natož user space - malloc(), new) samozřejmě pracuje s virtuální pamětí.
Aha, cili teda pulka bloku pameti zustane v RAM a druha bude na disku. Mezitim se ta odswapovana fyzicka RAM zaplni necim jinym (to je jedno cim) a nasledne nastane potreba priswapovat puvodni odswapovany blok zpet do RAM (rekneme, ze bude potreba). Protoze uz nemuze na sve puvodni misto, bude to nekam jinam. Dojde tedy k tomu, ze onen puvodni blok se ve fyzicke RAM "roztrhne". Proc tedy nejde naalokovat takto "roztrzeny" blok hned na zacatku, ale jak tvrdite, musi byt ve fyzicke RAM souvisly?
Nebo je nekde v me uvaze chyba?#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#define MAX 1024*1024
#define SIZE 1024*1024
char *pointers[MAX];
int main(void)
{
int i;
char *tmp;
char buf[16];
for (i = 0; i < MAX; i++) pointers[i] = NULL;
for (i = 0; i < MAX; i++) {
pointers[i] = malloc(SIZE);
// memset(pointers[i], 'A', SIZE);
if (pointers[i] == NULL) {
fprintf(stderr, "Nemozem alokovat pamat (pointers)\n");
break;
}
}
for (i = 0; i < MAX; i += 2) {
if (pointers[i] != NULL) {
free(pointers[i]);
pointers[i] = NULL;
}
}
tmp = malloc(SIZE*2);
if (tmp == NULL) {
fprintf(stderr, "Nemozem alokovat pamat (tmp1)\n");
}
for (i = 0; i < MAX; i++) {
if (pointers[i] != NULL) {
free(pointers[i]);
pointers[i] = NULL;
}
}
tmp = malloc(SIZE*2);
if (tmp == NULL) {
fprintf(stderr, "Nemozem alokovat pamat (tmp2)\n");
}
fgets(buf, sizeof(buf), stdin);
return EXIT_SUCCESS;
}
Ne, proč? User space aplikacím po fyzické paměti nic není, ty s ní vůbec nepřijdou do styku. To je to, co tu celou dobu od začátku tvrdím - že má-li convert problémy s alokací paměti, není třeba přidávat fyzickou paměť, ale stačí dočasně zvětšit virtuální (přidáním swapu). Dokonce i ten zmiňovaný convert si poradí s 32 MB fyzické paměti a 256 MB swapu…
malloc() alokoval 224 MB blok (pochopitelně virtuální) paměti na počítači s 32 MB fyzické paměti a 256 MB swapem. Kdo nevěří, může si to klidně vyzkoušet sám.
ulimit -a').
Na 256M to asi neuděláš. On je totiž rozdíl 250M v 256M fyzické a 650M v 256M fyzické.
Právě jsem zmíněnou operaci, tj. zmenšení 15000x15000 obrázku (644 MB TIFF) příkazem convert z balíčku ImageMagick provedl na stroji s 64 MB fyzické paměti. Mám pro zajímavost zkusit ještě 32 MB?
tifftopnm -byrow big.tiff | pamscale -xscale=0.5 -yscale=0.5 | pnmtopng > output.pngTahle kolona zmenší původní tiff na polovinu a uloží výsledek ve formátu png
)
tifftopnm big.tiff >vystup.pnm pnmscale vystup.pnm -xscale=0.1 -yscale=0.1 > vystup_zmenseno.pnmToto cvičeni jsem provedl na P4 1.5GHz s 512 MB RAMM a šlo to docela rychle. Děkuji všem za odpovědi a názory na problém.
Tiskni
Sdílej: