Linux shell 整理之 基本概念篇(一)

参考文章系列

Linux shell 整理之 基本概念篇(一)

Linux shell 整理之 基本概念篇(二)

Linux shell 整理之 用户权限篇(三)

虚拟内存管理

  1. 虚拟内存代表的是一种过程,这个过程是由内核内置维护的内存页面表(映射表)来交换物理内存与实际磁盘指定的位置(swap space)进行数据交换的一个过程(换出,换入)。
  2. 为什么要有这么一个交换过程呢?我们都知道目前内存是昂贵的,磁盘是便宜,而如果把数据存在内存中时间过长,会很容易导致内存oom,所以,有必要设计一个方式和方法,把长时间没有访问过的内存数据块(页),暂时存储到磁盘中
  3. 等到再次访问这个页面的时候,内核会在物流内存换出一个空间,是的将所访问的磁盘页面换入到该空间内才能使用,这样是有一些交换的性能消耗

软件程序管理(应用程序)

  1. 进程的概念,有些资料上说,进程是运行中的程序,这要理解并不非常妥当,因为线程也是运行中的程序。或者说,进程是拥有独立的资源管理的程序,这个程序能够维护其内在的一些线程。
    link
  2. 在内核中,有一个init进程(0号进程),用来初始化启动系统进程的main进程(类似于每个应用程序的main方法函数),总有使用return 0 这个0就代表这0号进程,这是一种文化吧。
  3. 在内核启动的时候会加载init进程到虚拟内存(swap space)中,同时也会为随之启动的其他系统进程分配数据与d代码到虚拟内存中。
  4. 这些启动程序一般会放在/etc/inittab(/etc/init.d),用来管理程序的启动,也可以把代码放在这个目录下来启动,这个非常有用
    yi一般是通过 /etc/rcX.d目录下的入口(entry)①启动, 这里的X代表运行级(run level)。
# cat /etc/init.d/
...
 zhangll_startdjango_pythonserver.sh

# ll /etc/rc*.d/* | grep zhangll
lrwxrwxrwx 1 root root  45 11月 26  2018 /etc/rc0.d/K01zhangll_startdjango_pythonserver.sh -> ../init.d/zhangll_startdjango_pythonserver.sh*
lrwxrwxrwx 1 root root  45 11月 26  2018 /etc/rc1.d/K01zhangll_startdjango_pythonserver.sh -> ../init.d/zhangll_startdjango_pythonserver.sh*
lrwxrwxrwx 1 root root  45 11月 26  2018 /etc/rc2.d/S02zhangll_startdjango_pythonserver.sh -> ../init.d/zhangll_startdjango_pythonserver.sh*
lrwxrwxrwx 1 root root  45 11月 26  2018 /etc/rc3.d/S02zhangll_startdjango_pythonserver.sh -> ../init.d/zhangll_startdjango_pythonserver.sh*
lrwxrwxrwx 1 root root  45 11月 26  2018 /etc/rc4.d/S02zhangll_startdjango_pythonserver.sh -> ../init.d/zhangll_startdjango_pythonserver.sh*
lrwxrwxrwx 1 root root  45 11月 26  2018 /etc/rc5.d/S02zhangll_startdjango_pythonserver.sh -> ../init.d/zhangll_startdjango_pythonserver.sh*
lrwxrwxrwx 1 root root  45 11月 26  2018 /etc/rc6.d/K01zhangll_startdjango_pythonserver.sh -> ../init.d/zhangll_startdjango_pythonserver.sh...

可以发现hangll_startdjango_pythonserver.sh 这个脚本是运行在0-6级别的运行级上的 可以通过
$ runlevel
N 5

ubuntu 级别介绍

硬件设备管理

使用linux的设备,必须要在linux内核中设置匹配的驱动程序代码(专业的人写专业的工具)。相当于就是应用程序与硬件的中间桥梁
两种方式将驱动程序插入内核


  1. 插入代码的时候要重新编译内核
    缺点很明显: 每次一个新插入设备就要重新编译内核,麻烦多多

  2. 即插即用,得益于内核模块的提出与实现

设备的分类

根据处理的数据的数量与文件格式划分

  1. 字符型设备 (c)
    终端 等等,一次只处理一个字符
  2. 块设备 (b)
    磁盘硬盘,每次能处理大块数据
  3. 网络设备 (n)
    网卡等,发送数据与接收数据包(有个回环设备 127.0.0.1)

通信过程

每个设备都有一个节点(特殊文件),这个节点是通信的关卡。且linux会分配这个节点唯一的id作为标志。这个id 包含 主设备号 & 次设备号(子设备号,这样理解才有层次) 类似的设备会分配相同的额主设备号id,子设备号用来区分相同类型的不同设备

文件管理系统

在 设备管理中,所有设备都被合理地通过文件来管理与相互通信。

那么linux系统提供一个标准接口,即通过 VFS(Virtual file system)与每个文件系统进行交互

linux文件系统支持地

ext Linux扩展文件系统,最早的Linux文件系统
ext2 第二扩展文件系统,在ext的基础上提供了更多的功能
ext3 第三扩展文件系统,支持日志功能
ext4 第四扩展文件系统,支持高级日志功能
hpfs OS/2高性能文件系统
jfs IBM日志文件系统
iso9660 ISO 9660文件系统(CD-ROM)
minix MINIX文件系统
msdos 微软的FAT16
ncp Netware文件系统
nfs 网络文件系统
ntfs 支持Microsoft NT文件系统
proc 访问系统信息
ReiserFS 高级Linux文件系统,能提供更好的性能和硬盘恢复功能
smb 支持网络访问的Samba SMB文件系统
sysv 较早期的Unix文件系统
ufs BSD文件系统
umsdos 建立在msdos上的类Unix文件系统
vfat Windows 95文件系统(FAT32)
XFS 高性能64位日志文件系统

每个文件系统通过mount等方式挂载,linux通过VFS,把信息加载到内存中(有疑问,哪些数据信息?)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章