Contents

Linux基础

Linux中的命令行界面称为shell (图形界面称为GUI)。

bash shell(bash)是大多数Linux系统的默认shell,还用很多其他的shell ,例如ksh和csh。

文本模式登录后所取得的程序被称为壳(shell),这是因为这只程序负责最外面跟使用者(我们)打交道,所以被戏称为“壳”

在Linux中的shell为bash

shell也只是一个普通的用户程序。它仅仅需要从键盘读取数据、向显示器输出数据和运行其他程序的能力。

可以将一系列shell命令放到一个文件中,然后将此文件作为shell的输入来运行。包含shell命令的文件称为shell脚本

Linux应用程序

Linux的命令行用户界面(shell)中包含大量的标准应用程序。这些程序大致可以分为以下6类:

  • 文件和目录操作命令
  • 过滤器
  • 程序设计工具,如编辑器和编译器
  • 文档处理
  • 系统管理
  • 其他

常用指令:

cal : 日历查看

date:日期查看

shift+pageup /shift+pageup:向上翻页/向上翻页

内核结构

https://gitee.com/shilongshen/image-bad/raw/master/img/20201214144601.png

运行在硬件之上的为操作系统,其作用为控制硬件并且为其他程序提供系统调用接口。这些系统调用允许用户创立并管理进程、文件以及其他资源。

Linux具有三种不同的接口:真正的系统调用接口,库函数接口,由标准应用程序构成的接口。

https://gitee.com/shilongshen/image-bad/raw/master/img/20201214151022.png

内核位于硬件之上,负责实现I/O设备和存储管理单元的交互,并控制CPU对前苏诉设备的访问。

  1. 最底层:最底层包含中断处理程序,它们是与设备交互的主要方式,以及底层的分派机制
  2. 中间层:中间层为内核的三个主要部件,I/O部件,内存管理部件,进程管理部件。
    • I/O部件:
    • 内存管理部件:任务包括维护虚拟内存到物理内存的映射,维护最近被访问页面的缓存以及实现一个好的页面置换算法,并根据需要把需要的数据和代码页读入内存中。
    • 进程管理部件:主要任务是进程的创建和终止
  3. 最顶层:最顶层为到内核的系统调用接口。所有系统调用都来自这里,其触发一个陷入,并将系统从用户态转换到受保护的内核态,继而将控制权交给上诉的内核部件之一。

Linux中的进程

  • 在大多数单用户的工作站中,即使用户已经退出登录了,仍然会有很多后台进程,称为守护进程。计划任务是一种典型的守护进程。它每个几分钟运行一次来检查是否有工作需要它完成。

  • 在Linux中,系统调用fork将会创建一个与原始进程完全一样的进程副本。调用fork函数的进程称为父进程,新的进程称为子进程。

  • 进程以其PID来命名

  • Linux中,进程间可以通过消息传递的方式进行通信。有两种方式:

    • 管道:一个进程子啊管道中写入字节流,另一个进程从这个管道中读取字节流。管道是同步的,因为当一个进程试图从一个管道中读取数据,这个进程就会被挂起直到管道中有数据为止。

      shell中的管线就是用管道技术实现的,例如sort <file | head,有两个进程sort,head

    • 软中断:一个进程可以给另一个进程发送信号,进程可以告诉操作系统当信号到来时他们希望发生什么事件。相关的选择有忽略这个信号、抓取这个信号或被这个信号杀死。

Linux中进程与线程的实现

  • 每一个进程都有运行用户程序的用户模式。
  • 但是当它的某个线程调用系统调用之后,进程就会陷入内核模式并且运行在内核上下文中,他将使用不同的内存映射并且拥有对所有机器资源的访问权。它还是同一个进程,但是现在拥有更高的权限,同时拥有自己的内核堆栈以及内核程序计数器。