diff options
Diffstat (limited to 'ru_RU.KOI8-R/htdocs/smp/index.sgml')
-rw-r--r-- | ru_RU.KOI8-R/htdocs/smp/index.sgml | 2516 |
1 files changed, 0 insertions, 2516 deletions
diff --git a/ru_RU.KOI8-R/htdocs/smp/index.sgml b/ru_RU.KOI8-R/htdocs/smp/index.sgml deleted file mode 100644 index 5d0c63c71d..0000000000 --- a/ru_RU.KOI8-R/htdocs/smp/index.sgml +++ /dev/null @@ -1,2516 +0,0 @@ -<?xml version="1.0" encoding="koi8-r"?> -<!DOCTYPE html PUBLIC "-//FreeBSD//DTD XHTML 1.0 Transitional-Based Extension//EN" -"http://www.FreeBSD.org/XML/doc/share/sgml/xhtml10-freebsd.dtd" [ -<!ENTITY title "Проект FreeBSD SMP"> -<!ENTITY email 'freebsd-smp'> - -<!-- Status levels --> -<!ENTITY status.done "<font xmlns='http://www.w3.org/1999/xhtml' color='green'>Выполнено</font>"> -<!ENTITY status.wip "<font xmlns='http://www.w3.org/1999/xhtml' color='blue'>Выполняется</font>"> -<!ENTITY status.stalled "<font xmlns='http://www.w3.org/1999/xhtml' color='purple'>Заброшено</font>"> -<!ENTITY status.new "<font xmlns='http://www.w3.org/1999/xhtml' color='red'>Не начиналось</font>"> -<!ENTITY status.resolved "<font xmlns='http://www.w3.org/1999/xhtml' color='green'>Решено</font>"> -<!ENTITY status.unresolved "<font xmlns='http://www.w3.org/1999/xhtml' color='red'>Не решено</font>"> -]> - -<!-- - The FreeBSD Russian Documentation Project - - $FreeBSDru: frdp/www/ru/smp/index.sgml,v 1.14 2006/01/17 07:27:20 gad Exp $ - - Original revision: 1.141 ---> - -<html xmlns="http://www.w3.org/1999/xhtml"> - <head> - <title>&title;</title> - - <cvs:keyword xmlns:cvs="http://www.FreeBSD.org/XML/CVS">$FreeBSD$</cvs:keyword> - </head> - - <body class="navinclude.developers"> - - <h2>Содержание</h2> - - <ul> - <li><a href="#goal">Цель проекта</a></li> - <li><a href="#plan">План работ Проекта</a></li> - <li><a href="#resources">Информационные ресурсы и ссылки</a></li> - <li><a href="#subsystems">Подсистемы и их разработчики</a></li> - <li><a href="#status">Задачи</a></li> - <li><a href="#issues">Известные проблемы</a></li> - <li><a href="#news">Новости</a></li> - </ul> - - <a name="goal"></a> - <h2>Цель проекта</h2> - - <p>Проект FreeBSD Symmetric MultiProcessing (SMP), часто именуемый как SMPng - (SMP следующего поколения), направлен на реализацию поддержки SMP до уровня - мелких структур в ядре FreeBSD. Впервые эта поддержка появилась в январе - 2003 года в 5.0-RELEASE. По историческим причинам развития FreeBSD, это - было похоже на попытку протиснуть квадратный ящик через круглую дыру, и - поэтому промежуточные результаты не были столь хороши по многим параметрам. - Мы целенаправленно не пытаемся ни переписать ядро с нуля, ни изменить все - архитектурные особенности, имеющиеся в ядре. Этот проект направлен на - практическую реализацию, а не теоретические исследования.</p> - - <a name="plan"></a> - <h2>План работы проекта</h2> - - <p>На этой Web-странице содержится информация, относящаяся к попыткам - улучшить поддержку SMP во FreeBSD. В целом проект использует всё возможное - из разрабатываемого ядра BSD/OS 5.0, и повторно реализует то, что нельзя - использовать напрямую, из-за различий в основном коде.</p> - - <p>Как и для любого некоммерческого проекта, разработка детального плана - работ невозможна. Мы ожидаем получить значительного улучшения - производительности и стабильности, проблемы с которыми должны быть решены - в течение первых нескольких месяцев работы над проектом, хотя все - возможные усилия будут прилагаться и к сохранению работоспособности - -current.</p> - - <p>Перечень задач ниже не претендует на полноту, но представляет набор - имеющих отношение к делу и/или важных компонентов общей работы. Поле - "Ответственный" указывает на разработчика, который изъявил желание отвечать - за завершение определённой задачи; это не исключает участия других, но - предполагает соответствующую координацию работ с ответственным лицом, чтобы - исключить дублирование работ и максимально их ускорить. При начале работ - в незанятой или новой области значительного объёма стоит отправить письмо - по электронной почте в адрес списка рассылки FreeBSD по SMP, для - определения того, сделано ли какое-то движение.</p> - - <p>Смысл поля даты варьируется в зависимости от состояния работы. Для - выполненных задач оно обозначает дату завершения или сообщения о - завершении. Для выполняемых задач оно обозначает дату последнего - обновления. Для заброшенных задач оно обозначает дату объявления об - этом. Для новых задач оно обозначает дату добавления задачи к списку.</p> - - <p>Процесс приведения к механизму блокировки отдельных драйверов устройств - отслеживается на <a href="http://www.FreeBSD.org/projects/busdma"> - Web-странице преобразования драйверов busdma и SMPng</a>.</p> - - <p>Информация о блокировке стека сетевых протоколов размещена на <a - href="http://www.watson.org/~robert/freebsd/netperf/">Web-странице - netperf</a> Роберта Уотсона и <a href="../projects/netperf/">Web-странице - Netperf</a> Web-сайта FreeBSD.org.</p> - - <p>Задачи отсортированы сначала по состоянию, затем по дате.</p> - - <a name="resources"></a> - <h2>Ресурсы и ссылки</h2> - - <ul> - <li><p>Основное обсуждение SMP проходит в списке рассылки <a - href="mailto:freebsd-smp@FreeBSD.org">freebsd-smp</a>. Вы можете узнать - больше о списках рассылки в <a - href="&enbase;/doc/ru_RU.KOI8-R/books/handbook/eresources.html#ERESOURCES-MAIL"> - главе об электронных ресурсах</a> <a - href="&enbase;/doc/ru_RU.KOI8-R/books/handbook/index.html">Руководства - FreeBSD</a>.</p></li> - - <li><p>Стив Пассе (Steve Passe) поддерживает <a - href="http://people.FreeBSD.org/~fsmp/SMP/SMP.html">страницу проекта - SMP</a>, на которой содержится дополнительная информация и более глубоко - отражает историю вопроса, чем эта Web-страница.</p></li> - - <li><p>&a.rwatson; поддерживает страницу <a - href="../projects/netperf/">проекта Netperf</a>, в рамках которого - ведутся работы, связанные с производительностью сети в SMP. Кроме - того, у него есть <a - href="http://www.watson.org/~robert/freebsd/netperf/">персональная - Web-страница с протоколом изменений и другой информацией</a>.</p></li> - - <li> - <p>Страницы справочной системы, описывающие примитивы для работы с - синхронизацией на уровне ядра и тредами можно найти здесь:</p> - - <ul> - <li><a - href="http://www.freebsd.org/cgi/man.cgi?query=mutex&apropos=0&sektion=9&manpath=FreeBSD+6.0-current"> - Мьютексы ядра (mutex(9))</a></li> - - <li><a - href="http://www.freebsd.org/cgi/man.cgi?query=mtx_pool&apropos=0&sektion=9&manpath=FreeBSD+6.0-current"> - Пулы мьютексов ядра (mtx_pool(9))</a></li> - - <li><a - href="http://www.freebsd.org/cgi/man.cgi?query=critical&apropos=0&sektion=9&manpath=FreeBSD+6.0-current"> - Критические области ядра (critical(9))</a></li> - - <li><a - href="http://www.freebsd.org/cgi/man.cgi?query=sx&apropos=0&sektion=9&manpath=FreeBSD+6.0-current"> - Совместно используемые и эксклюзивные блокировки ядра - (sx(9))</a></li> - - <li><a - href="http://www.freebsd.org/cgi/man.cgi?query=condvar&apropos=0&sektion=9&manpath=FreeBSD+6.0-current"> - Условные переменные ядра (condvar(9))</a></li> - - <li><a - href="http://www.freebsd.org/cgi/man.cgi?query=sema&apropos=0&sektion=9&manpath=FreeBSD+6.0-current"> - Семафоры ядра (sema(9))</a></li> - - <li><a - href="http://www.freebsd.org/cgi/man.cgi?query=sleep&apropos=0&sektion=9&manpath=FreeBSD+6.0-current"> - Интерфейс sleep/wakeup ядра (sleep(9))</a></li> - - <li><a - href="http://www.freebsd.org/cgi/man.cgi?query=kthread&apropos=0&sektion=9&manpath=FreeBSD+6.0-current"> - Треды ядра (kthread(9))</a></li> - - <li><a - href="http://www.freebsd.org/cgi/man.cgi?query=ithread&apropos=0&sektion=9&manpath=FreeBSD+6.0-current"> - Треды прерываний (ithread(9))</a></li> - - <li><a - href="http://www.freebsd.org/cgi/man.cgi?query=swi&apropos=0&sektion=9&manpath=FreeBSD+6.0-current"> - Треды программных прерываний (swi(9))</a></li> - </ul> - - <p>Кроме того, интерес может представлять старая <a - href="http://www.freebsd.org/cgi/man.cgi?query=spl&apropos=0&sektion=9&manpath=FreeBSD+6.0-current"> - справочная страница по SPL</a>, описывающая ранее используемую - модель синхронизации SMP.</p> - </li> - - <li><p>Страница <a - href="http://storm.uk.FreeBSD.org/~hiten/smp_synch_rules.html"> - правил ядра для синхронизации SMP</a> Хитена Панди.</p></li> - - <li><p>&a.dillon; поддерживает <a - href="http://apollo.backplane.com/FreeBSDSmp/">Web-страницу</a>, на - которой он документирует свою работу над проектом SMP.</p></li> - - <li><p><a - href="http://www.usenix.org/events/bsdcon02/full_papers/baldwin/baldwin_html/index.html"> - Работа к USENIX "Locking in the Multithreaded FreeBSD Kernel", которую - написал &a.jhb;</a>.</p></li> - - <li><p><a - href="http://www.usenix.org/publications/library/proceedings/bsdcon03/tech/hsu.html"> - Работа к BSDCon'03 "Reasoning about SMP in FreeBSD", которую - написал &a.hsu;</a>.</p></li> - - <li><p><a - href="http://www.usenix.org/publications/library/proceedings/bsdcon03/tech/roberson.html"> - Работа к BSDCon'03 "ULE: A Modern Scheduler for FreeBSD", которую - написал &a.jeff;</a>.</p></li> - </ul> - - <a name="subsystems"></a> - <h2>Подсистемы и их разработчики</h2> - - <p>Это неполный перечень высокоуровневых подсистем ядра и тех, кто активно - работает над архитектурой SMP и её стабильностью.</p> - - <table class="tblbasic"> - <tr class="heading"> - <th>Подсистема</th> - <th>Состояние</th> - <th>Последнее обновление</th> - <th>Разработчики</th> - </tr> - - <tr> - <td>Newbus</td> - <td>&status.wip;</td> - <td>5 октября 2003</td> - <td>&a.imp;</td> - </tr> - - <tr> - <td>VM</td> - <td>&status.wip;</td> - <td>4 октября 2003</td> - <td>&a.alc;</td> - </tr> - - <tr> - <td>Кэш-буфер</td> - <td>&status.wip;</td> - <td>4 октября 2003</td> - <td>&a.jeff;, &a.phk;</td> - </tr> - - <tr> - <td>VFS</td> - <td>&status.wip;</td> - <td>4 октября 2003</td> - <td>&a.jeff;</td> - </tr> - - <tr> - <td>Процессы и операции с потоками</td> - <td>&status.wip;</td> - <td>5 мая 2003</td> - <td>&a.jhb;</td> - </tr> - - <tr> - <td>Планировщик</td> - <td>&status.wip;</td> - <td>23 апреля 2004</td> - <td>&a.jhb;, &a.jeff;</td> - </tr> - - <tr> - <td>GEOM</td> - <td>&status.done;</td> - <td>5 февраля 2003</td> - <td>&a.phk;</td> - </tr> - - <tr> - <td>Файловые дескрипторы</td> - <td>&status.done;</td> - <td>5 февраля 2003</td> - <td>&a.alfred;, &a.tanimura; &a.rwatson;</td> - </tr> - - <tr> - <td>Подсистема TTY</td> - <td>&status.wip;</td> - <td>24 июля 2004</td> - <td>&a.phk;</td> - </tr> - - <tr> - <td>Конвейерные IPC</td> - <td>&status.done;</td> - <td>4 октября 2003</td> - <td>&a.alfred;</td> - </tr> - - <tr> - <td>Структуры сокетов и системные вызовы</td> - <td>&status.done;</td> - <td>25 ноября 2004</td> - <td>&a.sam;, &a.rwatson;</td> - </tr> - - <tr> - <td>KQueue</td> - <td>&status.done;</td> - <td>24 ноября 2004</td> - <td>&a.jmg;, &a.green;</td> - </tr> - - <tr> - <td>IPv4, IPv6</td> - <td>&status.wip;</td> - <td>23 апреля 2004</td> - <td>&a.jennifer;, &a.hsu;, &a.sam;, &a.rwatson;, &a.gnn;</td> - </tr> - - <tr> - <td>IPX/SPX</td> - <td>&status.wip;</td> - <td>23 апреля 2004</td> - <td>&a.rik;, &a.rwatson;</td> - </tr> - - <tr> - <td>netatalk</td> - <td>&status.wip;</td> - <td>24 ноября 2004</td> - <td>&a.rwatson;</td> - </tr> - - <tr> - <td>Инфраструктура сетевого стека</td> - <td>&status.wip;</td> - <td>4 октября 2003</td> - <td>&a.hsu;, &a.sam;, &a.rwatson;, &a.mlaier;, &a.luigi;, Maurycy - Pawlowski-Wieronski <maurycy@fouk.org>, &a.brooks;, &a.rik;</td> - </tr> - - <tr> - <td>Клиент NFS</td> - <td>&status.new;</td> - <td>23 апреля 2004</td> - <td> </td> - </tr> - - <tr> - <td>Сервер NFS</td> - <td>&status.wip;</td> - <td>24 ноября 2004</td> - <td>&a.rwatson;</td> - </tr> - </table> - - <a name="status"></a> - <h2>Работы</h2> - - <p>Далее следует неполный перечень работ общего характера.</p> - - <table class="tblbasic"> - <tr class="heading"> - <th>Задача</th> - <th>Ответственный</th> - <th>Последнее обновление</th> - <th>Состояние</th> - </tr> - - <tr> - <td>Преобразовать giant-блокировки от типа spinning к blocking, - добавить блокировку планировщика и простаивающие процессы для каждого - процессора.</td> - <td>&a.dillon;</td> - <td>25 июня 2000</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Перенос примитивов блокировки из BSD/OS (i386).</td> - <td>&a.jake;</td> - <td>3 июля 2000</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Реализовать тяжёлые потоки выполнения для прерываний (i386).</td> - <td>&a.grog;</td> - <td>3 августа 2000</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Переписать низкоуровневый код прерываний (i386 UP).</td> - <td>&a.grog;</td> - <td>3 августа 2000</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Добиться достаточной стабильности (построение полной системы на - самом хосте) (i386 UP).</td> - <td>разработчики -smp</td> - <td>12 августа 2000</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Перенос примитивов блокировки из BSD/OS (alpha).</td> - <td>&a.dfr;</td> - <td>24 августа 2000</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Заменить заглушками (отключить) вызовы spl().</td> - <td>&a.grog;</td> - <td>30 августа 2000</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Перенос кода ktr из BSD/OS.</td> - <td>&a.grog;, &a.jhb;</td> - <td>30 августа 2000</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Переписать низкоуровневый код обработки прерываний (i386 SMP).</td> - <td>&a.jhb;</td> - <td>1 сентября 2000</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Добиться достаточной стабильности (построение полной системы на - самом хосте) (i386 SMP).</td> - <td>-smp developers</td> - <td>6 сентября 2000</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Добиться достаточной стабильности (построение полной системы на - самом хосте) (alpha).</td> - <td>-smp developers</td> - <td>6 сентября 2000</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Сделать malloc и сопутствующие функции работающими с потоками - выполнения.</td> - <td>&a.jasone;</td> - <td>10 сентября 2000</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Реализовать обработчик msleep(), сделать tsleep() обработчиком - msleep().</td> - <td>&a.jake;</td> - <td>11 сентября 2000</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Сделать драйвер fxp работающим с потоками выполнения.</td> - <td>&a.cp;</td> - <td>17 сентября 2000</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Сделать mbuf работающими с потоками выполнения.</td> - <td>&a.bmilekic;</td> - <td>29 сентября 2000</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Переработать менеджер блокировок.</td> - <td>&a.jasone;</td> - <td>3 октября 2000</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Реализовать тяжёлые потоки прерываний (alpha).</td> - <td>&a.jhb;, &a.dfr;</td> - <td>5 октября 2000</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Переписать низкоуровневый код обработки прерываний (alpha).</td> - <td>&a.dfr;, &a.jhb;</td> - <td>5 октября 2000</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Сбор статистику по процессу.</td> - <td>&a.tegge;, &a.jhb;</td> - <td>5 октября 2000</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Сделать драйверы ethernet работающими с потоками.</td> - <td>&a.wpaul;</td> - <td>15 октября 2000</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Сделать заголовочные файлы для семафоров в основном - машинно-независимыми.</td> - <td>&a.jhb;</td> - <td>20 октября 2000</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Переименовать SMP_DEBUG в MUTEX_DEBUG.</td> - <td>&a.jhb;</td> - <td>20 октября 2000</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Выделить каждому программному прерыванию собственный поток - выполнения.</td> - <td>&a.cp;</td> - <td>25 октября 2000</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Сделать sf_bufs (sendfile(2)) работающим с потоками.</td> - <td>&a.bmilekic;</td> - <td>5 ноября 2000</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Заставить фиксирующий код работать корректно.</td> - <td>&a.jhb;</td> - <td>18 ноября 2000</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Отделить специфичный для ktr код от db_interface.c.</td> - <td>&a.jhb;</td> - <td>15 декабря 2000</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Преобразовать драйвер sio к использованию spin-семафора.</td> - <td>&a.jhb;</td> - <td>18 декабря 2000</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Реализовать условные переменные.</td> - <td>&a.jake;, &a.jasone;</td> - <td>15 января 2001</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Добавить флаг к mtx_init() (MTX_RECURSE), который отмечает, можно - ли использовать семафор рекурсивно.</td> - <td>&a.bmilekic;</td> - <td>19 января 2001</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Сделать зонный распределитель работающим с потоками.</td> - <td>&a.des;</td> - <td>21 января 2001</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Преобразовать простые блокировки к семафорам.</td> - <td>&a.jasone;</td> - <td>24 января 2001</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Сделать ядро вытесняющим в отношении прерываний.</td> - <td>&a.jake;</td> - <td>31 января 2001</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Вычистка API для семафоров.</td> - <td>&a.bmilekic;</td> - <td>8 февраля 2001</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Удалить COM_LOCK.</td> - <td>&a.markm;</td> - <td>11 февраля 2001</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Объединить различные классы планирования в одну очередь выполнения. - Модифицировать планировщик для поддержки вытесняющего ядра.</td> - <td>&a.jake;</td> - <td>11 февраля 2001</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Заставить распространение приоритетов работать корректно.</td> - <td>&a.jake;</td> - <td>11 февраля 2001</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Сделать код треда обработки прерываний машинно-независимым и - совместно используемым между программными и аппаратными - прерываниями.</td> - <td>&a.jhb;</td> - <td>18 февраля 2001</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Добавить защиту к структуре jail и функциональности, связанной с - jail.</td> - <td>&a.rwatson;</td> - <td>20 февраля 2001</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Реализация блокировок sx (совместные/эксклюзивные).</td> - <td>&a.jasone;</td> - <td>5 марта 2001</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Обобществление/улучшение фиксации для обработки более сложных - примитивов блокировки (mtx, sx).</td> - <td>&a.jhb;</td> - <td>28 марта 2001</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Преобразование блокировок allproc и proctree от блокировок lockmgr - к блокировкам sx.</td> - <td>&a.jhb;</td> - <td>28 марта 2001</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>В системе mbuf использовать условные переменные вместо - msleep()/wakeup().</td> - <td>&a.bmilekic;</td> - <td>2 апреля 2001</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Удалить включаемые файлы <sys/mutex.h> из других включаемых - файлов ядра, таких, как <vm/vm_zone.h>, - <sys/resourcevar.h>, <sys/ucred.h> и - <sys/mbuf.h>.</td> - <td>&a.markm;</td> - <td>15 мая 2001</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Зачистка различных файлов mp_machdep.c, унификация различных API - для SMP, например, доставка IPI и так далее.</td> - <td>&a.jhb;</td> - <td>15 мая 2001</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Сделать большинство функций forward_* и forwarded_* машинно - независимыми.</td> - <td>&a.jhb;</td> - <td>15 мая 2001</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Закончить машинно-зависимую часть поддержки SMP на платформе - Alpha.</td> - <td>&a.gallatin;, &a.dfr;, &a.jhb;</td> - <td>15 мая 2001</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Преобразовать select() к использованию условных переменных.</td> - <td>&a.tanimura;</td> - <td>15 мая 2001</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Добавить блокировку "giant" вокруг подсистемы VM.</td> - <td>&a.alfred;</td> - <td>13 июня 2001</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Создать изменённый slab-распределитель для подсистемы mbuf.</td> - <td>&a.bmilekic;</td> - <td>21 июня 2001</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Добавить функцию witness_assert() для обработки добавлений - блокировок.</td> - <td>&a.jhb;</td> - <td>27 июня 2001</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Расширить блокировки sx для поддержки операций по попытке - блокирования.</td> - <td>&a.jhb;</td> - <td>27 июня 2001</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Задокументировать KTR.</td> - <td>&a.jhb;</td> - <td>28 июня 2001</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Сделать fork_return, fork_exit, ast и userret - машинно-независимыми.</td> - <td>&a.jhb;</td> - <td>29 июня 2001</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Сделать свойство savecrit из sched_lock процесса сохраняемым и - восстанавливаемым в mi_switch и инициализируемым в fork_exit.</td> - <td>&a.jhb;</td> - <td>30 июня 2001</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Создать цикл ast().</td> - <td>&a.jhb;</td> - <td>10 августа 2001</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Добавить операции upgrade/downgrade блокировки sx.</td> - <td>Alexander Kabaev, &a.jasone;</td> - <td>13 августа 2001</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Реализовать семафоры.</td> - <td>&a.jasone;</td> - <td>14 августа 2001</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Добавить поддержку upgrade/downgrade в witness.</td> - <td>&a.jhb;</td> - <td>23 августа 2001</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Сделать основной объём cpu_wait() и cpu_exit() - машинно-независимым.</td> - <td>&a.peter;</td> - <td>9 сентября 2001</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Разделить NFS на клиентскую и серверную части.</td> - <td>&a.peter;</td> - <td>18 октября 2001</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Отделить taskqueues.</td> - <td>&a.arr;, &a.jhb;</td> - <td>25 октября 2001</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Добавить ссылку на ucred в каждый тред.</td> - <td>&a.jhb;</td> - <td>25 октября 2001</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Сделать большинство связанного с процессорами - машинно-независимым.</td> - <td>&a.jhb;</td> - <td>11 декабря 2001</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Сделать в критическом разделе сохраняемым состояние для каждого - треда, вместо для каждой блокировки, чтобы межблокировочный цикл - блокировки работал корректно.</td> - <td>&a.jhb;</td> - <td>17 декабря 2001</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Заменить специфичный для APIC imen_mtx на машинно-независимый - icu_lock для защиты контроллеров прерываний и связанных данных в - ядре для i386 и alpha.</td> - <td>&a.jhb;</td> - <td>20 декабря 2001</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Использовать в критическом разделе для каждого треда вложенный - уровень в мьютексе и код треда прерывания для автоматического - определения, когда не нужно вытеснять задачу. Это делает флаги - MTX_NOSWITCH, SWI_SWITCH и SWI_NOSWITCH ненужными, так как ядро - сможет само определить своё правильное поведение.</td> - <td>&a.jhb;</td> - <td>5 января 2002</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Отделить структуры filedesc и file.</td> - <td>&a.tanimura;, &a.alfred;</td> - <td>12 января 2002</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Блокировка структур pgrp, session и sigio.</td> - <td>&a.tanimura;</td> - <td>23 февраля 2002</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Блокировка реализации конвейера, но не sigio/fown и взаимодействия - с VM</td> - <td>&a.alfred;</td> - <td>27 февраля 2002</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Перейти к явному подсчёту ссылок на программные vnode.</td> - <td>&a.phk;</td> - <td>8 марта 2002</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Инициализация пула мьютексов заранее, чтобы блокировки sx можно - было использовать для VM.</td> - <td>&a.green;</td> - <td>14 марта 2002</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Поместить глобальную блокировку (sellock) вокруг структур selinfo, - чтобы исправить различные обратные последовательности блокировок, и - сделать select() работающим с MP.</td> - <td>&a.alfred;, &a.davidc;</td> - <td>14 марта 2002</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Избавиться от Giant в системных вызовах read, write, pread, pwrite, - выделяя Giant на уровне файловых операций на каждую подсистему для - сокетов, VFS и так далее.</td> - <td>&a.alfred;</td> - <td>15 марта 2002</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Отделить структуры модулей ядра.</td> - <td>&a.arr;</td> - <td>18 марта 2002</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Отделить глобальные данные компоновщика ядра.</td> - <td>&a.arr;</td> - <td>18 марта 2002</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Переписать распределитель памяти ядра, чтобы он стал - slab-распределителем, использующим кэши каждого процессора.</td> - <td>&a.jeff;</td> - <td>21 марта 2002</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Заменить неправильное использование машинно-зависимый критический - раздел API на отключение прерываний при помощи специального API по - их выключению.</td> - <td>&a.imp;, &a.dfr;, &a.benno;, &a.jhb;</td> - <td>21 марта 2002</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Отделить доступ к совместно используемой структуре "параметров - процесса" через соответствующую защиту этой структуры и ссылок на - неё.</td> - <td>&a.mini;</td> - <td>31 марта 2002</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Перейти от блокировок flags/tsleep на блокировки sx для защиты - дерева sysctl от обновлений во время выполнения sysctl-операций.</td> - <td>&a.mini;</td> - <td>1 апреля 2002</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Создать/перенести пользовательский инструмент для управления - дампами по KTR-событиям.</td> - <td>&a.jake;</td> - <td>1 апреля 2002</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Создать макросы MTX_SYSINIT и SX_SYSINIT, которые разрешены для - инициализации блокировок, независящих от подсистемы.</td> - <td>&a.arr;</td> - <td>2 апреля 2002</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Отделить глобальную переменную уровня безопасности.</td> - <td>&a.arr;</td> - <td>2 апреля 2002</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Сделать grow_stack() машинно-независимой. Возможно, даже макросом - или встраиваемой функцией.</td> - <td>&a.alc;</td> - <td>6 апреля 2002</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Блокировка использования p_fd, что в противном случае приводит к - разрушению p_fd и аварийному завершению при большой нагрузке. Начать - с глобальной и перейти к блокировке на уровне процесса.</td> - <td>&a.alfred;, &a.tanimura;</td> - <td>8 апреля 2002</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Блокировка структуры pargs.</td> - <td>&a.mini;</td> - <td>9 апреля 2002</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Сделать {o,}sigreturn() MPSAFE.</td> - <td>&a.alc;</td> - <td>11 апреля 2002</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Переписать распределитель памяти ядра, чтобы Giant не требовался - для операций malloc() или free().</td> - <td>&a.jeff;</td> - <td>2 мая 2002</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Заменить комплексную схему блокировки shared/exclusive в VM-системе - на полностью эксклюзивную схему lockmgr, упрощая блокировку и - удаление потенциальные случаи livelock/deadlock.</td> - <td>&a.green;, &a.alc;</td> - <td>3 мая 2002</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Отказаться от Giant в системных вызовах readv/writev в стиле - read/write/pread/pwrite, как только malloc больше не потребуется - Giant при обработке структур iovec для uio.</td> - <td>&a.alc;</td> - <td>9 мая 2002</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Отказаться от Giant в mprotect(), minherit() и madvise(), чтобы - он больше не выделялся и не освобождался напрямую.</td> - <td>&a.alc;</td> - <td>18 мая 2002</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Обновить API для suser() и p_can*() API, чтобы принимать треды - вместо процессов.</td> - <td>&a.jhb;</td> - <td>18 мая 2002</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Широкий переход к td_ucred от p_ucred, как только появятся все - зависимости от KSE.</td> - <td>&a.jhb;</td> - <td>18 мая 2002</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Добавить проверку witness_sleep() к uma_zalloc() для отслеживания - кода, вызывающего malloc() или uma_zalloc() при удержании - неоткладываемых блокировок.</td> - <td>&a.jhb;</td> - <td>20 мая 2002</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Оптимизировать поддержку UP, заменив циклы блокировки на одну, - выполняющую только вход в критичный раздел и выходы.</td> - <td>&a.jhb;</td> - <td>21 мая 2002</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Заставить спящие мьютексы повернуться, если текущий держатель - блокировки выполняется на другом процессоре.</td> - <td>&a.jhb;</td> - <td>21 мая 2002</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Добавить поддержку для pause-инструкции IA32 для передвижения - циклов в блокировках.</td> - <td>&a.jhb;</td> - <td>21 мая 2002</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Сделать KTRACE пишущим в трассировочные файлы асинхронно.</td> - <td>&a.jhb;</td> - <td>7 июня 2002</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Избавиться от Giant в modnext(2), modfnext(2), modstat(2) и - modfind(2).</td> - <td>&a.arr;</td> - <td>25 июня 2002</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Исправить синхронизацию очистки TLB и invlpg() на x86 SMP.</td> - <td>&a.peter;</td> - <td>12 июля 2002</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Сделать cpu_coredump машинно-независимым.</td> - <td>&a.peter;</td> - <td>7 сентября 2002</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Добавить блокировку подсистемы в коду сбора статистики.</td> - <td>&a.arr;</td> - <td>11 сентября 2002</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Исправить SIGXPU и другие вещи типа #if 0 в mi_switch().</td> - <td>&a.jhb;</td> - <td>30 сентября 2002</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Отделение реализации MAC из TrustedBSD.</td> - <td>&a.rwatson;</td> - <td>11 ноября 2002</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Блокировка обработчиков событий.</td> - <td>&a.msmith;, &a.mini;, &a.jhb;</td> - <td>11 марта 2003</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Исправить PHOLD(), чтобы она блокировалась для гарантированного - PS_INMEM.</td> - <td>&a.jhb;</td> - <td>22 апреля 2003</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Исправить различные procfs_machdep.c, которые не должны - использовать sched_lock.</td> - <td>&a.jhb;</td> - <td>22 апреля 2003</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Блокировка всех ссылок на полномочия процессов и удалить Giant из - системных вызовов, связанных с полномочиями процессов.</td> - <td>&a.jhb;</td> - <td>1 мая 2003</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Объединить структуры procsig и sigacts, перенести новую структуру - sigacts из U-области о добавить соответствующую блокировку.</td> - <td>&a.jhb;</td> - <td>13 мая 2003</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Удалить Giant из системных вызовов kill() и killpg().</td> - <td>&a.jhb;</td> - <td>13 мая 2003</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Улучшить реализацию пула мьютексов, разрешив создание и - использование нескольких динамически распределяемых пулов с - настраиваемыми размерами пулов и параметрами мьютексов.</td> - <td>&a.truckman;</td> - <td>16 июля 2003</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Создать инструмент профилирования мьютексов для ядра, чтобы - замерять использование и поведение мьютексов ядра.</td> - <td>&a.eivind;, &a.des;</td> - <td>31 марта 2002</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Отделить реализацию конвейеров: оптимизации VM.</td> - <td> </td> - <td>4 октября 2003</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Повторно реализовать код прерываний i386 и SMP, чтобы SMP-ядра - работали на UP-машинах и SMP можно было включить в GENERIC.</td> - <td>&a.jhb;</td> - <td>3 ноября 2003</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Реализовать общие подходы для использования при блокировках без - ожиданий.</td> - <td>&a.jhb;</td> - <td>11 ноября 2003</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Разделение witness_lock() на witness_checkorder() и - witness_lock(). witness_checkorder() должна вызываться до получения - блокировки, чтобы увеличить вероятность обнаружения неправильного - порядка следования блокировок и выдачи предупреждения об этом до - возникновения ситуации взаимной блокировки. witness_lock() будет - просто обновлять внутреннее состояние witness, отражающее факт - получения блокировки.</td> - <td>&a.jhb;</td> - <td>24 января 2004</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Блокировка ограничений ресурсов по каждому процессу.</td> - <td>&a.mtm;, &a.jhb;</td> - <td>4 февраля 2004</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Реализовать абстракцию очереди пауз для использования как в - msleep(), так и условных переменных. Эта новая абстракция должна - использовать хэш-таблицу очередей пауз с перемещаемой блокировкой в - каждой цепочке очереди пауз, похожей на проходные цепочные - блокировки, чтобы сделать sched_lock проще.</td> - <td>&a.jhb;</td> - <td>27 февраля 2004</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Удаление Giant из jail(2).</td> - <td>&a.arr;, &a.rwatson;</td> - <td>23 апреля 2004</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Добавить блокировки для подсистем NFSv2, сервера NFSv3, позволяющие - выполнять обращения к вышестоящему уровню и другим элементам, - связанным с сетью, без Giant.</td> - <td>&a.rwatson;</td> - <td>24 июля 2004</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Реализовать ядро полностью с вытесняемой многозадачностью.</td> - <td>&a.jhb;</td> - <td>24 ноября 2004</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Блокировка реализации конвейера: проблемы связаны с sigio/fown</td> - <td>&a.alfred;</td> - <td>24 ноября 2004</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Блокировка кода SysV IPC.</td> - <td>&a.alfred;</td> - <td>24 ноября 2004</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Блокировать инструмент замера конфликтов для замера влияния - различных блокировок, в том числе Giant, и разрешить более - управляемую оптимизацию стратегий производительности и - блокировки.</td> - <td>&a.rwatson;</td> - <td>24 ноября 2004</td> - <td>&status.done;</td> - </tr> - - <!-- WIP --> - - <tr> - <td>Блокировка структуры proc.</td> - <td>&a.jhb;</td> - <td>20 февраля 2001</td> - <td>&status.wip;</td> - </tr> - - <tr> - <td>Отделение подсистемы tty.</td> - <td>Dick Garner, Jeremy Scofield, &a.tmm;, &a.phk;</td> - <td>24 июля 2004</td> - <td>&status.wip;</td> - </tr> - - <tr> - <td>Исправить блокировку часов, которая должна быть одинаковой на всех - платформах.</td> - <td>&a.jhb;</td> - <td>16 ноября 2001</td> - <td>&status.wip;</td> - </tr> - - <tr> - <td>Использовать блокировку процесса и счётчики ссылок на процесс для - защиты интерфейсов отладки (и procfs).</td> - <td>&a.jhb;</td> - <td>27 февраля 2002</td> - <td>&status.wip;</td> - </tr> - - <tr> - <td>Использовать блокировку процессов для защиты sysctl-вызовов - мониторинга процесса, включая те, что используются 'ps' и - сопутствующими инструментами.</td> - <td>&a.jhb;</td> - <td>27 февраля 2002</td> - <td>&status.wip;</td> - </tr> - - <tr> - <td>Отделить инфраструктуру newbus для поддержки точного управления - драйверами.</td> - <td>&a.imp;</td> - <td>28 февраля 2002</td> - <td>&status.wip;</td> - </tr> - - <tr> - <td>Удалить флаг совместимости системного вызова с MP из таблицы - системных вызовов, и добавить исключительные mtx_lock/unlock для - Giant ко всем системным вызовам.</td> - <td>&a.dillon;, &a.mux;, &a.rwatson;</td> - <td>24 июля 2004</td> - <td>&status.wip;</td> - </tr> - - <tr> - <td>Документирование архитектуры SMPng.</td> - <td>&a.jhb;, &a.rwatson;</td> - <td>28 февраля 2002</td> - <td>&status.wip;</td> - </tr> - - <tr> - <td>Переход к совместной блокировке VOP_GETATTR() для уменьшения - блокировки во время выполнения частых простых операций с VFS. - Модификация namei() в целях предоставления флага LOOKUP_SHARED, - который показывает, что требуемая блокировка может быть совместной, - а не исключительной.</td> - <td>&a.jeff;</td> - <td>11 марта 2002</td> - <td>&status.wip;</td> - </tr> - - <tr> - <td>Отделение иерархии sysctl и методов доступа.</td> - <td>&a.mini;</td> - <td>9 апреля 2002</td> - <td>&status.wip;</td> - </tr> - - <tr> - <td>Документирование существующей блокировки vm_map и проверка её - корректности.</td> - <td>&a.alc;</td> - <td>18 мая 2002</td> - <td>&status.wip;</td> - </tr> - - <tr> - <td>Документирование существующей блокировки vm_object и проверка её - корректности.</td> - <td>&a.alc;</td> - <td>4 мая 2002</td> - <td>&status.wip;</td> - </tr> - - <tr> - <td>Отделение структур linker_file_t в компоновщике ядра.</td> - <td>&a.arr;</td> - <td>19 июня 2002</td> - <td>&status.wip;</td> - </tr> - - <tr> - <td>Пересмотр стратегии блокировки и корректности операций VFS, - исправление различных режимов сбоев, связанных с включением - добавлений VFS-вызовов.</td> - <td>&a.jeff;</td> - <td>10 декабря 2002</td> - <td> &status.wip;</td> - </tr> - - <tr> - <td>Документирование стратегии блокировки внутри vnode, её вычистка, - удаление внутренних блокировок, переключение на sx-блокировки.</td> - <td>&a.jeff;</td> - <td>10 декабря 2002</td> - <td>&status.wip;</td> - </tr> - - <tr> - <td>Реализовать упрощённое переключение треда прерываний (обмен - контекстами) на i386.</td> - <td>&a.bmilekic;, &a.kan;</td> - <td>10 декабря 2002</td> - <td>&status.wip;</td> - </tr> - - <tr> - <td>Реализовать упрощённое переключение треда прерываний (обмен - контекстами) на sparc64.</td> - <td>&a.jake;</td> - <td>10 декабря 2002</td> - <td>&status.wip;</td> - </tr> - - <tr> - <td>Переход от использования lockmgr в VM к использованию мьютекса или - исключительного sxlock. Избавиться от Giant во всех VM, кроме для - компонентов vm_object/VFS и vm_page/pmap.</td> - <td>&a.alc;</td> - <td>10 декабря 2002</td> - <td>&status.wip;</td> - </tr> - - <tr> - <td>Модификация API драйверов устройств, чтобы разрешить драйверам - более просто делить код на "в контексте прерывания" и "в треде - прерывания" для более быстрого подтверждения прерываний. Это - уменьшит латентность обработки прерываний.</td> - <td>&a.peter;</td> - <td>4 октября 2003</td> - <td>&status.wip;</td> - </tr> - - <!-- Заброшены --> - - <tr> - <td>Создать механизм в структуре cdevsw для защиты драйверов, не - принимающих во внимание треды.</td> - <td>&a.jhb;</td> - <td>15 мая 2001</td> - <td>&status.stalled;</td> - </tr> - - <tr> - <td>Сделать printf() безопасной для вызова практически в любом месте - во избежание патовых блокировок.</td> - <td>&a.cp;</td> - <td>15 мая 2001</td> - <td>&status.stalled;</td> - </tr> - - <!-- Не начаты --> - - <tr> - <td>Удалить параметр приоритетности из tsleep(), msleep() и - cv_*wait*().</td> - <td> </td> - <td>12 января 2001</td> - <td>&status.new;</td> - </tr> - - <tr> - <td>Повторно реализовать kqueue при помощи условных переменных.</td> - <td> </td> - <td>15 марта 2001</td> - <td>&status.new;</td> - </tr> - - <tr> - <td>Сделать атомарные операции в SMP-коде условными, что используется - для статистики в целях отладки.</td> - <td>&a.peter;</td> - <td>15 марта 2001</td> - <td>&status.new;</td> - </tr> - - <tr> - <td>Добавить новую регулярную проверку для существующих процессов на - предмет отсутствия блокировок.</td> - <td>&a.jhb;</td> - <td>13 июня 2001</td> - <td>&status.new;</td> - </tr> - - <tr> - <td>Задание приоритетов для условных переменных, семафоров и - sx-блокировок.</td> - <td> </td> - <td>7 сентября 2001</td> - <td>&status.new;</td> - </tr> - - <tr> - <td>Убрать максимум schedcpu(), предпочтя обновления по событиям.</td> - <td> </td> - <td>7 сентября 2001</td> - <td>&status.new;</td> - </tr> - - <tr> - <td>Исправить *hold (например, crhold) на возврат ссылки на - объект.</td> - <td> </td> - <td>7 сентября 2001</td> - <td>&status.new;</td> - </tr> - - <tr> - <td>Добавить регулярную проверку на блокировки lockmgr.</td> - <td> </td> - <td>7 сентября 2001</td> - <td>&status.new;</td> - </tr> - - <tr> - <td>Добавить сдвигаемые блокировки ICU на ia64.</td> - <td> </td> - <td>4 января 2002</td> - <td>&status.new;</td> - </tr> - - <tr> - <td>Быстрое избавление от Giant для VOP_READ() и VOP_WRITE().</td> - <td> </td> - <td>25 февраля 2002</td> - <td>&status.new;</td> - </tr> - - <tr> - <td>Перенос забора Giant в системные вызовы Linux i386 ABI.</td> - <td> </td> - <td>25 февраля 2002</td> - <td>&status.new;</td> - </tr> - - <tr> - <td>Перенос захвата Giant в системные вызовы Linux AXP ABI.</td> - <td> </td> - <td>25 февраля 2002</td> - <td>&status.new;</td> - </tr> - - <tr> - <td>Перенос захвата Giant в системные вызовы SVR4 i386 ABI.</td> - <td> </td> - <td>25 февраля 2002</td> - <td>&status.new;</td> - </tr> - - <tr> - <td>Перенос захвата Giant в системные вызовы OSF/1 AXP ABI.</td> - <td> </td> - <td>25 февраля 2002</td> - <td>&status.new;</td> - </tr> - - <tr> - <td>Перенос захвата Giant в системные вызовы IBCS i386 ABI.</td> - <td> </td> - <td>25 февраля 2002</td> - <td>&status.new;</td> - </tr> - - <tr> - <td>Расширение инструмента профилирования мьютексов на профилирование - также и sx-блокировок.</td> - <td>&a.eivind;, &a.des;</td> - <td>1 апреля 2002</td> - <td>&status.new;</td> - </tr> - - <tr> - <td>Реализовать atomic_fetchadd() для данных int и long с версиями acq - и rel.</td> - <td> </td> - <td>23 мая 2002</td> - <td>&status.new;</td> - </tr> - - <tr> - <td>Реализовать простой API счётчика ссылок, использующий атомарные - операции, для замены блокировок, которые всего лишь защищают счётчики - ссылок.</td> - <td> </td> - <td>23 мая 2002</td> - <td>&status.new;</td> - </tr> - - <tr> - <td>Добавить проверку witness_sleep() для copyin/out() и - s/fuword().</td> - <td>&a.jhb;</td> - <td>7 июня 2002</td> - <td>&status.new;</td> - </tr> - -<!-- - <tr> - <td></td> - <td> </td> - <td>D M 2002</td> - <td>&status.new;</td> - </tr> ---> - </table> - - <p>В этой таблице перечислены подзадачи, которые нужно выполнить для - того, чтобы сделать стек сетевых протоколов многопоточным.</p> - - <table class="tblbasic"> - <tr class="heading"> - <th>Задача</th> - <th>Ответственный</th> - <th>Последнее обновление</th> - <th>Состояние</th> - </tr> - - <tr> - <td>Защитить очереди сетевых интерфейсов.</td> - <td>&a.jlemon;</td> - <td>24 ноября 2000</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Отделение IP.</td> - <td>&a.jennifer;, &a.hsu;</td> - <td>10 июня 2002</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Отделение TCP.</td> - <td>&a.jennifer;, &a.hsu;, &a.sam;, &a.rwatson;</td> - <td>24 ноября 2004</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Отделение UDP.</td> - <td>&a.jennifer;, &a.hsu;, &a.rwatson;</td> - <td>24 ноября 2004</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Отделение счётчиков ссылок ifaddr.</td> - <td>&a.hsu;</td> - <td>18 декабря 2002</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Отделение списка ifnet.</td> - <td>&a.hsu;</td> - <td>21 декабря 2002</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Отделение деревьев radix.</td> - <td>&a.hsu;</td> - <td>23 декабря 2002</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Отделение ARP.</td> - <td>&a.hsu;</td> - <td>16 января 2003</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Блокировка raw IP.</td> - <td>&a.sam;, &a.rwatson;</td> - <td>24 июля 2004</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Отделение сокетов divert.</td> - <td>&a.sam;</td> - <td>4 октября 2003</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Отделение ipfw2.</td> - <td>&a.sam;</td> - <td>4 октября 2003</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Отделение DUMMYNET.</td> - <td>&a.sam;</td> - <td>4 октября 2003</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Отделение моста ethernet.</td> - <td>&a.sam;</td> - <td>4 October 2003</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Отделение очередей фрагментирования IP.</td> - <td>&a.rwatson;</td> - <td>4 октября 2003</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Отделение таблиц маршрутизации.</td> - <td>&a.sam;</td> - <td>4 октября 2003</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Отделение FAST_IPSEC.</td> - <td>&a.sam;</td> - <td>4 октября 2003</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Разрешить параллельные записи в обработке isr.</td> - <td>&a.rwatson;, &a.sam;</td> - <td>11 октября 2003</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Блокировка "интерфейса сброса" if_disc.</td> - <td>&a.rwatson;</td> - <td>9 марта 2004</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Блокировка "интерфейса передачи IPv6-to-IPv4 TCP" if_faith.</td> - <td>&a.sam;, &a.rwatson;</td> - <td>9 марта 2004</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Блокировка "общего интерфейса туннелирования" if_gif.</td> - <td>&a.rwatson;</td> - <td>9 марта 2004</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Пересмотр поддержки туннеля ECN (ip_ecn.c).</td> - <td>&a.rwatson;</td> - <td>9 марта 2004</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Блокировка if_tap глобально и на уровне softc.</td> - <td>&a.rwatson;</td> - <td>23 апреля 2004</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Блокировка if_tun глобально и на уровне softc.</td> - <td>&a.rwatson;</td> - <td>23 апреля 2004</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Блокировка netatalk/aarp.c.</td> - <td>&a.rwatson;</td> - <td>23 апреля 2004</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Кэширование MAC-метки сокета в метке inpcb сокетов IPv4, чтобы эта - метка могла безопасно использоваться на уровне inet без блокировок - самого сокета.</td> - <td>&a.rwatson;</td> - <td>23 апреля 2004</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Подпрограммы инкапсуляции IP (ip_encap.c).</td> - <td>&a.rwatson;</td> - <td>23 апреля 2004</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Блокировка globals в loopback-интерфейсе (if_loop.c).</td> - <td>&a.rwatson;</td> - <td>23 апреля 2004</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Использование m_tags в if_gif для ограничения замкнутых - конфигураций, вместо статического счётчика, не совместимого с - MPSAFE.</td> - <td>&a.ru;</td> - <td>23 апреля 2004</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Блокировка netatalk DDP PCB.</td> - <td>&a.rwatson; </td> - <td>23 апреля 2004</td> - <td>&status.wip;</td> - </tr> - - <tr> - <td>Разрешить выполнение маршрута передачи IP без Giant.</td> - <td>&a.sam;</td> - <td>1 декабря 2003</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Блокировка протоколов домена &unix; и fifofs.</td> - <td>&a.sam;, &a.rwatson;</td> - <td>24 июля 2004</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Giant-блокировка NFS-сервера для исключения so_upcall() без - Giant</td> - <td>&a.rwatson;</td> - <td>24 июля 2004</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Блокировка мета-данных клонирования интерфейсов.</td> - <td>&a.brooks;</td> - <td>24 июля 2004</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Применение комбинации блокировок сокета и его буфера, кэширования - меток для меток MAC в сокетах, так чтобы их можно было безболезненно - использовать без Giant.</td> - <td>&a.rwatson;</td> - <td>24 июля 2004</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>При диспетчеризации сообщений сокета маршрутизации использовать - netisr для избежания повторного входа в код сокета из кода - маршрутизации, решив вопросы последовательности блокировок.</td> - <td>&a.rwatson;</td> - <td>24 июля 2004</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Введение блокировки accept для защиты от подтверждения неполных и - полных очередей на сокетах, ждущих соединения.</td> - <td>&a.rwatson;</td> - <td>24 июля 2004</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Разбиение операций wakeup, append с буфером сокета, изменения - состояния сокета, резервирования буфера сокета, его очистки и так - далее на _locked() и неблокированные версии, устранить условную - блокировку.</td> - <td>&a.rwatson;</td> - <td>24 июля 2004</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Блокировка AARP, AppleTalk Address Resoluton Protocol.</td> - <td>&a.rwatson;</td> - <td>24 июля 2004</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Исправление проблем с синхронизацией данных кэша pull/push в - sosend(), soreceive(), позволив им работать без Giant.</td> - <td>&a.rwatson;</td> - <td>24 июля 2004</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Защитить глобальные счетчики/лимиты сокета и номера генерации - мьютексом.</td> - <td>&a.rwatson;</td> - <td>24 июля 2004</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Блокировка выделения отдельных мета-данных в модулях netgraph, - связанных с интерфейсом.</td> - <td>&a.rwatson;</td> - <td>24 июля 2004</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Блокировка полей OOB буфера сокета в TCP/IP и IPX.</td> - <td>&a.rwatson;</td> - <td>24 июля 2004</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Добавить MSG_NBIO, чтобы fifofs могла избежать манипуляций с - SO_NBIO, связанных с риском.</td> - <td>&a.truckman;</td> - <td>24 июля 2004</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Защитить все использования so_count блокировкой сокета.</td> - <td>&a.rwatson;</td> - <td>24 июля 2004</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Перенести состояние, связанное с буфером сокета, из so_state в - sb_state, чтобы оно могло быть блокировано мьютексом буфера - сокета.</td> - <td>&a.rwatson;</td> - <td>24 июля 2004</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Ввести временную глобальную блокировку для блокирования поля - if_label, используемого в технологии MAC.</td> - <td>&a.rwatson;</td> - <td>24 июля 2004</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Выделить поведение, специфичное для VFS, из fdrop_locked(), и - получать Giant в пообъектных методах fo_close, а не в fdrop_locked(), - чтобы конвейеры и сокеты могли работать с fo_close() без Giant.</td> - <td>&a.rwatson;</td> - <td>24 июля 2004</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Перенос захвата Giant в операцию статистики дескриптора файла - fo_stat(), а не забирать его в fstat(), чтобы вызовы fstat() с - сокетами и конвейерами работали без Giant.</td> - <td>&a.rwatson;</td> - <td>24 июля 2004</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Не удерживать блокировки сокета в течение входа в методы - переключения протокола, позволяя методам протокола вызывать - блокировки сокета после блокировок протоколов в порядке - блокировки.</td> - <td>&a.rwatson;</td> - <td>24 июля 2004</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Портирование блокировки inpcb мьютексом и его установок - из IPv4 в IPv6</td> - <td>&a.rwatson;</td> - <td>8 августа 2004</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Добавление IFF_NEEDSGIANT, чтобы позволить if_start использовать - Giant при работе с определёнными интерфейсами. Отложить if_start в - очередь задач.</td> - <td>&a.rwatson;</td> - <td>8 августа 2004</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Отказаться от Giant в функциях stat(), fo_stat() для обеспечения - работы stat для конвейеров и сокетов без Giant.</td> - <td>&a.rwatson;</td> - <td>8 августа 2004</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Добавить захваты блокировок TCP.</td> - <td>&a.rwatson;</td> - <td>24 ноября 2004</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Блокировка уровня сокетов.</td> - <td>&a.sam;, &a.rwatson;</td> - <td>24 ноября 2004</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Пересмотр кода таймера TCP.</td> - <td>&a.rwatson;</td> - <td>24 ноября 2004</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Анализ и снижение накладных расходов на сбор случайной информации - в критических сетевых вызовах.</td> - <td>&a.rwatson;, &a.markm;</td> - <td>24 ноября 2004</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Позволить коду декларировать NET_NEEDS_GIANT(), принудительно - устанавливающий Giant в сетевом стеке, если этот код вкомпилирован в - ядро.</td> - <td>&a.rwatson;</td> - <td>28 августа 2004</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Отключить Giant в сетевом стеке в конфигурации по умолчанию.</td> - <td>&a.rwatson;</td> - <td>28 августа 2004</td> - <td>&status.done;</td> - </tr> - - <tr> - <td>Переход к использованию счётчика ссылок на дескриптор файла вместо - счётчика ссылок на сокет для системных вызовов для работы с сокетами, - во избежание излишних операций со счётчиком ссылок.</td> - <td>&a.rwatson;</td> - <td>24 октября 2004</td> - <td>&status.done;</td> - </tr> - - <!-- WIP --> - - <tr> - <td>Блокировка syncache.</td> - <td>&a.hsu;, &a.sam;</td> - <td>10 ноября 2003</td> - <td>&status.wip;</td> - </tr> - - <tr> - <td>Блокировка IPv6.</td> - <td>&a.sam;, &a.rwatson;, &a.ume;, &a.mlaier; </td> - <td>8 августа 2004</td> - <td>&status.wip;</td> - </tr> - - <tr> - <td>Глобальная блокировка if_ppp для каждого softc</td> - <td>&a.rwatson;, Maurycy Pawlowski-Wieronski - <maurycy@fouk.org></td> - <td>23 апреля 2004</td> - <td>&status.wip;</td> - </tr> - - <tr> - <td>Блокировка структуры ifnet.</td> - <td>&a.mlaier;, &a.luigi;, Maurycy Pawlowski-Wieronski - <maurycy@fouk.org></td> - <td>23 апреля 2004</td> - <td>&status.wip;</td> - </tr> - - <tr> - <td>Блокировка списка адресов IPv4, IPv6 и atalk сетевых - интерфейсов.</td> - <td>&a.mlaier;, &a.rwatson;</td> - <td>8 августа 2004</td> - <td>&status.wip;</td> - </tr> - - <tr> - <td>Блокировка пользователей кода сжатия BSD compress (bsd_comp.c) для - защиты состояния процесса сжатия.</td> - <td>&a.rwatson;</td> - <td>23 апреля 2004</td> - <td>&status.wip;</td> - </tr> - - <tr> - <td>Блокировка глобальных состояний и состояний softc для - преобразователя 6-в-4 (if_stf.c). </td> - <td>&a.rwatson;</td> - <td>23 апреля 2004</td> - <td>&status.wip;</td> - </tr> - - <tr> - <td>Разблокировка состояния global и softc для SLIP (if_sl.c).</td> - <td>&a.rwatson;</td> - <td>23 апреля 2004</td> - <td>&status.wip;</td> - </tr> - - <tr> - <td>Блокировка состояний global и softc для SPPP (if_sppsubr.c).</td> - <td>&a.rik;, &a.rwatson;</td> - <td>23 апреля 2004</td> - <td>&status.wip;</td> - </tr> - - <tr> - <td>Блокировка IGMP.</td> - <td>&a.rwatson;</td> - <td>23 апреля 2004</td> - <td>&status.wip;</td> - </tr> - - <tr> - <td>Дополнительная трассировка KTR для UMA, вызовов, прерываний и - событий сети.</td> - <td>&a.rwatson;</td> - <td>8 августа 2004</td> - <td>&status.wip;</td> - </tr> - - <!-- Не начиналось --> - - <tr> - <td>Уменьшение действий перед блокировкой буфера сокета за счёт замены - функций tsleep() и wakeup() на условную переменную.</td> - <td>&a.tanimura;</td> - <td>21 апреля 2002</td> - <td>&status.new;</td> - </tr> - - <tr> - <td>Блокировка драйвера "кадров ethernet" if_ef.</td> - <td> </td> - <td>9 марта 2004</td> - <td>&status.new;</td> - </tr> - - <tr> - <td>Блокировка IP ID.</td> - <td>&a.rwatson;</td> - <td>23 апреля 2004</td> - <td>&status.new;</td> - </tr> - </table> - - <a name="issues"></a> - <h2>Известные проблемы</h2> - - <table class="tblbasic"> - <tr class="heading"> - <th>Проблема</th> - <th>Последнее обновление</th> - <th>Состояние</th> - </tr> - - <tr> - <td>Время холостой работы процессора не передаётся процессам холостой - работы.</td> - <td>20 сентября 2000</td> - <td>&status.resolved;</td> - </tr> - - <tr> - <td>microuptime нарушает обратную совместимость.</td> - <td>4 октября 2000</td> - <td>&status.resolved;</td> - </tr> - - <tr> - <td>microuptime() требует обратной совместимости</td> - <td>4 October 2000</td> - <td>&status.resolved;</td> - </tr> - - <tr> - <td>Учёт процессов неточен (чем больше процессоров, тем ближе - точность).</td> - <td>5 октября 2000</td> - <td>&status.resolved;</td> - </tr> - - <tr> - <td>M_DEVBUF, вероятно, неправильный пул памяти для прерываний, и - мы должны подумать о создании нового пула выделения памяти для - этого.</td> - <td>9 февраля 2001</td> - <td>&status.resolved;</td> - </tr> - - <tr> - <td>Отключение ПК-адаптера вызывает аварийное завершение из-за - условных ошибок в коде треда обработки прерываний.</td> - <td>15 марта 2001</td> - <td>&status.resolved;</td> - </tr> - - <tr> - <td>Машины SMP x86 видят прерывания NCPU * 100 clk и прерывания - NCPU * 128 rtc.</td> - <td>15 мая 2001</td> - <td>&status.resolved;</td> - </tr> - - <tr> - <td>Проверка будет бесконечно рекурсивной при получении Giant после - паузы с блокировкой с возможностью установки паузы.</td> - <td>27 июня 2001</td> - <td>&status.resolved;</td> - </tr> - - <tr> - <td>Последовательный gdb не работает, если заданы параметры boot_ddb и - boot_gdb.</td> - <td>14 июля 2002</td> - <td>&status.resolved;</td> - </tr> - - <tr> - <td>Последовательный gdb не работает на скорости 115200.</td> - <td>14 июля 2002</td> - <td>&status.resolved;</td> - </tr> - - <tr> - <td>Последовательный gdb никогда не получает управление обратно, если - был введён 'cont'.</td> - <td>14 июля 2002</td> - <td>&status.resolved;</td> - </tr> - - <!-- нерешённые --> - - <tr> - <td>Профилирование не работает.</td> - <td>20 февраля 2001</td> - <td>&status.unresolved;</td> - </tr> - -<!-- - <tr> - <td></td> - <td>D M 2002</td> - <td>&status.unresolved;</td> - </tr> ---> - </table> - - <a name="news"></a> - <h2>Новости</h2> - - <p>Оставшаяся часть страницы структурирована в виде журнала с обратной - хронологией записи.</p> - -<!-- - <b> D M 2002</b> - - <ul> - <li> <p> </p> </li> - </ul> ---> - - <b>28 августа 2004</b> - - <ul> - <li>&a.rwatson; изменил поведение сетевого стека, который теперь по - умолчанию работает без блокировки Giant, что позволяет стеку сетевых - протоколов работать на нескольких процессорах одновременно, а также - работать в вытесняющем режиме, в том числе и с вытеснением другими - процессами.</li> - </ul> - - <b>30 октября 2003</b> - - <ul> - <li><p>&a.grog; послал на сингапурскую конференцию <a - href="http://www.aeosc.org/">Asian Enterprise Open Source Conference</a> - свою работу <a href="http://www.lemis.com/grog/SMPng/Singapore/">FreeBSD - SMPng</a>. В докладе представлен исторический обзор разработки SMPng, - начиная с 2001 года, хотя опущено обсуждение последних достижений проекта - SMPng, таких, как постоянное улучшение производительности в результате - значительного отказа от блокировок в подсистемах хранения, VM и - основных подсистем IPC.</p></li> - </ul> - - <b>13 января 2002</b> - - <ul> - <li><p><a - href="http://docs.FreeBSD.org/cgi/getmsg.cgi?fetch=122646+0+archive/2002/freebsd-smp/20020113.freebsd-smp"> - Состояние работ</a> было опубликовано в списке рассылки -smp.</p></li> - </ul> - - <b>15 мая 2001</b> - - <ul> - <li><p>&a.grog; опубликовал свой <a - href="http://www.lemis.com/~grog/SMPng/USENIX/">доклад для USENIX</a>, - который будет представлен в Бостоне в конце июня.</p></li> - </ul> - - <b>22 марта 2001</b> - - <ul> - <li><p>В списке рассылки -smp было опубликовано <a - href="http://docs.FreeBSD.org/cgi/getmsg.cgi?fetch=41302+0+archive/2001/freebsd-smp/20010325.freebsd-smp"> - состояние работ</a>.</p></li> - </ul> - - <b>5 марта 2001</b> - - <ul> - <li><p>В списке рассылки -smp было опубликовано <a - href="http://docs.FreeBSD.org/cgi/getmsg.cgi?fetch=0+0+archive/2001/freebsd-smp/20010311.freebsd-smp"> - состояние работ</a>.</p></li> - </ul> - - <b>24 января 2001</b> - - <ul> - <li><p>В списке рассылки -smp было опубликовано <a - href="http://docs.FreeBSD.org/cgi/getmsg.cgi?fetch=38125+0+archive/2001/freebsd-smp/20010128.freebsd-smp"> - состояние работ</a>.</p></li> - </ul> - - <b>12 января 2001</b> - - <ul> - <li><p>В списке рассылки -smp было опубликовано <a - href="http://www.FreeBSD.org/cgi/getmsg.cgi?fetch=45111+48223+/usr/local/www/db/text/2001/freebsd-smp/20010114.freebsd-smp"> - состояние работ</a>.</p></li> - </ul> - - <b>11 октября 2000</b> - - <ul> - <li><p>&a.jhb; и &a.cp; выступили с предварительным перечнем <a - href="http://storm.uk.FreeBSD.org/~hiten/smp_synch_rules.html"> - правил</a>, которым нужно следовать при работе над синхронизацией в - ядре.</p></li> - </ul> - - <b>6 сентября 2000</b> - - <ul> - <li><p>Выполнен коммит SMP-кода. Вся дальнейшая работа будет выполняться - в cvs, а не при помощи патчей.</p></li> - - <li><p>Доступен для загрузки обновлённый <a - href="http://people.FreeBSD.org/~jasone/smp/smpng_patch_9.7"> - патч</a>. Он, вероятнее всего, содержит то, что будет перенесено в - дерево исходных текстов.</p></li> - </ul> - - <b>5 сентября 2000</b> - - <ul> - <li><p>Доступен для загрузки обновлённый <a - href="http://people.FreeBSD.org/~jasone/smp/smpng_patch_9.1"> - патч</a>. Этот патч делает rtc быстрым прерыванием, использует - инструкции блокировки для мьютексов в MP-ядрах и корректирует - связку с mtx_*() внутри модулей.</p></li> - </ul> - - <b>1 сентября 2000</b> - - <ul> - <li><p>Большей частью ведётся работа над кодом для i386 (UP и MP). Для - alpha всё ещё необходимо дополнительное кодирование, которые теперь - сделано.</p></li> - </ul> - - <b>30 августа 2000</b> - - <ul> - <li><p>Для i386 и alpha доступны обновлённые патчи, которые находятся <a - href="http://people.FreeBSD.org/~jasone/smp/smpng_patch8.6"> - здесь</a>.</p></li> - </ul> - - <b>12 августа 2000</b> - - <ul> - <li><p><a href="http://www.FreeBSD.org/~jhb/patches/smpng.patch6">Здесь</a> - находятся обновлённые патчи для i386. Учёт процессов всё ещё - работает неправильно, однако сделано множество других улучшений.</p></li> - </ul> - - <b>3 августа 2000</b> - - <ul> - <li><p>Патчи с функционирующими тяжёлыми тредами для платформы i386 - доступны <a href="http://people.FreeBSD.org/~grog/patches4.gz">здесь</a>. - Имеется несколько небольших проблем с этим набором патчей. А именно - неправильная работа учёта процессов.</p></li> - </ul> - - <b>6 июля 2000</b> - - <ul> - <li><p>Sheldon Hearn подготовил справочную страницу по mutex(9) на основе - BSD/OS, которая доступна <a - href="http://people.FreeBSD.org/~jake/mutex.9">здесь</a>.</p></li> - </ul> - - <b>5 июля 2000</b> - - <ul> - <li><p>&a.jake; поместил обновлённый патч <a - href="http://people.FreeBSD.org/~jake/smpng.diff">здесь</a>.</p></li> - </ul> - - <b>3 июля 2000</b> - - <ul> - <li><p>У &a.jake; имеется рабочий код блокировки BSD/OS, и он объединён с - соответствующими частями патчей &a.dillon; (простаивающие процессы, - некоторые изменения в блокировках планировщика и так далее). Его - набор патчей доступен <a - href="http://people.FreeBSD.org/~jake/smpng2.tar">здесь</a>.</p></li> - </ul> - - <b>26 июня 2000</b> - - <ul> - <li><p>&a.cp; предоставил PostScript-версии своих слайдов презентации для - <a href="http://people.FreeBSD.org/~jasone/smp/smp_meeting_slides_1.ps"> - первого</a> и <a - href="http://people.FreeBSD.org/~jasone/smp/smp_meeting_slides_2.ps"> - второго</a> дня обсуждения SMP.</p></li> - </ul> - - <b>25 июня 2000</b> - - <ul> - <li><p>Вот копия <a - href="http://docs.FreeBSD.org/cgi/getmsg.cgi?fetch=226208+0+archive/2000/freebsd-smp/20000625.freebsd-smp"> - итогов обсуждения SMP</a>, которая была опубликована в списке - рассылки -smp.</p></li> - </ul> - - <b>19 июня 2000</b> - - <ul> - <li><p>Вот копия <a - href="http://docs.FreeBSD.org/cgi/getmsg.cgi?fetch=154884+0+archive/2000/freebsd-current/20000625.freebsd-current"> - анонса проекта SMP</a>, который был опубликован в списке - рассылки -current.</p></li> - </ul> - - - </body> -</html> |