Quite honestly, WRT Windows, I doubt that the information in question is even available, both because it involves proprietary details, and because it is going to vary depending on the system's hardware configuration and runtime operations.
Perhaps someone here knows more about it than I do, but I am guessing that the best answers you can get are "it depends", "it's confidential", and/or "it's somewhere in this general vicinity".
Excluding the proprietary aspects for the FOSS systems, the same will be true of other OSes as well. Even MS-DOS didn't necessarily have everything in fixed locations - after all, part of the reason for the IVT in real mode is to allow the interrupt routines to be located in different addresses for different versions of the system monitor/kernel (Intel had no expectations as to what OS would be running on an 8086 - if any, given that it was meant to be a souped-up microcontroller).
For more elaborate systems, ones with virtual memory management and paging - including 32-bit Windows - the physical locations are hardly relevant, and the system is likely to relocate some of them over the course of a given uptime.
To the best of my knowledge, all of the Unices - Linux, FreeBSD, NetBSD, etc. - are
Higher Half Kernels, meaning that the kernel is mapped into the upper half of the
virtual address space of every user process. However, it could be mapped to
almost anywhere in the physical address space, in principle anyway. Quite frankly, once you have the virtual mapping enabled, the physical locations are for the most part of interest only to the kernel memory pager itself.
In other words, even if we could answer the question, it probably wouldn't gain you anything to know the answer.