Hi Rick..
I hope my reply still can catch up :)
Hi,
Why is kernel restricted to use virtual addresses of only 1 GB?
By design actually. For example, you can also use VM split like 3GB for
kernel space and 1GB for user space, but that would limit the available
address space for application, right?
Or
what is the need to split up the virtual address space into user
addresses and kernel addresses?
Recall that certain machine instructions can only be executed when
you're in kernel mode. Also, interrupt handlers, DMA setup and so on can
only be done in kernel mode. Thus we need kernel mode.. in other word
kernel address space, a place to put this kernel mode code.
But, if all codes are put in kernel mode, that would be bad. Memory
corruption happens without notice, user space application can freely
tangle with interrupt table descriptor and so on. In short, you need a
"less privileged" zone... and we call it user space. There, we put our
day-to-day application code.
Mind you, there is a kernel patch named Kernel Mode Linux that enables
you to run certain binaries located in "trusted" path to run as kernel
mode. The author create it to speed up certain kind of app, usually
applications that so frequently call syscalls.
regards,
Mulyadi
--
To unsubscribe from this list: send an email with
"unsubscribe kernelnewbies" to ecartis@xxxxxxxxxxxx
Please read the FAQ at http://kernelnewbies.org/FAQ