[pso] Re: restanta pso, intrebari examen

Octavian Purdila pso@cursuri.cs.pub.ro
Fri, 14 May 2004 13:52:10 +0300


On Friday 14 May 2004 13:06, you wrote:
> Merci.
>
> Mai am o intrebare.
> Am auzit (zvonuri) ca anul trecut ar fi existat pe site un fel de lista
> cu subiecte posibile. Exista asa ceva ? Ar putea fi pusa pe site sau
> trimisa pe mail ?
>

Subiectele posibile de anul trecut:

sinteza:

Descrieti arhitectura MMU a procesorului Pentium. 
Intreruperi si exceptii la procesorul Pentium. 
Descrieti implementarea alocatorului slab in Linux 
Descrieti gestiunea paginilor si implementarea alocatorului de pagini (buddy) 
in Linux. 
Gestiunea memorie high in Linux 
Gestiunea memoriei utilizator. 
Tratarea page-fault-urilor in Linux. 
Descrieti 3 tipuri de functii "defferable" din Linux. 
Operatii de sincronizare in Linux 
Descrieti schedulerul Linux. 


intrebari:

Comparatie intre Linux si *nix 
Descrieti segmentele (ref la memoria virtuala) folosite de Linux/i386 
In ce registru se tine adresa tabelei de pagini la Pentium? Care este secventa 
de instructiuni care invalideaza toate intrarile din TLB? 
Daca avem adresa virtuala vaddr si adresa tabelei de pagini reprezentata de mm 
care este secventa de apeluri de functii in Linux (independente de platforma) 
care translateaza adresa virtuala in adresa fizica corespunzatoare? 
Cate nivele de paginare sunt folosite in Linux? Cate nivele de paginare 
implementeaza MMU-ul Pentiumului? Cum este implementata paginarea in Linux 
pentru i386 astfel incat sa ascunda diferentele? 
Care sut tipurile de adrese cu care se lucreaza in nucleul Linux? 
Enumerati si explicati starea proceselor in Linux. 
Descrieti si explicati implementarea macrodefinitiei current 
Fie urmatoarele definitii: 
    struct list_head {
        struct list_head *prev,*next;
    }

    static inline void list_del(struct list_head *entry);
    static inline void list_add(struct list_head *new, struct list_head *add);    
    
    #define list_for_each(pos, head) \
        for(pos=head->next; pso->next; pos != head)

    #define list_entry(ptr, type, member)\
        ((type*)((char*)(ptr)-(unsigned ong)(&((type*)0)-member)))
        

 Completati implementarea pentru list_del si list_add. Da-ti un exemplu de 
folosire. Explicati macrodefinitia list_etry. 
Care sunt regulile de imbricare a exceptiilor/intreruperilor in Linux? 
Cum se clasifica in Linux intreruperile si exceptiile? 
Scrieti in GCC inline assembly secventa de instructiuni echivalenta cu ce de 
ma jos (r apelului de sistem pentru read este _NR_read) 
int a,fd;
char buff[2035];

a=read(fd, buff, 1024);

 
Se se descrie si explice implementarea macroului current_text_addr 
Se se descrie si explice implementarea macroului switch_to() 
Care este secventa de actiuni executata de procesorul Pentium la generarea 
unei intreruperi sau exceptii? Cum trebuie sa se termine o rutina de tratare 
a unei intreruperi/exceptii? 
Explicati cum este implementat in Linux mecanismul de partajare a 
intreruperilor intre mai multe device drivere. 
Explicati rolul kernel threadului keventd. 
Explicati rolul kernel threadului ksofirqd_CPNn 
Descrieti si explicati functia kernel_thread. Cand trebuie folosita functia 
demonize() impreuna cu kernel_thread? 
Descrieti structura tvecs folosita in Linux pentru verificarea expirarii 
timerelor. 
Descrieti maparea spatiului de adresa folosit in Linux. 
Descrieti rolul si imlplementarea fix-up-urilor. 
Descrieti stiva user-space la tratarea unui semanal. De ce este preferata 
aceasta abordare? 

tavi