Linux sistem yapısının ayrıntılı açıklaması

Linux sistemleri genellikle 4 ana bölümden oluşur:

Çekirdek, kabuk, dosya sistemi ve uygulamalar . Çekirdek, kabuk ve dosya sistemi birlikte temel işletim sistemi yapısını oluşturur ve kullanıcıların programları çalıştırmasına, dosyaları yönetmesine ve sistemi kullanmasına izin verir. Hiyerarşinin bir kısmı Şekil 1-1'de gösterilmektedir.

1. linux çekirdeği

Çekirdek, işletim sisteminin çekirdeğidir ve birçok temel işlevi vardır.Sistemin işlemlerini, belleğini, aygıt sürücülerini, dosyalarını ve ağ sistemlerini yönetmekten sorumludur ve sistemin performansını ve kararlılığını belirler.

Linux çekirdeği şu bölümlerden oluşur: bellek yönetimi, süreç yönetimi, aygıt sürücüleri, dosya sistemi ve ağ yönetimi vb. Gosterildigi gibi:

Şekil 1

Sistem çağrısı arayüzü : SCI katmanı, kullanıcı alanından çekirdeğe işlev çağrılarını yürütmek için bazı mekanizmalar sağlar. Bu arayüz, aynı işlemci ailesi içinde bile mimariye bağlıdır. SCI aslında çok kullanışlı bir işlev çağrı çoklama ve çoğullama çözme hizmetidir. SCI uygulamalarını ./linux/kernel içinde ve mimariye bağlı parçaları ./linux/arch içinde bulabilirsiniz.

1. Bellek Yönetimi

Herhangi bir bilgisayar için belleği ve diğer kaynakları sınırlıdır. Sınırlı fiziksel belleğin uygulamaların büyük bellek talebini karşılamasına izin vermek için Linux, "sanal bellek" adı verilen bir bellek yönetimi yöntemi kullanır. Linux, belleği, kullanımı kolay "bellek sayfalarına" (çoğu mimari için 4KB) böler. Linux, fiziksel ve sanal haritalama tarafından kullanılan donanım mekanizmalarının yanı sıra kullanılabilir belleği yönetme yollarını içerir.

Ancak, bellek yönetiminin 4KB'den fazla arabelleği yönetmesi gerekir. Linux, döşeme ayırıcı gibi 4KB tamponlar için bir soyutlama sağlar. Bu bellek yönetimi modu, temel olarak 4KB arabellek kullanır ve daha sonra ondan yapıları tahsis eder ve hangi bellek sayfalarının dolu olduğu, hangi sayfaların tam olarak kullanılmadığı ve hangi sayfaların boş olduğu gibi bellek sayfası kullanımını izler. Bu, modun bellek kullanımını sistem ihtiyaçlarına göre dinamik olarak ayarlamasına izin verir.

Hafızanın birden fazla kullanıcı tarafından kullanılmasını desteklemek için bazen kullanılabilir hafıza tüketilir. Bu nedenle sayfalar hafızadan çıkarılıp diske yerleştirilebilir. Bu işleme takas denir çünkü sayfalar bellekten sabit diske değiştirilir. Bellek yönetimi için kaynak kodu ./linux/mm içinde bulunabilir.

2. Süreç yönetimi

Bir süreç, aslında belirli bir uygulamanın çalışan bir varlığıdır. Bir Linux sisteminde, birden fazla işlem aynı anda çalışabilir ve Linux, bu işlemleri sırayla kısa bir zaman aralığında çalıştırarak "çoklu görev" gerçekleştirir. Bu kısa zaman aralığına "zaman dilimi" adı verilir, süreçleri çalıştırma yöntemine de "işlem çizelgeleme" ve çizelgelemeyi tamamlayan programa zamanlayıcı adı verilir.

İşlem planlama kontrolleri işlemciye erişim sağlar. Bir sonraki işlemin çalışması için seçilmesi gerektiğinde, programlayıcı çalıştırılacak en değerli işlemi seçer. Çalıştırılabilir bir işlem, aslında yalnızca CPU kaynaklarını bekleyen bir işlemdir. Bir işlem diğer kaynakları bekliyorsa, işlem çalıştırılabilir bir işlem değildir. Linux, yeni süreçleri seçmek için nispeten basit bir önceliğe dayalı süreç planlama algoritması kullanır.

Çoklu görev mekanizması sayesinde, her işlemin yalnızca bilgisayara sahip olduğu düşünülebilir ve böylece programın programlanması basitleştirilebilir. Her işlemin kendi ayrı adres alanı vardır ve sadece bu işlemle erişilebilir.Bu şekilde işletim sistemi, işlemler arasında karşılıklı etkileşimi ve "kötü" programların sisteme verebileceği olası zararı önler. Belirli bir görevi gerçekleştirmek için bazen iki programın işlevlerini entegre etmek gerekir, örneğin, bir program metin çıktısı verir ve diğer program metni sıralar. Bu amaçla, işletim sistemi ayrıca bu tür görevlerin tamamlanmasına yardımcı olmak için işlemler arası bir iletişim mekanizması sağlar. Linux'taki ortak süreçler arası iletişim mekanizmaları arasında sinyaller, borular, paylaşılan bellek, semaforlar ve soketler bulunur.

Çekirdek, yeni bir işlem (fork, exec veya Portable Operating System Interface işlevi) oluşturmak, işlemi durdurmak (kill, exit) ve aralarında iletişim kurmak ve senkronize etmek için SCI aracılığıyla bir uygulama programlama arayüzü (API) sağlar POS mekanizması).

3. Dosya sistemi

