System Flashcards

(18 cards)

1
Q

C’est quoi un processus au niveau OS ?

A

Une instance d’un programme en execution. Le kernel lui donne : PID, espace memoire virtuel, file descriptors, au moins 1 thread, metadata (UID, env, signals).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Processus vs Thread — quelle est la vraie difference ?

A

Threads du meme processus : partagent heap, FDs, code (seule la stack est privee). Processus entre eux : rien de partage, memoire isolee.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Pourquoi la memoire virtuelle existe ?

A

Isolation memoire. Chaque processus croit avoir toute la RAM. Meme adresse virtuelle (0x1000) → RAM physique differente. Sans ca, un bug dans un programme pourrait corrompre la memoire d’un autre.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Qui traduit les adresses virtuelles en adresses physiques ?

A

Le MMU (hardware) via la page table du processus. Pas le kernel a chaque acces — ce serait trop lent. Si l’adresse n’est pas dans la page table → segfault.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

C’est quoi fork() ?

A

Syscall qui clone le processus parent. Le fils est quasi-identique : meme code, meme memoire, memes FDs. Retourne 0 dans le fils, PID du fils dans le parent.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

C’est quoi exec() ?

A

Syscall qui remplace le code du processus courant par un nouveau programme. Apres exec, le processus execute le nouveau binaire.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Pourquoi fork et exec sont separes ?

A

Entre fork et exec, le fils peut preparer son environnement : rediriger stdout, changer les FDs, modifier les variables d’env. C’est composable.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

C’est quoi le copy-on-write (COW) ?

A

Apres fork, les deux processus pointent vers les memes pages physiques (read-only). A la premiere ecriture → page fault → le kernel copie uniquement la page modifiee (4 KB).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Que se passe-t-il quand tu tapes ./taskserver dans zsh ?

A

zsh fork() → clone de zsh (COW). Le fils fait exec(taskserver) → remplace le code. Le runtime Go demarre. main() s’execute.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

C’est quoi un syscall ?

A

Instruction CPU qui passe de user mode (Ring 3) a kernel mode (Ring 0). Le kernel execute la demande (I/O, memoire, reseau) puis retourne en user mode.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Pourquoi un programme ne peut pas acceder directement au hardware ?

A

Ring 3 (user) n’a pas les privileges. Acces direct → exception CPU → kernel tue le processus. Le kernel (Ring 0) est l’intermediaire obligatoire.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

go func(){}() fait un syscall ?

A

Non. La creation de goroutine est 100% userspace. Pas de syscall, c’est pour ca que c’est si rapide.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

C’est quoi strace ?

A

Outil Linux qui trace tous les syscalls d’un programme. strace -c = comptage. -f = suit tous les threads. Sans -f on ne voit que le thread principal.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Pourquoi strace sans -f ne montre pas epoll ?

A

Les syscalls reseau (epoll, accept) se passent sur d’autres M (threads). Sans -f, strace ne trace que le main thread.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Que fait le syscall futex ?

A

Synchronisation entre threads (mutex, WaitGroup, channels sous le capot). Domine quand le serveur est idle — les M attendent.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Que fait tgkill dans strace d’un programme Go ?

A

Envoie SIGURG a un thread specifique — c’est le mecanisme de preemption asynchrone de Go 1.14+. sysmon detecte un G > 10ms et force le context switch.

17
Q

nanosleep dans strace d’un programme Go — c’est qui ?

A

sysmon. Il dort entre ses ticks (~10-20ms) puis se reveille pour verifier : preemption, GC, timers, netpoller.

18
Q

clone3 dans strace — ca correspond a quoi en Go ?

A

Creation de threads OS = creation de M. Le nombre de clone3 correspond au nombre de M crees par le runtime.