Appendix A. Kernel Virtual Address Maps


In this appendix, we illustrate the allocation- and location-specific information for the segments that constitute the Solaris 10 kernel address space.

The kernel address space is represented by the address space pointed to by the system object, kas. The segment drivers manage the manipulation of the segments within the kernel address space. Figure A.1 illustrates the architecture.

Figure A.1. Kernel Address Space and Segments


You can look at the kernel address space with the as seg walker and D command, using the kernel address space pointer. The seg walker will show the kernel address space segments and the ::seg D Command will show detail for each of the segments.

sol9 # mdb -k > kas ::walk seg |::seg              SEG             BASE             SIZE              DATA OPS          1841258          1000000           8f2000                 0 segkmem_ops          1835878          18f2000           40e000                 0 segkmem_ops          18358c8         70000000         10000000                 0 segkmem_ops          1843410         edd00000          2300000                 0 segkmem_ops          18355d0      2a100000000         1ec20000       300000c8090 segkp_ops          18357e8      2a750000000          1cbc000       30000451f40 segmap_ops          1835618      30000000000      1fff8000000                 0 segkmem_ops          18455f8      50000000000      20000000000                 0 segkmem_ops          18389f0      70000000000           3da000                 0 segkmem_ops          1838a38 fffffa0000000000      40000000000       30000464760 segkpm_ops 


For more detail, you can then use the ::print D command to print a list of the kernel memory segments structures.

> kas ::walk seg |::print "struct seg" {     s_base = scb     s_size = 0x8f2000     s_szc = 0     s_flags = 0     s_as = kas     s_tree = {         avl_child = [ 0, 0 ]         avl_pcb = 0x1835899     }     s_ops = segkmem_ops     s_data = 0 } {     s_base = 0x18f2000     s_size = 0x40e000     s_szc = 0     s_flags = 0     s_as = kas     s_tree = {         avl_child = [ ktextseg+0x20, kvseg32+0x20 ]         avl_pcb = 0x1843431     }     s_ops = segkmem_ops     s_data = 0 } ... 


The next figures illustrate Solaris 10 address space, as follows:

  • Figure A.2 Solaris 10 sun4u 64-Bit Kernel Address Space

    Figure A.2. Solaris 10 sun4u 64-Bit Kernel Address Space

  • Figure A.3 Solaris 10 amd64 64-Bit Kernel Address Space

    Figure A.3. Solaris 10 amd64 64-Bit Kernel Address Space

  • Figure A.4 Solaris 10 x86 32-Bit Kernel Address Space

    Figure A.4. Solaris 10 x86 32-Bit Kernel Address Space




SolarisT Internals. Solaris 10 and OpenSolaris Kernel Architecture
Solaris Internals: Solaris 10 and OpenSolaris Kernel Architecture (2nd Edition)
ISBN: 0131482092
EAN: 2147483647
Year: 2004
Pages: 244

flylib.com © 2008-2017.
If you may any questions please contact us: flylib@qtcs.net