首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

进程 进程通常存在PCB中

通俗解释进程-科学家做蛋糕 科学家做蛋糕 然后女儿被蜜蜂蛰了 进程–在内核 内存管理 经典 老式 管理方法: 基址寄存器(程序开始的地方) + 界限寄存器(程序长度) 空闲内存管理...每个框有一个编号,即“框号”(框号=帧号=内存块号=物理块号=物理页号),框号从0开始 将进程的逻辑地址空间也分为与框大小相等的一个个部分,每个部分称为一个“”或“页面”。...操作系统以框为单位为各个进程分配内存空间。进程的每个页面分别放入一个框中。也就是说,进程的页面与内存的框有一一对应的关系。 各个页面不必连续存放,可以放到不相邻的各个框中。...重要的数据结构—— 为了能知道进程的每个页面在内存中存放的位置,操作系统要为每个进程建立一张。...注:通常存在PCB中 一个进程对应一张 进程的每个页面对应一个表项 每个表项由“页号”和“块号”组成 表记录进程页面和实际存放的内存块之间的映射关系

1.4K20

Linux-14】进程地址空间&虚拟空间&——原理&知识点详解

1.基本概念 2.进程是如何和“”进行联系? 3.每个进程都有在“进程切换”如何跟踪 三.地址空间&的作用机理 1.地址空间&的基本原理 2....(的权限控制功能) 5.【实验4】一个游戏的大小远比内存大,他在内存中如何加载呢?(如何实现linux挂起状态) 6....(的权限控制功能) 我们运行下面所示程序,程序会崩溃 int main() { char *str= “hello Linux”; //常量区曾经是如何被修改的?...(如何实现linux挂起状态) 系统并不需要全部将其加载到内存中,加载一部分/不加载,需要时加载 其中涉及到挂起状态 如何实现linux挂起状态?...中有一个字段, 标志内存是否要分配空间 && 有内容 例如:00 01 11 10 二进制形式来表示【是否分配&& 有内容】 实现linux挂起状态 把原来的11状态变成00状态

22910
您找到你想要的搜索结果了吗?
是的
没有找到

一文看懂影子和扩展

3, HVA->HPA,这一过程就是我们已知的使用物理MMU完成VMM进程的虚拟内存到物理内存的转换。 4, 把GVA -> HPA,这一路的映射关系记录到中,这个就是影子。...虚拟机和影子通过一个哈希建立关联(当然也有其他的关联方式),客户机操作系统把当前进程基址载入PDBR时而VMM将会截获这一特权指令,将进程的影子基址载入客户机PDBR,使客户机在恢复运行时...PDBR实际指向的是进程对应的影子。...这样通过影子就可以实现真正的内存访问。 影子实现非常复杂,需要为每个Guest中的每个进程的Guest PT都维护一个对应的Shadow PT。...具体过程 当Guest中进程访问GVA时,CPU首先就要通过PDBR寄存器去找目录,但是PDBR中存储的地址是GPA,所以要到EPT中进行GPA->HPA的转换,这个转换过程和物理MMU的工作流程相同

1.8K20

Linux中PGD、PUD、PMD等概念介绍

1、PGD: Page Global Directory Linux系统中每个进程对应用户空间的pgd是不一样的,但是linux内核 的pgd是一样的。...当创建一个新的进程时,都要为新进程创建一个新的页面目录PGD,并从内核的页面目录swapper_pg_dir中复制内核区间页面目录项至新建进程页面目录PGD的相应位置,具体过程如下:do_fork()...可以看出Linux系统中每个进程的页面目录的第二部分是相同的,所以从进程的角度来看,每个进程有4G字节的虚拟空间,较低的3G字节是自己的用户空间,最高的1G字节则为与所有进程以及内核共享的系统空间。...每个进程有它自己的PGD( Page Global Directory),它是一个物理,并包含一个pgd_t数组。...每一个表项指向一个框,框就是真正的物理内存

3.3K30

内核调试

一、配置内核 首先配置内核,使其支持导出内核到debugfs下面: Kernel hacking ---> ---> [*] Export kernel pagetable layout to...start] - [PCI I/O end]同上,专门用于PCI设备使用的地址空间,一般映射大小为16M [vmemmap start] - [vmemmap end]对与ARM64用于page映射区,linux...地址空间port属性说明 第一列 当前的映射范围地址 第二列 代表此映射范围大小 PMD PUD PTE 当标识为PMD PUD表示当前映射为block映射,如当前为4K,则pud的block映射一次性可映射...当标识为PTE表示为映射即PAGE_SIZE大小4K。 USR AP标记,用于标识当前范围是否在用户空间还是内核空间可读可写或者仅读。...x表述当前范围特权级别模式可执行,就是内核的可执行代码段,在内核中这段一般指向内核的text*段 SHD 表示可共享属性,在arm64上表述为多核之间可共享其可见 AF 访问标志,当首次映射时,

