Bir işletim sistemi nasıl yapılır

kimbilirnezman
02-03-2014, 11:49   |  #26  
Taze Üye
Teşekkür Sayısı: 0
1 mesaj
Kayıt Tarihi:Kayıt: Mar 2014
Alıntı: tayartekin  
kardeş C++ , assembly, pascal gibi bir sürü yazılımsal kodlama dilleri vardır. senin o sistemindeki dosyaların her biri 1011011010001010001101100111... gibi kodlardan oluşur. işletim sistemi yazmak öyle he deyince olmuyor. xp  yi sadece bill gates değil yanlarında çalışan yüzlerce yazılım mühendisi yazdı
Arkadaşım Yalan bilgiler söyleme, Bill Gates çalıştığı şirketin bilgisayarında tek başına microsoft'u yazdı microsoft'ta windows 1997

yazdı böylece bir işletim sistemi kuruldu yani ; tek başına şirketin bilgisayarında boş zamanlarında yazmıştır

oasman
02-03-2014, 21:03   |  #27  
oasman avatarı
Yıllanmış Üye
Teşekkür Sayısı: 13
185 mesaj
Kayıt Tarihi:Kayıt: Kas 2013
Alıntı: kimbilirnezman  
Arkadaşım Yalan bilgiler söyleme, Bill Gates çalıştığı şirketin bilgisayarında tek başına microsoft'u yazdı microsoft'ta windows 1997

yazdı böylece bir işletim sistemi kuruldu yani ; tek başına şirketin bilgisayarında boş zamanlarında yazmıştı

Bir düzeltme yapayım. Bill Gates Dos işletim sistemini bir arkadaşından satın almış ve daha iyi bir fiyatla IBM'e satmış. Ve IBM de çalışmaya başlamış. O Dos isimli işletim sistemide yine başka bir sistemin kopyası olduğundan, hak sahiplari ile Patent nedeniyle davalık olmuşlar. Davacılar kazanmışlar, ancak o zamana kadar köşeyi dönen dönmüş. Kısaca herkes birbirini kazıklamış.

Sonra o Dos isimli işletim sistemi üzerine ilk Windows kurulmuş. Bu gün komutsatırı olarak bildiğimiz siyah bir karakutuya benzeyen uygulama, Dos'un taklidi sayılır. Aynı komutlar kullanılıyor. Windows 2000 ve sonrası ise Microsoftun lk Server'i olan WindowsNT'nin masaüstü sürümleri olurlar.

ekremkocak
11-07-2015, 12:42   |  #28  
Taze Üye
Teşekkür Sayısı: 0
2 mesaj
Kayıt Tarihi:Kayıt: Tem 2015

//------------------------------------------------------------------------------------------------------------//
//               Code By Ekrem KOCAK                                                                          //
//             ekremkocakhotmail.com                                                                         //
//                  Kırşehir  2006                                                                           //                                                                                                                                                                                                                   //
//                                                                                                            //
//----------------------------------------------------------------------------------------------------------- //


program CreateKernel;

{$APPTYPE CONSOLE}
uses
  Windows,SysUtils,Classes,Dialogs;


Type
  TMultibootheader= packed record
      magic         :DWORD;
      flags         :DWORD;
      checksum      :DWORD;
      header_addr   :DWORD;
      load_addr     :DWORD;
      load_end_addr :DWORD;
      bss_end_addr  :DWORD;
      entry_addr    :DWORD;
      mode_type     :DWORD;
      width         :DWORD;
      height        :DWORD;
      depth         :DWORD;
  end;

//------------- Kernel Code  Begin --------------------------

procedure Main(); stdcall;forward;

procedure  loader; stdcall;
asm
   cli
   call   main
   hlt
end;

function Screen():PChar; stdcall; //Video bellek bölgesini gösteren işaretçi
begin
  Result:=PChar($B8000);
end;


procedure Cls(); stdcall;
var
i: integer;
begin
   for i:=0 to 2000 do
   begin
      Screen[i*2]:=#0;
      Screen[i*2-1]:=char(6); //color white
   end;
end;

procedure putpixel(X, Y: integer; text:Char;Color:Byte); stdcall;
var
address: Word;
begin
    address:= X*2 + Y * 160;
    Screen[address]:= text;
    Screen[address+1]:= char(Color);
end;


procedure WriteLn(X, Y: integer;Text : PCHAR; Color:Byte); stdcall;
var
address: Word;
i: integer;
begin

  i:=0;
  repeat
    address:= X*2 + Y * 160;
    Screen[address]:= (text);
    Screen[address+1]:= char(Color);
    inc(x);
    i:=i + 1;
  until text = #0

end;


procedure Main(); stdcall;
var
Str:pchar;
begin
    Cls();
    str:='Merhaba Dünya';
    WriteLn(1,2,Str,4);
end;

procedure loader_end();
begin
end;
//------------- Kernel Code  End --------------------------


var
Multibootheader:TMultibootheader;
MemoryStream:TMemoryStream;
pFunc:  Pointer;
dwSize: DWORD;
fwSize: DWORD;
pBuff:  Pointer;

ImageBase        : Integer;
Entry_addr       : Integer;

begin
   // Project > Options... > Packages Tab > Runtime packages group box > Build witg runtime packages check box  true
   ImageBase := $00400000; // Project > Options... > Linker Tab > Memory sizes group box > Image Base
   Entry_Addr:= DWORD(@loader) - ImageBase ;

   //showmessage(inttohex(entry_addr,8) );
  MemoryStream:=TMemoryStream.Create;
  try
    FillChar(Multibootheader, 48, #0);
    Multibootheader.magic         := ($1BADB002);
    Multibootheader.flags         := (1 shl 16) ;
    Multibootheader.checksum      := DWORD(-($1BADB002 + (1 shl 16)));
    Multibootheader.header_addr   := ($00400000);
    Multibootheader.load_addr     := ($00400000);
    Multibootheader.load_end_addr := ($00000000);
    Multibootheader.bss_end_addr  := ($00000000);
    Multibootheader.entry_addr    := DWORD(ImageBase + Entry_Addr );
    Multibootheader.mode_type     := ($00000000);
    Multibootheader.width         := ($00000000);
    Multibootheader.height        := ($00000000);
    Multibootheader.depth         := ($00000000);

    MemoryStream.Write(Multibootheader, SizeOf(Multibootheader));

    dwSize := Entry_Addr - Sizeof(Multibootheader)  ;
    GetMem(pBuff, dwSize);
    ZeroMemory(pBuff, dwSize);
    MemoryStream.Write(pBuff^, dwSize);
    FreeMem(pBuff, dwSize);

    pFunc := @loader;
    fwSize := DWORD(@loader_end) - DWORD(@loader);

    dwSize :=  $1000 - (fwSize);
    GetMem(pBuff, dwSize);
    ZeroMemory(pBuff, dwSize);
    MemoryStream.Write(pFunc^, fwSize);
    MemoryStream.Write(pBuff^, dwSize);
    FreeMem(pBuff, dwSize);
   
    MemoryStream.SaveToFile('Kernel.bin');
  finally
    MemoryStream.Free;
  end;

end.

ekremkocak
11-07-2015, 12:43   |  #29  
Taze Üye
Teşekkür Sayısı: 0
2 mesaj
Kayıt Tarihi:Kayıt: Tem 2015

Bu kod delphi ile basit bir işletim sistemi yazmak içindir... codu delphi ile derleyip 

qemu.exe -kernel kernel.bin ile calıştırılır...