Linux基础 | 青训营笔记

130 阅读11分钟

这是我参与笔记创作活动的第2天

一、本堂课重点内容:

  • 本堂课的知识要点有哪些?
    • 计算机硬件
    • 计算机操作系统
    • Linux系统概述
    • Linux系统结构
    • Linux系统软件包管理器

二、详细知识点介绍:

一、 计算机硬件组成(计算机所有组成都是模仿人类的器官功能,共5部分)

linux硬件.PNG

1.控制器: 是计算机的指挥系统,负责控制计算机其他硬件的运行,相当于人的大脑

2.运算器: 包括数学运算和逻辑运算,相当于人的大脑

控制器+运算器=CPU(中央处理器)

3.存储器:存储数据

内存(主存) :如内存条(又称随机存储器),存取速度快,但是基于 电工作,一旦断电数据就丢失,只能临时存储。称为主存的原因是所有的 数据指令存取都必须经过内存传输。类似于人的记忆功能,容易断片。

外存: 如硬盘,存取速度相对内存很慢,数据可以近似“永久”保存。类似于使用的笔记本子

4.输入设备(Input): 计算机接收外界输入数据的工具,一般如键盘、鼠标等

5.输出设备(Output): 计算机向外输出数据的工具,如显示屏、打印机等

二、操作系统启动流程

操作系统启动流程.PNG

  1. 计算机加电
  2. 启动BIOS系统,扫描启动设备,寻找操作系统位置
  3. 读取启动设备的第一个扇区(主引导记录MBR共512字节),其中446字节为BootLoader(启动装载模块)即grub程序,64字节为分区信息,最后2字节为结束标志位
  4. grub程序负责将操作系统内核载入内存,启动操作系统
  5. 操作系统让BIOS检测计算机硬件驱动程序是否完好,完好后将驱动程序调入操作系统内核,操作系统接管计算机

三、Linux系统概述

image.png

1.1 Unix历史

我们要讲的不是Linux吗?怎么蹦出个Unix,虽然它和Linux长得有点像。因为它们确实有很深的渊源!

Unix 是在1969年美国贝尔实验室的 肯.汤普森开发出来的一款操作系统,什么是操作系统?

大家正在玩的 Windows 和 Max OS就是两个操作系统。操作系统是用户和计算机的接口,同时也是计算机硬件和应用程序的接口,也就是说我们和计算机打交道以及计算机底层硬件和应用程序打交道都是通过操作系统。如下所示:

而我们所说的Unix也是一个操作系统,其源代码大部分都是用C语言写的。它是一个强大的多用户、多任务操作系统, 而且支持多种处理器架构。在1984年,Unix用户协会颁发了使用标准。 后来IEEE为此制定了POSIX标准(即IEEE1003标准)国际标准名称为ISO/IEC9945,它通过一组最小的功能定义了 在UNIX操作系统和应用程序之间兼容的语言接口。这个标准很重要,后面很多系统的开发都是遵循这个标准来的。

虽然Unix系统这么好用,但是很不幸,它是一个对源代码实行知识产权保护的传统商业软件,也就是说Unix系统 源代码不开源,而且Unix系统也是一个收费软件。这也直接导致了Linux系统的诞生。

1.2 Linux历史

UNIX 最初免费发布,在1990年,UNIX 在服务器市场尤其是大学校园成为主流操作系统,许多校园都有 UNIX 主机, 当然还包括一些研究它的计算机系的学生。这些学生都渴望能在自己的电脑上运行 UNIX 。。不幸的是,从那时候开始, UNIX 开始变得商业化,它的价格也变得非常昂贵。而唯一低廉的选择就是 MINIX ,这是一个功能有限的类似 UNIX 的 操作系统,作者 Andrew Tanebaum 开发它的目的是用于教学。