17810

Linux内核管理-那些鲜为人知的秘密

,而管理是在虚拟内存管理中尤为重要,本文主要以回答几个管理中关键性问题来解析Linux内核管理,看一看管理中那些鲜为人知的秘密。...Linux内核为何使用多级?...2)Linux内核 填写,将基地址告诉mmu 内核初始化建立内核,实现缺页异常等机制为用户任务按需分配并映射。 当然,内核也可以遍历,如缺页异常时遍历进程。 10....2)用户填充 访问时缺页填充: 用户进程访问已经申请的虚拟内存时,发生缺页,缺页处理程序中为进程分配各级等物理并建立映射关系。...12.遍历过程 下面以arm64处理器架构多级遍历作为结束(使用4级大小为4K): Linux内核中 可以将扩展到5级,分别是全局目录(Page Global Directory,

1.8K21

深入理解Linux内核映射分页机制原理

每个进程都拥有自己独立的地址空间,进程切换时地址空间也会切换。不同进程都拥有自己的一套,因而即使两个进程虚拟地址相同,映射的物理地址也是不同的。...如下图所示,进程切换时,只需要设置基址寄存器即可完成的切换,也就完成了进程地址空间的切换。所以CPU会为操作系统提供基址寄存器用于进程地址空间的切换。...而Linux有一个三层的结构,可以很容易地将其包装成适合两层的结构—只使用PGD和PTE。但是,Linux还要求每个页面有一个“PTE”,而且至少要有一个“dirty”位。...ARMv7属性的定义分为Linux版本的和ARMv7硬件的Linux版本的PTE属性定义加入前缀L_,如下所示: /* * "Linux" PTE definitions....通过对比Linux版本的和ARMv7硬件的会发现,ARMv7硬件的缺少“dirty”位和“young”位。

3.2K10

Linux-3.14.12内存管理笔记【建立内核(1)】

前面已经分析过了Intel的内存映射和linux的基本使用情况,已知head_32.S仅是建立临时,内核还是要建立内核,做到全面映射的。...建立内核前奏,了解两个很关键的变量: max_pfn:最大物理内存页面帧号; max_low_pfn:低端内存区(直接映射空间区的内存)的最大可用帧号; max_pfn 的值来自setup_arch...Linux是一个支持多硬件平台的操作系统,各种硬件芯片的分页并非固定的2级(全局目录和),仅仅Intel处理器而言,就存在3级的情况(全局目录、中间目录和),而到了64位系统的时候就成了4...所以Linux为了保持良好的兼容性和移植性,系统设计成了以下的4级分页模型,根据平台环境和配置的情况,通过将上级目录和中间目录的索引位设置为0,从而隐藏了三级目录和中间目录的存在。...此外还有一个准备操作,在setup_arch()函数中调用的缓冲区申请操作: early_alloc_pgt_buf(): 【file:/arch/x86/mm/init.c】 void __init

1.8K41

多级的好处

,如果只使用了一个,一个表项的大小为4byte,32位系统有4GB的物理空间(一个进程看到是4GB大小的虚拟空间),每一个表项对应着物理空间的第xxx(4KB大小的),那么应该有4GB/4KB=...1MB个表项,因为每个表项4byte,所以一共有4MB的大小,那么一个进程就会浪费掉4MB的空间。...如果是二级,规则就会改变,让二级对应到物理内存上的4KB大小的,一级此时变成映射为物理地址的4MB(这样子是无法定位到具体的(4KB)的,所以二级再去找),这样先找到一级,一级再和二级进行结合...这样一个进程浪费掉的空间是一级占用的:(4GB/4MB)*4byte=4KB,二级浪费掉的是1kb(1个一级占用这么多)*1kb(此时有1kb(4GB/4MB)个一级)=4MB,加起来是...4MB+4KB,比光用一级要多4KB,但是2级是可以不存在的,比如此时程序只用了%20的,那么4MB就需要乘以%20,这样一下子就比只有一级时少了。

1.7K30

Linux从头学16:操作系统-如何把【目录和】当做普通物理进行操作的?

进行"自操作" 在 x86 系统中,内存管理中的分页机制是非常重要的,在Linux操作系统相关的各种书籍中,这部分内容也是重笔浓彩。...如果你看过 Linux 内核相关书籍,一定对下面这张图又熟悉、又恐惧: 这是 Linux 系统中,处理单元的多级查询方式。...其中黄色背景部分:上级目录索引 和 中间目录索引,是 Linux 系统自己扩展的,在原本的 x86 处理器中是不存在的,这也是导致 Linux 中相关部分代码更加复杂的原因。...文章链接在此:Linux从头学15:【目录和】-理论 + 实例 + 图文的最完全、最接地气详解!,但是其中有一个环节被特意忽略过去了。...详细的讨论过程,请参考上一篇文章:Linux从头学15:【目录和】-理论 + 实例 + 图文的最完全、最接地气详解!。

1.5K20

Linux进程——Linux进程进程优先级

如果对前面Linux进程不太熟悉可以先阅读: Linux进程 本篇主要内容: 僵尸进程和孤儿进程 Linux进程优先级 1. 僵尸进程 僵尸进程就是处于僵尸状态下的进程!...当进程退出并且父进程(使用wait()系统调用,后面讲) 没有读取到子进程退出的返回代码时就会产生僵死(尸)进程 僵死进程会以终止状态保持在进程中,并且会一直在等待父进程读取退出状态代码。...配置进程优先权对多任务环境的linux很有用,可以改善系统性能。...NI :NICE值,表示优先级的修改数据 NICE其取值范围是-20至19,一共40个级别 Linux进程的优先级数值范围:60~99 Linux中默认进程的优先级都是:80 Linux是支持动态优先级调整的...总结 本篇文章前部分紧贴上篇Linux进程,分析完了Linux下常见的进程状态,然后初步了解了Linux进程优先级,而进程优先级与前面内容相差较大,希望大家能够多花点时间理解!

8010

LinuxLinux进程控制>进程创建&&进程终止&&进程等待&&进程程序替换

1.进程创建 1.1 fork函数 在linux中fork函数时非常重要的函数,它从已存在进程中创建一个新进程。...新进程为子进程,而原进程为父进程 #include pid_t fork(void); 返回值:自进程中返回0,父进程返回子进程id,出错返回-1 进程调用fork,当控制转移到内核中的...else if (ret > 0) { // 异常退出 printf("sig code : %d\n", st & 0X7F); } } } 测试结果: [root@localhost linux.../a.out #等20秒退出 child exit code:10 [root@localhost linux]# ....Linux鼓励将这种应用于程序之内的模式扩展到程序之间。如下图 一个C程序可以fork/exec另一个程序,并传给它一些参数。这个被调用的程序执行一定的操作,然后通过exit(n)来返回值。

13010

Linux进程控制——Linux进程等待

前言:接着前面进程终止,话不多说我们进入Linux进程等待的学习,如果你还不了解进程终止建议先了解: Linux进程终止 本篇主要内容: 什么是进程等待 为什么要进行进程等待 如何进程等待...进程等待的概念: 我们通常说的进程等待其实是通过wait/waitpid的方式,让父进程(一般)对子进程进行资源回收的等待过程,父进程必须等待这个子进程结束后,处理它的代码和数据! 2....进程等待必要性 在了解完进程等待的概念后,新的问题出现了,我们为什么要进行进程等待,进程等待的必要性是什么?...进程等待必要性: 若子进程退出,而父进程对它不管不顾,就可能造成‘僵尸进程’的问题,进而造成内存泄漏。...父进程创建子进程的目的是为了让子进程协助自己完成任务的,而父进程需要知道子进程将任务完成得如何。这就需要通过进程等待的方式,获取子进程的退出信息。 3.

8410

Linux进程控制——Linux进程终止

前言:前面了解完前面的Linux进程基础概念后,我们算是解决了Linux进程中的一大麻烦,现在我们准备更深入的了解Linux进程——Linux进程控制!...我们主要介绍的Linux进程控制内容包括:进程终止,进程等待与替换,进程程序替换! 本篇主要内容: 重识进程创建 进程退出场景 错误码和退出码 1....重识进程创建 1.1 fork函数 在我们之前提到过,创建进程使用的是fork函数,它从已存在进程中创建一个新进程。新进程为子进程,而原进程为父进程。...当父进程形成子进程之后,子进程写入,发生写时拷贝,重新申请空间,进行拷贝,修改(OS) 但是,我们怎么知道发生了写时拷贝呢?...写时拷贝的内容都是由操作系统来完成的 其实父进程创建子进程的时候首先将自己的读写权限,改成只读,然后再创建子进程,此时是操作系统在做,用户并不知道,而且用户可能会对某一数据进行写入,这时转换就会出现问题

8510

linux通过进程名杀死进程_linux关闭进程命令

笔记:根据一个进程的名字或启动此进程的命令(连续的一部分即可)杀死进程 一、使用单条命令 ps -ef | grep 进程名/启动进程的命令 | grep -v grep | awk ‘{print $2...}’ | xargs kill -9 执行结果: [1]-  已杀死               sleep 200 [2]+  已杀死               sleep 200 二、编写脚本 linux.../bin/bash # 脚本名:kill_process.sh # 脚本功能:强制杀死进程 方式kill -9     # 1通过ps查询进程的id     # 2使用kill -9 强制终止进程...函数功能:根据进程名杀死程序     参数:进程名     返回值:无 !...————————————————————— # 根据进程名查询包含进程名的进程 并排除grep查询进程和此脚本进程 ps -ef | grep “$pName” | grep -v grep | grep

15.9K20

Linux进程

Linux进程是系统中正在运行的程序的实例。每个进程都有一个唯一的进程标识符(PID),并且拥有自己的地址空间、内存、数据栈以及其他用于跟踪执行状态的属性。...进程可以创建其他进程,被创建的进程称为子进程,创建它们的进程称为父进程。这种关系形成了一个进程树。 1. 进程的类型 在Linux操作系统中,进程是系统进行资源分配和调度的基本单位。...Linux进程可以根据其特性和用途被分为多种类型。以下是一些主要的Linux进程类型: 1....• 僵尸进程已经释放了大部分资源,但仍在进程中保留一个位置,以存储退出状态信息供父进程查询。 • 僵尸进程过多可能会耗尽系统资源。 2....进程间通信(IPC) 进程间通信(IPC)是指两个或多个进程之间传输数据或信号的机制。Linux支持多种IPC机制,包括: 1.

5010

内核知识第八讲,PDE,PTE,目录,的内存管理

内核知识第八讲,PDE,PTE,目录,的内存管理 一丶查看GDT....而我们GDT,微软没有使用它来进行进程隔离.  PS: 微软因为不使用GDT进行进程隔离,所以段选择子都是一样的.基地址都是0,我们的虚拟地址就是线性地址....比如我们的虚拟地址:   004010123,而的首地址是00401000 后12位都是0. 所以我们把的高20位称为页码. 进程内存的保护. 进程内存的保护就通过的方式进行保护的.  ...我们每一个进程都提供这样的一张.但是在那个时代.资源是匮乏的.我们这样做.开不了几个进程内存就会耗光了. 所以微软提供了自己的.而硬件上也提供了支持. 我们看下微软的....首先我们的CR3寄存器保存了的首地址. 这里有一个目录,还有的关键词. 目录: 也称为PDE,而称之为PTE.

1.5K10
领券