linux的组成部分

Linux 是一种自由和开放源码的类 UNIX 操作系统。它主要受到Minix和Unix思想的启发,是一个基于POSIX的多用户、多任务、支持多线程和多CPU的操作系统。linux可划分为以下四部分:

  • Linux内核
  • GNU工具
  • 图形化桌面环境
  • 应用软件

下图是一个基本结构框图,展示各部分是如何协同构成一个完整的Linux系统。
在这里插入图片描述

1.Linux内核

Linux系统的核心是内核。内核控制着计算机系统上的所有硬件和软件。内核主要负责以下四个功能:

  • 系统内存管理
  • 软件程序管理
  • 硬件设备管理
  • 文件系统管理

1.1系统内存管理

操作系统内核的主要功能之一就是内存管理。内核不仅管理服务器上的可用物理内存,还可以创建和管理虚拟内存(即实际并不存在的内存)。内核通过硬盘上的存储空间来实现虚拟内存,这块区域称为交换空间(swap space)。内核不断地在交换空间和实际的物理内存之间反复交换虚拟内存中的内容。这使得系统以为它拥有比物理内存更多的可用内存。
在这里插入图片描述

内存存储单元按组划分成很多块,这些块称作页面(page)。内核将每个内存页面放在物理内存或交换空间。然后,内核会维护一个内存页面表,指明哪些页面位于物理内存内,哪些页面被换到了磁盘上。

内核会记录哪些内存页面正在使用中,并自动把一段时间未访问的内存页面复制到交换空间区域(称为换出,swapping out)——即使还有可用内存。当程序要访问一个已被换出的内存页面时,内核必须从物理内存换出另外一个内存页面给它让出空间,然后从交换空间换入请求的内存页面。显然,这个过程要花费时间,拖慢运行中的进程。只要Linux系统在运行,为运行中的程序换出内存页面的过程就不会停歇。

1.2软件程序管理
Linux操作系统将运行中的程序称为进程。内核创建了第一个进程(称为init进程)来启动系统上所有其他进程。当内核启动时,它会将init进程加载到虚拟内存中。内核在启动任何其他进程时,都会在虚拟内存中给新进程分配一块专有区域来存储该进程用到的数据和代码。
Linux操作系统的init系统采用了运行级。运行级决定了init进程运行/etc/inittab文件或
/etc/rcX.d目录中定义好的某些特定类型的进程。Linux操作系统有5个启动运行级。

运行级为1时,只启动基本的系统进程以及一个控制台终端进程。我们称之为单用户模式。单用户模式通常用来在系统有问题时进行紧急的文件系统维护。显然,在这种模式下,仅有一个人(通常是系统管理员)能登录到系统上操作数据。

标准的启动运行级是3。在这个运行级上,大多数应用软件,比如网络支持程序,都会启动。另一个Linux中常见的运行级是5。在这个运行级上系统会启动图形化的X Window系统,允许用户通过图形化桌面窗口登录系统。

Linux系统可以通过调整启动运行级来控制整个系统的功能。通过将运行级从3调整成5,系统就可以从基于控制台的系统变成更先进的图形化X Window系统。

1.3硬件设备管理
内核的另一职责是管理硬件设备。任何Linux系统需要与之通信的设备,都需要在内核代码中加入其驱动程序代码。驱动程序代码相当于应用程序和硬件设备的中间人,允许内核与设备之间交换数据。在Linux内核中有两种方法用于插入设备驱动代码:

  • 编译进内核的设备驱动代码
  • 可插入内核的设备驱动模块

Linux系统将硬件设备当成特殊的文件,称为设备文件。设备文件有3种分类:

  • 字符型设备文件:指处理数据时每次只能处理一个字符的设备。大多数类型的调制解调器和终端都是作为字符型设备文件创建的
  • 块设备文件:指处理数据时每次能处理大块数据的设备,比如硬盘。
  • 网络设备文件:指采用数据包发送和接收数据的设备,包括各种网卡和一个特殊的回环设备。

1.4 文件系统管理
Linux内核支持通过不同类型的文件系统从硬盘中读写数据。表1-1列出了Linux系统用来读写数据的标准文件系统。
在这里插入图片描述

2.GUN工具

除了由内核控制硬件设备外,操作系统还需要工具来执行一些标准功能,比如控制文件和程序。供Linux系统使用的这组核心工具被称为coreutils(core utilities)软件包。GNU coreutils软件包由三部分构成:

  • 用以处理文件的工具
  • 用以操作文本的工具
  • 用以管理进程的工具

2.1 shell
GNU/Linux shell是一种特殊的交互式工具。它为用户提供了启动程序、管理文件系统中的文件以及运行在Linux系统上的进程的途径。shell的核心是命令行提示符。命令行提示符是shell负责交互的部分。它允许你输入文本命令,然后解释命令,并在内核中执行。你也可以将多个shell命令放入文件中作为程序执行。这些文件被称作shell脚本。

在Linux系统上,通常有好几种Linux shell可用。不同的shell有不同的特性,有些更利于创建脚本,有些则更利于管理进程。所有Linux发行版默认的shell都是bash shell。bash shell由GNU项目开发,被当作标准Unix shell.

2.1.1shell的类型
系统启动什么样的shell程序取决于你个人的用户ID配置。在/etc/passwd文件中,在用户ID记录的第7个字段中列出了默认的shell程序。只要用户登录到某个虚拟控制台终端或是在GUI中启动终端仿真器,默认的shell程序就会开始运行。例如:用户root使用/bin/bash(bash shell)作为自己的默认shell程序.

