32-битные и 64-битные системы

<p>каковы различия между 32-битными и 64-битными системами?</p><p>если вы использовали оба из них, какие острые различия вы испытали?</p><p>будет ли проблемой использование 32-битных программ в 64-битных системах в некоторых случаях?</p>

<p><em>примечание. эти ответы относятся к стандартным процессорам пк на базе x86 (intel и amd) и windows (как правило, настраиваются для конечных пользователей). другие 32-разрядные или 64-разрядные микросхемы, другие ос и другие конфигурации ос могут иметь различные компромиссы.</em></p><p><strong> с технической точки зрения 64-битная ос дает вам: </strong></p><ul> <li> <p>позволяет отдельным процессам обращаться к более чем 4 гб ram каждого (на практике большинство, но не все 32-разрядные ос также ограничивают общую полезную систему ram менее 4 гб, а не только максимум приложения).</p> </li> <li> <p>все указатели занимают 8 байтов вместо 4 байтов. влияние на использование ram минимально (поскольку маловероятно, что приложение заполнено гигабайтами указателей), но в худшем теоретическом случае это может сделать кэш-память цп способной удерживать 1/2 как много указателей (что делает его эффективно на 1/2 размера). для большинства приложений это не так уж важно.</p> </li> <li> <p>в 64-битном режиме гораздо больше регистров цп общего назначения. регистры являются самой быстрой памятью во всей вашей системе. в 32-битном режиме есть только 8 и 16 регистров общего назначения в 64-битном режиме. в написанных мной приложениях для научных вычислений я наблюдал повышение производительности на 30% за счет перекомпиляции в 64-битном режиме (мое приложение действительно могло использовать дополнительные регистры).</p> </li> <li> <p>большинство 32-разрядных ос позволяют отдельным приложениям использовать только 2 гб озу, даже если у вас установлено 4 гб. это связано с тем, что оставшиеся 2 гб адресного пространства зарезервированы для обмена данными между приложениями, с ос и для связи с драйверами. windows и linux позволят вам изменить этот компромисс до 3 гб для приложений и 1 гб для общего доступа, но это может вызвать проблемы для некоторых приложений, которые не ожидают изменений. я также предполагаю, что это может нанести вред графической карте, которая имеет 1 гб ram (но я не уверен). 64-разрядная ос может дать отдельным 32-разрядным приложениям более полные 4 гб для игры.</p> </li> </ul><p><strong> с точки зрения пользователя: </strong></p><ul> <li> <p>скорость приложения обычно выше для 64-разрядного приложения в 64-разрядной ос по сравнению с 32-разрядной версией приложения в 32-разрядной ос, но большинство пользователей не увидят этого ускорения. большинство приложений для обычных пользователей на самом деле не используют дополнительные регистры, или преимущества компенсируются большими указателями, заполняющими кэш.</p> </li> <li> <p>если у вас есть приложения для захвата памяти (такие как редакторы фотографий, обработка видео, научные вычисления и т.д.), если у вас есть (или вы можете купить) более 3 гб озу, и вы можете получить 64-разрядную версию приложения, выбор прост: используйте 64-битную ос.</p> </li> <li> <p>некоторое оборудование не имеет 64-битных драйверов. проверьте свою материнскую плату, все подключаемые карты и все usb-устройства перед выполнением переключения. обратите внимание, что на заре windows vista было много проблем с драйверами. в наши дни все в целом лучше.</p> </li> <li> <p>если вы одновременно запускаете так много приложений, что у вас заканчивается ram (обычно вы можете сказать это, потому что ваш компьютер начинает работать очень медленно и вы слышите хруст жесткого диска), тогда вы захотите 64-битная ос (и достаточно оперативной памяти).</p> </li> <li> <p>вы можете запускать 32-битные приложения (но не драйверы) в 64-битной windows без проблем. наихудшее замедление, которое я измерил для 32-разрядного приложения в 64-разрядной windows, составляет около 5% (это означает, что если на выполнение 32-разрядной windows потребовалось 60 секунд, потребуется не более 60 * 1,05 = 65 секунд с то же самое 32-битное приложение в 64-битной windows).</p> </li> </ul><p><strong> что 32-битный против 64-битный означает <em>не</em> подразумевает: </strong></p><p>в системах x86 32-разрядный или 64-разрядный <em>direct</em> относится к размеру указателей. это все.</p><ul> <li> <p>он не относится к размеру типа c <code>int</code>. это зависит от конкретной реализации компилятора, и большинство популярных компиляторов выбирают 32-битную <code>int</code> в 64-битных системах.</p> </li> <li> <p>это не <em>напрямую</em> относится к размеру обычных регистров без указателей. однако использование 64-битных арифметических регистров требует, чтобы приложение и ос работали также в режиме 64-битных указателей.</p> </li> <li> <p>это не <em>напрямую</em> относится к размеру шины физического адреса. например, системе с 64-разрядными строками кэша и максимум 512 гб памяти требуется только 33 бита в ее адресной шине (т.е. <code>log2(512*1024**3) - log2(64) = 33</code>).</p> </li> <li> <p>это не относится к размеру физической шины данных: это больше связано с производственными затратами (количеством контактов в сокете цп) и размерами линий кэша.</p> </li> </ul>

