Aproape toate aplicațiile pe Linux Ubuntu 10.04 LTS utilizează orice operații I / O. Chiar și o astfel de ocupare aparent simplă ca surfingul web produce un număr mare de fișiere mici care sunt scrise pe disc. Fără un programator, de fiecare dată când apare o cerere de I / O, ar exista interacțiune cu kernel-ul și astfel de operațiuni ar fi efectuate imediat. Mai mult decât atât, poate exista o situație în care puteți obține un număr mare de cereri de intrare / ieșire, care (pentru a satisface toate solicitările utilizatorilor) va determina capul discului să se grăbească literalmente de la o parte la alta. Mai important, în timp, diferența dintre performanța hard disk-urilor și restul sistemului a crescut foarte repede, ceea ce înseamnă a impune și mai multe cerințe pentru I / O pentru a asigura o performanță generală ridicată a sistemului. Deci, atunci când nucleul trebuie să deservească întreruperea, toate celelalte aplicații nu mai funcționează. Prin urmare, din exterior ar putea părea o scădere a capacității de reacție a sistemului sau chiar o încetinire a funcționării acestuia.
Programarea evenimentelor I / O implică necesitatea de a rezolva multe probleme. De exemplu, programatorul ar trebui să stocheze cererile primite într-o coadă specială. Cum va stoca aceste evenimente, dacă este posibil să se schimbe ordinea evenimentelor, cât de mult timp vor fi stocate aceste evenimente, dacă vă puteți întâlni toate evenimentele salvate pe îndeplinirea anumitor condiții sau cu o anumită frecvență - este toate aspectele foarte importante ale planificator. Cu privire la modul în care sunt implementate exact aspectele de mai sus ale planificatorului, performanța generală a sistemului I / O depinde de modul în care sistemul este perceput de utilizatori.
Unul dintre avantajele importante pe care sistemul de I / O le oferă sistemului este stocarea diferitelor evenimente în coadă și chiar posibilitatea ca schimbarea (coada) să facă anumite operații I / O mai repede decât altele. Deoarece viteza de intrare / ieșire poate fi semnificativ mai lentă decât în alte părți ale sistemului, redistribuirea cererilor de acces discuri astfel încât minimizarea mișcării capetelor de discuri să îmbunătățească performanța generală a sistemului. Sistemele noi de fișiere pot funcționa și cu unele dintre aceste concepte, astfel încât să poată optimiza cu ușurință operațiile I / O în ceea ce privește viteza dispozitivului de stocare. Puteți chiar să ajustați planificatorul mai eficient pentru a adapta sistemul la proprietățile neobișnuite ale SSD (unitățile SSD nu au capete de citire și scriere în comparație cu hard disk-urile tradiționale).
Există mai multe metode tipice care sunt utilizate de planificatorii I / O:
cereri de fuziune: În conformitate cu această tehnică, cererile de citire a scrie-scop similar sunt combinate pentru a reduce numărul de operații de disc și de a crește durata apelurilor de sistem de intrare-ieșire (care, de obicei ca rezultat o performanță mai bună a input-output).
"Algoritmul ascensorului": solicitările I / O sunt comandate pe baza plasării fizice a datelor pe disc astfel încât capetele discului să se deplaseze cât mai mult posibil într-o singură direcție și cât mai ordonată posibil.
Reordonarea interogărilor: Această tehnică ajustează interogările bazate pe prioritatea lor. Algoritmul de implementare a acestei tehnici depinde de programatorul specific.
În plus, aproape toți planificatorii I / O iau în considerare factorul de "foamete de resurse", prin urmare toate solicitările vor fi întreținute.
În prezent, există patru planificatoare I / O în Linux Ubuntu 10.04 LTS:
- CFQ (Queuing total)
Planificatorul NOOP (nu funcționează) este cel mai simplu. Plasează toate cererile de intrare / ieșire într-un tampon simplu FIFO (First-In, First-Out, first out și apoi out) și apoi le execută pur și simplu pentru execuție. Rețineți că acest lucru se întâmplă pentru toate procesele existente în sistem, indiferent de tipul de solicitări I / O (citiți, scrieți, căutați pista dorită etc.). Ea efectuează, de asemenea, ceva similar cu interogările care fuzionează.
Programatorul NOOP utilizează numărul minim de instrucțiuni de procesor pentru fiecare operație I / O pentru a efectua cele mai simple funcționalități: îmbinarea și sortarea cererilor. Acest programator presupune că dispozitivele de stocare vor optimiza performanțele operațiilor I / O.
În mod potențial, programatorul NOOP va funcționa bine cu dispozitivele de stocare care nu au componente mecanice pentru a citi datele (de exemplu, capete de disc). Motivul este faptul că programatorul nu face nici o încercare de a optimiza mișcarea capetelor, efectuați o simplă cereri de îmbinare, care ajută, de asemenea, crește capacitatea de transfer a discului.
Anticipator IO Scheduler, după cum sugerează și numele, încearcă să ghicească care blocuri ale discului vor fi executate următoarele solicitări. Efectuează interogarea fuzionării, cel mai simplu algoritm al ascensorului unidirecțional, combinația dintre cererile de citire și scriere. După ce planificatorul a difuzat solicitarea de citire și scriere, acesta presupune că următoarea solicitare va fi pentru blocul următor, întrerupând pentru o perioadă scurtă de timp. Dacă apare o astfel de solicitare, aceasta este serviceată foarte repede, deoarece capetele discurilor sunt în locul potrivit. Această abordare introduce o ușoară încetinire a sistemului I / O datorită necesității de a aștepta următoarea solicitare. Cu toate acestea, acest dezavantaj poate fi compensat printr-o creștere a performanței interogării în zonele învecinate ale discului.
Termen limită IO Scheduler (programator al termenelor limită) a fost scris de Jens Axbo, un dezvoltator de kernel binecunoscut.
Principiul fundamental al funcționării sale este timpul garantat pentru începerea cererilor de întreținere I / O. Acesta combină astfel de caracteristici ca interogarea fuzionării, algoritmul ascensorului unidirecțional și stabilește un termen limită pentru întreținerea tuturor solicitărilor (de aici numele). Aceasta susține două "cozi de termen limită" speciale, în plus față de două "cozi sortate" separate pentru citire și scriere. Locuri de muncă în termenele de punere în aplicare coadă sunt clasificate în funcție de timpul de execuție interogare pe principiul „mai puțin timp - serviciu mai devreme. - mai aproape de partea de sus a cozii“ Cozile de citire și scriere sunt sortate pe baza numărului sectorului solicitat (algoritmul ascensorului).
Acest programator ajută într-adevăr lățimea de bandă în cazurile de citire din sectoarele cu un număr mare de bloc. Operațiile de citire pot bloca uneori aplicații, deoarece, în timp ce execută, aplicațiile așteaptă încheierea acestora. Pe de altă parte, operațiile de scriere pot fi efectuate mult mai repede, deoarece sunt produse într-o memorie cache a discului. Citește mai lent din zonele exterioare ale discului sunt mutate la sfârșitul coadă și citirile mai rapide din zonele mai apropiate vor fi deservite mai devreme. Un astfel de algoritm de programare permite un serviciu mai rapid al tuturor cererilor de citire și scriere, chiar dacă există cereri de citire din regiunile îndepărtate ale discului.
CFQ furnizează utilizatorilor (proceselor) unui anumit dispozitiv de stocare cu numărul necesar de cereri I / O pentru o anumită perioadă de timp. Acest lucru se face pentru sistemele multi-utilizator, deoarece toți utilizatorii din astfel de sisteme vor primi același nivel de răspuns. Mai mult decât atât, CFQ ajunge la unele dintre caracteristicile de lățime de bandă bună planificator anticipativ, deoarece permite inactiv coadă la service pentru ceva timp pentru a finaliza solicitarea executării unei cereri de intrare-ieșire în așteptare care poate fi aproape doar interogarea.
În Windows Seven I / O este utilizat pentru organizarea I / O, iar în Linux Ubuntu, programatorul CFQ. Activitățile Managerului I / O includ multe funcții, cum ar fi crearea, citirea, scrierea și multe alte operații pe fișiere, implementarea subsistemului I / O și multe altele. În timp ce planificatorul CFQ este responsabil de organizarea sistemului I / O. Acest lucru îi oferă o serie de avantaje față de managerul I / O, deoarece nu este distras de nimic altceva decât de o organizație de intrare / ieșire. De asemenea, acest programator atinge o viteză destul de bună datorită utilizării algoritmului de fuziune a interogărilor și al ascensorului. Pe baza acestor argumente, putem concluziona că este pentru organizarea intrărilor / ieșirilor CFQ este mai bună decât I / O Manager. Dar managerul I / O are multe funcții suplimentare care nu sunt în CFQ, ceea ce îi permite să lucreze cu o gamă mai largă de sarcini.
În acest curs, am comparat două sisteme de operare Windows Seven și Linux Ubuntu 10.04 LTS pe mai multe criterii.
Sistemele de operare Windows Seven și Linux Ubuntu 10.04 LTS sunt destul de diferite în punerea în aplicare a diferitelor servicii și servicii. În conformitate cu subiectele abordate în acest articol, există mai multe diferențe globale.
În Linux Ubuntu 10.04 LTS, sistemul grafic există separat de kernel și funcționează ca o aplicație obișnuită. În Windows Șapte sisteme de operare, sistemul grafic este integrat în miez. Dacă utilizați un sistem de operare pe o stație de lucru, mai ales atunci când executați aplicații cu intensitate grafică, este probabil cel mai bine atunci când sistemul grafic intră în miez - în acest caz poate funcționa mai repede. Și, în timp ce lucrează pe sistemul grafic ramură server de preferat din nucleul ca se încarcă memoria și procesorul. În cazul sistemului grafic Linux, puteți transforma pur și simplu off, în plus, în cazul în care administratorul de sistem încă mai vrea să folosească, Linux are mai multe medii desktop pentru a alege de la, unele dintre ele masina destul de slab încărcate. Aceeași caracteristică a sistemelor de operare asemănătoare Unix vă permite să executați aceste sisteme de operare pe mașini cu volume foarte mici de memorie RAM etc. În cazul sistemului Windows Seven, sistemul grafic este prea integrat în sistemul de operare, deci ar trebui să ruleze chiar și pe servere care nu au nevoie de el deloc.
De asemenea, menționăm metoda de partajare a drepturilor de acces în Windows Seven și Linux Ubuntu 10.04 LTS. În primul - separarea drepturilor de acces bazat pe ACL (liste de control al accesului), care este, de exemplu, puteți configura sistemul astfel încât administratorul nu are capacitatea de a gestiona fișierele de utilizator. Linux are întotdeauna un superuser - rădăcină, care are acces absolut la tot. Aceasta este, teoretic, modelul de securitate din Windows Seven este mai bine: să profite pe deplin sistemul bine pus la punct, Windows, atacatorul ar trebui să rupă mai mult, Linux este suficient pentru a sparge accesul la rădăcină. Dar teoria multiple lubrifiat practica pe partea, că Windows nu este la fel de rapid ca pe Linux, sigilate cu „găuri“ care se aplică deja avantajele modelului de dezvoltare deschise. Ca rezultat, se pare că în Windows, potrivit statisticilor, există mai multe găuri prin care un atacator poate intra în sistem. Dar, din nou, exact despre numărul de găuri în Linux și Windows se poate spune doar atunci când numărul de utilizatori ai ambelor tipuri de OS va fi aproximativ același.
Linux suportă mai multe sisteme de fișiere, cele mai avansate fiind Ext2, Ext3, Ext4. Windows Seven este în mare măsură legat de un singur sistem de fișiere - NTFS. Sistemul de fișiere Ext4 funcționează mai repede, folosind blocuri, extensii și mecanismul de "distribuire amânată". Deși NTFS FS este mai fiabil. Deci, alegerea sistemului de fișiere depinde de scopurile specifice ale utilizatorului, dar pentru computerele personale obișnuite, ext4 este mai preferabil.
S-ar putea menționa un set bogat de software care poate fi livrat cu Linux, în timp ce Windows se dezvoltă și în această direcție. Cu toate acestea, este sigur să spunem că pentru un utilizator obișnuit care utilizează un computer personal obișnuit, Windows Seven ar fi preferabil.