Как стать автором
Обновить

Комментарии 29

Моск взорван. Web-програмеру тяжело читать про системное программирование (:
А вы пробовали не читать? Должно полегчать… :)
Что вы. Читать полезно.
Просто как-то крайне абстрактно, хотя вроде и относительно доступно описано все (:
Смайлик вместо точки обязательно ставить? Что же вы «Web-програмеры» все какие-то не такие. Ну неудобно ведь читать.
В Web-программировании точно такие же абстракции. Программирование в любом виде — это работа с абстракциями.
Если вам нужны комментарии — меняйте тему. Сделайте обзор китайского смартфона, обязательно с анбоксингом, или напишите про то, как вы ненавидите копирайт и копирастов, и как вы сейчас всем объясните, как можно жить без копирайта. (trollface).
«Отсутствие комментариев к двум моим предыдущим постам, несмотря на большое число лайков, привели меня к выводу, что подавляющее большинство ничего не поняли. „

Или же может многое из того, что вы описали, уже знакомо, скажем, из тех же “Операционных систем» В. Столлингса)
Или из «Современных операционных систем» Таненбаума.
Совсем не понял зачем Вы в статьи код вставляете? Если есть какие-то готовые и компилируемые реализации чего-то, то выложите на github куда-нить и дайте ссылку… Зачем какие-то отстранённые куски вставлять в статьи?
Обычно код вставляют для того, чтобы показать, как абстрактная идея работает на практике. Мне же это тем более приятно, так как это мой код. Кроме того, есть вероятность того, что внимательный читатель найдёт какую-либо ошибку, за что я буду ему благодарен.
В куске кода, вырванном из контекста вряд ли вам кто что-либо найдёт. Мало ли какие феньки для оптимизации вы используете и какие очевидно (мне) нужные вещи реализуете за скобками и как.
Вот именно это я и имею ввиду, кусок кода по данной теме выранный из контекста только засоряет текст статьи… Реализовать то, что автор описывает можно 10000+1 способом… зачем нужны конкретные буквы по данной теме… непонятно…
Действительно, зачем вам конкретные буквы…
Вы хотели конструктивной критики насчёт ваших статей? Так получите её… зачем встаёте в позу?
А Вам спасибо за статью… Сам текст вполне читаемый и может быть кому-то полезен в качестве «общего образования»… Но куски кода реально напрягают :)
Класс! Но я бы советовал Вам попробовать написать визуальную оболочку под экспериментальную ОС Singularity, она полностью написана на защищенном коде, на подобии языка C#. Было бы очень интересно и полезно! Можно начать кикстратер компанию собрать программеров описать проект, нечто вроде Linux 2.0, может быть и получилась национальная ОСь за которую не стыдно!
Национальная ось… за которую не стыдно…

image
НЛО прилетело и опубликовало эту надпись здесь
Что-то своё, наверное. Слишком много специфики, в силу которой JVM или CLR не подойдут. В частности, это связанно с поддержкой персистивности и распределённости. Но до этого пока очень далеко. Сейчас нужно заниматься базовой системой (отображение всей памяти на адресное пространство, разработка API, поддерживающего персистивность...)
НЛО прилетело и опубликовало эту надпись здесь
Вот как раз security у меня наименее проработан. Ничего не могу вам рассказать об этом. Смотрел вашу статью о capability based security. Вообще, в сравнении с UNIX-security эта модель выглядит более предпочтительной.
НЛО прилетело и опубликовало эту надпись здесь
Баловался когда-то. С одной стороны было легче, т.к. на 8086, без PM, с другой — из литературы только Бах. Это нереальное ощущение крутости, когда даешь структурам названия типа task и sheduler.
Тема интересная и завораживающая. После таких статей так и хочется нырнуть поглубже и познакомиться со всей этой магией :)
Добавил в список 2read, 2try, 2taste на досуге!
Попробуйте исходники. Их пока очень мало, можно легко со всем разобраться.
Этот участок:
  do ASMV("mov $1, %%al\nxchgb %%al, %0" : "+m"(lock->busy), "=&a"(al));
  while (al && --tries);

можно переписать, например, так:
  do {
    if (lock->busy) {
      al = 1;
    } else {
      ASMV("mov $1, %%al\nxchgb %%al, %0" : "+m"(lock->busy), "=&a"(al));
    }
  } while (al && --tries);

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

Другими словами на Wikipedia.
Да, тут возможны и другие оптимизации, например, использование инструкции pause после каждой неудачной попытки (что особенно полезно для NetBurst процессоров). Пока это решение в лоб, а оптимизацию я оставил на будущее. Первый комментарий по делу!
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории