|
11 / 7 / 0
Регистрация: 04.06.2008
Сообщений: 179
|
|
Как создать свою ОС09.11.2008, 10:20. Показов 66642. Ответов 55
Метки нет (Все метки)
0
|
|
| 09.11.2008, 10:20 | |
|
Ответы с готовыми решениями:
55
Как создать свою компоненту???
Как создать свою библиотеку? |
|
683 / 232 / 16
Регистрация: 15.10.2007
Сообщений: 1,246
|
||
| 05.04.2009, 16:23 | ||
|
0
|
||
|
|
||
| 05.04.2009, 22:48 | ||
|
0
|
||
|
683 / 232 / 16
Регистрация: 15.10.2007
Сообщений: 1,246
|
|
| 05.04.2009, 23:17 | |
|
Как раз таки пару элементов
0
|
|
|
|
||
| 05.04.2009, 23:33 | ||
|
Добавлено через 12 минут 55 секунд Ну так, чтоб в лес далеко не ходить, возьмём, к примеру, реализацию атомарных операций (а-ля семафор) - это по сутинабор операций, который должен исполниться обязательно от начала до конца без прерываний. В случае возникновения прерывания результат должен быть аннулирован и переисполнен заново. В языке программирования в принципе это не реализуется, т.к. предполагается, что код из-под языка будет исполняться в контексте операционной системы, которая обеспечивает "сплошную" работу кода (т.е. прерывания прозрачны для кода). А потому ни в одном языке программирования в принципе нет никаких встроенных возможностей для описания подобных конструкций. И это довольно простой случай. А есть ещё миллион сложных, которые на языке не выражаются. С использованием ассемблерных вставок пишется в общем-то малая часть (по покрытию) ядра. Но эта часть самая важная, как правило растёт от начала входа в прерывание и, вообще говоря, работает постоянно. От качества написания этой части зависит качество работы всей ОС. И это далеко не "пара элементов", а на несколько порядков больше
2
|
||
|
Darwin_x86
|
|
| 25.12.2009, 19:14 | |
|
Утопия. Но реально. Важно поставить перед собой цель не затмить все остальные ОС. А написать свою - пусть с одной программой для серфа интернета и все. Зато своя.
Но тут надо столько литературы перелопатить, а главное знать и уметь. Нужен опыт. Если очень хочется, можно использовать готовые ядра и уже на их основе делать ОС. Пусть она будет не полностью своей, но все же. Делать еще один дистрибутив линукса, основанный на дебиане, фряхе или т.д. - надоело. Можно попробовать восстановить проект OpenDarwin - ядро Mac OS X. Проект очень старый (2001 год) - уже закрытый, но шансы у него были, и если бы его не забросили, думаю все бы могло получится. Ядро не монолит. FS - hfs+. Все что требуется, пересобрать ядро, натянуть иксы, и вкорячить собсвенный оконный менеджер, а далее писать софт. Darwin немного отличается от freebsd/openbsd/netbsd/linux/windows - но часть bsd там имеется. Короче, я бы брался за эту ниточку, а то кроме как на асме коды бадяжить для ядра, нужно еще свою ФС создать, и короче лет 5-10 работы, чтобы вышло что-то типа 3.11 8) Сорри что поднял старую тему, просто сабж искал в интеренете и решил отписаться *) |
|
|
5 / 5 / 0
Регистрация: 27.10.2009
Сообщений: 34
|
|
| 01.02.2010, 23:48 | |
|
В принципе, очень многие программируют в Visual Studio. Но компании Trolltech не пришло в голову, что их Qt "нахрен никому не нужна". Понятно, что даже физически написать ВСЮ ОС невозможно, не говоря уже о прикладном ПО, но почему бы не поэкспериментировать с файловыми системами, просто ядром в конце концов? К тому же фанатики-единомышленники всегда найдутся. Мастер не должен думать, кому это надо, он должен просто делать, потому что ему ЭТО НРАВИТСЯ. А будущее всё расставит на свои места.
В конце концов это может быть просто хобби на всю жизнь. А чем лучше тот, кто таскает гири и таким образом "растёт над самим собой"? Каждому своё. Добавлено через 9 минут Впрочем, Торвальдс тоже не думал, что его ядро так обрастет софтом, и что из этого что-то получится. И тоже ковырялся в MINIX Танненбаума (а тот не думал, нахрен она будет нужна Торвальдсу). И громко говорят не о тех сотнях программистов, чьим трудом созданы все дистрибутивы, а именно о Торвальсе (я не пытаюсь уменьшить его заслуги, но всё-таки...)
1
|
|
|
109 / 95 / 9
Регистрация: 19.02.2009
Сообщений: 312
|
|
| 04.02.2010, 14:46 | |
|
Посмотрите исходники MenuetOS (Kolibri). Там все на ASM, но при этом очень доступно написано, ядро очень компактное.
0
|
|
|
56 / 56 / 6
Регистрация: 23.10.2009
Сообщений: 250
|
|
| 04.02.2010, 16:16 | |
|
Woozie, я бы так низко сразу не опускался, а написал что нить на высоком уровне - мелкое, консольное такое что
1 . принимает строковые команды от пользователя(псевдоконсоль) 2 . позволяет выполнять 2 и более операций одновременно\БЕЗ THREAD(реализация псевдомультизадачности) Не по теме: одновременно я имею ввиду что одна и вторая операция трудоёмкие и запущены пользователем 3 . запуск двух одинаковых операций 4 . позволяет доступ 2-м и более операциям к одному ресурсу(уход из тупиковых ситуаций) 5 . позволяет 2- и более приложениям пользоватся одной функцией в памяти(динамические библиотеки) Не по теме:
0
|
|
|
|
|
| 04.02.2010, 16:23 | |
|
> всем кто против того, чтоб Woozie писал свою ОС
С учётом того, что товарищ уже полгода как на форуме не появляется, это уже неактуально А если кому-то всё-таки интересно, то можно немного тут почитать: https://www.cyberforum.ru/post475469.html https://www.cyberforum.ru/post475565.html
1
|
|
|
56 / 56 / 6
Регистрация: 23.10.2009
Сообщений: 250
|
|||
| 04.02.2010, 16:37 | |||
0
|
|||
|
0 / 0 / 0
Регистрация: 14.02.2010
Сообщений: 7
|
|
| 14.02.2010, 03:39 | |
|
Доброго времени суток уважаемые. Извините, но у меня такая же задача - написать ОС. Слава Богу, что ее поставил себе я, а не начальство. Но все же.
Ваши ответы в большинстве своем дают понять, что никто из участников данного обсуждения не занимался разработкой ОС, и поэтому советов то дельных мало. Может я конечно и ошибаюсь, но так это выглядет. Я как раз сейчас занят изучением литературы по данному вопросу. Могу немного разрядить обстановку. По мнению автора "Проектирование операционных систем для малых ЭВМ: пер.с англ. -М.:Мир,1986. -680с." - Кейслер С. - ассемблерный код используется в том и только в том случае, когда необходимо реализовать взаимодействие с аппаратной частью ЭВМ. А это, по словам автора, в любой ОС составляет 1% от общего кода. Немного о себе: уверенно пидалирую на ассемблере, правда для микроконтроллеров. Четко представляю алгоритмизацию любого процесса. На уровне квадратиков на бумаге наверное могу уже и ОСь нарисовать, но вот как это все реализовать в коде. Нет в принципе можно и на асме, но что потом? Потом я начну писать процессы под это свое ядро, и чё? Так на асме и продолжать? Для тех у кого слабые нервы поясняю. Желаемая ОС не будет иметь такого понятия как виртуальная память - это я исключил сразу. Процессов динамически создавать тоже не надо, нужны только потоки (нити) работающие в одном адресном пространстве - вроде тоже облегчает задачу. Наверное единственное над чем придется помозговать - это планировщик процессорного времени - шедулер или как хотите его называйте. Реализация планируется на базе ARM архитектуры. 7,9,10 или 11 - на данный момент трудно оценить, но наличие требования "памяти должно быть много, ну хотя бы 1Гб" просто вынуждает смотреть в сторону 11-х. А по-сути решение должно быть черным ящиком - сервером, который выполняет определенные функции. Никакого ГУЙя, никаких ИКСов. В крайнем случае - терминал. Собственно о чем это я. Ах да. КАК ПИСАТЬ НА СИ, ПРИ ЭТОМ ПОЛНОСТЬЮ ВЛАДЕТЬ ПРОЦЕССОМ ПОСТРОЕНИЯ ПРИЛОЖЕНИЯ КАК НА АСМЕ? Например как я на Сях буду реализовывать стеки для каждого процесса и следить что бы они не переполнились без всяких там сегментов и страниц? Настроить таймер, считать тики, передавать управление потокам, менять контекст, организовать очереди сообщений, семафоры - это понятнее как то для меня. Но некоторые вещи я пока видимо не готов понять. Если кто участвовал в подобном г... - дайте знать плиз.
0
|
|
|
|
||||
| 14.02.2010, 18:35 | ||||
|
0
|
||||
|
0 / 0 / 0
Регистрация: 14.02.2010
Сообщений: 7
|
||||
| 15.02.2010, 03:39 | ||||
|
Спасибо за ответ.
0
|
||||
|
|
||
| 15.02.2010, 20:10 | ||
|
Добавлено через 7 часов 36 минут Хотя я начинаю догадываться, что тебе нужно. Тебе нужно просто заставить на железке работать некоторый сервер. При этом это будет единственная задача. Таким образом, программа-сервер по сути является встроенной в ОС. Правда всё это дело уже сложно называть словом ОС, но тем не менее. Т.е. это будет ОС, ядро которой выполняет роль сервера. При этом в процессе работы будут рождаться дополнительные потоки. Файловая система не нужна. Возможно, будет дополнительный поток, обеспечивающий работу терминала (который может быть либо консолью, либо вообще реализован через порт ввода-вывода или сеть) - т.е. некое подобие shell, но тоже встроенное в ядро. При такой постановке задачи овчинка действительно стОит выделки. Система в момент отладки будет нестабильной, но это компенсируется простотой Собственно, примерно такая же постановка задачи в качестве первых шагов ставилась мною по ссылкам из 29-го поста
1
|
||
|
1261 / 799 / 108
Регистрация: 16.09.2009
Сообщений: 2,010
|
||
| 15.02.2010, 20:15 | ||
0
|
||
|
0 / 0 / 0
Регистрация: 14.02.2010
Сообщений: 7
|
||
| 16.02.2010, 02:30 | ||
|
Спасибо за ссылочку - дельная статья. Я тут не сложу в голове 2+2. Подскажите если есть возможность. Когда я в едином адресном пространстве для потоков выделяю области памяти под их стеки. Как обеспечить НЕпереполняемость стека? - перед каждым PUSH проверку делать, что ли?
0
|
||
|
|
|
| 16.02.2010, 09:55 | |
|
На всех современных процессорах память реализована страничным образом. Поэтому выходы за границу стека контролируются очень просто - под стэк отводится нужное количество страниц памяти. Если мы залетаем в неразмеченную страницу, то происходит прерывание, уход в ОС и там уже делаются все проверки. Но это работает в том случае, когда включен механизм виртуальной адресации. Работает ли это при физической адресации - я не знаю (даже теоретически не знаю, потому как никто таким образом не работает, хотя подозреваю, что для физической памяти такие механизмы НЕ должны работать).
Черезж..ным программным способом можно делать так. Если ты пишешь программу на языке (например, Си), то стековое пространство для каждой процедуры выделает компилятор в прологе процедуры. Поэтому в начале каждой процедуры можно делать ассемблерную вставку, которая щупает stack pointer и проверяет его значение на валидность. Это хоть как-то будет работать при условии, что в процессе работы процедуры не будет динамического выделения стека (например, alloca или ассемблерная вставка, которая выделает стековое пространство)
0
|
|
|
0 / 0 / 0
Регистрация: 14.02.2010
Сообщений: 7
|
||
| 23.02.2010, 12:50 | ||
|
Короче, переключать процессы становится в принципе очень накладно. А поскольку у меня предполагается один процесс, то это для меня избыточно. А со стеком мне тут посоветовали решение, применяемое в ОС реального времени (RTOS). В частности, в ThreadX. Решение красивейшее: В дальнюю границу стека записывают какое-то, наперед известное, число. И шедулер при переключении контекста проверяет это число на соответствие. Если не совпадает - значит стек переполнился. Ну а дальше по ситуации. Лично мне такое решение очень понравилось.
0
|
||
|
|
|
| 23.02.2010, 13:12 | |
|
С контролем стека через guard (запись конце стека) - думаю, сам понимаешь, что в общем случае решение сопливое и далеко не на 100% надёжное: эффект будет давать только при отсутствии программерских ошибок в коде потока и то не всегда
0
|
|
|
0 / 0 / 0
Регистрация: 14.02.2010
Сообщений: 7
|
|
| 25.02.2010, 01:04 | |
|
Да, согласен. Но пока это наверное оптимальное решение. В общем пора наверно от теории переходить к коду, по крайней мере в симуляторе поглядеть как оно там будет. А то книг уже начитался просто кошмар, а ни строчки кода пока не написал :-)
По мере реализации будут конечно возникать проблемы - Буду задавать вопросы. Благодарю за отзывчивость.
0
|
|
| 25.02.2010, 01:04 | |
|
Помогаю со студенческими работами здесь
40
Как создать свою подпрограмму ? Как создать свою БД на Java? как создать свою кодировку
Как создать свою функцию? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут.
В век Веб все очень привыкли к дизайну Single-Page-Application .
Быстренько разберем подход "на фреймах".
Мы делаем одну. . .
|