ceturtdiena, 2011. gada 3. marts

Koda rakstīšanas darba plāns


  1. Ielādes programmas (bootloader)
  2. Kernelis (pieņemot, ka tiek ielādēts no GRUB)
    1. Izvads uz ekrāna
    2. Video režīmi
    3. Atmiņas aizsargāšana
    4. Interrupti
      1. Interruptu tipi
      2. IDT
      3. ISR
      4. IRQ
      5. Tastatūras atpazīšana
    5. Atmiņas kontrolēšana
      1. GDT
      2. Atmiņas aizsargāšanas metodes
        1. Paging
    6. Komandu ievade
    7. Floppy drive
    8. Failu sistēmas
    9. Lietotāju sistēma
    10. ... utt.

Sveika, pasaule!


Pagājušā gada vasarā es uzsāku jaunu un interesantu projektu - operētājsistēmas izpēte, kas šobrīd gatavojas projektu nedēļai tehnikumā, kurā es mācos.
Ar laiku es šo blogu papildināšu ar ierakstiem par to, kā norisinās operētājsistēmu pētīšana un arī izveide. Tagad manos plānos ir izveidot pietiekoši lielu teorētisko un koda bāzi, lai varētu turpināt būvēt savu ideju.
Operētājsistēma, kuras nosaukumu esmu tevis kā FlowerOS pagaidām ir tikai maketa un ideju formā, kas tiks pakāpeniski pakāpeniski pārliktas kodā kādā no man zināmā programmēšanas valodā. Es savas skološanās laikā esmu apguvis pietiekošu valodu skaitu un vēl joprojām apgūst jau zināmās, jo ir jāatsvaidzina atmiņa un domas.
Pirmā valoda, kuru es sāku nopietni mācīties bija Pascal, tiešāk jau FreePascal, ko es vēl joprojām labi pārzinu, bet, ja kaut ko esmu piemirsis, vai kas ir izveidojies jauns, to parasti ātri atrodu. Iespējams šīs valodas pluss un reizē mīnuss ir tas, ka viņa ir matemātiski idealizēta un neļauj tik ļoti programmētājam izpausties. Patiesībā arī pats kompilators zināmā mērā ierobežo šīs valodas izmantošanu tieši operētājsistēmu veidošanā, jo daudzas funkcijas nav atvieglinātas, bet gan sarežģī šo valodu.
Domāju, ka savā darbā tomēr izmantošu šo valodu, jo tā, manuprāt, strukturāli labi ir nokomplektēta, jo dot labu pārskatāmību.
Otra valoda, kuru es sākumā pats, bet vēlāk papildināju savas zināšanas tehnikumā, ir C un C++. Manuprāt, šī valoda ir ļoti lieliska, jo daudz vieglāk ļauj aprakstīt lietas programmas tekstā un arī daudzos paņēmienos. Šī valoda kļuva par vienu no populārākajām, jo tā ir ļoti atkarīga no programmētāju idejām un universāla.
Kaut sākumā es vēlējos veidot savu projektu Pascal valodā, es biju spiests tomēr izvēlēties C, jo kā jau veidota priekš operētājsistēmu izveides šī valoda daudz atvieglo manu darbu un daudzas citas lietas.
Ar kompilatoriem gan šai valodai ir pagrūti, jo tie satur ļoti lielu skaitu funkciju un lietu, kuras ir jāpārzina, un, rakstot kodu, esmu saskaries, ka man ir jāizlasa vismaz puse no dokumentācijas, lai saprast, kāpēc mans kods netiek interpretēts tā, kā es vēlos.
Par spīti tam, ka šīs divas valodas ir noderīgas, es tomēr kā pašu svarīgāko šī projekta valodu atzīstu Asamblervalodu, jo tā nodrošina tieši procesora funkcijas un ir pati, pati zemākā valoda, kuru es personīgi zinu. Kaut šī valoda man sagādāja problēmas, jo tā ir diezgan netipiska un interesanta, es viņu pakāpeniski sapratu un vēl joprojām apgūstu.
Bija arī doma mēģināt rakstīt savu kodu tieši šajā valodā, kas daļēji arī būs, bet ar laiku sapratu, ka mana domāšana vairāk ir saistīta ar augstākām valodām un domāju, ka, kļūdas labot, man piemēram, būs vieglāk drusku augstāka līmeņa valodā.
Šobrīd jau ir 2011. gada marta mēnesis un es sākšu veidot koda bibliotēku, kuru vēlāk apvienošu savā operētājsistēmā, bet pirms tam, man būs jāuzraksta teorētiskā bāze jeb projekta darbs ar tēmu “Operētājsistēmu izveides izpēte”, pie kuras es tiešu tagad ķeršos.
Paldies.