Hey Vijay<br><br>I am a newbie too. Just sharing what I could go through.<br><br>It is said that Kernel or atleast a part of kernel needs to be non paged for fast interrupt access etc as pinned memory<br>Wiki says <br><h3>
<span class="mw-headline" id="Pinned.2FLocked.2FFixed_pages">Pinned/Locked/Fixed pages</span></h3>
<p>Operating systems have memory areas that are pinned (never swapped to secondary storage). For example, <a href="http://en.wikipedia.org/wiki/Interrupt" title="Interrupt">interrupt</a> mechanisms rely on an array of pointers to their handlers, such as <a href="http://en.wikipedia.org/wiki/I/O" title="I/O" class="mw-redirect">I/O</a> completion and <a href="http://en.wikipedia.org/wiki/Page_fault" title="Page fault">page fault</a>.
If the pages containing these pointers or the code that they invoke
were pageable, interrupt-handling would become far more complex and
time-consuming, particularly in the case of page fault interrupts.
Hence, some part of the page table structures is not pageable.</p>
<p>Some pages may be pinned for short periods of time, others may be
pinned for long periods of time, and still others may need to be
permanently pinned. For example:</p>
<ul><li>The paging supervisor code and drivers for secondary storage devices
on which pages reside must be permanently pinned, as otherwise paging
wouldn't even work because the necessary code wouldn't be available.</li><li>Timing-dependent components may be pinned to avoid variable paging delays.</li><li><a href="http://en.wikipedia.org/wiki/Data_buffer" title="Data buffer">Data buffers</a> that are accessed directly by peripheral devices that use <a href="http://en.wikipedia.org/wiki/Direct_memory_access" title="Direct memory access">direct memory access</a> or <a href="http://en.wikipedia.org/wiki/I/O_channel" title="I/O channel" class="mw-redirect">I/O channels</a> must reside in pinned pages while the I/O operation is in progress because such devices and the <a href="http://en.wikipedia.org/wiki/Bus_%28computing%29" title="Bus (computing)">buses</a>
to which they are attached expect to find data buffers located at
physical memory addresses; regardless of whether the bus has a <a href="http://en.wikipedia.org/wiki/IOMMU" title="IOMMU">memory management unit for I/O</a>, transfers cannot be stopped if a page fault occurs and then restarted when the page fault has been processed.</li>
</ul><p>There are other two discussion thread which say kernel is non-pageable and now due to growing kernel Data structures it is allowed</p><p><a href="http://kerneltrap.org/node/6404">http://kerneltrap.org/node/6404</a></p>
<p><a href="http://kerneltrap.org/node/8206">http://kerneltrap.org/node/8206</a></p><p><br></p><p>Regards</p><p>Kishore<br></p> <br><br><div class="gmail_quote">On Thu, Jun 21, 2012 at 5:57 PM, Vijay Chauhan <span dir="ltr"><<a href="mailto:kernel.vijay@gmail.com" target="_blank">kernel.vijay@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hello,<br>
<br>
I am newbie.<br>
It has been said "kernel memory is not pageable"<br>
What does it mean? There is no concept of kernel virtual address?<br>
<br>
Any simple explanation will help me to udnerstand.<br>
<br>
Thanks,<br>
Vijay<br>
<br>
_______________________________________________<br>
Kernelnewbies mailing list<br>
<a href="mailto:Kernelnewbies@kernelnewbies.org">Kernelnewbies@kernelnewbies.org</a><br>
<a href="http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies" target="_blank">http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies</a><br>
</blockquote></div><br>