DOS gibi işletim sistemlerinden farklı olarak, Linux işletim sistemindeki bağımsız dosya sistemi, sürücü harfiyle veya sürücü adıyla (A: veya C: vb. Gibi) tanımlanmaz. Aksine, UNIX işletim sistemi gibi, Linux işletim sistemi de bağımsız dosya sistemlerini hiyerarşik bir ağaç yapısında birleştirir ve tek bir varlık bu dosya sistemini temsil eder. Linux, "bağlama" veya "bağlama" adı verilen bir işlem aracılığıyla yeni bir dosya sistemini bir dizine bağlar, böylece farklı dosya sistemleri bir bütün halinde birleştirilir. Linux işletim sisteminin önemli bir özelliği, birçok farklı dosya sistemini desteklemesidir. Linux'ta en yaygın kullanılan dosya sistemi, aynı zamanda yerel bir Linux dosya sistemi olan Ext2'dir. Ancak Linux, FAT, VFAT, FAT32 ve MINIX gibi farklı dosya sistemlerini de destekleyebilir, böylece diğer işletim sistemleriyle kolayca veri alışverişi yapabilir. Çünkü Linux, birçok farklı dosya sistemini destekler ve bunları birleşik bir sanal dosya sistemi halinde düzenler.

Sanal Dosya Sistemi (VFS): Çeşitli donanımların belirli ayrıntılarını gizler, dosya sisteminin çalışmasını farklı dosya sistemlerinin belirli uygulama ayrıntılarından ayırır ve tüm cihazlar için birleşik bir arayüz sağlar. Düzinelerce farklı dosya sistemi. Sanal dosya sistemi, mantıksal dosya sistemi ve aygıt sürücüsüne bölünebilir. Mantıksal dosya sistemi, ext2, fat vb. Gibi Linux tarafından desteklenen dosya sistemini ifade eder ve aygıt sürücüsü, her donanım denetleyicisi için yazılan aygıt sürücüsü modülünü ifade eder.

Sanal dosya sistemi (VFS), Linux çekirdeğinin çok kullanışlı bir yönüdür çünkü dosya sistemi için ortak bir arayüz soyutlaması sağlar. VFS, SCI ile çekirdek tarafından desteklenen dosya sistemi arasında bir değişim katmanı sağlar. Yani, VFS, kullanıcı ve dosya sistemi arasında bir değişim katmanı sağlar.

VFS kullanıcıları ve dosya sistemi arasında bir değişim katmanı sağlanır:

VFS'de, açma, kapatma, okuma ve yazma gibi işlevler için genel bir API soyutlamasıdır. VFS'nin altında, üst düzey işlevlerin uygulanmasını tanımlayan dosya sisteminin soyutlaması vardır. Belirli bir dosya sistemi için eklentilerdir (50'den fazla). Dosya sisteminin kaynak kodu ./linux/fs içinde bulunabilir.

Dosya sistemi katmanının altında, dosya sistemi katmanı için bir dizi genel işlev sağlayan (belirli dosya sisteminden bağımsız) arabellek önbelleği bulunur. Bu önbelleğe alma katmanı, verileri bir süre saklayarak (veya daha sonra verileri gerektiğinde önceden okuyarak) fiziksel cihazlara erişimi optimize eder. Arabellek önbelleğinin altında, belirli bir fiziksel aygıtın arayüzünü uygulayan aygıt sürücüsü bulunur.

Bu nedenle, kullanıcıların ve işlemlerin dosyaların bulunduğu dosya sisteminin türünü bilmesine gerek yoktur, yalnızca bunları Ext2 dosya sisteminde dosyalar olarak kullanmaları gerekir.

4. Cihaz Sürücüleri

Aygıt sürücüleri, Linux çekirdeğinin ana parçasıdır. İşletim sisteminin diğer bölümlerine benzer şekilde, aygıt sürücüsü yüksek ayrıcalıklı bir işlemci ortamında çalışır, böylece doğrudan donanım üzerinde çalışabilir, ancak bu nedenle herhangi bir aygıt sürücüsü hatası, işletim sisteminin çökmesine neden olabilir. Aygıt sürücüsü aslında işletim sistemi ile donanım aygıtı arasındaki etkileşimi kontrol eder. Aygıt sürücüsü, işletim sisteminin işletim sistemiyle etkileşimi tamamlamak için anlayabileceği bir dizi soyut arabirim sağlar ve donanımla ilgili belirli işlem ayrıntıları aygıt sürücüsü tarafından tamamlanır. Genel olarak, aygıt sürücüleri ve aygıtlar

Örneğin, bilgisayarın sabit diski bir SCSI sabit diskiyse, IDE sürücüsü yerine bir SCSI sürücüsü kullanmanız gerekir.

5. Ağ arayüzü (NET)

Çeşitli ağ standartlarına erişim ve çeşitli ağ donanımları için destek sağlar. Ağ arayüzü, ağ protokolüne ve ağ sürücüsüne bölünebilir. Ağ protokolü kısmı, olası her ağ aktarım protokolünü uygulamaktan sorumludur. Hepimizin bildiği gibi, TCP / IP protokolü İnternet'in standart protokolüdür ve aynı zamanda fiili endüstri standardıdır. Linux'un ağ uygulaması BSD soketlerini ve tüm TCP / IP protokollerini destekler. Linux çekirdeğinin ağ bölümü BSD soketlerinden, ağ protokol katmanlarından ve ağ aygıt sürücülerinden oluşur.

Ağ aygıtı sürücüsü, donanım aygıtıyla iletişimden sorumludur ve olası her donanım aygıtının karşılık gelen bir aygıt sürücüsü vardır.

2. linux kabuğu

Kabuk, sistemin kullanıcı arabirimidir ve kullanıcının çekirdekle etkileşime girmesi için bir arabirim sağlar. Kullanıcı tarafından girilen komutu alır ve yürütmesi için çekirdeğe gönderir, bir komut yorumlayıcısıdır. Ek olarak, kabuk programlama dili, sıradan programlama dillerinin birçok özelliğine sahiptir ve bu programlama dilinde yazılan kabuk programları, diğer uygulamalarla aynı etkilere sahiptir.

Şu anda kabuğun esas olarak aşağıdaki sürümleri var.

1. Bourne Shell: Bell Labs tarafından geliştirilmiştir.

2. BASH: Bu, GNU işletim sistemindeki varsayılan kabuk olan GNU'nun Bourne Again Kabuğudur.Çoğu Linux dağıtımı bu kabuğu kullanır.

3. Korn Shell: İçeriğin çoğunda Bourne Shell ile uyumlu olan Bourne SHell'in geliştirilmesidir.

4. C Shell: Sun Shell'in BSD versiyonudur.

3. linux dosya sistemi

Dosya sistemi, dosyaları diskler gibi depolama aygıtlarında depolamak için bir organizasyon yöntemidir. Linux sistemi, EXT2, EXT3, FAT, FAT32, VFAT ve ISO9660 gibi şu anda popüler olan çeşitli dosya sistemlerini destekleyebilir.

3.1 Dosya türü

Linux altındaki ana dosya türleri şunlardır:

1) Ortak dosyalar: C dili meta kodu, SHELL komut dosyası, ikili yürütülebilir dosyalar vb. Düz metin ve ikiliye bölünmüştür.

