揭秘操作系统内核:深入浅出进程阻塞与唤醒

一、进程与线程

        操作系统要运行一个可执行的程序,首先要将程序文件加载到内存,然后CPU去读取和执行这些指令,而一个进程就是“一次程序执行的过程”,内核会给每一个进程创建一个名为task_struct 的数据结构,而内核也是一段程序,系统启动时就被加载到了内存中。

        进程在运行过程中要访问内存,而物理内存是有限的,比如内存只有 8GB,那怎么把有限的内存分给不同的进程使用呢?

        跟 CPU 的分时共享一样,内存也是共享的,Linux 给每个进程虚拟出一块很大的地址空间,比如 32 位机器上进程的虚拟内存地址空间是 4GB,从 0x00000000 到 0xFFFFFFFF。但这 4GB 并不是真实的物理内存,而是进程访问到了某个虚拟地址,如果这个地址还有对应的物理内存页,就会产生缺页中断,分配物理内存,MMU(内存管理单元)会将虚拟地址与物理内存页的映射关系保存在页表中,再次访问这个虚拟地址,就能找到相应的物理内存页。每个进程的4G虚拟地址空间如图:

        当物理内存不足时,Linux 会使用交换空间(Swap Space)作为临时的延伸存储。不活跃的进程的部分或全部内存页面会被换出到磁盘上的交换空间,以便为活动进程腾出物理内存。

        Linux 内核采用页面替换算法(如最近最少使用 LRU 等)来决定哪些内存页面应当被换出至交换空间。当需要恢复已被换出的页面时࿰

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

超越不平凡

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值