In this paper, an improved utility-based cross-layer dynamic subcarrier allocation (DSA) algorithm is proposed for single carrier frequency division multiple access (SC-FDMA) system, which adopts adaptive service rate control (ASRC) to eliminate the service rate waste and improve the spectral efficiency in heterogeneous network including non-real-time traffic and real-time traffic. In this algorithm, furthermore, a first in first out (FIFO) queuing model with finite space is established on the cross-layer scheduling framework. Simulation results indicate that by taking the service rate constraint as the necessary condition for optimality, the ASRC algorithm can effectively eliminate the service rate waste without compromising the scheduling performance. Moreover, the ASRC algorithm is able to further improve the quality of service (QoS) performance and transmission throughput by contributing an attractive performance trade-off between real-time and non-real-time applications.