Hello world是程序员入门必备良品,但你真理解hello world后面的过程吗,下面将从操作系统的角度阐述hello world?
#include <stdio.h> int main(int argc, char *argv[]) { puts("hello world"); return 0; }
- 用户告诉操作系统执行hello程序
- 操作系统找到该程序,检查其类型
- 检查程序首部,找出正文和数据的地址
- 文件系统找到第一个磁盘块
- 父进程需要创建一个新的子进程,执行hello程序
- 操作系统需要将执行文件映射到进程结构
- 操作系统设置CPU上下文环境,并跳到程序开始处
- 程序的第一条指令执行,失败,缺页中断发生
- 操作系统分配一页内存,并将代码从磁盘读入,继续执行
- 更多的缺页中断,读入更多的页面
- 程序执行系统调用,在文件描述符中写一字符串
- 操作系统检查字符串的位置是否正确
- 操作系统找到字符串被送往的设备
- 设备是一个伪终端,由一个进程控制
- 操作系统将字符串送给该进程
- 该进程告诉窗口系统它要显示字符串
- 窗口系统确定这是一个合法的操作,然后将字符串转换成像素
- 窗口系统将像素写入存储映像区
- 视频硬件将像素表示转换成一组模拟信号控制显示器(重画屏幕)
- 显示器发射电子束
- 你在屏幕上看到hello world