Generally, Operating Systems control and execute applications based on a best effort policy. As long as resources are sufficient, applications are normally executed but when resources become scarce, control mechanisms (graceful degradation) are necessary to maintain acceptable QoS. This thesis aims to manage the QoS of distributed applications. The first part of the thesis proposes a fully decentralized middleware to control the use of resources of distributed applications. This approach is based on a resource borrowing schema and an approximate scheduling in order to improve the overall QoS provided by the system. Using this borrowing schema, each node locally constructs a comprehensive view of resources availability in the system. The local knowledge of resources availability makes it possible for each node to make decisions and to schedule the execution of the applications. To finely control execution, the second part of the thesis adds a support for behavior adaptation of applications. The middleware interprets a general model of applications as an execution graph enriched with resources requirements. Each application must be designed according to this model to be manageable by the middleware (intrusive approach). A path in the graph is a possible execution of application with a certain utility. These paths provide degrees of freedom needed by the middleware to adapt resource consumption to the context. During the QoS management process, applications cooperate with the middleware at admission and execution phase. The middleware guides and controls the execution of applications actions (edges in the execution graph). To validate our approach, a prototype based on agents has been implemented using JADE. The results show the interest of our approach.