<p>в принципе, вы можете сделать все в большем масштабе:</p><ol> <li><strong> ram для ос: </strong>ram ограничение 4 гб на x86 для ос (большую часть времени)</li> <li><strong> ram на процесс: </strong>ram ограничение 4 гб на x86 для процессов (всегда). если вы считаете, что это не важно, попробуйте запустить приложение, интенсивно использующее базу данных mssql. он будет использовать более 4 гб, если он у вас есть, и работать намного лучше.</li> <li><strong> адреса: </strong>адреса 64-битные, а не 32-битные, что позволяет вам иметь «большие» программы, которые используют больше памяти.</li> <li><strong> дескрипторы, доступные для программ: </strong>вы можете создать больше файловых дескрипторов, процессов, ... например, в windows x64 вы можете создать> 2000 потоков на процесс, но на x86 ближе к нескольким сотням.</li> <li><strong> доступны более широкие программы: </strong>на x64 вы можете запускать как x86, так и x64 программы. (пример windows: wow64, windows32 на эмуляции windows64)</li> <li><strong> опции эмуляции: </strong>на x64 вы можете запускать виртуальные машины x86 и x64.</li> <li><strong> быстрее: </strong>некоторые вычисления выполняются быстрее на 64-битном процессоре</li> <li><strong> разделение нескольких системных ресурсов: </strong>большое количество ram памяти очень важно, если вы хотите запустить хотя бы одну vm, которая разделяет ваши системные ресурсы.</li> <li><strong> доступны эксклюзивные программы: </strong>несколько новых программ поддерживают только x64. пример exchange 2007.</li> <li><strong> будущий устаревший x86 ?: </strong>со временем будет использоваться все больше и больше 64-битных и все больше и больше x86 не будет использоваться. таким образом, производители будут поддерживать только 64-битные и более.</li> </ol><p>два больших типа 64-битных архитектур - это архитектуры x64 и ia64. но x64 - самый популярный на сегодняшний день.</p><p>x64 может выполнять команды x86, а также команды x64. ia64 также выполняет команды x86, но не расширяет sse. на itanium выделено оборудование для запуска инструкций x86; это эмулятор, но аппаратно.</p><p>как упомянул @phil, вы можете глубже понять <a href="http://arstechnica.com/articles/paedia/cpu/x86-64.ars?bub">как это работает здесь</a> .</p>

