Skip to main content

Interview Prep for Embedded Engineer

Locking and Synchronization


1. On a uniprocessor machine with preemption disabled, what will happen internally when

we say spin_lock()?

Answer: Hog the CPU

2. Can I lock a spinlock in one CPU and unlock it another CPU?

Answer: No it should be on same CPU as that preemption is disabled for that core and spinlock which locked the core need to disable the preemption and go out of that core only


3. What are the pros and cons of using per CPU variable as synchronization method?

https://www.makelinux.net/ldd3/chp-8-sect-5.shtml

https://0xax.gitbook.io/linux-insides/summary/concepts/linux-cpu-1

https://distkeys.com/operating%20systems/linux/2013/10/07/process-synchronization-in-linux-kernel.html


4. What is the maximum amount of time CPU can be in critical section after acquiring

spinlock?

https://coffeebeforearch.github.io/2020/11/07/spinlocks-6.html

it could remain in critical section till we don't do spinlock_unlock or another core hit watchdog bite (300ms) . Ideally critical section time should be less than the context switching time else spinlock would be inefficient 

5. What is the difference between binary semaphore and mutex in Linux?


6. What is the difference between down_interruptible vs down_killable in semaphore?


7. Can i call kmalloc(GFP_KERNEL) while holding a spinlock?


8. What are the lock free algorithms present in Linux kernel?


9. By disabling interrupts, will we get protection from concurrent access?


References:

https://monkcoder.blogspot.com/2023/11/spin-lock-understanding-in-basis.html#more


https://docs.kernel.org/locking/locktypes.html#:~:text=spinlock_t%2C%20rwlock_t%2C%20local_lock,raw_spinlock_t%20and%20bit%20spinlocks


https://0xax.gitbooks.io/linux-insides/content/SyncPrim/linux-sync-1.html


https://distkeys.com/operating%20systems/linux/2013/10/07/process-synchronization-in-linux-kernel.html

Memory Management

10. What are the use of L1, L2, and L3 Caches?

11. Difference between GFP_KERNEL and GFP_ATOMIC.

12. Where are page tables stored?

13. How do you test whether there are memory leaks in a Linux application?

14. Which file in Linux gives you information about memory zones?

15. Difference between kmalloc and vmalloc.

16. What does malloc(0) return?

17. What is the maximum memory that can be allocated using vmalloc?

18. What is the maximum memory that can be allocated using kmalloc?

19. What is the difference between VIRT, RES and SHR fields in top command?

20. What is the system call used by malloc and free?

21. What is the maximum memory that I can allocate using malloc?

22. What is cache coherence?

23. Linux intentionally leaves the first few kilobytes (or even megabytes) of each process's

virtual address space unmapped, so that attempts to dereference null pointers generate

an unhandled page fault resulting in an immediate SIGSEGV, killing the process. a) Yes b)

No

24. Virtual memory is divided into ____ a) pages b) bytes c) bits

25. What are the advantages of using virtual memory?

26. ____ is a method of data transfer between main memory to input/output device without

the need of processor.

27. Differences between vmalloc and kmalloc.

28. What is the maximum amount of RAM you can access with 32 bit processor?

29. When you call malloc from user space, from where it allocates memory: low mem/high

mem or any other location?

30. Why use volatile memory? Why not always use nonvolatile memory?

31. What does kmalloc(0) return?


Process Management

32. What is the difference between context switch and preemption?

33. On a multiprocessor system, how do you find out which process is running on which

processor?

34. How to change the priority of a process in Linux?

35. How can I find out the Count of number of times a process has been preempted in Linux?

36. What happens internally during context switch in Linux kernel?

37. What is buffer/cache?

38. Difference between orphan and zombie process.

39. What is the use of swapper process in Linux?

40. How to kill the process which is in TASK_UNINTERRUPTIBLE state?

41. What is load average in Linux?

42. What is resident memory in process?

43. What is the use of Procedure-linking table (PLT) while application is starting up?

44. Difference between fork and vfork.

