进程线程、虚拟存储器杂谈

一个完整的操作系统内容包括:进程线程控制、存储器管理、设备文件管理、网络。

本文主要谈谈一个代码源文件被执行的整个过程发生了什么?

       我们知道,一个代码源文件经过预编译、编译汇编会生成目标文件,目标文件再经过链接成可执行文件。现代操作系统采用虚存储器的技术,给每个进程分配独立的虚拟地址空间,好像每个进程能独享整个内存空间一样,当然,分给每个进程只是一个虚拟的空间,并非真实的,落实到每个可执行文件中分配的地址也是虚拟的,需要经过MMU转换成真实物理地址。可执行文件根据不同属性分成不同的segment。同时,当加载该执行文件时,操作系统会新起一个进程通过fork,exec等系统调用,除了复制其父进程的环境变量信息,并在内核栈中维护了一份数据结构,用来记录各个段间的起始地址和属性相关。内核栈中还包括了简单的页表信息,记录该虚拟页是否在内存中缓存,被缓存的结构中包括其真实的物理地址。未被缓存页表结构包含了其对应的磁盘位置。刚加载时,该页表信息基本为空,通过执行可执行文件触发的缺页系统调用来逐步完善页表信息。待内核等相关信息初始化完毕,malloc、文件I/O相关的初始化完成后,分配该进程一定的用户空间,将PC指针的值设置为可执行文件的入口开始执行可执行文件。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值