在当今社会计算机(computer)俗称电脑,已经成为我们日常生活中无法取代的必需品,那么什么是计算机?让我们来了解一下吧~
一、计算机的组成及其功能
计算机是什么
计算机(computer)俗称电脑,是现代一种用于高速计算的电子计算机器,可以进行数值计算,又可以进行逻辑计算,还具有存储记忆功能。是能够按照程序运行,自动、高速处理海量数据的现代化智能电子设备。
由硬件系统和软件系统所组成,没有安装任何软件的计算机称为裸机。可分为超级计算机、工业控制计算机、网络计算机、个人计算机、嵌入式计算机五类,较先进的计算机有生物计算机、光子计算机、量子计算机等。
计算机发明者约翰·冯·诺依曼。计算机是20世纪最先进的科学技术发明之一,对人类的生产活动和社会活动产生了极其重要的影响,并以强大的生命力飞速发展。它的应用领域从最初的军事科研应用扩展到社会的各个领域,已形成了规模巨大的计算机产业,带动了全球范围的技术进步,由此引发了深刻的社会变革,计算机已遍及一般学校、企事业单位,进入寻常百姓家,成为信息社会中必不可少的工具。
计算机的组成:
一般而言,计算机的组成应该分为两部分:
一、硬件部分
控制器(Control):CPU的组成部分之一。相当于计算机的中枢神经,通过控制器,可以有效的控制和协调整个计算机的如下动作
– 保障不同数率传输的数据可以得到缓冲
– 甄别IO设备传送数据的正错
– 实现数据与数据之间的交换
– 接收和识别命令
运算器(Datapath):CPU的组成部分之一。包含算数逻辑单元(ALU)、累加器、状态寄存器、通用寄存器组等,主要作用如下
算数逻辑单元(ALU):进行二位元的算术运算,如加减乘(不包括整数除)、移位等
累加器(accumulator):储存计算产生的中间结果。保证ALU不用将计算结果写入内存
状态寄存器:存放两类信息
1)体现当前指令执行结果的状态信息
2)控制信息
通用寄存器组:可用于传送和暂存数据,也可以参与算术逻辑运算,保存运算结果,通用寄存器组包括以下几类:数据寄存器、变址寄存器、指针寄存器、段寄存器、指令指针寄存器
存储器(memory):存储程序和数据,并能在计算机运行过程中高速、自动地完成从程序或数据的存取,也就是俗称的内存RAM(Random Access Memory)
输入设备(Input):外部设备之一。作用是将程序、原始数据、文字、字符、控制命令或现场采集的数据输入到计算机。常见的输入设备有:键盘、鼠标、磁带机、磁盘机、光盘机等
输出设备(Output):外部设备之一。作用是把计算机的中间结果或最后结果、机内的各种数据及文字等信息输出来。常见的输出设备有:CRT、打印机、绘图仪等
根据冯诺伊曼提出的计算机体系架构,一台计算机主要分为五个部分:控制器、运算器、存储器、输入设备、输出设备
二、软件部分
包括汇编语言、系统软件及应用软件,他们不像硬件一样“有形”,但只有软件硬件互相配合,才是一台标准的计算机组成
各组成的功能。
汇编语言(assembly language):一种用于cpu的低级语言。它使用助记符代替二进制语言,方便人类的阅读及操作。但一种汇编语言只能与相对应的计算机系统结构对应,无法在不同平台移植
系统软件(system software):用来运行或控制硬件所开发的计算机软件,如操作系统、编译器、数据库等等
常见的系统软件包含:
操作系统(Operating system):控制与管理硬件及软件资源,并提供用户操作接口,完成人机交互的软件,常见的有Unix、GNU/Linux、 MAC OS X、Microsoft Windows等
编译器(compiler):将使用汇编语言编写的代码,转换成计算机可识别的机器语言,常见的有GCC
解释器(interpreter):将高级编程语言一行一行解释运行。它的好处是可以消除编译整个程序的负担,缺点则是运行速度比较缓慢,且使用解释器的代码在运行过程中,不可脱离解释器。常见的使用解释器的语言包括Perl、Python、Ruby等
连接器(linker):将由汇编器或编译器产生的目标文件和外部程序库链接为一个可执行文件
加载器(loader):负责将程序加载到内存中,并配置内存与相关参数,使之能够运行
应用软件(application software):为了某种特定用途而被开发的软件。它可以是一个特定的程序,也可以是一个由众多独立程序组成的庞大的软件系统
二、内核功能以及作用
内核是操作系统最基本的部分。它是为众多应用程序提供对计算机硬件的安全访问的一部分软件,这种访问是有限的,并且内核决定一个程序在什么时候对某部分硬件操作多长时间。内核的分类可分为单内核和双内核以及微内核。严格地说,内核并不是计算机系统中必要的组成部分。
Linux的第一个公开版本是1991年10月的0.02版本,两个月以后,在1991年12月,Linux发布了0.11版本,这是第一个可以不依赖于Minix就可以使用的独立内核。
内核结构:
操作系统是一个用来和硬件打交道并为用户程序提供一个有限服务集的低级支撑软件。一个计算机系统是一个硬件和软件的共生体,它们互相依赖,不可分割。计算机的硬件,含有外围设备、处理器、内存、硬盘和其他的电子设备组成计算机的发动机。但是没有软件来操作和控制它,自身是不能工作的。完成这个控制工作的软件就称为操作系统,在Linux的术语中被称为"内核",也可以称为"核心"。Linux内核的主要模块(或组件)分以下几个部分:存储管理、CPU和进程管理、文件系统、设备管理和驱动、网络通信,以及系统的初始化(引导)、系统调用等。
1、进程管理:
内核负责创建和销毁进程, 并处理进程与输入和输出设备的不同进程间的数据处理, 调度器,控制进程如何共享 CPU, 是进程管理的一部分. 更通常地, 内核的进程管理活动实现了多个进程在一个单个或者几个 CPU 之上的抽象.
2、内存管理:
计算机的内存是主要的资源, 处理它所用的策略对系统性能是至关重要的. 内核为所有进程的每一个都在有限的可用资源上建立了一个虚拟地址空间. 内核的不同部分与内存管理子系统通过一套函数调用交互, 从简单的 malloc/free 对到更多更复杂的功能.
3、文件系统:
Unix 在很大程度上基于文件系统的概念; 几乎 Unix 中的任何东西都可看作一个文件. 内核在非结构化的硬件之上建立了一个结构化的文件系统, 结果是文件的抽象非常多地在整个系统中应用. 另外, Linux 支持多个文件系统类型, 就是说, 物理介质上不同的数据组织方式. 例如, 磁盘可被格式化成标准 Linux 的 ext3 文件系统, 普遍使用的 FAT 文件系统, 或者其他几个文件系统.
4、网络功能:
网络必须由操作系统来管理, 因为大部分网络操作不是特定于某一个进程: 进入系统的报文是异步事件. 报文在某一个进程接手之前必须被收集, 识别, 分发. 系统负责在程序和网络接口之间递送数据报文, 它必须根据程序的网络活动来控制程序的执行. 另外, 所有的路由和地址解析问题都在内核中实现.
5、硬件驱动:
几乎每个系统操作最终都映射到一个物理设备上. 除了处理器, 内存和非常少的别的实体之外, 全部中的任何设备控制操作都由特定于要寻址的设备相关的代码来进行. 这些代码称为设备驱动. 内核中必须嵌入系统中出现的每个外设的驱动, 从硬盘驱动到键盘和磁带驱动器. 内核功能的这个方面是本书中的我们主要感兴趣的地方.
三、常见Linux的发行版
什么是Linux
Linux是一种自由和开放源代码的类Unix操作系统。该操作系统的内核由Linus Torvalds于1991年10月5日首次发布。根据其发布的内核(kernel)搭配上GNU上的应用程序,成为了当今世界上运用领域最广泛、使用人数最多的操作系统。通常情况下,Linux被打包成供个人计算机和服务器使用的Linux发行版。
什么是Linux发行版
Linux发行版包含Linux内核和支撑内核的实用程序和库,通常还带有大量可以满足各类需求的应用程序。个人计算机使用的Linux发行版通常包含X Window和一个相应的桌面环境,如GNOME或KDE.
Linux发行版(Linux distribution)是一种为一般用户预先集成好的Linux操作系统及各种应用软件。一般不需要用户重新编译,在直接安装之后,只需要作出小幅度的更改设置即可。Linux发行版通常包含了桌面环境、办公包、媒体播放器、数据库等应用软件。这些操作系统通常使用Linux、以及来自GNU计划的软件、和基于X Window的图形界面组成。
Linux发行版通常分为商业发行版和社区发行版。也有少部分既不属于发行版又不属于社区发行版,其中最有名的是Slackware.
著名的Linux发行版
按照程序包管理器的不同,通常Linux的发行版也被分成了不同的派系。
首先说一下什么是程序包管理器
程序本身是由二进制程序、配置文件、库文件以及帮助文件组成的。有时候我们发现,可能一个程序会有很多文件,非常不利于安装卸载管理,于是,又产生了程序包管理器。
程序包管理器的作用:
– 1)程序的组成文件打包成一个或有限几个文件;
– 2) 安装;
– 3) 卸载;
– 4) 查询;
因此,我们可以划分出如下的谱系
Redhat系
| 名称 | 基于 | 特点 |
| Red Hat Enterprise | RPM管理包 | 红帽的商业版本提供10年服务支持高|
| CentOS | RedHat | 根据RHEL代码编译的社区版文档充足 |
| Fedora | RedHat |红帽官方的社区版RH公司新技术测试平台 |
**Slackware系**
| 名称 | 基于 | 特点 |
| Slackware | SLS | UNIX风格的Linux发行版 KISS(简洁)的设计理念|
| SUSE | Slackware | 界面华丽 照顾欧洲人的使用习惯 |
| opensuse | SUSE |suse的社区版 |
**Debian系**
| 名称 | 基于 | 特点 |
| Debian | Dpkg管理包 | 一直为社区版限制较少功能较多要求技术较高 |
| Adamantix | Debian | 关注安全 |
| Knoppix | Debian |对硬件支持极佳对中日韩环境不够友好 |
| Gnoppix | Knoppix | Knoppix的GNOME版 |
| Ubuntu | Debian | 界面华丽<br>与Debian、GNOME开源社区关系紧密有资金支持 |
| Linux Mint | Ubuntu | Ubuntu的衍生版开箱即用 |
| Ubuntu Kylin | Ubuntu | 中文定制版 |
| BackTrack | Ubuntu | 专业安全检测操作系统已不再维护 |
| Kali Linux | BackTrack | BackTrack替代者安全渗透软件 |
其他
| 名称 | 基于 | 特点 |
| Gentoo | Portage管理包 | 大量程序开放源代码对硬件要求较高|
| ArchLinux | pacman管理包 | 软件更新速度快包管理简易高效 |
| LFS(Linux From scratch) | |高端玩法DIY系统 |
发行版之间的不同
在Linux发行版中,通常均使用软件包管理系统,不同的操作系统,软件包管理系统也不尽相同。比较常见的软件包管理系统有以下几种
– dpkg:一般为Debian系使用,前端管理工具为apt-get
– rpm(The RPM Package Manager):一般为Red Hat系使用,S.u.S.E也有使用,前端工具包含多种:
yum:作为RHEL及CentOS的前端工具
dnf:作为Fedora的前端工具
ZYpper:作为S.u.S.E及opensuse的前端工具
urpmi:作为Mandriva Linux及Mageia的前端工具
四、常见的开源协议(GPL,LGPL, BSD,Apache等)
开源软件的许可证都是基于开源许可协议,世界上有关开源许可证,大概有上百种,最为常见的有(LGPL, Mozilla, GPL, BSD, MIT, Apache等)
GPL:
GNU General Public License的缩写,它和其他的开源协议不一样,在获取源码修改后不允许闭源,新增代码重新发布时要采用GPL开源协议
LGPL:
GNU Lesser General Public License (GNU 宽通用公共许可证)的缩写形式,在GPL协议的基础上发布的更宽松的协议,获取源码修改后可以选择公开一部分源码,来获取开发软件的拥有权
MPL:
The Mozilla Public License的简写,Mozilla小组为其开源软件项目设计的软件许可证。它在获取开源源码中,修改里面的一部分代码后选择提供说明文档,来描述改动的功能。
BSD:
原先是用在加州大学伯克利分校发表的各个版本的许可证(BSD是Berkly Software Distribution的简写)。相较于GPL许可证和MPL许可证的严格性,BSD许可证就宽松许多了,一样是只需要附上许可证的原文,它还要求所有进一步开发者将自己的版权资料放上去,所以拿到以BSD许可证发行的软件可能会遇到一个小状况,就是这些版权资料许可证占的空间比程序还大。
MIT:
许可证之名源自麻省理工学院(Massachusetts Institute of Technology, MIT),是许多软件授权条款中,被广泛使用的其中一种。与其他常见的软件授权条款(如GPL、LGPL、BSD)相比,MIT是相对宽松的软件授权条款,但是赋予软件被授权人更大的权利与更少的限制。
Apache:
Apache License,是一个在Apache软件基金会发布的自由软件许可证,Apache许可证要求被授权者在每一个文件中写入版权申明,以维护开发者的劳动成果。
五、Linux的哲学思想:一切皆文件
把几乎所有资源统统抽象为文件形式,包括硬件设备,甚至通信接口等 比如说:
物理终端:/dev/console
虚拟终端:/dev/tty#(#为1~6)
串行终端:/dev/ttyS#
伪终端:/dev/pts/#
把所有资源抽象成文件,不仅便于理解,且有助于管理。单一目的的小程序,一个程序只做一件事,组合小程序完成复杂任务,复杂的任务由多个程序组合完成,尽量避免跟用户交互,易于以编程的方式实现自动化任务使用文本文件保存配置信息, 文本是最易于实现的底层接口表现形式。通过文本保存,就可以使用文本编辑器实现大多数程序的管理工作提供机制,而非策略 机制,是实现某个功能需要的原语操作和结构策略,是某功能的具体实现提供机制,而非策略,指的就是要给用户充分的自主可调配性。
六、linux目录结构以及目录结构命名规定
在早期的 UNIX 系统中,各个厂家各自定义了自己的 UNIX 系统文件目录,比较混乱。Linux 面世不久后,对文件目录进行了标准化,于1994年对根文件目录做了统一的规范,推出 FHS ( Filesystem Hierarchy Standard ) 的 Linux 文件系统层次结构标准。FHS 标准规定了 Linux 根目录各文件夹的名称及作用,统一了Linux界命名混乱的局面。无论何种版本的 Linux 发行版,桌面、应用是 Linux 的外衣,文件组织、目录结构才是Linux的核心。
FHS:
Filesystem Hierarchy Standard(文件系统层次化标准)的缩写,多数Linux版本采用这种文件组织形式,类似于Windows操作系统中c盘的文件目录,FHS采用树形结构组织文件。FHS定义了系统中每个区域的用途、所需要的最小构成的文件和目录,同时还给出了例外处理与矛盾处理。
中文名 文件系统层次化标准 外文名 Filesystem Hierarchy Standard
结构类型 树形结构组织文件 两层规范 文件数据放置以及子目录定义
查看系统版本号及根目录:
常见目录说明
/ 根目录一切源于此
/etc 存储系统服务程序的静态配置文件
/bin -> usr/bin 所有用户可以使用的系统基本命令,/usr/bin目录的软连接
/sbin -> usr/sbin 存储系统管理命令,/usr/sbin目录的软连接
/home 普通用户的默认家目录路径
/root 系统管理员ROOT的家目录
/boot 存储系统引导分区需要使用的静态文件
/dev 存储特殊文件或设备文件,包括块设备,字符设备,套接字文件等
/lib -> usr/lib 为系统启动或根文件系统上的应用程序(/bin,/sbin)提供共享库,以及为内核提供内核模块
/lib64 -> usr/lib64 64位系统特有的存放64位共享库的路径
/media 便携式设备的临时挂在点,U盘,cdrom
/mnt 其他文件系统的临时挂载点
/opt 附加应用程序的安装位置,可选路径
/srv 当前主机为服务提供的数据
/tmp 存储系统运行时产生的各类临时文件
/usr 全局共享的只读数据路径
/var 存储常发生变化的数据的目录,log
/proc 虚拟的链接内核参数目录,存在于内存中
/sys 虚拟的链接内核参数,统一系统设备模块目录,存在于内存中
/run 存放系统运行时产生的各种各样的数据
更多Linux内核源码高阶知识请加开发交流Q群篇【318652197】获取,进群免费获取相关资料,免费观看公开课技术分享,入群不亏,快来加入我们吧~