aboutsummaryrefslogtreecommitdiff
path: root/ru_RU.KOI8-R/htdocs/smp/index.sgml
diff options
context:
space:
mode:
Diffstat (limited to 'ru_RU.KOI8-R/htdocs/smp/index.sgml')
-rw-r--r--ru_RU.KOI8-R/htdocs/smp/index.sgml2516
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&amp;apropos=0&amp;sektion=9&amp;manpath=FreeBSD+6.0-current">
- Мьютексы ядра (mutex(9))</a></li>
-
- <li><a
- href="http://www.freebsd.org/cgi/man.cgi?query=mtx_pool&amp;apropos=0&amp;sektion=9&amp;manpath=FreeBSD+6.0-current">
- Пулы мьютексов ядра (mtx_pool(9))</a></li>
-
- <li><a
- href="http://www.freebsd.org/cgi/man.cgi?query=critical&amp;apropos=0&amp;sektion=9&amp;manpath=FreeBSD+6.0-current">
- Критические области ядра (critical(9))</a></li>
-
- <li><a
- href="http://www.freebsd.org/cgi/man.cgi?query=sx&amp;apropos=0&amp;sektion=9&amp;manpath=FreeBSD+6.0-current">
- Совместно используемые и эксклюзивные блокировки ядра
- (sx(9))</a></li>
-
- <li><a
- href="http://www.freebsd.org/cgi/man.cgi?query=condvar&amp;apropos=0&amp;sektion=9&amp;manpath=FreeBSD+6.0-current">
- Условные переменные ядра (condvar(9))</a></li>
-
- <li><a
- href="http://www.freebsd.org/cgi/man.cgi?query=sema&amp;apropos=0&amp;sektion=9&amp;manpath=FreeBSD+6.0-current">
- Семафоры ядра (sema(9))</a></li>
-
- <li><a
- href="http://www.freebsd.org/cgi/man.cgi?query=sleep&amp;apropos=0&amp;sektion=9&amp;manpath=FreeBSD+6.0-current">
- Интерфейс sleep/wakeup ядра (sleep(9))</a></li>
-
- <li><a
- href="http://www.freebsd.org/cgi/man.cgi?query=kthread&amp;apropos=0&amp;sektion=9&amp;manpath=FreeBSD+6.0-current">
- Треды ядра (kthread(9))</a></li>
-
- <li><a
- href="http://www.freebsd.org/cgi/man.cgi?query=ithread&amp;apropos=0&amp;sektion=9&amp;manpath=FreeBSD+6.0-current">
- Треды прерываний (ithread(9))</a></li>
-
- <li><a
- href="http://www.freebsd.org/cgi/man.cgi?query=swi&amp;apropos=0&amp;sektion=9&amp;manpath=FreeBSD+6.0-current">
- Треды программных прерываний (swi(9))</a></li>
- </ul>
-
- <p>Кроме того, интерес может представлять старая <a
- href="http://www.freebsd.org/cgi/man.cgi?query=spl&amp;apropos=0&amp;sektion=9&amp;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 &lt;maurycy@fouk.org&gt;, &a.brooks;, &a.rik;</td>
- </tr>
-
- <tr>
- <td>Клиент NFS</td>
- <td>&status.new;</td>
- <td>23 апреля 2004</td>
- <td>&nbsp;</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>Удалить включаемые файлы &lt;sys/mutex.h&gt; из других включаемых
- файлов ядра, таких, как &lt;vm/vm_zone.h&gt;,
- &lt;sys/resourcevar.h&gt;, &lt;sys/ucred.h&gt; и
- &lt;sys/mbuf.h&gt;.</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>&nbsp;</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>&nbsp;</td>
- <td>12 января 2001</td>
- <td>&status.new;</td>
- </tr>
-
- <tr>
- <td>Повторно реализовать kqueue при помощи условных переменных.</td>
- <td>&nbsp;</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>&nbsp;</td>
- <td>7 сентября 2001</td>
- <td>&status.new;</td>
- </tr>
-
- <tr>
- <td>Убрать максимум schedcpu(), предпочтя обновления по событиям.</td>
- <td>&nbsp;</td>
- <td>7 сентября 2001</td>
- <td>&status.new;</td>
- </tr>
-
- <tr>
- <td>Исправить *hold (например, crhold) на возврат ссылки на
- объект.</td>
- <td>&nbsp;</td>
- <td>7 сентября 2001</td>
- <td>&status.new;</td>
- </tr>
-
- <tr>
- <td>Добавить регулярную проверку на блокировки lockmgr.</td>
- <td>&nbsp;</td>
- <td>7 сентября 2001</td>
- <td>&status.new;</td>
- </tr>
-
- <tr>
- <td>Добавить сдвигаемые блокировки ICU на ia64.</td>
- <td>&nbsp;</td>
- <td>4 января 2002</td>
- <td>&status.new;</td>
- </tr>
-
- <tr>
- <td>Быстрое избавление от Giant для VOP_READ() и VOP_WRITE().</td>
- <td>&nbsp;</td>
- <td>25 февраля 2002</td>
- <td>&status.new;</td>
- </tr>
-
- <tr>
- <td>Перенос забора Giant в системные вызовы Linux i386 ABI.</td>
- <td>&nbsp;</td>
- <td>25 февраля 2002</td>
- <td>&status.new;</td>
- </tr>
-
- <tr>
- <td>Перенос захвата Giant в системные вызовы Linux AXP ABI.</td>
- <td>&nbsp;</td>
- <td>25 февраля 2002</td>
- <td>&status.new;</td>
- </tr>
-
- <tr>
- <td>Перенос захвата Giant в системные вызовы SVR4 i386 ABI.</td>
- <td>&nbsp;</td>
- <td>25 февраля 2002</td>
- <td>&status.new;</td>
- </tr>
-
- <tr>
- <td>Перенос захвата Giant в системные вызовы OSF/1 AXP ABI.</td>
- <td>&nbsp;</td>
- <td>25 февраля 2002</td>
- <td>&status.new;</td>
- </tr>
-
- <tr>
- <td>Перенос захвата Giant в системные вызовы IBCS i386 ABI.</td>
- <td>&nbsp;</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>&nbsp;</td>
- <td>23 мая 2002</td>
- <td>&status.new;</td>
- </tr>
-
- <tr>
- <td>Реализовать простой API счётчика ссылок, использующий атомарные
- операции, для замены блокировок, которые всего лишь защищают счётчики
- ссылок.</td>
- <td>&nbsp;</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>&nbsp;</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
- &lt;maurycy@fouk.org&gt;</td>
- <td>23 апреля 2004</td>
- <td>&status.wip;</td>
- </tr>
-
- <tr>
- <td>Блокировка структуры ifnet.</td>
- <td>&a.mlaier;, &a.luigi;, Maurycy Pawlowski-Wieronski
- &lt;maurycy@fouk.org&gt;</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>&nbsp;</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>