Interrupt Handling



1. Types of interrupts
      1) Software interrupts
      2) Hardware interrupts
            . Edge Triggering
            . Level triggering
            . MII
      3) exceptions
       
2. Initialization of interrupts
3. Interrupt Handling





Questions:
1) What happens if interrupt handler goes to sleep?
2) What happens if interrupt handler uses semaphores
3) How to protect variable between two interrupt handlers?
4) How to protect variable between task and interrupt handler?




Memory Management
===============

1) How virtual address is converted to physical address
2) what is the difference slab , slub memory algorithm
3) Explain memory thrashing?




1) Is it possible to save RAM memory contents across reboots?

     Yes... It is possible... At the time of reboot if we won't stop the refresh cycle of RAM it is possible store the RAM contents safe. There is file system build on the same theory is PRAMS file system. To find the complete information use the link bellow.
  
http://pramfs.sourceforge.net/


2) Different types of DMA transfer
      1) flyby DMA transfer
      2)  fetch-and-deposit DMA transfer
3) What are the precautions to be taken while writing an interrupt handler?
4) What are different IO schedulers available with Linux kernel?
5) Difference between 'noop' scheduler and a 'deadline scheduler?

6) How to add new system call
7) How do you understand Kernel OOPs?

8) why page cache is been removed from the kernel

9) What is the significance of  asmlinkage

10) How to do declare variable local to the cpu only?

11) How to you declare a variable, which is local to the thread only?

12) Can you generate Kernel  configuration file after building the image?

13) How size of RAM memory is detected in the Linux kernel?

14) What is boot memory?

15) Who to find interrupt latency?

16) what is need of copy_to_user to copy_from_user,cannot we use memcpy?

17) Explain the how scheduler works?

18) Who schedules the Workqueues?
     - Please go through the workqueues tab

19) Who schedules TASKLETS?

20) Difference between PCI and PCIe?

21) How do you find unhanded interrupts?

22) How to you protect buffer over flow in Linux kernel

23) How physical  to virtual memory conversion happens?

24) How context switch happens?

25) When task switch happens


26) How to pass event from kernel space to user level?

27) what are different communication methods available from user space to kernel space?

28) when to use which type of kernel synchronization methods?

29) how to solve problems for cache coherency ?

30) How plug and play works in the Linux kernel?

31) why sysfs is required?

32) explain about debugfs?

33) Kernel Booting process?

34) How to create a file directly from the kernel?

35) Different boot loader can be used?

36) what is difference between Kernel space virtual address and user space virtual address difference?

37) What is difference between Tasklets and work queues?
    - Please go through the work queues tab.

38) Who schedules TASKLETS?

39) Difference between process and threads?

40) How process got created in linux?

41) What are the different schedulers class present in the linux kernel?
42) How to extract task_struct of a particular process if the stack pointer is given?

43) How does scheduler picks particular task?

44) How does load balancing happens?

45) Explain about wait queues and how they implemented? Where and how are they used?

46) Why do we need separate kernel stack for each process?

47) What all happens during context switch?

48 ) What is thread_info? Why is it stored at the end of kernel stack?

49) What is the use of preempt_count variable?

50) How is virtual run time (vruntime) calculated?

51) How SCHD_FIFO and SCHD_RR works in RT scheduler

51) What is the Difference between Task and Thread?

52) how a process exit without calling return or exit function?

53) how debugger works?
54) Linux Booting process?
55) explain stack winding and unwinding happens?
56) difference between Edge triggering, level triggering, MSI interrupts?
57) how usb devices enumerate?
58) explain How Linux device tree works?
59) How pcie devices enumerate
60) explain architecture of platform driver?
61) explain clock driver architecture?


Interrupts:
========
1) How to modify interrupt vector
2) Who assigns interrupt numbers
3) How interrupt handler is executed
4) how interrupts are raised in the hypervisors?




Synchronization
============

  1. when to use conditional variables?
  2. Difference between Semaphores, Mutex & Spin Locks
  3. How synchronization between two interrupt handlers?
  4. How to synchronization between tasks and interrupt handler
  5. How to sync between two tasks in Kernel
  6. What is a difference between Binary Semaphore and mutex
  7. How RCU are implemented?
  8. how to use Read/writes are implemented
  9. what is lockdep?

    maps all the lock dependencies as they occur in a live kernel and will warn about the following classes of locking bugs:
      - lock inversion scenarios
     - circular lock dependencies
     - hardirq/softirq safe/unsafe locking bugs

     Bugs are reported even if the current locking scenario does not cause any deadlock at this point.i.e. if anytime in the past two locks were taken in a different order, even if it happened for another task, even if those were different locks (but of the same class as this lock), this code will detect it.
  10. Hardware spin locks?



Linux specific C language - questions
==========================

  1. How to protect a single variable in a c data structure from cache coherency?
  2. how read_mostly works
  3. why static variable initilizes only once?
  4. When to use likely and unlikely
File system:
========

1) How to resize ext4 file system?




Debugging
========
1) What are the tools that can be used for debugging the Linux kernel?


     -kdb
     -kgdb
     -printk
     -Linux Traces
     -JTAG,ICE etc,
     -Sniffers
     -profiling
     - Crash dump
     -UML ( User Mode Linux)
     - simulators - Qemu
     -  Hypervisor - VMware/kvm etc
     - Magic sysrq
     - lockdep


2) How debugging works

3 comments: