美文网首页
看操作系统对程序的执行过程有哪些支持

看操作系统对程序的执行过程有哪些支持

作者: 那只大象 | 来源:发表于2015-04-27 16:14 被阅读572次

通过一个C程序,看操作系统做了什么:

一个C程序:helloworld

这个程序的功能是调用puts函数,在标准输出设备(显示器)上显示字符串hello world

1. (用户)要启动程序执行,用户告诉操作系统执行hello world程序(如何告知?

    -- 命令行键入相应的命令

    -- 通过鼠标双击hello world程序的图标

2. (操作系统)操作系统接到用户的请求之后,就会根据用户提供的文件名,到磁盘上找到hello world程序的相关信息,检查其类型是否是可执行文件;并通过程序首部信息, 确定代码和数据在可执行文件中的位置并计算出对应的磁盘块地址(文件格式?

    -- Windows:PE

    -- Linux:ELF

3. (操作系统)为了执行这个hello world程序,操作系统创建一个新的进程,并将hello world可执行文件格式映射到该进程结构,表示由该进程执行hello world程序

4. (操作系统)操作系统为hello world程序设置CPU上下文环境,并跳到程序开始处,准备执行这个程序,下一个指令周期,就是执行hello world程序

5. (CPU)假设调度程序正好选中hello world程序,操作系统把控制权交给了调度程序,执行hello world程序的第一条指令,发生缺页异常。程序在执行的时候,先要把程序的代码和数据读入内存,CPU才能执行,但是hello world的代码和数据还没有读入内存,所以这个时候硬件机制就会捕获缺页异常,并且把控制权交给操作系统

6. (操作系统)操作系统管理了计算机系统中的内存,比如采用页式存储方案的话,内存就有很多的物理页面,操作系统的内存管理模块就会分配一页空闲的物理内存,并且根据前面计算出的磁盘块地址把hello world程序的代码从磁盘读入内存,然后继续执行hello world程序,有的时候程序很大,一页内存还不够,因此在执行过程中会多次地产生缺页异常,然后从磁盘读入程序到内存

7. (CPU)hello world程序执行puts函数(系统调用,由操作系统完成),在显示器(标准输出设备)上写(显示)一字符串

8. (操作系统)找到要将字符串送往的显示设备,通常设备是由一个进程控制的,所以,操作系统将要写的字符串送给该进程

9. (操作系统)控制设备的进程告诉设备的窗口系统它要显示字符串,窗口系统确定这是一个合法的操作,然后将字符串转换成像素,将像素写入设备的存储映像区

10. 视频硬件将像素转换成显示器可接收的一组控制/数据信号

11. 显示器解释信号,激发液晶屏

12. 在屏幕上看到了“hello world”

从上述步骤中得到什么?

从上述步骤中得到什么?

在CPU上执行一个用户程序,这个用户程序会不时地去请求操作系统的服务,因此在CPU上,时而运行的是用户程序,时而运行的是操作系统的程序

hello world程序在执行的时候需要操作系统来创建进程,因此转到操作系统创建进程,进程创建完了以后从操作系统返回,接着执行hello world程序

出现了缺页异常以后,控制权又转回了操作系统,操作系统分配物理内存给用户程序,然后又转向用户程序接着执行

然后hello world程序要执行puts函数,又转向了操作系统

这是从用户程序在执行过程不断请求操作系统服务这个角度来看程序执行的过程

换个角度看用户程序的执行

换个角度看用户程序的执行

操作系统在执行过程中,通过调度选中一个程序然后执行

程序执行过程中会不断地陷入操作系统,由操作系统完成一些服务

然后再通过调度再选中程序再执行

Summary

在一个程序的执行过程中,操作系统负责了这个程序的启动过程,负责了这个程序的执行过程。同时,在执行过程中,不断地为用户程序执行提供各种各样的支持


(完)



相关文章

  • 看操作系统对程序的执行过程有哪些支持

    通过一个C程序,看操作系统做了什么: 这个程序的功能是调用puts函数,在标准输出设备(显示器)上显示字符串hel...

  • Anroid内核——启动篇

    Linux启动过程 开机并执行bootloader程序(引导程序); 操作系统内核初始化(执行内核程序,初始化各种...

  • @程序CPU执行时间

    @不明白 程序执行时间 包含哪些,程序执行过程是什么样子的,时间 = 真实时间,cpu执行时间 = 用户代码执行时...

  • 《JAVA并发编程的艺术》要点(四)Java并发编程基础

    线程是操作系统调度的最小单元,多个线程同时执行可以显著提升程序性能 JAVA从诞生开始就选择了内置对多线程的支持 ...

  • PHP FPM源代码反刍品味之六:IO事件机制的封装.

    服务器程序绕不过对操作系统IO事件机制(多路复用)的使用,不同的操作系统,支持不同的IO事件机制,linux 支持...

  • 编程学习(一) 基本数据类型

    程序的执行过程:编译器将我们的程序编程成可执行文件,然后操作系统将我们的可执行文件全部装载到内存中,接着CPU从入...

  • 07Chapter 流程控制2019-11-10

    流程控制 程序执行过程中,各条语句的执行顺序对程序的结果是有直接影响的. 即程序的流程对运行结果有直接影响. 流程...

  • 进程和线程

    进程 进程就是一个程序在一个数据集上的一次动态执行过程。 fork 程序执行到os.fork()时,操作系统会创建...

  • 操作系统进程与线程小结

    概念1.进程与线程 每个app或者软件启动后都会执行加载程序并执行,一个app执行的过程就是一个进程,操作系统会为...

  • 美团C++开发面试2

    操作系统 1.进程线程区别 以及进程线程间通信 进程线程区别: 进程是程序的⼀次执行过程,是⼀个动态概念,是程序在...

网友评论

      本文标题:看操作系统对程序的执行过程有哪些支持

      本文链接:https://www.haomeiwen.com/subject/getvfttx.html