电脑从开机到进入桌面的详细过程,用软件怎么控制硬件的过程?

电脑从开机到进入桌面的详细过程,用软件如何控制硬件的过程??
大家好,我是一名大三的学生,在这个行业也算是刚入门不久。学了编程,学了硬件知识,数据结构,但没有一个老师告诉过我,当我按下电脑电源按钮以后,从开启到进入桌面的过程中都发生了什么,系统是怎么样一步步引导自己的?还有一个问题,是我一个学机电朋友问我的,他常接触自动化设备。他说代码是人的思想,硬件是现实中的客观存在,编程竟然能把人类的思想加到没有意识的物体上,他感觉很神奇。当是我大概给他解释过一些从代码到编译,再到执行的过程,但我硬件不怎么样,所以也不明白如何用软件的东西控制硬件实现相关任务的。现在想问问各位大哥大姐们,请给我一个详细的解释。谢谢

------解决方案--------------------
这个问题好复杂呀。各种不同的架构下启动和加载的过程都不一样。简单以PC为例说吧。可能有模糊的和不完善的,其他兄弟再更正。
1.上电后BIOS会做一些硬件的初始化,然后从硬盘或软盘的引导扇区中把引导内容加载进内存,并跳转到内存起始地址开始执行引导扇区功能,这引导扇区的内容的主要功能是把loader加载进内存。
2.loader进入内存之后通常会把系统从实模式引导入保护模式,然后把内核代码从磁盘中加载进内存,并跳转到内核的起始地址开始执行内核代码。当然有的loader会做更多的事情,例如分页等。
3.内核进入内存之后,通常会按照自己的方式重新初始化一下硬件,安装驱动程序,设置其他系统功能等。
4.内核完成初始化之后加载用户程序等用户特有功能。