NEvite někdo o zdrojácích nějakýho OS, ktrejej je dělanej v Pascalu??
Fórum › Pascal
Operační systém Pascalu
![](img/forum_vlakno_help_vyreseno.png)
Zkus mrknout na osdev wiki: http://wiki.osdev.org/Projects
To Petran : Hm, promiň, že to říkám tak na rovinu, ale ty nejsi schopen tvořit operační systém. Operační systém nefunguje tak, že by BIOS nabootova *.exe soubor, je to o tisíci jiných věcí, loader, kernel, nevímcoještě, navíc ze začátku musí být psané vše v Assembleru, pak zápis do nultého sektoru média (aby bios věděl, co má bootovat), jakmile se dostaneš k programování prostředí (IMHO to co máš ty), měl bys být už tak ve třech čtvrtinách programování OS. OS to není je jeden *.exe soubor, kterej se spustí (už jenom proto, že je to *.exe je odsouzen pracovat "pouze" pod jiným operačním systémem (Woknows)), to je spousta hodin dřiny, studování naprosto nepochopitelných věcí, spousta hodin s dokumentací k architektuře tvého procesoru, nekonečné hodiny studování assembleru, přesouvání bloků paměti, než se konečně dostaneš k tomu, abys mohl udělat nějaké prostředí. Být tebou se nejdřív pořádně Pascal naučím a jestli stále ještě budeš chtít programovat operační systém (navíc svůj vlastní), tak začít s C nebo C++ a Assemblerem. A taky toho hodně nastudovat o architektuře procesorů (to kvůli assembleru) a stejně ti nakonec nezbyde nic jiného, než použít spoustu knihoven někoho cizího (i kdybys' byl sám Tao programování, chtěl bych vidět, jak budeš dělat například souborový systém apod.). Doporučuji nastudovat http://cs.wikipedia.org/wiki/Opera%C4%8Dn%C3%AD_syst%C3%A9m, a http://programujte.com/index.php?akce=clanek&cl=2008030201-jamesm-s-kernel-development-tutorials-1-dil.
To petran : Nespustíš instalaci. Nejde to. Když chceš bootovat (->to znamená chceš načíst operační systém při startu počítače), a máš ten OS na nějakém médiu, bios (systém, který bude ten OS načítat) spustí JENOM (opakuji JENOM) pokud máš na nějakém určitém místě (to znamená, že musíš nějakým způsobem zapsat na určité paměťové místo toho CD, myslím že to je adresa 0xFFFFFF, ale nevím to jistě) program (ne *.exe, *.exe se smí pouštět jenom pod Windows (či v emulátoru, puristé jděte do *)), který MUSÍ (opakuji MUSÍ) být napsán v Assembleru (má to být bootloader), který spoustama různých operací spustí Kernel (jádro systému, základ také musí být v Assembleru) a ten teprve může spouštět nějaké programy (ale zatím pouze jednoduché, pouze v konzoli, určitě to nemůže být instalace a rozhodně ne jako *.exe). Tvoje instalace, kterou ty máš na mysli, ta IMHO funguje pouze pokud je spuštěn Windows, určitě ji nemůžeš bootovat.
petran
Doporučuji ti si pustit video o bootování linuxového kernelu na x86[1], u ostatních kernelů to bude pracovat na podobném principu. Pak snad pochopíš, co se ti Garret Raziel snaží říct.
Pokud jsi zkompiloval na Windows nějaký zdroják do spustitelné binárky (*.exe), s největší pravděpodobností se jedná o binárku formátu PE[2]. A k jejímu spuštění nejdříve musíš nabootvat nějaký kernel (ať se jedná o její spouštění přímo, či pomocí emulátoru).
To místo na disku, o kterém Garret Raziel mluví, se říká MBR (Master boot record)[3]. Jsou tam uloženy čistě a jenom zkompilované instrukce (tzn. že binárku formátu PE tam dát nemůžeš ;o)). Snad každý operační systém má svůj vlastní bootloader, ale existují i „samostatné bootloadery“, např. GRUB[4]. GRUB se zoděluje na dvě tzv. „stage“, kdy první, jak můžeš vidět v tom videu, se umisťuje do toho MBR, je malá kompaktní, musí být v Assembleru, druhá se stará o věci jako jsou video, filesystémy atd., ta už může být v Céčku (či nějakém vyšším-nižším jazyku). Stage2 tedy načte jádro operačního systému a to by teoreticky teprve pak mohlo načíst tvůj zkompilovaný kód ve formátu PE.
[1] http://excess.org/article/2008/08/oclug-august-kernel-walkthrough-boot-process/
[2] http://en.wikipedia.org/wiki/Portable_Executable
[3] http://en.wikipedia.org/wiki/Master_boot_record
[4] http://en.wikipedia.org/wiki/GRUB
To bukaj : Děkuji :-)
V pascalu samozřejmě operační systém napsat jde. Potíž může být, že Pascal 7.0 dělá jenom EXE soubory a ne COM soubory, ale v případě, že bys z nějakého důvodu opravdu chtěl .COM soubor, tak ho můžeš přeložit v Turbo pascalu 4.0 nebo nižším, který právě COM soubory tvoří. Co se týče bootování, souborových systémů nebo jiných hodně nízkoúrovňových věcí, tak se tomu elegantně vyhneš tím, že uděláš hybridní operační systém DOS-PascalOS. Zkrátka můžeš nechat nabootovat DOS a z něho ihned spustit svůj systém, který převezme funkce DOSu. Tedy něco jako Windows 95(98,Me). Díky tomu, že DOS běží v reálném módu je dokonce možné ho ukončit a ponechat v paměti jenom tvůj program. (takhle to dělala třeba česká Linuxová distribuce Monkey Linux)
Pro inspiraci doporučuju kouknout se na stránky operačního systému PCOS.
http://www.geocities.com/mercury0x000D/
To KIIV : V Pascalu neni o tolik víc kontrol oproti C nebo dokonce Assembleru... Co se týče třeba ukazatelů, tak v C se musí stejně tak kontrolovat jako v Pascalu, a obecně: čim nižší jazyk, tim víc kontrol, takže v Assembleru si je budeš muset tuplem hlídat. Totéž platí třeba u indexů polí. Dle mýho názoru Assembler na tvorbu OS neni úplně to pravý ořechový. Je lepší mít OS napsanej v abstraktnim kódu, než v konkrétnim. Třeba pokud budeš chtít z 32-bitovýho kódu udělat 64-bitovej, tak to co změníš v abstraktnim kódu je oproti tomu Assemblerovskýmu velikej rozdíl. Většinou stačí jenom upravit pár funkcí, nejlépe jednu knihovnu a zkompilovat 64-bitovým kompilerem, kdežto v Assembleru je to většinou přepsat hafo kódu.
A co se týče toho jestli se C hodí víc na tvorbu OS než Pascal, tak si myslim, že je to jedno... Mezi Pascalem a C je tak málo odlišností oproti těm velkým podobnostem (procedurální programování, objekty, strukturovanej jazyk, téměř stejná úroveň...), že neni nutný se tim moc zabývat. Mě osobně vyhovuje víc Pascal. Spíš je tady problém absence kompileru na Pascal, protože Turbo Pascal je už trochu out a ten opravdu neni na tvorbu OS psanej... Ale Pascal jako jazyk je "stejnej" jako C jako jazyk, stejně jako Object Pascal jako C++, viz třeba Delphi 7.
To Wimby : To cos napsal myslíš vážně nebo si děláš srandu? Vždyť to je naprostej nesmysl. Pascal byl vytvořenej jako jazyk na výuku programování! Ano dá se v něm udělat lecos ale to je všechno. V postscriptu se taky dá napsat http server ale proč se s tím babrat v něm když to můžeš udělat jinak a mnohem líp? A ještě k tomu to srovnání Object Pascalu s C++ no tak to snad ne.
Už mě prudí, jak se všude omílá mýtus, že pascal byl vymyšlený na výuku programování a tudíž v něm není možné tvořit seriózní projekty.
Niklaus Wirth, tvůrce pascalu vymyslel tři jazyky: pascal, modulu a oberon. Pascal byl nejjednodušší a byl opravdu určen na výuku s tím, že by programátor mohl přejít právě na modulu nebo oberon. Nicméně když se obrátil na Borland, aby mu napsali překladač, tak mu to rozmluvili s tím, že je to moc drahé a prostě do pascalu přidali profesionální konstrukce právě z moduly a vznikl turbo pascal. Turbo pascal byl tedy hned od počátku myšlen jako seriózní programovací jazyk.
Kromě toho, už do verze 5.5 byla přidána podpora objektů. Proto poznámky, že pascal je vhodný jen jako výukový nástroj jsou úplně mimo mísu. Nejen Object pascal, ale i klasický turbo pascal jsou s C++ plně srovnatelné.
Že byl Pascal původně navrženej jako jazyk na výuku strukturovanýho programování vůbec neznamená, že se v něm nedá naprogramovat něco pořádnýho, stějně tak, jako to neznamená, že v něm jde udělat všechno... Jsou věci na který Pascal ani C nestačí, jako třeba BootLoader nebo internetová stránka nebo něco na co se používá funkcionální programování.
Nechci tady vyvolat další válku na téma Pascal vs. C, podle mě jsou to velice podobné jazyky u kterých spíš než na návrhu jazyka samotnýho závisí na samotných překladačích. Opravte mě jestli se mýlím, ale nějak šetrně, protože už půl roku programuju kompiler na Pascal :-)
P.S.: Slova jako NESMYSL a jim podobná jsou bez podložení BEZ VÝZNAMU, jenom vypadaj drsně. Například Pascal má typ String nebo má přepínač pro záznam, což nevim jestli má C...
P.S.2: Jeden operační systém jsem myslim viděl v Pascalu, jmenoval se Glider nebo tak nějak
To Anonymní uživatel : No nevím jestli to že má pascal string je nějakej argument... To bych mohl říct že v C si můžeš určit jaký má mít číslo výstupní formát např. hex, nebo oktálovej kdež to v pascalu si musíš na konverzi napsat funkci. Navíc se mi zdá hloupé rozdělení deklarace funkcí a procedur. V C to je řešeno elegantněji. Ale diskuze na téma C vs pascal tu už byla. viz.
[url]
http://programujte.com/index.php?akce=diskuze&kam=vlakno&tema=6435-c++-vs-pascal
[/url]
Tady je srovnání C a pascalu
[url]
http://silver.sucs.org/~manic/humour/languages/cpascal.htm
[/url]
[url]
http://users.iafrica.com/r/ra/rainier/cpas.htm
[/url]
[url]
http://www.experiencefestival.com/pascal_and_c_-_c_vs_pascal_a_language_comparison
[/url]
Vážně si nemyslím že by tahle diskuze vedla k nějakému závěru jen k jejímu zbytečnému prodlužování...
To Matrix17 : Tak Vám nevím, ale všechny diskuse na téma Pascal vs. C mi přijdou na jedno brdo. Zohledňuje se jenom to jestli je blbý psát "BEGIN" místo "{" a "END" místo "}" nebo jestli je pohodlnější psát "VOID" a "FUNCTION" místo "PROCEDURE" atp.
Pokud píšu třeba KOMPILER, WEBOVEJ PROHLÍŽEČ nebo OPERAČNÍ SYSTÉM, pak je mi jedno jestli jsem musel napsat 5 písmenek pro začátek bloku kódu a 4 znaky pro napsání END se středníkem. Taky je mi jedno jestli píšu funkci u který nechci, aby něco vracela jako PROCEDURE nebo jinak... tohle je věc programátorskýho stylu a stejně tak jako jiní, i já v tom mám systém a ve svém kódu se velice dobře vyznám. Jde spíš o ZVYK. V celkové době psaní operačního systému je zanedbatelných nějakých pět písmen na každej begin, protože tam nejde o to to NADATLIT do nějakýho štrůdlu kódu, kterej se pak nějak bude chovat. Jde tam o strukturu, o algoritmy, o celkový řešení problému. Ne nějaký blbý beginy. A z celkovýho hlediska knihoven: :-)
knihovna NEPATŘÍ k jazyku! Je hloupé tvrdit, že Pascal má jednotku CRT a C může mít jinou, ale třeba i mnohem lepší... to koneckonců může mít Pascal taky... a pokud jde o práci s GUI nebo API, tak pravděpodobně JEDINEJ rozdíl je tam mezi klíčovýma slovama USES a INCLUDE :-)
Dál už sem tu diskusi na téma Pascal vs. C nečetl... četl sem jiné téhle podobné. Bohužel nikdo nedokázal C obhájit nějakym konkrétnim příkladem, kterej by v Pascalu nešel vyřešit. A na druhou stranu nikdo nedokázal Pascal obhájit nějakym konkrétním příkladem, kterej by v C nešel vyřešit :-)
Pokud se na to podívám z větší vejšky než ze svojí židle, tak ZÁSADNÍ rozdíl nevidim. Vidim rozdíl mezi Javou a C, vidim rozdíl mezi Prologem a Pascalem, a vidim rozdíl mezi Assemblerem a Fortamen. Ale nevidim rozdíl mezi C a Pascalem, když pominu rozdíly v klíčových slovech a minimální odlišnosti, který se daj snadno nahradit v obou jazycích... Je to individuální jestli programovat v C nebo v Pascalu... Pravděpodobně si mnoho lidí k Pascalu vytvořilo nechuť právě kvůli tomu, že se to učí na školách... něco jako povinná četba... :-)
Myslím si, že jádro Linuxu by šlo přepsat do Pascalu bez změn v kódu. :-)
To Laaca : Je pravda, že sem to trochu přehnal tim slovem nestačí... ale i tak bych to asi raději psal v assembleru... i když, když nad tim tak přemejšlim, tak Filesystem, případně i to TUI bych řešil Pascalem. :-)
Amos napsal:
Ja sem OS v pascalu jednou programoval, nedokoncil jsem to, ale nebylo to tak hrozny.Je sice pravda že C a Assembler je pro programování OS typičtější, ale v packalu te do taky.
JJ. Já jsem taky OS v Pascalu kedysi programoval, ale taky jsem ho nedodělal, dělala mi problém rychlost grafického režimu a když jsem přišel na to jak to řešit, tak už jsem dělal na něčem jiným. Avšak už delší dobu uvažuju na tom, že to dodělám, ale zatím nějako nemám čas.
![](img/forum_nove_psp_new.png)
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
![](/img/smile/1.gif)
![](/img/smile/2.gif)
![](/img/smile/3.gif)
![](/img/smile/4.gif)
![](/img/smile/5.gif)
![](/img/smile/6.gif)
![](/img/smile/7.gif)
![](/img/smile/8.gif)
![](/img/smile/9.gif)
![](/img/smile/10.gif)
![](/img/smile/11.gif)
![](/img/smile/12.gif)
![](/img/smile/13.gif)
![](/img/smile/14.gif)
![](/img/smile/15.gif)
![](/img/smile/16.gif)
![](/img/smile/17.gif)
![](/img/smile/18.gif)
![](/img/smile/19.gif)
![](/img/smile/20.gif)
![](/img/smile/21.gif)
![](/img/smile/22.gif)
![](/img/smile/23.gif)
![](/img/smile/24.gif)
![](/img/smile/25.gif)
![](/img/smile/26.gif)
![](/img/smile/27.gif)
![](/img/smile/28.gif)
![](/img/smile/29.gif)
![](/img/smile/30.gif)
![](/img/smile/31.gif)
![](/img/smile/32.gif)
Uživatelé prohlížející si toto vlákno
Podobná vlákna
Operační systém C — založil Jenkings
Operacni system — založil Maxik
Operační systém v C# ? — založil Algon
Operacni system na serveru — založil tobik
Jak na operační systém v c++ — založil Maqwer
Moderátoři diskuze