2) Dizin dosyası: Dizin, dosyaların saklanacağı tek yerdir.

3) Bağlantılı dosyalar: aynı dosyaya veya dizine işaret eden dosyalar.

4) Aygıt dosyaları: genellikle / dev altında sistem çevre birimleriyle ilgilidir. Blok cihazlara ve karakter cihazlarına bölünmüştür.

5) Boru hattı (FIFO) dosyası: İletişim kurmak için süreç için bir yol sağlayın

6) Soket dosyası: Bu dosya türü ağ iletişimi ile ilgilidir

Dosya türünü ve diğer ilgili bilgileri görüntülemek için ls -l, file, stat komutlarını kullanabilirsiniz.

3.2 Linux dizini

Dosya yapısı, diskler gibi depolama aygıtlarında depolanan dosyaların organizasyon yöntemidir. Esas olarak dosya ve dizinlerin organizasyonuna yansır.

Dizinler, dosyaları yönetmek için uygun ve etkili bir yol sağlar.

Linux standart bir dizin yapısı kullanır.Kurulum sırasında, kurulum programı kullanıcı için bir dosya sistemi ve tam ve sabit bir dizin bileşimi oluşturmuş ve her dizinin rolünü ve içindeki dosya türlerini belirlemiştir.

Dizin ağacının tamamı küçük parçalara bölünebilir ve bu küçük parçalar kendi disklerinde veya bölümlerinde ayrı ayrı saklanabilir. Bu şekilde, nispeten kararlı parça ve sık değişen parça, yedeklemeyi veya sistem yönetimini kolaylaştırmak için farklı bölümlerde ayrı ayrı depolanabilir. Dizin ağacının ana bölümleri root, / usr, / var, / home, vs.'dir (Şekil 2). Bu düzen, dosya sisteminin belirli bölümlerini Linux bilgisayarlar arasında paylaşmayı kolaylaştırır.

şekil 2

Linux bir ağaç yapısı kullanır. En üst seviye kök dizindir ve diğer tüm dizinler kök dizinden oluşturulur.

Microsoft DOS ve Windows da bir ağaç yapısı kullanır, ancak DOS ve Windows'taki ağaç yapısının kökü, disk bölümünün sürücü harfidir.Birkaç bölümde birkaç ağaç yapısı vardır ve aralarındaki ilişki paraleldir. nın-nin. En iyileri farklı disklerdir (bölümler), örneğin: C, D, E, F, vb.

Ancak Linux'ta, işletim sisteminin yönettiği disk bölümü ne olursa olsun, böyle bir dizin ağacı vardır. Yapısal olarak, her disk bölümündeki ağaç türü dizinlerin paralel olması gerekmez.

3.3 Linux Disk Bölümü

1. Birincil bölüm, genişletilmiş bölüm ve mantıksal bölüm:

Linux bölümü Windows'tan farklıdır, sabit disk ve sabit disk bölümlerinin ikisi de Linux'ta aygıtlar olarak temsil edilir.

Üç tür sabit disk bölümü vardır: birincil bölüm, genişletilmiş bölüm ve mantıksal bölüm.

Sabit disk bölümleri esas olarak birincil bölümlere ve uzantı bölümlerine bölünmüştür.Birincil bölümlerin ve genişletilmiş bölümlerin sayısının toplamı dördü geçemez.

Birincil Bölüm (Birincil Bölüm): Hemen kullanılabilir ancak bölümlenemez.

Uzantı Bölümü: Kullanılmadan önce bölümlenmesi gerekir, bu da iki kez bölümlenmesi gerektiği anlamına gelir.

Mantıksal Bölüm ((Mantıksal Bölüm)): Genişletilmiş bölüm tarafından oluşturulan bölüm. Mantıksal bölümlerin sayısında bir sınır yoktur.

Genişletilmiş bölüm, mantıksal bölümün "kapsayıcısı" dışında bir şey değildir Aslında, veri depolama için yalnızca birincil bölüm ve mantıksal bölüm kullanılır.

İki, Linux altında sabit disk bölümlerinin tanımlanması

Sabit disk bölümlerinin tanımlanması genellikle / dev / hdX veya / dev / sdX ile tanımlanır, burada sabit disk numarasını ve X, sabit diskteki bölüm numarasını temsil eder.

Tüm sabit disk bölümünün blok numarası tanımlaması: Linux altında, farklı sabit diskleri tanımlamak için hda, hdb, sda, sdb vb. Kullanın;

onların arasında:

IDE arabirim sabit diski: / dev / hda1, / dev / hdb ... olarak ifade edilir;

SCSI arabirimli sabit disk ve SATA arabirimli sabit disk, / dev / sda, / dev / sdb ... olarak ifade edilir;

Sabit diskteki bölümler: X'in değeri 1 ila 4 ise, bu sabit diskin birincil bölümü anlamına gelir (genişletilmiş bölüm dahil); mantıksal bölüm 5'ten başlar, örneğin / dev / hda5 mantıksal bir bölüm olmalıdır;

Örneğin:

Farklı bölümleri tanımlamak için hda1, hda2, hda5, hda6 kullanın. Bunlar arasında, a harfi ilk sabit diski, b ikinci sabit diski temsil eder ve bu böyle devam eder. 1 rakamı bir sabit diskin ilk bölümünü temsil eder, 2 ikinci bölümü temsil eder ve bu böyle devam eder. 1 ila 4, birincil bölüme (Birincil Bölüm) veya genişletilmiş bölüme (Genişletme Bölümü) karşılık gelir. 5'ten başlayarak, sabit diskin mantıksal bölümüne (Mantıksal Bölüm) karşılık gelir. Bir sabit diskin yalnızca bir birincil bölümü olsa bile, mantıksal bölümler 5'ten başlayarak numaralandırılır. Buna özellikle dikkat edilmelidir.

