0. Linux加电过程

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/f2157120/article/details/100797873

本文链接:https://blog.csdn.net/gatieme/article/details/50914250

    本文参考了如下文章

深入理解linux启动过程

mbr (主引导记录(Master Boot Record))

电脑从开机加电到操作系统main函数之前执行的过程

详解linux系统的启动过程及系统初始化

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操作,使用什么样的显示库?

猜你喜欢

转载自blog.csdn.net/f2157120/article/details/100797873