← Back to projects
othercomplete

Multi-Process Web Browser

A systems programming project implementing a web browser with process isolation, demonstrating Unix process management and inter-process communication.

Multi-Process Web Browser

A low-level systems programming project implementing a web browser with multi-process architecture, similar to how modern browsers like Chrome isolate tabs for security and stability. Built for CSCI 4061 (Introduction to Operating Systems).

Architecture

The browser uses a multi-process model where:

  • A controller process manages the main window and tab creation
  • Each tab runs in its own child process, isolated from others
  • Processes communicate through Unix IPC mechanisms

Features

  • Tab Isolation: Each tab runs in a separate process
  • URL Blacklisting: Configurable list of blocked websites
  • URL Validation: Format checking before navigation
  • Process Lifecycle Management: Proper creation and cleanup of child processes

Technical Implementation

Process Management

pid_t tabProcesses[MAX_TAB];  // Track all tab processes
fork()                         // Create new tab process
waitpid()                      // Clean up terminated tabs

Key Concepts Demonstrated

  • fork/exec model: Creating and managing child processes
  • Process isolation: Tabs crash independently without affecting others
  • Signal handling: Proper cleanup on termination
  • GTK integration: GUI programming with process separation

URL Blacklist Implementation

The browser implements a configurable blacklist that:

  • Normalizes URLs (strips http://, https://, www.)
  • Compares against a loaded blacklist file
  • Blocks navigation to matched domains

Team Collaboration

Developed as a 3-person team project, demonstrating:

  • Collaborative systems programming
  • Code review and integration
  • Shared debugging of low-level issues

Learning Outcomes

This project provided hands-on experience with:

  • Unix process creation and management
  • Inter-process communication patterns
  • Systems-level debugging techniques
  • Understanding how modern browsers achieve tab isolation