This work proposes a general iterative method to synthesize non-blocking supervisors for a class of generalized Petri nets (GPN), called G-systems, modeling flexible manufacturing systems (FMS). When given an uncontrolled G-system prone to deadlocks, an iterative deadlock control method is presented by utilizing reachability graph (RG) analysis. Meanwhile, the concept of a global idle place (GIP) for an original uncontrolled net system is developed. At each monitor computation step, a GIP is introduced to simplify the RG computation of the uncontrolled net system. The GIP will be finally removed when the non-blockingness of the controlled G-system is achieved. The proposed method in general provides an optimal or a near-optimal solution of the non-blocking supervisor. Finally, an illustrative G-system is utilized to verify the applicability and the effectiveness of the proposed method.