В чем разница между кэшем и буфером?

говорит ли кэш особый вид буфера правильно? Они оба выполняют аналогичные функции, но есть ли какая-то принципиальная разница, которую я упускаю?

30
задан Dharini Chandrasekaran
30.03.2023 3:17 Количество просмотров материала 3420
Распечатать страницу

4 ответа

из статьи Википедии о буферов данных:

буфер-это область физической памяти, используемая для временного хранения данных при перемещении из одного места в другое

на buffer заканчивается циклическим перебором и удержанием каждого отдельного фрагмента данных, который передается из одного места хранения в другое (например, при использовании кругового буфера при обработке звука). Буфер позволяет как раз то - "буфер" данные до и после текущей позиции в потоке данных.

действительно, есть некоторые общие аспекты буфера и кэша. Однако кэш в общепринятом смысле обычно делает не хранить все данные, когда это перемещается с места на место (т. е. кэш процессора).

цель a cache хранить данные в прозрачном пути, так, что как раз достаточные данные будут кэшированы так, что остальные данные можно перенести без каких-либо штрафных санкций. В этом контексте только кэш "предварительной выборки" небольшой объем данных (в зависимости от скорости передачи, размера кэша и т. д...).

основное различие заключается в том, что буфер, в конечном итоге провели все данные. И наоборот, кэш может содержать все, некоторые или ни одного из данных (в зависимости от проекта). Однако доступ к кэшу осуществляется так, как если бы вы в первую очередь обращались непосредственно к данным - то, что именно кэшируется, прозрачно для " пользователя" из тайника.


разницу в интерфейс. Когда вы используете кэш для доступа к источнику данных, вы используете его как кэш is источник данных - вы можете получить доступ к каждой части источника данных через кэш, и кэш будет определять, откуда поступают данные (сам кэш или источник). Кэш сам определяет, какие части данных предварительно загружать (обычно только начало, но иногда все), в то время как алгоритм замены кэша in use определяет, что / когда вещи удаляются из кэша. Лучшим примером этого является система, помимо кэш процессора сама по себе, это prefetcher/readahead. Оба загружают части данных, которые, по их мнению, вы будете использовать больше всего в памяти, и вернуться к жесткому диску, если что-то не кэшируется.

наоборот, буфер нельзя использовать мгновенно для того чтобы двинуть ваше положение в потоке данных, если новая деталь уже перемещена в буфер. Для этого потребуется переместить буфер (учитывая, что новое местоположение превышает длину буфера), что фактически потребует "перезапуска" буфера из нового местоположения. Лучшим примером этого является перемещение ползунка в видео Youtube.

еще одним хорошим примером буфера играет звук в Winamp. Так как аудио файлы должны быть декодированы процессором, это занимает некоторое время между тем, когда песня читается в, когда звук обработано, когда он будет отправлен на вашу звуковую карту. Винамп будет буфер некоторые аудио-данные, так что есть достаточно аудио данные уже обработаны, чтобы избежать "зависания" (т. е. процессор всегда готовит звук, который вы услышите в несколько сотен миллисекунд, это не в реальном времени; то, что вы слышите, идет из буфера, что КПУ подготовила в прошлом).

10
отвечен Breakthrough 2023-03-31 11:05

точнее было бы сказать, что кэш-это определенный шаблон использования буфера, который подразумевает многократное использование одних и тех же данных. Большинство применений "буфера" подразумевают, что данные будут истощены или отброшены после одного использования (хотя это не обязательно так), тогда как "кэш" подразумевает, что данные будут повторно использованы несколько раз. Кэширование также часто подразумевает, что данные хранятся в ней также используются одновременно, хотя это не обязательно так (как в pre-fetching и тому подобное), тогда как буферизация подразумевает, что данные хранятся для последующего использования.

существует, конечно, большое совпадение как в реализации, так и в использовании.

9
отвечен fluffy 2023-03-31 13:22

одно важное различие между кэшем и буфером:

буфер является частью основной памяти. Они представляют собой структуры, присутствующие и доступные из основной памяти (ОЗУ).

с другой стороны, кэш-это отдельная физическая память в иерархии памяти компьютера.

буфер также иногда называют буферным кэшем. Данное название подчеркивает тот факт, что использование буфера похож на кэша, т. е. для хранения данных. пока разница лежит в контексте его использования.

буферы используются для временного хранения данных, в то время как данные перемещаются из одного объекта в другой. Например: когда видео перемещается из интернета на наш компьютер для отображения буферов используются для хранения кадров видео, которые будут отображаться рядом. ( Это увеличивает QoS, поскольку видео будет работать гладко после успешного процесса буферизации.) Пример: другой пример-сценарий, когда мы записываем данные в наши файлы. Вновь записанные данные не скопировано во вторичную память мгновенно. Внесенные изменения сохраняются в буфере, а затем в соответствии с разработанной политикой, изменения отражаются обратно в файл во вторичной памяти (Жесткий диск).

кэши, с другой стороны, используются между основной памятью и процессорами, чтобы преодолеть разрыв между скоростью выполнения ОЗУ и процессором. Также наиболее часто запрашиваемые данные хранятся в кэше, чтобы уменьшить доступ к оперативной памяти.

2
отвечен Rubal 2023-03-31 15:39

Common thing: оба являются промежуточными компонентами хранения данных (программными или аппаратными) между вычислением и "основным" хранилищем.

для меня разница заключается в следующем:

буфера:

  • ручки последовательный доступ к данным (например, чтение/запись данных из файла или сокета)
  • позволяет интерфейс между вычислением и основным хранилищем,адаптация друг к другу различные картины передачи данных производитель и потребитель данных. Е. Г. вычисление пишет небольшой chuncks данных, но диск может принимать только части данных определенного размера. Так буфер аккумулирует малые части как входной сигнал и перегруппирует их в более большие части выхода.
  • так как адаптер шаблон дизайна. Он соединяет два взаимодействующих компонента, которые не могут взаимодействовать напрямую.
  • примеры: буфер, диск, командой bufferedreader в языке Java, duffering в компьютер графика.

кэширование:

  • ручки random доступ к данным (например, кэш процессора кэширует строки mememory, которые расположены не обязательно последовательно).
  • оптимизация доступ к основному хранилищу, делает его быстрее. Например. Кэш процессора избежать доступа к памяти, таким образом, делая команды процессора быстрее.
  • это как оформителя шаблон дизайна. Он соединяет (часто прозрачно) два взаимодействующих компонента, которые могут в принципе взаимодействуют напрямую, но это делает взаимодействие быстрее.
  • примеры: кэш процессора, кэш страницы, веб-прокси, кэш браузера.
1
отвечен Alexey 2023-03-31 17:56

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх