python笔记:#006#程序执行原理
时间:2022-05-03
本文章向大家介绍python笔记:#006#程序执行原理,主要内容包括程序执行原理(科普)、01. 计算机中的三大件、02. 程序执行的原理、03. 程序的作用、基本概念、基础应用、原理机制和需要注意的事项等,并结合实例形式分析了其使用技巧,希望通过本文能帮助到大家理解应用这部分内容。
程序执行原理(科普)
目标
- 计算机中的 三大件
- 程序执行的原理
- 程序的作用
01. 计算机中的三大件
计算机中包含有较多的硬件,但是一个程序要运行,有 三个 核心的硬件,分别是:
-
CPU
- 中央处理器,是一块超大规模的集成电路
- 负责 处理数据/计算
-
内存
- 临时 存储数据(断电之后,数据会消失)
- 速度快
- 空间小(单位价格高)
-
硬盘
- 永久 存储数据
- 速度慢
- 空间大(单位价格低)
思考题
- 计算机中哪一个硬件设备负责执行程序?
- CPU
-
内存 的速度快还是 硬盘 的速度快?
- 内存
- 我们的程序是安装在内存中的,还是安装在硬盘中的?
- 硬盘
-
我买了一个内存条,有 500G 的空间!!!,这句话对吗?
- 不对,内存条通常只有
4G
/8G
/16G
/32G
- 不对,内存条通常只有
-
计算机关机之后,内存中的数据都会消失,这句话对吗?
- 正确
02. 程序执行的原理
- 程序 运行之前,程序是 保存在硬盘 中的
- 当要运行一个程序时
- 操作系统会首先让 CPU 把程序复制到 内存 中
- CPU 执行 内存 中的 程序代码
程序要执行,首先要被加载到内存
2.1 Python 程序执行原理
- 操作系统会首先让 CPU 把 Python 解释器 的程序复制到 内存 中
- Python 解释器 根据语法规则,从上向下 让 CPU 翻译 Python 程序中的代码
- CPU 负责执行翻译完成的代码
Python 的解释器有多大?
- 执行以下终端命令可以查看 Python 解释器的大小
# 1. 确认解释器所在位置
$ which python
# 2. 查看 python 文件大小(只是一个软链接)
$ ls -lh /usr/bin/python
# 3. 查看具体文件大小
$ ls -lh /usr/bin/python2.7
提示:建立 软链接 的目的,是为了方便使用者不用记住使用的解释器是 哪一个具体版本
03. 程序的作用
程序就是 用来处理数据 的!
- 新闻软件 提供的 新闻内容、评论…… 是数据
- 电商软件 提供的 商品信息、配送信息…… 是数据
- 运动类软件 提供的 运动数据…… 是数据
- 地图类软件 提供的 地图信息、定位信息、车辆信息…… 是数据
- 即时通讯软件 提供的 聊天信息、好友信息…… 是数据
- ……
3.1 思考 QQ 程序的启动过程
- QQ 在运行之前,是保存在 硬盘 中的
- 运行之后,QQ 程序就会被加载到 内存 中了
3.2 思考 QQ 程序的 登录 过程
- 读取用户输入的 QQ 号码
- 读取用户输入的 QQ 密码
- 将 QQ 号码 和 QQ 密码 发送给腾讯的服务器,等待服务器确认用户信息
思考 1
在 QQ 这个程序将 QQ 号码 和 QQ 密码 发送给服务器之前,是否需要先存储一下 QQ 号码 和 密码?
答案
肯定需要!—— 否则 QQ 这个程序就不知道把什么内容发送给服务器了!
思考 2
QQ 这个程序把 QQ 号码 和 QQ 密码 保存在哪里?
答案
保存在 内存 中,因为 QQ 程序自己就在内存中
思考 3
QQ 这个程序是怎么保存用户的 QQ 号码 和 QQ 密码 的?
答案
- 在内存中为 QQ 号码 和 QQ 密码 各自分配一块空间
- 在 QQ 程序结束之前,这两块空间是由 QQ 程序负责管理的,其他任何程序都不允许使用
- 在 QQ 自己使用完成之前,这两块空间始终都只负责保存 QQ 号码 和 QQ 密码
- 使用一个 别名 标记 QQ 号码 和 QQ 密码 在内存中的位置
- 在程序内部,为 QQ 号码 和 QQ 密码 在内存中分配的空间就叫做 变量
- 程序就是用来处理数据的,而变量就是用来存储数据的
- AngularJS入门心得4——漫谈指令scope
- Enterprise Library深入解析与灵活应用(8):WCF与Exception Handling AppBlock集成[上]
- 苹果就“电池门”公开致歉;微信下拉任务栏新增小游戏;美团打车进入北京
- 新华三《中国城市数字经济指数白皮书》:深圳数字经济发展水平国内居首
- NodeMCU模块写入MicroPython固件
- 如何证明Application Domain的隔离性
- Enterprise Library深入解析与灵活应用(8):WCF与Exception Handling AppBlock集成[下]
- 我所理解的Remoting(1):Marshaling & Activation[上篇]
- oracle 12c 常见报告获取-AWR
- 人人公司收购美国卡车社区 Trucker Path,未来或探索无人驾驶
- WCF技术剖析之二十二: 深入剖析WCF底层异常处理框架实现原理[下篇]
- 《WCF的绑定模型》博文系列汇总[共6篇]
- 快来看看难民营里的高科技超市
- WCF技术剖析之二十三:服务实例(Service Instance)生命周期如何控制[中篇]
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Maven详细介绍
- RabbitMq 技术文档
- Kafka 技术文档
- Druid 数据库连接池监控配置(web项目)
- Druid 介绍及配置
- Kafka 分布式的,基于发布/订阅的消息系统
- Maven 打包涉及证书文件问题
- maven 安装alipay-sdk包到本地及远程仓库
- maven 基础 maven-shade-pluginMaven Scopepom.xml 样例
- zookeeper应用:屏障、队列、分布式锁
- Java AIO 异步IO应用实例
- Java NIO 同步非阻塞应用实例
- Spring Boot 示例项目
- Jetty 发布web服务
- Netty 异步的、事件驱动的网络应用程序框架和工具