Sisteme de operare

Notiță
9.5/10 (2 voturi)
Domeniu: Calculatoare
Conține 1 fișier: docx
Pagini : 74 în total
Cuvinte : 22498
Mărime: 92.47KB (arhivat)
Publicat de: Radu A.
Puncte necesare: 0

Extras din notiță

Subiectul 7: (exemplu de raspuns) Folosirea ASLR impiedica rularea de shellcode-uri de pe stiva prin pozitionarea stivei in diverse zone din spatiul de adresa; atacatorul nu poate sti (usor) care este adresa de start a shellcode-ului. Are eficienta in special pe sistemele pe 64 de biti. Pe cele pe 32 de biti se poate folosi brute force.

Subiectul 8: (exemplu de raspuns) Folosirea unui numar mare de thread-uri in cadrul unui proces poate conduce mai rapid la stack overflow. Fiecare thread are stiva proprie, cu dimensiunea fixata la crearea. Daca se creeaza prea multe thread-uri, se va ocupa foarte mult stiva. Stivele thread-urilor vor fi apropiate unele de altele astfel ca, in cazul unui flux de apeluri mare (apeluri recursive, de exemplu), exista riscul ca stiva unui thread sa suprascrie stiva altui thread.

Subiectul 11: (exemplu de raspuns) Blocurile/modulele implicate intro diagrama, despre care ar trebui discutat, sunt:

1.TCP communication

2.I/O model (async vs threading)

3.XML parser

Daca le luam de la coada la cap, parserul XML trebuie sa fie lightweight si sa implementeze un subset necesar comunicarii intre client si server.

Modelul de I/O, daca ne uitm la numarul maxim de clienti cerut de specificatii, de 1000, putem sa implementam folosind 1000 de threaduri care asculta pe acelasi socket. Daca insa ne uitam la faptul ca trebuie sa serveasca un numar relativ mare de tranzactii pe secunda, probabil ca un model async I/O ar fi mai potrivit, eliminand context switchurile dintre cele 1000 de threaduri din celalalt model. In cele din urma, probabil ca un model hibrind cu un thread care asculta pe un socket si foloseste async IO si un numar de threaduri care este o functie de numarul de core-uri este cel mai eficient.

Modulul de TCP are o particularitate interesanta. Din starea de listen, la aparitia unei conexiuni noi se creeaza un fd de date. TCPul fiind un protocol de tip stream, sunt doua posibilitati. Daca clientii trimit cereri care au toate nevoie de raspuns, atunci este ok, serverul citeste de pe socket pana cand se poate forma un mesaj XML corect, apoi il trimite mai departe catre procesare si trimite raspunsul inapoi pe aceeasi conexiune de date, dupa care inchid conexiunea. Cazul mai complicat este cand un client poate trimite notificari catre server fara sa astepte raspuns, caz in care este necesar sa se detecteze si sa se delimiteze mai multe requesturi in acelasi buffer. In acest caz este posibil sa apara si desincronizari intre client si server, daca clientul trimite notificari foarte rapid, bufferul de TCP poate sa contina requesturi incomplete, ceea ce complica detectia de mesaje bine formate.

Subiectul 12: (exemplu de raspuns) Aici problema consta in faptul ca nu este scalabil sa stochezi 1,000,000 de fisiere in acelasi director, si nici intro baza de date nu prea are sens sa stochezi ca bloburi toata povestea asta care insumeaza 10TB de date. Asadar, e clar ca fisierele vor trebui stocate pe disc in foldere separate, cel mai bine intro structura arborescenta, care sa se poata intinde pe oricate filesystemuri, deoarece e vorba de o capacitate mai mare decat discurile uzuale. Asadar, blocurile implicate in aceasta solutie sunt doua:

1.Bloc de identificare

2.Bloc de stocare

Blocul de identificare se poate implementa cu o tabela simpla in orice sistem de baze de date, care face o mapare de la un identificator unic la o cale de fisier pe disc.

Blocul de stocare are un API simplu, prin care i se cere, pentru un nou fisier de stocat, locul in care se va stoca. Pentru a face asta, trebuie sa stie ce discuri exista in sistem, ce capacitati au si ce filesystem au, pentru a determina un numar optim de intrari in director pentru fiecare dintre ele. Cand se cere un slot pt un fisier nou, sistemul cauta pe volumele existente cel mai bun loc in termeni de spatiu disponibil, intrari in director, etc. Se poate implementa si un load balancer care sa distribuie fisierele cele mai cerute pe discuri diferite, etc.

14 iunie 2013

Subiectul 7: (exemplu de raspuns) Nu este recomandat sa se foloseasca mutex-uri intr-un handler de semnal. Daca se face lock pe mutex si, in programul principal, s-a facut de asemenea, lock pe mutex, exista riscul unui deadlock; handler-u de semnal intrerupe programul principal in timp ce acesta inca are ocupat mutex-ul.

