вівторок, 9 червня 2015 р.
вступ 1
в цьому продовженні вступу, вирішив написати трохи про user space'ну частину моєї планованої системи (далі просто - системи, або ОС, або ant , ну тобто, я не робитиму постійно уточнень шодо її планованого статусу, її ненаявности чи неповноти).
це цікаве питання, бо якшо навіть відкинути весь скептицизм шодо можливости написати систему одному чи просто - скептицизм шодо саме моїх можливостей, то всеодно, постає резонне питання: ну гаразд, а які застосування твоя система ганятиме? ти намагатимешся склонувати WinApi в усій його повноті шоб мати можливість виконувати весь той космос Windows'івських програм, як це намагаються робити певні проєкти, чи ти може надумав свій api замутити і, як наслідок, тобі треба тоді ще й весь користувацький простір наповнювати... або створювати екосистему, загукувати так би мовити розробників з усіх країв писати їхні проги під твою ось.
звичайно, шо ні. я не такий наївний, може й наївний, але не настільки. шодо другого варіанту, тобто "свого" api для юзер простору, - це одразу очевидно нереалістичний варіант - жодна найталановитіша й найпрацьовитіша людина не напише ядро і всі системні бібліотеки і всі найпотрібніші юзерські прогамні набори (наскільки талановитий і працьовитий є я, залишимо на осуд майбутнім користувачам). а головне, це не є необхідне шоб дати своїй системі якесь використання. і про це трохи далі. шо ж до першого варіанту, тобто відтворення WinApi, то тут відповідь дешо інша, але в головному - та сама: це нереально і я не маю навіть такого наміру. бо навідміну від тих, хто намагається там "конкурувати" і бути "альтернативою", це просто смішно, я просто люблю Windows, і не хочу нічого конкурувати чи ще шось. я намагаюсь відтворити в своїй системі ті концепції NT, бо мені це просто цікаво. того я не маю жодних релігійних настроїв робити клона на рівні api в тому числі, з практичної ж точки зору - це й нереально.і все просто - то дуже великий і складний набір. але, в своїх планах я маю намір імплементувати певне так би мовити базове ядро WinApi. і це, звичайно робиться, бо цей інтерфейс є для мене звичним, правильним і таким шо логічно вписуватиметься в загальну картину. а оскільки це буде лише базова підмножина, то й імплементувати його буде реалістичніше.
тут я підходю до основної теми цього параграфу (чи як його назвати). це стосується концепції NT, так званих підсистем середовища. саме за допомогою широкої підтримки цієї концепції, я намагатимусь рішити проблему нестачі застосунків для моєї системи.
зараз це бачиться так. буде одна обов'язкова юзерспейсна підсистема (підсистема середовища далі буде скорочено ПС), ця базова ПС, за замовчуванням так би мовити (Default subsystem, dss), вона якраз і базуватиметься на тій базовій підмножині з WinApi про яку я згадував раніше. вона буде доступна завсіди, і всім програмам з різних ПС. за її допомогою планується написати наприклад базовий набір системних утиліт, які формально не будучи частиною ОС, все ж будучи дуже потрібними, будуть частиною дистрибуції. тобто йтимуть як інтегральна частина релізу. це не native api, тобто ntdll, ця, логічно є на рівень нижче. дефолтна підсистема це мій мінімалістчний внесок в юзерспейс. бо я концентруюся на створення ядра.
а от решта, решта це будуть вже наявні, тобто імплементовані інтерфейси, і програми під них. виникає питання: які саме такі інтерфейси наявні, шо вони можуть стати в цій архітектурі повноцінними ПС? ну, читач який розуміє про шо тут ідеться, вже давно здогадався - мова йде про posix. адже імплементації саме цього інтерфейсу є в активному обігу. тобто кажучи коротоко, в користувацькому просторі, я вирішив покластися на posix, шоб спростити собі завдання зробити систему якою ще люди зможуть користуватися ща признеченням. хоч як мій віндовс орієнтований погляд дивиться на цей посикс, але саме він є в доступі, так, шо я можу його адаптувати і відкрити для своєї системи чималий простір програм написаних під нього. відкривши таким чином свою систему користувачам.
тепер, замість створення api, його імплементації, і написання кожної програми під потреби користувача, мені треба "втесати" наявну імплемегтацію posix в рамки ПС моєї системи і втесати - означає серед іншого, зробити так, шоб посиксні програми могли вільно виконуватися на твоїй системі. який це рівень сумісности? рівень вихідних кодів чи може бінарний? :) звичайно перше скоріше, про ефективне підганяння під чиєсь abi, з усіма місцевими фокусами і містикою - це нереалістично. хоча було б цікаво, наприклад зробити можливість пользунам ганяти на системі одразу їхні бінарні програми з лінукса якого небудь. нативно і без компіляції. зараз це бачиться як занадто складне. шо планується як реалістично складне - це брати якусь bsd-ліцензовану libc з компанією, і на їхній базі, вносячи потрібні зміни створювати реалізацію посиксної підсистеми на твою ОС. а далі, вже буде видно чи вимагатимуть окремі програми - я маю на увазі користувацькі програми запиляні під посикс - буде видно чи вимагатимуть вони і як багато якшо так, змін в вихідних кодах. але це реалістичніше за бінарну сумісніть. звичайно, не все буде гладко, бо посикс хоч і мав на меті яку таку портованість, навряд він цього досяг, існує купа несумісностей. ну і знову посикс покриває далеко не все. от я наприклад не уявляю поки, наскільки складно було б перенести під мій посикс такий програмний комплекс як Xorg.
до речі кажучи за графіку. це одна з причин чого я бачу повне відтворення віндовсівського юзерського апі нереалістичним. графіка це дуже цікава штука, це цілий свій космос. але в тому то й справа, шо навіть на рівні елементарної графічної системи це вже непосильний труд якшо ти не концентруєшся тільки на ньому. не кажучи вже про всі ці 3D речі чи відео кодеки. того, наприклад, мені думається, шо я навряд зміг би навіть gdi відтворити. тож, з графікою в мене туго. і покишо моя система - це текстовоорієнтований командний інтерфейс. одним словом - канцоль. :D якшо це все виходитиме, то графіку додаватимуть зацікавлені учасники. кажучи за яких, згадується питання ліцензування. тут нічого ще я не знаю, але шодо посиксної ПС можна сказати - оскільки, як я зазначив я братиму це від інших і воно буде bsd-ліцензоване, то, ясно, шо таким буде і моя посиксна ПС. я не належу до порушників опортуністів.))) ну і тут же проглядається ще дещо - так я не в захваті від gpl, того й балакаю за bsd'шну версію як вибір попри меншу поширеність і, як наслідок, можливу розвиненість, можливо. але вся ця квазірелігійна волокіта мене не цікавить взагалі і мені не хочеться тут це піднімати. я згадав за це для повноти опису, оскільки наче як це було треба уточнити.
отже от це мої думки з приводу частини користувацького простору. є ще сесійний менеджер, і багато чого іншого. сьогодні я торкнувся саме теми ПС. а покишо я намагаюсь розгребтися з стартом в сьомому армі, з безпечним режимом і небезпечним режимом :D вивчаю інструменти, і покишо це ще тільки зародок завантажувача в планах.))) ще ніпрошо писати. але, сподіваюсь діло йтиме як треба. :)
Підписатися на:
Коментарі (Atom)