Linux 进程和线程 内存访问以及调度
2023-09-14 09:15:15 时间
进程和线程我们先从 Linux 的进程谈起,操作系统要运行一个可执行程序,首先要将程序文件加载到内存,然后 CPU 去读取和执行程序指令,而一个进程就是“一次程序的运行过程”,内核会给每一个进程创建一个名为task_struct的数据结构,而内核也是一段程序,系统启动时就被加载到内存中了。
[root@docker ~]# ls /boot/
config-3.10.0-693.el7.x86_64 grub2 initramfs-4.19.20-1.el7.x86_64.img System.map-3.10.0-693.el7.x86_64 vmlinuz-3.10.0-693.el7.x86_64
config-4.19.20-1.el7.x86_64 initramfs-0-rescue-b2942a79696a4216b528ab0e9c10f754.img initrd-plymouth.img System.map-4.19.20-1.el7.x86_64 vmlinuz-4.19.20-1.el7.x86_64
efi initramfs-0-rescue-ebe1e1e21734302f83dc1a22a78a1851.img symvers-3.10.0-693.el7.x86_64.gz vmlinuz-0-rescue-b2942a79696a4216b528ab0e9c10f754
grub initramfs-3.10.0-693.el7.x86_64.img symvers-4.19.20-1.el7.x86_64.gz vmlinuz-0-rescue-ebe1e1e21734302f83dc1a22a78a1851
进程在运行过程中要访问内存,而物理内存是有限的,比如 16GB,那怎么把有限的内存分给不同的进程使用呢?跟 CPU 的分时共享一样,内存也是共享的,Linux 给每个进程虚拟出一块很大的地址空间,比如 32 位机器上进程的虚拟内存地址空间是 4GB,从 0x00000000 到 0xFFFFFFFF。
但这 4GB 并不是真实的物理内存,而是进程访问到了某个虚拟地址,如果这个地址还没有对应的物理内存页,就会产生缺页中断,分配物理内存,MMU(内存管理单元)会将虚拟地址与物理内存页的映射关系保存在页表中,再次访问这个虚拟地址,就能找到相应的物理内存页。每个进程的这 4GB 虚拟地址空间分布如下图所示:
相关文章
- Linux的内存管理
- linux 监控CPU 内存情况
- linux分享二:Linux如何修改字符集
- Linux--多网卡的7种Bond模式
- Linux Token 一次性密码认证
- Linux基础之查看linux发行版以及内核版本
- linux下命令行查看Memcached运行状态(shell)
- 精确度量Linux下进程占用多少内存的方法
- Linux中进程内存RSS与cgroup内存的RSS统计 - 差异
- 【Linux 内核 内存管理】物理分配页 ⑦ ( __alloc_pages_slowpath 慢速路径调用函数源码分析 | 判断页阶数 | 读取 mems_allowed | 分配标志位转换 )
- 【Linux 内核 内存管理】分区伙伴分配器 ② ( free_area 空闲区域结构体源码 | 分配标志位 | GFP_ZONE_TABLE 标志位区域类型映射表 |分配标志位对应的内存区域类型 )
- 【Linux 内核 内存管理】memblock 分配器 ⑤ ( Linux 内核中定义 memblock 分配器的位置 | ARM64体系架构下 Linux内核初始化 memblock 分配器流程 )
- 【Linux 内核 内存管理】Linux 内核内存布局 ② ( x86_64 架构体系内存分布 | 查看 /proc/meminfo 文件 | /proc/meminfo 重要字段解析 )
- L60.linux命令每日一练 -- 第九章 Linux进程管理命令 -- top和nice
- L58.linux命令每日一练 -- 第九章 Linux进程管理命令 -- pgrep和kill
- L44.linux命令每日一练 -- 第七章 Linux用户管理及用户信息查询命令 -- su和visudo
- 如何查看 Red Hat Enterprise Linux 中的系统内存利用率?
- 释放linux 内存
- 嵌入式Linux开发,Ubuntu22下交叉编译报错:make[1]: aarch64-linux-gnu-gcc: No such file or directory
- Android/Linux之procrank查内存工具(九十九)
- Linux for周期运行命令注意事项
- Linux下基于内存分析的Rootkit检测方法——传统方法还是检查已知Rootkit组件默认安装路径上是否存在相应文件,并比对文件签名(signature)。这种检测方式显然过于粗糙,对修改过的/新的Rootkit基本无能为力
- 【linux】Linux操作系统常用指令大全
- Linux 运维 内存监控与设置
- 02 从头开始atac项目 ubuntu20 install r4.2 Linux系统环境配置 服务器版本的rstudio r install in linux /ubuntu/centos