Автор Тема: каква дистрибуция 32 или 64  (Прочетена 7882 пъти)

remotex

  • Напреднали
  • *****
  • Публикации: 344
    • Профил
Re: каква дистрибуция 32 или 64
« Отговор #30 -: Oct 24, 2012, 21:36 »
void main()
{
    char _dst[4];
    char *_dst2="test";
    char *_src="12345678";
    strcpy(_dst,_src);
    printf("%s %s\n",_dst,_dst2);
}

Колегата не уточнява платформа/ОС но един бърз тест даде следните резултати:

// 64 bit result: 12345678 test
// 32 bit result: Segmentation fault

Заради подравняването в паметта не гръмва толкоз лесно в 64 битов режим...
само защото регионите се припокриват (при положение че за тази функция е ясно указано че НЕ трябва да се припокриват)
http://www.cplusplus.com/reference/clibrary/cstring/strcpy/
"Copies the C string pointed by source into the array pointed by destination, including the terminating null character (and stopping at that point).
To avoid overflows, the size of the array pointed by destination shall be long enough to contain the same C string as source (including the terminating null character), and should not overlap in memory with source."

пробвайте това
32 bits: FC17
char _dst[4]; char filler[100]; char *_dst2="test"; // (вече не гърми)
или пък това
char *_src="1234"; // Не гръмва (е вярно печата глупости за _dst2) :-) при положение че 5 байта препълват масив за 4 байта...

64 bits: FC17
char *_src="12345678abcdefghijklmnop"; // Не гръмва (печата глупости за _dst2) :-)
char *_src="12345678abcdefghijklmnopq"; // Вече си гърми
интересното тук е че под Уин7 64 битова рилийз версия не гръмва и не печата глупости и при доста по-дълъг низ?!
...
та така явно нещата зависят от платформа/ОС/разрядност/компилатор (и оптимизации за него) и пр. пр.
т.е. не е правилно САМО по този пример да се съди 32 срещу 64 бита
Активен

gat3way

  • Напреднали
  • *****
  • Публикации: 6050
  • Relentless troll
    • Профил
    • WWW
Re: каква дистрибуция 32 или 64
« Отговор #31 -: Oct 24, 2012, 23:12 »
Когато дадох примера не бях особено сериозен, обаче сега съм сериозен - да, причината е че alignment-а на стека е 8 16 байта и не - нямаме припокриване на регионите памет. Причината е че единствено съдържанието на _dst[4] се намира в стека, останалите две - *_src и *_dst2 са инициализирани и съответно са указатели към памет в rodata. Копирането на памет става от адреса rodata върху стека и няма припокриване, т.е strcpy се ползва напълно правилно и върху 32 и върху 64-битова система.

Всъщност забавно е защо компилирано с gcc не гърми на 64-битова машина, а гърми на 32-битова. Платформено/компилаторно-зависимо е, да :) Който не е чел този коментар преди да го редактирам, може да се пробва да познае :)

Всъщност няма значение, защото сметките бяха малко сбъркани, така че и да сте го прочели, няма значение. Всъщност за да е по-забавно внесох една подсказка, ама няма да кажа къде :)


П.П. теорията се чупи тук:
Цитат
char *_src="1234"; // Не гръмва (е вярно печата глупости за _dst2) :-) при положение че 5 байта препълват масив за 4 байта...

Ако беше така, щеше да помажеш dst2 с един нулев байт в началото и тъй като е null-terminated низ, нямаше да го печата просто, вместо да печата глупости :) Пък и казах че dst2 е в rodata, там при най-добро желание не можеш да презаписваш памет (пробвай примерно dst2[0]='a'; да видиш какво ще се случи). Друго е :)
« Последна редакция: Oct 24, 2012, 23:33 от gat3way »
Активен

"Knowledge is power" - France is Bacon

backinblack

  • Напреднали
  • *****
  • Публикации: 3201
    • Профил
Re: каква дистрибуция 32 или 64
« Отговор #32 -: Oct 25, 2012, 01:33 »
Цитат
......Ако ползваш LXDE/XFCE/MATE и приложения, които не консумират много ресурси като виртуални машини.......

