My memory is really fuzzy on this. I recall that job control came along
with csh which I used until bash.
Close. That was the wide distribution of it. Kulp created it originally for his PDP-11 system in the late 1970s. I'm not sure how, but wnj saw it and imported the idea to UCB. Joy had stopped hacking on the 11 by then. So he added the kernel support for Job Control to 4.0 and hacked on his own shell to add the user interface. This would get widely distributed as in 4.1BSD and since job control was in csh, and not in sh (and job had made the root use csh ) BSD users learned to used job control from there; since 4.1BSD release that spread with wings.
At the time there were hardly any
graphics displays used as interactive devices. I'm talking Berkeley job
control here;
Right - which is Kulp job control to be fair.
I seem to remember that someone got wedged into System V
that was awful and unusable.
IIRC it was in SVR2 that a version of a job control system added some of the semantics of Kulp's scheme to the kernel, but not all as you point out and it was pretty disappointing if you had grown up on BSD systems. Later POSIX would pick up the Kulp/BSD Job Control definition and by SVR3/SVR4 AT&T fleshed out all all of the semantics.