Linux基础(一)

183 阅读2分钟

这是我参与8月更文挑战的第20天,活动详情查看:8月更文挑战

一、进程的五种状态

  1. 【R】TASK_RUNNING 运行中;
  2. 【S】TASK_INTERRUPTIBLE 可中断的睡眠状态:如等待 socket 连接,等待信号量;
  3. 【D】TASK_UNINTERRUPTIBLE 不可中断的睡眠状态:如等待 IO;
  4. 【Z】TASK_DEAD - EXIT_ZOMBIE / 僵死:已终止,但进程描述符仍存在,直到父进程调用wait4() 后释放;
  5. 【T】TASK_STOPPED / TASK_TRACED 暂停/跟踪状态:如收到 SIGSTOP,SIGKILL 信号后停止运行;

二、虚拟内存

  1. 作为磁盘与主存之间的缓冲区,将磁盘上的空间当作内存使用
  2. 为每个进程提供一致的地址空间,保护每个进程的地址空间不被其他进程破坏;

1. 内核虚拟内存

  1. 全局的数据结构;
  2. 存在于物理内存
  3. 存放内核代码和数据

2. 进程虚拟内存

  1. 共享内存
  2. 运行时(由 malloc 分配);
  3. 未初始化的数据以 .bss 结尾;
  4. 已初始化的数据以 .data 结尾;
  5. 存放用户代码和数据

3. 常用工具

# 查看进程资源占用
top / ps

# 查看应用运行情况,是否有内存泄漏
pprof / runtime.MemStats

# 查看进程的内存映射情况
vmmap

# MacOS 查看程序的系统调用情况,分析进程可疑行为
dtruss

三、swap

  1. 本质:硬盘上划分的一个区域;
  2. 工作原理:内存不够时,会转存一部分到 swap 区;
  3. 优点:磁盘空间当内存用,扩大物理内存;
  4. 缺点:不断读写 swap 区会影响性能;
  5. 应用场景:内存不足;

四、软硬链接

1. 硬链接

  1. 文件有 相同 的 inode 及 data block;
  2. 只能对 已存在 的文件创建;
  3. 不能交叉 文件系统创建;
  4. 多个硬链接可以 关联同一个 inode,删除其中一个 不影响 另外的;

2. 软链接

  1. 就是一个普通文件,仅数据块内容有点特殊;
  2. 有自己的 inode 号以及用户数据块
  3. 有自己的文件属性及权限等
  4. 可对 不存在 的文件或目录创建;
  5. 可以交叉 文件系统创建;
  6. 创建后不增加 i_nlink 链接计数
  7. 删除时 不影响 被指向的文件(等同于 windows 的快捷方式);