  Providing resources to different users or applications is fundamental to
cloud computing. This is a challenging problem as a cloud service provider may
have insufficient resources to satisfy all user requests. Furthermore,
allocating available resources optimally to different applications is also
challenging. Resource sharing among different cloud service providers can
improve resource availability and resource utilization as certain cloud service
providers may have free resources available that can be ``rented'' by other
service providers. However, different cloud service providers can have
different objectives or \emph{utilities}. Therefore, there is a need for a
framework that can share and allocate resources in an efficient and effective
way, while taking into account the objectives of various service providers that
results in a \emph{multi-objective optimization} problem. In this paper, we
present a \emph{Cooperative Game Theory} (CGT) based framework for resource
sharing and allocation among different service providers with varying
objectives that form a coalition. We show that the resource sharing problem can
be modeled as an $N-$player \emph{canonical} cooperative game with
\emph{non-transferable utility} (NTU) and prove that the game is convex for
monotonic non-decreasing utilities. We propose an $\mathcal{O}({N})$ algorithm
that provides an allocation from the \emph{core}, hence guaranteeing
\emph{Pareto optimality}. We evaluate the performance of our proposed resource
sharing framework in a number of simulation settings and show that our proposed
framework improves user satisfaction and utility of service providers.
