计算机导论——计算机入门篇

第一章

1、计算机系统的层次

硬件层:包括计算机的各个部分,控制器,运算器(CPU)、存储器、输入设备和输出设备。

软件层:包括由汇编及高级语言等开发出来的应用程序。

操作系统层(OS):是连接硬件和软件的中间桥梁,它由机器指令和广义指令组成。

. 机器指令:指的是CPU能够直接识别并执行的指令;
. 广义指令:是指系统定义和解释的软件指令;

2、高级语言与汇编语言的区别

汇编语言是一种功能很强的程序设计语言,也是利用计算机所有硬件特性并能直接控制硬件的语言。它是面向机器的程序设计语言;

高级语言是相对于汇编语言而言的,它是较接近自然语言数学公式的编程,基本脱离了机器的硬件系统,用人们更易理解的方式编写程序;包括很多种编程语言——常见的高级语言有:C语言、C++、VB、JAVA、C#等等
常用语句:表达式语句、函数调用语句、控制结构语句(for语句、while语句、if语句)。

3、解释性语言和编译型语言的区别和各自的特点

编译型语言:用编译型语言写的程序执行之前需要一个专门的编译过程,通过编译系统(不仅仅是通过编译器,编译器只是编译系统的一部分)把高级语言翻译成机器语言,把源高级程序编译成机器语言文件,如Windows下的exe文件。以后就可以直接运行不需要编译;编译型语言有C/C++、Pascal/Object Pascal (Delphi)等。

解释型语言:用解释型语言编写的程序不需要编译。解释型语言在运行的时候才翻译,比如VB语言在执行的时候专门有一个解释器能够将VB语言翻译成机器语言,每一个语句都是执行的时候翻译。这样解释型语言每执行一次就要翻译一次,效率比较低;(但解释器能够在运行时动态优化代码);解释型语言有JavaScript、VBScript、Perl、Python、Ruby、MATLAB。

JAVA是一种编译型-解释型语言;同时具备编译特性和解释特性(其实确切的说JAVA就是解释型语言,其所谓的编译过程只是将.Java文件编译成平台无关的字节代码.class文件,并不是C一样编译成可以执行机器语言);

Python是一种面向对象、解释型计算机程序设计语言;Python语法简洁而清晰,具有丰富和强大的类库。(由Guido van Rossum于1989年底发明,第一个公开版发行于1991年)。

4、历代计算机的发展阶段和每个阶段的特点

两类计算机:
1、通用型计算机(general purpose computers);
2、专用型计算机(special purpose computers);

四代计算机:
第一代计算机所经历的时间为1946到1958年。处于这一时代的计算机的共同特点:体积较大;运算速度较低;存储容量不大;而且价格昂贵;使用也不方便。解决一个简单问题所编写的程序的复杂程度也难以表述。这一代计算机只在重要机构或科学领域研究部门使用,主要用于科学计算。

第二代计算机所经历的时间为1958年至1965年。这一时代的计算机全部采用晶体管作为电子器件,其运算速度比第一代计算机的提高了近百倍,体积为原来的几十分之一。在软件方面,开始使用计算机算法语言。这一代计算机不仅用于科学计算,还用于数据处理和事务处理及工业控制。

第三代计算机所经历的时间为1965年至1970年。这一时期的计算机的主要特征是以中、小规模集成电路为电子器件。一个重大突破是计算机出现了操作系统,计算机的功能越来越强,应用范围越来越广。它们不仅用于科学计算,还用于文字处理、企业管理、自动控制等事务。与此同时,还出现了计算机技术与通信技术相结合的信息管理系统,可用在市场管理、情报检索等领域。

第四代计算机是指1970以后采用大规模集成电路(LSI)和超大规模集成电路(VLSL)为主要电子器件制成的计算机。例如80386微处理器,面积约10mm*10mm的单个芯片上,可以集成大约32万个晶体管。第四代计算机的另一个重大分支是以大规模、超大规模集成电路为基础发展起来的微处理器和微计算机。