Subiectul 8: (exemplu de raspuns) Un fisier mapat in memorie ocupa pagini fizice (frame-uri) care sunt mapate apoi in spatiuil de adresa al procesului. Un fisier poate fi mapat de mai multe procese, caz in care paginile fizice (frame-urile) aferente pot fi partajate. Scrierile in spatiul de adresa vor ajunge in spatiul fizic si vor fi flushed doar la apeluri specifice sau la inchiderea maparii.

Subiectul 11: (exemplu de raspuns) Pentru deschiderea unui fisier e nevoie sa localizam fisierul in dentry - costul este liniar in nr. de fisiere in director in ext2. Idee de baza: ca sa reducem timpul de acces, trebuie sa ne asiguram ca subiectele sunt stocate in directoare care au un numar redus de fisiere.

Pentru a implementa baza de date, avem nevoie de doua lucruri:

- o tabela de hash care mapeaza ID-ul fisierului in directorul care il contine. Aceasta tabela va fi stocata in memorie. Presupunand ca numarul de directoare este relativ mic, dimensiunea tabelei este data de nr de fisiere * (dim_id + pointer_nume_director) ~ 8 sau 16 octeti. 10 milioane de fisiere ar ocupa numai 160MB de RAM.

- o ierarhie de directoare in care fiecare director are un numar maxim de intrari X (prestabilit).

Se pot folosi multiple structuri ierarhice cu adancime prestabilita. Se creaza astfel mai multe directoare:

- un director "direct" care contine un numar de fisiere X

- un director "indirect" care contine X alte directoare fiecare cu X fisiere

- un director dublu indirect

- un director triplu indirect etc.

Se vor folosi directoarele "directe" dupa care cele indirecte, dublu-indirecte, etc.

Cum alegem X? Timpul de acces la un fisier depinde de X si de adancimea structurii de directoare, citirea unui director dureaza: X(logXN + 1). Stiind N (e.g. 10 milioane), se poate optimiza X alegand valoarea care minimizeaza formula de mai sus.

Subiectul 12: (exemplu de raspuns) Ideea principala este de a trata o cerere de continut cat mai repede si de a inchide conexiunea - astfel numarul de clienti conectati simultan este mic si acest lucru reduce stresul asupra resurselor sistemtului (thread-uri, descriptori).

Se poate folosi un pool de thread-uri; atunci cand vine o cerere noua se aloca cererea unuia din thread-urile din pool. Folosirea pool-ului de thread-uri minimizeaza costurile de startup, si reduc costurile de switching (no tlb flush), insa toti clientii vor folosi acelasi spatiu de adresa - totusi potentialele probleme de securitate par minore (read-only video data).

Se va folosi blocking API pt. citire din sockets - e cea mai usor de folosit. Non-blocking nu prea are sens cu thread-uri. Event based la fel. Cel mai probabil reteaua va deveni un bottleneck. Din cauza ca folosim un pool de thread-uri nr de thread-uri nu e o problema, si nici cel de descriptori (presupunand ca nu se executa accept atunci cand nu se poate repartiza cererea clientului unui thread).

Preview document

Sisteme de operare - Pagina 1
Sisteme de operare - Pagina 2
Sisteme de operare - Pagina 3
Sisteme de operare - Pagina 4
Sisteme de operare - Pagina 5
Sisteme de operare - Pagina 6
Sisteme de operare - Pagina 7
Sisteme de operare - Pagina 8
Sisteme de operare - Pagina 9
Sisteme de operare - Pagina 10
Sisteme de operare - Pagina 11
Sisteme de operare - Pagina 12
Sisteme de operare - Pagina 13
Sisteme de operare - Pagina 14
Sisteme de operare - Pagina 15
Sisteme de operare - Pagina 16
Sisteme de operare - Pagina 17
Sisteme de operare - Pagina 18
Sisteme de operare - Pagina 19
Sisteme de operare - Pagina 20
Sisteme de operare - Pagina 21
Sisteme de operare - Pagina 22
Sisteme de operare - Pagina 23
Sisteme de operare - Pagina 24
Sisteme de operare - Pagina 25
Sisteme de operare - Pagina 26
Sisteme de operare - Pagina 27
Sisteme de operare - Pagina 28
Sisteme de operare - Pagina 29
Sisteme de operare - Pagina 30
Sisteme de operare - Pagina 31
Sisteme de operare - Pagina 32
Sisteme de operare - Pagina 33
Sisteme de operare - Pagina 34
Sisteme de operare - Pagina 35
Sisteme de operare - Pagina 36
Sisteme de operare - Pagina 37
Sisteme de operare - Pagina 38
Sisteme de operare - Pagina 39
Sisteme de operare - Pagina 40
Sisteme de operare - Pagina 41
Sisteme de operare - Pagina 42
Sisteme de operare - Pagina 43
Sisteme de operare - Pagina 44
Sisteme de operare - Pagina 45
Sisteme de operare - Pagina 46
Sisteme de operare - Pagina 47
Sisteme de operare - Pagina 48
Sisteme de operare - Pagina 49
Sisteme de operare - Pagina 50
Sisteme de operare - Pagina 51
Sisteme de operare - Pagina 52
Sisteme de operare - Pagina 53
Sisteme de operare - Pagina 54
Sisteme de operare - Pagina 55
Sisteme de operare - Pagina 56
Sisteme de operare - Pagina 57
Sisteme de operare - Pagina 58
Sisteme de operare - Pagina 59
Sisteme de operare - Pagina 60
Sisteme de operare - Pagina 61
Sisteme de operare - Pagina 62
Sisteme de operare - Pagina 63
Sisteme de operare - Pagina 64
Sisteme de operare - Pagina 65
Sisteme de operare - Pagina 66
Sisteme de operare - Pagina 67
Sisteme de operare - Pagina 68
Sisteme de operare - Pagina 69
Sisteme de operare - Pagina 70
Sisteme de operare - Pagina 71
Sisteme de operare - Pagina 72
Sisteme de operare - Pagina 73
Sisteme de operare - Pagina 74

