sistemi linux n.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
Sistemi LINUX PowerPoint Presentation
Download Presentation
Sistemi LINUX

Loading in 2 Seconds...

play fullscreen
1 / 38

Sistemi LINUX - PowerPoint PPT Presentation


  • 162 Views
  • Uploaded on

Sistemi LINUX. Sisteme shfrytezimi Leksion 14 Leksion 15. Komponentet e sistemit Linux. Linux. Linux është një sistem mjaft dinamik N evojat e tij kompjuterike evolojnë vazhdimisht. Këto nevoja rrotullohen shpesh rreth natyrës abstrakte të procesit.

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'Sistemi LINUX' - tevin


Download Now An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
sistemi linux

SistemiLINUX

Sistemeshfrytezimi

Leksion14

Leksion15

Iralda Mitro

linux
Linux
  • Linux është një sistem mjaft dinamik
  • Nevojat e tijkompjuterikeevolojnë vazhdimisht.
  • Këto nevoja rrotullohen shpesh rreth natyrës abstrakte të procesit.
  • Proceset mund të jenë “jetëshkurtër” (një komandë e ekzekutuar nga command line) ose “jetëgjatë” (një servis rrjeti).
  • Për këtë arsye, menaxhimi i përgjithsëm i proceseve si edhe skedulimi i tyre është shumë i rëndësishëm.

Iralda Mitro

linux1
Linux
  • Në hapsirën e userit, proceset prezantohen nga identifikuesit e proceseve (PID).
  • Për userin një PID është një vlerë numerike e cila identifikon në mënyrë unike një proces.
  • Një PID nuk ndryshon gjatë jetës së procesit, por PID mund të ripërdoret pasi procesi vdes, ndaj nuk është asnjëherë ideale ti mbajmë ato në cache.

Iralda Mitro

proceset
Proceset
  • Në hapsirën e userit, mund të krijohen procese në mënyra të ndryshme:
      • Mund të ekzekutohet një program (i cili rezulton në krijimin e një procesi)
    • Ose
      • Brendanjë programi, mund të bëhet një thirrje sistemi ‘fork’ ose ‘exec’.
  • Thirrja e ‘fork’ rezulton në krijimin e një procesi bir, ndërsa thirrja e ‘exec’ zëvendëson kontekstin e procesit aktual me programin e ri

Iralda Mitro

krijimi i procesit
Krijimiiprocesit

Iralda Mitro

paraqitja e procesit
Paraqitja e procesit
  • Në Kernelin e Linuxit, një proces përfaqësohet nga një strukturë e madhe e quajtur task_struct.
  • Kjo strukturë përmban:
    • të gjitha të dhënat e nevojshmepër të prezantuar procesin
    • një sërë të dhënash të tjera për të mbajtur lidhje me proceset e tjerë (prindër dhe bij).

Iralda Mitro

struktura task struct
Struktura: task_struct
  • duke u ekzekutuar (TASK_RUNNING)
  • në gjumë(TASK_INTERRUPTIBLE)
  • i padisponueshëm (TASK_UNINTERRUPTIBLE)
  • i ndaluar (TASK_STOPPED)
  • etj
  • duke u krijuar (PF_STARTING)
  • duke dalë (PF_EXITING)
  • duke huazuar kujtesën (PF_MEMALLOC)

Liste e lidhur me shenjues : next, prev

struct task_struct {

volatile long state;

void *stack;

unsigned int flags;

  int prio, static_prio;

  struct list_head tasks;

  struct mm_struct *mm, *active_mm;

  pid_t pid;

pid_t tgid;

  struct task_struct *real_parent;

  char comm[TASK_COMM_LEN];

  struct thread_struct thread;

  struct files_struct *files; 

... 

};

Iralda Mitro