第二章 计算与存储

1、进制的概念

二进制(二进制的一位称为一比特bit,把连续的八个比特称为一个字节)、八进制、十进制、十六进制;
基数和位权: 如果某一个进制采用R个基本符号,我们就称它为基R进制,R称为进制的‘基数’(base);进制中每一位的单位值称为‘位权’(weight)。

2、计算机为什么采用二进制

  1. 技术实现简单:计算机是逻辑电路,逻辑电路通常只有两种状态,开关的接通和断开,这两种状态正好用‘1’和‘0’表示。
  2. 简化运算规则:两个二进制数和、积运算组合各有三种,运算规则简单,有利于简化计算机内部结构,提高运算速度
  3. 适合逻辑运算:逻辑代数是逻辑运算的理论依据,二进制只有两个数码,正好与逻辑代数中的“真”和“假”相吻合。
  4. 易于进行转转:二进制与十进制数易于相互转换。
  5. 用二进制表示的数据具有抗干扰能力强,可靠性高等优点。因为每位数据只有高低两种状态,当受到一定程度的干扰时,仍能可靠地分辨出它是高是低。

3、不同进制的快速转换

以十进制为中间流转(‘除R取余法’、‘乘R取整法’);R进制数转换为十进制数时,将各位数与它的位权乘积相累加;

十进制整数转换为R进制整数:可用十进制整数连续地除以R,每次除法获得的余数即为相应R进制数一位,最后按逆序输出结果。“除R取整法”;
十进制小数转换成R进制小数:可用十进制的小数连续地乘以R,用得到的整数部分组成R进制的小数,最后按顺序输出结果。“乘R取整法”;

对于二进制数和八进制数、十六进制数之间的转换,有简便快速的“三位一并”和“四位一并法”。

4、浮点数的表示方法

在计算机中整数以外的其他数(带小数的数)被称为浮点数;
浮点运算的规则和整数的运算规则相同;
计算机使用类似科学记数的方法表示浮点数,包括指数e和尾数m以及带符号数的符号位;
二进制浮点数1.011×2^010在计算机中存为:
img1

5、逻辑运算

基本运算是由0和1的逻辑运算衍生而来;

. 真—假—>1-0
. “与(AND)”、“或(OR)”、“非(NOT)”

6、存储设备的类型和各种存储设备的特点

计算机内部,各种信息都是以二进制编码的形式存储的。
计算机普通把单位信息分成以下三种:
位(bit)、字节(Byte)、字(Word)(字是字节的组合;字长是32位(4个字节));
常用单位:bit、B(Byte)、KB、MB、GB、TB、PB、EB.

符号的编码方式:ASCII码(美国信息交换标准码)、GBK字符集(国家标准扩展字符集)、统一字符编码Unicode。

存储设备:存放0和1组成的二进制信息的物理载体称为存储介质,存储介质加上配套电路等组件组成存储设备。
现在计算机常用的存储设备:

  1. 寄存器(Register)
  2. 高速缓存(Cache)
  3. 内存(Main memory)
  4. 外存(Storage)
  5. 显存

img2

图示是目前计算机系统最基础的存储层次

.速度越快价格越高容量越小,离CPU越近;
.速度越慢价格越低容量越大,离CPU越远

计算机常见的存储介质:SRAM、DRAM(断电丢失保存信息)、磁盘、闪存。
注:RAM随机访问内存,这种存储器在断电时将丢失存储内容;ROM即只读内存,是一种能读出事先所存数据的固态半导体存储器。

第三章 指令与函数

1、CPU的组成

计算机两个核心部件分别是CPU(运算)和主存(存储);
CPU的核心部件:程序计数器(PC)、指令寄存器(IR)、算术逻辑单元(ALU)。

2、常用汇编指令的功能及功能指令格式

汇编指令有“操作码”和“操作数”组成,操作码是指令执行的基本动作。
格式:load R1,(address)
注:address是内存地址,(address)表示这个地址内存储的值;

