A method of implementing protection key memory access control in a computing system having a processor not adapted to support protection key memory access control, the processor including a memory management unit, MMU, and executing an operating system that manages virtual memory, the processor adapted to execute user processes and tasks, the method comprising: assigning to each process, a contiguous range of virtual address memory and a storage key to each block in the contiguous address space; assigning a storage access key to each task in the process; initiating execution of a task using a specific access key by assigning a virtual address mapping to that task with its assigned access key; in response to a subsequent memory access by said task, if the subsequent memory access uses an access key different from access keys previously used by said task, determining whether the said task is authorized to use said different access key, and if the second task is authorized, assigning a subsequent virtual address mapping to the task and the different access key; in response to a command to allocate or to free storage by the task, setting control bytes including setting the storage key data and an indicator that the page associated with each control byte is valic; and upon execution of a computer instruction of said task using any access key, generating a virtual address in the address space associated with the task; determining whether the first address lies within the range of addresses associated with the first process; if the address lies within the range of addresses associated with the first process: generating by the MMU a segmentation fault; verifying by an exception handler that said access key value is zero or that said task is authorized to access the virtual address using the access key; upon said verifying an exception handler, changing the native protection settings associated with the page of data comprising said virtual address in the MMU to allow access to the virtual address; and subsequently retrying the instruction, and allowing by the MMU, the instruction of said task to access virtual addresses in said page of data. assigning to each process, a contiguous range of virtual address memory and a storage key to each block in the contiguous address space; assigning a storage access key to each task in the process; initiating execution of a task using a specific access key by assigning a virtual address mapping to that task with its assigned access key; in response to a subsequent memory access by said task, if the subsequent memory access uses an access key different from access keys previously used by said task, determining whether the said task is authorized to use said different access key, and if the second task is authorized, assigning a subsequent virtual address mapping to the task and the different access key; in response to a command to allocate or to free storage by the task, setting control bytes including setting the storage key data and an indicator that the page associated with each control byte is valic; and upon execution of a computer instruction of said task using any access key, generating a virtual address in the address space associated with the task; determining whether the first address lies within the range of addresses associated with the first process; if the address lies within the range of addresses associated with the first process: generating by the MMU a segmentation fault; verifying by an exception handler that said access key value is zero or that said task is authorized to access the virtual address using the access key; upon said verifying an exception handler, changing the native protection settings associated with the page of data comprising said virtual address in the MMU to allow access to the virtual address; and subsequently retrying the instruction, and allowing by the MMU, the instruction of said task to access virtual addresses in said page of data. generating by the MMU a segmentation fault; verifying by an exception handler that said access key value is zero or that said task is authorized to access the virtual address using the access key; upon said verifying an exception handler, changing the native protection settings associated with the page of data comprising said virtual address in the MMU to allow access to the virtual address; and subsequently retrying the instruction, and allowing by the MMU, the instruction of said task to access virtual addresses in said page of data.