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
