Arduino W5100 ethernet shield

That is correct, but only done in setup(). Once that is done, they are handled by the low level read/write routines in each library. This is what I use:

void setup()
{
   Serial.begin(9600);

   // disable w5100 while setting up SD
   pinMode(10,OUTPUT);
   digitalWrite(10,HIGH);

   if(SD.begin(4) == 0) Serial.println("SD fail");
   else Serial.println("SD ok");
   // SD.begin returns with its SPI disabled so nothing needs to be done

   Ethernet.begin(mac,ip);
   // Ethernet.begin() returns with its SPI enabled, so disable it.
   digitalWrite(10,HIGH);

   // rest of your setup here
}

edit: I added error checking on the SD.begin() routine.