its relative simple. If you are using a GIS (like ArcGIS, SAGA GIS or QGIS), there should be tools like filling sinks (gaps) (Fill) and also calculating the watershed. For ArcGIS the toolbox is called: "Hydrology" (within the Spatial Analyst Tools).
In SAGA GIS: You could use the tool: Close gaps. Also the Terrain Analysis - Hydrology could be from interest.
Also check if you use the right input-format before you start.
Are the gaps "no data" values or "just gaps"? If these values are "no data" values then you can try to reclassyfy your dataset and setting all "no data values" to a specific value. Then try the fill-tool again. Maybe it will solve your problem.
You can use the following script in Python or Arcgis to fill NoData values in DEM. This method uses a moving window that searches for NoData values and fills them with an average.
However, as you want to use the data in hydrological modeling, it is important to verify if the new data does not compromise the quality of the DEM for generating flows...
These are supposed to be Void free. The "voids" or gaps in this dataset are the ocean mask. Note that inland water are already filled with the water level elevation. By the way, nodata is set to -32768.
For hydrological modelling, water will flow into these "voids" at their river mouths.
you can start with interpolation methods like Kriging, use Aster for Re-sampling from other data sets, and Resampling at a lower resolution and re-sampling at the original resolution while preserving the original spatial variance!