python笔记:#006#程序执行原理
程序执行原理(科普)
目标
- 计算机中的 三大件
- 程序执行的原理
- 程序的作用
01. 计算机中的三大件
计算机中包含有较多的硬件,但是一个程序要运行,有 三个 核心的硬件,分别是:
- CPU
- 中央处理器,是一块超大规模的集成电路
- 负责 处理数据/计算
- 内存
- 临时 存储数据(断电之后,数据会消失)
- 速度快
- 空间小(单位价格高)
- 硬盘
- 永久 存储数据
- 速度慢
- 空间大(单位价格低)
| 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 密码 在内存中分配的空间就叫做 变量
- 程序就是用来处理数据的,而变量就是用来存储数据的
python笔记:#006#程序执行原理的更多相关文章
- python程序执行原理
Python程序的执行原理 1. 过程概述 Python先把代码(.py文件)编译成字节码,交给字节码虚拟机,然后解释器一条一条执行字节码指令,从而完成程序的执行. 1.1python先把代码(.py ...
- 菜鸡的Java笔记 国际化程序实现原理
国际化程序实现原理 Lnternationalization 1. Locale 类的使用 2.国家化程序的实现,资源读取 所谓的国际化的程序 ...
- python可以提高程序执行速度N倍你知道吗?
1.1.Numba的约5分钟指南 Numba是Python的即时编译器,它最适用于使用NumPy数组和函数以及循环的代码.使用Numba的最常用方法是通过其装饰器集合,可以应用于您的函数来指示Numb ...
- Python笔记总结week2
1. 关于Python程序执行原理:
- python笔记(1)--基础知识
一.注释 单行注释 #打印“hello world” print("hello.world!") 另外一种单行注释 print("hello,world!") ...
- Python程序的执行原理(转载)
Python程序的执行原理 2013-09-17 10:35 佚名 tech.uc 1. 过程概述 Python先把代码(.py文件)编译成字节码,交给字节码虚拟机,然后虚拟机一条一条执行字节码指令 ...
- python解释执行原理(转载)
Python解释执行原理 转自:http://l62s.iteye.com/blog/1481421 这里的解释执行是相对于编译执行而言的.我们都知道,使用C/C++之类的编译性语言编写的程序,是需要 ...
- 关于 使用python向qq好友发送消息(对爬虫的作用----当程序执行完毕或者报错无限给自己qq发送消息,直到关闭)
以前看到网上一些小程序,在处理完事物后会自动发送qq消息,但是一直搞不懂是说明原理.也在网上找过一些python登陆qq发送消息的文字,但是都太复杂了.今天偶然看到一篇文章,是用python调用win ...
- 【跟我一起学Python吧】Python解释执行原理
这里的解释执行是相对于编译执行而言的.我们都知道,使用C/C++之类的编译性语言编写的程序,是需要从源文件转换成计算机使用的机器语言,经过链接器链接之后形成了二进制的可执行文件.运行该程序的时候,就可 ...
随机推荐
- ROS_Kinetic_11 ROS程序基础Eclipse_C++(二)
ROS_Kinetic_11 ROS程序基础Eclipse_C++(二) 编写简单的Service和Client (C++): http://wiki.ros.org/cn/ROS/Tutorials ...
- (NO.00001)iOS游戏SpeedBoy Lite成形记(二十一)
现在游戏中如果钱用光了赌场也是不管的,所以我们要加上Game Over的逻辑. 出现游戏结束条件很简单,就是GameState的totalMoney <= 0.而在游戏结束时我们要做些什么呢?有 ...
- JAVA之旅(四)——面向对象思想,成员/局部变量,匿名对象,封装 , private,构造方法,构造代码块
JAVA之旅(四)--面向对象思想,成员/局部变量,匿名对象,封装 , private,构造方法,构造代码块 加油吧,节奏得快点了 1.概述 上篇幅也是讲了这点,这篇幅就着重的讲一下思想和案例 就拿买 ...
- 算法面试题-leetcode学习之旅(二)
题目: Given a non-negative integer num, repeatedly add all its digits until the result has only one di ...
- android混淆和反编译
混淆 Android Studio: 只需在build.gradle(Module:app)中的buildTypes中增加release的编译选项即可,如下: <code class=&quo ...
- 原生CSS动画回调事件
原文链接: Detecting CSS Animation Completion with JavaScript 原文日期: 2014年02月20日 翻译日期: 2014年02月21日 翻译人员: 铁 ...
- batch gradient descent(批量梯度下降) 和 stochastic gradient descent(随机梯度下降)
批量梯度下降是一种对参数的update进行累积,然后批量更新的一种方式.用于在已知整个训练集时的一种训练方式,但对于大规模数据并不合适. 随机梯度下降是一种对参数随着样本训练,一个一个的及时updat ...
- 【Visual C++】游戏编程学习笔记之五:单一背景滚动
本系列文章由@二货梦想家张程 所写,转载请注明出处. 本文章链接:http://blog.csdn.net/terence1212/article/details/44224963 作者:ZeeCod ...
- 【Visual C++】游戏编程学习笔记之三:游戏循环的使用
本系列文章由@二货梦想家张程 所写,转载请注明出处. 本文章链接:http://blog.csdn.net/terence1212/article/details/44208419 作者:Zee ...
- 网站开发进阶(十三)window.onload用法详解
window.onload用法详解 网页中的javaScript脚本代码往往需要在文档加载完成后才能够去执行,否则可能导致无法获取对象的情况,为了避免这种情况的发生,可以使用以下两种方式: 一.将脚本 ...