4 Linux 系统部分基础概念


前言 (含目录)


程序 未运行时,置于磁盘中的二进制文件
进程 启动运行后的程序,数据在内存中,占用CPU等系统 资源
用下图咖啡机做比喻
并发 为了让所有人在一段时间内都能喝上咖啡,将这个时间段拆分为很多个小段,一个人一次接咖啡的时间为一小段,依次换人轮流去接,在每一个时刻,都只有一个人在接咖啡,但是一个时间段内,所有人都接到了咖啡
并行 两台咖啡机同时工作,两边都能同时接咖啡

在这里插入图片描述
CPU的工作方式就类似于并发,看一看任务管理器,运行中的进程数量可能成千上万,不可能等待一个一个地执行完,换下一个进程获取CPU进行执行,这样你也做不到,电脑一边放着音乐一边浏览查阅资料. 而是将1s拆分, 1GHz(1x103x103x103)的处理器就有 10亿 个周期,让各个进程交替执行,这个执行几个周期,那个执行几个周期,因为速度太快了,使用者也看不出是在交替执行,感觉上就是在一起运行.

对于进程可处的状态,见下面简图:
在这里插入图片描述

Linux虚拟地址空间
在32位CPU架构下,目前可使用的地址线为36个,可使用的最大物理地址为236B,即64GB,可用地址空间为4GB. 32位Linux下每一个运行的进程,操作系统都会为它分配一个 0~4G的虚拟地址空间 (见下图).
在这里插入图片描述

64位CPU架构下,当前支持的地址线是46个,最大支持的物理地址为246B,即64TB,可用地址空间为64TB.64位的虚拟地址空间分布和32位相似,但是中间留空,只使用两端.

在这里插入图片描述

另外前面篇幅提到的文件描述符(表)是位于PCB(进程控制块)的,而PCB就在Linux内核中. PCB的实现是在task_struct结构体中,内部十分复杂,这里就简述可以经常遇到的.

  • 进程ID: 系统中每个进程都有唯一的ID在C语言中用pid_t表示.
  • 进程的状态: 就绪,运行,挂起,停止…
  • 进程切换时需要保存和恢复的一些CPU寄存器
  • 描述虚拟地址空间的信息
  • 描述控制终端的信息
  • 当前工作目录
  • umask掩码
  • 文件描述符表,包含很多指向file结构体的指针
  • 和信号相关的信息
  • 用户ID和组ID
  • 会话 (Session) 和 进程组
  • 进程可以使用的资源上限
ulimit -a

猜你喜欢

转载自blog.csdn.net/weixin_45579994/article/details/112760392
今日推荐