进程占用资源有哪些

我们常说:“进程是资源分配的基本单位,线程是CPU调度的基本单位。一个进程可以有若干个线程,每个线程会进程的部分资源”。 那么系统中一个进程会占用哪些资源呢?其中哪些是线程共享的,哪些是线程独有的呢?

进程占用的资源

为了实现进程模型,操作系统维护着一张表格,即 进程表 。每个进程占用一个进程表项(有些作者称这些表项为进程控制块)。该表包含了进程状态的重要信息,包括程序计数器、堆栈指针、内存分配状况、所打开文件的状态、账号和调度信息,以及其它在进程由运行态转换到就绪态或阻塞态时必须保存的信息。从而保证该进程随后能再次启动,就像从未被中断过一样。

下图给出了进程表的一些关键字段:

从上图我们可以看出进程占用的资源包括:
  1. 地址空间
  2. 全局变量
  3. 打开的文件
  4. 子进程
  5. 信号量
  6. 账户信息

线程占有的资源

  1. 寄存器
  2. 状态
  3. 程序计数器

下图第一列给出了在一个进程中所有线程共享的内容,第二列给出了每个线程自己的内容。

## 线程共享的资源
  1. 代码段
  2. 数据段
  3. 动态链接库
  4. 进程打开的文件描述符
  5. 信号的处理器
  6. 进程的当前目录
  7. 进程的用户ID和进程组ID

线程独有的内容

(线程上下文:栈、程序计数器、栈指针、运行过程中使用到的寄存器)

  1. 线程ID
  2. 寄存器组的值
  3. 线程的栈
  4. 错误返回码
  5. 线程的信号屏蔽器
  6. 线程优先级
打赏
  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!
  • Copyrights © 2021-2022 Yin Peng
  • 引擎: Hexo   |  主题:修改自 Ayer
  • 访问人数: | 浏览次数:

请我喝杯咖啡吧~

支付宝
微信