45. What is kernel preemption?

46. What is process kernel stack and process user stack?

47. What is difference between background process and daemon?

48. Which state the process is in when executing the below line and waiting for input?

scanf("%d", &val);

a) TASK_INTERRUPTIBLE b) TASK_UNINTERRUPTIBLE


Interrupts

49. Which hardware is responsible for generating timer interrupts in Linux kernel?

50. How to direct interrupt to a particular cpu in Linux kernel

51. Interrupt handler in Linux kernel run with current interrupt line disabled on all processors.

a)True b) False

52. What is the difference between request_irq and request_threaded_irq?

53. What are the advantages of disabling interrupts?

54. What happens when two interrupts arrive at the same time in Linux?

55. Does Linux kernel supports interrupt nesting?

56. APIC vs PIC in x86.

57. Can we use printk inside interrupt handler?

58. What happens when we are in interrupt handler and another interrupt arrives?

59. Can we disable interrupts on all processors in Linux kernel?

60. How Message Signalled Interrupt works?

61. What happens if we call schedule() in interrupt handler?

62. What all actions cannot be performed in interrupt handler?

PCI

63. How do you check how many lanes are being used by pcie card in Linux?

64. Maximum number of PCI devices that can be connected to a host?

65. What are lanes in PCI?

66. How auto detection of PCI devices happen in PCI?

67. What is a PCI bridge?

68. Is PCI serial protocol or parallel protocol. What is the maximum data rate achieved with

PCI?

69. What is the use of Base Address Register in PCI?

70. What is the use of PCI protocol?

Processor

71. Difference between processor and core?

72. What is NUMA?

73. Does microprocessor have internal memory? a) Yes b) No

74. System bus = address bus + data bus + control bus. Yes/No

75. Consider a square matrix of x size, which technique will be faster to perform sum of

elements of the matrix?

A) Traversing row by row and adding elements

B) Traversing column by column and adding elements

76. What is a cache line?

77. What is SMP?

78. Comment the registers you know about any processor and its purpose.

79. What are the factors you consider when selecting a processor for your project?

80. Why do we need PCI, USB and other kind of buses why can't we directly connect

peripherals to the processor?

81. Explain differences between SRAM and DRAM in terms of cost, access time and size.

82. What is difference between motherboard, chipset and processor?

83. Difference between pads and pins on a SoC.

84. What is out of order execution in processor?

Libraries (Static and Shared) + Compilation

85. Where do executables look for shared objects at runtime?

86. What is the purpose of fPIC flag while generating shared library?

87. What are the advantages of static library over shared library?

88. What is present inside a static library?

89. What are relocations in an object file?

90. What is the benefit of declaring a symbol as weak?

91. What are the operations performed by linker during compilation process?

92. When two userspace executables uses same shared library .so, how it organised in

process address space?

93. Will a code compiled in one Linux distribution work on all other Linux distribution?

94. Why c code is converted to assembly and then to machine code. What is the benefit of

converting it to assembly? Why not directly to machine code?

95. Will the assembly of the below code generated by compiler same on Windows/Linux?

int add(int a, int b)

{

return a+b;

}

96. What are drawbacks of using inline?

97. What will be the output of echo $?, when you return 256 from your c main function

98. C code compiled on one Linux distribution (eg ubuntu) will it execute on other Linux

distribution (redhat)?

99. Whether GCC searches for both static and shared library. Which is searched initially by

gcc compiler?

100. What is a toolchain?

101. How do you find out whether a particular binary has debugging symbols or not?

Memory Mapped IO and Port Mapped IO

102. Difference between IO Mapped IO and Memory Mapped IO.

103. cat /proc/ioports does it list all the I/O Ports used by the processor?

a) Yes b) No

104. Will there be any data in /proc/ioports for ARM?

105. Does x86 uses memory mapped IO? A) Yes B) No

106. Difference between microcontroller and System on Chip.

107. Which processors uses I/O Mapped I/O for accessing peripheral devices

memories/registers?

