Linux学习笔记-计算机基础(2)

2.操作系统

2.1 操作系统的功能

OS:Operating System 操作系统,通用目的的软件程序

主要功能:

  • 硬件驱动
  • 进程管理
  • 内存管理
  • 网络管理
  • 安全管理
  • 文件管理

OS分类:

  • 服务器OS:CentOS,Ubuntu,Windows Server,AIX
  • 桌面OS:Windows 10,Mac OS,Fedora
  • 移动设备OS:Andriod,IOS,AliOS,HarmonyOS

2.2 操作系统相关概念

接口:interface,软件包对外提供的功能模块的函数接口,操作系统通过接口的方式建立用户和计算机硬件的沟通方式,用户通过调用操作系统的接口来使用计算机的各种计算服务。

操作系统一般提供的重要接口:

  • 命令行:通过shell终端提供功能,shell调用操作系统提供的函数
  • 窗口界面:通过窗口程序接受操作系统消息队列的键鼠动作,做出响应

ABI:Application Binary Interface,应用程序二进制接口,ABI描述了应用程序与OS之间的底层接口,允许编译好的目标代码在使用兼容ABI的系统中无需改动就能运行
运行程序格式:

  • Windows: PE(portable executable)格式, .dll(dynamic link library),.lib
  • Linux: ELF(Executable and Linking Format)格式, .so(shared object), .a

API:Application Programming Interface,应用程序开发接口,API定义了源代码和库之间的接口,因此同样的源代码可以在支持这个API的任何系统中编译

POSIX: Portable Operating System Interface 可移植的操作系统接口

  • IEEE在操作系统上定义的一系列API标准
  • POSIX兼容的程序可在其它POSIX操作系统编译执行

ABI 与 API 的区别

通过上面的介绍,可以知道 ABI 和 API 是两种完全不同的东西。二者的区别可总结概括为如下几点:

  • 描述的内容不同:ABI规定了二进制文件的格式、内容、装载/卸载程序的要求、函数调用时的参数传递规则、寄存器、堆栈的使用;API规定操作系统、硬件平台、服务组件、语言函数库等需要提供的功能函数接口;
  • 作用的层面不同:ABI描述二进制层面的接口,API描述代码级层面的接口;
  • 兼容的难度不同:ABI的兼容程度比API更为严格,即ABI实现兼容更加困难。

用户态和内核态:

为了增加操作系统的稳定性和安全性,将内核程序与用户程序隔离开,在硬件层面上提供了一次机制,将程序执行的状态分为了不同的级别,从0到3,数字越小,访问级别越高。0代表内核态,在该特权级别下,所有内存上的数据都是可见的,可访问的。3代表用户态,在这个特权级下,程序只能访问一部分的内存区域,只能执行一些限定的指令

函数库和系统调用:

对于非一般性使用需求,操作系统提供了一系列的函数调用给软件开发者,由软件开发者来实现一些用户需要的功能。这些函数调用由于是操作系统内核提供的,为了有别于一般的函数调用,被称为系统调用。比如使用C语言进行软件开发时,经常用的printf函数,它的内部实际就是通过write这个系统调用,让操作系统内核把字符打印在屏幕上的。

用户和内核空间:

用户空间:User Space

用户程序运行空间。只能执行简单的运算,不能直接调用系统资源,必须通过系统接口才能想内核发送指令

内核空间:Kernel Space

Linux内核的运行空间,可以执行任意 命令,调用系统的一切资源

范例:

str = "www.magedu.com" // 用户空间
x = x + 100 // 用户空间
file.write(str) // 切换到内核空间
y = x + 200 // 切换回用户空间

说明:第一行和第二行都是简单的赋值运算,在 User space 执行。第三行需要写入文件,就要切换到Kernel space,因为用户不能直接写文件,必须通过内核安排。第四行又是赋值运算,就切换回 User space

编程语言:

  • 低级语言:计算机能理解的语言,二进制

​ 机器语言:0和1

​ 汇编语言:和机器语言一一对应,与硬件相关的特有代码,比如驱动程序开发

  • 中级语言:C语言,系统应用、驱动程序
  • 高级语言:Java,Python,Go,PHP,C#,应用程序开发,人类语言实现

2.3 各种操作系统

操作系统演变:

单用户系统》批处理系统》多道程序系统》分时系统》个人计算机====>分布式计算机

服务器三大操作系统

  • Windows

  • Linux:GNU/Linux

  • Unix:1969年 Ken Thompson

    ​ System:Bell Lab

    ​ AIX (IBM)

    ​ Soliars(SUN)

    ​ HP-UX(HP)

  • BSD:(BSRG)Berkeley System Distribution

    ​ NetBSD

    ​ OpenBSD

    ​ FreeBSD

服务器操作系统市场

Unix历史