“R赋值”操作——mov指令;
加法指令——add;
减法指令——sub;
左位移指令——shiftl;
右位移指令——shiftr;
“将R存回a的操作”——store指令;

控制结构的执行(if-else选择语句;分支跳转指令;while循环语句;for循环语句);

分支跳转:
比较x是否小于y——slt指令;格式:slt R4,R1,R2
“判断小于后等于”——sle指令;
“选择跳转到语句块”——beqz指令;
beqz R4,label2(如果R4为零则跳转到label2标记的指令块)。
“直接跳转到语句块”操作——goto指令;

4、函数调用的调用过程

程序语言中的函数和数学中的函数基本概念是相似的。程序语言中的函数也有参数,返回值,以及定义与调用。程序中的函数,就是将一些程序语句结合在一起的邮件,通过多次调用,函数可以不止一次的在程序中运行。

函数调用的好处:1.将大问题分成许多小问题;2.便于检测错误;3.实现封装和重用;4.便于维护。

函数调用的特点:(越早被调用的函数,越晚被返回);因为程序在执行过程是是根据指令寄存器里的指令依次执行(除函数调用,调用后的返回以及控制结构),每次函数调用都有一个返回值,然后程序继续执行。

栈:栈是一种非常重要的数据结构,它按照先进后出的原则存储数据,即先进入的数据被压入栈底,最后的数据在栈顶,需要取数据的时候从栈顶开始弹出数据。所以它的特色是“先进后出”和“后进先出”;(只能从一端放数据和取数据);

第四章 编程与python初识

1、Python优点

软件质量高;提高开发效率;程序可一致性强;标准库的支持。

2、LIST STRING DICTIONARY三种内置数据结构的使用。

数据类型结构图:
img3

列表(list):*不同于数组,列表的元素类型可以是不一样的,(可以是整型,浮点型,字符串,还可以是列表);序列的通用操作主要包括:索引、分片、链接(加)、重复(乘);以及检查某个元素是否属于序列。 遍历,即要依次对列表中的所有元素进行访问(操作),对列表这种线性数据结构最自然的遍历方式是循环。

字符串(string):同列表一样,字符串也实现了序列的通用操作和函数。但是字符串的内容是不可改变的;字符串对某一个索引所在位置进行赋值是不允许的。(字符串与数值型相互转化、字符串转化为列表)。

字典(dictionary):字典是Python中唯一的映射类型。字典中的每一个元素都是一个键值对(Key:Value),而Key在字典中只会出现一次,也就是大家知道函数是不可以有一对多的映射关系。键key是集合X中的一个元素,而Value指的是集合Y中的一个元素,如f(key)=value;

Python字典是符合数据库数据表格的概念,它能够表示基于关系模型的数据库,即关系数据库。而现在主流的数据库Oracle、db2、sqlserver、svbase、mysql等都是关系数据库。

3、基本赋值语句和增强赋值语句的使用

基本形式的赋值语句就是”变量X=值”;

.序列赋值;扩张序列赋值;多目标赋值;增强赋值语句(从C语言借鉴)。

4、三种控制机构的熟练掌握

  1. if语句(elif)严格以缩进区别语块;
    注:缩进反映代码逻辑性,缩进可由任意的空格和制表符组成,同一个语句块的缩进必须保持一致。一般来说,缩进的距离为4个空格键或者一个制表符。但是要注意,在同一段代码中,混合使用制表符和空格并不是·一个好习惯。因为不同的编辑器对制表符和空格混用的处理方式并不同,为了避免出错,最好采用同一形式的缩进。

  2. While循环语句:(判读bool,continue语句,break语句);
    注:while循环语句也有else语句,只不过else一定要和while的break相结合考虑才有意义。

  1. For循环语句:for循环通常用来遍历有序的序列对象内的元素。For循环语句——range函数的应用(Python的range函数通常用来生产整数列表)。

5、函数调用过程的参数传递和变量使用