1991 年 10 月,Linus Torvalds(Linux 之父)在赫尔辛基大学接触 UNIX ,他希望能在自己的电脑上运行一个类似的操作系统。 可是 UNIX 的商业版本非常昂贵,于是他从 MINIX 开始入手,而 Linus Torvalds 对Minix不是很满意,于是决定自己编写软件。 他以学生时代熟悉的Unix作为原型,在一台Intel 386 PC上开始了他的工作。他的进展很快,受工作成绩的鼓舞,他将这项成果 通过互连网与其他同学共享,主要用于学术领域。他第一次发行的版本很快吸引了一些黑客。尽管最初的 Linux 并没有多少用处, 但由于一些黑客的加入使它很快就具有了许多吸引人的特性,甚至一些对操作系统开发不感兴趣的人也开始关注它。每当出现新 问题时,有人会立刻找到解决办法并加入其中,很快的, Linux成为了一个操作系统。得注意的是Linux并没有包括Unix源码, 它是按照公开的POSIX标准重新编写的。Linux大量使用了由麻省剑桥免费软件基金的GNU软件,同时Linux自身也是用它们构造而成。

1.3 Unix与Linux的区别

Linux和UNIX的最大的区别是,前者是开放源代码的自由软件,而后者是对源代码实行知识产权保护的传统商业软件。

这应该是他们最大的不同,这种不同体现在用户对前者有很高的自主权,而对后者却只能去被动的适应;这种不同还表现在前者的开发是处在一个完全开放的环境之中,而后者的开发完全是处在一个黑箱之中,只有相关的开发人员才能 够接触的产品的原型 。 具体区别如下:

UNIX系统大多是与硬件配套的,而Linux则可运行在多种硬件平台上. UNIX是商业软件,收费,而Linux是自由软件,免费、公开源代码的. Linux商业化的有RedHat Linux 、SuSe Linux、slakeware Linux、国内的红旗等,还有Turbo Linux.Unix主要有Sun 的Solaris、IBM的AIX, HP的HP-UX,以及x86平台的的SCO Unix/Unixware.

Linux版本.PNG

Linux的版本号分为两部分:内核版本和发行版本

2.1 Linux的内核版本

内核版本指的是在Linus Torvalds领导下的开发小组开发出的系统内核的版本号,通常,内核版本号的第二位是偶数表示是稳定的版本,如2.6.25;是奇数表示有一些新的东西加入,是不稳定的测试版本,如2.5.6。Linux操作系统的核心就是它的内核,Linus Torvalds和他的小组在不断地开发和推出新内核。

任务:进程调度、内存管理、配置管理虚拟文件系统、提供网络接口以及支持进程间通信。像所有软件一样,Linux的内核也在不断升级。

2.2 Linux发型版本介绍

一个完整的操作系统不仅仅只有内核,还包括一系列为用户提供各种服务的外围程序。外围程序包括GNU程序库和工具,命令行shell,图形界面的X Window系统和相应的桌面环境,如KDE或GNOME,并包含数千种从办公套件,编译器,文本编辑器到科学工具的应用软件。所以,许多个人、组织和企业,开发了基于GNU/Linux的Linux发行版,他们将Linux系统的内核与外围应用软件和文档包装起来,并提供一些系统安装界面和系统设置与管理工具,这样就构成了一个发行版本(distribution)。

实际上,Linux的发行版本就是Linux内核再加上外围的实用程序组成的一个大软件包而已。相对于操作系统内核版本,发行版本的版本号是随发布者的不同而不同,与Linux系统内核的版本号是相对独立的,例如:RedHat EnterpriseLinux 5.2的操作系统内核是linux-2.6.18。

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

2.3 查看Linux系统内核版本命令

查看Linux系统内核版本.PNG

2.4 查看Linux系统版本命令

查看Linux系统版本.PNG

2.5 Linux系统应用领域

Linux系统应用领域.PNG

四、Linux系统结构

Linux基本组成.PNG

Linux体系结构.PNG

