1. A non-transitory computer readable medium comprising software instructions, which when executed by a processor perform a method, the method comprising: receiving, by an I/O (input output) Subsystem, a request to use an I/O device from a process; determining, by the I/O Subsystem, a resource to service the request; generating, by the I/O Subsystem, a first I/O object corresponding to the resource, wherein the first I/O object is unbound; generating, by the I/O Subsystem, a proc object, wherein the proc object comprises a reference to the process requesting to use the I/O device, and wherein the proc object is a software construct used by the I/O Subsystem and a Non-Uniform Memory Access (NUMA) I/O Framework to maintain location information corresponding to the process; sending, by the I/O Subsystem, the first I/O object and the proc object to the NUMA I/O Framework, wherein the first I/O object comprises a first affinity between the first I/O object and the proc object and wherein the first affinity is a scalar value; determining, by the NUMA I/O Framework using the proc object, that the process is executing on a first NUMA node of a plurality of NUMA nodes; selecting, by the NUMA I/O Framework, the first NUMA node based on the determination that the process is executing on the first NUMA node; binding, by the NUMA I/O Framework based on the selecting, the first I/O object to the first NUMA node; and servicing the request by processing, on the first NUMA node, the resource corresponding to the first I/O object.