[root@node1 bin]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

不过还有另外一个默认shell是/bin/sh,它作为默认的系统shell,用于那些需要在启动时使用的系统shell脚本。你经常会看到某些发行版使用软链接将默认的系统shell设置成bash shell,如CentOS发行版:
$ ls -l /bin/sh

lrwxrwxrwx. 1 root root 4 Mar 18 15:05 /bin/sh -> bash

/bin/sh 相当于 /bin/bash --posix,使用 sh 调用执行脚本相当于打开了bash 的 POSIX 标准模式,它们之间的各种差异都是来自 POSIX 标准模式和bash的差异。

2.1.2shell的父子关系
用于登录某个虚拟控制器终端或在GUI中运行终端仿真器时所启动的默认的交互shell,是一个父shell。
在CLI提示符后输入/bin/bash命令或其他等效的bash命令时,会创建一个新的shell程序。这个shell程序被称为子shell(child shell)。子shell也拥有CLI提示符,同样会等待命令输入。
例如:使用ps -f

[root@node1 bin]# ps -f
UID        PID  PPID  C STIME TTY          TIME CMD
root       727   711  0 11:01 pts/0    00:00:00 -bash
root      4385   727  0 12:06 pts/0    00:00:00 ps -f

使用ps -f的时候,显示出了两个进程。其中一个进程的进程ID是727,运行的是bash shell程序。另一个进程的进程ID为4385,对应的是命令ps -f。

[root@node1  bin]# bash
[root@node1  bin]#  ps -f
UID        PID  PPID  C STIME TTY          TIME CMD
root       727   711  0 11:01 pts/0    00:00:00 -bash
root      4492   727  0 12:08 pts/0    00:00:00 bash
root      4512  4492  0 12:08 pts/0    00:00:00 ps -f

输入命令bash之后,一个子shell就出现了。第二个ps -f是在子shell中执行的。可以从显示结果中看到有两个bash shell程序在运行。第一个bash shell程序,也就是父shell进程,其原始进程ID是727。第二个bash shell程序,即子shell进程,其PID是4492。注意,子shell的父进程ID(PPID) 是727,指明了这个父shell进程就是该子shell的父进程。在生成子shell进程时,只有部分父进程的环境被复制到子shell环境中。

3.Linux 桌面环境

1.KDE(K Desktop Environment,K桌面环境)最初于1996年作为开源项目发布。它会生成一个类似于Microsoft Windows的图形化桌面环境。
在这里插入图片描述
KDE桌面允许你把应用程序图标和文件图标放置在桌面的特定位置上。单击应用程序图标,Linux系统就会运行该应用程序。单击文件图标,KDE桌面就会确定使用哪种应用程序来处理该文件。

2.GNOME(the GNU Network Object Model Environment,GNU网络对象模型环境)是另一个流行的Linux桌面环境。GNOME于1999年首次发布,现已成为许多Linux发行版默认的桌面环境。
在这里插入图片描述
3.Unity桌面
如果你用的是Ubuntu Linux发行版,你会注意到它与KDE和GNOME桌面环境有些不一样。准确来说,这是因为负责开发Ubuntu的公司决定采用自己的一套叫作Unity的Linux桌面环境。

Unity桌面得名于该项目的目标——为工作站、平板电脑以及移动设备提供一致的桌面体验。不管你是在工作站还是在手机上使用Ubuntu,Unity桌面的使用方式都是一样的。
在这里插入图片描述

Linux 是一个开源操作系统,由许多不同的组成部分构成。以下是 Linux 的主要组成部分: 1. 内核 (Kernel):Linux 内核操作系统的核心,它负责管理计算机的硬件资源,提供进程管理、设备驱动程序、内存管理和文件系统等功能。 2. Shell:Shell 是用户与 Linux 内核进行交互的命令解释器。它接收用户输入的命令,并将其传递给内核执行。常见的 Linux Shell 包括 Bash、Zsh、Ksh 等。 3. 库 (Libraries):Linux 提供了丰富的库,包括 C 库 (例如 GNU C Library) 和其他语言的库,用于提供常见的函数和工具,方便开发者编写应用程序。 4. 文件系统 (File System):Linux 支持多种文件系统,例如 ext4、XFS、NTFS 等。文件系统负责管理文件和目录,以及对存储设备进行读写操作。 5. Shell 工具 (Shell Utilities):Linux 提供了许多实用的命令行工具,例如 ls、cd、cp、mv、rm 等,用于处理文件和目录,执行各种系统操作。 6. 图形用户界面 (Graphical User Interface, GUI):Linux 也提供了多种图形用户界面,使用户能够通过鼠标和图形界面进行操作。常见的 Linux 图形界面包括 GNOME、KDE、Xfce 等。 7. 设备驱动程序 (Device Drivers):Linux 支持各种硬件设备,并提供相应的设备驱动程序,用于与硬件设备进行通信和控制。 8. 网络协议栈 (Network Protocol Stack):Linux 内置了网络协议栈,支持各种网络协议,包括 TCP/IP 协议族,使 Linux 能够进行网络通信。 9. 实用程序 (Utilities):Linux 提供了许多实用程序,用于系统管理、性能监控、文件压缩和解压缩等任务。 10. 应用程序 (Applications):Linux 上有大量的应用程序可供使用,包括办公套件、图形编辑器、多媒体播放器、开发工具等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

永远不要矫情

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值