Linux Kernel Module Programming

108. Will a module be loaded if it has while(1) loop in module_init function?

109. Where do you find the information of builtin modules from running Linux image?

110. What is the use of likely and unlikely macros in Linux kernel?

111. The Makefile macro that one sets to identify what file for the kernel Makefile to make

into a module is _____. a. obj-m b. obj-y c. target d. list

112. Why we can't unload the module when bug() is call?

113. Is Linux source sufficient to compile a Linux kernel module or do I need to install the

kernel for building modules?

114. How do you find the Linux version of a compiled kernel module?

115. What happens if we don't specify MODULE_LICENSE macro in C Code?

Character Drivers

116.What is the maximum major number in case of Character and block device driver?

117. Which one will you use to empty a file?

a) /dev/null b) /dev/zero

118. What are the examples of character devices in Linux?

119. What is the use of file->private_data in a device driver?

Commands

120. How to create 100 files in a single command?

121. Why running ps command without options on shell shows only two entries?

122. ____ command will you use to find list of C files present in a directory.

123. Which Linux commands you run when you get a new embedded hardware?

124. Difference between 'echo 0>file' and 'echo 0 > file'.

125. What is the first tool you use if your c/cpp application is not behaving properly in Linux?

Time Management

126. Will the call to date command read from rtc?

127. gettimeofday and clock_gettime both returns the wall time. Which one will you use in

your application and how do you decide?


Page | 6


Files

128. What is the use of O_SYNC flag while opening the file?

129. What is the difference between file and inode?

130. I have closed stdout close(1) Can we reopen it?


Scheduling

131. How is scheduler invoked in Linux kernel?

Signals

132. What are the advantages of sigaction over signal?

Bottom Halves

133. Which context softirq/tasklets/workqueues runs?

134. What are the various bottom halves techniques available in Linux Kernel?

135. Why do we need to divide interrupt handler into top half and bottom half?

136. Differences between softirqs and tasklets.

Linux Boot Flow

137. Which is loaded first Initrd or kernel image during boot?

Kernel Threads

138. irq/ - Threaded interrupt handlers

ksoftirqd/ - Softirq Threads

kworker/ - Workqueue Threads

What more kernel threads you see in ps?

139. How do you identify kernel thread from ps output?

Linux Kernel Internals

140. What is difference between operating system and kernel?

141. Do we need device tree if we don't have any SPI or I2C devices connected?

142. Is Linux Kernel Monolithic? a) Yes b) No

143. A Linux distribution is a combination of Linux kernel + _____


Page | 7

144. What are the different ways to find out the kernel command line parameters?

145. What do you mean by vanilla kernel?

146. Is it possible to boot Linux kernel without initrd/initramfs?

147. Which one will you use for custom driver operations:sysfs or ioctl?

148. Difference between printk and trace_printk.

149. Which kernel parameters you added to kernel command line?

150. When an unallocated pointer is derefrenced, who will check that this is invalid

instruction?

151. What is the difference between initrd and initramfs?

152. What is the use of asmlinkage in Linux kernel?

153. /proc/kallsyms contains both global and exported symbols. How do you identify

exported symbols from output of /proc/kallsyms?

154. We say Linux kernel is monolithic. What does it mean?

155. What is the use of compatible property in nodes of device tree?

156. Will /proc/kallsyms contains the global variables defined in Linux kernel modules?

157. What exactly is kernel headers? Why should we install them for generating kernel

modules?

158. Which time is used in dmesg logs?

159. Explain the role of the variable preempt_count in the Linux kernel.

160. What is the initial value of jiffies on boot?

161. What is jiffies in Linux kernel?

162. Difference between mdelay and msleep in Linux kernel.

163. Can I disable drivers which are configured as builtin from loading?

164. How Linux kernel modules are automatically loaded in any Linux distribution?

System Calls

165. How do you allow only root to run your user application. If normal user is running your

user application, you need to print a message and exit?

166. What are the maximum number of arguments we can have for a system call?

