Boshqalar
Noldan boshlab operatsion tizim yaratish
Operatsion Tizim kompyuter qurilmasi va ilovalarni bir-biri bilan bogʻlovchi koʻprikdir. Bu maqolada shu koʻprikni qismlarga boʻlib tushuntirganmiz.
Asosiy tushuncha
Operatsion tizimlar servislarni ishlab chiqishga imkon beradigan turli xil fichalar bilan taʼminlaydi va aloqa almashinuv jarayonlarida milliardlab odamlar tomonidan ishlatiladi. Bitta operatsion tizimda millionlab satr kod mavjud boʻladi. Misol uchun, Windows operatsion tizimida 50 mln satr kod bor. Lekin birgina operatsion tizim ortida shuncha katta mehnat turganiga qaramay, ularni dasturlash toʻplamlari (development kits) yordamida osongina ishlab chiqish mumkin.
Kirish
Operatsion tizim xotira, protsessor, qurilmani boshqarish kabi koʻplab vazifalarni bajaradi. Operatsion tizim qanday yaratilishini ushbu funksiyalarni dasturlash nuqtayi nazaridan modellashtirish orqali tushuntirish mumkin. Windows operatsion tizimida ushbu funksiyalarning barchasi C, C++, C# va assembly tillari yordamida dasturlashtirilgan. Bu funksiyalar operatsion tizimning samarali ishlashi uchun muhim hisoblanadi. Operatsion tizimni personallashtirish ushbu asosiy xususiyatlar ustiga qurilishi mumkin.
Operatsion tizim nima?
Operatsion tizim – tizimning tarkibiy qismlari va kompyuterdagi dasturiy taʼminot oʻrtasida koʻprik vazifasini bajaruvchi dastur.
Operatsion tizimlarning turli maqsadlarga moʻljallangan har xil turlari mavjud.
Operatsion tizimning funksiyalariga:
– xotirani boshqa dasturlarga taqsimlash;
– ajratilgan xotira miqdorini kuzatish orqali xotirani boshqarish;
– jarayonning bajarilish tartibini hal qilish;
– kirish va chiqish oqimlarini boshqarish;
– fayllarni boshqarish;
– tizimdagi fayllar va boshqa dasturlarga ruxsat berish va autentifikatsiya qilishni boshqarish kiradi.
Operatsion tizim qismlari
Operatsion tizimlar kernel va tizim dasturlarining jamlanmasidan iborat.
Kernel
Kernel yadro operatsion tizimni ifodalaydi va uning asosiy tarkibiy qismi hisoblanadi. U tizim yoqilganda xotiraga birinchi bo‘lib yuklanadigan va boshqa barcha dasturlarni boshqarish uchun xizmat qiladigan dasturlar to‘plamidir.
Tizim dasturlari
Tizim dasturlari – kernelni kompyuterning boshqa qismlari bilan bogʻlash uchun ishlatiladigan dasturlar. Bundan tashqari, ular tizimning ichki xususiyatlaridan foydalanadigan dasturni ishlab chiqish va bajarish uchun mukammal muhitni yaratadi.
1-qadam: konsepsiya
Operatsion tizim bir nechta mikroprotsessor va mikrokontrollerlarga buyruq berishi mumkin boʻlgan millionlab satr kodlardan iborat. Mikroprotsessorda millionlab logik gateʼlar mavjud. Mikroprotsessorga yuborilgan maʼlumotlar protsessordagi muayyan logikaga asosan qayta ishlanadi. Mikrokontroller esa tizimga kiritilgan va maʼlum bir funksiyani bajarish uchun ishlatiladigan integrallashgan sxemadir. COSMOS dasturlash toʻplamini biz kompyuterimizdagi muayyan bir protsessorda dasturlash va operatsion tizimimizni ishlab chiqish uchun qoʻllashimiz mumkin.
2-qadam: materiallar va dastlabki zaruriy bilimlar
Terminal operatsion tizim yaratish uchun quyidagi dasturiy taʼminot va dasturlash tillari boʻyicha fundamental bilim talab qilinadi:
Microsoft Visual Studio — integrallashgan dasturlash muhiti boʻlib, unda tashqi kutubxonalar va dasturlash muhitlari sozlanadi.
COSMOS User Development Kit — C# dasturlash tilidan foydalanadigan va faqatgina Windows operatsion tizimlarida foydalanish mumkin boʻlgan operatsion tizim ishlab chiqish toʻplami.
C# dasturlash tili va .NET freymvorki haqida bazaviy tushunchaga ega boʻlish zarur.
VMware Player yoki virtual box kabi virtualizatsiya dasturi, bu bizga asosiy operatsion tizimimiz ustida boshqa bir operatsion tizimni ishga tushirishga yordam beradi.
3-qadam: COSMOS bilan tanishish
COSMOS (C# ochiq manbali boshqariladigan operatsion tizim) Visual Studioʼdan dasturlash muhiti sifatida foydalanadigan operatsion tizimlar uchun dasturlash toʻplamidir. C# tilidan foydalanishimizga qaramay, biz .NETʼga asoslangan har qanday til, shu jumladan, VB.NET, Fortran, Delphi, Prism, IronPython, F# va boshqalardan ham foydalanishimiz mumkin.
Cosmosʼda Common Intermediate Language (umumiy oraliq darajadagi til) IL2CPU deb nomlangan Ahead time kompilyatori yordamida mahalliy instruksiyalarga tarjima qilinadi. IL2CPUʼdan Cosmos foydalanuvchi tomonidan yaratilgan dasturlar va biriktirilgan kutubxonalarni yuklanadigan mahalliy bajariladigan fayllarga kompilyatsiya qilishda foydalanadi. Dasturchilar Cosmos virtualizatsiya fichasidan foydalangan holda kompyuterlarini doimiy ravishda qayta ishga tushirmasdan ham operatsion tizimlarni ishlab chiqish va sinovdan oʻtkazish tezligini oshirishi mumkin. Odatda VMWare Playerʼni virtualizatsiya opsiyasi sifatida ishlatamiz, chunki u freymvork bilan yaxshi integrallashadi. U odatda standart boʻyicha ishlatiladi.
Umumiy oraliq til sors koddan yaratilgan instruksiyalar toʻplamini oʻz ichiga oladi. Ishga tushirishdan sal avval AOT kompilyatori sors kodni inson oʻqiydigan tildan kompyuter oʻqiydigan instruksiyalar tiliga tarjima qiladi.
4-qadam: birinchi operatsion tizimingizni ishlab chiqish
Quyidagi ketma-ketlikka amal qilish operatsion tizimni yaratish mumkin degan savolga yechim boʻla oladi.
Visual Studio dasturini oching va asboblar panelidagi faylni (File), keyin yangi loyiha (New project)ni bosing.
Yangi loyihani bosganingizdan keyin ochilgan dialog oynasi (dialog box)dagi cosmosboot tugmasini bosing va loyihaga nom bering.
program.cs nomli yangi fayl Solution Explorerʼdan topiladi. Shunchaki bosing va yangi faylni yuklab oling.
Visual Studioʼning yuqori chap qismidagi start tugmasini bosing. Agar start tugmachasini topa olmasangiz, debug menyusidagi start debugging tugmasini bosishingiz mumkin.
Keyin cosmos builder deb nomlanuvchi oyna paydo boʻladi va oʻsha oynadagi build tugmasini bosasiz.
Operatsion tizimingizdagi kodni kompilyatsiya qiladigan va ishga tushiradigan virtual emulyator boʻlgan terminal oynasi koʻrinadi.
5-qadam: operatsion tizimni personallashtirish
program. cs faylida oʻzgartirishlar qilib, operatsion tizimga oʻzgartirishlar kiritish mumkin.
program. cs faylidagi public static void Init() metodini toping. Metod ichida Console.Writeline(text) buyrugʻini topishimiz mumkin va matn avvalgi bosqichda koʻrsatilgan qora terminalda namoyon boʻladi.
Matnni oʻzgartirsangiz, uning yangi namunasini terminalda koʻrishingiz mumkin.
Kod
// operatsion tizimni ishga tushiradigan standart kod
var xBoot= new Cosmos.Sys.Boot();
// operatsion tizimni ishga tushirish/yuklash
xBoot.Execute();
// terminalda chop qilish
Console.WriteLine("Welcome to the amazing new operating system");
Natija
//Welcome to the amazing new operating system
6-qadam: operatsion tizim buyruq qatori (Command Line)ni yaratish
Endi buyruqlar qatoridan iborat boʻlgan operatsion tizim yaratish haqidagi savolga javob bersak. Unda operatsion tizim haqida maʼlumot olish uchun buyruqlar kiritish kabi sodda funksiyalar bor.
Quyida berilgan kodni eng oxirgi bosqichda qoʻshilgan Console.WriteLine() satridan keyin qoʻshishimiz mumkin.
Kod
// satr oʻzgaruvchisini belgilang
string user_intput;
// foydalanuvchidan maʼlumot oling
user_intput=Console.ReadLine();
// foydalanuvchi maʼlumotini tekshirish uchun if holati
if(user_intput=="help"){
//natijani chop eting
Console.WriteLine("This is a personal Operating system created by using the cosmos framework")
}
// foydalanuvchi maʼlumotini tekshirish uchun is else holati
else if(user_intput=="time"){
// DateTime obyektining oʻzgaruvchisi
// joriy sana va vaqtni bilish uchun UtcNow metodini chaqirish
System.DateTime now=System.Object.DateTimeImpl.UtcNow()
// DateTime obyektini ToLongDateString metodi yordamida satrga aylantirish
// Joriy sana hamda vaqtni chop etish
Console.WriteLine(System.Object.DateTimeImpl.ToLongDateString(now));
}
// tizim maʼlumotini olish uchun else holati
else if(user_intput=="info"){
// ... tomonidan va ... da yaratilgan kabi tafsilotlarni print qilish
Console.WriteLine("Created by- name");
Console.WriteLine("Created on- date");
// tizim xususiyatlarini berish
Console.WriteLine("Features- features");
}
// topilmagan buyruqlar uchun else sharti
else{
// “aniqlanmadi”ni print qilish
Console.WriteLine("Not found");
}
Izoh
Yuqoridagi kod operatsion tizimga terminal orqali foydalanuvchidan maʼlumotlar olish imkonini beradi.
Operatsion tizim turli xil kiritilgan maʼlumotlar (input)ga if..else qaytariluvchi amallari yordamida turlicha javob bera oladi.
Agar buyruq topilmasa, operatsion tizim else orqali Not Found xabarini qaytaradi.
Cosmos freymvorkidagi DateTimelmpl sinfi sana hamda vaqt bilan ishlashda qoʻllaniladi. DateTimelmpl klasidagi UtcNow() funksiyasi yordamida joriy sanani olish mumkin.
UtcNow() funksiyasi hozirgi sana hamda vaqtni System.DateTime obyekti sifatida qaytaradi. Uni DateTimelmpl klasidagi ToLongDateString(Date Time) metodi yordamida satrga aylantirish mumkin.
Shunday qilib, operatsion tizimga vaqt soʻrovini yuborish orqali hozirgi sana va vaqtni olish imkoniyati yaratiladi.
Natija (Output)
help
This is a personal Operating system created by using the cosmos framework
time
Tue, 15 Novemeber 2022 05:50:06 GMT
7-qadam: operatsion tizimga koʻproq fichalar qoʻshish
Cosmos freymvorkining ichki funksiyalaridan foydalangan holda qanday qilib operatsion tizim yaratish mumkin? Bu savolni toʻldirish uchun yana boshqa funksiyalarni qoʻshsak ham boʻladi. Keling, operatsion tizimimizda bitta katalog yaratamiz. Quyidagi kod buni koʻrsatib beradi:
Kod
// satr turi oʻzgaruvchisi
string user_intput;
// foydalanuvchidan maʼlumot olish
user_intput=Console.ReadLine();
// satrdagi soʻzlarni ajratish va ularni array toʻplamiga saqlash
string[] splitted=user_input.split(" ")
// berilgan buyruqni if holatidan foydalanib tekshirish
if(splitted[0]=="create"){
// tizim haqida yozib olingan maʼlumotlarni print qilish
Console.WriteLine("Creating directory named:"+splitted[1]);
// directory yaratish
System.Object.CosmosFileSystem. CreateDirectory("./"+splitted[1]);
}
// if-else dan foydalanib, berilgan buyruqni tekshirish
else if(splitted[0]=="delete"){
// tizim haqida yozib olingan maʼlumotlarni print qilish
Console.WriteLine("Deleting file"+splitted[1]);
// faylni oʻchirish
System.Object.CosmosFileSystem. DeleteFile("./"+splitted[1]);
}
// else holati
else{
// "buyruq topilmadi" ni chop etish
Console.WriteLine("Command not found");
}
Izoh
Yuqoridagi kod yangi operatsion tizimda qanday qilib katalog yaratish va faylni oʻchirishni koʻrsatadi.
Foydalanuvchi operatsion tizimga create directory_name yoki delete file_name buyruqlaridan birini berishi mumkin.
Birinchi qadamda fayl yoki katalog nomini olish uchun buyruq “ ” (boʻshliq)dan foydalanib ajratib olinadi.
CosmosFileSystem klasida fayllar yoki kataloglarni yaratish va boshqarishda ishlatiladigan metod mavjud.
CreateDirectory() funksiyasi ikkita argument: fayl joylashuv yoʻli va faylning ruxsat etilgan huquqlarini qabul qiladi.
DeleteFile() funksiyasi oʻchirilishi kerak boʻlgan faylni joylashuv yoʻlini argument sifatida olib, shu faylni oʻchiradi.
Natija
create folder
Creating a directory named: folder
8-qadam: oʻchirish (Shutdown) va qayta ishga tushirish (Restart) funksiyalarini qoʻshish
Operatsion tizim foydalanuvchining ehtiyojiga koʻra yoqilishi va oʻchirilishi kerak. Shuning uchun ham operatsion tizimimizga yoqish va oʻchirish xususiyatlarini qoʻshishimiz kerak. Quyidagi kod operatsion tizimga shutdown va turnoff funksiyalarini qoʻshishni yoritib beradi:
Kod
// foydalanuvchi kiritadigan maʼlumot (input) uchun oʻzgaruvchi
string user_intput;
// foydalanuvchi maʼlumotini olish
user_intput=Console.ReadLine();
// oʻchirish amalini boshlash uchun if sharti
if (user_intput == "shutdown"){
// dasturiy taʼminotni oʻchirishni boshlash
Cosmos.Sys.Deboot.ShutDown();
}
// tizimni qayta ishga tushirishni boshlash uchun else if sharti
else if(user_intput == "restart"){
// operatsion tizim qayta ishga tushirilishi
Cosmos.Sys.Deboot.Reboot();
}
Izoh
Oʻchirish funksiyasi Deboot klasida mavjud. Shutdown() funksiyasiga buyruq berilganda operatsion tizim barcha jarayonlarni tugatadi va oʻchadi.
Qayta ishga tushirish funksiyasi cosmos freymvorkining Deboot klassida joylashgan. Reboot() funksiyasiga buyruq berilganda tizim barcha jarayonlarni tugatadi va oʻchadi. Bir necha soniyalardan keyin esa operatsion tizim qayta yuklaydi va yonadi.
9-qadam: yakuniy oʻlchov
Hozirgi kodlash faqat bir marta bajariladigan qilib tuzilgan. Buning oldini olish uchun barcha kodlarimizni while amallari ketma-ketligiga qoʻyishimiz va if shartlarini switch holatiga almashtirishimiz kerak.
// operatsion tizimni ishga tushirish uchun foydalaniladigan standart kod
var xBoot= new Cosmos.Sys.Boot();
// tizimni ishga tushirish
xBoot.Execute();
// welcome satrni chop etish
Console.WriteLine("Welcome to the amazing new operating system");
//foydalanuvchi kiritadigan maʼlumot (input) uchun oʻzgaruvchi
string user_intput;
// while loop
while(true){
// foydalanuvchi maʼlumotini olish
user_intput=Console.ReadLine();
// stringdan soʻzlarni ajratib olish
string[] splitted=user_input.split(" ")
// buyruqlarni bajarish uchun switch case
switch (splitted[0]){
// help buyrugʻini ishga tushirish
case "help":{
// tizim va buyruqlar haqida ma'lumot beradi
Console.WriteLine("This is a personal Operating system created by using the cosmos framework");
Console.WriteLine("The following commands are available");
Console.WriteLine("time - gets the current time and date of the operating system");
Console.WriteLine("create dir_name - creates a new directory with the name 'dir_name' ");
Console.WriteLine("info - gives information about the system");
Console.WriteLine("delete file_name - deletes the file with the file_name");
Console.WriteLine("shutdown - terminates all processes and turns off the system");
Console.WriteLine("restart - restarts the system");
break;
}
// info buyrugʻini ishga tushirish
case "info":{
// ... tomonidan va ... da yaratilgan kabi tafsilotlarni print qilish
Console.WriteLine("Created by- name");
Console.WriteLine("Created on- date");
// tizim fichalarini chiqarish
Console.WriteLine("Features- features");
}
// time info buyrugʻini ishga tushirish
case "time":{
// Joriy sana hamda vaqtni chop etish
System.DateTime now=System.Object.DateTimeImpl.UtcNow()
Console.WriteLine(System.Object.DateTimeImpl.ToLongDateString(now));
break;
}
// dir_name buyrugʻini yaratish
case "create":{
// yangi directory yaratish
Console.WriteLine("Creating directory named:"+splitted[1]);
System.Object.CosmosFileSystem. CreateDirectory("./"+splitted[1]);
break;
}
// delete file_name buyrugʻini ishga tushirish
case "delete":{
// belgilangan faylni oʻchirish
Console.WriteLine("Deleting file"+splitted[1]);
System.Object.CosmosFileSystem. DeleteFile("./"+splitted[1]);
break;
}
// oʻchirish buyrugʻini ishga tushirish
case "shutdown":{
// tizimni oʻchirish
Cosmos.Sys.Deboot.ShutDown();
break;
}
// tizimni qayta ishga tushirish buyrugʻini ishga tushirish
case "restart":{
// tizimni qayta ishga tushirish
Cosmos.Sys.Deboot.Reboot();
break;
}
// boshqa buyruqlarni ishga tushirish
default:{
// "Command not found" chop etish
Console.WriteLine("Command not found");
}
}
}
Izoh
While(true) tizim oʻchirilmaguncha yoki qayta ishga tushirilmaguncha cheksiz ishlaydi.
switch() holatlari foydalanuvchi bergan buyruqqa asosan harakatlanish uchun ishlatiladi.
Agar foydalanuvchi notoʻgʻri buyruq kiritsa, default switch holati ishga tushadi va Not Found yozuvini chiqaradi.
Natija
help
This is a personal Operating system created by using the cosmos framework
The following commands are available
time - gets the current time and date of the operating system
create dir_name - creates a new directory with the name 'dir_name'
info - gives information about the system
delete file_name - deletes the file with the file_name
shutdown - terminates all processes and turns off the system
restart - restarts the system
10-qadam: operatsion tizimni ishga tushirish va sinovdan oʻtkazish
Yaratgan operatsion tizimimizni virtual box yoki VMware player kabi virtuallashtirish dasturlari yordamida tekshirishimiz mumkin. Tayyor operatsion tizimni virtual mashinada ishga tushirish uchun quyidagi amallarni bajarishingiz kerak:
Virtuallashtiruvchi dasturga kiring. New tugmachasini bosib, yangi virtual mashina yarating.
Keyin yangi virtual mashinani minimal joy va harakatlar ketma-ketligi bilan sozlang.
Yangi yaratilgan operatsion tizim faylini C:\Users\{YourUsername}\AppData\Roaming\Cosmos User Kit jildidan topishingiz mumkin. Bu ISO fayl boʻladi.
Tizimingizda yaratilgan operatsion tizimni sinab koʻrish uchun ushbu faylni tanlang va uni virtual mashinaga yuklang.
Xulosa
Operatsion tizim — tizimning dasturiy (software) va apparat (hardware) qismlari oʻrtasida koʻprik vazifasini bajaradi.
Operatsion tizim kernel va tizim dasturlaridan tashkil topgan. Ushbu tizim dasturlari boshqa dasturlar va tizimning hardware komponentlari bilan oʻzaro aloqa qilish uchun tizim chaqiruvlari (system calls)dan foydalanadi.
Operatsion tizimni qanday yaratish haqidagi savolga COSMOS foydalanuvchi toʻplami va C# dasturlash tili yordamida javob berish mumkin.
COSMOS foydalanuvchi toʻplami bizga operatsion tizimni yaratish uchun qulay interfeys taqdim etadi.
program. cs faylidagi public static void Init() funksiyasi operatsion tizimni personallashtirish uchun oʻzgartirilishi mumkin.
Toʻplamda operatsion tizimdagi maʼlumotlarga kirish uchun ishlatilishi mumkin boʻlgan koʻplab ichki funksiyalar mavjud.
Operatsion tizim ishlab chiqilganidan soʻng operatsion tizimning ISO fayli yaratiladi. Bu sinov uchun virtualizatsiya dasturi bilan birga ishga tushirilishi mumkin. Shunday qilib, operatsion tizimni qanday yaratish mumkin degan savolga javob berdik.