Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem Jak funguje konzole v os

Ahoj, programuji si takovej svuj malej operacni system a zajimalo by mne, jak funguje konzole.

Os je konzolovy, takze do nej soupu prikazy, napriklad "cat soubor.txt". Probehne zpracovani catu a ten ma nejaky vystup.

A ted otazka: vystupni text v konzoli je nejaky buffer(soubor) na disku, do ktereho se uklada vystup a vsechny prikazy a ten je pak zobrazovan na konzoli?

Googlil jsem to a nic jsem nenasel.

Diky vsem za rady ci odkazy.

Předmět Autor Datum
Vlastní OS jsem si teda nikdy neprogramoval, ale soubor na disku to není zcela určitě.
Wikan 10.10.2016 15:27
Wikan
Tak nejde čistě o vlastní os, ale tak takový virtuální stroj, který se tomu lehce přibližuje.
MašinkaTomáš 10.10.2016 15:31
MašinkaTomáš
# A co ten tvuj 'object' (CMD, console, funguje v OS jako object, tak se tak k nemu musis chovat) má…
WPShell 10.10.2016 16:30
WPShell
No takhle, můj operační systém je takový simulovaný, je to exáč v c++, který poběží na win a je rozd…
MašinkaTomáš 10.10.2016 18:50
MašinkaTomáš
Zpracovani probiha v pameti (nebo docasnem souboru, pokud je to nutne) a na konzoli se pouze zobrazu…
Jan Fiala 10.10.2016 18:27
Jan Fiala
Díky, jde mi spíš o historii příkazů. Např ve win se zachovává pro jednu spuštěnou instanci cmd a t…
MašinkaTomáš 10.10.2016 18:53
MašinkaTomáš
ked si robis svoj OS tak je to vzdy snad o tom ako si to spravis....neviem co vlastne riesis. mozes…
shiro 10.10.2016 19:29
shiro
spuštěnou instanci cmd a ta to má vše v paměti? Ano, tak jako pres PowerShell, c# az po konsole, at…
WPShell 10.10.2016 19:40
WPShell
Jen mi prijde jako blbost drzet v pameti 100 000 radku textu, kdyz to uzivatel neni schopen precist.…
MašinkaTomáš 10.10.2016 22:35
MašinkaTomáš
Z jakého duvodu by mel drzet 100 000 radku, promena muze mit jen hodnotu treba int A "13", nebo int…
WPShell 11.10.2016 00:01
WPShell
A taky muze mit String a = ""; for(100000) { a = "ahoj\n"; }
MašinkaTomáš 11.10.2016 09:04
MašinkaTomáš
Asi nemáš ponětí o tom kolik co zabírá bajtů. Když opomenu, že jsi tam zapomněl "+", tak obecně v UT…
Vorech 11.10.2016 14:52
Vorech
V UTF-8 zabírá znak bajt pouze v případě, že se pohybuješ do #127. Znaky z vyšší části pak zabírají…
Jan Fiala 11.10.2016 15:18
Jan Fiala
Vobec to nieje blbost. Ma to vyhodu v tom, ze pri rychlom skakani na stranky cez 'Page Down'/'Page U…
Kilo.Viktor 11.10.2016 01:14
Kilo.Viktor
tak tam das tisic riadkov. vyriesene. elementarna logika. Ked uz si schopny vyrobit si vlastny "os"…
shiro 11.10.2016 09:00
shiro
Nemám problém s čím? S tím jak funguje OS? Co to má společného s tím, že jsem schopen vyrobit si vla…
MašinkaTomáš 11.10.2016 09:05
MašinkaTomáš
preco opat nerozmyslas? pointa je, ze ked uz vyrabas nieco tak komplexne ako vlastny "os", ci aspon…
shiro 11.10.2016 09:18
shiro
Jen mi prijde jako blbost drzet v pameti 100 000 radku textu, kdyz to uzivatel neni schopen precist.… poslední
Jan Fiala 11.10.2016 15:28
Jan Fiala
Pokud ti stačí, když to bude pouze do okamžiku ukončení konzole, pak se to ukládá v paměti. Pokud to…
Jan Fiala 11.10.2016 13:02
Jan Fiala

# A co ten tvuj 'object' (CMD, console, funguje v OS jako object, tak se tak k nemu musis chovat) má delat ? *Navic, to chces provozovat jako v jakém prostredi, pod l.kernel, nebo One.Core ?
#Samotna console je kuprikladu integrovana v BCD (livecd-creator), Windows PE (WinPE, Wim : vytvorenim pres DISM), Live CDs, tak se podivej jak je udelana, jak se zavadi systém, boot etc

No takhle, můj operační systém je takový simulovaný, je to exáč v c++, který poběží na win a je rozdělen do částí:
boot, kernel, user.
Mám nějaká systémová volání, registry, atd.. Teď jsem ve fázi, kdy navrhuji právě tu konzoli, která bude volat shell.

Konzole bude jen přijmat příkazy a vypisovat výstupy, to je vše, tak jako v klasickém os.

spuštěnou instanci cmd a ta to má vše v paměti?

Ano, tak jako pres PowerShell, c# az po konsole, atd, kde se $promena uklada do "RAM", jde o uplny zaklad na zacatku programovani, jak funguje 'RAM, CPU', kde kdyz dam kuprikladu deklarujes promené $pes, $kocka, $kun tak pro tyto promené jsou jeji hodnoty ulozeny (pod urcitou ADRESSou) v RAM, predstav si to jako SUPLIKY ve SKRINCE, kde tvou $promena ulozis do nejakého supliku ktery pojmenujes a u vnitr je jeho hodnota o velikosti - [xbit] (dle TYPU promené, int ..). :-)
*V pamet :bufer HDD je trochu neco jiného), nak nerozumim jak se bez toho obejdes aniz by jsi znal 'adresu' ..

TiP Mozna by bylo dobré, kdyby jsi nahledl co je a jak funguje EFI a zkusil : CMDTools LINE TOOL for UEFI

Z jakého duvodu by mel drzet 100 000 radku, promena muze mit jen hodnotu treba int A "13", nebo int B "5" at int C "A+B" u string "pondeli", informace které maji par 'BYTs', RAM ma nekolik 'GIGA',, ale mozna mas popletené co je promena a DATA, ze kterych muze byt cteno, treba DataBase, nebo jiné informace ulezné v souboru.

preco opat nerozmyslas?
pointa je, ze ked uz vyrabas nieco tak komplexne ako vlastny "os", ci aspon jeho imitaciu, tak nemas mat co problem s takymi malymi blbostami ako je pocet riadkov v historii terminalu alebo jeho prevedenie. spravis si kolko riadkov historie chces a ako chces aby sa to ukladalo. ako som popisal predtym.

Neviem co vobec riesis nejakych 100tis riadkov historie. nepodstatne hluposti.

Zpět do poradny Odpovědět na původní otázku Nahoru