167. Who updates the errno in Linux? a) glibc b) Linux Kernel c) None of these d) Both

168. Can I update the system call table from Linux Kernel module?

169. Does calling gettimeofday() from your user space code perform a mode switch from user

to kernel space?

Sysfs

170. Attributes in sysfs are mapped to a) directories b)files

171. kobjects in sysfs are mapped to a) directory b)files

172. What is the use of /etc/fstab file in Linux?


Page | 8


Linux Kernel Compilation

172. What should be the number of jobs when compiling Linux kernel make –j?

173. What are the different commands you can run on a generated kernel image

(bzImage/vmLinux/vmlinuz) before installing?

174. Difference between vmLinux and bzImage?

Misc

175. What are the minimum requirements of Linux to work on a hardware?

176. What is the asm-generic folder in Linux source code? What it contains?

177. What is the use of initrd image while booting?

178. How do you find out which init manager is running on your Linux machine:

sysvinit/systemd?

179. What is the first function that will be called when Linux kernel is loaded?

180. What are the data structure implemented in Linux kernel?

181. As an embedded developer, how do you test a temperature sensor without any special

hardware?

182. We have systemd-analyze plots for boot up time measurement,Do we have any such

similar tools to measure the different sequence of shut down time?

183. Can we run Linux on microcontroller?

184. Given a device datasheet, what all you look for?

185. Kernel code on Intel processor is running on ring a) 0 b) 1 c) 2 d) 3

186. What is difference between debug build and release build?

187. What is segmentation fault?

188. What are the various mechanisms available for asynchronously notifying user space

from kernel space about a particular event?

189. When should we add Suffixes like 'L', 'U', 'LL', 'UL', to integers in C?

190. What is the difference between if(1 < x < 2) and if( (1 < x) && (x<2))?

191. Which one do you prefer and why? char buf[256] = {0}; or char buf[256]; memset(buf,

0, sizeof(buf));?

192. Why a c code compiled in Linux, will not work in windows even they are of same

architecture?

193. What is a loopback device?

194. What is the significance of LD_LIBRARY_PATH environmental variable?

195. What is the significance of /proc/devices file?

196. What is the use of environmental variable PATH?

197. How do you detect segmentation fault?


Page | 9


198. What is monotonic clock?

199. What is the simplest technique you can do to make someone Linux system unusable?

200. What is vdso?

201. Which will execute faster / or >> ?

Linux Device Model

202. Explain the relation between ksets, kobjects and ktypes?

Comments

  1. https://monkcoder.blogspot.com/p/spin-lock-understanding-in-basis.html

    ReplyDelete
  2. https://docs.kernel.org/locking/percpu-rw-semaphore.html // Per CPU Read Write Sempahore

    ReplyDelete

Post a Comment

Popular posts from this blog

Spin Lock Understanding in Basic Language

  Spin lock  It's a spinning (polling) lock which is running and try to take a lock in a tight loop and checking again and again if lock is got freed up or not and once it free it will immediately take it up . Basically spin lock divided in to 4 Parts : 1.  Preempt Disable  : 1st operation spinlock will disable other Hardware interrupts so that what ever context is got scheduled will not preempt  2.  Spin_lock_acquire : It will generate a lock context for further tracking in lock dep  3.  do_spin_try_lock : Spinning in a loop (do -while) to take the lock and spin till not get the lock free. 4.  do_spin_lock :  Take the lock  After taking the lock it use to put a memory barrier to make sure memory will not be overwritten mistakenly Spin unlock  use to unlock the spin lock . Divided in to 3 parts. 1.  Spin_release : Mark in lock context for lock dep that we are going to release the lock for this particular lock context 2....

Per CPU Variable

https://elixir.bootlin.com/linux/latest/source/arch/arm/kernel/process.c#L40 example:   #if  defined ( CONFIG_CURRENT_POINTER_IN_TPIDRURO ) ||  defined ( CONFIG_SMP ) DEFINE_PER_CPU ( struct task_struct * , __entry_task ); #endif