Python进行函数调用时,参数的传递都是通过赋值的方式。Python中的数据结构有两种类型:可变类型与不可变类型。
可变类型有列表,字典等,而不可变类型有数字、字符串等。
对参数的修改会影响到可变类型的数据结构,而不会影响到不可变类型的数据结构。(列表做参数是传递指针指向堆heap)。

6、面向对象和面向对象编程的定义和特点

面向过程是一种以事件为中心的编程思想:就是把解决问题的步骤写出了,程序一步一步的执行就能解决问题。
面向对象是一种以事物为中心的编程思想:会把问题的相关数据提取出来,将具有相同属性的物体抽象为类,并给类设计相应的方法。程序执行时,通常就是创建这个类的一个对象,调用这个类的方法,就可以解决问题。

注:相比面向过程语言,面向对象编程有更好的扩展性,思维方式更加自然(封装,继承,多态,重用)。

7、类的定义和实例化

类——对象:使用类生成对象的过程,叫做实例化。一个类可以包含多个已定义类型的变量,这些变量称为成员变量(也称属性),同时,还可以包含多个有该类实例化对象所使用的函数,这些函数称为成员函数。

第五章 算法思想

1、算法的五个重要特点

  1. 有限的运行步骤;
  2. 具有确定的执行步骤;
  3. 具有输入项;
  4. 具有输出项;
  5. 对于计算机系统的可行性;

2、常用的算法思想

点击查看 常用算法的思想

第六章 简单了解操作系统

常见操作系统

生活中常见的操作系统有微软的Windows系列产品,Ubuntu、Fedora等Linux系统,苹果Mac OS系列产品,以及智能手机所使用的Android、IOS系统等等。

  1. 计算机操作系统:诞生CP/M;远古霸主DOS;当代大亨Windows;诱人的小企鹅Linux;神奇的精灵FreeBSD(Unix);多才多艺的艺术大师BeOS。
  2. 手机操作系统:Symbian(塞班)NOKIA、Linux(Android)、palm OS(Plam公司开发嵌入式操作系统)、BlackBerry(黑莓)、Windowsmobile,iOS(iPhone、iPodtouch、iPad);
  3. 基于Android的二次开发:Sense(HTC)、LG Optimus(LG)、CyanogenMod、小米MIUI(小米)、Emotion UI(华为)、Blur(摩托罗拉)、Flyme OS (魅族)、中国移动OMS
  4. Brew(CDMA高通公司开发的封闭式系统)、HP webOS、MeeGo(诺基亚和英特尔)、Firefox OS(谋智公司)、BADA系统(韩国三星电子)、Tizen(英特尔MeeGo系统和三星LiMo系统的混合体)、Ubuntu手机操作系统(开发商canonical)。

操作系统的主要职能:
1、管理文件系统,管理各种硬件资源,例如U盘、网盘、键盘等。
2、管理程序共享的资源,例如CPU、主存等(一个计算机系统会有多个程序同时在执行或等待执行)。
3、管理和调度多个程序的执行;
4、提供程序和硬件的衔接,提供各种系统的服务和接口;
5、设法维护系统的安全,尽量防止病毒(恶意软件)有意或无意的入侵;

2、计算机的启动过程

  1. 启动自检阶段
  2. 初始化启动阶段
  3. 启动加载阶段
  4. 内核转载阶段
  5. 登录阶段

注:无论是台式机、笔记本、手机、所有设备开机启动过程中都会包括三个共同的阶段:启动自检阶段、初始化启动阶段、启动加载阶段;
这三个阶段主要由BIOS(Basic Input Output System)来完成的。BIOS是一组程序,包括基本输入输出程序,系统设置信息,开机后自检程序和系统自启动程序。

3、操作系统对硬件资源的管理

操作系统管理计算机资源,是软件和硬件的中间接口。
CPU通常使用轮询和硬件中断两种方式检测设备的工作状态。

I/O设备 CPU :硬件中断
存储设备:异常

4、操作系统对应用程序的服务:软件中断

操作系统中设置了一组用于实现系统功能的子程序,称为系统调用函数(运行于内核态)。

