windows filesystems are based in clusters which are groups of continuous sectors, clusters are contiguous, if a file needs storage space, the filesystem assign the very first available cluster.
ext2 and ext3 use i_nodes, basically the file system table is "distributed" over the disk, and one inode has pointers to the sectors in which the info resides, the implementation demands that nearer files be pointed by the same inode or group of inodes, and the filesystem also reserves a certain ammount of space in order for the file to "grow".
That's basically how it works, if you want a further reading i suggest you to get "Silverzchat's Operating Systems" or "Milenkovik's Operating Systems Concepts and Design".