文章目录
一.linux中多个用户如何实现资源分配?
我们知道在linux中一个用户独自拥有一个cpu,一个内存,一条输出总线。为什么一个用户要独占一套系统资源呢?因为假如两个用户开启相同的进程的话,如果是一个内存的话,因为他们占的是相同的内存,根本无法实现,所以需要引入虚拟内存,这里每个用户独占的内存即一个虚拟内存。在上一节中我们了解了cpu分时运行,而对于内存来说,此时一个用户用的是一个虚拟内存,每一个虚拟内存对应真实内存的一个位置。至于i/o总线,通过i/o复用实现。
二.内部命令与外部命令
(1)内部命令实际上是shell程序的一部分,其中包含的是一些比较简单的linux系统命令,这些命令由shell程序识别并在shell程序内部完成运行,通常在linux系统加载运行时shell就被加载并驻留在系统内存中。内部命令是写在bashy源码里面的,其执行速度比外部命令快,因为解析内部命令shell不需要创建子进程。比如:exit,history,cd,echo等。
(2)外部命令是linux系统中的实用程序部分,因为实用程序的功能通常都比较强大,所以其包含的程序量也会很大,在系统加载时并不随系统一起被加载到内存中,而是在需要时才将其调用内存。通常外部命令的实体并不包含在shell中,但是其命令执行过程是由shell程序控制的。shell程序管理外部命令执行的路径查找、加载存放,并控制命令的执行。外部命令是在bash之外额外安装的,通常放在/bin,/usr/bin,/sbin,/usr/sbin……等等。可通过“echo $PATH”命令查看外部命令的存储路径,比如:ls、vi等.
(3)如何判断一个命令是内还是外?
通过type 命令 来进行判断如果打印出现路径则为外部命令。
(4)打印命令格式或者一个文件的内容格式类型
命令必须遵循特定格式规范: windows上都是exe, msi, 对于linux而言是ELF格式。首先可以用which命令查看路径。