[pso] simulare examen

Octavian Purdila tavi at cs.pub.ro
Mon Jun 16 02:38:47 EEST 2008


On Monday 16 June 2008, Marius Ion wrote:
> Pentru ceilalti care nu am fost la simulare, se pot posta subiectele pe
> undeva ?
>

1. Explicati de ce un kernel preemptiv are latenta mai mica decat un kernel 
nepreemptiv.

2. Fie urmatoarele functii ce ruleaza in kernel:

static int char *a, b;

static inline void* f(void) 
{ 
      return memcpy(a, &b, 1); 
}
 
static inline int g(void) 
{ 
      if (copy_to_user(a, &b, 1)) 
              return -EFAULT; 
      return 0;
}

Ce valoarea o sa intoarca cele doua functii?

3. Care din urmatoarele afirmatii sunt adevarate:
a) dupa un fork, procesul copil si parinte partajeaza fiserele
b) doua thread-uri partajeaza fiserele
c) dupa un fork, procesul copil si parinte partajeaza tabela de fisere
d) doua thread-uri partajeaza tabela de fisiere 

4. Explicati cum o implementare naiva a subsistemului de softirq/DPC poate 
duce la starvation.

5. Se executa in paralel a) cu )a, respectiv b) cu b) pe un sistem SMP. Care 
din secventele a), respectiv b) se executa mai rapid? De ce?

static atomic_t sum;

void do_sum(void)
{
      for(i=0; i<10000000; i++)
              atomic_add(&sum, i);
}
void do_sum(void)
{
      int _sum=0;
      
      for(i=0; i<10000000; i++)
              _sum+=i;
      atomic_set(&sum, _sum);
}

6. Fie un device driver care ofera utilizatorului posibilitatea de a citi date 
din memoria fizica, prin deschiderea device-ului asociat, pozitionarea cu 
lseek la offsetul din memoria fizica la care se doreste sa se faca citirea, 
si citirea datelor cu operatia read apoi. In ce conditii au operatiile de mai 
jos performante semnificativ diferite?
a) lseek(fd, 1024*1024, SEEK_SET); read(fd, buffer, 1024*1024);
b) lseek(fd, 1024*1024*1024, SEEK_SET); read(fd, buffer, 1024*1024);

7. Daca pentru urmatoarea structura:

struct {
      atomic_t ref_count;
      list_head list;
} my_struct;
 
folosim un cache SLAB pentru alocarea de memorie, cum se poate optimiza 
urmatoarea secventa de cod?
 
struct my_struct *sm=kmem_cache_alloc();

if (!sm)
      return NULL;

atomic_set(sm->ref_count,0);
INIT_LIST_HEAD(&sm->list);

8. Pe sistemul de fisiere PITIX, cum se modifica structura pe disc pentru 
urmatoare comanda bash: echo “ceva” > /mnt/pitix/a ? Sistemul de fisiere de 
tip PITIX se afla montat in /mnt/pitix.

9. Care este numarul de pasi minimi necesari pentru rutarea unui pachet, daca 
stiva de retea nu foloseste un cache de rute? Justificati.


-- 
This message has been scanned for viruses and
dangerous content by MailScanner, and is
believed to be clean.



More information about the pso mailing list