Не знам за другите виртуални технологии, но ВМуаре не показва в таск менажера рама който дърпа за витуалките.
Можеш на 32бит да имаш 16ГБ и да си пуснеш 6 виртуалки с по 2ГБ рам и няма никакъв проблем, стига процесора ти да може да ги върти. Виртуалките си вземат от реалната, която в случая е налична и без да се вижда от системата.
Активен

kifavi8024

  • Новаци
  • *
  • Публикации: 0
    • Профил
Re: каква дистрибуция 32 или 64
« Отговор #33 -: Oct 25, 2012, 02:03 »
Цитат
......Ако ползваш LXDE/XFCE/MATE и приложения, които не консумират много ресурси като виртуални машини.......

Не знам за другите виртуални технологии, но ВМуаре не показва в таск менажера рама който дърпа за витуалките.
Можеш на 32бит да имаш 16ГБ и да си пуснеш 6 виртуалки с по 2ГБ рам и няма никакъв проблем, стига процесора ти да може да ги върти. Виртуалките си вземат от реалната, която в случая е налична и без да се вижда от системата.

Това без PAE поддръжка на 32 битовото ядро няма как да стане.
Относно частта за това с VMware - нещо не разбирам връзката с темата :)
Активен

STormDevil

  • Напреднали
  • *****
  • Публикации: 28
  • Distribution: Kubuntu 12.10
  • Window Manager: KDE 4.9.2
    • Профил
Re: каква дистрибуция 32 или 64
« Отговор #34 -: Oct 25, 2012, 09:42 »
Машинката е DELL Inspiron с 4GB RAM и i5 процесор.

Като среда ползвам КДЕ 4.9, като приложения най-често Komodo Edit, Eclipse, понякога kdenlive, PlayOnLinux. Имам и няколко виртуалки през VirtualBox.

Досега (вече повече от година и половина) се държи прилично, но пък нямам база за сравнение...
Активен

v_badev

  • Напреднали
  • *****
  • Публикации: 1355
    • Профил
Re: каква дистрибуция 32 или 64
« Отговор #35 -: Oct 25, 2012, 13:44 »
@cybercop - повече от 5 години ползвам 64 битова инсталация с 2GB РАМ на домашното PC с текущите версии на Gnome и само с пускане на виртуални машини съм успявал да я запълня. Иначе се е случвало да пиша софтуер на Java (а NetBeans + GlassFish много обичат RAM), играл съм доста игри (с Wine и native) и рядко си затварям табовете във Firefox. Даже доста време ползвах Azureus  за torrent клиент.

@STormDevil - за машина с 4GB рам просто не трябва да се замисляш. Не че 32 битовата ще работи лошо с такъв хардуер, просто с 64 битова дистрибуция производителността е по-висока.
Активен

danaildr

  • Гост
Re: каква дистрибуция 32 или 64
« Отговор #36 -: Oct 27, 2012, 19:40 »
64 битовите операционни системи са създадени за да обслужват 64 битови процесори. Като излязат 128 битови процесори ще излязат и 128 битови операционни системи. Иначе какъв е смисъла да се създава процесор и да го скопяваш с операционна система която не го ползва на 100%
Активен

backinblack

  • Напреднали
  • *****
  • Публикации: 3201
    • Профил
Re: каква дистрибуция 32 или 64
« Отговор #37 -: Oct 28, 2012, 00:23 »
И аз съм ЗА с 64 битов хардуер, 64 битова система.
Активен

STormDevil

  • Напреднали
  • *****
  • Публикации: 28
  • Distribution: Kubuntu 12.10
  • Window Manager: KDE 4.9.2
    • Профил
Re: каква дистрибуция 32 или 64
« Отговор #38 -: Oct 31, 2012, 16:55 »
Добре, реших, махам 32, слагам 64.

Обаче, вариантите за изтегляне са 2 - i386 и amd64 (това за кубунту 12.10 конкретно)

Сега, да разчитам ли, че в първата опция инсталаторът ще ме попита "Приятелче, избери сега 32 или 64" (или пък автоматично ще ме настрои на 64)?

Или да слагам втората, която е 100% 64, но пък е amd?
Активен

bop_bop_mara

  • Напреднали
  • *****
  • Публикации: 2433
  • Distribution: Debian Testing
  • Window Manager: LXDE
  • Cute and cuddly
    • Профил