<p>наибольшее влияние, которое люди заметят в данный момент, заключается в том, что 32-битный пк может обрабатывать максимум 4 гб памяти. когда вы снимаете память, выделенную для другого использования операционной системой, ваш компьютер, вероятно, будет показывать только около 3,25 гб используемой памяти. перейдите на 64 бита, и этот предел исчезнет.</p><p>если вы занимаетесь серьезным развитием, это может быть очень важно. попробуйте запустить несколько виртуальных машин, и вам скоро не хватит памяти. серверы с большей вероятностью будут нуждаться в дополнительной памяти, поэтому вы обнаружите, что использование 64-битных систем на серверах намного больше, чем на настольных пк. закон мура гарантирует, что у нас будет больше памяти на компьютерах, и поэтому в некоторых случаях настольные компьютеры также будут переключаться на 64-битные в качестве стандарта.</p><p>более подробное описание различий в процессорах можно найти в этой замечательной статье <a href="http://arstechnica.com/articles/paedia/cpu/x86-64.ars?bub">arstechnica</a> .</p>

<p>ничто не является бесплатным: хотя 64-битные приложения<em> могут </em>получают доступ к большему количеству памяти, чем 32-битные приложения, недостатком является то, что им<em> требуется </em>больше памяти. все те указатели, которые раньше требовали 4 байта, теперь им нужно 8. например, требование по умолчанию в emacs на 60% больше памяти, когда он построен для 64-битной архитектуры. эта дополнительная нагрузка снижает производительность на всех уровнях иерархии памяти: большие исполняемые файлы загружаются с диска дольше, большие рабочие наборы вызывают больше подкачки, а большие объекты означают меньшее размещение в кэшах процессора. если вы подумаете о цп с 16k-кешем l1, 32-разрядное приложение может работать с 4096 указателями, прежде чем оно пропустит и перейдет в кэш l2, но 64-разрядное приложение должно получить доступ к кэшу l2 после 2048 указателей.</p><p>на x64 это смягчается другими архитектурными улучшениями, такими как большее количество регистров, но на powerpc, если ваше приложение не может использовать> 4g, оно может работать быстрее на «ppc», чем «ppc64». даже на intel есть рабочие нагрузки, которые работают быстрее на x86, и немногие работают на 5% быстрее на x64, чем на x86.</p>

<p>64-битная ос может использовать больше оперативной памяти. вот и все, на практике. в 64-битной vista/7 используются более совершенные функции безопасности для размещения жизненно важных компонентов в озу, но это не так «заметно» как таковое.</p><p>от chrisinedmonton:</p><blockquote> <p>32-разрядная операционная система в системе ix86 с pae может адресовать до 64 гб озу. 64-разрядная операционная система на x86-64 может получить доступ к 256 tb виртуальному адресному пространству, хотя это может быть увеличено в последующих процессорах, до 16 eb. обратите внимание, что некоторые операционные системы еще больше ограничивают адресное пространство, и большинство материнских плат будут иметь дополнительные ограничения.</p> </blockquote>

<p>не уверен, что смогу ответить на все ваши вопросы без написания целого эссе (всегда есть google ...), но вам не нужно разрабатывать свои приложения по-другому для 64-битных систем. я предполагаю, что имеется в виду, что вы должны помнить о вещах, например, размер указателя больше не совпадает с размером целых. и у вас есть масса потенциальных проблем со встроенными допущениями для определенных типов данных длиной четыре байта, которые могут больше не соответствовать действительности.</p><p>это может привести к путанице в ваших приложениях - от сохранения/загрузки файла, итерации по данным, выравнивания данных до битовых операций с данными. если у вас есть существующая кодовая база, которую вы пытаетесь портировать, или работаете над обоими, то, скорее всего, у вас будет много маленьких проблем.</p><p>я думаю, что это проблема реализации, а не дизайна. то есть я думаю, что «дизайн», скажем, пакет для редактирования фотографий будет одинаковым независимо от размера слов. мы пишем код, который компилируется как в 32-битную, так и в 64-битную версии, и дизайн, безусловно, не отличается между ними - это одна и та же кодовая база.</p><p>фундаментальная «большая проблема» на 64-битной системе заключается в том, что вы получаете доступ к гораздо большему адресному пространству памяти, чем 32-битная. это означает, что вы действительно можете использовать более 4 гб памяти на вашем компьютере, и это действительно поможет.</p><p>я уверен, что другие ответы будут вдаваться в детали и выгоды больше, чем я.</p><p>с точки зрения обнаружения различий, то программно вы просто проверяете размер указателя (например, sizeof (void *)). ответ 4 означает его 32 бита, а 8 означает, что вы работаете в 64-битной среде.</p>

