一、计算机操作系统简介

操作系统的定义:

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

操作系统的内核的定义:

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

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

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

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

内核=所有驱动

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

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

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为代表。

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

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

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

  1. 图形用户界面入门:EasyGui - 零基础入门学习Python035

    图形用户界面入门:EasyGui 让编程改变世界 Change the world by program 今天我们来谈谈图形用户界面编程,也就是我们常说的GUI(Graphical User Inte ...

  2. Linux从入门到放弃、零基础入门Linux(第四篇):在虚拟机vmware中安装centos7.7

    如果是新手,建议安装带图形化界面的centos,这里以安装centos7.7的64位为例 一.下载系统镜像 镜像文件下载链接https://wiki.centos.org/Download 阿里云官网 ...

  3. Linux从入门到放弃、零基础入门Linux(第三篇):在虚拟机vmware中安装linux(二)超详细手把手教你安装centos6分步图解

    一.继续在vmware中安装centos6.9 本次安装是进行最小化安装,即没有图形化界面的安装,如果是新手,建议安装带图形化界面的centos, 具体参考Linux从入门到放弃.零基础入门Linux ...

  4. Linux及Arm-Linux程序开发笔记(零基础入门篇)

    Linux及Arm-Linux程序开发笔记(零基础入门篇)  作者:一点一滴的Beer http://beer.cnblogs.com/ 本文地址:http://www.cnblogs.com/bee ...

  5. 【Linux开发】Linux及Arm-Linux程序开发笔记(零基础入门篇)

    Linux及Arm-Linux程序开发笔记(零基础入门篇) 作者:一点一滴的Beer http://beer.cnblogs.com/ 本文地址:http://www.cnblogs.com/beer ...

  6. Cloudera Manager、CDH零基础入门、线路指导 http://www.aboutyun.com/thread-9219-1-1.html (出处: about云开发)

    Cloudera Manager.CDH零基础入门.线路指导http://www.aboutyun.com/thread-9219-1-1.html(出处: about云开发) 问题导读:1.什么是c ...

  7. 《零基础入门学习Python》【第一版】视频课后答案第001讲

    测试题答案: 0. Python 是什么类型的语言? Python是脚本语言 脚本语言(Scripting language)是电脑编程语言,因此也能让开发者藉以编写出让电脑听命行事的程序.以简单的方 ...

  8. 2020年数据库概念与MySQL的安装与配置-从零基础入门MySQL-mysql8版本

    作者 | Jeskson 来源 | 达达前端小酒馆 从零基础入门MySQL数据库基础课 数据的概念,简介,安装与配置,Windows平台下MySQL的安装与配置. 数据库的概念:数据库是一个用来存放数 ...

  9. 零基础入门 Kubernetes,你需要知道这些

    Kubernetes是什么? 大概很多人对此都有疑问,不过在容器领域,Kubernetes却无人不晓. 阿里.字节跳动.腾讯.百度等中国互联网行业巨擘们,近年来都在深耕容器领域,而Kubernetes ...

随机推荐

  1. 一篇文章搞定git

    git学习 一.背景(当成故事去读) Linus 虽然创建了 Linux,但 Linux 的壮大是靠全世界热心的志愿者参与的,这么多人在世界各地为 Linux 编写代码,那 Linux 的代码是如何管 ...

  2. python之路—从入门到放弃

    python基础部分 函数 初识函数 函数进阶 装饰器函数 迭代器和生成器 内置函数和匿名函数 递归函数 常用模块 常用模块 模块和包 面向对象 初识面向对象 面向对象进阶 网络编程 网络编程 并发编 ...

  3. B1020 月饼(25分)

    #include<cstdio> #include<algorithm> #include<iostream> using namespace std; struc ...

  4. 关于几类STL容器swap的复杂度问题

    \(swap\)的方式有 \(S1.swap(S2)\) 或 \(swap(S1,S2)\) \(vector,map,set,deque \ \ \ \ swap\)复杂度:\(O(1)\) \(p ...

  5. VMWARE在UEFI下启动PE.ISO

    1.编辑虚拟机设置→选项→高级→通过EFI而非BIOS引导勾选. 2.虚拟机→电源→打开电源时进入固件,进入之后修改光驱为第一引导. 3.挂载PE.ISO,启动时虚拟机顶部出现Press any ke ...

  6. js中的require、define、export、import【转】

    原文链接:https://www.cnblogs.com/libin-1/p/7127481.html 为什么有模块概念 理想情况下,开发者只需要实现核心的业务逻辑,其他都可以加载别人已经写好的模块. ...

  7. DingTalk钉钉消息推送(.net core 3 WebApi尝鲜记)

    我发了个朋友圈,Swagger真他妈的牛B,解放了开发API的码农,麻麻再也不用担心我们写API文档耽误回家吃饭了. /// <summary> /// 发送钉钉消息 /// </s ...

  8. idea创建maven多模块Spring Boot项目

    1, 创建父项目 1.1,file - new - project 1.2,选择maven,Create from archetype(有的说不选,有的没说,不过我建父项目的时候没有勾选) 1.3,根 ...

  9. 小i机器人

    //机器人回复 function xiaoirobot($openid, $content) { //定义app $app_key = ""; $app_secret = &quo ...

  10. Nginx开启gzip提高页面加载速度

    今天发现页面多次请求数据且加载的数据大,需要等待的时间很长 记得Nginx有gzip,可以对数据进行压缩 gzip是nginx服务器的ngx_http_gzip_module模块提供的在线实时数据压缩 ...