4.1 Kernel(内核)

  • 管理硬件

  • 管理内存:内存分配

  • 管理进程:进程调度。

  • 控制系统程序和系统硬件

  • 管理文件系统:真正创建和删除文件的,用户只是发出命令。

  • 管理交换空间(虚拟内存),守护进程(精灵),文件系统。

  • swap space:(交换分区/空间)当系统的物理内存不够用的时候, 就需要将物理内存中的一部分空间释放出来,以供当前运行的程序使用那些被释放的空间可能来自一些很长时间没有什么操作的程序,这些被释放的空间被临时保存到Swap空间中,等到那些程序要运行时,再从Swap中恢复保存的数据到内存中。内核不断在交换空间和实际的物理内存之间反复交换虚拟内存存储单元中的内容。这使得系统以为它拥有比物理内存更多的可用内存。

  • deamon:(精灵进程、守护进程、后台进程)在操作系统中,一般系统的服务都是以后台进程的方式存在,而且都会常驻系统中,直到关机才结束,这类服务称Deamon。

4.2 shell

Shell是用户和操作系统内核进行通讯的桥梁,扮演着解释器或翻译器的角色。 定义:充当了翻译者和解释者。 把人能够识别的高级语言解释成机器语言, 把机器语言翻译成高级语言。 Shell主要有一下几种,其中bash是Unix/Linux操作系统中默认的Shell。

  • Bourne Shell (sh)

    Bourne Shell是Stephen Bourne为AT&T Unix编写的Shell工具。 最早的比较出名是Unix Shell 一个新的版本是Bourne-Again Shell

  • Korn Shell (ksh)

  • C shell(csh)

    Sun公司的创始人,Vi编辑器的作者Bill Joy在加利福尼亚大学的伯克利分校开发出来的,作为BSD Unix的默认Shell存在的。 C Shell具有历史记录功能,所有的使用过的命令都会保存下来,可以随时调用处理重新执行。 C Shell有自己的语法规则,类似于C语言。在语法上与Bourne Shell不兼容。 C Shell有一个增强的并且完全兼容的新的Shell,tcsh。

4.3 FileSystem(文件系统)

solaris操作系统的文件系统:

  • /
  • /” 根目录是Linux/Unix文件系统的最顶级的目录。对于Unix系统来说该目录还用来存放系统的补丁文件。
  • /opt
  • “/opt” 【Optional Application Software Packages】存放第三方工具或者是应用程序的目录。
  • /etc
  • “/etc” 【Etcetra Directory 】存放和系统相关的配置文件的目录。
  • /dev
  • “/dev” 【Devices】存放设备文件的目录。网卡例外,没有设备文件。
  • /usr
  • “/usr” 【Unix System Resource】Unix系统资源,存放系统中所有用户都会使用的命令,文档以及开发库。
  • /kernel
  • “/kernel” 在Linux中是“/boot”,存放内核程序。
  • /var
  • “/var” 【Variable】存放的是管理员所使用的一些与系统运行过程相关特殊功能。比如操作系统的日志等等。
  • /home
  • “/home” 系统默认的用户的主目录,root用户除外。

五、Linux系统软件包管理器

5、1 软件包的管理

软件包的类型:

  • rpm包管理:这种包已经使用GCC编译过的
  • 二进制包管理:最明显的就是有/bin的二进制目录
  • 源码包管理:这种包需要使用到GCC或者c++等编译而成

软件包.PNG

5、2 常用命令

常用命令.PNG

5、3 Debian配置软件源

Debian配置软件源.PNG

5、4 nginx安装命令

nginx安装.PNG

5、5 nginx配置修改命令

nginx 配置修改.PNG

三、实践练习例子:

  • 可以在VMware配置centos版本的linux系统,在里面配置一下nginx.

四、课后个人总结:

  • 本章有什么知识点不容易掌握?

    linux进程管理有点难理解,其它的都是实操性的,操作一下就可以理解。