Özet: Bir sabit disk bölümü, önce hangi sabit diskin bulunduğu ve ardından sabit diskin hangi bölümünde bulunduğu onaylanmalıdır.

/ Dev / hda'nın benzer temsili için, bu alışılmadık bir durum değildir; Linux'ta fdisk -l aracılığıyla sabit diskin / dev / hda veya / dev / hdb olup olmadığını kontrol edebiliriz;

# fdisk -l

Disk / dev / hda: 80.0 GB, 80026361856 bayt

255 kafa, 63 sektör / parça, 9729 silindir

Birimler = 16065 * 512 = 8225280 baytlık silindirler

Aygıt Önyükleme Başlangıç Bitiş Blokları Kimlik Sistemi

/ dev / hda1 * 19707791493+ 7 HPFS / NTFS

/ dev / hda2971972970356667+ 5 Genişletilmiş

/ dev / hda5971291515623181 b W95 FAT32

/ dev / hda6291641319767488+ 83 linux

/ dev / hda7413255901171938683 linux

/ dev / hda8559168069767488+ 83 linux

/ dev / hda9680796572290062683 linux

/ dev / hda1096589729578308+ 82 linux takas / Solaris

Lütfen ilk satıra dikkat edin, Disk / dev / hda: 80.0 GB, 80026361856 bayt, bu, makinede 80.0G hacimli yalnızca bir sabit disk aygıtı / dev / hda olduğu anlamına gelir; aşağıdaki sabit disk bölümüdür, her bölüm Ayrıntılı bilgiler burada ayrıntılı olarak açıklanmayacaktır;

Linux altında disk bölümleri ve dizinler arasındaki ilişki aşağıdaki gibidir:

- Herhangi bir bölüm belirli bir dizine bağlanmalıdır.

- Dizin mantıksal bir ayrımdır. Bölme, fiziksel bir ayrımdır.

- Disk Linux bölümleri okuma ve yazma işlemlerini gerçekleştirmek için dizin ağacındaki belirli bir dizine bağlanmalıdır.

- Kök dizin, tüm Linux dosyalarının ve dizinlerinin bulunduğu yerdir ve bir disk bölümünün bağlanması gerekir.

3.4 Linux ana dizininin işlevi.

/ bin ikili çalıştırılabilir komut

/ dev aygıt özel dosyaları

/ etc sistem yönetimi ve yapılandırma dosyaları

/Etc/rc.d tarafından başlatılan yapılandırma dosyaları ve komut dosyaları

/ home Kullanıcının ev dizininin temel noktası.Örneğin, kullanıcının ev dizini / home / user olup, ~ user ile temsil edilebilir

/ lib Standart programlama kitaplığı, dinamik bağlantı paylaşılan kitaplığı olarak da adlandırılır, pencerelerdeki .dll dosyalarına benzer işlevler

/ sbin sistem yönetimi komutu, işte sistem yöneticisi tarafından kullanılan yönetim programı

/ tmp Ortak geçici dosya depolama noktası

/ root Sistem yöneticisinin ana dizini (hehe, ayrıcalıklı sınıf)

/ Mnt sistemi, kullanıcıların diğer dosya sistemlerini geçici olarak bağlamasına izin vermek için bu dizini sağlar.

/ lost + found Bu dizin genellikle boştur. "Evsiz" dosya (windows altında .chk olarak adlandırılır) sistem anormal bir şekilde kapandığında buradadır.

/ Proc sanal dizini, sistem belleğinin bir eşlemesidir. Sistem bilgilerini almak için bu dizine doğrudan erişebilirsiniz.

/ var Çeşitli hizmetlerin günlük dosyaları gibi bazı büyük dosyaların taşma alanı

/ usr En büyük dizin, kullanılacak hemen hemen tüm uygulamalar ve dosyalar bu dizinde bulunur. İçeren:

/ usr / X11R6 X penceresinin depolandığı dizin

/ usr / bin Çok sayıda uygulama

/ usr / sbin Süper kullanıcı yönetimi programları

/ usr / doc linux belgesi

/ usr / include Linux altında uygulamaları geliştirmek ve derlemek için gereken başlık dosyalarını içerir

/ usr / lib Yaygın olarak kullanılan dinamik bağlantı kitaplıkları ve yazılım paketlerinin yapılandırma dosyaları

/ usr / man yardım belgesi

/ usr / src kaynak kodu, linux kernel kaynak kodu / usr / src / linux içine yerleştirilir

/ usr / local / bin Yerel olarak eklenen komutlar

/ usr / local / lib Yerel olarak eklenen kitaplıklar

3.5 linux dosya sistemi

Dosya sistemi, dosyaların bulunduğu fiziksel alanı ifade eder.Linux sistemindeki her bölüm, kendi dizin hiyerarşisine sahip bir dosya sistemidir. Linux, farklı bölümlere ait olan bu ayrı dosya sistemleri ile bir sistemin genel dizin hiyerarşisini belirli bir şekilde oluşturacaktır. Bir işletim sisteminin işleyişi, dosyaların işleyişinden ayrılamaz, bu nedenle kendi dosya sistemine sahip olmak ve bunu sürdürmek gerekir.

1. Dosya sistemi türü:

ext2: Erken Linux'ta yaygın olarak kullanılan dosya sistemi

Ext3: ext2'nin günlük işlevli yükseltilmiş bir sürümü

RAMFS: bellek dosya sistemi, hızlı

NFS: SUN tarafından icat edilen, esas olarak uzak dosya paylaşımı için kullanılan ağ dosya sistemi

MS-DOS: MS-DOS dosya sistemi

VFAT: Windows 95/98 işletim sistemi tarafından benimsenen dosya sistemi

FAT: Windows XP işletim sistemi tarafından benimsenen dosya sistemi

NTFS: Windows NT / XP işletim sistemi tarafından benimsenen dosya sistemi

HPFS: OS / 2 işletim sistemi tarafından benimsenen dosya sistemi

PROC: sanal işlem dosya sistemi

ISO9660: Çoğu optik disk tarafından kullanılan dosya sistemi

