本文共 6397 字,大约阅读时间需要 21 分钟。
一、计算机的组成及其功能。
计算机由以下四部分组成:1、中央处理器(CPU),CPU又由运算器和控制器构成CPU的功能主要是解释计算机指令以及处理计算机软件中的数据。控制器(Control):是整个计算机的中枢神经,其功能是对程序规定的控制信息进行解释,根据其要求进行控制,调度程序、数据、地址,协调计算机各部分工作及内存与外设的访问等。运算器(Datapath):运算器的功能是对数据进行各种算术运算和逻辑运算,即对数据进行加工处理。2、存储器(Memory):存储器的功能是存储程序、数据和各种信号、命令等信息,并在需要时提供这些信息。例如计算机的内存。
3、输入设备(Input system):输入设备是计算机的重要组成部分,输入设备与输出设备合称为外部设备,简称外设,输入设备的作用是将程序、原始数据、文字、字符、控制命令或现场采集的数据等信息输入到计算机。常见的输入设备有键盘、鼠标器、光电输入机、磁带机、磁盘机、光盘机等。
4、输出设备(Output system):输出设备与输入设备同样是计算机的重要组成部分,它把外算机的中间结果或最后结果、机内的各种数据符号及文字或各种控制信号等信息输出出来。微机常用的输出设备有显示器、打印机、激光印字机、绘图仪及磁带、光盘机等。
二、内核功能以及作用
完整的操作系统(OS)由kernel(内核)加Application(应用程序)组成
狭义的OS就指内核(kernel),内核的作用如下:内核将硬件封装,硬件规格被隐藏起来内核将硬件的接口抽象成为系统调用1、进程管理 内核负责创建和销毁进程, 并处理它们与外部世界的联系(输入和输出). 不同进程间通讯(通过信号, 管道, 或者进程间通讯原语)对整个系统功能来说是基本的, 也由内核处理. 另外, 调度器, 控制进程如何共享 CPU, 是进程管理的一部分. 更通常地, 内核的进程管理活动实现了多个进程在一个单个或者几个 CPU 之上的抽象.2、内存管理 计算机的内存是主要的资源, 处理它所用的策略对系统性能是至关重要的. 内核为所有进程的每一个都在有限的可用资源上建立了一个虚拟地址空间. 内核的不同部分与内存管理子系统通过一套函数调用交互, 从简单的 malloc/free 对到更多更复杂的功能.3、文件系统 Unix 在很大程度上基于文件系统的概念; 几乎 Unix 中的任何东西都可看作一个文件. 内核在非结构化的硬件之上建立了一个结构化的文件系统, 结果是文件的抽象非常多地在整个系统中应用. 另外, Linux 支持多个文件系统类型, 就是说, 物理介质上不同的数据组织方式. 例如, 磁盘可被格式化成标准 Linux 的 ext3 文件系统, 普遍使用的 FAT 文件系统, 或者其他几个文件系统.4、设备控制(驱动程序) 几乎每个系统操作最终都映射到一个物理设备上. 除了处理器, 内存和非常少的别的实体之外, 全部中的任何设备控制操作都由特定于要寻址的设备相关的代码来进行. 这些代码称为设备驱动. 内核中必须嵌入系统中出现的每个外设的驱动, 从硬盘驱动到键盘和磁带驱动器. 5、网络功能 网络必须由操作系统来管理, 因为大部分网络操作不是特定于某一个进程: 进入系统的报文是异步事件. 报文在某一个进程接手之前必须被收集, 识别, 分发. 系统负责在程序和网络接口之间递送数据报文, 它必须根据程序的网络活动来控制程序的执行. 另外, 所有的路由和地址解析问题都在内核中实现.三、常见Linux的发行版,不同发行版之间的联系与区别。
主流发行版如下1.Debian 它的分支:Ubuntu->mint\ubuntu: 基于Debian二次开发的开源Linux操作系统,主要针对桌面和服务器。mint:是基于ubuntu的Linux发行版,致力于桌面系统,对个人用户来说更加的美观和高效。2.Slackware 它的分支:S.u.S.E->SLES,OpenSUSE
S.u.S.E: 是基于slackware二次开发的一款Linux,也是针对于商业桌面、服务器。SLES:企业服务器操作系统,可以和微软的系统互相兼容。OpenSuSE:由S.u.S.E发展而来,主要用于桌面环境,用户界面非常的华丽,性能良好。3.RedHat 它的分支RedHat 9.0-> RedHat Enterprise Linux:RHEL->CentOS:Community Enterprise OS ;FedoraRHEL:RedHat公司发布面向企业的Linux操作系统。CentOS:基于RedHat提供的可自由使用源代码的Linux版本,相当于RHEL的山寨版,主要是开源、免费,特有的社区文化促进CentOS不断发展完善,其本质内容上和RHEL没有什么区别Fedora:可以看做是RedHat方面的一个测试版本,主要是针对新的技术测试提供一个系统平台,而且版本更新迭代非常的快。4.Gentoo:基于linux的自由操作系统,它能为几乎任何应用程序或需求自动地作出优化和定制。追求极限的配置、性能,以及顶尖的用户和开发者社区,都是Gentoo体验的标志特点,尤其非常喜欢使用Gentoo的系统版本。5.ArchLinux :以轻量简洁为设计理念的Linux发行版。其开发团队秉承简洁、优雅和代码最小化的设计宗旨。 发行版之间的联系与区别联系:所有的版本型号,无论是何种系统均采用的是Linux的内核,都需要遵循GNU的GPL协定,也就是通俗意义上的GNU/Linux。区别:不同的发行版系统各自的版本号均不同都有自己独特的版本号信息例如:RHEL:5.x,6.x,7.xFedora 23Debian:8.xOpenSuSE:13.x同时虽然底层Linux内核一样,但封装后携带的库以及应用程序各不相同,不同的包管理器(SLES、Fedora、openSUSE、centos、RHEL使用rmp包管理系统,包文件以RPM为扩展名;Ubuntu系列,Debian系列使用基于DPKG包管理系统,包文件以deb为扩展名。)Debian: dpkg程序包管理器,前端管理工具 apt-get Ubuntu继承了这个管理法则) 包格式debReadHat: rpm管理包, 前端管理工具yum-->新一代叫dnf CentOS继承 包格式rpmS.u.S.E: rpm,zypper四、常见的开源协议(GPL,LGPL, BSD,Apache等)以及开源协议的区别
GPL(GNU通用公共许可证): General Public License大多数软件许可证决意剥夺你共享和修改软件的自由。相比之下,GNU通用公共许可证试图保证你共享和修改自由软件的自由。——保证自由软件对所有用户是自由的为了保护你的权利,我们需要作出规定:禁止任何人不承认你的权利,或者要求你放弃这些权利。如果你修改了自由软件或者发布了软件的副本,这些规定就转化为你的责任。例如,如果你发布这样一个程序的副本,不管是收费的还是免费的,你必须将你具有的一切权利给予你的接受者;你必须保证他们能收到或得到源程序;并且将这些条款给他们看,使他们知道他们有这样的权利。LGPL: Lesser GPL
任何程序员在写程序时 调用了库接口不用开源 。BSD许可协议(Berkeley Software Distribution license)是自由软件中使用最广泛的许可协议之一
1、如果二次发布的产品中包含源代码,则在源代码中必须带有原来的代码中的BSD协定;2、如果二次发布产品是二进制格式的库或程序,则需要在发布的文档或版权声明中说明包含原来的代码中的BSD协定;3、不可以用开源代码的作者或组织,以及原来的产品的名字做市场推广;跟其他条款相比,从GNU通用公共许可证(GPL)到限制重重的著作权(Copyright),BSD许可证比较宽松,甚至跟公有领域更为接近。BSD许可证被认为是copycenter(中间著作权),介乎标准的copyright与GPL的copyleft之间。GPL强迫后续版本必须一样是自由软件,BSD的后续版本可以选择要继续是BSD或其他自由软件条款或封闭软件等等。许可证文本被认为遵循公有领域,所以可以不受限制地修改。遵守BSD License的软件,允许用作商业用途,甚至可按照专属许可证进行再发布。自由软件作者可以方便地采用BSD许可证下的软件,从而跟GPL下的作品融合。BSD许可证并不允许受让方将其删除或替换为其他许可证。以BSD许可证授权的软件派生著作,都必须要包含一段文字以交代源代码的来源。GNU工程将这个称为“令人感到不舒服的BSD交代条款”(obnoxious BSD advertising clause)。Apache(协定): Apache Software Foundatin Apache软件组织基金会
Apache许可证(Apache License),是一个由Apache软件基金会发布的自由软件许可证,最初为Apache http服务器而撰写。Apache许可证要求被授权者保留著作权和放弃权利的声明,但它不是一个反著作权的许可证。Apache许可证是宽容的,因为它不会强制派生和修改产物使用相同的许可证进行发布(与一些著作权许可证不同,参见比较)。但它仍然要求对所有未修改的部分应用相同的许可证,并且在每个许可文件中,必须保留再分发代码中的任何原始著作权,专利,商标和归属通知(不需要包括任何部分的派生作品);并且在每个更改的许可文件中,都必须添加一条通知,说明对该文件进行了更改。如果声明文本文件作为原始作品发布的一部分包含在内,则派生作品必须在包含该通知文本文件的可读副本,可以是文档或显示在软件中。
声明文件的内容不会修改许可证,因为它们仅用于提供信息,并且可以在许可证文本中添加更多属性声明,前提是这些声明不能被理解为修改许可证。修改可能有适当的著作权声明,并可能为修改提供不同的许可条款。
除非另有明确规定,否则许可证持有者向授权者提交的任何文稿将根据许可证的条款进行,没有任何条款和条件,但这并不排除与授权者有关的这些贡献有单独的协议。
Apache软件基金会与自由软件基金会都同意Apache许可证属于自由软件许可证,且兼容于第三版的GNU通用公共许可证,不过,双方也都同意,第一版与第二版的GNU通用公共许可证并不兼容于Apache许可证。五、Linux的哲学思想
1、一切皆文件:把几乎所有的资源统统抽象为文件形式;包括硬件设备,甚至通信接口等;open(),read(),Write(),close(),delete(),create()硬件设备也可通过文件表示:物理终端:/dev/console虚拟终端:/dev/tty# [1-6] #表示数字1到6之间串行终端:/dev/ttyS#伪终端:/dev/pts/#2、由众多功能单一的程序组成;一个程序只做一件事,并且做好;组合小程序完成复杂任务;3、尽量避免跟用户交互;目标:易于以编程的方式实现自动化任务;4、使用文本文件保存配置信息;六、linux目录结构以及目录结构命名规定
目录结构是为了将众多的文件有效的组织起来Linux目录是一个倒置树状结构目录:路径映射;文件:存储空间存储的一旦流式数据,对数据可以做到按名存取(有边界的磁盘上的一段数据流);文件系统:层级结构,有索引;/:原初起点,根,根目录;/ 第二层结构(子目录)/第三层结构examlple/dev/pst/2:最左侧/:表示根目录其它的/:表示路径分隔符Linux的路径分隔符是/(windows的路径分隔符是\)文件的路径表示:绝对路径:从根开始表示出的路径相对路径:从当前位置开始表示出的路径文件名使用法则:
1.严格区分字符大小写:file1,File1,FILE1都不是同一个文件2.目录也是文件,在同一路径下,两个文件不能同名,linux下的文件目录和文件名不能同名(一切皆文件)3.支持使用除/以外的任意字符;4.最长不能超过255个字符;用户有家目录:home,
用户的起始目录:普通用户管理文件的位置工作目录:
/etc/sysconfig/network-scripts/ifcfg-ens33
basename:最右侧的文件或目录; (基名)dirname: basename左侧的路径: (目录名)命令:~]# basename /PATH/TO/SOMEFILESOMEFILE~]# dirname /PATH/TO/SOMEFELE/PATH/TO参考资料
| 目录/文件 | 用途 | 来源 || / | /处于Linux文件系统树形结构的最顶端,它是Linux文件系统的入口 | 所有的目录、文件、设备都在/之下 |
| /bin | 该目录存放着系统最常用的最重要的命令 ,是以独立的文件形式存在 | 这个目录中的文件都是可执行的并且是普通用户都可以使用的命令 ,作为系统最基础的命令都放在这里 | binary |
| /usr | 该目录是系统存放程序的地方,比如普通命令、帮助文件、安装的软件等,当我们安装一个Linux发行版官方提供的软件包时,大多安装在这里 | /usr目录下包括涉及字体目录/usr/share/fonts、帮助目录/usr/share/man或/usr/share/doc等 | unix shared resource |
| /var | 该目录的内容是经常变动的 | /var下有/var/log目录用来存放系统日志的目录,/var/www目录用来定义Apache服务器站点存放目录,/var/lib用来存放一些库文件 | variable |
| /sbin | 大多数涉及系统管理的命令都存放在该目录中,它是超级权限用户root的可执行命令存放地 | 凡是目录sbin中包含的命令都是root权限才能执行的 | super user binary |
| /root | Linux超级权限用户(系统管理员)root的主目录 |
| /home | 普通用户的主目录都默认存放在该目录中 |
| /etc | 该目录是系统配置文件的所在地 | 一些服务器的配置文件也在这里 | etcetera |
| /dev | 设备文件存储目录 | 该目录下是所有Linux的外部设备文件 | device |
| /boot | 存放Linux的内核及引导系统的程序所需要的文件 |
| /opt | 该目录是可选的软件包安装目录 | optional |
| /tmp | 该目录用于存放临时文件 | temporary |
| /lib | 该目录用于存放库文件 | 这个目录里存放着系统最基本的共享库 | library |
| /mnt | 该目录是用于存放挂载储存设备的挂载目录的 | mount |
| /proc | 操作系统运行时进程(正在运行中的程序)信息及内核信息(比如cpu、硬盘分区、内存信息等)存放处 | /proc目录是伪装的文件系统proc的挂载目录,我们可以通过直接访问这个目录来获取系统信息 | process |
转载于:https://blog.51cto.com/5373107/2367755