计算机理论基础及常见概念


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

计算机系统由硬件(Hardware)系统和软件(Software)系统两大部分组成。

1946年数学家冯·诺依曼于提出,计算机硬件(Hardware)系统由运算器、 控制器、存储器、输入设备和输出设备五大部分组成。其中,中央处理器CPU(运算器和控制器)和内部存储器(ROM和RAM)是计算机的主要部件。输入输出设备和外部存储器为外部设备。

中央处理器CPU----负责程序控制并运算、各硬件间协调,寄存器是锁存,保留运算时的数据,多级缓存来弥补与内存的时延。

内存是有编址的存储单元,存储器中的每一个存储空间用地址来识别。CPU的字长决定了内存的可寻址范围。

外部设备中,外部设备通常为硬盘可以在掉电情况下静态保存数据,当有读取操作时再加载至内存进行运行或处理。输入设备一般为键盘设备扫描仪等,输出设备一般为显示器等。

软件(Software)系统由系统软件和应用软件组成。系统软件包括操作系统、数据库管理系统等。系统软件并不提供和完成具体的应用工作,只是提供一个统一管理平台。具体应用是由应用软件提供。

2、内核功能以及作用

统一接管硬件控制权,并统一对系统资源进行隔离、监控、调度。

屏蔽底层硬件操作的复杂性,把底层硬件功能操作(微码编程及汇编)抽象为系统调用提供给程序员使用。

内核的作用:硬件驱动 进程管理 内存管理 网络管理 安全管理 文件管理

3、常见Linux的发行版,不同发行版之间的联系与区别。


slackware:SUSE Linux Enterprise Server (SLES) OpenSuse桌面

debian: ubuntu,mint

redhat: RHEL: RedHat Enterprise Linux 每18个月发行一个新版本。 CentOS:兼容RHEL的格式 Fedora:每6个月发行一个新版本

ArchLinux:轻量简洁

Gentoo:极致性能,不提供传统意义的安装程序,有些需要编译安装

LFS: Linux From scratch 自制Linux

Linux kernel + busybox + java + android

按用途大致分为桌面版和企业版:

桌面版: 

FreeBSD、Ubuntu、Mint、Fedora、openSUSE等。由于安装了图像界面,界面美观、操作方便,比较适合新手,但相对于企业版来说较消耗资源。

企业版: 

RHEL、CentOS、Debian、Ubuntu、SLES、NetBSD等。系统稳定性好,资源消耗较小,满足企业需求,但基本都是命令行界面,需要有一定的基础才能上手操作。

按照维护方式分为两类,一类是商业公司维护的发行版本,一类是社区组织维护的发行版本,前者以著名的Redhat(RHEL)为代表,后者以Debian为代表。

商业公司维护: RHEL、CentOS、SLES等

社区组织维护: Debian、Ubuntu等

4、常见的开源协议(GPL,LGPL, BSD,Apache等)以及开源协议的区别

BSD和Apache相比GPL和LGPL更为宽松,以下为这几种协议的说明。

BSD开源协议(original BSD license、FreeBSD license、Original BSD license)

BSD开源协议是一个给于使用者很大自由的协议。基本上使用者可以”为所欲为”,可以自由

的使用,修改源代码,也可以将修改后的代码作为开源或者专有软件再发布。

但”为所欲为”的前提当你发布使用了BSD协议的代码,或则以BSD协议代码为基础做二次开

发自己的产品时,需要满足三个条件:

如果再发布的产品中包含源代码,则在源代码中必须带有原来代码中的BSD协议。如果再发布

的只是二进制类库/软件,则需要在类库/软件的文档和版权声明中包含原来代码中的BSD协议。

不可以用开源代码的作者/机构名字和原来产品的名字做市场推广。

BSD代码鼓励代码共享,但需要尊重代码作者的著作权。BSD由于允许使用者修改和重新发布

代码,也允许使用或在BSD代码上开发商业软件发布和销售,因此是对商业集成很友好的协议。而

很多的公司企业在选用开源产品的时候都首选BSD协议,因为可以完全控制这些第三方的代码,在

必要的时候可以修改或者二次开发。

Apache Licence 2.0(Apache License, Version 2.0、Apache License, Version

ASF:Apache Software Foundation

Apache Licence是著名的非盈利开源组织Apache采用的协议。该协议和BSD类似,同样

鼓励代码共享和尊重原作者的著作权,同样允许代码修改,再发布(作为开源或商业软件)。需要满足

的条件也和BSD类似:

需要给代码的用户一份Apache Licence,如果你修改了代码,需要在被修改的文件中说明。

在延伸的代码中(修改和有源代码衍生的代码中)需要带有原来代码中的协议,商标,专利声明和其他

原来作者规定需要包含的说明。

如果再发布的产品中包含一个Notice文件,则在Notice文件中需要带有Apache Licence。

你可以在Notice中增加自己的许可,但不可以表现为对Apache Licence构成更改。

Apache Licence也是对商业应用友好的许可。使用者也可以在需要的时候修改代码来满足需

要并作为开源或商业产品发布/销售。

GPL(GNU General Public License)

属于FSF:Free Software Foundation 自由软件基金会。我们很熟悉的Linux就是采用了GPL。GPL协议和BSD,Apache Licence等鼓励代码重用的

许可很不一样。GPL的出发点是代码的开源/免费使用和引用/修改/衍生代码的开源/免费使用,但

不允许修改后和衍生的代码做为闭源的商业软件发布和销售。这也就是为什么我们能用免费的各种

linux,包括商业公司的linux和linux上各种各样的由个人,组织,以及商业软件公司开发的免费软

件了。

GPL协议的主要内容是只要在一个软件中使用(”使用”指类库引用,修改后的代码或者衍生代

码)GPL协议的产品,则该软件产品必须也采用GPL协议,既必须也是开源和免费。这就是所谓的

”传染性”。GPL协议的产品作为一个单独的产品使用没有任何问题,还可以享受免费的优势。

由于GPL严格要求使用了GPL类库的软件产品必须使用GPL协议,对于使用GPL协议的开源

代码,商业软件或者对代码有保密要求的部门就不适合集成/采用作为类库和二次开发的基础。

其它细节如再发布的时候需要伴随GPL协议等和BSD/Apache等类似。

LGPL(GNU Lesser General Public License)

属于FSF:Free Software Foundation 自由软件基金会。LGPL是GPL的一个为主要为类库使用设计的开源协议。和GPL要求任何使用/修改/衍生之

GPL类库的的软件必须采用GPL协议不同。LGPL允许商业软件通过类库引用(link)方式使用LGPL

类库而不需要开源商业软件的代码。这使得采用LGPL协议的开源代码可以被商业软件作为类库引用

并发布和销售。

但是如果修改LGPL协议的代码或者衍生,则所有修改的代码,涉及修改部分的额外代码和衍生

的代码都必须采用LGPL协议。因此LGPL协议的开源代码很适合作为第三方类库被商业软件引用,

但不适合希望以LGPL协议代码为基础,通过修改和衍生的方式做二次开发的商业软件采用。

GPL/LGPL都保障原作者的知识产权,避免有人利用开源代码复制并开发类似的产品

5、Linux的哲学思想。

一切皆文件(包括硬件)程序要能处理文本流,因为这是最通用的接口。

一个程序只做一件事,并做好,程序要能协作,通过多个小程序完成复杂功能。

尽量避免跟用户交互,没有消息才是最好的消息,并易于以编程的方式实现自动化任务。

使用文本文件保存配置信息。

6、linux目录结构以及目录结构命名规定。

文件系统层次结构标准(Filesystem Hierarchy Standard)定义了Linux操作系统中的主要目录及目录内容。FHS由Linux基金会维护。 当前版本为3.0版,于2015年发布。多数Linux发行版遵从FHS标准并且声明其自身政策以维护FHS的要求。

/bin:所有用户可用的基本命令程序文件(包括管理员和能登陆的普通用户);

/sbin:供系统管理使用的工具程序;

/boot:引导加载器必须用到的各静态文件:kernel, initramfs(initrd), grub等;

/dev:存储特殊文件或设备文件(如:块设备和字符设备)设备有两种类型:字符设备(线性设备)、块设备(随机设备);

/etc:系统程序的配置文件,只能为静态;

/home:普通的家目录的集中位置;一般每个普通用户的家目录默认为此目录下与用户名同名的子目录,/home/USERNAME;

/root:管理员的家目录;可选;

/lib:为系统启动或根文件系统上的应用程序(/bin, /sbin等)提供共享库,以及为内核提供内核模块

        libc.so.*:动态链接的C库;The dynamically-linked C library (optional)

        ld*:运行时链接器/加载器;The execution time linker/loader (optional)

        modules:用于存储内核模块的目录;Loadable kernel modules (optional)

/lib64:64位系统特有的存放64位共享库的路径;

/media:便携式设备挂载点,cdrom, floppy等;

/mnt:其它文件系统的临时挂载点;

/opt:附加应用程序的安装位置;可选路径;

/srv:当前主机为服务提供的数据;

/tmp:为那些会产生临时文件的程序提供的用于存储临时文件的目录;可供所用户执行写入操作;有特殊权限;

/usr:usr Hierarchy, /usr is shareable, read-only data 全局共享的只读数据路径;

Locally installed software must be placed within /usr/local rather than /usr unless it is being installed to replace or upgrade software in /usr.

bin, sbin

lib, lib64

include:C程序头文件;

share:命令手册页和自带文档等架构特有的文件的存储位置

local:另一个层级目录;

X11R6:X-Window程序的安装位置

src:程序源码文件的存储位置

/usr/local:Local hierarchy,让系统管理员安装本地应用程序;也通常用于安装第三方程序;

/var:/var Hierarchy,存储常发生变化的数据的目录;

        cache:Application cache data 应用程序缓存数据。

        lib: Variable state information 状态信息。 由程序在运行时维护的持久性数据。 例如:数据库

        local:Variable data for /usr/local /usr/local下的动态可变数据

        lock:Lock files 锁文件,一类跟踪当前使用中资源的文件。

        log: Log files and directories 日志文件,包含大量日志文件。

        opt: Variable data for /opt   /opt/目录下的动态可变数据

        run: Data relevant to running processes 自最后一次启动以来运行中的系统的信息,例如:当前登录的用户和运行中的守护进程。

        spool:Application spool data 等待处理的任务的脱机文件,例如:打印队列和未读的邮件。

        tmp:Temporary files preserved between system reboots 在系统重启过程中可以保留的临时文件。

/proc:基于内存的虚拟文件系统,用于为内核及进程存储其相关信息;它们多为内核参数,例如net.ipv4.ip_forward, 虚拟为net/ipv4/ip_forward, 存储于/proc/sys/, 因此其完整路径为/proc/sys/net/ipv4/ip_forward;

Kernel and process information virtual filesystem

/sys:sysfs虚拟文件系统提供了一种比proc更为理想的访问内核数据的途径;其主要作用在于为管理Linux设备提供一种统一模型管理接口之用;

2.6内核之前没有sys

参考:https://www.ibm.com/developerworks/cn/linux/l-cn-sysfs/

你可能感兴趣的:(计算机理论基础及常见概念)