The disclosure talks about method to dynamically extend the process address space to more than 4GB in case of 32 bit process. The current address space mapping is per process and shared by all the threads in the process whether they need or they don't need. The proposed solution makes the address space to per kernel thread and provides the ability to maintain per kernel thread address space mapping. This means a kernel thread can detach from the default process address space mapping and can have it's own address space mapping. Thus if a process has two kernel threads, both of them can have their own address space mapping and same logical address can map to different physical address.
Method and System for dynamic extensible process address space (process address space virtualization)
( ESID) Effective Segment Identifier ( VSID) Virtual Segment Identifier
In case of 32 bit process there are 16 segments (each of 256 MB). These 16 segments are shared by all the kernel threads in the process ( and so all the pthreads in the process) as the ESID to VSID mapping is per process.
Say a process has 10 user threads ( say pthreads P1-P10) and they are getting scheduled on 3 Kernel threads (T1- T3). Thus process P1 has 3 kernel threads and 10
pthreads. In several
applications we find that a thread MMAPs the region. Say pthread P1 mmaps a file and get the ESID 4. Say this file is only being used by P1 ( and or say P4). Because the address mapping is per process, ESID 4 is reserved and now visible to all the user threads ( irrespective they need or they don't need)
Thus the address space mapping is per process and shared by all the threads whether they need or they don't need. The address space mapping can be per kernel thread for some segments. The limitation would be that the user threads need to be bound to particular kernel thread.
Say P1-P4 is running on T1
Say P5-P6 is running on T2
Say P7-P10 is running on T3
By default all the kernel threads share the same process address space. Say P5 and P6 wants to have a shared memory area which is not going to be used by any other pthreads. Thus they can do a shmat with Private Segment Copy. If this is mapped to SEG3, the SEG3 mapping will be only available to T2 and wi...