架构和操作系统是完全不同的东西。一个是针对硬件的,一个是软件的。
你提到了 架构和指令集的关系,确实本身硬件架构从一种层面说,就是指令集的实现(支持)。
操作系统作为底层基础软件,通过编译配置、设备模块驱动等等实现对底层架构的抽象封装,提供给上层调用,比如所有架构的cpu都支持加法操作,但不同的架构具体的指令可能是不同的,如果这些架构都被某种操作系统(比如linux)支持,则在这样的操作系统层面上再提供的加法计算处理(比如python下的或者命令行的)就可以有统一的指令完成。
现在有的操作系统可以在很多硬件上跑起来,比如linux支持很多架构的东西,这些架构(以及硬件)上的差异,通过不同的编译配置、模块加载实现编译封装,从而可以提供操作系统以上的基本统一的接口。确实,因为不同架构能力不同,可能各自实现的对应linux内核是需要配置裁剪的,但这种裁剪可能更多的是最底层支持能力上,一般运算能力相当的cpu,同样功能模块的内核可以都支持,只是产生的内核镜像不同(为了支持不同的架构),此外依据不同的架构后外网电路等等支持的驱动设备不同。
其实汇编和C语言对开发操作系统来说,仅仅是编辑语言不同,功能实现上没有本质区别,只有有对应的编译工具链,都能实现功能。
操作系统和架构之间有联系,但没有强耦合,理论上现在你见到的操作系统只要有支持的意愿,都可以编译输出支持不同的架构(当然相应架构运算能力要足够才有意义),之所以没有那么多操作系统支持那么多架构,仅仅是因为商业等方面的原因,而不是不能。比如现在windows系列也有arm支持(其实很早的win ce也算是一种支持),linux等等类Unix系统就更不说啦,连有些soc环境都可以跑一跑。