OSDev

для всех
Текущее время: 08 май 2024, 15:43

Часовой пояс: UTC + 3 часа




Форум закрыт Эта тема закрыта, вы не можете редактировать и оставлять сообщения в ней.  [ Сообщений: 93 ]  На страницу Пред.  1, 2, 3, 4, 5, 6, 7, 8 ... 10  След.
Автор Сообщение
 Заголовок сообщения: Re: Память
СообщениеДобавлено: 29 авг 2012, 13:26 

Зарегистрирован: 10 май 2007, 11:33
Сообщения: 1206
Станислав писал(а):
Объясняю для тех кто не в курсе принцип работы устройств с памятью для DMA...
И чЁ ты тогда гнал на DMA?

Цитата:
Я примерно понял, как нужно создавать таблицы для процессов, мы выделяем страницу для каталога страниц и страницу для таблицы страниц, дающую нам 4мб памяти, если нужно будет ещё 4мб выделим страницу для второй таблицы страниц и занесём её в адрес каталога страниц, а системные таблицы страницы у нас будут в каждом каталоге страниц, и по вызове прерывания от любого устройства, в любой таблице страниц у нас забиты данные страниц устройств и его код, так что для этого не нужно будет перезагружать CR3.
Да, ты "примерно понял" основы. А теперь должен понять, что такое рекурсивно отображаемый каталог - эту фишку используют все нормальные оси. Это когда каталог одновременно является и 4-килобайтной таблицей страниц, и конечной страницей, отображенной в ВАП. Что касается отображения ядра во все ВАП, то я об этом тоже писал. Ты даже не только конечные страницы, но и 4-килобайтные таблицы страниц используешь для ядра общие. Более того, если объявишь их глобальными, их входы могут оставаться в TLB даже при перезагрузке cr3. Только учти, что не все страницы пространства ядра должны быть глобальными. Там должен быть участок для хранения локальных данных процесса. Я его примерно так и называю. В винде он вроде бы называется hyper space. Кстати 4-мегабайтная таблица страниц также глобальная лишь от части. Участки таблицы отвечающие за отображение прикладного пространства и локальных данных ядра не должны быть глобальными. Иногда бывает, что аппаратный буфер отображен только в пространство неактивного процесса. Устройство спокойно может работать с этим буфером, т.к. оно работает с памятью на физ. уровне. Иногда управляющие структуры целесообразно отображать в пространство ядра, а буферы, которыми они управляют, - в прикладное пространство. Все это нормально работает. Только ты должен как-то защищать страницы прикладных аппаратных буферов от замещения ядром - можно задействовать бит cache disable или бит shared, если таковой поддерживается ядром.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Память
СообщениеДобавлено: 29 авг 2012, 16:42 
Заблокирован

Зарегистрирован: 28 окт 2011, 12:14
Сообщения: 555
Откуда: Новосибирск
phantom-84 писал(а):
И чЁ ты тогда гнал на DMA?

Где, когда?

Я подумал, что если у нас будет массив свободных страниц, то впринципи нам не нужна полная 4мб таблица, что мы с ней делать будем, для системы выделить страницу для каталога. и страницы для таблицы страниц, количеством = размер системы мб/4мб. При создании адресного пространства для приложений будем копировать системный каталог для того, чтобы у приложения были системные страницы и добавить туда страницы для приложения. Впринципи мне больше ничего и не требуется.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Память
СообщениеДобавлено: 29 авг 2012, 18:19 

Зарегистрирован: 10 май 2007, 11:33
Сообщения: 1206
Станислав писал(а):
Где, когда?
Цитата:
Повспоминал я устройства которые работают с DMA и думаю что пора нам вообще отказаться от такой функции, т.к. для дисков, флешек и сетевух это уже не нужно.


Цитата:
Я подумал, что если у нас будет массив свободных страниц, то впринципи нам не нужна полная 4мб таблица, что мы с ней делать будем, для системы выделить страницу для каталога. и страницы для таблицы страниц, количеством = размер системы мб/4мб. При создании адресного пространства для приложений будем копировать системный каталог для того, чтобы у приложения были системные страницы и добавить туда страницы для приложения. Впринципи мне больше ничего и не требуется.
Подожди. Когда мы говорили о "массиве", речь шла о пуле свободных страниц. А 4-мегабайтная таблица страниц предназначена непосредственно для отображения страниц в ВАП. Это совершенно разные вещи. Если ты не будешь иметь отображенные в ВАП каталог и 4-килобайтные таблицы страниц (не все, только нужные), ты не сможешь управлять пейджингом после его включения. Рекурсивно отображаемый каталог страниц - самый элегантный способ это сделать. Да, 4-мегабайтная таблица страниц - это тоже массив, но он может отображаться фрагментированно. Это похоже на уменьшенную копию ВАП.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Память
СообщениеДобавлено: 29 авг 2012, 18:51 

