程序执行原理(科普)

目标

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

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_07 ROS中机器人三维物理引擎高保真仿真利器gazebo 7.0

    ROS_Kinetic_07 ROS中机器人三维物理引擎高保真仿真利器gazebo 7.0 ROS kinetic中的gazebo版本是7.0,有很多新的特性. 首先,启动gazebo: ~$ gaz ...

  2. MinerHtmlThread.java 爬取页面线程

    MinerHtmlThread.java 爬取页面线程 package com.iteye.injavawetrust.miner; import org.apache.commons.logging ...

  3. Java进阶(七)Java加密技术之非对称加密算法RSA

    Java加密技术(四)--非对称加密算法RSA 非对称加密算法--RSA 基本概念 非对称加密算法是一种密钥的保密方法. 非对称加密算法需要两个密钥:公开密钥(publickey)和私有密钥(priv ...

  4. 高通平台手机开发之LCD

    4.1. LCD 参考文档: 1) 80-NA157-174_E_DSI_Programing_Guide_B-Family_Android_Devices.pdf 2) 80-NN766-1_A_L ...

  5. mpi中的广播

    MPI可以实现一对多的集合通信,最常用的是广播:某个进程将数据广播到所有其他进程,最终的结果就是每个进程都有一份广播的数据.MPICH中的广播函数是MPI_Bcast(void* buffer,int ...

  6. 《java入门第一季》之面向对象匿名内部类面试题

    面试题一: /*         按照要求,补齐代码             interface Inter { void show(); }             class Outer { // ...

  7. 在app内打开自己app的专用设置界面

    在我们的APP中,可能会使用多种服务,例如定位.推送.相册.拍照.通讯录等.选择是否允许一般只出现在安装app后第一次打开时,可是我们依然需要在使用到某种服务的时候判断是否用户是否允许了该服务,因为用 ...

  8. -lt -gt -ge -le -eq的意义

    脚本如下:#!/bin/bashx=0while [ $x -lt 10 ]doecho $xx=`echo "$x+1" | bc`done 请问这里的-lt是什么意思,请大家指 ...

  9. Android studio导入工程很卡及下载网络jar很慢问题总结

    AndroidStudio导入项目一直卡在Building gradle project info,实际上是因为你导入的这个项目使用的gradle与你已经拥有的gradle版本不一致,导致需要下载该项 ...

  10. Mybatis源码之CallableStatementHandler

    /** * @author Clinton Begin */ public class CallableStatementHandler extends BaseStatementHandler { ...