ufsSun: işletim sistemi tarafından kullanılan dosya sistemi

NCPFS: Novell sunucuları tarafından kullanılan dosya sistemi

SMBFS: Samba'nın paylaşılan dosya sistemi

XFS: SGI tarafından geliştirilmiş, büyük kapasiteli dosyaları destekleyen gelişmiş günlük dosya sistemi

JFS: IBM'in AIX'i tarafından kullanılan günlük dosya sistemi

ReiserFS: Dengeli ağaç yapısına dayalı dosya sistemi

udf: yeniden yazılabilir veri disk dosya sistemi

2. Dosya sistemi özellikleri:

Disk bölümlendirildikten sonra, işletim sisteminin bölümü kullanabilmesi için önce biçimlendirilmesi gerekir. Biçimlendirmenin amacı, işletim sisteminin kullanabileceği dosya sistemi biçimini (yani yukarıda bahsettiğimiz dosya sistemi türünü) etkinleştirmektir.

Her işletim sisteminin kullanabileceği dosya sistemi farklıdır.Örneğin, Windows 98'den önce Microsoft işletim sistemleri tarafından kullanılan dosya sistemi FAT (veya FAT16) ve Windows 2000'den sonraki sürüm NTFS dosya sistemi olarak adlandırılır. Linux'un ortodoks dosyalarında olduğu gibi Sistem Ext2'dir (Linux ikinci genişletilmiş dosya sistemi, ext2fs). Ayrıca, varsayılan olarak, Windows işletim sistemi Linux Ext2'yi tanımaz.

Geleneksel disk ve dosya sistemi uygulamalarında, bir bölüm yalnızca bir dosya sistemi olarak biçimlendirilebilir, bu nedenle bir dosya sisteminin bir bölüm olduğunu söyleyebiliriz. Bununla birlikte, LVM ve sık sık duyduğumuz yazılım baskını gibi yeni teknolojilerin kullanımı nedeniyle, bu teknolojiler bir bölümü birden çok dosya sistemine (LVM gibi) biçimlendirebilir ve ayrıca birden çok bölümü tek bir dosyada birleştirebilir. Sistem (LVM, RAID)! Bu nedenle, şu anda, biçimlendirme sırasında artık bölüm için biçimlendirmeden bahsetmiyoruz.Genellikle bölüm yerine dosya sistemi olarak monte edilebilen bir dosya sistemi diyebiliriz!

Peki dosya sistemi nasıl çalışıyor? Bu, işletim sisteminin dosya verileriyle ilgilidir. Dosyanın gerçek içeriğine ek olarak, daha yeni işletim sistemlerinin dosya verileri genellikle Linux işletim sisteminin dosya izinleri (rwx) ve dosya öznitelikleri (sahip, grup, zaman parametreleri vb.) Gibi birçok öznitelik içerir. Dosya sistemi genellikle verinin iki bölümünü farklı bloklarda depolar, izinler ve öznitelikler inode'a yerleştirilir ve gerçek veriler veri bloğu bloğuna yerleştirilir. Ek olarak, toplam inode ve blok miktarı, kullanım ve kalan dahil olmak üzere tüm dosya sisteminin genel bilgilerini kaydeden bir süper blok vardır.

Bir disk bölümü için, karşılık gelen dosya sistemi olarak belirlendikten sonra, bölümün tamamı 1024, 2048 ve 4096 baytlık bloklara bölünür. Kullanılan farklı bloklara göre şunlara ayrılabilir:

1. Süper kilit: Bu, tüm dosya sisteminin ilk alanıdır. Blok boyutu, toplam inode / blok, kullanım, kalan miktar, boşluk düğümleri ve veri bloklarına işaretçiler ve diğer ilgili bilgiler gibi tüm dosya sisteminin temel bilgilerini içerir.

2. Inode bloğu (dosya indeksi düğümü): dosya sistemi indeksi, dosya niteliklerinin kaydedilmesi. Dosya sisteminin en temel birimidir ve herhangi bir alt dizini ve herhangi bir dosyayı dosya sistemine bağlayan bir köprüdür. Her alt dizin ve dosyanın yalnızca bir inode bloğu vardır. Dosya sistemindeki dosyanın temel özelliklerini (dosyanın uzunluğu, oluşturma ve değiştirme zamanı, izinler, sahiplik), verilerin konumu ve diğer ilgili bilgileri içerir. Linux altında, dosyanın inode bilgisi "ls -li" komutu ile görüntülenebilir . Sabit bağlantı ve kaynak dosya aynı inode'a sahiptir.

3. Veri bloğu (Blok): Dosyanın içeriğini gerçekten kaydedin.Dosya çok büyükse, birden fazla bloğu kaplayacaktır. Dizin erişiminin verimliliğini artırmak için, Linux ayrıca yol ve inode arasındaki karşılık gelen ilişkiyi ifade eden bir dişçilik yapısı sağlar. Yol bilgisini açıklar ve düğüm düğümüne bağlanır, çeşitli dizin bilgilerini içerir ve ayrıca inode ve süper bloğa işaret eder.

Bir kitabın kapağı, içindekiler tablosu ve gövdesi var gibi. Dosya sisteminde süper blok kapağa eşdeğerdir ve kitabın temel bilgileri kapaktan elde edilebilir; inode bloğu dizine eşdeğerdir ve her bölümün yeri dizinden öğrenilebilir ve veri bloğu gövdeye eşdeğerdir. , Belirli içeriği kaydedin.

Ortodoks Linux dosya sistemi (ext2, 3, vb. Gibi) sabit diski bir süper bloğa, inode Tablo bloğuna ve veri bloğu veri alanına böler. Bir dosya bir süper blok, inode ve veri alanı bloğundan oluşur. Inode, dosyanın özniteliklerini (okuma ve yazma öznitelikleri, sahip vb. Ve veri bloklarına işaretçiler gibi) içerir ve veri alanı bloğu dosya içeriğidir. Bir dosyayı görüntülerken, önce inode tablosundan dosya özniteliklerini ve veri saklama noktalarını bulun ve ardından verileri veri bloğundan okuyun.

Ext2 dosya sisteminin şematik diyagramı

