1. A multi-core processing system comprising: a first input/output interface ( 312 ) configured to transmit data over a first network ( 313 ) based on a first network protocol; a second input/output interface ( 314 ) configured to transmit data over a second network ( 315 ) based on a second network protocol; a plurality of processing cores; one or more hardware accelerators ( 310 ) coupled to the first and second input/output interfaces; and one or more memory devices storing software enabling virtual processing resources of the plurality of processing cores and virtual memory to be assigned to support: a first compartment ( 303 ) implementing one or more first virtual machines; a second compartment ( 304 ) implementing one or more second virtual machines; and a programmable virtual switch ( 302 ) configured to provide an interface between the first and second virtual machines and the first and second input/output interfaces ( 312 , 314 ), wherein the programmable virtual switch ( 302 ) is further configured to dynamically allocate the one or more hardware accelerators for use by the first or second virtual machines.