本文链接:https://blog.csdn.net/gatieme/article/details/50914250
本文参考了如下文章
mbr (主引导记录(Master Boot Record))
linux系统启动过程详解-开机加电后发生了什么 --linux内核剖析(零)
1> OS刚开始加电,此时没有操作系统,所以会有BIOS
2> BIOS会从寄存器的物理内存地址读取程序入口:物理内存地址,程序入口0xFFFF0
3> BIOS程序启动后,在内存中建立中断向量表与中断服务子程序
4> 根据中断的入口函数,加载磁盘的第一个扇区,bios通过入口服务子程序,加载Linux内核(内核的第一个步骤就是在磁盘第一个扇区加载linux启动信息,lilo/grub)
5> 启动配置(windows中为注册表及相关启动服务,linux里面为init)
6> 加载类库
第一个C程序
[root@localhost c]# vi hello.c
[root@localhost c]# gcc -o hello hello.c
[root@localhost c]# ls
hello hello.c
[root@localhost c]# ./hello
Hello world
[root@localhost c]# cat hello.c
#include <stdio.h>
int main()
{
printf("Hello world\n");
return;
}
编译成功后,就会出现一个可执行文件(绿色的hello这一个shell程序),./hello就可以执行
》 输入./时,shell进程唤醒(系统进程,系统进程0,1,2,shell被系统进程0唤醒),唤醒后,对命令进行解析
每次敲击键盘,就是一次中断,存储在终端设备文件中,tty0设备
》shell利用fork开启用户进程,针对hello程序加载,并读取到内存中
》printf打印时,会用到io操作,使用什么样的显示库?