struktura task struct1
Struktura: task_struct
  • Disa elementë: gjëndja e ekzekutimit, një stivë, disa ‘flag’, procesi prind, thread i ekzekutimit (që mund të jenë edhe disa), dhe filet e hapura.
  • Variabli i gjendjes është një bashkësi bitesh që tregojnë gjendjen e procesit.
  • Gjendjet më të zakonshme janë:
    • duke u ekzekutuar (TASK_RUNNING),
    • në gjumë(TASK_INTERRUPTIBLE),
    • në gjumë por i padisponueshëm për tu zgjuar (TASK_UNINTERRUPTIBLE),
    • i ndaluar (TASK_STOPPED), etj.
  • ‘Flags’ më lart janë disa tregues, që tregojnë cdo gjë, që kur procesi është duke u krijuar (PF_STARTING) ose duke dalë (PF_EXITING), ose duke huazuar kujtesën (PF_MEMALLOC).

Iralda Mitro

struktura task struct2
Struktura: task_struct
  • Cdo procesi i jepet një prioritet (i quajtur static_prio)
    • Sa më e vogël vlera e prioritetit, aq më i madh prioriteti aktual.
  • Fusha tasksmundëson një listë të lidhur.
    • Ajo mban një shënjues prev (i cili shënjon tek ‘task’ paraardhës) dhe një shënjues next (i cili shënjon tek pasardhësi).
  • Hapsira e adresës së procesit përfaqësohet nga fushat mm dhe active_mm.
    • mm është përshkruesi i kujtesës së procesit
    • active_mm është përshkruesi i kujtesës së procesit paraardhës.
  • thread_structidentifikon gjendjen e ruajtur të procesit.
    • Ky element varet nga arkitektura specifike ku po ekzekutohet Linuxi.

Iralda Mitro

menaxhimi i procesit
Menaxhimiiprocesit
  • Në shumë raste, proceset krijohen dinamikisht dhe përfaqësohen nga nje strukturë task_struct.
  • Një përjashtim është procesi init , i cili ekziston gjithmonë dhe përfaqësohet nga një strukture task_struct e alokuar.
  • Të gjithë proceset në Linux mbahen në 2 mënyra.
    • E para është një tabelë hash, e cila hashohet nga vlera e PID.
    • E dyta është një listë e lidhur dydrejtimore rrethore.
      • Lista rrethore është ideale për të lëvizur në listën e proceseve.
      • Meqë lista është rrethore, nuk ka as kokë dhe as bisht, por mund të përdoret si fillim procesi init që përmendëm më lart, duke qënë se ai është gjithmonë në ekzekutim.

Iralda Mitro

menaxhimi i procesit1
Menaxhimiiprocesit

Tabele HASH, e hashuarnga PID

Liste e lidhurdydrejtimorerrethore

fillimi – init()

  • Procesetkrijohendinamikisht
    • procesiinit()

Iralda Mitro

lista e proceseve
Lista e proceseve
  • Lista e punëve nuk mund të aksesohet direkt nga hapsira e userit
  • Ky problem mund të zgjidhet lehtë, duke futur kod në kernel, si pjesë e një moduli.
  • Me poshtetregohetnjë program i thjeshtë, i cili:
    • bredh listën e proceseve
    • jep disa informacione për cdo task (emrin, pid, emrin e prindit).
      • përdor printk për të afishuar outputin.
      • Funksioni next_task është një macro në sched.h i cili thjeshtëzon bredhjen e listës së proceseve(kthen një objekt task_struct që referon procesin tjetër).

Iralda Mitro

nj modul kerneli p r t afishuar informacione mbi proceset
Një modul Kerneli për të afishuar informacione mbi proceset

 #include <linux/kernel.h>

#include <linux/module.h>

#include <linux/sched.h>

int init_module( void )

