Skip to main content

Linux Kernel Developer Interview Questions

Synchronization

1) why spinlock? why can't only mutex
2) explain different synchronization constructs available under linux
3) did you used semaphore while coding? explain scenario

Scheduler

1) when a process is in infinite while loop? how scheduler will come to high priority process is waiting for scheduler
2) why copy_from_user() and copy_to_user() used ? why copy_to_user() user even though kernel could  write at any user space?
3) Explain steps b/w process1 calls sleep and then wakes up, in below fig
4)  what is cooperative scheduling and list adventages and disadventages

 

Memory manager

1) how memory is allocated in Linux
2) Describe role of memory manager while executing program(i mean to run/execute a program written by user,  what memory manager service will come into picture)
3) what are the data structures used to design memory manager in Linux
4) what are memory Zones ?
5) what is the difference between kmalloc and vmalloc
6) how kernel manage to allocate memory when running interrupts? will it able to allocate?
7) What memory barriers available @ Linux and why we need them



Unix system Programming

1) write a program to create orphan process
2) write a program to create a Zombie process
3) write algorithm  to implement a shell
4) write a script to find types of files present in current directory
5) what is fork and vfork
6) what exec function will do, explain
7) what is shell? how it executes commands









Popular posts from this blog

C Program to Simulate Linux Cat command

/*  * C program to Simulate Implementation of  Linux *cat* command  * This program will not handle redirection  * you can try to improve this program to handle redirection of file contents  */ #include<stdio.h> #include<string.h> #define MAX_FILE_NAME_CHARS 255 int main(int argc, char *argv[]) {  FILE *fp;  char file_name[MAX_FILE_NAME_CHARS], ch;  int i;  /*   * after creating a.out, rename it as mycat for our own cat command   * and it usage is same as standard cat command   */  if(argc<1){     printf("Usage mycat <filename> \n");     return 0;  }  /*   * cat handles more than one file   * so we need this loop to handle all the files provided   * on command line   */  for(i=1; i<=argc;i++){     /* no need of copy but for understanding purpose, i have created      * str...

simple program to create Orphan process

shiv@ubuntu:~/ds/unix$ cat  orp.c /*  * Program to create orphan process @ Linux  * getpid() gives process PID and   * getppid() gives process's parent ID   * here main() process ID is parent id is current shells PID  * once process becomes orphan it is adopted by init process(it's PID is 1)  */   #include<stdio.h> #include<unistd.h> int main() {  pid_t p; /* create child process */  p=fork();  if(p==0) {     /* fork() returns Zero to child */     sleep(10);  }  printf("The child process pid is %d parent pid %d\n", getpid(), getppid()); /*parent/child waits for 20 secs and exits*/  sleep(20);  printf("\nProcess %d is done its Parent pid %d...\n", getpid(), getppid());  return 0; } O/p shiv@ubuntu:~/ds/unix$ ./a.out The child process pid is 2575 parent pid 1922 The child process pid is 2576 parent pid 2575 Process 2575 is done it...

C Program to find Armstrong numbers between range m and n

/*  * Program to print Armstrong number between range m and n  * Armstrong  number is nothing but sum of cubes of digits of number is  * equal to the number  * ex: 153 is Armstrong number since 1^3+5^3+3^3=153  * there are very few numbers hold above property; execute   * below program to find all numbers  * b/w m and n  */ #include <stdio.h> void is_armstrong(int num) {   int sum=0, n, d;   n=num;   while(n){   d=n%10;  /* extract digits of number*/   sum=sum+(d*d*d);  /*take sum of them */   n=n/10;  }  if(sum == num)  /*sum is same as number then it is Armstrong number*/     printf("%d\n", sum); } int main() { int i,n,m; printf("Enter range \n"); scanf("%d%d", &m, &n);  for(i=m;i<=n;i++){    is_armstrong(i);  } return 0; }