İnode ve blok bloklarını diyagramlarla gösterelim.Aşağıdaki şekilde gösterildiği gibi, dosya sistemi önce inode ve blok bloklarını formatlar.Belirli bir dosyanın öznitelik ve izin verilerinin inode 4'e yerleştirildiğini varsayın (aşağıdaki şekil karşılaştırır Küçük karede) ve bu inode, dosya verilerinin gerçek yerleşimini 2, 7, 13, 15 numaralı dört blok olarak kaydeder. Şu anda, işletim sistemimiz diskin okuma sırasını buna göre ayarlayabilir. Dört bloğun içeriğini bir tonda okuyun! Ardından veriler aşağıdaki şekilde okla gösterildiği gibi okunur.

Şekil Inode / blok veri erişim şematik diyagramı

Bu veri erişim yöntemine endeksli tahsis adı verilir. Karşılaştırma için başka geleneksel dosya sistemleri var mı? Evet, bu bizim her zamanki flash diskimizdir (flash bellek) Flash disk tarafından kullanılan dosya sistemi genellikle FAT formatındadır. FAT formatındaki dosya sisteminde inode yoktur, bu nedenle FAT'ın başlangıçta bu dosyanın tüm bloklarını okumasının bir yolu yoktur. Her blok numarası bir önceki bloğa kaydedilir ve okuma yöntemi aşağıdaki şekle biraz benzer:

Şekil. FAT dosya sistemindeki veri erişiminin şematik diyagramı

Yukarıdaki şekilde, dosyanın verilerinin sıralı olarak 1- > 7- > 4- > 15. sıradaki dört blok numarası arasında, bu dosya sisteminin bir uzantıdaki dört bloğun numaralarını bilmesinin bir yolu yoktur, bir sonraki bloğun nerede olduğunu bilmeden önce blokları tek tek okumak zorundadır. Aynı dosya verisine yazılan bloklar çok fazla dağılmışsa, disk okuma kafamız diski bir tur çevirdikten sonra tüm verileri okuyamayacağından disk birkaç kez daha tam olarak okumak için dönecektir. Bu dosyanın içeriği!

Sık sık sözde "birleştirme" yi duyarsınız, değil mi? Birleştirme ihtiyacının nedeni, dosya yazma bloğunun çok ayrık olması ve dosya okuma performansının şu anda çok zayıf hale gelmesidir. Şu anda, aynı dosyaya ait bloklar, birleştirme yoluyla bir araya getirilebilir, böylece veri okuması daha kolay olacaktır! Elbette, FAT dosya sisteminin sık sık birleştirilmesi gerekiyor, bu yüzden Ext2'nin disk reformuna ihtiyacı var mı?

Ext2, dizinlenmiş bir dosya sistemi olduğundan, temelde sık birleştirme işlemine gerek yoktur. Bununla birlikte, dosya sistemi çok uzun süre kullanılıyorsa ve dosyalar sıklıkla siliniyorsa / düzenleniyor / ekleniyorsa, bu durumda dosya verileri yine de çok ayrık olabilir. Şu anda yeniden düzenlenmesi gerekebilir. Ancak dürüst olmak gerekirse, Brother Bird Ext2 / Ext3 dosya sistemini Linux işletim sisteminde birleştirmedi! Gerekli görünmüyor! ^ _ ^

Dosyanın içeriğini kopyalamadan var olan bir dosyaya yeni bir bağlantı kurmak için ln komutunu kullanabilirsiniz. Yumuşak bağlantılar ve sert bağlantılar vardır ve yumuşak bağlantılara sembolik bağlantılar da denir. İlgili özellikleri şunlardır:

Sabit bağlantı: Hem orijinal dosya adı hem de bağlantı dosya adı aynı fiziksel adresi gösterir. Dizinin sabit bağlantıları olamaz, sabit bağlantılar dosya sistemine yayılamaz (farklı bölümleri kapsayamaz) Diskte dosyanın yalnızca bir kopyası vardır, bu da sabit disk alanından tasarruf sağlar;

Bir dosyanın silinmesi ancak aynı dizin düğümü tek bağlantıya ait olduğunda başarılı olabileceğinden, yanlışlıkla gereksiz silme işlemi engellenebilir.

Sembolik bağ: Bir dosyanın sembolik bağını kurmak için ln -s komutunu kullanın Sembolik bağ bir tür linux özel dosyasıdır.Bir dosya olarak verileri, bağlı olduğu dosyanın yol adıdır. Pencerelerin altındaki kısayollara benzer.

Yanlışlıkla silmeyi önleme işlevi olmadan orijinal dosyayı silebilir ve bağlantı dosyasını kaydedebilirsiniz.

Bu paragrafın içeriği çok soyut ve düğümler de dizilerden oluşuyor Mümkün olduğunca popüler olmaya çalıştım ve gösterim için örnekler eklemek kolay değil. Hala sisin içindeyseniz, yapacak hiçbir şeyim yok, önce onu hatırlamam gerekiyor, sonra onu yavaş yavaş anlayacağım ve pratik uygulamalarda anlayacağım. Bu da öğrendiğim bir yöntem.

Çekirdekte dosya sisteminin temsili

Çekirdek veri yapısı

Linux çekirdeğinin VFS alt sistemi aşağıdaki gibi gösterilebilir:

Dosya ve IO: Her süreç PCB'de bir dosya tanımlayıcı tablosu saklar (İşlem Kontrol Bloğu) Dosya tanımlayıcı bu tablonun indeksidir.Her tablo öğesinin açılan dosyaya bir göstericisi vardır. Şimdi biz Açık olmak gerekirse: açılmış dosya, çekirdekteki dosya yapısı ile temsil edilir ve dosya tanımlayıcı tablosundaki işaretçi dosya yapısını gösterir.

