当前位置: 首页 > article >正文

程序是怎样跑起来的(2)

操作系统和应用的关系

操作系统确实为程序员提供了很多方便。不过,仅仅享受方便是不行 的,还要了解为什么自己能够这么方便。了解了这一点,就可以尽情 地享受方便了

系统调用和高级编程语言的移植性

操作系统的硬件控制功能,通常是通过一些小的函数集合体的形式来提供的

这些函数及吊桶函数的行为统称为系统调用

也就是应用堆操作系统的功能进行调用的意思

文件是操作系统对磁盘媒介空间的抽象化

Windows操作系统的特征

(1)32 位操作系统(也有 64 位版本) (2)通过 API 函数集来提供系统调用 (3)提供采用了图形用户界面的用户界面

(4)通过 WYSIWYGA(所见即所得) 实现打印输出 (5)提供多任务功能 (6)提供网络功能及数据库功能 (7)通过即插即用实现设备驱动的自动设定

通过汇编语言了解程序的实际构成

用汇编语言编写的源代码,和本地代码是一一对应的,因而,本地代码也可以反过来转换成汇编语言的

源代码。持有该功能的逆变换程序称为反汇编程序,逆变换这一处理本身称为反汇编

硬件控制方法

支撑硬件输入输出的IN指令和OUT指令

IN指令通过指定端口号的端口输入数据,并将其存储在CPU内部的存储器中

OUT指令是把CPU寄存器中存储的数据,输出到指定端口号的端口

I/O控制器中有用于临时保存输入输出数据的内存,这个内存就是端口

CPU内部的寄存器是用来进行数据运算处理的,而I/O寄存器主要用于临时存储数据的

一个I/O设备既可以控制一个外围设备,也可以控制多个

各端口之间通过端口号进行区别,端口号也称为I/O地址

IRQ (Interrupt Request)是中断请求

IRQ是用来暂停当前正在运行的程序,并跳转到其他程序运行的必要机制

该机制称为中断处理

实施中断请求的是连接外围设备的 I/O 控制器,负责实施中断处理 程序的是 CPU。为了进行区分,外围设备的中断请求会使用不同于 I/O 端口的其他编号,该编号称为中断编号

DMA可以实现短时间内传送大量数据

DMA(Direct Memory Access)

DMA是指不通过CPU的情况下,外围设备直接和主内存进行数据传送,节省了CPU作为中介的时间

文字及图片的显示机制

显示器中显示的信息一直存储在某内存中,该内存称为VRAM(Video RAM)

在程序中,只要王VRAM中写入数据,该数据就会显示在显示器上。

实现该功能的程序,是由操作系统或BIOS提供,并借助中断来处理

在现在的计算机中,显卡等专用硬件中一般都配置有与主内存相 独立的 VRAM 和  GPU(Graphics Processing Unit,图形处理器,也称 为图形芯片)。这是因为,对经常需要描绘图形的 Windows 来说,数百 兆的 VRAM 是必需的。而为了提升图形的描绘速度,有时还需要专用 的图形处理器(图 11-11(b))。但不管怎样,内存 VRAM 中存储的数据 就是显示器上显示的信息,这一机制是不变的

让计算机思考

3-15-16-26结束了

去看计算机是怎样跑起来的


http://www.kler.cn/a/429.html

相关文章:

  • 【AIGC-ChatGPT进阶副业提示词】星际占卜师:探索星象能量的艺术【限时免费阅读,一天之后自动进入进阶课程】
  • Visual Studio Code历史版本下载
  • 大数据-256 离线数仓 - Atlas 数据仓库元数据管理 正式安装 启动服务访问 Hive血缘关系导入
  • 写作词汇积累:见笑、尽显、稀疏、染指
  • uni-app 统一请求处理 请求拦截器 响应拦截器 请求封装
  • Flask中@app.route()的methods参数详解
  • JS中sort()方法返回值?
  • 高等数学——二重积分
  • 【JDK动态代理】及【CGLib动态代理】:Java的两种动态代理方式
  • 全网独家首发|极致版YOLOv7改进大提升(推荐)网络配置文件仅24层!更清晰更方便更快的改进YOLOv7网络模型
  • Linux中sudo,su与su -命令的区别
  • Qt之高仿QQ系统设置界面
  • springboot vue3 前端调用后端接口 传参问题
  • 每天学一点之Lambda表达式
  • 算法刷题总结 (四) 动态规划
  • 计算机组成原理(2.1)--系统总线
  • 关于ES6新特性的总结
  • Python基础—面向对象(超详版)
  • 理清gcc、g++、libc、glibc、libstdc++的关系
  • 乐吾乐2d可视化之智慧城市可视化(二)
  • UE实现建筑生长(材质遮罩方式)效果
  • java入门多线程一文通
  • async/await 用法
  • 接口文档包含哪些内容?怎么才能写好接口文档?十年测试老司机来告诉你
  • C/C++每日一练(20230314)
  • 为什么 Python 没有 main 函数?