Linux学习基础篇--计算机组成,内核功能,常见发行版,开源协议,Linux哲学思想,目录结构

1.计算机的组成及其功能

  1.1硬件系统

        计算机硬件是指构成计算机的物理设备。所有的计算机在基本结构上都是遵循着冯诺依曼体系。
        包括运算器、控制器、存储器、输入设备和输出设备五大部件。
        
        运算器
            运算器的功能是对数据进行各种算术运算和逻辑运算,即对数据进行加工处理。
        控制器
            控制器是整个计算机的中枢神经,其功能是对程序规定的控制信息进行解释,根据其要求进行控制,调度程序、数据、地址,协调计算机各部分工作及内存与外设的访问等。
        存储器
            存储器的功能是存储程序、数据和各种信号、命令等信息,并在需要时提供这些信息。
        
        输入设备与输出设备合你为外部设备,简称外设.
        输入设备
            输入设备的作用是将程序、原始数据、文字、字符、控制命令或现场采集的数据等信息输入到计算机。常见的输入设备有键盘、鼠标器、光电输入机、磁带机、磁盘机、光盘机等。
        输出设备
            输出设备的作用是将外算机的中间结果或最后结果、机内的各种数据符号及文字或各种控制信号等信息输出出来。微机常用的输出设备有显示终端CRT、打印机、激光印字机、绘图仪及磁带、光盘机等。
    

  1.2软件系统

      分为“系统软件”和“应用软件”两大类
        系统软件
            系统软件是指管理、控制和维护计算机及其外部设备,提供用户与计算机之间界面等方面的软件。相于应用软件而言,系统软件离计算机系统的硬件比较近,而离用户关心的问题则远一些,它不专门针对具体的应用问题。
        应用软件
            一般是指那些能直接帮助个人或单位完成具体工作的各种各样的软件,如文字处理软件、计算机辅助设计软件、企业事业单位的信息管理软件以及游戏软件等。应用软件一般不能独立在计算机上运行而必须有系统软件的支持。
       支持应用软件运行的最为基础的—种系统软件就是操作系统。应用软件,特别是各种专用软件包经常是由专门的软件厂商提供的。

2.操作系统内核功能以及作用

    进程管理
   内核负责创建和销毁进程, 并处理它们与外部世界的联系(输入和输出).

    内存管理
     计算机的内存是主要的资源, 处理它所用的策略对系统性能是至关重要的. 内核为所有进程的每一个都在有限的可用资源上建立了一个虚拟地址空间. 

    文件系统 
     几乎 Unix 中的任何东西都可看作一个文件. 内核在非结构化的硬件之上建立了一个结构化的文件系统, 结果是文件的抽象非常多地在整个系统中应用. 另外, Linux 支持多个文件系统类型, 就是说, 物理介质上不同的数据组织方式.
    例如, 磁盘可被格式化成标准 Linux 的 ext3 文件系统, 普遍使用的 FAT 文件系统, 或者其他几个文件系统. 设备控制    几乎每个系统操作最终都映射到一个物理设备上. 除了处理器, 内存和非常少的别的实体之外, 全部中的任何设备控制操作都由特定于要寻址的设备相关的代码来进行. 这些代码称为设备驱动. 内核中必须嵌入系统中出现的每个外设的驱动,
从硬盘驱动到键盘和磁带驱动器.   网络管理  网络必须由操作系统来管理, 因为大部分网络操作不是特定于某一个进程: 进入系统的报文是异步事件. 报文在某一个进程接手之前必须被收集, 识别, 分发. 系统负责在程序和网络接口之间递送数据报文, 它必须根据程序的网络活动来
控制程序的执行. 另外, 所有的路由和地址解析问题都在内核中实现.    安全机制 Linux的内核也提供安全上下文机制管理

3.常见的Linux发行版,其联系与区别

Linux发行版本,从性质上划分,可分为由商业公司维护的商业版本与由开源社区维护的免费发行版本。不同的Linux发行版有不同的特色和目标,其中常见的有:Redhat、Debian、SuSE、Gentoo、Arch Linux等
    Redhat系列——包括RHEL(Redhat Enterprise Linux,也就是所谓的Redhat Advance Server,收费版本)、Fedora Core(由原来的Redhat桌面版本发展而来,免费版本)、CentOS(RHEL的社区克隆版本,免费)等
        Redhat系列的包管理方式采用的是基于RPM包的YUM包管理方式,包分发方式是编译好的二进制文件。稳定性方面RHEL和CentOS的稳定性非常好,适合于服务器使用,但是Fedora Core的稳定性稍差,最好只用于桌面应用。
    Debian系列——包括Debian和Ubuntu。Debian是社区类Linux的典范,是迄今为止最遵循GNU规范的Linux系统。
    SUSE Linux——简称SuSE
    Gentoo——特点Portage包管理系统。不同于APT和YUM等二进制文件分发的包管理系统,Portage是基于源代码分发的,必须编译后才能运行,对于大型软件而言比较慢,不过正因为所有软件都是在本地机器编译的,
在经过各种定制的编译参数优化后,能将机器的硬件性能发挥到极致。Gentoo是所有Linux 发行版本里安装最复杂的,但是又是安装完成后最便于管理的版本,也是在相同硬件环境下运行最快的版本。 Arch Linux ——ArchLinux是一个为那些想了解Linux一切的人准备的发行版,因为你必须手动安装一切,它会让你学会基于Linux的操作系统的每个部分。