Dosya Durum Bayrağı (dosya yapısının f_flag'leri) ve mevcut okuma ve yazma konumu (dosya yapısının f_pos'u) dosya yapısında korunur. Yukarıdaki şekilde, İşlem 1 ve İşlem 2 aynı dosyayı açar, ancak farklı dosya yapılarına karşılık gelir, böylece farklı Dosya Durum Bayraklarına ve okuma ve yazma konumlarına sahip olabilirler. Dosya yapısındaki en önemli üye, referans sayısını (Referans Sayısı) temsil eden f_count'dur. Daha sonra bahsedeceğimiz gibi, dup ve fork gibi sistem çağrıları, birden çok dosya tanımlayıcısının aynı dosya yapısına işaret etmesine neden olacaktır.Örneğin, fd1 ve fd2 aynı dosya yapısına başvurursa, referans sayısı 2'dir. close (fd1) dosya yapısını serbest bırakmaz, ancak yalnızca referans sayısını 1'e düşürürse (fd2) kapatırsanız, referans sayısı 0'a indirilecek ve dosya yapısını serbest bırakacak, bu da dosyayı gerçekten kapatacaktır.

Her dosya yapısı bir file_operations yapısına işaret eder.Bu yapının üyeleri, çeşitli dosya işlemlerini gerçekleştiren çekirdek işlevlerine işaret eden işlev işaretçileridir. Örneğin, kullanıcı programındaki bir dosya tanımlayıcısını okuyun, bir sistem çağrısı aracılığıyla çekirdeği okuyun ve ardından dosya tanımlayıcısının gösterdiği dosya yapısını bulun, dosya yapısının gösterdiği dosya_işlemleri yapısını bulun ve işaret edilen okuma üyesini çağırın Kullanıcı isteklerini tamamlamak için çekirdek işlevi. Kullanıcı programındaki lseek, read, write, ioctl, open ve diğer işlevleri çağırın ve son olarak çekirdek, kullanıcı isteğini tamamlamak için her file_operations üyesi tarafından gösterilen çekirdek işlevini çağırır. File_operations yapısındaki serbest bırakma üyesi, kullanıcı programının kapatma isteğini tamamlamak için kullanılır. Release olarak adlandırılmasının nedeni, dosyayı gerçekten kapatmak zorunda olmadığı, ancak referans sayısını azalttığı için close olarak adlandırılmaz. Dosya yalnızca referans sayısı 0'a düştüğünde kapatılır. Aynı dosya sistemi üzerinde açılan normal dosyalar için okuma ve yazma gibi dosya işlemlerinin adımları ve yöntemleri aynı olmalı ve çağrılan işlevler aynı olmalıdır, bu nedenle şekildeki üç açık dosyanın dosya yapısı aynıdır. Bir file_operations yapısı. Bir karakter aygıt dosyasını açarsanız, okuma ve yazma işlemleri normal dosyalardan farklı olmalıdır.Diskteki veri bloklarını okumak ve yazmak yerine, donanım aygıtlarını okur ve yazar.Bu nedenle dosya yapısı, her biri farklı bir dosya_işlemleri yapısına işaret etmelidir. Bu tür bir dosya çalıştırma işlevi, aygıt sürücüsü tarafından gerçekleştirilir.

Her dosya yapısının dentry yapısına bir işaretçisi vardır ve "dentry" dizin girişinin kısaltmasıdır. Open ve stat gibi fonksiyonlara ilettiğimiz parametre / home / akaedu / a gibi bir yoldur ve dosyanın inode'unun yola göre bulunması gerekir. Disk okuma sayısını azaltmak için çekirdek, her düğümün bir dentry yapısı olduğu dentry önbelleği adı verilen dizinlerin ağaç yapısını önbelleğe alır.Sadece yolun her parçası boyunca dentry arayın ve kök dizinden ana dizini bulun / Ardından akaedu dizinini bulun ve ardından a. Dentry önbelleği yalnızca son erişilen dizin girdilerini kaydeder.Aradığınız dizin girdisi önbellekte değilse, diskten belleğe okunmalıdır.

Her dişçilik yapısının inode yapısına bir işaretçisi vardır. İnode yapısı, disk inode'undan okunan bilgileri tutar. Yukarıdaki şekildeki örnekte, sırasıyla / home / akaedu / a ve / home / akaedu / b'yi temsil eden iki dişçilik vardır, her ikisi de aynı inode'a işaret eder ve bu iki dosyanın birbirine sabit bağlantılar olduğunu gösterir. İnode yapısı, sahip, dosya boyutu, dosya türü ve izin bitleri gibi disk bölümünün düğümünden okunan bilgileri depolar. Her bir inode yapısının, dosya dizini işlemlerini tamamlayan bazı çekirdek işlevlerine yönelik bir dizi işlev işaretçisi olan inode_operations yapısına bir işaretçisi vardır. Dosya işlemlerinden farklı olarak, inode_operations bir dosya üzerinde çalışan bir işlev değil, dosya ve dizinlerin eklenmesi ve silinmesi, sembolik bağların izlenmesi vb. Gibi dosya ve dizinlerin düzenini etkileyen, aynı dosya sistemine ait her bir inode yapısı olan bir işlevdir. Aynı inode_operations yapısına işaret edebilir.

İnode yapısının süper blok yapısına bir işaretçisi vardır. Süper blok yapısı, dosya sistemi tipi, blok boyutu vb. Gibi disk bölümünün süper bloğundan okunan bilgileri kaydeder. Super_block yapısının s_root üyesi, dosya sisteminin kök dizininin nereye monte edildiğini gösteren dentry için bir göstericidir Yukarıdaki örnekte, bu bölüm / home dizinine bağlanmıştır.

Dosya, dentry, inode ve super_block yapısı, VFS'nin temel konseptini oluşturur. Ext2 dosya sistemi için, disk depolama düzeninde inode ve süper blok kavramları da vardır, bu nedenle VFS'deki kavramlarla karşılık gelen bir ilişki kurmak kolaydır. Diğer dosya sistemi biçimleri UNIX olmayan sistemlerden (örneğin, Windows FAT32, NTFS) gelir ve inode veya süper blok konseptine sahip olmayabilir, ancak Linux sistemine bağlanabilmek için, bunu sürücüde sağlamlaştırmamız gerekiyordu. Linux altında FAT32 ve NTFS bölümlerine baktığınızda, izin bitlerinin yanlış olduğunu göreceksiniz.Tüm dosyalar rwxrwxrwx, çünkü inode ve izin bitleri kavramlarına sahip değiller. Bunu elde etmek zor.

3.6 Dosya sistemini bağlayın

