APIC

Internal structure and you change requests/suggestions
  • Стас wrote:АПИК можно включить, но мне кажется чтобы сделать нормальный доступ к процам нужно переписать половину оси, или начать её с нуля и перенести туда все готовые функции после отработки работы с несколькими процами, я писал название книги где то в темах в которой есть пример включения апика настройки прерываний таймера и клавы, и работы с несколькими процами. Там написано, что нужно делать семафоры для проверки того, чтобы два проца не писали в один и тот же байт, мне кажется этого делать не надо, а надо думать как чтоб такого небыло.
    SII wrote:А единственный правильный путь -- выкинуть вообще всё сделанное и разрабатывать с нуля, причём не сохранять совместимость со старым на уровне API (поскольку этот самый API, доставшийся в наследство от Менуэта -- сплошной идиотизм). Естественно, сразу сделать систему не только с поддержкой SMP, но и 64-разрядной, с виртуальной памятью, PnP, ACPI... Ну а если так хочется сохранить возможность запуска имеющихся программ, слепить прослойку, поддерживающую выполнение прикладного 32-разрядного кода со старым API на новой 64-разрядной системе.
    На сколько я понял, товарищи с оседева (Стас и SII), имеющие некоторый опыт в создании ОСей, горят желанием помочь не только морально, теоретически, но и при непосредсвенной реализации данной идеи? :)

    В противном случае это рассуждение по негласным правилам форума рискует быть перенесена в хотелки
    Last edited by some_man on Sat Mar 24, 2012 9:08 pm, edited 2 times in total.
  • Стас получает бан на день за флуд и систематическое неправильное написание названия проекта.
    Из хаоса в космос
  • SII wrote:Стас, в нынешнем виде КОС -- свалка костылей, появившися в первую очередь из-за шедеврально талантливого проекта Вилле. Чтобы внедрить что-то новое, надо либо городить очередную порцию костылей, либо переделывать всё с нуля и самым кардинальным образом. Но если уж идти вторым путём, то надо закладывать сразу всё, а не только какие-то части. Другое дело, что реализовать это "всё" сразу не удастся -- но если не предусматривать такую возможность, то в дальнейшем без костылей опять-таки не обойтись.
    И на заметку человеку, которому такие проекты как Колибри на один зуб и он их каждый день с нуля переписывает, на хабре появилась статья в тему Дорабатывать или переписывать
    Позволю себе наглость процитировать кусок текста, хотя все могут прочесть оригинальную статью без регистрации!
    Ситуэйшн №3: чужой код
    Image
    Это самый опасный путь, скользкая, мерзкая и пакостная дорожка. Итак, представьте, что свой студенческий проект вы кое как сдали, свой личный проект забросили (извините, конечно же отложили, чтобы вернуться, когда будет время!).

    И вот, к вам попадает чужой код в 10-15 тысяч строк. Говнокод. По-вашим представлениям. Внедрение обновлений равносильно выстрелу себе в ногу. Переписываем?

    Не торопитесь. Сначала оцените свои возможности. Сколько времени вам потребуется, чтобы это переписать? Как это будет оплачено? Заложено ли нужное время?

    Переписывание чужого кода чревато несколькими проблемами.
    Первая проблема: код, скорее всего, уже внедрен и работает. В этом случае, вам не только нужно будет заново разработать весь его функционал, но и учесть все костыли, на которые наткнулся бывший говнокодер.
    Вторая проблема: вы можете не потянуть проект, начать прокрастинировать, и в конечном итоге, окончательно завалите проект.
    Третья проблема: почему вы так уверены, что вы сами не напишите такой же говнокод?
    И окончание статьи меня вообще порадовало:
    И еще помните, что серьезные люди считают, что переписывание проектов с нуля – это признак непрофессионализма.
    Удачи.
    У меня лично только 2 проекта которые я написал по сути с нуля: KFM и zSea. Зато я несколько чужих программ переписал (не с нуля естественно!) и ядро так помаленьку поковырял. Почему то я не лазал на http://osdev.ru/ и не обсирал чужие проекты. Я же не лазил в их код 9 лет и не могу судить что там говнокод, а что нет. А самое забавное - идеален тот код который ты никому не показал, потому что никто не может найти там ошибок говнокодера.

    Потому я по прежнему утверждаю, что у меня есть триллион баксов и скоро я куплю Эпл.
    (Зря Кирилл похерил тот мой коммент!)
    И попробуйте, блять, это опровергнуть!
  • Марат, вот тебе надо эти батлы со школотой по поводу у кого пиписька длиннее? Мы делаем проект известный во всём мире и поэтому у него полюбому будут критики.
    Короче, не флудить. Тебя это тоже касается.
    Из хаоса в космос
  • Тащемто мистер SII давно как не школота. :mrgreen: Но тролль 99 уровня - Дмитрий Завалишин завидует. :wink: Я кстати тоже завидую - мне бы так доебываться уметь.
  • Я про Стаса. SII наш старый умный и хитрый идеологический противник.
    Из хаоса в космос
  • Дабы разбавить последние нетехнические сообщения техническим - выкладываю документ об APIC и прерываниях в процессорах SandyBridge, надеюсь будет полезным.
    Attachments
    Interrupts overview
    Downloaded 440 times
    Interrupt.ppt (1.27 MiB)
    Sandybridge interrupts
    Downloaded 432 times
  • Leency wrote:Стас получает бан на день за флуд и систематическое неправильное написание названия проекта.
    что то я флуда у него не заметил. он как и все выразил свое мнение. и я бы его поддержал.
  • abcd0081 wrote:
    Leency wrote:Стас получает бан на день за флуд и систематическое неправильное написание названия проекта.
    что то я флуда у него не заметил. он как и все выразил свое мнение. и я бы его поддержал.
    Очень круто поднимать темы которым уже полгода :) Флуд был удалён, наверно, не перечитывал.
    Из хаоса в космос
  • Necromancer 80 lvl
  • Serge wrote:Не понятно, почему завис ASRock M3A770DE. Хороший лог, правильный devices.dat.
    До r3613 обращение из APIC_init к таблице FAT рамдиска приводило к непредсказуемым последствиям, ибо таблица FAT рамдиска на тот момент ещё не была преобразована из 12-бит в 16-бит. Если devices.dat был длиннее 512 байт, то зависание неудивительно и с железом не связано.
    Я это словила по другой причине - в drivers/ появилось много всего, и при отсутствующем devices.dat в таблицу FAT лез уже код обхода папки - с теми же последствиями: на реальной машине ядро стало зависать при загрузке на стадии инициализации APIC. После чего было уже несложно выяснить, в чём дело.
    Сделаем мир лучше!
  • CleverMouse
    Спасибо, это конечно я лажанулся, вызывать load_file до calculatefatchain.