I do not agree with your definition of a operating system. I rather prefer the definition as written at http://www.jfsowa.com/computer/memo125.htm :
"The primary architecture of an operating system comprises the following seven areas:
Resource allocation
Process creation, control and communication
Symbol resolution and linkage
Data descriptor schema
Data management
Program run-time environment
Communication with external systems, devices, and emulators."
" By contrast, the secondary architecture is an open-ended list that evolves throughout the lifetime of the system. Whereas the primary architecture is one and cannot be subdivided, the secondary architecture can come in an endless variety of sizes and capabilities. Some examples of the secondary facilities include:
Editors
Command interpreters
HLL [High-Level Language] compilers and interpreters
Query facilities
Formatting/presentation facilities
Application development facilities
Information/HELP facilities
Program analyzers
Data validity checkers
Migration aids
Various design aids
Etc., etc., etc."