<p>32-битный процесс имеет виртуальное адресное пространство 4 гб; это может быть слишком мало для некоторых приложений. 64-битное приложение имеет практически неограниченное адресное пространство (конечно, оно ограничено, но вы, скорее всего, не достигнете этого предела).</p><p>на osx есть и другие преимущества. см. <a href="http://www.appleinsider.com/articles/08/09/04/road\_to\_snow\_leopard\_twice\_the\_ram\_half\_the\_price\_64\_bits.html">следующую статью</a> , почему запуск ядра в 64-битном адресном пространстве (независимо от того, работает ли ваше приложение в 64 или 32) или запуск приложения в 64-битном адресном пространстве (в то время как ядро все еще 32-битное) приводит к намного лучшая производительность. подводя итог: если какой-либо из них является 64-битным (ядро или приложение, или, конечно, оба), tlb («буфер просмотра трансляции») не нужно сбрасывать всякий раз, когда вы переключаетесь с ядра на использование пробела и обратно (что приведет к ускорению вверх ram доступ).</p><p>также вы получаете прирост производительности при работе с переменными "long long int" (64-битные переменные, такие как uint64\_t). 32-битный цп может добавлять/делить/вычитать/умножать два 64-битных значения, но не в одной аппаратной операции. вместо этого необходимо разделить эту операцию на две (или более) 32-битные операции. таким образом, приложение, которое хорошо работает с 64-битными числами, получит прирост скорости, поскольку сможет выполнять 64-битную математику напрямую в аппаратном обеспечении.</p><p>и последнее, но не менее важное: архитектура x86-64 предлагает больше регистров, чем классические архитектуры x86. работа с регистрами намного быстрее, чем работа с ram, и чем больше регистров у процессора, тем реже ему приходится менять значения регистров на ram и возвращаться к регистрам.</p><p>чтобы узнать, может ли ваш процессор работать в 64-битном режиме, вы можете посмотреть на различные переменные sysctl. например. откройте терминал и введите</p><pre><code>sysctl machdep.cpu.extfeatures </code></pre><p>если в нем указан em64t, ваш процессор поддерживает 64-битное адресное пространство в соответствии со стандартом x86-64. вы также можете искать</p><pre><code>sysctl hw.optional.x86\_64 </code></pre><p>если он говорит 1 (истина/включен), ваш процессор поддерживает битовый режим x86-64, если он говорит 0 (ложь/отключен), это не так. если настройка вообще не найдена, считайте ее ложной.</p><p>примечание. вы также можете извлекать переменные sysctl из нативного приложения c, не используя инструмент командной строки. увидеть</p><pre><code>man 3 sysctl </code></pre>