Linux sistemindeki her bölüm, kendi dizin hiyerarşisine sahip bir dosya sistemidir. Linux, farklı bölümlere ait bu ayrı dosya sistemleri ile bir sistemin genel dizin hiyerarşisini belirli bir şekilde oluşturacaktır. Burada bahsedilen "belirli bir yönteme göre", montajı ifade eder.

Bir dosya sisteminin en üst düzey dizinini bir bütün olarak oluşturmak için başka bir dosya sisteminin alt dizinlerine bağlamaya bağlama denir. Bu alt dizini bağlama noktası olarak adlandırın.

Örneğin, sabit diskte biçimlendirilmiş bir bölümü, CD'yi veya yazılımı okumak istediğinizde, önce bu aygıtları belirli bir dizine eşlemelisiniz ve bu dizine "bağlama noktası" adı verilir, bu nedenle Ancak o zaman bu cihazlar okunabilir. Montajdan sonra, fiziksel bölüm ayrıntıları korunur ve kullanıcılar yalnızca birleşik bir mantıksal konsepte sahiptir. Her şey bir dosyadır.

Not:

1. Bağlama noktası bir dizin olmalıdır.

2. Var olan bir dizine bir bölüm bağlanmıştır Bu dizinin boş olması gerekmez, ancak bu dizindeki önceki içerik bağlandıktan sonra kullanılamayacaktır.

Aynısı, diğer işletim sistemleri tarafından kurulan dosya sistemlerini bağlamak için de geçerlidir. Ancak anlaşılması gereken şey, CD'ler, disketler ve diğer işletim sistemleri tarafından kullanılan dosya sistemi formatının, Linux tarafından kullanılan dosya sistemi formatından farklı olmasıdır. CD ISO9660; disket, fat16 veya ext2; Windows NT, fat16, NTFS; windows98, fat16, fat32; windows2000 ve windowsXP, fat16, fat32, NTFS'dir. Montajdan önce, Linux'un bağlanacak dosya sistemi formatını destekleyip desteklemediğini anlayın.

Montaj sırasında mount komutunu kullanın, formatı: mount

Yaygın olarak kullanılan parametreler arasında

-t aygıtın dosya sistemi türünü belirtir (hangi dosya türünden bahsedilir)

-o Dosya sistemini monte ederken seçenekleri belirtir. Bazıları / etc / fstab içinde de kullanılabilir. Çoğunlukla kullanılan

codepage = XXX kod sayfası

iocharset = XXX karakter kümesi

ro salt okunur olarak monte edin

okuma-yazma modunda rw montajı

nouser, genel kullanıcıların bağlanmasını imkansız kılar

user

Örneğin:

1. windows

1sudo fdisk -l/dev/hda5

2mkdirEmk /mnt/winc

3windowslinuxlinuxwindowsmount

# mount -t vfat /dev/hda5 /mnt/winc -t vfatfat32

/mnt/winc

2.# mk /mnt/cdrom

# mount -t iso9660 /dev/cdrom /mnt/cdrom (cdrom)

3.VirtualBoxWindowsUbuntuGuest

1). VirtualBox""- > ""Ubuntu/media/cdom0/cdrom"VBoxLinuxAdditions.run""cd /cdrom""sudo sh ./VBoxLinuxAdditions.run"UbuntuWindows

2).

""Windows"myshare"read-onlyubuntu

3). ubuntu:sudo mount -t vboxsf myshare /media/share

"myshare""/media/share".

3.7 windows

windowsmountlinuxmount

linuxlinuxlinuxwindows

/etcfstablinux/etc/fstab

/dev/hda2 / ext3 defaults 11

/dev/hda1 /boot ext3 defaults 12

none /dev/pts devpts gid=5,mode=6200 0

none /proc proc defaults 00

none /dev/shm tmpfs defaults 00

/dev/hda3 swap swap defaults 00

/dev/cdrom /mnt/cdrom iso9660 noauto,codepage=936,iocharset=gb23120 0

/dev/fd0 /mnt/floppy auto noauto,owner,kudzu 00

/dev/hdb1 /mnt/winc vfat defaults,codepage=936,iocharset=cp9360 0

/dev/hda5 /mnt/wind vfat defaults,codepage=936,iocharset=cp9360 0

/etc/fstab

windowsCDcodepage=936iocharset=cp936defaults

rw

suid IDID

dev

exec

auto

nouser

async

noauto)

3.8 .

ln

ln -slinuxwindows

5

1inode

2

3

3.9.

fdisk df du

cd pwd mkdir rmdir ls cp rm mv

cattacmorelesshead tail

chmod chown chgrp umask

whichwhereislocatefindfind

4. linux

LinuxX WindowInternet

5. linux

Linux ProcProcLinux

Birçok Jedi eklentisi olmasına rağmen, bu dört çapa onları asla açmayacak!
önceki
Petrol ve arabalar arasında bir asırlık aşk
Sonraki
Chery'nin amiral gemisi SUV, 40 Marriott ile karşılaştırılabilir bir iç mekana sahip yeni bir modele sahip.Fiyat değişmeden kalıyor, iyi satabilir mi?
Günlük limit: ağır! Pazar önümüzdeki hafta toparlanacak! Bu sektörlerde fırsatlar!
Yüreğim yorgun Zhongshan Park'taki Dragon Dream'in birinci katındaki WiFi zehirli mi?
Niş markaların modifikasyon yolculuğu
Hibrit zorunlu iniş, salıncaktan vahşiliğe Japon elektrifikasyon stratejisi
Yerli süper değerli MPV, otomatik şanzıman sadece 64.900 sattı, Wuling Hongguang biraz panikledi
14 grep komutu örneği
Yüzeydeki en güçlü güveçi yükseltmek nasıl olurdu? Reddetmeyi kabul etmeyin
Longhuban: Kurumlar büyük ölçüde Tencent Concept Vision China'yı satın aldı; fotovoltaik konsept Jingshan Light Machinery
"Birincisi, Mercedes-Benz'in temel hedefi değil"
Geelynin en ucuz arabası olan 29.900, Alto ve Hongguangı saniyeler içinde öldürür!
BMW 4 Serisi'nin bu modifikasyonunu kabul ediyor musunuz?
To Top