{"id":{"repo_id":"purdue-thes","oai_identifier":"oai:docs.lib.purdue.edu:open_access_dissertations-1056"},"canonical_url":"https://search.dev.ndltd.org/etd/purdue-thes/oai:docs.lib.purdue.edu:open_access_dissertations-1056","repository":{"repo_id":"purdue-thes","name":"Purdue University","base_url":"https://docs.lib.purdue.edu/do/oai/"},"display":{"title":"Ribbons: A Partially Shared Memory Programming Model","abstract":"<p>The need for programs to execute subcomponents in isolation from each other or with lower privileges is prevalent among today's systems. While modern operating systems provide mechanisms for fine-grained isolation of OS resources, only course-grained mechanisms exist for efficient isolation of heap memory. This dissertation develops a new memory programming model known as ribbons to enable fine-grained isolation of heap memory. Ribbons is a shared memory programming model that allows for more implicit sharing of memory than multiprocessing yet is more restrictive than multithreading. The ribbons model hierarchically structures the heap into protection domains. Privileges between these protection domains are carefully controlled in order to \"sandbox\" computation as needed. To allow practical use of the model in new and existing programs, this dissertation defines a backwards-compatible extension of Java, termed RibbonJ. The progress and isolation properties of RibbonJ are analyzed within a simplified formal model. Additionally, ribbons is implemented within JikesRVM, leveraging existing hardware memory protection mechanisms to avoid the overhead of inline security checks and read or write barriers. Runtime efficiency is evaluated through microbenchmarks and the DaCapo benchmarks, exhibiting minor overhead. This dissertation also studies ribbons further by refactoring Apache Tomcat and Apache httpd. Apache Tomcat is refactored to use RibbonJ for application isolation, the resulting design and complexity are detailed, and performance is evaluated using the SPECweb2009 benchmark. Finally, Apache httpd is enhanced with a ribbonized multiprocessing module, and performance is analyzed via the Apache HTTP benchmarking tool, ab.</p>","abstract_html":"&lt;p&gt;The need for programs to execute subcomponents in isolation from each other or with lower privileges is prevalent among today&#x27;s systems. While modern operating systems provide mechanisms for fine-grained isolation of OS resources, only course-grained mechanisms exist for efficient isolation of heap memory. This dissertation develops a new memory programming model known as ribbons to enable fine-grained isolation of heap memory. Ribbons is a shared memory programming model that allows for more implicit sharing of memory than multiprocessing yet is more restrictive than multithreading. The ribbons model hierarchically structures the heap into protection domains. Privileges between these protection domains are carefully controlled in order to &quot;sandbox&quot; computation as needed. To allow practical use of the model in new and existing programs, this dissertation defines a backwards-compatible extension of Java, termed RibbonJ. The progress and isolation properties of RibbonJ are analyzed within a simplified formal model. Additionally, ribbons is implemented within JikesRVM, leveraging existing hardware memory protection mechanisms to avoid the overhead of inline security checks and read or write barriers. Runtime efficiency is evaluated through microbenchmarks and the DaCapo benchmarks, exhibiting minor overhead. This dissertation also studies ribbons further by refactoring Apache Tomcat and Apache httpd. Apache Tomcat is refactored to use RibbonJ for application isolation, the resulting design and complexity are detailed, and performance is evaluated using the SPECweb2009 benchmark. Finally, Apache httpd is enhanced with a ribbonized multiprocessing module, and performance is analyzed via the Apache HTTP benchmarking tool, ab.&lt;/p&gt;","abstract_has_math":false,"creators":["Hoffman, Kevin John"],"institution":null,"degree_name":"Doctor of Philosophy (PhD)","degree_level":"Dissertation","degree_discipline":"Computer Science","degree_department":null,"school":null,"contributors":["Patrick Eugster","Tony Hosking","Suresh Jagannathan","Dongyan Xu"],"advisors":[],"committee_chairs":[],"committee_members":[],"year":2013,"date_issued":"2013-10-01T07:00:00Z","date_published":"2013-10-01T07:00:00Z","updated_at":"2026-07-24T03:53:02Z","subjects":["heap isolation","multiprocessing","shared memory","Computer Sciences"],"languages":[],"rights":[],"rights_urls":[],"identifier_entries":[]},"links":{"outbound_url":"https://docs.lib.purdue.edu/open_access_dissertations/159","outbound_label":"Repository record","outbound_source":"dc:identifier"},"metadata_groups":[{"id":"people","label":"People","entries":[{"key":"dc:contributor","label":"Contributor","values":["Patrick Eugster","Tony Hosking","Suresh Jagannathan","Dongyan Xu"]},{"key":"dc:creator","label":"Author","values":["Hoffman, Kevin John"]}]},{"id":"academic_context","label":"Academic Context","entries":[{"key":"thesis:degree_discipline","label":"Discipline","values":["Computer Science"]},{"key":"thesis:degree_level","label":"Degree Level","values":["Dissertation"]},{"key":"thesis:degree_name","label":"Degree Name","values":["Doctor of Philosophy (PhD)"]}]},{"id":"subjects_keywords","label":"Subjects and Keywords","entries":[{"key":"dc:subject","label":"Dc Subject","values":["heap isolation","multiprocessing","shared memory","Computer Sciences"]}]},{"id":"identifiers","label":"Identifiers","entries":[{"key":"dc:identifier","label":"Identifier","values":["https://docs.lib.purdue.edu/open_access_dissertations/159"]}]},{"id":"additional","label":"Additional Metadata","entries":[{"key":"dc:description.abstract","label":"Abstract","values":["<p>The need for programs to execute subcomponents in isolation from each other or with lower privileges is prevalent among today's systems. While modern operating systems provide mechanisms for fine-grained isolation of OS resources, only course-grained mechanisms exist for efficient isolation of heap memory. This dissertation develops a new memory programming model known as ribbons to enable fine-grained isolation of heap memory. Ribbons is a shared memory programming model that allows for more implicit sharing of memory than multiprocessing yet is more restrictive than multithreading. The ribbons model hierarchically structures the heap into protection domains. Privileges between these protection domains are carefully controlled in order to \"sandbox\" computation as needed. To allow practical use of the model in new and existing programs, this dissertation defines a backwards-compatible extension of Java, termed RibbonJ. The progress and isolation properties of RibbonJ are analyzed within a simplified formal model. Additionally, ribbons is implemented within JikesRVM, leveraging existing hardware memory protection mechanisms to avoid the overhead of inline security checks and read or write barriers. Runtime efficiency is evaluated through microbenchmarks and the DaCapo benchmarks, exhibiting minor overhead. This dissertation also studies ribbons further by refactoring Apache Tomcat and Apache httpd. Apache Tomcat is refactored to use RibbonJ for application isolation, the resulting design and complexity are detailed, and performance is evaluated using the SPECweb2009 benchmark. Finally, Apache httpd is enhanced with a ribbonized multiprocessing module, and performance is analyzed via the Apache HTTP benchmarking tool, ab.</p>"]},{"key":"dc:title","label":"Title","values":["Ribbons: A Partially Shared Memory Programming Model"]}]}],"canonical_facts":{"dc:contributor":["Patrick Eugster","Tony Hosking","Suresh Jagannathan","Dongyan Xu"],"dc:creator":["Hoffman, Kevin John"],"dc:description.abstract":["<p>The need for programs to execute subcomponents in isolation from each other or with lower privileges is prevalent among today's systems. While modern operating systems provide mechanisms for fine-grained isolation of OS resources, only course-grained mechanisms exist for efficient isolation of heap memory. This dissertation develops a new memory programming model known as ribbons to enable fine-grained isolation of heap memory. Ribbons is a shared memory programming model that allows for more implicit sharing of memory than multiprocessing yet is more restrictive than multithreading. The ribbons model hierarchically structures the heap into protection domains. Privileges between these protection domains are carefully controlled in order to \"sandbox\" computation as needed. To allow practical use of the model in new and existing programs, this dissertation defines a backwards-compatible extension of Java, termed RibbonJ. The progress and isolation properties of RibbonJ are analyzed within a simplified formal model. Additionally, ribbons is implemented within JikesRVM, leveraging existing hardware memory protection mechanisms to avoid the overhead of inline security checks and read or write barriers. Runtime efficiency is evaluated through microbenchmarks and the DaCapo benchmarks, exhibiting minor overhead. This dissertation also studies ribbons further by refactoring Apache Tomcat and Apache httpd. Apache Tomcat is refactored to use RibbonJ for application isolation, the resulting design and complexity are detailed, and performance is evaluated using the SPECweb2009 benchmark. Finally, Apache httpd is enhanced with a ribbonized multiprocessing module, and performance is analyzed via the Apache HTTP benchmarking tool, ab.</p>"],"dc:identifier":["https://docs.lib.purdue.edu/open_access_dissertations/159"],"dc:subject":["heap isolation","multiprocessing","shared memory","Computer Sciences"],"dc:title":["Ribbons: A Partially Shared Memory Programming Model"],"thesis:degree_discipline":["Computer Science"],"thesis:degree_level":["Dissertation"],"thesis:degree_name":["Doctor of Philosophy (PhD)"]},"updated_at":"2026-07-24T03:53:02Z"}