What are advantages and disadvantages of recursive
calling ?
Answer Posted / sk_seeker
Why is recursion frowned upon??
User space programs: memory consumption
----------------------------------------
User stack is a dynamic stack i.e. we page fault on the
stack virtual addresses and resolve the fault by allocating
a physical page. Many recursions can lead to a lot of (user
stack) memory being consumed. In a traditional programming
model, when a thread blocks, then all the memory is stuck
with the thread, until the paging daemon kicks it out. So,
effectively, many threads doing recursive calls can consume
a lot of memory and force memory pressure to occur in the
system i.e. system slows down.
Kernel Space program: stack depth
---------------------------------
A kernel stack is fixed in size i.e. 8K or 16K usually. And
this stack does not grow dynamically in most OSes. So,
there is a bound on how much memory can be used for the
kernel stack, unlike user programs. But, this bound on the
stack size is the reason why recursion is discouraged. More
recursive levels can lead to a stack overflow and this will
panic the box. One might say: hey, my recursive depth is
only 10. But, what is unknown is what amount of kernel
stack is already used up && the stack frame consumption
depends on the chip architecture that is being used.
For both of the above reasons, recursion is avoided in
general kernel programming.
| Is This Answer Correct ? | 20 Yes | 12 No |
Post New Answer View All Answers
How to declare pointer variables?
What is pointers in c?
i = 25;switch (i) {case 25: printf("The value is 25 ");case 30: printf("The value is 30 "); When the above statements are executed the output will be : a) The value is 25 b) The value is 30 c) The value is 25 The value is 30 d) none
What is advantage of pointer in c?
What is sizeof in c?
What is #define size in c?
What is fflush() function?
#include
What is action and transformation in spark?
How do I use void main?
why use functions a) writing functions avoids rewriting the same code over and over b) using functions it becomes easier to write programs and keep track of what they are doing c) a & b d) none of the above
Which is best book for data structures in c?
What is static memory allocation?
Why is c called a mid-level programming language?
Explain what is wrong with this program statement?