python笔记:#006#程序执行原理

程序执行原理(科普)

目标

  • 计算机中的 三大件
  • 程序执行的原理
  • 程序的作用

01. 计算机中的三大件

计算机中包含有较多的硬件,但是一个程序要运行,有 三个 核心的硬件,分别是:

  1. CPU
    • 中央处理器,是一块超大规模的集成电路
    • 负责 处理数据计算
  2. 内存
    • 临时 存储数据(断电之后,数据会消失)
    • 速度快
    • 空间小(单位价格高)
  3. 硬盘
    • 永久 存储数据
    • 速度慢
    • 空间大(单位价格低)

CPU

内存

硬盘

思考题

  1. 计算机中哪一个硬件设备负责执行程序?
    • CPU
  2. 内存 的速度快还是 硬盘 的速度快?
    • 内存
  3. 我们的程序是安装在内存中的,还是安装在硬盘中的?
    • 硬盘
  4. 我买了一个内存条,有 500G 的空间!!!,这句话对吗?
    • 不对,内存条通常只有 4G / 8G / 16G / 32G
  5. 计算机关机之后,内存中的数据都会消失,这句话对吗?
    • 正确

02. 程序执行的原理

  1. 程序 运行之前,程序是 保存在硬盘 中的
  2. 当要运行一个程序时
    • 操作系统会首先让 CPU 把程序复制到 内存
    • CPU 执行 内存 中的 程序代码

程序要执行,首先要被加载到内存

2.1 Python 程序执行原理

  1. 操作系统会首先让 CPUPython 解释器 的程序复制到 内存
  2. Python 解释器 根据语法规则,从上向下CPU 翻译 Python 程序中的代码
  3. CPU 负责执行翻译完成的代码

Python 的解释器有多大?

  • 执行以下终端命令可以查看 Python 解释器的大小
# 1. 确认解释器所在位置
$ which python

# 2. 查看 python 文件大小(只是一个软链接)
$ ls -lh /usr/bin/python

# 3. 查看具体文件大小
$ ls -lh /usr/bin/python2.7

提示:建立 软链接 的目的,是为了方便使用者不用记住使用的解释器是 哪一个具体版本

03. 程序的作用

程序就是 用来处理数据 的!

  • 新闻软件 提供的 新闻内容、评论…… 是数据
  • 电商软件 提供的 商品信息、配送信息…… 是数据
  • 运动类软件 提供的 运动数据…… 是数据
  • 地图类软件 提供的 地图信息、定位信息、车辆信息…… 是数据
  • 即时通讯软件 提供的 聊天信息、好友信息…… 是数据
  • ……

3.1 思考 QQ 程序的启动过程

  1. QQ 在运行之前,是保存在 硬盘 中的
  2. 运行之后,QQ 程序就会被加载到 内存 中了

3.2 思考 QQ 程序的 登录 过程

  1. 读取用户输入的 QQ 号码
  2. 读取用户输入的 QQ 密码
  3. QQ 号码QQ 密码 发送给腾讯的服务器,等待服务器确认用户信息

思考 1

在 QQ 这个程序将 QQ 号码QQ 密码 发送给服务器之前,是否需要先存储一下 QQ 号码 和 密码?

答案

肯定需要!—— 否则 QQ 这个程序就不知道把什么内容发送给服务器了!

思考 2

QQ 这个程序把 QQ 号码QQ 密码 保存在哪里?

答案

保存在 内存 中,因为 QQ 程序自己就在内存中

思考 3

QQ 这个程序是怎么保存用户的 QQ 号码QQ 密码 的?

答案

  1. 在内存中为 QQ 号码QQ 密码 各自分配一块空间
    • 在 QQ 程序结束之前,这两块空间是由 QQ 程序负责管理的,其他任何程序都不允许使用
    • 在 QQ 自己使用完成之前,这两块空间始终都只负责保存 QQ 号码QQ 密码
  2. 使用一个 别名 标记 QQ 号码QQ 密码 在内存中的位置

  • 在程序内部,为 QQ 号码QQ 密码 在内存中分配的空间就叫做 变量
  • 程序就是用来处理数据的,而变量就是用来存储数据的

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏互联网技术栈

Zookeeper 使用场景

771
来自专栏编程坑太多

『高级篇』docker之微服务间如何通讯(六)

在 Web 应用中处理来自客户端的请求时,通常只考虑 GET 和 POST 这两种 HTTP 请求方法。实际上,HTTP 还有 HEAD、PUT、DELETE ...

2813
来自专栏猿学

猿学-使用Pabot并行运行RF案例

在做接口自动化时随着案例增多,特别是流程类案例增多,特别是asp.net的webform类型的项目,再加上数据库校验也比较耗时,导致RF执行案例时间越来越长,就...

750
来自专栏Android 开发者

Android 开发者 | 应用兼容性注意事项

2483
来自专栏转载gongluck的CSDN博客

python笔记:#006#程序执行原理

程序执行原理(科普) 目标 计算机中的 三大件 程序执行的原理 程序的作用 01. 计算机中的三大件 计算机中包含有较多的硬件,但是一个程序要运行,有 三个 核...

40810
来自专栏程序员的SOD蜜

唯一不变的就是一直在变”--“数据”的华丽“变身术”

 系列文章索引: [WCF邮件通信系统应用 之 数据同步程序 之 设计内幕 之 一] 同步一个数据库要发多少个数据包? [WCF邮件通信系统应用 之 数据同步...

2146
来自专栏磨磨谈

如何测量Ceph OSD内存占用

这个工具我第一次看到是在填坑群里面看到,是由研发-北京-蓝星同学分享的,看到比较有趣,就写一篇相关的记录下用法

1161
来自专栏子勰随笔

SDK设计心得之架构和资源

4284
来自专栏WeTest质量开放平台团队的专栏

http性能测试点滴

原文链接:https://wetest.qq.com/lab/view/410.html

1524
来自专栏星流全栈

dva - React + Redux, but like elm

1284

扫码关注云+社区