北京 网站建设咨询顾问公司,建设黑彩网站需要什么,免费好用的crm软件,做网站用什么配置笔记本文章目录前言进程状态进程优先级内存模型进程内存关系前言
进程是一个其中运行着一个或多个线程的地址空间和这些线程所需要的系统资源。一般来说#xff0c;Linux系统会在进程之间共享程序代码和系统函数库#xff0c;所以在任何时刻内存中都只有代码的一份拷贝。 进程状态…
文章目录前言进程状态进程优先级内存模型进程内存关系前言
进程是一个其中运行着一个或多个线程的地址空间和这些线程所需要的系统资源。一般来说Linux系统会在进程之间共享程序代码和系统函数库所以在任何时刻内存中都只有代码的一份拷贝。 进程状态 创建状态进程在创建时需要申请一个空白PCB向其中填写控制和管理进程的信息完成资源分配。如果创建工作无法完成比如资源无法满足就无法被调度运行把此时进程所处状态称为创建状态。
就绪状态进程已经准备好已分配到所需资源只要分配到CPU就能够立即运行。
执行状态进程处于就绪状态被调度后进程进入执行状态。
阻塞状态正在执行的进程由于某些事件I/O请求申请缓存区失败而暂时无法运行进程受到阻塞。在满足请求时进入就绪状态等待系统调用。
终止状态进程结束或出现错误或被系统终止进入终止状态无法再执行。 进程优先级
优先级是指CPU为进程分配资源的先后顺序优先权高的进程有优先执行的权利数字越小优先级越高。 系统优先级取值范围 0至139 nice优先级取值范围 -20至19
可以手动在取值范围内修改优先级在top后按r输入pid再输入nice值。 内存模型 在一个32位的操作系统中每一个进程的虚拟地址空间位4GB。其中1G为内核空间3G为用户空间每一个进程的用户空间又可以分为用户栈、共享库、用户堆、数据段和代码段五个部分。
用户栈用户栈用来保存各种了临时数据包括函数中的参数传递和函数内的局部变量。栈的扩展方向是自顶向下栈底地址为高地址栈顶为低地址栈的出入遵循先进后出原则。
共享库共享库用来保存程序执行时所需要依赖的共享代码库比如libc,这些代码库文件的实际地址会被会被映射到用户栈下方的虚拟地址并被标记为只读。
用户堆用户堆管理的是用户程序在运行过程中动态分配的内存当用户需要时可以通过手动申请用完之后在手动清空。堆的扩展方向与栈相反为自底向上堆底在低地址堆顶在高地址当用户申请内存堆顶指针会向上生长。
数据段数据段主要保存的是程序中的全局变量、静态变量以及字符串常量这些变量的生存周期通常是伴随程序的整个运行周期。
代码段代码段主要保存的是编译完成的二进制代码。
内核地址空间内核地址空间在进程用户态运行时通常是不可见的只有进程进入到内核态时才能进行内核内存访问。 进程内存关系 进程即值执行的程序都必须占用一定数量的内存用来存放从磁盘载入的程序代码还有存放取自用户输入的数据等等。不过进程对这些内存的管理方式因内存用途不一而不尽相同有些内存是事先静态分配和统一回收的而有些却是按需要动态分配和回收的。
进程组成线程(协程) 代码 数据 打开文件 地址空间