{

struct task_struct *task = &init_task; /* Set up the anchor point */

/* Walk through the task list, until we hit the init_task again */

do {

printk( KERN_INFO "*** %s [%d] parent %s\n“,task->comm, task->pid, task->parent->comm );

} while ( (task = next_task(task)) != &init_task );

return 0;

}

Iralda Mitro

maksimumi i proceseve
Maksimumi i proceseve
  • Pavarësisht se proceset alokohen dinamikisht në Linux, vërehen disa vlera maksimale.
  • Maksimumi në kernel përfaqësohet nga një simbol i quajtur max_threads
  • Ju mund ta ndryshoni këtë vlerë nga hapsira e userit nëpërmjet file të sistemit proc në /proc/sys/kernel/threads-max.

Iralda Mitro

procesi aktual
Procesiaktual
  • Për të identifikuar procesin që po ekzekutohet në një moment të caktuar, Linux mban një symbol të quajtur current që është një object i tipit task_struct.
  • Pra në fund të metodës init_module mund të shtojmë rreshtin:

printk( KERN_INFO, "Current task is %s [%d], current->comm,current->pid );

  • Kur shtojmë edhe rreshtin për procesin actual, do të kemi:
  • Nov 12 22:48:45 mtj-desktop kernel: [10233.323662] Current task is insmod [6538]
  • Kjo tregon që procesi aktual është insmod, sepse funksioni init_module ekzekutohet në kontekstin e ekzekutimit të komandës insmod. Simboli current i referohet funksionit get_current.

Iralda Mitro

funksionet e thirrjeve t sistemit
Funksionet e thirrjeve të sistemit
  • Mund të keni parë ndonjë shabllon me thirrje sistemi më parë.
  • Në shumë raste, thirrjet e sistemit emërohen sys_*
  • Thirrjete sistemit mundësojnë disa nga funksionalitetet fillestare për të implementuar thirrjen (si kontrollim për gabime apo aktivitete të hapsirës së përdoruesit).
  • Puna e vërtetë shpesh i mbetet një funksioni tjetër të quajtur do_*

Iralda Mitro

krijimi i proceseve
Krijimiiproceseve
  • Mekanizmi për krijimin e proceseve është i njëjtë për
    • proceset e ambjentit të userit
    • proceset e kernelit
  • Të dyja mbështeten tek një funksion do_fork.
  • Kurkrijohetnjë thread ikernelit, kerneli thërret një funksion të quajtur kernel_thread
    • Funksionikryen disa inicializime, dhe më pas thërret do_fork.
  • Në hapsirën e userit, një program thërret fork, që con në një thirrje sistemi të funksionit të kernelit të quajtur sys_fork.

Iralda Mitro

krijimi i proceseve1
Krijimiiproceseve

Iralda Mitro

krijimi i procesit1
Krijimiiprocesit

Iralda Mitro

hapat e krijimit te procesit 1
Hapat e krijimitteprocesit (1)
  • do_fork mundëson bazën për krijimin e procesit.
    • Funksioni do_fork fillon me thirrjen e alloc_pidmap, i cili alokon një PID.Next të re
  • do_fork kontrollon nëse debuggeri po gjurmon procesin prind.
    • Nëse po, CLONE_PTRACE vendoset në clone_flags gati për të kryer një ‘fork’.
  • do_forkmë pas vazhdon me një thirrje të copy_process, duke kaluar ‘flag’-et, stivën, regjistrat, procesin prind dhe PID që sapo u alokua.

Iralda Mitro

hapat e krijimit te procesit 2
Hapat e krijimitteprocesit (2)
  • Funksioni copy_process është kur një proces i ri krijohet si kopje e prindit të tij. Ky funksion kryen të gjitha veprimet, përvec startimin e një procesi.
    • Hapi i parë në copy_process është validimi i CLONE për tu siguruar që ato janë konsistente. Nëse nuk janë, kthehet një gabim EINVAL.
    • Më pas konsultohet Moduli për Sigurinë e Linuxit për të parë nëse procesi aktual mund të krijojë një proces të ri.
  • Thërritetfunksioni dup_task_struct i cili alokon një task_struct të re dhe kopjon përshkruesit e procesit aktual tek ajo.
  • Pasi ndërtohet një stivë e re me thread-e, inicializohen disa informacione të gjendjes dhe kontrolli i kthehet funksionit copy_process.

Iralda Mitro

hapat e krijimit te procesit 3
Hapat e krijimitteprocesit (3)
  • Pasi kthehet tek copy_process, thirren një varg me funksione copy, të cilatkopjojnë aspekte të ndryshme të procesit
    • kopjimi i përshkruesve të fileve (copy_files)
    • kopjimi i informacionit të sinjalit (copy_sighand dhe copy_signal)
    • kopjimi i kujtesës së procesit (copy_mm)
    • kopjimi i thread (copy_thread).
  • Procesorit i caktohet një task i ri, me kontrolle të tjera bazuar në procesorët në të cilët lejohet të ekzekutohet procesi

Iralda Mitro

hapat e krijimit te procesit 4
Hapat e krijimitteprocesit (4)
  • Kontrollii kthehet do_fork.
  • Në këtë pikë, procesi i ri ekzison por akoma nuk po ekzekutohet.
  • Funksioni do_fork e rregullon këtë gjë me një thirrje të wake_up_new_task.
    • Ky funksion vendos procesin në një rradhë ekzekutimi, dhe më pas e zgjon atë për ekzekutim.
  • Së fundmi, vlera e PID i kthehet atij që e thirri dhe procesi është gati.

Iralda Mitro

skedulimi i proceseve
Skedulimiiproceseve
  • Ndërkohë që një proces ekziston në Linux, ai mund të skedulohet nga skeduluesi i Linuxit.
  • Skeduluesi i Linux mban disa lista për cdo nivel prioriteti.
  • Proceset përzgjidhen për tu ekzekutuar nëpërmjet funksionit schedule
    • Ai përcakton procesin më të mirë për tu ekzekutuar bazuar në ngarkimin dhe në historinë e ekzekutimit të procesit.
  • Kerneli i Linux ka evoluar vazhdimisht, duke inkorporuar teknologji të reja dhe duke kërkuar të rrisë skalabilitetin dhe performancën.

Iralda Mitro

r nd sia e notacionit o
Rëndësia e notacionit O
  • Notacion O jep një ide sesa kohë kërkon algoritmi.
  • Koha për një algoritëm O(n) varet nga inputi (linear me n)
  • O(n^2) është në katror me inputin
  • O(1) nuk varet nga inputi dhe vepron në kohë konstante.

Iralda Mitro

probleme me skeduluesit e vjeter ne linux
Probleme me skeduluesit e vjeter ne Linux
  • Para kernelit 2.6, skeduluesi kishte një kufizim tepër problematik kur shumë procese ishin aktive.
  • Kjo ndodhte pasi aplikohej një algoritëm përzgjedhës me kompleksitet O(n).
  • Në këto skedulues, koha që duhej për të skeduluar një process ishte funksion i numrit të proceseve që ndodheshin në sistem.
    • Me fjalë të tjera, sa më shumë punë (n) të ishin aktive, aq më shumë zgjaste skedulimi i një tasku.
  • Në ngarkesa shumë të mëdha, procesori mund të konsumohej vetëm me skedulimin, dhe të mos mbeste kohë për vetë proceset.
  • Pra algoritmit imungonte skalabiliteti.

Iralda Mitro

probleme me skeduluesit e vjeter ne linux1
Probleme me skeduluesit e vjeter ne Linux
  • Skeduluesi para-2.6 përdorte gjithashtu një rradhë të vetme ekzekutimi për të gjithë procesoret, në një system simetrik multiprocessor (SMP).
  • Kjo do të thoshte që një task mund të skedulohej nga cdo processor- gjë që ishte e mirë për ngarkesat- por e keqe për memorjen cache.
  • Për shembull, supozojmë se një task po ekzekutohet në procesorin CPU-1, dhe të dhënat e tij ishin tek cache e procesorit. Nëse ky task do të riskedulohet në CPU-2, të dhënat e tij do të duhej të zhvlerësoheshin në CPU-1 dhe të coheshin tek CPU-2.

Iralda Mitro

kerneli 2 6
Kerneli 2.6
  • Një nga vecoritë më të rëndësishme të kernelit 2.6 është një skedulues i implementuar nga Ingo Molnar.
  • Ky skedulues është dinamik, suporton balancim të ngarkesës dhe operon në kohë konstante O(1).

Iralda Mitro

skeduluesi 2 6
Skeduluesi 2.6
  • Një nga cështjet që nxiti nevojën për një skedulues të ri ishte përdorimi i makinës virtuale të Javas (JVM).
  • Modeli i programimit Java përdor shumë thread-e ekzekutimi, të cilat kërkojnë shumë punë për tu skeduluar në një skedulues O(n).
  • Ndërsa një skedulues me kompleksitet O(1) nuk ka probleme nga mbingarkesa.

Iralda Mitro

vecorite skeduluesi 2 6
Vecorite - Skeduluesi 2.6

O(1) nuk ka probleme nga mbingarkesa.

Cdo CPU ka një rradhë ekzekutimi të përbërë nga 140 lista prioritetesh, të cilat trajtohen në rend FIFO.

Punët që skedulohen për tu ekzekutuar shtohen në fund të listës së tyre të rradhës së ekzekutimit.

Cdo task ka nje porcion kohe që tregon për sa kohë do të ekzekutohet.

100 listat e para të prioriteteve të rradhës së ekzekutimit janë rezervuar për taske real-time, ndërsa 40 të fundit përdoren për tasket e userit.

Iralda Mitro

puna e skeduluesit 2 6
Puna e Skeduluesit 2.6
  • Puna e skeduluesit është e thjeshtë: zgjidh një task me prioritetin më të lartë për tu ekzekutuar.
  • Koha që duhet për të gjetur një task për të ekzekutuar nuk varet nga numri i taskeve aktive por nga numri i prioriteteve.
  • Kjo e bën skeduluesin 2.6 një proces O(1) sepse koha për të skeduluar është fikse dhe determinante, pavarësisht nga numri i taskeve.

Iralda Mitro

algoritmat e skedulimit
Algoritmat e skedulimit
  • Linux perdor 2 algoritmaskedulimi
    • Time-sharing algorithmper skedulimin midis proceseveteshumte ne tenjejtenkohe
    • Real-time algorithmper procesekuprioritetiabsolut I tyreeshte me I rendesishem se faktoret e tjere
  • Faktoretsihistoriadheprioritetihyjne ne menyretedrejtperdrejte ne skedulim

Iralda Mitro

shkaterrimi i proceseve
Shkaterrimiiproceseve
  • mund të shkaktohet nga disa ngjarje
    • nga përfundimi normal i procesit
    • nëpërmjet një sinjali
    • nëpërmjet një thirrje të funksionit exit.
  • Sido që të arrihet përfundimi i procesit, procesi përfundon nëpërmjet një thirrje të funksionit të kernelit do_exit

Iralda Mitro

procesi i shkaterrimit
Procesiishkaterrimit

Qëllimi i do_exit është të heqë të gjitha referencat e sistemit të shfrytëzimit tek procesi aktual.

Vendosetflag PF_EXITING .

exit_mm (për të fshirë faqet e kujtesës)

exit_keys (fshin celësat e sigurisë së procesit).

Funksioni do_exitbensinjalizime (për shembull, sinjalizimi i prindit që biri është duke u fshirë) nëpërmjet thirrjes së exit_notify.

Gjëndja e procesit behetPF_DEAD

Thirret funksioni schedule për të zgjedhur një proces tjetër për tu ekzekutuar.

Iralda Mitro