Редактирование: FreeBSD, 04 лекция (от 23 октября)
Материал из eSyr's wiki.
Внимание: Вы не представились системе. Ваш IP-адрес будет записан в историю изменений этой страницы.
Правка может быть отменена. Пожалуйста, просмотрите сравнение версий, чтобы убедиться, что это именно те изменения, которые вас интересуют, и нажмите «Записать страницу», чтобы изменения вступили в силу.
Текущая версия | Ваш текст | ||
Строка 96: | Строка 96: | ||
Делаются локальные оптимизации. | Делаются локальные оптимизации. | ||
- | Сам по себе маллок, который в файле | + | Сам по себе маллок, который в файле ker_malloc.c, он очень простой и очень тонкий, всю работу за него выполняет другой слой. См блоксхему. |
Сначала смотрим, защищена ли память мемгардами, если используем, то уходим в cпециальный модуль. Аналогично в конце можем уйти в редзон. | Сначала смотрим, защищена ли память мемгардами, если используем, то уходим в cпециальный модуль. Аналогично в конце можем уйти в редзон. | ||
Строка 121: | Строка 121: | ||
вероятностью уже в процессорном кэше. | вероятностью уже в процессорном кэше. | ||
- | + | Кег представляет собой очень простуй структуру -- два ведра -- пустое и полное. Как только одно из них заполняется или доходит до нуля, мы их меняем местами. | |
Ведро из себя представляет: сколько максимум записей, сколько текущее количество, и вектор из указателей в глубину слаба, и обеспечивают быструю аллокацию. | Ведро из себя представляет: сколько максимум записей, сколько текущее количество, и вектор из указателей в глубину слаба, и обеспечивают быструю аллокацию. | ||
Строка 130: | Строка 130: | ||
следующий цвет после того цвета, которые он брал последним, а если такого нет, то случайный. Если пропустили один цвет, то тоже какая-то оптимизация может получиться. (Обсуждение про то, что в современных процессорах это неактуально. См. ссылку на книжку в конце.) | следующий цвет после того цвета, которые он брал последним, а если такого нет, то случайный. Если пропустили один цвет, то тоже какая-то оптимизация может получиться. (Обсуждение про то, что в современных процессорах это неактуально. См. ссылку на книжку в конце.) | ||
- | Есть еще аллокатор из NetBSD | + | Есть еще аллокатор из NetBSD vmcm(9) |
Универсальный аллокатор. Ему дается ресурс, он с ним может работать. В ядре FreeBSD он используется для vm map самого ядра. Потому что у ядра линейный список entry уже неудобен. | Универсальный аллокатор. Ему дается ресурс, он с ним может работать. В ядре FreeBSD он используется для vm map самого ядра. Потому что у ядра линейный список entry уже неудобен. | ||
Строка 136: | Строка 136: | ||
Процессы делают mmap доволно редко. Поэтому линейный список из vmmap entry вполне удовлетворителен. | Процессы делают mmap доволно редко. Поэтому линейный список из vmmap entry вполне удовлетворителен. | ||
- | Curt | + | Curt Schimel systems for modern architectures |
{{FreeBSD}} | {{FreeBSD}} | ||
{{Lecture-stub}} | {{Lecture-stub}} |