【操作系统】操作系统中“hello world!”的输出

关于hello world的输出:
  • 如下图所示为“hello world!”的输出过程,其中包含有很多种硬件与软件的支持
    • 软件:
      1. 用汇编语言写成的程序
      2. 主存储器(硬盘)中存储的数据和寄存器中暂存的数据
      3. 寄存器的寄存数据文档
    • 硬件:
      1. 主存储器
      2. I/O端
      3. CPU
      4. 控制总线,数据传输总线
      5. 图形控制器及外设
    • 具体的实现过程:
      1. 通过汇编语言直接将数据存储在主存储器上
      2. 发送指令到CPU,CPU先将从主存储器获取的数据暂存在寄存器中,寄存器通过译码器将数据转为二进制
      3. 转换好的二进制通过总线将数据传到图形控制器
      4. 图形控制器对其二进制进行处理并将其写入某一位显存地址
      5. 通过电脑屏幕或外设呈现出第一个字符H
      6. 数据反馈回CPU,发现指令未执行完毕,则继续重复执行上述操作,直至指令执行完毕

hello world 图解

操作系统做了什么?
  1. 找到helloworld 程序的相关信息, 检查其 类型是否是可执行文件;并通过程序首部信息,确定代码 和 数据在可执行文件中的位置并计算出对应的磁盘块 地址
  2. 创建 一个新 的进程,并将helloworld可执行文件映射到该进程结构,表示由该进程执行helloworld 程序
  3. 操作系统:为helloworld 程序设置CPU 上下文环境,并跳到程序 开始 处执行helloworld 程序 的 第一 条 指令,由于此时代码数据还没有调入内存,发生 缺页异常
  4. 分配 一 页物理内存 ,并将代码从磁盘 读入内存,然后继续执行helloworld 程序helloworld 程序执行puts 函数,在显示器上写 一字符串
  5. 找到要将字符串送往的显示设备
  6. 控制设备的 进程告诉设备的窗口系统它要显示 字符串,窗口系统确定这是一个合法的操作,然后将字符串转换成 像素, 将像素写入设备的存储 映像区
  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
操作系统在执行helloworld程序时,首先会接收到用户的请求。用户可以通过命令行或鼠标双击helloworld程序来告知操作系统要执行该程序。操作系统会根据文件名在磁盘上找到该程序的相关信息,并检查该文件是否为可执行文件。 一旦确认该文件为可执行文件,操作系统会根据程序首部信息确定代码和数据在可执行文件的位置,并计算出对应的磁盘块地址。为了执行这个程序,操作系统会创建一个新的进程,并将helloworld可执行文件的格式映射到该进程,表示由该进程来执行这个helloworld程序。 接下来,操作系统会将控制权交给调度程序。假设调度程序选helloworld程序,操作系统会为helloworld程序设置CPU上下文环境,并跳到程序的开始处准备执行程序。 当执行helloworld程序的第一条指令时,可能会发生缺页异常。这是因为程序在执行之前需要将代码和数据读入内存,而helloworld的代码和数据还未被写入内存,所以会触发硬件机制的缺页异常,并将控制权交回给操作系统操作系统的内存管理模块会分配一页空闲的物理内存,并根据之前计算出的磁盘块地址,将helloworld程序的代码从磁盘读入内存。然后,操作系统会继续执行helloworld程序。 接下来,helloworld程序执行puts函数,该函数是一个系统调用,用于在显示器上显示字符串。由于puts函数是一个系统调用,控制权又回到了操作系统操作系统会找到要将字符串送往的显示设备,通常该设备由一个进程控制。操作系统会将要写的字符串送给该进程处理。控制设备的进程会告诉窗口系统要显示字符串,并将字符串转换为像素,然后将像素写入设备的存储映像区。视频硬件将像素转换成显示器可以接收的一组控制数据信号,最后显示器激发液晶屏,我们就可以在屏幕上看到字符串。 综上所述,操作系统在执行helloworld程序时,根据用户的请求找到程序相关信息,创建新进程并将程序映射到该进程,为程序设置CPU上下文环境,处理缺页异常,并将字符串显示在屏幕上。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值