ساخت سیستم عامل با سی شارپ!!! – به راحتی ☺☻ #2

سلام و خوش اومدید به قسمت جدید این آموزش بعد از مدت ها اومدم

جلسه قبل یاد گیرفتید که چگونه کازموز زو نصب کنیم و یک پروژه بسازیم.

بریم سراغ آموزش :

خب حالا باید پروژه رو کامپایل کنیم

برای کامپایل کردن باید دکمه کامپایل کردن پروژه که نوشته شده Cosmos کلیک کنید

دکمه کامپایل
دکمه کامپایل

بعد که کلیک کردید شروع می کنه به ساختن فایل iso. سیستم عامل

خیلی طول می کشه تا ساخته بشه

(چون سی شارپ یک زبان سطح بالا هست و طول می کشه که به اسمبلی تبدیل بشه)

بعد یک مدت پنجره vmware بالا میاد و سیستم عامل شروع میشه به بوت شدن.

بوت شدن سیستم عامل
بوت شدن سیستم عامل

و میبینید که به راحتی خیار یک سیستم عامل ساختیم

اما این سیستم عامل چیکار می کنه؟

این سیستم عامل کد هایی که در kernel.cs (همون فایلی که الان برامون باز کرده) رو تبدیل به اسمبلی می کنه

و یک فایل iso در ProjectName\bin\Debug\netcoreapp2.0\cosmos\ProjectName.iso درست می کنه

نکته : ProjectName در دایرکتوری اسم پروژه تان است

ProjectName.iso
ProjectName.iso

و حالا ببینم این سیستم عامل کوچیکمون چی کار می کنه

سیستم عامل چی کار می کنه
سیستم عامل چی کار می کنه

سیستم عاملمون از کاربر یک ورودی می گیره (مثلا من آرش هستم) و خروجی جواب میده : شما فلان چیز را تایپ کردید (شما من آرش هستم را تایپ کردید)

حالا بریم ببینیم کد سیستم عامل چی هست

1using System;
1using System.Collections.Generic;
1using System.Text;

خب اینجا namespace های که نیاز داریم رو صدا می زنیم

1using Sys = Cosmos.System;

خب اینجا یک متغیر درست می کنیم که با استفاده از اون می توانیم به سیستم دسترسی داشته باشیم (مثلا سیستم رو خاموش کنیم)

1namespace ProjectName

یک namespace تعریف می کنیم

1public class Kernel : Sys.Kernel

یک کلاس تعریف می کنیم

1protected override void Run()
1        {
1            Console.Write("Input: ");
1            var input = Console.ReadLine();
1            Console.Write("Text typed: ");
1            Console.WriteLine(input);
1        }

قبل از اینکه برم تابع Start رو بگم باید باید بدونید که تابع Run چی کار میکنه

تابع Run دستوراتی که داخلش نوشته شده را رو بصورت while (نامحدود) اجرا می کنه

(برای کسانی که یونیتی کار می کنن : مثل همون تابع Update)

و این تابع گفته یک ورودی از کاربر بگیره و اون رو چاپ کنه

1protected override void BeforeRun()
1        {
1            Console.WriteLine("Cosmos booted successfully. Type a line of text to get it echoed back.");
1        }

خب تابع BeforeRun در واقع کارش اینه قبل اینکه تابع Update اجرا بشه یک دستوری رو اجرا کنه

(برای کسانی که یونیتی کار می کنن : همون تابع Start)

حالا مزیت تابع BeforeRun چیه؟

تابع استارت مثل Run دستور داخلش رو while (نامحدود) اجرا نمی کنه

و فقط اول اجرا شدن سیستم عامل اجرا میشه

خب حالا با اجزای کد سیستم عاملتون آشنا شدید

امیدوارم از این پست خوشتون اومده باشه و اون لایک رو بکوب تا ما رو شاد کنی قبلش یک نکته ای رو بگم اگه سوالی داشتی می تونی توی دیسکورد کازموز کمک بگیری که خیلی کامنیوتی بزرگی و به دردت می خوره (من خودم نتیجه گرفتم)

یا اگر اینگلیسیت خوب نیست توی کامنتا بهم بگو تا اگر تونستم کمکت کنم.

و ببخشید خیلی دیر پست جدید رو منتشر کردم و تلاش می کنم از این به بعد بیشتر پست بزارم

تا پست های بعدی بدرود ♥ .

نویسنده مطلب: آرش

منبع مطلب

به فکر سرمایه‌گذاری هستی؟

با هر سطحی از دانش در سریع‌ترین زمان با آموزش گام به گام، سرمایه گذاری را تجربه کن. همین الان میتونی با لینک زیر ثبت نام کنی و ۱۰ درصد تخفیف در کارمزد معاملاتی داشته باشی

ثبت نام و دریافت جایزه
ممکن است شما بپسندید
نظر شما درباره این مطلب

آدرس ایمیل شما منتشر نخواهد شد.