常用的系统的调用:

  1. 进程控制,如:fork(),exit()等;
  2. 文件系统操作控制,如:read()、write()等;
  3. 系统控制,如:ioctl()、time()等;
  4. 内存管理,如mmap()、mprotect()等;
  5. 网络管理控制,如:sethostname()、soket()、bind()等 ;
  6. 用户管理,如:getuid(),getgid()等;
  7. 进程间通信,如:signal(),kill()等;

(1)软件开发者如何统一的使用硬件资源?
为了统一的使用硬件资源,软件开发者通过操作系统提供的用户接口程序,进入内核模式使用操作系统提供的服务来使用资源。也就是说,不论是QQ程序,或是Office程序,例如要读取一个文件的内容时,都可以调用read系统调用。这种统一接口的实现方式有利于开发者进行快速开发。只要开发者熟悉了操作系统所提供的系统调用后,便可进行不同上层软件的开发。

(2)操作系统如何为硬件系统提供安全保证?
对于硬件系统安全保证,则是因为控制硬件的底层程序均由操作系统提供,用户有理由相信操作系统不会做毁坏自己的事。所以,系统一旦进入内核态,就处于安全的状态。而上层应用软件运行自身代码段(非系统调用函数)时,不能切换到内核态,所以,程序无法通过自身代码段攻击下层硬件。

5、进程的组成部分及状态转换图

  1. 一个进程包含了代码段、数据段、栈、堆、BSS段以及进程控制块等部分。
  2. 代码段(Code segment/Text segment)通常是指用来存放程序执行代码的一块内存区域。
  3. 数据段(Data segment)通常是指用来存放程序中已经初始化的全局变量的一块内存区域。
  4. 栈(Stack)是用户存放程序临时创建的局部变量区域。除此以外,在函数被调用时,其参数也会被压入发起调用的进程栈中,并且等到函数调用结束后,函数的返回值也会被存放回栈中。由于栈这种数据结构具有先进后出特点,所以栈能够特别方便用于保存/恢复调用现场。
  5. 堆(Heap)是用于存放进程运行中动态分配的内存段,它的大小并不固定,可根据进程运行的需要动态扩张或缩减。例如所有的类对象(objects)是存放在这个区域的。
  6. BSS段(Block Started by Symbol)通常是指用来存放程序中未初始化的全局变量的一块内存区域。
  7. 另外,操作系统为了统一管理进程,专门设置了一个数据结构,即进程控制块(Process Control Block,PCB),用来记录进程的特征信息,描述进程运动变化的过程。PCB是操作系统感知进程存在的唯一标识,进程与PCB是一一对应的。
    img4

6、进程调度的常用策略及性能衡量指标

性能衡量指标:

  1. 周转时间(进程首次进入就绪队列到完成的时间间隔,刻画了用户需要等待输出结果的时间)。
  2. 吞吐量(系统单位时间内完成任务的数量)。

常用策略: 先来先服务(FCFS)、短作业优先(SJF)。

7、目录树形结构,相对路径,绝对路径

文件基本概念:文件命名、文件类型(普通文件、目录文件、块设备文件、字符设备文件)。

目录树结构:
img5

第七章 计算机相关

1、大数据的四大特点

数据:在计算机科学中,数据是指所有能输入到计算机并被计算机程序处理的,具有一点意义的数字、字母、符号和模拟量等通称。
数据处理:是对数据的采集、存储、检索、加工、变换和传输。

大数据:大数据是一个广泛的概念,大数据的核心能力是发现规律和预测未来。
【高级数据公司IDC】 海量的数据规模(Volume)、快速的数据流转和动态的数据体系(Velovity)、多样的数据类型(Variety)、巨大的数据价值(Value)。
【亚马逊大数据科学家】 大数据是任何超过一台计算机处理能力的数据量。
【维基百科】 大数据(big data)指的是所涉及的资料量规模巨大到无法通过目前主流软件工具,在合理的时间内达到撷取、管理、处理并整理成帮助企业经营决策更积极目的的资讯。