C# İle Gerçek Bir "İşletim Sistemi" Yapmak!

"Xale

Katılımcı Üye
16 Eki 2020
442
20
Merhabalar bugün sizlere C# ile bir konsol uygulaması yapıp bunu bir iso dosyasına nasıl çevirirsiniz bundan bahsedicem.​

Önce Cosmos eklentisini indiriyoruz:​

https://github.com/CosmosOS/Cosmos/releases/tag/Userkit_20200708

VirusTotal: (Tarama tarihi: 3/15/2021)​
https://www.virustotal.com/gui/file/e4036d811c5ec740927d8efefe523ea1f16652a934596cb914772631b56f550f/detection

Fotoğraftaki yazıya tıklayarak eklentiyi indiriyoruz:​
HvE3l4.jpg


Daha sonra Visual Studio`ya giriyoruz ve arama bölümüne Cosmos yazıyoruz. Sonra karşımıza Cosmos Kernel gibi bir çok seçenek çıkıcak. Açıklaması A project for creating C# Cosmos Kernel olanı seçin.​

guz11u.jpg


Sonra karşınıza şöyle bir kod sayfası gelicek:

Kod:
using System;
using System.Collections.Generic;
using System.Text;
using Sys = Cosmos.System;

namespace CosmosKernel1
{
    public class Kernel : Sys.Kernel
    {
        protected override **** BeforeRun()
        {
            Console.WriteLine("hi");
        }

        protected override **** Run()
        {
          // buraya kodlarımızı yazıcaz

        }
    }
}
Zwt2lc.jpg

// buraya kodlarımızı yazıcaz bölümünü silin ve oraya istediğiniz C# kodlarını yazın. Bunları işletim sistemimizde çalıştıracağız.
Örnek komut:
Kod:
Console.Clear();
            Console.WriteLine("Deneme sistemine hoş geldiniz.");

iso dosyası almak için:​
C:\Users\(Kullanıcı adınız)\AppData\Roaming\Cosmos User Kit yolundan Cosmos adlı iso dosyasını alabilirsiniz.

Örnek işletim sistemi: // MatematikOS :D
Kod:
    class HesapMakinesi
        {

            public static double islemYap(double sayi1, double sayi2, string op)
            {
                // operatör değerine göre case işlemlerinden biri gerçekleştirilir.
                switch (op)
                {
                    case "+": return sayi1 + sayi2;
                    case "-": return sayi1 - sayi2;
                    case "*": return sayi1 * sayi2;
                    case "/":
                        // 2. sayı 0 değilse işlemi yapar.
                        if (sayi2 != 0)
                        {
                            return sayi1 / sayi2;
                        }
                        else
                        {
                            return double.NaN;
                        }
                    default: return double.NaN;
                }
            }
        }
        class Program
        {
            static **** Main(string[] args)
            {
                bool cikis = false;
                Console.WriteLine("--------------------------------------");
                Console.WriteLine("----------<|-MatematikOS :D-|>----------");
                Console.WriteLine("--------------[THT Sunar ]---------------");
                Console.WriteLine("--------------------------------------");
                Console.WriteLine("");


                while (!cikis)
                {
                    // Değişkenleri tanımlıyoruz ve boş olarak atıyoruz.
                    string sayi1 = "";
                    string sayi2 = "";
                    double sonuc = 0;

                    // Kullanııcıdan birinci sayıyı girmesini istiyoruz
                    Console.Write("Birinci Sayıyı Giriniz: ");
                    sayi1 = Console.ReadLine();

                    double dogruSayi1 = 0;
                    while (!double.TryParse(sayi1, out dogruSayi1))
                    {
                        Console.Write("Bu geçerli bir sayı değil. Lütfen bir tamsayı giriniz.: ");
                        sayi1 = Console.ReadLine();
                    }

                    // Kullanııcıdan ikinci sayıyı girmesini istiyoruz
                    Console.Write("İkinci Sayıyı Giriniz: ");
                    sayi2 = Console.ReadLine();

                    double dogruSayi2 = 0;
                    while (!double.TryParse(sayi2, out dogruSayi2))
                    {
                        Console.Write("Bu geçerli bir sayı değil. Lütfen bir tamsayı giriniz. ");
                        sayi2 = Console.ReadLine();
                    }

                    // İşlem Seçim Bölümü
                    Console.WriteLine("Lütfen Listeden bir işlem seçiniz:");
                    Console.WriteLine("\t+ - Toplama");
                    Console.WriteLine("\t- - Çıkarma");
                    Console.WriteLine("\t* - Çarpma");
                    Console.WriteLine("\t/ - Bölme");
                    Console.Write("Seçiminiz? ");

                    string op = Console.ReadLine();

                    try
                    {
                        sonuc = HesapMakinesi.islemYap(dogruSayi2, dogruSayi1, op);
                        if (double.IsNaN(sonuc))
                        {
                            Console.WriteLine("Bu işlem matematiksel bir hataya neden oldu.\n");
                        }
                        else Console.WriteLine("Sonucunuz: {0:0.##}\n", sonuc);
                    }
                    catch (Exception e)
                    {
                        Console.WriteLine("Sonucu hesaplarken bir hata oluştu \n: " + e.Message);
                    }

                    Console.WriteLine("------------------------\n");

                    // Kapatmadan önce kullanıcının yanıt vermesini bekleyin.
                    if (Console.ReadKey().Key == ConsoleKey.Escape) cikis = true;

                    Console.WriteLine("\n");
                }
                Console.WriteLine("Hayırlı günler.");
                Console.ReadKey();
            }
        } }


    }


Hayırlı günler ve Hayırlı çalışmalar.​
 
Son düzenleme:

odexed

Yeni üye
10 Mar 2021
26
0
İyi bir konu. Tht ailesinde böyle konular açan çok kişi gördüm. Bence bu konuları açanlar birleşip tht ailesine özel bir linux distrosu yapabilirler.


Tht sitesinde tool,program desktop environment için anket yaparak ortaya muazzam bir linux distrosu çıkarabilirler. Ben anlamam işletim sistemi yapmaktan ama elimden geldiği kadar yardımcı olurum. SADECE BİR ÖNERİ.
 

"Xale

Katılımcı Üye
16 Eki 2020
442
20
Önerin için teşekkürler, ancak C# ile bu mümkün olur mu bilemem. Ancak C, C++, Assembly gibi dilleri bilen kişiler birleşip güzel şeyler yapabilirler.
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.