前端后端这个分类方式,在不同的技术领域里,是不一样的。CPU的前后端,跟web开发的前后端不一样。编译器还有一个前后端的概念,跟前面这两个也都不一样。
如果只是单纯的要做一个前后分割的话,操作系统内核和应用态可以作为一个近似的类比,内核提供系统服务,应用层利用这些服务面向用户提供用户接口。
但操作系统很少有这样分类的,因为不同操作系统的内核架构不一样,宏内核(Linux)的框架下,大部分系统服务都在内核,微内核或者混合内核(Windows)的框架下,很多系统服务在用户态,这样前后端的界线就不那么明显了。
如果把范围放大,不同应用场景(比如,嵌入式)的操作系统跟桌面操作系统的设计思路差异很大,甚至有一些简易的操作系统,根本就没有用户态的概念,应用都是以内核线程方式工作。
主流的操作系统的设计架构,还远远没有达到相似或者统一的设计,而主流的编译器或者CPU,大的设计框架基本上是相似的,所以在操作系统领域,没有一条明显的界线去区分前后端。
把GUI或者字符界面,当作前端就好了。