{'fraction_non_alphanumeric': 0.018536585365853658, 'fraction_numerical': 0.0, 'mean_word_length': 5.535031847133758, 'pattern_counts': {'":': 0, '<': 0, '<?xml version=': 0, '>': 0, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
Client-Server Computing on the SHRIMP Multicomputer

The client-server is the dominant programming model in distributed computing and has been used extensively as a structuring method for large software systems. Remote procedure call (RPC) and stream sockets form the basis of the communication system for a wide variety of distributed applications. Unfortunately advances in processor and network technology do not translate directly in performance improvements in the client-server model, mainly because of the tremendous software overhead. However, the emergence of new network interface technology is enabling new approaches to the development of communications software. This paper presents two implementations of RPC and one of stream sockets for the SHRIMP multicomputer. SHRIMP supports protected, user-level data transfer, allows user-level code to perform its own bu er management, and separates data transfers from control transfers so that data transfers can be done without interrupting the receiving node's CPU.