Time-sharing refers to an operating system which allows the use of a single computer in real time by multiple users at the same time - as opposed to the ealier batch operating systems, in which users submitted 'jobs', which were run, after which the results (print-out, etc) were returned to them.
With the growth of the personal computer, most computers are no longer used in this way. However, the technical features needed to allow time-sharing (e.g. support for multiple processes running simultaneously) are such that current OS's are effectively time-sharing OS's. (In fact, some of the most common current ones, such as Unix and its descendants, such as Linux, started off as actual time-sharing OS's.)
Most time-sharing OS's relied upon hardware features to prevent one user (or process) from interfering with another. These features typically included the provision of two modes for the CPU, a 'user' mode in which users ran, and a 'kernel' or 'executive' mode, used by the OS - the former had restricted capabilities (e.g. it was usually not able to peform I/O operations). Memory protection (originally 'base and bounds registers) were also used, to prevent a rogue or erroneous used program from damaging other users, or the OS itself. In later machines, virtual memory included this functionality.
However, it was not essential to have hardware support for time-sharing; in computers which provided only an interpreted language (such as BASIC, in the RSTS-11 OS), the interpreter could keep the users from interfering with each other.