Distributed Resource Management in Large-Scale Systems Abstract -------- With the popularization of computer networks in the past decade, local area networks composed of dozens of powerful machines became a commonplace in academic, commercial, and governmental institutions. These networks are often connected to the Internet and offer a wide variety of services to its users. Nevertheless, despite the almost two decades of research in distributed processing and load balancing, these systems are almost always used in a simplistic and inefficient way. A few services (such as file systems and the web) are distributed according to a conventional client/server model where the servers are almost always fixed. Most applications (such as text editors, calendars, spreadsheets, web browsers) are almost always executed locally in the client s machine even if it is not the most appropriate location to execute it and if there are other more powerful machines that are idle. A consequence of this behavior is that the resources in the distributed system are often underutilized and the quality of service offered to the user is not satisfactory. The work presented in this paper revisits the concept of load balancing of user applications, presenting two new contributions. First, we address the problem with a novel architecture based on distributed objects and the CORBA standard. Second, we describe new protocols that are scalable to wide-area networks and can be used to integrate dozens or hundreds of heterogeneous local area networks, supporting the provision of quality of service. Thus, when logging into a machine connected to the network, the user gets access not only to the local machine but to the whole distributed system in all its power and diversity of resources. Resumo ------ Com a popularização das redes de computadores na última década, tornou-se lugar comum em instituições acadêmicas, comerciais e governamentais a existência de redes locais compostas por dezenas ou centenas de máquinas de mádio poder computacional. Tais redes são muitas vezes conectadas à Internet e oferecem vários tipos de serviços aos seus usuários. No entanto, apesar das quase duas décadas de pesquisa na área de processamento distribuído e balanceamento de carga, estas redes são quase sempre utilizadas de uma forma simplista e ineficiente. Alguns poucos serviços (como, por exemplo, sistemas de arquivos e a web) são distribuídos através de um modelo cliente/servidor onde os servidores são quase sempre fixos. A maior parte das aplicações (como editores de texto, calendários, planilhas, navegadores da web) são quase sempre executadas localmente na máquina do cliente mesmo que esta máquina não seja a mais apropriada para isso e mesmo que haja uma enorme quantidade de recursos disponíveis na rede local para executar estas aplicações de forma mais eficiente. A conseqüência disto é que os recursos do sistema distribuído ficam muitas vezes ociosos ao mesmo tempo em que os usuários não obtéem uma qualidade de serviço satisfatória. No trabalho aqui apresentado, buscamos resgatar o conceito do balanceamento da carga de aplicações dos usuários apresentando duas novas contribuições. Primeiramente, a arquitetura apresentada utiliza-se de um modelo de objetos distribuídos e baseia-se em um padrão da indústria (CORBA). Em segundo lugar, apresentamos novos protocolos que são escaláveis para redes de grande área, podendo ser usados para unir os recursos computacionais de dezenas ou centenas de redes locais heterogêneas oferecendo suporte para qualidade de serviço. Desta forma, ao utilizar uma máquina conectada à rede, o usuário tem ao seu dispor não só os recursos da máquina local mas também os recursos de todo o sistema distribuído em toda sua diversidade e poder computacional.