内存管理
目标
- 多进程并发的场景下如何安全高效的共享内存
- 提高内存利用率和内存寻址效率
主要的内存管理技术
- 引入虚拟内存,使进程对内存地址的访问从直接变为间接,实现了进程地址空间的隔离
- 引入分页机制,实现细粒度的动态内存分配和管理,有效减少了内存碎片,提高了内存利用率
- 通过TLB(地址转换旁路缓存)和多级页表等机制,实现内存快速寻址,提升了内存寻址效率
- 利用外存对物理内存进行扩充,使得实际内存需求量大于剩余物理内存容量的进程依然能在操作系统中顺利运行
c程序在操作系统中执行过程
- 操作系统设置c语言的运行环境,例如设置栈指针
- 设置程序计数器PC跳转到main()函数的起始地址
- CPU中的控制部件去内存中PC的地址取回指令交给CPU执行部件执行
- CPU依次从内存中读入指令执行,指令执行时可能会向内存写入、读入不同的值
PC(程序计数器)
PC(程序计数器)是一个特殊的寄存器,用于存储下一条要执行的指令的内存地址。每当执行一条指令时,PC的值都会根据指令的跳转或分支条件进行更新。
PC的更新机制取决于特定的计算机体系结构和指令集架构。在大多数体系结构中,执行指令时会自动更新PC的值,以指向下一条将要执行的指令。这是计算机执行程序的基本工作原理之一。
因此,对于大多数计算机体系结构来说,每执行一条指令,PC都会自动更新到下一条指令的地址。这使得计算机能够按照程序的顺序逐条执行指令。
请注意,这只是一般情况下的执行流程。在某些情况下,例如条件分支或跳转指令,PC的更新可能会受到程序逻辑或特定指令的影响,以便跳转到不同的指令地址。
参考:《openEuler操作系统》