|
4 / 3 / 1
Регистрация: 08.08.2019
Сообщений: 238
|
||
Пользовательская буферизация13.09.2019, 22:51. Показов 4934. Ответов 49
Метки нет (Все метки)
Что такое пользовательская буферизация? Читаю книгу по системному программированию и в ней есть тема пользовательской буферизации,но я не могу понять что автор имеет ввиду под понятием пользовательской буферизации.
Вот цитата с нее : Кликните здесь для просмотра всего текста
Пользовательская буферизация это просто построение программы с помощью обычных массивов или что? Добавлено через 5 часов 5 минут Если это так то как может быть не буферизованный ввод вывод?
0
|
||
| 13.09.2019, 22:51 | |
|
Ответы с готовыми решениями:
49
двойная буферизация двойная буферизация Двойная буферизация на С++ |
|
4 / 3 / 1
Регистрация: 08.08.2019
Сообщений: 238
|
||
| 14.09.2019, 19:49 [ТС] | ||
|
DrOffset, так разве адресное пространство ядра отделено полностью от адресного пространства программы? Насколько я помню то все адресное пространство процесса состоит с пространства ядра + процесса, разве не так?
И все таки правильно я написал, после вызова read() программа переключается в режим ядра и вызывается обработчик события который вызывает read который сначала читает данные в буфер ядра, потом возвращает данные обработчик, обработчик буфер программы, а буфер программы тому буферу который был указан в read()? Добавлено через 5 часов 15 минут DrOffset, я прочитал ту статью и у меня появились сомнения,вот цитата
0
|
||
|
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
|
||||
| 14.09.2019, 19:55 | ||||
|
Добавлено через 1 минуту
0
|
||||
|
4 / 3 / 1
Регистрация: 08.08.2019
Сообщений: 238
|
||
| 14.09.2019, 19:56 [ТС] | ||
|
DrOffset,
0
|
||
|
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
|
|
| 14.09.2019, 19:59 | |
|
Vanconts, к чему это?
0
|
|
|
4 / 3 / 1
Регистрация: 08.08.2019
Сообщений: 238
|
|
| 14.09.2019, 20:01 [ТС] | |
|
DrOffset, к тому что flusher сбасывает память на диск с ядра,а не с буфера программы в ядро
0
|
|
|
4 / 3 / 1
Регистрация: 08.08.2019
Сообщений: 238
|
|
| 14.09.2019, 20:04 [ТС] | |
|
DrOffset, а вот скрин с сайта о виртуальной памяти на котором видно что 1 ГБ адрессного пространства процесса занимает ядро,возможно это не правда,тогда как все на самом деле?
0
|
|
|
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
|
|||
| 14.09.2019, 20:07 | |||
|
Ваша цитата из #21 не имеет ничего общего с flusher из ядра. Это цитата о библиотечной функции flush, которая делает то, что я написал. Добавлено через 2 минуты
0
|
|||
|
4 / 3 / 1
Регистрация: 08.08.2019
Сообщений: 238
|
|
| 14.09.2019, 20:10 [ТС] | |
|
DrOffset, я кажется понял, спасибо,просто принцип работы буфера ядра с буфером программы слегка схожи поэтому я путался в этом,но так же в той теме было написано что есть ввод-вывод без буфера ,такое же есть в ядре,там написано что не используют буфер для того чтобы быть увереным что данные попали на диск,но это выходит не так,т.к. данные задеживаются в буфере ядра и просто могут не записаться на диск даже если не использовать буфер программы,разве не так?
0
|
|
|
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
|
||
| 14.09.2019, 20:12 | ||
|
Но вообще да, данные могут не записаться на диск, даже если буфер программы не используется.
0
|
||
|
4 / 3 / 1
Регистрация: 08.08.2019
Сообщений: 238
|
|
| 14.09.2019, 20:15 [ТС] | |
|
DrOffset, в теме на stackoverflow ,тоесть по сути данные(не всегда) проходят двойную буферизацию?
Добавлено через 1 минуту а когда я указываю читать 1024 байт 1024 раза по одному байту с файла то выходит что ядро вызывает 1024 раза read с файла по одному байту ,записывает это в буфер программы и уже с этого буфера данные приходят в саму программу?
0
|
|
|
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
|
||||
| 14.09.2019, 20:23 | ||||
Самый простой пример и наглядный - это запись на флешку, если вы открыли файл в программе, и даже если отключили буферизированный ввод-вывод из RTL, записали файл, данные ушли драйверу и все коды возврата всех вызовов сигнализируют об успешной записи, то это далеко не означает, что они реально будут записаны. Именно поэтому у вас просят сделать "безопасное извлечение" (в Linux также есть команда sync для этого). В этот момент драйверу уйдет событие о том, что нужно сбросить все данные на носитель. Добавлено через 4 минуты
1
|
||||
|
4 / 3 / 1
Регистрация: 08.08.2019
Сообщений: 238
|
|||
| 14.09.2019, 20:25 [ТС] | |||
|
DrOffset, ну именно как буферы ядра работают я понял
и я об этом
Добавлено через 55 секунд
0
|
|||
|
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
|
||
| 14.09.2019, 20:29 | ||
Я бы не понимал ее буквально на вашем месте.
0
|
||
|
4 / 3 / 1
Регистрация: 08.08.2019
Сообщений: 238
|
|
| 14.09.2019, 20:40 [ТС] | |
|
DrOffset, просто теперь когда я понял как все работает то как по мне это глупый подход постройки логики,нужно проверять скорее записаны ли данные на диск ,а не в ядро,
а вот еще такой момент насчет sync() ,насколько я знаю sync как и fsync только "убеждаются " что данные записываются на диск,а чтобы использовать прямую запись с буфера программы на диск нужно открыть файл с флагом O_DIRECT,не так ли?
0
|
|
|
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
|
||||
| 15.09.2019, 00:08 | ||||
|
Большинству программ совершенно не важно, записаны ли реально данные сию минуту или будут записаны чуть позже. Если бы каждая обращающаяся к диску программа требовала немедленной реакции устройства на это, то как вы считаете, что бы произошло? Я вам подскажу: устройство будет просто "висеть" в бесконечной активности, что приведет не только к "тормозам" на уровне софта, но и быстрому его (устройства) износу. Добавлено через 3 минуты И кстати в справке к этому флагу написано следующее:
0
|
||||
|
4 / 3 / 1
Регистрация: 08.08.2019
Сообщений: 238
|
||
| 15.09.2019, 00:19 [ТС] | ||
|
DrOffset, а в каких случаях это может быть?
0
|
||
|
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
|
|||
| 15.09.2019, 00:42 | |||
|
Добавлено через 1 минуту Возможно будет полезно: https://lwn.net/Articles/457667/
0
|
|||
|
4 / 3 / 1
Регистрация: 08.08.2019
Сообщений: 238
|
|
| 15.09.2019, 00:43 [ТС] | |
|
DrOffset, та я понимаю что с осторожностью, просто что значит с осторожностью в моем случае? Это может быть опасно? И кстати чем так плохо делать прямой ввод-вывод?
0
|
|
|
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
|
|
| 15.09.2019, 01:31 | |
|
1
|
|
|
2736 / 891 / 331
Регистрация: 10.02.2018
Сообщений: 2,128
|
|
| 15.09.2019, 11:24 | |
|
Vanconts, жесткие диски осуществляют обмен информацией только блоками - секторами (512, 1024, ... байт). Если вы хотите прочесть один байт, то с диска нужно всё равно прочесть сектор, затем из прочитанного выбрать один байт. Если вы хотите следующий байт, то нужно опять прочесть тот же сектор и выбрать из него следующий байт. Логично, что выгоднее прочесть сектор один раз в память, а последующие операции чтения выполнять из памяти миную обращение к дискам. При записи ещё хуже. Что бы записать байт, нужно сперва прочесть сектор, заменить в нём байт и затем записать изменённый сектор на диск. Блочный алгоритм работы дисков вынуждает к использованию промежуточного буфера. Если хотите работать напрямую, то вы должны работать с блоками памяти кратными секторам как по размеру, так и по смещению.
1
|
|
| 15.09.2019, 11:24 | |
|
Нужна двойная буферизация для программы пользовательская функцыя Пользовательская функция Пользовательская функция! Пользовательская функция О_О Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
сукцессия 33. открытые вопросы от клауде
anaschu 19.07.2026
"Что накопилось за эту часть А — тринадцать правок, из которых шесть пришли из ваших вопросов и каждая оказалась реальной ошибкой, а не калибровкой: односторонний симбиоз, отсутствующий листопад,. . .
|
32 сукцессия
anaschu 19.07.2026
сукцессия 28‑мерное ядро стабилизировано
Коллеги, фиксирую разбор инженерных правок и их изоморфную проекцию на экономику, меметику и половой отбор. Модель теперь не «подкручивает» сходимость —. . .
|
сукцессия 31: модель микоризы - это модель ещё нескольких явлений, социальных и экономических
anaschu 18.07.2026
Теория «Всего»: апдейт v1. 1. 2 — 28‑мерное ядро стабилизировано
Коллеги, фиксирую разбор инженерных правок и их изоморфную проекцию на экономику, меметику и половой отбор. Модель теперь не. . .
|
сукцессия 30. Массив проверяющих друг друга моделей
anaschu 18.07.2026
Архитектура сети взаимопроверяющих моделей микоризной сукцессии (v2. 0)
Развитие тензорного ОДУ-ядра и создание кросс-платформенного калибровочного полигона
Уважаемые коллеги!
В продолжение. . .
|
|
Грибы - это женщины, деревья - это мужчины. Анти инь янь для союза мужчины и женщины.
anaschu 18.07.2026
ГЛАВНЫЙ НАУЧНО-ФИЛОСОФСКИЙ ВЫВОД: Сексуально-Репродуктивный Капитализм против Государства Моногамии
Коллеги, мы вышли на финишную прямую 20-мерного ОДУ-моделирования вековой сукцессии (ветка. . .
|
Текстовый слайдер с нумерацией страниц и кроссбраузерность.
russiannick 18.07.2026
Один мой друг написал текстовый слайдер с нумерацией страниц. Сегодня я расскажу как он умудрился подружить его с кроссбраузерностью.
Очевидно сложно угодить с шириной каждому браузеру. Один крадет. . .
|
Грибы - это мемы, дерево - это человек. Применение микоризной модели к теории меметики Докинза.
anaschu 18.07.2026
Меметический изоморфизм теории «всего»: Грибная сукцессия как модель эволюции идей Докинза
Базовый код системы ОДУ микоризной сукцессии описывает не просто биологию, а универсальную. . .
|
Грибы - это корпорации, деревья - это государства. Механизм массонского захвата власти
anaschu 18.07.2026
Макроэкономический изоморфизм теории «всего»: Грибная сукцессия как модель транснационального капитализма
Базовый код системы ОДУ микоризной сукцессии описывает не просто биологию, а. . .
|