Зарегистрирован: 10 май 2007, 11:33
Сообщения: 1206
Пример инициализации с таблицей страниц в конце ВАП и тождественным отображением в начале ВАП не более чем 4 мег:

1) получить 1 страницу для каталога и 1 для первой транс-страницы;
2) заполнить первые N входов транс-страницы значениями 0+флаги, 1000h+флаги и т.п., остальные нулями;
3) заполнить каталог: первый вход - адрес транс-страницы плюс флаги, 1022 нулевых входа, последний вход - адрес самого каталога плюс флаги (U/S должен быть равен нулю, чтобы таблица страниц была защищена);
4) все - минимальный набор готов - можно включать пейджинг.

После включения в ВАП по адресу 4 Гб-4 Кб будет отображаться каталог, а по адресу 4 Гб-4 Мб (это начало таблицы страниц) - первая транс-страница. Между транс-страницей и каталогом ничего отображаться не будет.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Память
СообщениеДобавлено: 30 авг 2012, 00:00 

Зарегистрирован: 26 мар 2012, 17:32
Сообщения: 209
> Объясняю для тех кто не в курсе принцип работы устройств с памятью для DMA
Ну и сам показываешь что не в курсе принципов.

Причём тут требования к непрерывности буфера и использование DMA?
Ты вот опрометчиво выдал тезис "DMA не нужен", а я говорю, что этот тезис не верен.

К чему вот были все эти рассуждения про байтопетушение, если суть одна: благодаря DMA устройство само заполняет буферы (и иногда само читает команды из очереди команд, но это не так интересно) и не нужно тратить процессорное время на выковыривание данных через PIO/MMIO? Если не использовать DMA, то ты ж офигеешь как производительность падает.

Хотелось бы ещё в очередной раз сказать на тему русского языка, но не поймут-с давно толкаемой (не только мной) идеи что у человека в голове порядок (в т.ч. и с техническими вопросами) тогда, и только тогда, когда человек умеет свои мысли внятно выражать. Исключения есть, но обычно утверждение работает. Ну да всепротыкающий с языком, ибо есть и другие доказательства того что с матчастью не айс у обсуждаемого персонажа. Да, у меня тоже очень много пробелов в знаниях, а уж сколько глупых заблуждений и просто незнания было ликвидировано за последние полтора года (и ещё предстоит) - вообще стыдно вспоминать. Но я хотя бы доки читать не стесняюсь. И стараюсь термины использовать правильно (есть у меня подозрение что речь шла только про DMA для очереди команд, а не вообще), а то потом взаимонепонимание вообще страшные вещи творить может.

Впрочем, судя по
> И чЁ ты тогда гнал на DMA?
тут и без меня уже разобрались в свежих недопониманиях. Брр.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Память
СообщениеДобавлено: 30 авг 2012, 00:46 

Зарегистрирован: 28 окт 2007, 18:33
Сообщения: 1418
Nable писал(а):
Хотелось бы ещё в очередной раз сказать на тему русского языка, но не поймут-с давно толкаемой (не только мной) идеи что у человека в голове порядок (в т.ч. и с техническими вопросами) тогда, и только тогда, когда человек умеет свои мысли внятно выражать. Исключения есть, но обычно утверждение работает


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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Память
СообщениеДобавлено: 30 авг 2012, 03:37 
Заблокирован

Зарегистрирован: 28 окт 2011, 12:14
Сообщения: 555
Откуда: Новосибирск
Nable писал(а):
Причём тут требования к непрерывности буфера и использование DMA?

Так ты просто так вопрос задал, или по поводу нашей темы, а если бы ты читал нашу тему, то понял бы, что речь шла о том, нужна ли функция получения нескольких страниц расположенных в памяти непрерывно только для DMA(больше она нам незачем), а я и предположил, что для DMA она тоже уже не нужна, т.к. более менее современным устройствам пойдут и страницы для их работы.
По поводу работы устройств я кстати тоже много писал и отказаться от DMA речи быть не может, что за мысли у тебя в голове?