<p>обратите внимание, что адресное пространство может использоваться для более чем (реальной) памяти. можно также отображать в памяти большие файлы, что может повысить производительность в более нечетных шаблонах доступа, потому что включается более мощное и эффективное кэширование на уровне блоков vm. кроме того, безопаснее выделять большие блоки памяти на 64-битных, так как heapmanager с меньшей вероятностью столкнется с фрагментацией адресного пространства, которая не позволит ему выделить большой блок.</p><p>некоторые из вещей, упомянутых в этом потоке (например, удвоение # регистров), применимы только к x86-> x86\_64, но не к 64-битным в общем. так же, как тот факт, что под x86\_64 гарантированно есть sse2, 686 кодов операций и дешевый способ сделать pic. эти функции строго не о 64-битной, а о сокращении устаревших и исправлении известных ограничений x86</p><p>более того, довольно часто люди указывают на удвоение регистров как причину ускорения, в то время как более вероятно использование sse2 по умолчанию, которое добивается цели (ускорение memcpy и подобных функций). если вы включите тот же набор для x86, разница будет намного меньше. (*) (***)</p><p>также имейте в виду, что часто имеет место начальное наказание, потому что средняя структура данных будет увеличиваться просто потому, что размер указателя больше. это также имеет кеш-эффекты, но более заметно в том смысле, что усреднение memcpy () (или любого другого эквивалента для копии памяти на вашем языке) займет больше времени. это только на несколько процентов, но ускорения, названные выше, также на этой величине.</p><p>обычно издержки на выравнивание также больше на 64-битных архитектурах (ранее 32-битные записи часто становятся смесью 32-битных и 64-битных значений), еще больше разрушая структуры.</p><p>в целом, мои простые тесты показывают, что они будут грубо уравновешивать друг друга, если драйверы и библиотеки времени выполнения полностью адаптированы, не давая значительной разницы в скорости для среднего приложения. однако некоторые приложения могут внезапно стать быстрее (например, когда зависит от aes) или медленнее (критическая структура данных постоянно перемещается/сканируется/обходит и содержит много указателей). тем не менее, тесты проводились на windows, поэтому оптимизация pic не проводилась.</p><p>обратите внимание, что большинство языков jit-vm (java, .net) используют в среднем значительно больше указателей (внутри), чем, например, c++. вероятно, их использование памяти увеличивается больше, чем для средней программы, но я не смею приравнивать это непосредственно к замедляющим эффектам (так как это действительно сложный и забавный зверь, который часто трудно предсказать без измерения)</p><p>в 64-разрядной версии windows по умолчанию используется sse2 для операций с плавающей запятой, что ускоряет выполнение простых операций и замедляет сложные операции (sin, cos и т.д.).</p><p>(*) малоизвестный факт - число регистров sse также удваивается в 64-битном режиме</p><p>(**) у доктора доббса была хорошая статья об этом несколько лет назад.</p>

<p>помимо очевидных проблем с пространством запоминания, о которых здесь упоминает большинство людей, я думаю, что стоит взглянуть на понятие «вычислений с использованием широких слов», о котором кнут (среди прочих) говорил в последнее время. за счет манипулирования битами можно получить много преимуществ, а побитовые операции с 64-битным word идут намного дальше, чем с 32-битным word. короче говоря, вы можете выполнять больше операций в регистрах, не обращаясь к памяти, и с точки зрения производительности это довольно большой выигрыш.</p><p>взгляните на том 4, предисловие 1а, чтобы найти примеры классных трюков, о которых я говорю.</p>

<p>помимо возможности адресовать больше памяти, x86\_64 также имеет больше регистров, позволяющих компилятору генерировать более эффективный код. улучшение производительности, как правило, будет довольно незначительным.</p><p>архитектура x86\_64 обратно совместима с x86. можно запускать немодифицированные 32-битные операционные системы. также возможно запускать немодифицированное 32-битное программное обеспечение из 64-битной ос. для этого потребуются все обычные 32-битные библиотеки. возможно, они должны быть установлены отдельно.</p>

<p>эта тема уже слишком длинная, но ...</p><p>большинство ответов сосредоточены на том факте, что у вас больше 64-битное адресное пространство, поэтому вы можете адресовать больше памяти. для примерно 99% всех приложений это совершенно не имеет значения. большой возглас.</p><p><strong> реальная </strong>причина, по которой 64-битный код - это хорошо, это<strong> нет </strong>регистры больше, но их в два раза больше! это означает, что компилятор может хранить больше ваших значений в регистре, вместо того, чтобы помещать их в память и загружать их обратно несколькими инструкциями позже. если и когда оптимизирующий компилятор развертывает ваши циклы для вас, он может развернуть их примерно вдвое, что действительно может повысить производительность.</p><p>кроме того, были определены соглашения о вызове/вызове подпрограммы для 64-битной системы, чтобы сохранить большинство переданных параметров в регистрах вместо того, чтобы вызывающий элемент помещал их в стек, а вызываемый объект их выводил.</p><p>таким образом, «типичное» c/c++ приложение получит повышение производительности примерно на 10% или 15%, просто перекомпилировав для 64-битной версии. (предполагая, что некоторая часть приложения была связана с вычислениями. конечно, это не гарантировано; все компьютеры ожидают с одинаковой скоростью. ваш пробег может изменяться.)</p>

<p>цитата из microsoft.com:</p><blockquote> <p>в следующей таблице увеличенные максимальные ресурсы компьютеров, основанных на 64-разрядных версиях windows и 64-разрядном процессоре intel, сравниваются с существующими 32-разрядными максимумами ресурсов.</p> </blockquote><p><img src="https://i.stack.imgur.com/o5i3c.jpg" alt="ms-table"></p>

<p>на 32-битной машине у вас есть только 4 294 967 295 байт памяти для адресации. на 64-битной машине у вас 1,84467441 × 10 ^ 19 байт памяти.</p><p> <a href="http://en.wikipedia.org/wiki/64-bit#32\_vs\_64\_bit">википедия говорит это</a> </p><blockquote> <p>64-разрядные процессоры вычисляют конкретные задачи (например, факториалы больших чисел) в два раза быстрее, чем работа в 32-разрядных средах (данный пример получен из сравнения между 32-разрядным и 64-разрядным windows calculator; заметно для факториала, скажем, 100 000 ). это дает общее представление о теоретических возможностях 64-битных оптимизированных приложений.</p> <p>несмотря на то, что 64-разрядные архитектуры, несомненно, упрощают работу с большими наборами данных в таких приложениях, как цифровое видео, научные вычисления и большие базы данных, ведутся серьезные споры о том, будут ли они или их 32-разрядные режимы совместимости работать быстрее, чем сопоставимые цены 32-битные системы для других задач. в архитектуре x86-64 (amd64) большинство 32-разрядных операционных систем и приложений могут без проблем работать на 64-разрядном оборудовании.</p> <p>64-битные виртуальные машины java sun запускаются медленнее, чем их 32-битные виртуальные машины, потому что sun реализовал «серверный» jit-компилятор (c2) только для 64-битных платформ. [9] «клиентский» jit-компилятор (c1), который производит менее эффективный код, но компилируется гораздо быстрее, недоступен на 64-битных платформах.</p> <p>следует отметить, что скорость - не единственный фактор, который следует учитывать при сравнении 32-разрядных и 64-разрядных процессоров. такие приложения, как многозадачность, стресс-тестирование и кластеризация (для высокопроизводительных вычислений), hpc, могут более подходить для 64-битной архитектуры при правильном развертывании. по этой причине 64-битные кластеры широко используются в крупных организациях, таких как ibm, hp и microsoft.</p> </blockquote>

<p>помимо уже упомянутых преимуществ здесь есть еще несколько в отношении безопасности:</p><ul> <li>у процессоров x86\_64 в таблицах страниц есть бит no-execute. то есть это может предотвратить использование эксплойтов безопасности из-за переполнения буфера. 32-битный процессор x86 поддерживает эту функцию только в режиме pae.</li> <li>увеличенное адресное пространство обеспечивает лучшую рандомизацию размещения адресного пространства (aslr), что затрудняет использование переполнений буфера.</li> <li>x86\_64 код процессора имеет независимый от позиции код, то есть доступ к данным относительно регистра указателя команд (rip).</li> </ul><p>еще одно преимущество, которое приходит на ум, заключается в том, что объем виртуальной непрерывной памяти, выделенной с помощью <code>vmalloc()</code> в ядре linux, может быть больше в 64-битном режиме.</p>

<p>кристоф и поши заявили, что основные технические различия между 32- и 64-битными ос «пользовательский опыт обычно сильно отличается от теории». на сегодняшний день 64-разрядные потребительские версии windows (xp и vista) имеют большие дыры в поддержке драйверов. у меня было много принтеров, сканеров и других внешних устройств, которые не работали с 64-битными версиями, которые прекрасно работают с 32-битными версиями. это устройства с 64-разрядными драйверами, и они по-прежнему не будут работать. на этом этапе я бы порекомендовал вам держаться подальше от всего, что основано на потребителях, то есть от 64-разрядной версии от microsoft, пока вы не услышите о том, как windows 7 справляется с этим, от реальных конечных пользователей, а не только от фанатов, которые в настоящее время имеют к нему доступ. дайте ему как минимум 6 месяцев и посмотрите, что испытывают люди. лично я буду устанавливать 32-разрядную версию windows 7, поскольку мои 64-разрядные версии vista - это дорогая бумага, которую я перестал использовать несколько лет назад и вернулся к xp 32-разрядным.</p>

<p>некоторые игровые программы используют <a href="http://en.wikipedia.org/wiki/bitboard">бит-доску</a> представление. шахматы, шашки и отелло, например, имеют доску 8x8, то есть 64 квадрата, поэтому наличие как минимум 64 бит в машинном word значительно повышает производительность.</p><p>я помню, как читал о шахматной программе, 64-битная сборка которой была почти в два раза быстрее 32-битной версии.</p>

<p>термин 32-разрядный и 64-разрядный относится к способу обработки информации процессором компьютера (также называемым цп). 64-разрядные версии windows обрабатывают большие объемы оперативной памяти (озу) более эффективно, чем 32-разрядные системы.</p><p>скорость может быть разной на мой взгляд</p>

<p>для большинства практических целей вы, вероятно, не заметите разницу.</p><p>для установки 64-разрядной операционной системы у вас должен быть 64-разрядный процессор (большинство процессоров за последние несколько лет).</p><p>у 64-битной операционной системы есть несколько преимуществ:</p><ul> <li>это позволит вам использовать более 4 гб ram (максимальное число, которое вы можете адресовать в 32-битной ос, составляет 2 ^ 32 = 4 гб)</li> <li>это полезно для работы с большими наборами данных (например, в excel) и некоторыми вычислительными задачами (например, photoshop и большие файлы)</li> <li>вы можете запустить только 64-битную программу на 64-битной ос, но вы можете запустить 32-битную программу на обеих (имейте в виду, что многие программы выполняются как обе, так что не так уж много 64-битных программы).</li> </ul><p>в большинстве случаев 64-разрядные программы используют немного больше памяти, но для персонального компьютера это обычно не замечается.</p>

<p>еще один момент, связанный с microsoft windows, заключается в том, что в течение многих лет существовал win32 api, который предназначен для 32-разрядных операционных систем и не оптимизирован для 64-разрядной компиляции. когда я пишу несколько dll для своих приложений, я обычно компилирую в win32, который не является 64-битной версией вещей. до vista не было много успешных 64-битных версий windows, я считаю, что там, где я работаю, моя новая машина имеет 4 гб ram, но я все еще использую 32-битную windows xp pro, поскольку это известная стабильная операционная система относительно xp64 или vista.</p><p>я думаю, что вы можете также оглянуться назад, когда произошел переход с 16-битного на 32-битный, чтобы узнать больше подробностей о том, почему этот переход может иметь большое значение для некоторых людей. критически важные приложения, которые компания может запускать на настольном компьютере, например небольшие учетные пакеты могут не работать в 64-битной операционной системе, и поэтому существует необходимость поддерживать устаревшую машину, виртуальную или реальную.</p><p>изменение размера адреса может иметь серьезные последствия и последствия.</p>