程序执行原理(科普)

目标

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

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 密码 在内存中分配的空间就叫做 变量
  • 程序就是用来处理数据的,而变量就是用来存储数据的

python笔记:#006#程序执行原理的更多相关文章

  1. python程序执行原理

    Python程序的执行原理 1. 过程概述 Python先把代码(.py文件)编译成字节码,交给字节码虚拟机,然后解释器一条一条执行字节码指令,从而完成程序的执行. 1.1python先把代码(.py ...

  2. 菜鸡的Java笔记 国际化程序实现原理

    国际化程序实现原理 Lnternationalization        1. Locale 类的使用        2.国家化程序的实现,资源读取                所谓的国际化的程序 ...

  3. python可以提高程序执行速度N倍你知道吗?

    1.1.Numba的约5分钟指南 Numba是Python的即时编译器,它最适用于使用NumPy数组和函数以及循环的代码.使用Numba的最常用方法是通过其装饰器集合,可以应用于您的函数来指示Numb ...

  4. Python笔记总结week2

    1. 关于Python程序执行原理:

  5. python笔记(1)--基础知识

    一.注释 单行注释 #打印“hello world” print("hello.world!") 另外一种单行注释 print("hello,world!") ...

  6. Python程序的执行原理(转载)

    Python程序的执行原理 2013-09-17 10:35 佚名 tech.uc  1. 过程概述 Python先把代码(.py文件)编译成字节码,交给字节码虚拟机,然后虚拟机一条一条执行字节码指令 ...

  7. python解释执行原理(转载)

    Python解释执行原理 转自:http://l62s.iteye.com/blog/1481421 这里的解释执行是相对于编译执行而言的.我们都知道,使用C/C++之类的编译性语言编写的程序,是需要 ...

  8. 关于 使用python向qq好友发送消息(对爬虫的作用----当程序执行完毕或者报错无限给自己qq发送消息,直到关闭)

    以前看到网上一些小程序,在处理完事物后会自动发送qq消息,但是一直搞不懂是说明原理.也在网上找过一些python登陆qq发送消息的文字,但是都太复杂了.今天偶然看到一篇文章,是用python调用win ...

  9. 【跟我一起学Python吧】Python解释执行原理

    这里的解释执行是相对于编译执行而言的.我们都知道,使用C/C++之类的编译性语言编写的程序,是需要从源文件转换成计算机使用的机器语言,经过链接器链接之后形成了二进制的可执行文件.运行该程序的时候,就可 ...

随机推荐

  1. ROS_Kinetic_11 ROS程序基础Eclipse_C++(二)

    ROS_Kinetic_11 ROS程序基础Eclipse_C++(二) 编写简单的Service和Client (C++): http://wiki.ros.org/cn/ROS/Tutorials ...

  2. (NO.00001)iOS游戏SpeedBoy Lite成形记(二十一)

    现在游戏中如果钱用光了赌场也是不管的,所以我们要加上Game Over的逻辑. 出现游戏结束条件很简单,就是GameState的totalMoney <= 0.而在游戏结束时我们要做些什么呢?有 ...

  3. JAVA之旅(四)——面向对象思想,成员/局部变量,匿名对象,封装 , private,构造方法,构造代码块

    JAVA之旅(四)--面向对象思想,成员/局部变量,匿名对象,封装 , private,构造方法,构造代码块 加油吧,节奏得快点了 1.概述 上篇幅也是讲了这点,这篇幅就着重的讲一下思想和案例 就拿买 ...

  4. 算法面试题-leetcode学习之旅(二)

    题目: Given a non-negative integer num, repeatedly add all its digits until the result has only one di ...

  5. android混淆和反编译

    混淆 Android Studio:  只需在build.gradle(Module:app)中的buildTypes中增加release的编译选项即可,如下: <code class=&quo ...

  6. 原生CSS动画回调事件

    原文链接: Detecting CSS Animation Completion with JavaScript 原文日期: 2014年02月20日 翻译日期: 2014年02月21日 翻译人员: 铁 ...

  7. batch gradient descent(批量梯度下降) 和 stochastic gradient descent(随机梯度下降)

    批量梯度下降是一种对参数的update进行累积,然后批量更新的一种方式.用于在已知整个训练集时的一种训练方式,但对于大规模数据并不合适. 随机梯度下降是一种对参数随着样本训练,一个一个的及时updat ...

  8. 【Visual C++】游戏编程学习笔记之五:单一背景滚动

    本系列文章由@二货梦想家张程 所写,转载请注明出处. 本文章链接:http://blog.csdn.net/terence1212/article/details/44224963 作者:ZeeCod ...

  9. 【Visual C++】游戏编程学习笔记之三:游戏循环的使用

     本系列文章由@二货梦想家张程 所写,转载请注明出处. 本文章链接:http://blog.csdn.net/terence1212/article/details/44208419 作者:Zee ...

  10. 网站开发进阶(十三)window.onload用法详解

    window.onload用法详解 网页中的javaScript脚本代码往往需要在文档加载完成后才能够去执行,否则可能导致无法获取对象的情况,为了避免这种情况的发生,可以使用以下两种方式: 一.将脚本 ...