Цитата:
Да, у меня тоже очень много пробелов в знаниях, а уж сколько глупых заблуждений и просто незнания было ликвидировано за последние полтора года (и ещё предстоит) - вообще стыдно вспоминать.

Я собственно полтора года этим и занимаюсь и абсолютно не боюсь ошибаться и ни кому не завидую, и не комплексую, у тебя по моему всё наоборот, но тем не менее я один уже сделал то, что не могла сделать команда разработчиков, например, КолибриОС за много лет, взяв уже работающую ОС, а я с ноля.

Цитата:
К чему вот были все эти рассуждения про байтопетушение, если суть одна: благодаря DMA устройство само заполняет буферы (и иногда само читает команды из очереди команд, но это не так интересно) и не нужно тратить процессорное время на выковыривание данных через PIO/MMIO? Если не использовать DMA, то ты ж офигеешь как производительность падает.

А с пониманием действительно туго, видимо это не приоритет для человека(тем самым лажается поболе моего), я только что писал, что даже если устройство работает в DMA то его непрерывный буфер заставляет выцарапывать побайтово данные, а если у устройства буфер из блоков, то мы просто меняем адреса, т.е. забираем блок с данными а отдаём пустой. В этом случае так же не нужна функция поиска непрерывного участка для буфера устройства.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Память
СообщениеДобавлено: 30 авг 2012, 21:01 

Зарегистрирован: 26 мар 2012, 17:32
Сообщения: 209
> Исключений нет.
Когда писал, вспомнились двое знакомых людей, которые весьма шарят в технической части, но у одного в письменной речи полная каша букв (хотя устно говорит нормально, меня это сильно удивило), а другого нужно постоянно (как только понимаешь его идею и понимаешь что дальше углубляться не нужно) останавливать и возвращать к изначальной теме, а то уходит в рекурсию в объяснениях. Хотя, и с формулированием у него проблемы иногда, но (кмк) это из-за обилия идей и работы (в т.ч. и работ, т.е. разных заказчиков), а ещё недостатка времени.

> запятые далеко не всегда стоят там, где им положено стоять
Да я-то вообще быдло, которое не любит русский язык и очень много забыл и даже не пытаюсь освежить, с этим не спорю. Собственно, я по большей части пытаюсь вылавливать опечатки (ибо раздражают мой недобитый перфекционизм, а ещё просто сбивают при чтении), да ставить знаки чтобы текст не сливался в простыню.

> Именно характер построения фраз отражает порядок или бардак в голове пишущего
И очепятки, очепятки (когда их больше опр. порога) ! Бгг. Да, не спорю с этим.
Занятно, последние сообщения у него намного лучше читаются. Неужто просто забивал как на ненужное.

> а если бы ты читал нашу тему, то понял бы, что речь шла о том, нужна ли функция получения нескольких страниц расположенных в памяти непрерывно
Пардон, этот момент пропустил, что привело к печальному недопониманию.
Моё имхо в этом вопросе: а) без функции можно обойтись (в крайнем случае, можно потом впилить) б) нужно использовать всякие приёмы (и алгоритмы) чтобы избегать фрагментации виртуальной памяти, ибо 1) большие страницы, без них жить грустно и глупо 2) многие вещи так упрощаются (в т.ч. в плане временнОй сложности), в т.ч. и выделение/освобождение памяти
Ладно, можете игнорировать в этой теме, не лезу дальше без надобности.

P.S> кого-нибудь раздражает цитирование по `>' вместо `[quote]' ? А то меня совесть (точнее, сомнения) гложет, но удобство + привычки сильнее пока.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Память
СообщениеДобавлено: 30 авг 2012, 23:37 

Зарегистрирован: 28 окт 2007, 18:33
Сообщения: 1418
Nable писал(а):
P.S> кого-нибудь раздражает цитирование по `>' вместо `
Цитата:
' ? А то меня совесть (точнее, сомнения) гложет, но удобство + привычки сильнее пока.


С цитированием через теги легче понимать...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Память
СообщениеДобавлено: 31 авг 2012, 05:21 
Заблокирован

Зарегистрирован: 28 окт 2011, 12:14
Сообщения: 555
Откуда: Новосибирск
Цитата:
большие страницы, без них жить грустно и глупо
Я читал, что 4мб страницы работают быстрее, но путать 4мб с 4кб неудобно как то.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Форум закрыт Эта тема закрыта, вы не можете редактировать и оставлять сообщения в ней.  [ Сообщений: 93 ]  На страницу Пред.  1, 2, 3, 4, 5, 6, 7, 8 ... 10  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 6


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB