Linux从入门到放弃、零基础入门Linux(第一篇):计算机操作系统简介、linux介绍

一、计算机操作系统简介

操作系统的定义:

操作系统是一个用来协调、管理和控制计算机硬件和软件资源的系统程序,它位于硬件和应用程序之间。

操作系统的内核的定义:

操作系统的内核是一个管理和控制程序,负责管理计算机的所有物理资源

其中包括文件系统、内存管理、设备管理和进程管理。

操作系统、硬件、软件的关系

操作系统=所有驱动+对驱动的管理+为应用软件提供可以使用的接口

内核=所有驱动

驱动组成:字符设备(串口)、块设备(u盘)、网络设备

内核是整个操作系统的最底层,它负责整个硬件的驱动,以及提供各种系统所需的核心功能。

Linux从入门到放弃、零基础入门Linux(第一篇):计算机操作系统简介、linux介绍

Linux从入门到放弃、零基础入门Linux(第一篇):计算机操作系统简介、linux介绍

Linux从入门到放弃、零基础入门Linux(第一篇):计算机操作系统简介、linux介绍

Linux从入门到放弃、零基础入门Linux(第一篇):计算机操作系统简介、linux介绍

Linux历史及使用场景

Linux诞生90年代,仿制Unix操作系统。

Linux是免费的,开源的

Unix是收费的,封闭的。

Linux在逐步替代Unix。

Linux使用场景:服务器操作系统,移动设备(安卓底层就是linux,平板电脑),路由器(WIFI),交换机,智能家居,Java程序开发

Linux主要发行版:

CENTOS、RHEL、FEDORA、UBUNTU、SUSE

Linux内核版本:Linux内核运维开发小组,源码在一定程度上不是开源的。

Linux发行版本:由各大互联网/软件公司定制。外围的样式功能的源码完全开源。一个内核版本是有多种多样的发行版本。

Ubuntu:以强大的桌面应用为主,吸收不少Windows用户。 因为桌面应用会在一定程度上大量占用系统资源,开发。服务器部署上,不会优先选择Ubuntu。

CentOS:对服务器性能进行了一定程度的优化,性能比较高,比较稳定。

服务器操作系统的优选CentOS

 

linux不同发行版本的历史(了解补充知识)

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

Linux从入门到放弃、零基础入门Linux(第一篇):计算机操作系统简介、linux介绍

Linux从入门到放弃、零基础入门Linux(第一篇):计算机操作系统简介、linux介绍

 

下面介绍一下各个发行版本的特点:

Redhat,应该称为Redhat系列,包括RHEL(Red Hat Enterprise Linux,也就是所谓的Redhat Advance Server,收费版本)、Fedora Core(由原来的Redhat桌面版本发展而来,免费版本)、CentOS(RHEL的社区克隆版本,免费)。Redhat应该说是在国内使用人群最多 的Linux版本,这个版本的特点就是使用人群数量大,资料非 常多,言下之意就是如果你有什么不明白的地方,很容易找到人来问,而且网上的一般Linux教程都是以Redhat为例来讲解的。Redhat系列的包管 理方式采用的是基于RPM包的YUM包管理方式,包分发方式是编译好的二进制文件。稳定性方面RHEL和CentOS的稳定性非常好,适合于服务器使用, 但是Fedora Core的稳定性较差,最好只用于桌面应用。

Debian,或者称Debian系列,包括Debian和Ubuntu等。Debian是社区类Linux的典范,是迄今为止最遵循GNU规范 的Linux系统。Debian最早由Ian Murdock于1993年创建,分为三个版本分支(branch): stable, testing 和 unstable。其中,unstable为最新的测试版本,其中包括最新的软件包,但是也有相对较多的bug,适合桌面用户。testing的版本都经 过unstable中的测试,相对较为稳定,也支持了不少新技术(比如SMP等)。而stable一般只用于服务器,上面的软件包大部分都比较过时,但是 稳定和安全性都非常的高。Debian最具特色的是apt-get / dpkg包管理方式,其实Redhat的YUM也是在模仿Debian的APT方式,但在二进制文件发行方式中,APT应该是最好的了。Debian的资 料也很丰富,有很多支持的社区,有问题求教也有地方可去。

 

Ubuntu严格来说不能算一个独立的发行版本,Ubuntu是基于Debian的unstable版本加强而来,可以这么说,Ubuntu就是 一个拥有Debian所有的优点,以及自己所加强的优点的近乎完美的 Linux桌面系统。根据选择的桌面系统不同,有三个版本可供选择,基于Gnome的Ubuntu,基于KDE的Kubuntu以及基于Xfc的 Xubuntu。特点是界面非常友好,容易上手,对硬件的支持非常全面,是最适合做桌面系统的Linux发行版本。

 

Linux发行版 (列表)

基于Debian

▪ Debian ▪ Ubuntu ▪ Linux Mint

▪ Knoppix ▪ MEPIS ▪ sidux

▪ CrunchBang Linux ▪ Chromium OS ▪ Google Chrome OS

基于Red Hat

▪ Red Hat Enterprise Linux ▪ Fedora ▪ CentOS

▪ Scientific Linux ▪ Oracle Linux

基于Mandriva

▪ Mandriva Linux ▪ PCLinuxOS ▪ Unity Linux

▪ Mageia

基于Gentoo

▪ Gentoo Linux ▪ Sabayon Linux ▪ Calculate Linux

▪ Funtoo Linux

基于Slackware

▪ Slackware ▪ Zenwalk ▪ VectorLinux

其它

▪ SUSE ▪ Arch Linux ▪ Puppy Linux

▪ Damn Small Linux ▪ MeeGo ▪ Slitaz

▪ Tizen ▪ StartOS

 

 

二、*软件-GNU和GPL

*软件:根据*软件基金会的定义,*软件是一种可以不受限制地*使用、复制、研究、修改和分发的软件。可以买卖。这方面的不受限制正是*软件最重要的本质。 要将软件以*软件的形式发表,通常是让软件以“*软件授权协议”的方式被分配发布,以及公开的软件原始码。

GUN

GNU:是“GNU is Not Unix”的递归缩写。即GNU计划。

GPL

GPL是是一个广泛被使用的*软件许可协议条款。

GPL协议的主要内容是只要在一个软件中使用(”使用”指类库引用,修改后的代码或者衍生代码)GPL 协议的产品,则该软件产品必须也采用GPL协议,既必须也是开源和免费。这就是所谓的”传染性”。

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

由于GPL严格要求使用了GPL类库的软件产品必须使用GPL协议,对于使用GPL协议的开源代码,商业软件或者对代码有保密要求的部门就不适合集成/采用作为类库和二次开发的基础。

 

简单来讲执行GPL协议的软件有下面几个特点(基于GPLv2)

1、软件可以*的使用、复制、修改,

2、软件可以*的发行复制件,

3、软件可以被修改,然后再次发行,但必须公开源代码,即能够看到修改的部分代码,

不允许修改后和衍生的代码做为闭源(不公开代码)的商业软件发布和销售,不能对该源代码的使用作出限定。

4、GPL的出发点是代码的开源/免费使用和引用/修改/衍生代码的开源/免费使用。

著名的GPL*软件包括Linux核心和GCC。

 

GUN和GPL历史小知识

GNU 是一个计划或者叫运动。在这个旗帜下成立了 FSF基金会,起草了 GPL 协议等。 Unix 系统被发明之后,大家用的很爽。但是后来开始收费和商业闭源了。一个叫Richard Stallman (理查德 · 斯托曼)的大叔觉得很不爽,于是发起 GNU 计划,模仿 Unix 的界面和使用方式,从头做一个开源的版本。然后他自己做了编辑器 Emacs 和编译器 GCC。

接下来大家纷纷在 GNU 计划下做了很多的工作和项目,基本实现了当初的计划。包括核心的 gcc 和 glibc。但是 GNU 系统缺少操作系统内核。原定的内核叫 HURD,一直完不成。同时 BSD(一种 UNIX 发行版)陷入版权纠纷,x86 平台开发暂停。然后一个叫 Linus Torvalds (林纳斯·托瓦兹)的同学为了在 PC 上运行 Unix,在 Minix 的启发下,开发了 Linux。注意,Linux 只是一个系统内核,系统启动之后使用的仍然是 gcc 和 bash 等软件。Linus 在发布 Linux 的时候选择了 GPL,因此符合 GNU 的宗旨。

最后,大家突然发现,这玩意不正好是 GNU 计划缺的么。于是合在一起打包发布叫 GNU / Linux。然后大家念着念着省掉了前面部分,变成了 Linux 系统。实际上 Debian,RedHat 等 Linux 发行版中内核只占了很小一部分容量。

 

参考资料

[1]https://www.cnblogs.com/qiu-freedom/articles/10799732.html

[2]https://www.zhihu.com/question/319783573/answer/656033035

 

上一篇:c – 如何在编译时静态比较两个字符串


下一篇:Linux系统简介