A software system is called "monolithic" if it has a monolithic architecture, in which functionally distinguishable aspects (for example data input and output, data processing, error handling, and the user interface), are not architecturally separate components but are all interwoven.[citation needed]
Mainframe computers used a monolithic architecture with considerable success. Monolithic architectures implemented on DOS and earlier Windows based PCs often worked poorly with multiple users[citation needed]. This performance degradation is mainly due to poor mechanisms for record locking and file handling across local area networks.[citation needed]