1、计算机概念
计算机是一个大类的统称。我们平时所说的电脑,是计算机的一种,专业术语称之为微型计算机。
1946年,人类第一台电子数字计算机ENIAC(Electronic Numerical Integrator And Calculator)在美国宾夕法尼亚大学诞生。
依据计算机所采用电子器件的不同,计算机发展可划分为电子管、晶体管、集成电路、超大规模集成电路,一共4代,一代更比一代强。
2、计算机系统组成
一个完整的计算机系统包括硬件系统和软件系统两大部分。
计算机所发生的全部动作都受中央处理器CPU(Central Processing Unit)的控制,其中,控制器用于协调和控制计算机的运行,运算器用来进行数据运算加工。存储器是计算机的记忆和存储部件,用来存放信息。对存储器而言,容量越大,存取速度则越快。计算机中的操作,大量的是与存储器交换信息,存储器的工作速度相对于CPU的运算速度要低得多,因此存储器的工作速度是制约计算机运算速度的主要因素之一。存储器可分为:内存储器RAM(random access memory)和外存储器ROM(Read-Only Memory)。内存是有编址的存储单元,存储器中的每一个存储空间用地址来识别。CPU的字长决定了内存的可寻址范围。
计算机通过总线来进行数据传输控制和协调各个组件。
数据总线(DB):用于中央处理器、存储器和输入/输出设备之间传送数据。
地址总线(AB):用于传送存储器单元地址或输入/输出接口地址信息。
控制总线(CB):用于传送控制器的各种控制信号,包括命令和信号交换联络线及总线访问控制线等。
系统软件指管理、监控和维护计算机资源(包括硬件和软件)的软件。主要包括操作系统、各种程序设计语言及其解释和编译系统、数据库管理系统等。启动计算机后,最先用到的就是操作系统软件。操作系统是最底层的系统软件,它是对硬件系统功能的首次扩充,屏蔽底层硬件操作的复杂性,把底层硬件功能操作(微码编程及汇编)抽象为系统调用提供给程序员使用。操作系统的作用:硬件驱动、进程管理、内存管理、网络管理、安全管理、文件管理。常见三大操作系统(Operation System): Windows、MacOS、Linux。Windows是用户群体最多的一个操作系统,Linux是服务器运用最多的操作系统(一般通过SSH客户端远程维护),MacOS是苹果电脑的操作系统。
应用软件是用户利用计算机及其提供的系统软件为解决各类实际问题而编制的计算机程序。由于计算机的应用已经渗透到各个领域,所以应用软件也是多种多样的。例如科学计算、工程设计、文字处理、辅助教学、游戏等方面的程序。工作原理:应用软件 --> 操作系统 系统调用端口 --> cpu指令 调用硬件 --> 硬件运行。
“服务”是指系统自动完成的,不需要和用户交互的程序,强调的是和那种用户要点击开用的“应用程序”的不同。“进程”是程序运行的实例,系统会给运行中的进程分配CPU,内存等资源。一个“服务”或者“应用程序”不管有没有被运行,它就在你的硬盘里,但当它真正被运行时,操作系统就会真正给它分配内存,CPU时间片等资源,这一次运行就对应着一个“进程”。也就是说,一个程序(“服务”和“应用程序”都是程序)如果没有运行就不会有相应的进程,一个程序同时运行多个实例也就会对应多个进程。任务管理器里列出的“应用程序”都是正在运行的程序,所以它们都会有对应的“进程”,而它列出的“服务”则是所有的服务(包括并未运行的服务),所以不一定会有与之对应的进程存在。
进程间常见的通信方式
管道pipe:管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用。进程的亲缘关系通常是指父子进程关系。
命名管道FIFO:有名管道也是半双工的通信方式,但是它允许无亲缘关系进程间的通信。
消息队列MessageQueue:消息队列是由消息的链表,存放在内核中并由消息队列标识符标识。消息队列克服了信号传递信息少、管道只能承载无格式字节流以及缓冲区大小受限等缺点。
共享存储SharedMemory:共享内存就是映射一段能被其他进程所访问的内存,这段共享内存由一个进程创建,但多个进程都可以访问。共享内存是最快的 IPC 方式,它是针对其他进程间通信方式运行效率低而专门设计的。它往往与其他通信机制,如信号量,配合使用,来实现进程间的同步和通信。
信号量Semaphore:信号量是一个计数器,可以用来控制多个进程对共享资源的访问。它常作为一种锁机制,防止某进程正在访问共享资源时,其他进程也访问该资源。因此,主要作为进程间以及同一进程内不同线程之间的同步手段。
套接字Socket:套接字也是一种进程间通信机制,与其他通信机制不同的是,它可用于不同主机间的进程通信。
信号 ( sinal ) : 信号是一种比较复杂的通信方式,用于通知接收进程某个事件已经发生。
按通信类型区分
共享存储器系统
1.基于共享数据结构的通信方式
(仅适用于传递相对少量的数据,通信效率低,属于低级通信)
2.基于共享存储区的通信方式
管道通信系统
管道是指用于连接一个读进程和一个写进程以实现它们之间通信的一个共享文件(pipe文件)
管道机制需要提供以下几点的协调能力
1)互斥,即当一个进程正在对pipe执行读/写操作时,其它进程必须等待
2)同步,当一个进程将一定数量的数据写入,然后就去睡眠等待,直到读进程将数据取走,再去唤醒。读进程与之类似
3)确定对方是否存在
消息传递系统
1)直接通信方式
发送进程利用OS所提供的发送原语直接把消息发给目标进程
2)间接通信方式
发送和接收进程都通过共享实体(邮箱)的方式进行消息的发送和接收
客户机服务器系统
1)套接字 – 通信标识型的数据结构是进程通信和网络通信的基本构件
基于文件型的 (当通信进程都在同一台服务器中)其原理类似于管道
基于网络型的(非对称方式通信,发送者需要提供接收者命名。通信双方的进程运行在不同主机环境下被分配了一对套接字,一个属于发送进程,一个属于接收进程)
2)远程过程调用和远程方法调用
3、计算机数据处理
计算机系统中的每一个操作,都是对数据进行某种处理,所以数据和程序一样,是软件工作的基本对象。 计算机采用电平信号传输数据,电平是个电压范围,规定输出高电平>2.4V,输出低电平<0.4V,高电平用1表示,低电平用0表示。只有两种信号是因为这样精确度会比较高,不容易因为硬件的故障损耗产生误差,存储、传输和处理时不容易出错,且二进制数符1和0正好与逻辑代数中的真(true)和假(false)相对应,所以用二进制数来表示二值逻辑进行逻辑运算也是十分自然的。二进制就是满二进一的计数制度这是根据计算机传输信号的特点而定制的。
- 数据的单位
(1)位(bit)
计算机中最小的数据单位是二进制的一个位数,简称为位(bit,比特)。计算机中最直接、最基本的操作就是对二进制位的操作。一个二进制位可表示两种状态(0或1)。两个二进制位可以表示四中状态(00,01,10,11)。位数越多,所表示的状态就越多。
(2)字节(Byte)
为了表示数据中的所有字符(字母、数字以及各种专用符号,大约有256个),需要用7位或8位二进制数。因此,人们选定8位为一个字节(Byte),通常用B表示。1个字节由8个二进制数位组成。字节是计算机中用来表示存储空间大小的最基本的容量单位。例如,计算机内存的存储容量、磁盘的存储容量等都是以字节为单位表示的。
(3)字(word)
字是由若干字节组成的(通常取字节的整数倍)。字是计算机进行数据存储和数据处理的基本运算单位。字长是计算机性能的重要标志,它是一个计算机字所包含的二进制位的个数。不同档次的计算机有不同的字长。按字长可以将计算机划分为8位机、16位机、32位机、64位机。
- 字符编码
计算机中,对非数值的文字和其他符号进行处理时,要对文字和符号进行数字化处理,即用二进制编码来表示文字和符号。字符编码就是规定用怎样的二进制编码来表示文字和符号。
(1)ASCII码
ASCII码有7位版本和8位版本两种。国际上通用的是7位版本。7位版本的ASCII码有128个元素,其中通用控制字符34个,阿拉伯数字10个,大、小写英文字母52个,各种标点符号和运算符号32个。7位版本ASCII码只需用7个二进制位(2的7次方等于128)。当微型计算机上采用7位ASCII码作为机内码时,每个字节只占后7位,最高为恒为0。
(2)汉字编码
由于汉字是象形文字,数目很多,常用汉字就有3000~5000个,加上汉字的形状和笔画多少差异极大,因此不可能用少数几个确定的符号将汉字完全表示出来,或像英文那样将汉字拼写出来。每个汉字必须有它自己独特的编码。常见的编码格式有:GB2312。
- 数值转换
十进制转化成二进制:有一个最简单的方法,就是不断除以2。余数写在右边。然后从最后一个得到的商倒回去(商余数排列起来),得到的数就是二进制要表达的结果了
二进制转化十进制:2^(n-1) + 2^(n-2) + ...+2^0
因为二进制读写都很麻烦,与十进制转换也比较麻烦,而2^4=16,这意味着4位二进制数正好可以表示成1位十六进制数。再将十六进制转为十进制的话就相对容易一些,只要知道每一位是前一位的16倍。比如:B C 5 3 的话就是 11*16^3 + 12*16^2 + 5*16^1 + 3*16^0 = 45056 + 3072 + 80 + 3 = 48211
十六进制的应用如:计算机中的网卡地址、颜色的RGB、面向计算机底层的编程语言(汇编语言,机器语言等)会用到十六进制的指令