[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