Conținut arhivă zip

  • Sisteme de operare.docx

Alții au mai descărcat și

Arhitectura calculatoarelor

Scopul lucrării a) Elemente de limbaj de asamblare. b) Instructiuni de transfer. c) Instructiuni aritmetice. Desfășurarea lucrării...

Ingineria programării

În “Ghidul cunoștințelor esențiale referitoare la Ingineria Programării” (Guide to the Software Engineering Body of Knowledge -...

Securitatea bazelor de date

Astăzi vom discuta despre sucuritatea bazelor de date. Ne vom uita în mod deosebit la diferite comenzi şi construcţii SQL care să ne ajute să...

Microprocesoare

1)initiarea in programare ASM. 2)stodierea modului periferic GPIO. Problema: Sa se dezvolte o aplicatie care ar permite trecerea starii unui led...

Sisteme Multimedia

Scopul lucrării Familiarizarea cu produsul Director, studierea principalelor componente necesare dezvoltării unei aplicaţii multimedia. Sarcina...

Laboratoare programarea orientată pe obiecte

1. Obiective - Formarea unei imagini generale, preliminare, despre programarea orientată pe obiecte (POO) și deprinderea cu noile facilitați...

Inițiere în limbajul de programare VBA (Visual Basic for Applications)

Sarcina lucrării: Sarcina lucrării este de a face cunoștință cu limbajul de programare Visual Basic for Applications (VBA) și mediul de dezvoltare...

Bazele utilizării calculatoarelor

Un computer (calculator sau sistem de calcul) poate fi definit ca un echipament electronic de prelucrare automată a datelor, pe bază de program....

Te-ar putea interesa și

Windows

Argument Istoria mediului Windows este presarata cu un numar de succese si cu un numar egal de esecuri.Windows a aparut ca ceva putin mai mult...

Aspecte Generale ale Sistemelor de Operare Windows și Unix

ASPECTE GENERALE ALE SISTEMELOR DE OPERARE WINDOWS ŞI UNIX 1.1 Sisteme de operare; definiţii, componente, clasificări Sistemul de operare...

Sisteme de Operare - Windows 98

SISTEME DE OPERARE Prezentare generala Se stie ca, pe lânga componenta sa fizica (hardware), calculatorul mai are nevoie, pentru a putea...

Sisteme de Operare

1.SISTEME DE OPERARE 1.1 Definiţie Sistemul de operare reprezintă un ansamblu de programe care asigură utilizarea eficientă a resurselor fizice...

Arhitectura calculatoarelor - prezentare și istorie sisteme de operare - Linux, Haiku

Capitolul I: Sisteme de operare 1. Introducere Sistemul de operare reprezintă ansamblul de programe care asigură utilizarea optimă a resurselor...

Sisteme de operare - evoluția sistemelor de operare

Un sistem de operare este un program care controleaza executia programelor de aplicatie si actioneaza ca o interfata intre utilizator si partea...

Scurtă comparație între două sisteme de operare

Noţiuni introductive despre sistemele de operare Definiţia sistemului de operare Un sistem de operare este un sistem de programe care gestionează...

Sisteme de Operare și Dezvoltarea Lor

Ce este un sistem de operare. În general, interacţiunea dintre calculator şi utilizator poate fi descrisa la nivel simplist astfel: primul...

Ai nevoie de altceva?