操作系统如何加载程序
操作系统如何加载程序
1.用户编写完代码后,通过编译器将编译为数据段、代码段、堆栈段、bss段,由链接器链接为装入模块
2.用户通知操作系统要运行的程序
3.操作系统根据路径找到对应的程序,检测程序的头部,找到代码段和数据段的位置
4.文件系统根据这些段的位置找到对应的磁盘块
5.操作系统创建进程(创建运行环境),并将要执行的程序的各个段映射到这个进程的空间
6.通过进程调度执行到了该进程,将CPU的上下文切换为该进程的上下文,然后执行程序的第一条指令。
7.执行指令发现指令并不在内存,于是产生缺页异常,从磁盘拷贝然后继续执行。
8.执行到printf,跳转到库函数执行,通过软中断发起系统调用,操作系统根据系统调用号跳转到对应的中断处理程序运行。
9.操作系统分配设备,并执行显示驱动程序
10.窗口系统将像素写入到存储映像区
11.视频硬件将像素表示成一组模拟信号输出的显示器
12.显示器发射电子束
13.屏幕看到hello world