Where to start?
From what I understand about coverage - anything less then 100% means a visitor loaded a page that COULD have shown an ad - but because of lack of content / unrelated content - NO advert was shown.
Yes that is correct. The reason for this can be many things, some related to content, niche, size of the ad-unit, time of day, etc...
Is there any way to track down which pages aren't showing ads?
Yes, maybe it depends. If you have your Adsense account linked to your Analytics account it is very simple. Go to "Behavior" -> "Publisher Pages" report, the second column should be coverage. So this gives you coverage at the page level.
If not you will need to use Adsense. To track coverage one needs to use the custom tab on the Performance Report. Click the tab and select a few relevant fields, I like Page Views, Impressions, RPM (both page and simple), and of course select coverage. With the tab configured you can track coverage across the site. Now to get to specifics depends on how your ad units are configured. If you use the same ad unit everywhere it will be more difficult or even impossible. You can then use advanced reports to try and parse out the unique characteristics of the ad units you use. Things such as custom channels, or creative sizes.
Or any advice on what you did to improve your coverage?
Yes. First, I don't recommend Mayank Parmar's advice, one it defeats the purpose, removing ad units simply ensure that no ads will ever be seen and depending on the underlying cause it may not have any impact on whether ads are shown in the remaining inventory.
Technical - Be sure that the ad-units are displaying in standard sizes (eg:300 x250 or 300 x 600). One needs to check across all screen sizes. If you are using responsive be sure that the ad-units do not compress down to some odd shape like 140 x 227 or whatever as there may be few ad creatives available to fill those units. If you are not using responsive ads, be sure that your not showing large ads on small screens such as 729 x 90 ad on 320 wide screen.
Content - I doubt that content will directly impact coverage. Ads can be contextual (according to page content) but they can also be interest based (based on users interest) so if one page happens to have limited content Adsense will likely serve an interest based ad. Now if your site as whole is thin on content, then that is a different issue altogether. Then you may be having trouble attracting any high quality advertisers. Also, overloading your page with ads as compared to content may deter advertisers and users.
Top level - more traffic, better traffic, will attract more advertiser that will increase the demand for the inventory. More demand ensure better coverage and higher pricing. However achieving this in not that easy, one will need to create great content and promoted it. As mentioned above a site with thin content doesn't help in attracting interest.
Be careful for what you wish for! If you have all the technical aspects sorted and you are still experiencing low coverage, that is then almost certainly due to a lack of demand. Increasing coverage may not be in your best interest as the ads that will fill those slots will likely be low quality and spammy, and that in turn will further deter legitimate advertisers. Instead use back-up ads. Either find a relevant affiliate program or promote your own content or other sites.
A small note about the diagnosing any technical issue. In Adsense you can go to Advanced Reports -> Creative Sizes and then see if there are any sizes that have low coverage and then correct the code to prevent those sizes from appearing.