Re: каква дистрибуция 32 или 64
« Отговор #39 -: Oct 31, 2012, 17:05 »
Сега, да разчитам ли, че в първата опция инсталаторът ще ме попита "Приятелче, избери сега 32 или 64" (или пък автоматично ще ме настрои на 64)?
Няма как да те пита, тя си е 32-битова.

Или да слагам втората, която е 100% 64, но пък е amd?
http://en.wikipedia.org/wiki/X86-64
(демек да, точно тази е 64-битовата версия, която искаш)
Активен

STormDevil

  • Напреднали
  • *****
  • Публикации: 28
  • Distribution: Kubuntu 12.10
  • Window Manager: KDE 4.9.2
    • Профил
Re: каква дистрибуция 32 или 64
« Отговор #40 -: Oct 31, 2012, 17:10 »
 [_]3 Благодаря
Активен

n00b

  • Напреднали
  • *****
  • Публикации: 1248
  • Distribution: OSX
  • Window Manager: 10.6, 10.8, 10.9
  • Live to hack, hack to live.
    • Профил
Re: каква дистрибуция 32 или 64
« Отговор #41 -: Nov 01, 2012, 01:20 »
Добре, реших, махам 32, слагам 64.

Обаче, вариантите за изтегляне са 2 - i386 и amd64 (това за кубунту 12.10 конкретно)

Сега, да разчитам ли, че в първата опция инсталаторът ще ме попита "Приятелче, избери сега 32 или 64" (или пък автоматично ще ме настрои на 64)?

Или да слагам втората, която е 100% 64, но пък е amd?

За да бъде хаоса пълен има 2 64 битови реализации... Първата е ia64 и е на intel, но изисква itanium което е абсурдно. Втората е на amd която после intel възприеха също. За да бъдат различавани, а те нямат НИЩО общо се възприе едната да се казва ia64, а другата amd64.

За да бъде цирка пълен между amd64 на amd и amd64 на intel има разлики! Но обикновенно самата операционна система ги замазва и ги унифицира, освен ако не пишете драйвери или OS.
Активен

mobilio - професионални мобилни приложения

STormDevil

  • Напреднали
  • *****
  • Публикации: 28
  • Distribution: Kubuntu 12.10
  • Window Manager: KDE 4.9.2
    • Профил
Re: каква дистрибуция 32 или 64
« Отговор #42 -: Nov 01, 2012, 08:51 »
Знаех си аз, че е каша някаква... Иначе съм съвсем обикновен потребител. Довечера скачам в тъмното с adm64 и каквото стане

Изниква ми обаче друг въпрос: /home ми е отделен логически дял, за да може при преинсталация да мажа само /

Какво обаче ще се случи с настройките на програмите, които се пазят там, при смяна от 32->64? Ще продължат ли да бъдат четими?
Активен

danaildr

  • Гост
Re: каква дистрибуция 32 или 64
« Отговор #43 -: Nov 01, 2012, 10:41 »
В 99% от случаите всичко работи перфектно. може да имаш проблеми, но те ще са толкова малко, че няма смисъл да говорим за тях. Така, че няма да е проблем да имаш отделен /home и да го оставиш при инсталацията на 64 битовата система
Активен

backinblack

  • Напреднали
  • *****
  • Публикации: 3201
    • Профил
Re: каква дистрибуция 32 или 64
« Отговор #44 -: Nov 01, 2012, 12:50 »
Знаех си аз, че е каша някаква... Иначе съм съвсем обикновен потребител. Довечера скачам в тъмното с adm64 и каквото стане

Изниква ми обаче друг въпрос: /home ми е отделен логически дял, за да може при преинсталация да мажа само /

Какво обаче ще се случи с настройките на програмите, които се пазят там, при смяна от 32->64? Ще продължат ли да бъдат четими?

Аз когато преинсталирам, стартирам първо на лайв, влизам си на диска на който ми е /home и изтривам всички файлове започващи с точка в папката, но преди това трябва да настроиш мениджъра да ти показва скритите файлове.
Ако /home не е на отделен дял, изтривам и всички папки от диска, освен /home и при новата инсталация, само му оказвам на диска кое е / и кое е swap, но без да форматира и той си запазва старото /home и си имам съвсем чиста инсталация с настройки по дифолт.
Активен