Несколько вопросов начинающего

Тема в разделе "WASM.BEGINNERS", создана пользователем s3dworld, 6 окт 2010.

  1. max7C4

    max7C4 New Member

    Публикаций:
    0
    Регистрация:
    17 мар 2008
    Сообщения:
    1.203
    s3dworld
    если есть план. и его много, то не скоро. но вообще идея самая правильная.
     
  2. s3dworld

    s3dworld Сергей

    Публикаций:
    0
    Регистрация:
    16 мар 2010
    Сообщения:
    387
    Адрес:
    Ртищево
    Всем доброго дня!

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

    То есть писать на FASM'е по модулям. Но тогда мне нужно будет использовать файловую систему (существующую или придумывать свою).

    Вот мне и интересно, чтобы Вы мне посоветуете по этому поводу: с чего начать, в какую строну смотреть. Возможно свои идеи, какие-то пояснения. буду всему рад.

    Большое спасибо за внимание!
     
  3. max7C4

    max7C4 New Member

    Публикаций:
    0
    Регистрация:
    17 мар 2008
    Сообщения:
    1.203
    s3dworld
    Вас опять пнули не в ту сторону. Если вы хотите дописать ОС в обозримом будущем, то надо все делать по порядку.
    1) нужно составить план написания.
    2) руководствуясь этим планом детализировать все части ОС
    3) планомерно и главное по порядку начать реализацию каждой части ОС при необходимости уточняя ее особенности и разбивая на более мелкие системы
    4) определиться с внешним видом (я не имею ввиду интерфейс пользователя т.к. это дело наживное, имеется ввиду общий неизменный интерфейс или только для данной версии, если хотите, ОС, который должен полностью скрывать какие-либо нюансы от пользовательских приложений и обеспечивать нормальное функционирование при любом раскладе)
    5) полностью документировать интерфейс (очень поможет при реализации)
    6) планомерно начать писать всю необходимую начинку, для правильного функционирования
    только выполнив все по порядку получится что-то сделать. а насчет модульности, то это дело абстрактное. в одном исходнике может быть описано много модулей, и ровно как и наоборот, а может вообще вся система быть в один единый модуль, который в памяти уже сам генерирует все необходимые функции и модули.
     
  4. barmaley57

    barmaley57 New Member

    Публикаций:
    0
    Регистрация:
    10 авг 2009
    Сообщения:
    58
    s3dworld, почитал твои рассуждения и могу посоветовать почитать книгу: Руссинович, Соломон "Внутреннее устройство WINDOWS". Если ты её читал - прочитай еще пару раз!
     
  5. SII

    SII Воин против дзена

    Публикаций:
    0
    Регистрация:
    31 окт 2007
    Сообщения:
    1.483
    Адрес:
    Подмосковье
    max7C4
    Т.е. определиться с API, грубо говоря. С сервисами, которые система предоставляет задачам (не просто список функций и их параметров, а подробное описание, что как действует, что с чем связано и т.п.).ъ

    barmaley57
    И повнимательней. А заодно Танненбаума, Лава, ещё кого-нибудь... Но если чукча не читатель, чукча писатель -- то пущай пишет, всё равно ничего не напишет.
     
  6. Miyamoto

    Miyamoto New Member

    Публикаций:
    0
    Регистрация:
    23 окт 2010
    Сообщения:
    46
    Опять не то советуете...

    Если есть задумка написать ось, то эту задумку надо как можно скорее выкинуть из дурной головы :) Забить короче на все это дело, на написание оси т.е.

    Вместо этого -- читать книги/доки/маны и изучать уже существующее железо/оси.

    imho
     
  7. shm

    shm New Member

    Публикаций:
    0
    Регистрация:
    18 сен 2010
    Сообщения:
    93
    Miyamoto
    Меня в последнее время "добивают" подобного рода сообщения. Можно вообще ничего не писать, ведь все уже кем-то написано... А еще у людей бывают хобби в т.ч. и разработка ОС, кстати это не так бессмысленно, по своему опыту скажу, что многие знания приобретенные за годы разработки своей ОС очень пригодились мне и при разработке прикладных приложений.
    s3dworld
    Да можешь и не закорачиваться над концепциями ядра, начни как я когда-то просто делай потихоньку что получится. Вот мне нравится писать драйверы для железа, особенно современного, я помню пришел в восторг, когда реализовал драйвер для VIA AC97 Audio. Когда услышал первые звуки под управлением своей ОС... Если чего-то по этой теме не получается реализовать можешь мне в ПМ писать, если загляну на этот форум, то обязательно отвечу.
     
  8. max7C4

    max7C4 New Member

    Публикаций:
    0
    Регистрация:
    17 мар 2008
    Сообщения:
    1.203
    shm
    Для этого надо для начала написать начинку. И если
    , то большая доля вероятности, что человек зайдет в тупик (особенно, если будет слушать друзей и кидаться из крайности в крайность). Например стоит почитать посты #319, #358, #366, #376.
    #319
    Ну ни где в документации не сказано, что именно за значение передается через ebx. И также ни где не просят его анализировать столь подробно.
    #358
    Или вот. Распространенная ошибка человека начинающего разбираться в страничном механизме.
    #366
    Ну для не коммерческой ОС это может и не критично, но если сразу не сделать правильно, потом переучивать себя будет очень сложно.
    #376
    Вот опять крайность. Задумался хорошо, но посчитать сейчас (заранее), ну или даже прикинуть - это невозможно.
    s3dworld
    Извините, но я лишь хотел показать, что вам не очень подходит подход shm
    Или это превратится просто в кучу потраченного времени.
     
  9. shm

    shm New Member

    Публикаций:
    0
    Регистрация:
    18 сен 2010
    Сообщения:
    93
    Так-то так конечно, но чтобы придумать основные идеи своей ОС, разработать архитектуру ядра, построить план реализации, и т.п., нужно знать как все это реализуется, какие возникнут сложности, конечно архитектуру, как наиболее эффективно использовать ресурсы и вообще много чего. Вот поэтому сперва на мой взгляд нужно пытаться реализовать какую-то наиболее интересную часть, главное не метаться от одного к одному а довести до конца, а потом другую..., и тогда приобретешь необходимый для проектирования ОС опыт. По опыту разработки своей ОС знаю, что если сразу попытаться спланировать еще до этого не реализованное, может и получится придумать на первый взгляд достаточно хорошую реализацию, но когда реализуешь или еще по ходу разработки понимаешь, что многое, если не все нужно переделывать. Оно конечно может работать и корректно, но ты уже понимаешь что можно сделать намного эффективней. Вообще то я наговорил противоречий, но смысл в том, что не надо пока строить грандиозных планов, а начинать с малого: обдумать, реализовать и переходить к другому и на каком-то этапе подобный план действий появится сам, главное не "дергаться" от одного к другому.
     
  10. max7C4

    max7C4 New Member

    Публикаций:
    0
    Регистрация:
    17 мар 2008
    Сообщения:
    1.203
    shm
    А я и не говорил, что с первого раза надо окончательный вариант придумывать. Достаточно сделать общий набросок, а потом его продумать не имея ничего, реализовать, пойти погулять на поле граблей и с некоторой попытки довести свой план до конца (ну или до минимально желаемого вида, но это уже после кучи неудачных, но работоспособных реализаций).
     
  11. shm

    shm New Member

    Публикаций:
    0
    Регистрация:
    18 сен 2010
    Сообщения:
    93
    s3dworld
    Виртуальная память распространятся и на все системные объекты GDT, IDT, TSS.. Из чего можно сделать вывод, что ненужно выделять физическую память под все таблицы, сегменты и пр. сразу. Лучше зарезервировать под них место в виртуальном адресном пространстве (а также еще много для чего), а по мере необходимости выделять страницы из физического адресного пространства. В качестве функции выделения свободной памяти я рекомендую для начала просто создать битовую карту всей имеющейся ОЗУ по странице (4кб) на бит. И работать очень просто: если бит в карте установлен значит соответствующая страница используется, иначе свободна. Еще нужны процедуры для выделения памяти внутри кучи, но пока реализуй хотя бы по-страничное выделение. И пока особо не заворачивайся идеями эффективного использования памяти, сперва реализуй наиболее простой вариант, а там уже виднее будет.
     
  12. shm

    shm New Member

    Публикаций:
    0
    Регистрация:
    18 сен 2010
    Сообщения:
    93
    Но звучало весьма внушительно
     
  13. s3dworld

    s3dworld Сергей

    Публикаций:
    0
    Регистрация:
    16 мар 2010
    Сообщения:
    387
    Адрес:
    Ртищево
    Всем доброго вечера!

    Давно я не писал. Тут у меня возникла загвоздка не понимая FASM'а. Объясните, пожалуйста, как работать в нём с метками. А то видел в коде делают какие-то: @, @@, @1 и прочее. Что это значит (ну и всё в этом духе)?
     
  14. max7C4

    max7C4 New Member

    Публикаций:
    0
    Регистрация:
    17 мар 2008
    Сообщения:
    1.203
    @@ - локальная метка. До ближайшей локальной метки находящейся до текущей позиции (прыжок назад) можно осуществить переход используя имя @b. Пример
    Код (Text):
    1. @@:
    2. ...
    3. jmp @b
    До ближайшей локальной метки находящейся после текущей позиции (прыжок вперед) можно осуществить переход используя имя @f. Пример
    Код (Text):
    1. jmp @f
    2. ...
    3. @@:
    На счет @ и @1 это что-то новенькое. Покажите пример кода.
     
  15. s3dworld

    s3dworld Сергей

    Публикаций:
    0
    Регистрация:
    16 мар 2010
    Сообщения:
    387
    Адрес:
    Ртищево
    max7C4
    Спасибо! Возможно я что-то напутал. Ну а получается что можно только на ближайшую назад/вперёд (b/f) переходить или можно на не ближайшую (на вторую ближайшую, на третью, ...)?
     
  16. max7C4

    max7C4 New Member

    Публикаций:
    0
    Регистрация:
    17 мар 2008
    Сообщения:
    1.203
    Ну про не ближайшую я по крайней мере не слышал.
     
  17. baldr

    baldr New Member

    Публикаций:
    0
    Регистрация:
    29 апр 2010
    Сообщения:
    327
    В fasm — можно. @@ является корректным именем макроинструкции (а двоеточие и проч. будут её аргументами), Томаш где-то (AKA форум) приводил пример macro @@ для реализации такого варианта.
     
  18. s3dworld

    s3dworld Сергей

    Публикаций:
    0
    Регистрация:
    16 мар 2010
    Сообщения:
    387
    Адрес:
    Ртищево
    Это что, если я напишу так:

    Код (Text):
    1. @@:
    2. @@@:
    3. jmp @@b
    То перейду на инструкцию с @@@?

    А если:

    Код (Text):
    1. @@@:
    2. @@:
    3. jmp @@b
    То перейду снова на @@@?

    А можно ли @@@@@@?
     
  19. baldr

    baldr New Member

    Публикаций:
    0
    Регистрация:
    29 апр 2010
    Сообщения:
    327
    s3dworld,

    Там, вроде, насчёт @b1 и проч. внятно разъяснено.
     
  20. Miyamoto

    Miyamoto New Member

    Публикаций:
    0
    Регистрация:
    23 окт 2010
    Сообщения:
    46
    max7C4
    Простите что вмешиваюсь, но в чем смысл этого изврата?
    Сам видел не раз в чужом коде, но так и не понял -- зачем?
    Чем сие лучше обычных меток, названных по-обычному?