Linux系统结构的那些事 | 青训营笔记

46 阅读5分钟

前言

本节课程主要介绍了linux系统结构的相关知识,快来跟着我一起来看看都有哪些内容吧!

进程管理

image.png

下面是关于进程的一些知识点:

  • 进程是正在执行的一个程序或命令

  • 进程有自己的地址空间,占用一定的系统资源

  • 一个CPU核同一时间只能运行一个进程

  • 进程由它的进程ID (PID) 和它父进程的进程ID (PPID) 唯一识别

关于查看进程信息的一些吗命令语句

  1. 查看启动的nginx进程

    ps -ef | grep nginx

    root 93824 1 0 16:42? 00:00:00 nginx: master process /usr/sbin/nginx

  2. 查看某个进程

    top -p 93824

    PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND

    1 root 20 0 32632 5248 4572S 0.0 0.0 0:00.02 nginx

  3. 关闭指定的进程

    kill 93824

  4. 全部进程动态实时视图

    top

进程调度

进程调度是指操作系统按某种策略或规则选择进程占用CPU进行运行的过程。

  • R (TASK_ RUNNING),可执行状态

  • S (TASK_ INTERRUPTIBLE),可中断的睡眠状态

  • D (TASK UNINTERRUPTIBLE), 不可中断的睡眠状态

  • T (TASK_ STOPPED or TASK_ TRACED),暂停状态或跟踪状态

  • Z (TASK_ DEAD - EXIT_ ZOMBIE),退出状态,进程成为僵尸进程

  • X (TASK_ DEAD - EXIT_ DEAD),退出状态,进程即将被销毁

进程调度的原则

  1. 一个CPU核同一时间只能运行一个进程

  2. 每个进程有近乎相等的执行时间

  3. 对于逻辑CPU而言进程调度使用轮询的方式执行,当轮询完成则回到第一个进程反复

  4. 进程执行消耗时间和进程量成正比

文件系统

文件系统负责管理持久化数据的子系统,负责把用户的文件存到磁盘硬件中。

有句话说的好,“Linux中一切皆为文件”。

这样做最明显的好处是开发者仅需要使用一套API和开发工具即可调取Linux系统中绝大部分的资源。 举个简单的例子,Linux 中几乎所有读(读文件,读系统状态,读socket,读PIPE) 的操作都可以用read函数来进行;几乎所有更改(更改文件,更改系统参数,写socket,写PIPE)的操作都可以用write函数来进行。 使用任何硬件设备都必须与根目录下某一目录执行挂载操作

目录结构

image.png

Linux文件系统是采用树状的目录结构,最上是/ (根)目录。下面列举一些常用的命令语句。

  • /bin: bin是Binaries (二进制文件)的缩写,这个目录存放着最经常使用的命令。
  • /boot: 这里存放的是启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件。
  • /dev: dev是Device(设备)的缩写,该目录下存放的是Linux的外部设备,在Linux中访问设备的方式和访问文件的方式是相同的。
  • /etc: etc是Etcetera(等等)的缩写,这个目录用来存放所有的系统管理所需要的配置文件和子目录。
  • /home: 用户的主目录,在Linux中, 每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的。
  • /lib: lib是Library(库)的缩写这个目录里存放着系统最基本的动态连接共享库,其作用类似于Windows里的DLL文件。几乎所有的应用程序都需要用到这些共享库。
  • /mnt: 系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将光驱挂载在/mnt/上,然后进入该目录就可以查看光驱里的内容了。
  • /opt: opt是optional(可选)的缩写,这是给主机额外安装软件所摆放的目录。比如你安装个ORACLE数据库则就可以放到这个目录下。 默认是空的。
  • /proc: proc 是Proses进程的缩写,/proc 是一种伪文件系统 (也即虚拟文件系统), 存储的是当前内核运行状态的一系列特殊文件, 这个目录是一个虚拟的目录, 它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。
  • /root: 该目录为系统管理员,也称作超级权限者的用户主目录。
  • /sbin: s就是Super User的意思,是Superuser Binaries (超级用户的二进制文件)的缩写,这里存放的是系统管理员使用的系统管理程序。
  • /usr: usr是unix shared resources(共享资源)的缩写,这是一个非常重要的目录, 用户的很多应用程序和文件都放在这个目录下,类似于windows下的program files目录。

虚拟文件系统

image.png

虚拟文件系统(VFS):

  1. 对应用层提供一个标准的文件操作接口
  2. 对文件系统提供一个标准的文件接入接口

虚拟文件系统使得Linux可以存在多个“实际的文件系统”,比如分区1是ex2, 分区2是ext3, 分区3是fat32。 那么每个实际的文件系统的结构和操作方式是不一样的。如果是这样的话用户怎么去操作它们呢?总不能每种不同的文件系统都采用不同的方法吧,那么这个时候就需要VFS作为中间层!用户直接控制VFS。 VFS再去控制各个文件系统。

文件读取流程

image.png

用户权限

用户账户

Linux是一个多用户的系统,我们可以多个用户同时登陆Linux。

  • 用户账户

    普通用户账户:在系统中进行普通作业

    超级用户账户:在系统中对普通用户和整个系统进行管理

  • 用户组

    标准组:可以容纳多个用户

    私有组:只有用户自己

文件权限

文件权限关于用户有三个概念:

  • 所有者:文件的所有者

  • 所在组:文件的所有者所在的组

  • 其他人:除文件所有者及所在组外的其他人”

每个用户对于文件都有不同权限,包括读(R)、写(W)、执行(X)。

其他

今天的任务就到这里啦!最后,今天你有快乐吗?