4.常见开源协议(GPL,LGPL,BSD,Apache等概念和区别

    GPL:GPL的出发点是代码的开源/免费使用和引用/修改/衍生代码的开源/免费使用,但不允许修改后和衍生的代码做为闭源的商业软件发布和销售。GPL协议的主要内容是只要在一个软件中使用(”使用”指类库引用,修改后的代码或者衍生代码)
GPL 协议
的产品,则该软件产品必须也采用GPL协议,既必须也是开源和免费。这就是所谓的”传染性”。GPL协议的产品作为一个单独的产品使用没有任何问题,还可以享受免费的优势。
         由于GPL严格要求使用了GPL类库的软件产品必须使用GPL协议,对于使用GPL协议的开源代码,商业软件或者对代码有保密要求的部门就不适合集成/采用作为类库和二次开发的基础。
LGPL:LGPL是GPL的一个为主要为类库使用设计的开源协议。和GPL要求任何使用
/修改/衍生之GPL类库的的软件必须采用GPL协议不同。LGPL 允许商业软件通过类库引用(link)方式使用LGPL类库而不需要开源商业软件的代码。
这使得采用LGPL协议的开源代码可以被商业软件作为类库引用并发布和销售。
但是如果修改LGPL协议的代码或者衍生,则所有修改的代码,涉及修改部分的额外代码和衍生的代码都必须采用LGPL协议。因此LGPL协议的开源代码很适合作为第三方类库被商业软件引用,但不适合希望以LGPL协议代码为基础,
通过修改和衍生的方式做二次开发的商业软件采用。
GPL
/LGPL都保障原作者的知识产权,避免有人利用开源代码复制并开发类似的产品
BSD: BSD开源协议是一个给于使用者很大自由的协议。可以自由的使用,修改源代码,也可以将修改后的代码作为开源或者专有软件再发布。 3个要求: 如果再发布的产品中包含源代码,则在源代码中必须带有原来代码中的BSD协议。 如果再发布的只是二进制类库
/软件,则需要在类库/软件的文档和版权声明中包含原来代码中的BSD协议。 不可以用开源代码的作者/机构名字和原来产品的名字做市场推广。 BSD 代码鼓励代码共享,但需要尊重代码作者的著作权。BSD由于允许使用者修改和重新发布代码,也允许使用或在BSD代码上开发商业软件发布和销售,因此是对商业集成很友好的协议。而很多的公司企业在选用开源产品的时候
都首选BSD协议,因为可以完全控制这些第三方的代码,在必要的时候可以修改或者二次开发。
Apache Licence
2.0 该协议和BSD类似,同样鼓励代码共享和尊重原作者的著作权,同样允许代码修改,再发布(作为开源或商业软件)。需要满足的条件也和BSD类似: 需要给代码的用户一份Apache Licence 如果你修改了代码,需要再被修改的文件中说明。 在延伸的代码中(修改和有源代码衍生的代码中)需要带有原来代码中的协议,商标,专利声明和其他原来作者规定需要包含的说明。 如果再发布的产品中包含一个Notice文件,则在Notice文件中需要带有Apache Licence。你可以在Notice中增加自己的许可,但不可以表现为对Apache Licence构成更改。 Apache Licence也是对商业应用友好的许可。使用者也可以在需要的时候修改代码来满足需要并作为开源或商业产品发布/销售。
MIT MIT是和BSD一样宽范的许可协议,作者只想保留版权,而无任何其他了限制.也就是说,你必须在你的发行版里包含原许可协议的声明,无论你是以二进制发布的还是以源代码发布的

5. Linux的哲学思想

    1、一切皆文件

      把几乎所有资源统统抽象为文件形式,包括硬件设备,甚至通信接口等

        open(), read(),write(),close(),delete(),create()

    2、由众多功能单一的程序组成: 一个程序只做一件事,并且做好

     组合小程序完成复杂任务

    3、尽量避免跟用户交互

      目标: 易于以编程的方式实现自动化任务

    4、使用文本文件保存配置信息

6.Linux 目录结构以解目录结构命名规定

/bin: 所有用户可用的基本命令程序文件
/sbin:供系统管理使用的工具程序
/boot:引导加载器必须用到的各静态文件:Kernel,initramfs(initrd),grub等
/dev:存储特殊文件或设备文件
        设备有两种类型:字符设备(线性设备)、块设备(随机设备)
/etc:系统程序的配置文件,只能为静态
/home:普通的家目录的集中位置:一般每隔普通的家目录默认为此/home/USERNAME
/root:管理员的家目录,可选
/lib: 为系统启动或根文件系统上的应用程序(/bin,/sbin等)提供共享库,以及为内核提供内核模块
        libc.so.*:动态链接的C库 
        ld*:运行时链接器/加载器
        modules: 用户存储内核模块的目录
/lib64: 64为系统特有的存放64位共享库的路径
/media:便携式设备挂载点,cdrom,floppy等
/mnt:其他文件系统的临时挂载点
/opt:附加应用程序的安装位置:可选路径
/srv:当前主机为服务提供的数据
/tmp:为那些会产生临时文件的程序提供的用于存储临时文件的目录:可供所用户执行写入操作:有特殊权限
/usr: usr Hierarchy 全局共享的只读数据路径
        bin sbin lib lib64 include(C程序头文件) share(命令手册页和自带文档等架构特有的文件的存储路径) src 程序源码文件存储位置
        /usr/local: 让系统管理员安装本地应用程序:也通常用于安装第三方程序
/var: 存储常发生变化的数据的路径
/proc:
   基于内存的虚拟文件系统,用于为内核及进程存储器相关信息:它们多为内核参数,例如net.ipv4.ip_forward,虚拟为/net/ipv4/ip_forward,存储于/proc/sys下
/sys:
  sysfs虚拟文件系统提供了一种比proc更为理想的访问内核书的途径:其主要作用在于为管理Linux设备提供了一个统一模型的接口

猜你喜欢

转载自www.cnblogs.com/43945616b/p/11487712.html