Создадим О/С (перемешено из форума "Операционные системы")
Подключайтесь к созданию новой мультизадачной операционной системы!
[email]gladkih@hot.ee[/email]
Дык, ха! Раз уж на то пошло, то я сам не люблю ни Си, ни остальные языки. Мало того, мне и камни интеловские не по душе, всмысле, сама релизация работы ядра. Не посчитайте меня выскочкой, решившим бросить камень в огород старательных людей, занимающихся проблемой написания ОСи на разных языках. Просто это так кажется лично мне. Может, я и себе на уме, как говорится. :) А ругаться лучше не надо.
А Фортран с больших машин пришел :)
А Фортран с больших машин пришел :)
С первых комбайнеров необъятного поля битовых творений, так сказать. Что ж, вечная слава ему. :D
Честно сказать, почему - сам не знаю. Знаю, что в Windows ограничение на размер процесса составляет 2 гига, а в Linux - 2.5. Сколько сам не искал - нигде не написано в чем прикол.
Эх вы, что тут думать. Просто остальные 1.5-2 гб занимает ядро и сервисы ОС. Если все это инкапсулировать от сегмента процесса, то получаться такие тормоза, что эффект будет только отрицательный. Тем более все равно полностью чистый 4 гб сегмент хоть как не получиться сделать. Где же хранить IDT, GDT, LDT,TSS (или если переключение программно, то процедуры переключения)? Если так сделать, то приходилось бы при вызове какой-нить функции ОС выполнять ее в новой задаче со своим каталогом страниц и т.д. Сами знаете, какие бы тормоза получились.
Нет, не хотел бы ПОКА. Линукс объявил, что его минреки - 386, я тоже хочу как можно менее треб. к мощности вычислительных ресурсов систему сделать.
Люди, у кого есть 386 компы(если таковые найдуться) - радуйтесь! Скоро будете новую ОС ставить! А если серьёзно - то самые распространённые компы сейчас - Pentium II - III. Под них оптимизировать надо совсем по другому, в том числе использовать все их команды, кроме SSE.
(их нет на PII).
Если не будет страниц - то у тебя память управляться будет как в MS-DOS. Вот допустим процесс выделяет память, что мешает создать в памяти структуру, в которой указано, какие параграфы(16 байт) заняты, а какие свободны?
А если выделяемая память допустим 5kb - то для первой страницы такая структура вообще не нужна, т.к. она полностью занята. А где-нибудя в памяти хранить структуру, онисывающую занятость всех страниц. Именно так я и хотел в своей ОС сделать. Надо бы продолжить её писать, чтобы у тебя конкуренция была, а она как известно улучшает качество.
Теперь про архитектуру. То что не будет страниц - это большой минус, будет хорошо тормозить
и не будет достаточной защиты.
Да... Только все наооборот :) Сегменты обеспечивают 4 уровня защиты, страницы - 2. А отказ от страниц ликвидирует лишний шаг преобразования адреса. Единственный серьезный недостаток страничной адресации - именно замедление обращений к памяти.
И причём тут неполноценное использование памяти? Что, нельзя полностью со страницами использовать?
Можно и даже нужно :)
в ядре должны быть только функции, только не вздумай вызывать из по прерываниям, типа int 21h. Это очень медленно.
Совсем не медленно, а даже очень быстро :) Но разница с другим методом (jmp xxxx:yyyyyyyy, где xxxx-селектор ядреного call gate) - минимальная.
И вообще надо сначало всё продумать, а то будет как в Menuet, где весь интерфейс тормозит намного больше, чем в Windows и Linux, хотя там всё написано на асме.
Наконец-то на свет понемногу рождается горькая истина, о любители асма :)
Эх вы, что тут думать. Просто остальные 1.5-2 гб занимает ядро и сервисы ОС. Если все это инкапсулировать от сегмента процесса, то получаться такие тормоза, что эффект будет только отрицательный. Тем более все равно полностью чистый 4 гб сегмент хоть как не получиться сделать. Где же хранить IDT, GDT, LDT,TSS (или если переключение программно, то процедуры переключения)? Если так сделать, то приходилось бы при вызове какой-нить функции ОС выполнять ее в новой задаче со своим каталогом страниц и т.д. Сами знаете, какие бы тормоза получились.
Я, в общем, так и думал, что остаток в 1.5-2 гига используется самим ядром и задачей для служебных целей, но не предполагал, что столько много. Ну, раз так, то и на том спасибо!
Наконец-то на свет понемногу рождается горькая истина, о любители асма :)
И на чем же писать тогда? Кажется мне, что тут надо крепко подумать... 8)
Бесящих меня множество. Извини, я не хочу об этом говорить - я однажды поднатужился и написал примерно десять страниц недостатков, но тот файл рухнул. Даю слово, я б рад, но уже и здоровье не то, и нервы не те... :) Шучу, но честно - просто лень спорить - об этом достаточно много уже сказано.
Вобще ИМХО глупо ненавидеть какой-то язык, только потому что он не нравится своей сложностью. Я знаю приличное количество совсем разных языков и они все мне нравятся - каждый по своему.
Я согласен, что некоторые компиляторы могут генерить код лучше чем я. И я б писал на таком языке. Но вы предлагаете Си, а я с ним не в ладах.
У меня на компе валяется "Руководства полного идиота по программированию на языке Си" (сам не читал, но говорят понятно все объясняется), может на мыло тебе кинуть? :)
То, что у меня в ядре, я тоже написал за два пол-выходных. Загрузчик - за два дня. Остальное время думал. Ну не тормоз я, обдумывал тщательно.
И у меня ничего не глючит - ошибку-то я нашел.
Кстати, серьезно я ее искал тоже два пол-выходных.
Я бы писал быстро, но времени нет. Не то что бы нет, просто устаю так, что сидеть перед монитором не хочется.
Хмм время на создание безвкусной страницы и сидение в форумах, отстаивая интересы асма у тебя есть... А вот делом заниматься - так устаешь сразу? :) Сидел бы тихо, писал свою ось, а потом как что-то вырисовываться начало, то и сообщил бы всему миру. Ты же надеешся найти тех кто за тебя все сделает, а сам будешь им объяснять как хорош асм и фортран :) Не выйдет...
А что, я должен всех в мире знать. Ну не пересеклись мой путь и эта книга. И я б рад почитать, но некгде достать.
Ты даже не представляешь, как мало ты еще знаешь... :)
А ты знаешь хоть что-то о Фортране? Нет. Ты на нем программировал? Нет. А если да, то на каких?
Только на МСовском?
А ты хоть что-то слышал о таких языках как Lisp, Haskell, O'Caml, Perl, Smalltalk, Python etc. ? Или твои познания ограничиваются только асмом, фортраном, бейсиком и русским? :)
И вобще сегодня гордиться знанием фортрана по меньшей мере странно.
А какой толщины тома? Книги такой толщины, как среднее между "Три мушкетера" и "Аппаратные средства IBM PC" М. Гука я читал за три дня - и это еще не очень напрягаясь...
Но это ведь были художественные книги, я только сейчас скачал третий том уважаемого автора. Самая главная проблема - моих математических знаний не хватит, придется пополнять. Но за месяц-два, я думаю ее одолею.
Я теперь тоже знаю о Кнуте. А если б я учился в институте на кафедре информатики, и не такие б погонялы :) :D знал.
Спасибочки за наставление на путь истинный :) Может, кто подскажет, где скачать первые два тома?
Угу за два месяца... Да ты его за год не одолеешь :) Такие книги требуют долгого и вдумчивого прочтения... Кто знает, может если бы Билл Гейтс так не торопился, Windows была бы лучше :D
И скоро он допишет 4 том (в трех книгах :) ) Так что еще читать и читать...
Кстати интересно а в каком формате ты его скачал? Неужели простым текстом? Просто не могу представить как там будут выглядеть всякие формулы и таблицы. Или в TeX?
Еще: насчет математических знаний - весьма рекомендую "Конкретную математику" (один из авторов он же).
И на чем же писать тогда? Кажется мне, что тут надо крепко подумать... 8)
Вот-вот, именно это и является одной из самых главных проблем программирования. Один умный человек (к сожалению не помню кто) сказал, что мастерство программиста определяется не только (и не столько) тем, насколько хорошо он знает конкретный язык, а в первую очередь тем, насколько хорошо он подбирает язык для решения конкретной задачи.
И еще - в составе того же gcc есть твой любимый Фортран - еще один повод перейти на Linux :D
Кстати, а fortran 77 означает, что стандарт 1977 года?
Если не будет страниц - то у тебя память управляться будет как в MS-DOS. Вот допустим процесс выделяет память, что мешает создать в памяти структуру, в которой указано, какие параграфы(16 байт) заняты, а какие свободны?
А если выделяемая память допустим 5kb - то для первой страницы такая структура вообще не нужна, т.к. она полностью занята. А где-нибудя в памяти хранить структуру, онисывающую занятость всех страниц. Именно так я и хотел в своей ОС сделать. Надо бы продолжить её писать, чтобы у тебя конкуренция была, а она как известно улучшает качество.
Что-то ты перемудрил. Я говорил о том, что не хочется выделять 4 Кб, если надо всего пару байт. Просто при учете страниц надо что-то знать о каждой, а при моем методе хранится информация только по свободной памяти. Если куски смежные, происходит слияние.
Вобще ИМХО глупо ненавидеть какой-то язык, только потому что он не нравится своей сложностью. Я знаю приличное количество совсем разных языков и они все мне нравятся - каждый по своему.
Ну, зачем же так сразу. Я не люблю Си не потому, что не знаю о нем почти ничего.
Но некоторые вещи меня просто шокировали. Кстати, я думаю непопулярность Фортрана объясняется именно тем, что он многим непонятен по тем или иным причинам. Мне нравятся все языки понемногу, кроме Си и ему подобных.
У меня на компе валяется "Руководства полного идиота по программированию на языке Си" (сам не читал, но говорят понятно все объясняется), может на мыло тебе кинуть? :)
У меня достаточно хороших руководств. Спасибо за оценку "полный идиот". Приятно слышать что-то хорошее.
Хмм время на создание безвкусной страницы
На вкус и на цвет товарищей нет.
и сидение в форумах, отстаивая интересы асма у тебя есть... А вот делом заниматься - так устаешь сразу? :)
Сейчас я зашел на форум, чтобы ответить на вопросы относительно О/С. А вижу только разные помои в мой адрес. Не буду ж я молчать, когда меня называют полным идиотом. Получается, что написав это сообщение, ты тоже отнял мое время, которое я бы мог направить на работу с О/С.
Сидел бы тихо, писал свою ось, а потом как что-то вырисовываться начало, то и сообщил бы всему миру.
Ты же надеешся найти тех кто за тебя все сделает, а сам будешь им объяснять как хорош асм и фортран :) Не выйдет...
Я надеялся найти здесь помощь, но приобрел только врагов. Многие начинания от этого и завершаются неудачей.
Ты даже не представляешь, как мало ты еще знаешь... :)
Я и не говорю, что я - кладезь премудрости. Просто я требую немного уважения, чтобы я сам мог решать, насколько много я знаю, и чтоб разные личночти не называли меня полным идиотом.
А ты хоть что-то слышал о таких языках как Lisp, Haskell, O'Caml, Perl, Smalltalk, Python etc. ? Или твои познания ограничиваются только асмом, фортраном, бейсиком и русским? :)
Во-первых, Бейсиком, во-вторых слышал.
И вобще сегодня гордиться знанием фортрана по меньшей мере странно.
По меньшей мере, знание никогда не бывают лишними.
Угу за два месяца... Да ты его за год не одолеешь :) Такие книги требуют долгого и вдумчивого прочтения... Кто знает, может если бы Билл Гейтс так не торопился, Windows была бы лучше :D
Согласен. Я дал абсолютную оценку времени. Естественно, это займет больше времени, ведь это не единственное занятие.
И скоро он допишет 4 том (в трех книгах :) ) Так что еще читать и читать...
Хорошо, а когда выйдет?
Кстати интересно а в каком формате ты его скачал? Неужели простым текстом? Просто не могу представить как там будут выглядеть всякие формулы и таблицы. Или в TeX?
Был набран в TeX, затем переведен в PDF все формулы отлично сохранились.
Скачал на sources.ru, по-моему.
Вот-вот, именно это и является одной из самых главных проблем программирования. Один умный человек (к сожалению не помню кто) сказал, что мастерство программиста определяется не только (и не столько) тем, насколько хорошо он знает конкретный язык, а в первую очередь тем, насколько хорошо он подбирает язык для решения конкретной задачи.
Кстати, очень хорошее изречение.
И еще - в составе того же gcc есть твой любимый Фортран - еще один повод перейти на Linux :D
Я в курсе.
Кстати, а fortran 77 означает, что стандарт 1977 года?
Да. Фортран создали в 1957 году. Стало появляться очень много вариаций(это не значит, что не было стандартов языка, они, конечно, были, но производители компиляторов их не придерживались), возникла потребность в ОБЯЗАТЕЛЬНОМ для исполнения стандарте, который был создан и назван Фортран I,II,III,IV, затем - в 1966,(F66, IV),1977(F77), 1990(F90),1995(F95). А что? :)
Давайте отложим эту ругань до лучших времен, вернемся к системе. Я не буду отрицательно отзываться о Си, а вы не будете о нем упоминать(а следовательно, провоцировать)и называть меня идиотом, хорошо? Тогда ладно.
Но, как я уже говорил, нет схожих вкусов.
Когда я читаю программы других, думаю "Как он писал? Руки б ему пообрывать..."
Ты, наверно, то же думаешь обо мне, да? Но мне-то мои программы кажутся наиболее удобочитаемыми. Есть повод написать программу-перекодировщик стилей программ.
:-)
Эх вы, что тут думать. Просто остальные 1.5-2 гб занимает ядро и сервисы ОС. Если все это инкапсулировать от сегмента процесса, то получаться такие тормоза, что эффект будет только отрицательный. Тем более все равно полностью чистый 4 гб сегмент хоть как не получиться сделать. Где же хранить IDT, GDT, LDT,TSS (или если переключение программно, то процедуры переключения)? Если так сделать, то приходилось бы при вызове какой-нить функции ОС выполнять ее в новой задаче со своим каталогом страниц и т.д. Сами знаете, какие бы тормоза получились.
Спасибо, уже сам дошел :) в субботу посидел над работой с памятью и понял это.
По поводу IDT, GDT, LDT и TSS - это совсем немного, и можно поместить в тройку страниц.
Принципиально я не вижу проблем, в использовании 4Gb-8*Page для пользовательского процесса. Единственное что, добавляется еще одна перезагрузка CR3 регистра, при каждом вызове ядра. Естественно это будет влиять на производительность. Но хочу заметить, что при переключении потоков находящихся в разных процессах, регистр CR3 все равно будет перегружаться.
Надо более подробно посмотреть на управление TLB, да и посчитать эффект. Может потери будут и не такие большие.
Кстати, RelB. Ты все время говоришь, что мои программы неудобочитаемы.
Но, как я уже говорил, нет схожих вкусов.
Когда я читаю программы других, думаю "Как он писал? Руки б ему пообрывать..."
Ты, наверно, то же думаешь обо мне, да? Но мне-то мои программы кажутся наиболее удобочитаемыми. Есть повод написать программу-перекодировщик стилей программ.
Сильно напоминает єто мне мое поведение в 8-м классе -- "Пофиг все стандарты, я их сам буду устанавливать!". Но это, по меньшей мере, не серьёзно! Есть вещи общепризнанные и кое с чем надо бы мириться... Так что, советую согласовать свои "вкусы" со стандартами(к сайту это тоже относиться..)
По поводу С/С++ -- как можно что-то говорить о этих языках, не зная их? Именно С/С++ -- величайшие языки нашего времени, по крайней мере в области системного программирования! Разве ты думаешь, что Microsoft тебя глупее и поэтому свои оси пишут на С++? Сомневаюсь...
О выделении памяти. Память выделяется страницами на уровне ОС. И это ДОЛЖНО БЫТЬ ТАК. Почему? Ядро не должно манипулировать с данными меньше страницы, т. к. если функции выделения произвольных областей памяти будут в нем, то для отведения каждых "2-х байт" прикладной процесс будет обращатся к ядру -- сохранение РОН(Регистров Общего Назначения), переключение стека, переключение уровня привилегий... МЕДЛЕННО. А внутри ядра можеш использовать свой какой-то HeapManager, желательно основаный на SLAB CACHE(Если слышал о таком :)... Еще раз повторяю -- ИЗУЧАЙ СУЩЕСТВУЮЩИЕ И РЕАЛЬНО ДЕЙСТВУЮЩИЕ ОС(не типа MenuetOS)!(НО ТУТ БЕЗ С/С++ НИКУДА...)
И что это значит?
Сильно напоминает єто мне мое поведение в 8-м классе -- "Пофиг все стандарты, я их сам буду устанавливать!". Но это, по меньшей мере, не серьёзно! Есть вещи общепризнанные и кое с чем надо бы мириться... Так что, советую согласовать свои "вкусы" со стандартами(к сайту это тоже относиться..)
По поводу С/С++ -- как можно что-то говорить о этих языках, не зная их? Именно С/С++ -- величайшие языки нашего времени, по крайней мере в области системного программирования! Разве ты думаешь, что Microsoft тебя глупее и поэтому свои оси пишут на С++? Сомневаюсь...
О выделении памяти. Память выделяется страницами на уровне ОС. И это ДОЛЖНО БЫТЬ ТАК. Почему? Ядро не должно манипулировать с данными меньше страницы, т. к. если функции выделения произвольных областей памяти будут в нем, то для отведения каждых "2-х байт" прикладной процесс будет обращатся к ядру -- сохранение РОН(Регистров Общего Назначения), переключение стека, переключение уровня привилегий... МЕДЛЕННО. А внутри ядра можеш использовать свой какой-то HeapManager, желательно основаный на SLAB CACHE(Если слышал о таком :)... Еще раз повторяю -- ИЗУЧАЙ СУЩЕСТВУЮЩИЕ И РЕАЛЬНО ДЕЙСТВУЮЩИЕ ОС(не типа MenuetOS)!(НО ТУТ БЕЗ С/С++ НИКУДА...)
Да ладно уже выпендриваться и изображать из себя гуру в области терминологии и объяснения элементарных вещей. Пусть каждый делает то, что он считает правильным; каждый пусть пишет так, как ему нравиться и как ему более понятно: эта тема была специально открыта для обмена идеами, а тут, откровенно говоря, какая-то ругань и выяснение отношений.
И вообще она ещё развивается ?
Какой смысл в этом отсчёте ? этож не ОС а просто програмка...этож можно такую за 5 минут написать...или у вас сама система засекречена ?
Давайте лучше напишем драйвер для вашей ФС под винду...будет больше пользы если вы так считаете что, она быстрее фат и нтфс......а вы проверяли её на деле ?
А внутри ядра можеш использовать свой какой-то HeapManager, желательно основаный на SLAB CACHE(Если слышал о таком :)
И что это значит?
Ну это смотря что ты не понял.
"Внутри ядра" это означает "для внутренних нужд ядра", т.е. для хранения своих динамически генерируемых данных(к примеру, сегменты состояния задач, дескрипторы областей виртуальной памяти, ...).
А SLAB CACHE... Это система выделения памяти разработанная специально для разных ядер UNIX, которая позволяет очень быстро выделять память и основана на выделении памяти из куч объектов фиксированного размера, это дает возможность фактически избежать фрагментации памяти при выделении.
Если интересно могу прислать исходник...
ВСЕ, ВСЕ, ВСЕ! ВЫКЛАДЫВАЮ ОЧЧЧЧЧЕНЬ ПОЛЕЗНУЮ КНИГУ. ЧИТАЙТЕ НАЗДОРОВЬЕ!
P. S. ТЕРМИНОЛОГИЯ - это очень важная часть любой науки и знать и использовать ее надо, так как именно термины определяют понятия наилучшим образом! И не строю я из себя гуру...
А внутри ядра можеш использовать свой какой-то HeapManager, желательно основаный на SLAB CACHE(Если слышал о таком :)
И что это значит?
Ну это смотря что ты не понял.
"Внутри ядра" это означает "для внутренних нужд ядра", т.е. для хранения своих динамически генерируемых данных(к примеру, сегменты состояния задач, дескрипторы областей виртуальной памяти, ...).
А SLAB CACHE... Это система выделения памяти разработанная специально для разных ядер UNIX, которая позволяет очень быстро выделять память и основана на выделении памяти из куч объектов фиксированного размера, это дает возможность фактически избежать фрагментации памяти при выделении.
Если интересно могу прислать исходник...
P. S. ТЕРМИНОЛОГИЯ - это очень важная часть любой науки и знать и использовать ее надо, так как именно термины определяют понятия наилучшим образом! И не строю я из себя гуру...
...P. S. ТЕРМИНОЛОГИЯ - это очень важная часть любой науки и знать и использовать ее надо, так как именно термины определяют понятия наилучшим образом! И не строю я из себя гуру...
То, что не строишь - это хорошо. Про терминологию правильно, только не совсем уместно по отношению к моим словам. Ну ладно. А архив чего-то не открывается... Жаль. Может, еще раз выльешь?
Ну это смотря что ты не понял.
"Внутри ядра" это означает "для внутренних нужд ядра", т.е. для хранения своих динамически генерируемых данных(к примеру, сегменты состояния задач, дескрипторы областей виртуальной памяти, ...).
А SLAB CACHE... Это система выделения памяти разработанная специально для разных ядер UNIX, которая позволяет очень быстро выделять память и основана на выделении памяти из куч объектов фиксированного размера, это дает возможность фактически избежать фрагментации памяти при выделении.
Если интересно могу прислать исходник...
Угу
[email]Edmond@wasm.ru[/email]
У меня так же есть система УПРАВЛЕНИЕМ ПАМЯТЬЮ.
Но с UNIX я не знаком
...
А SLAB CACHE... Это система выделения памяти разработанная специально для разных ядер UNIX
...
Интересно, я и не знал, что этот механизм выделения памяти, был специально разработан для UNIX-а :)
А фрагментация и в нем тоже есть. И есть еще пара маленьких минусов. Возможно (не утверждаю и не опровергаю) для платформ где нет жестких ограничений на память, это хороший механизм. А для различных мобильных устройств, не очень.
Удачи
Valery
Я расчитываю на вашу помощь!!! Присоединяйтесь Все!!! Все на CREATOS.NAROD.RU
Так не делают, один форум сделал и ничего больше нет...
Начал бы хоть что-то сам делать, описания бы какие разместил...А то приходите и пишите...
Так не делают, один форум сделал и ничего больше нет...
Начал бы хоть что-то сам делать, описания бы какие разместил...А то приходите и пишите...
Ну ты блин ваще посмотри на дату создания и подумай много можно сделать за один день???
Давайте не будем геморится.
Так как создано дофига тем - все весят в разных, то для всех надо создать одну тему. Потом все желающие пишут месаги- и только кто хочет быть в команде!!! Создание сайта - обсудим потом когда точно можно будет сказать - вот команда!!! Понятно!!!! Покка поспокойнее. Если все начнут что-то делать по своему- ничего не получится!!!
Давайте пока накапливать идеи, а потом уже после формирования группы поговорим о всех деталях!!!
Ноя до лета точно не смогу ничем заняться...времени нет
Как там MN-DOS? :)
все забили?