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 条评论
登录 后参与评论

相关文章

来自专栏Android 开发者

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

2883
来自专栏双十二技术哥

关于应用启动连续崩溃的解决思考

线上出现了大面积的崩溃或者各种不可用,那画面简直美的不敢想象。这也是任何商业项目做大之后都会花大力气在性能优化与高可用的原因,这个过程中也催生出了各种APM工具...

1254
来自专栏有趣的django

Flask构建微电影(一) 第一章、项目介绍第二章、环境搭建

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

http性能测试点滴

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

1944
来自专栏IT米粉

Redis常见的应用场景解析

缓存是Redis最常见的应用场景,之所有这么使用,主要是因为Redis读写性能优异。而且逐渐有取代memcached,成为首选服务端缓存的组件。而且,Redis...

7888
来自专栏Java技术栈

到底什么是分布式系统?

分布式系统背景 说分布式系统必须要说集中式系统,集中式系统中整个项目就是一个独立的应用,整个应用也就是整个项目,所有的东西都在一个应用里面。 如下图所示 ?...

3489
来自专栏子勰随笔

SDK设计心得之架构和资源

5974
来自专栏磨磨谈

如何测量Ceph OSD内存占用

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

1651
来自专栏java工会

15个顶级Java多线程面试题及答案,快来看看吧

1775
来自专栏互联网技术栈

Zookeeper 使用场景

901

扫码关注云+社区

领取腾讯云代金券