|
|
|
Несколько советов молодым программистам, решившим написать свою операционную систему28.03.2014, 14:48. Показов 3001. Ответов 0
Метки нет (Все метки)
Случайно наткнулся на статью, которая, как мне кажется, должна оказаться полезной начинающим программистам, "выучившим" ассемблер. Ссылка на оригинал - http://habrahabr.ru/post/113219/.
Здравствуйте, уважаемые читатели! Писали ли вы когда нибудь операционную систему? Вероятно, каждый десятый программист, заглянув лет на 10-20 назад и вспомнив начало своей карьеры, ответит — да. Господа, эта статья не для вас. Это статья для тех, кто верит в свои силы и полон надежд завоевать мир. Я постараюсь предостеречь вас от некоторых характерных ошибок. Так повелось, что среди молодёжи считается крутым использовать ассемблер. Большинство молодых программистов, начавших изучать ассемблер, хотят попробовать свои силы в написании вируса или операционной системы. По статистике, более 90% проектов написания ОС на ассемблере, заканчиваются написанием начального загрузчика. Человек получает опыт, понимает, с чем ему предстоит столкнуться в будущем, и постепенно его интерес угасает. Что ж, отсутствие результата — тоже результат. Во всяком случае знание ассемблера может пригодиться в будущей жизни, например, в области встраиваемых решений. Мой совет будет простой: решили написать свою ОС — возьмите чужой загрузчик. Даже при худшем раскладе вы окажетесь впереди тех 90%, кто остановится на загрузчике. Пойдём дальше. Загрузчик есть, пишем ядро. Опять же, не думая о проектировании, юные программисты вооружаются книжками о защищённом режиме процессора 80386 (подставьте Pentium Quad Core, смысл не изменится) и начинают играться с селекторами, дескрипторами, страницами виртуально памяти и т.д. и т.п. Как результат — их программа действительно работает в защищённом режиме и, возможно, переключает задачи по прерыванию от таймера. Хороший момент, чтобы набраться опыта и потерять интерес к проекту или запутаться в ассемблерном коде. Как быть? Хороший момент остановиться и пользуясь полученным опытом начать проектировать систему. Таким образом вы перейдёте на третий уровень. Итак, вы получили бесценный опыт и поняли как работает железо. Что делать дальше? Мало знать как работает железо. Чтобы не изобретать велосипед, имеет смысл изучить как работают современные операционные системы. Книжки Эндрю Таненбаума вам в помощь. Категорически не советую браться за реализацию графического оконного интерфейса — кнопка «Пуск» и окошки произведут впечатление лишь на неискушённого пользователя. Любой специалист знает, что главная задача операционной системы — управление памятью и процессами. Спроектируйте, каким образом будут создаваться, обслуживаться и (что немаловажно) освобождаться процессы. Не забывайте о памяти — продумайте, каким образом будет выделяться и освобождаться память. И только когда вы будете чётко представлять, каким образом будет реализовано управление процессами и памятью, можно приступать к кодированию. Следующий этап, пожалуй, самый важный. Даже если вам удалось спроектировать систему, управляющую процессором и памятью, это не значит, что система представляет практический интерес. Есть небольшая вероятность, что вашей работой заинтересуются разработчики встраиваемых систем. Но много ли вам известно встраиваемых систем, основанных на архитектуре х86? Вот и я том. На этой стадии проекта вам опять безумно захочется написать красивый графический интерфейс. Рано. Ещё рано. Самое время реализовать файловую систему. Для любой операционной системы, какой бы новой и прогрессивной она не была, файловая система более важна чем графический интерфейс. Даже самая современная Windows выросла из надстройки, которая запускалась поверх текстовой MS-DOS. Написав файловую систему, вы столкнётесь с новой проблемой — какой бы хорошей и инновационной не была бы ваша система, без программного обеспечения она не интересна ни одному человеку, кроме автора. Где же взять программы для вашей хорошей системы? Написать самому? Можете попробовать, если вы супермен. Попросить друзей и знакомых? Наивные мысли — каждый занят своими проблемами. Выход один — использовать уже написанное программное обеспечение. И очень хорошо, если еще на этапе проектирования вы подумали об этой возможности и заложили совместимость с каким либо из существующих стандартов. Учитывать вышеприведённые советы необходимо, но это не значит, что следование им приведёт к успеху. Это лишь минимум, без которого не стоит браться за дело.
3
|
|
| 28.03.2014, 14:48 | |
|
Ответы с готовыми решениями:
0
Сделать свою операционную систему для ноутбука Как сделать свою операционную систему не используя ассемблер
|
| 28.03.2014, 14:48 | |
|
Помогаю со студенческими работами здесь
1
Разработать свою операционную систему, включая загрузчик, менеджер памяти Можно ли написать операционную систему на c# с использованием ассемблера? Написать свою систему счисления Собираю свою первую самостоятельную сборку. Прошу советов Не включить операционную систему Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд.
Даже если у вас. . .
|
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает
монорепозиторий в котором находятся все исходники.
При создании нового решения, мы просто добавляем нужные проекты
и имеем. . .
|
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение:
В этой книге («Подход, основанный на вариантах использования») Ивар утверждает,
что архитектура программного обеспечения — это
структуры,. . .
|
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога
Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
|
|
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip
На первой гифке отладочные линии отключены, а на второй включены:. . .
|
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем.
. . .
|
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
|
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
|