1964年,贝尔实验室、麻省理工大学和GE美国通用电气公司共同发起了Multics(多路信息)的计划,目的是让大型主机可以同时支持300个以上的终端机连线使用1966年 Ken Thompson加入贝尔实验室,参与Multics系统的研发,他基于Multics开发了“star travel”游戏,,1969年,由于种种原因最后贝尔实验室选择退出。Ken就没有机器再玩这个游戏了,于是他决定自己写一个操作系统来满足需求,Ken找到一台废弃已久的老式PDP-7并在机器上重写了他的游戏。在这个过程中Ken决定开发一个全新的操作系统,利用PDP-7上的汇编语言,在一个月中完成了操作系统的内核、文件系统、编辑器和编译程序的开发。

1969年Unix的雏形UNICS初现
Ken Thompson 汇编语言 B语言
1973 正式命名为 Unix
Dennis Ritchie C语言
1977 BSD
Berkeley Software Distribution 伯克利大学
1979 System V架构 版权声明
HP-UNIX IBM AIX “不对学生提供源码” 收回版权
1984年 Minix操作系统
Andrew S. Tanenbaum 荷兰阿姆斯特丹自由大学计算机科学系

GNU

GNU:GNU is not Unix

1984年由Richard Stallman发起并创建

目标是编写大量兼容于Unix系统的自由软件

GPL:GNU General Public License

自由软件基金会:Free Software Foundation

允许用户任意复制、传递、修改及再发布

基于自由软件修改再次发布的软件,仍需遵守GPL

LGPL:Lesser General Public License,LGPL相对于GPL较为宽松,允许不公开全部源代码

GNU操作系统:

Hurd:Hird(Hurd of Interfaces Representing Depth) of Unix-Replacing Daemons

官网:http://www.gnu.org/software/hurd/hurd.html

2.4 Linux

1991年的10月5日Linus Benedict Torvalds在comp.os.minix 新闻组上发布消息,正式向外宣布他自行编写的完全自由免费的内核诞生(Freeminix-like kernel sources for 386-AT) — FREAX,含义是怪诞的、怪物、异想天开类Unix的内核,在GPL下发布

官网:www.kernel.org

Linux操作系统:

Linux内核+GNU工具=Linux/GNU

Linux的内核版本组成

  • 主版本号
  • 次版本号
  • 末版本号
  • 打包版本号
  • 厂商版本

Linux发行版本

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

  • debian: ubuntu,deepin(深度),mint

  • redhat: RHEL: RedHat Enterprise Linux, 每18个月发行一个新版本

    ​ CentOS: Community Enterprise Operating System 兼容RHEL的格式

    ​ 中标麒麟:中标软件

    ​ Fedora:每6个月发行一个新版本

  • Alpine: 一个面向安全的轻型 Linux 发行版。它不同于通常 Linux 发行版,Alpine 采用了 musllibc 和 busybox 以减小系统的体积和运行时资源消耗,但功能上比 busybox 又完善的多,只有5M左右大小

  • ArchLinux:轻量简洁,遵循K.I.S.S.原则( keep it simple and stupid ),Manjaro

  • Gentoo:极致性能,不提供传统意义的安装程序,下载源代码在本机上编译安装软件

  • LFS:Linux From scratch 自制Linux,只是一个说明书

  • Android:kernel+busybox(工具集)+java虚拟机

Linux 分支参考网站:http://futurist.se/gldt/

Linux发行版排名: https://distrowatch.com/dwres.php?resource=popularity

2.5 开源 open source

开源Open Source

  • 软件和开源代码提供给所有人,自由分发软件和源代码,free是自由而不是免费的意思
  • 能够修改和创建衍生产品

软件分类:

  • 商业:收费,源码也不公开
  • 共享:免费使用,但源码不公开
  • 自由:源代码公开

开源协议

世界上的开源许可证大概有上百种, 不同协议对源码的使用要求也不同

  • GPLv2, GPLv3, LGPL(lesser) :通用公共许可 copyleft
  • Apache: apache
  • BSD: bsd
  • Mozilla
  • MIT

2.7 LINUX的安装

2.7.1 Linux哲学思想

  • 一切皆文件
  • 小型、单一用途的程序
  • 链接程序,共同完成复杂的任我游
  • 避免令人困惑的用户界面
  • 在文本中配置数据存储

2.7.2 Linux生产主流版本

Linux 各种版本

Centos 各版本介绍

https://zh.wikipedia.org/wiki/CentOS

RHEL各版本介绍

https://zh.wikipedia.org/wiki/Red_Hat_Enterprise_Linux

Ubuntu 各版本介绍

https://zh.wikipedia.org/wiki/Ubuntu

https://blog.csdn.net/songfulu/article/details/85310273

获取发行版

CentOS

https://wiki.centos.org/Download

http://mirrors.aliyun.com

http://mirrors.sohu.com

http://mirrors.163.com

https://mirrors.tuna.tsinghua.edu.cn/centos/

Ubuntu

http://cdimage.ubuntu.com/releases/ server版

http://releases.ubuntu.com/ desktop版

2.7.3 安装Linux系统

CentOS7安装流程

https://www.cnblogs.com/dreamfreedom/p/11563236.html

CentOS8安装流程

https://www.cnblogs.com/wzb0228/p/12653104.html

Ubuntu18.04 安装流程

https://www.cnblogs.com/zliW/p/13303736.html

posted @ 2020-11-04 15:08  gody2019  阅读(321)  评论(0)    收藏  举报