OS ve dosyayı açacak uygulama arasındaki bağ?

Başlatan mir_as82, 30 Ocak 2019, 12:00:17

mir_as82

İşletim sistemi dosyalar ile onları açacak uygulamalar arasındaki bağı nasıl kurar?
Dosya boyutunda bilen varsa anlatabilirse sevinirim.

MC_Skywalker

Windows öteden beridir registry içinde bu kayıtları tutar regedit programını çalıştırıp HKEY_CLASSES_ROOT anahtarının altına bakın.

bu kayıt değerleri bizim alayacağımız dilden olduğu gibi çoğunlukla hex değer olarak bulunur.  HKEY_LOCAL_MACHINE\SOFTWARE ve HKEY_CURRENT_USER\Software kayıtları altında bulunan programları/uygulamaları  işaret eder.

mir_as82

Bir dosya açılacağı zaman, dosyanın ne olduğu, işletim sistemi tarafından nasıl anlaşılıyor?
Örneğin jpg dosyası ile text dosyasına tıkladığımız anda dosyaların içi incelenip ona göre mi runtime da bu dosya text dosyası git default text editör e bu dosyayı girdi ver mi deniliyor ?

z

ext herhalde DB de araniyordur. Ext karsisinda bunu tanimlayan verilerden birisi de bunu acacak olan programin adidir.
Dedigin gibi olsaydi dosya adini rename ederken extini ne verirsen ver her defasinda acilmasi lazimdi.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

brandice5

Dosyanın uzantısına bakıyor. JPG ise görüntüleyiciyi açıyor. TXT ise text editörü açıyor.
Windows registry bilgilerinde hangi dosya uzantsının hangi uygulama ile açılacağını gösteren bir liste var.
Dosyanın uzantısı yok ise veya uzantı o listede yok ise Windows bu dosyayı hangi program ile açayım diye soruyor.

Yani dosyanın içini okumak gibi bir işlem yok.

Tagli

Linux'ta her zaman değilse bile bazen, dosya uzantısı olmasa veya farklı bir şey olsa bile işletim sistemi o dosyanın türünü anlayıp doğru program ile açabiliyor. Bunun en yaygın örneği uzantısız text dosyaları.

Bildiğim kadarıyla, bazı dosya türlerinde tür bilgisi dosyanın başında bir yerde saklanıyor. Veya veri yapısından da çıkartılıyor olabilir. Linux sistemlere alışık olanlar "file" isimli komutu/programı bilirler. Bu komut herhangi bir dosyayı inceleyip onun ne olduğu hakkında iyi bir tahminde bulunabiliyor.
Gökçe Tağlıoğlu

foseydon

2 soru da cevaplanmış.
1. registry'ye yazıyor.
2. dosya uzantısına bakıyor

@Tagli *nix işletim sistemlerinden hersey dosyadır ve text'tir. ornegin executable bir dosya text dosyasi gibi islem gorebilir. istersen metin editoru ile acabilirsin, icerigini anlayamabilirsin elbette. program icin herhangi bir ayar yoksa, otomatik olarak metin editoru ile acar. yani uzantisiz dosyalar metin belgesi olarak islem gorur. aslinda dosya uzantisinin bu isletim sistemlerinde onemi de yoktur, dosya basligina bakarak karar verir. uzantilar insanlar icindir.

ayni zamanda hersey dosyadir. ornegin klasorler bir dosyadir, hatta socket'ler vs. bile dosyadir. seri port'a yazarken aslinda bir dosyaya yazarmis gibi islem yapariz, bir farki yoktur. bunlarin bilgileri de dosya sistemi icerisinde tutulur, komutlar burdan okur bilgileri. dosyanin icerisinde dosyaya ait bilgiler bulunur, bu sayede, misal, normal netin belgesi ile seri port ayirt edilmis olur.

OptimusPrime

https://donanimveyazilim.wordpress.com || Cihân-ârâ cihân içredir ârâyı bilmezler, O mâhîler ki deryâ içredir deryâyı bilmezler ||

yamak

#8
   Hocam linux'te VFS(Virtual Filesystem Switch) adında bir katman var.User space deki programlar bu katman sayesinde dosyanın bulunduğu file system ın ne olduğu bilmeden read write open close gibi system call lar kullanarak dosya üzerinde işlem yapabilirler.
    Fakat bu sistem çağrılarında kernel space de dosyanın bulunda partition un header ı okunarak hangi file system olduğuna bakılır o file system a uygun bir şekilde dosya üzerinde işlem yapılır.
    Arkadaşların da söylediği gibi Linux te network device ları hariç her şey bir dosyadır. Driver lar bile dosyadır.
Örneğin sys dizini Sysfs adında bir file system la formatlıdır.Bu dizinde device driver lar bulunur.Örneği gpio driver ını a ait dosyalara read write gibi komutlarla erişip gpio ları kontrol edebilirsin.Ya da proc dizinindeki dosyaları okuyarak ya da yazarak kernel ve çalışan processler hakkında bilgi edinebilir ya da konfigüre edebilirsin.