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:
|