
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.
Zpracovani probiha v pameti (nebo docasnem souboru, pokud je to nutne) a na konzoli se pouze zobrazuje vysledek. Pokud potrebujes vysledek do souboru, slouzi k tomu prepinac prikazu nebo presmerovani vystupu konzole do souboru
Díky, jde mi spíš o historii příkazů.
Např ve win se zachovává pro jednu 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
Jen mi prijde jako blbost drzet v pameti 100 000 radku textu, kdyz to uzivatel neni schopen precist. Dik za rady.
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.
A taky muze mit
String a = "";
for(100000) {
a = "ahoj\n";
}
Asi nemáš ponětí o tom kolik co zabírá bajtů. Když opomenu, že jsi tam zapomněl "+", tak obecně v UTF-8 jeden znak = jeden bajt. Když tam budeš mít 5 x 100.000 znaků po 1 bajtu, tak to nebude ani půl mega bajtu.
V UTF-8 zabírá znak bajt pouze v případě, že se pohybuješ do #127. Znaky z vyšší části pak zabírají 2-3 bajty.
Konzole to tak nedela. Pamatuje si pouze definovaný počet příkazů a definovaný počet řádků výstupu. Dejme tomu, že prostě budeš mít buffer 1024 řádků, ve kterém můžeš listovat