段页式内存管理

内存管理需要解决的问题内存管理无非就是解决三个问题: 如何使进程的地址空间隔离 如果提高内存的使用效率 如何解决程序运行时的重定位问题 现在的内存管理方案就是引入虚拟内存这一中间层。虚拟内存位于程序和物理内存之间,程序只能看见虚拟内存,不能直接访问物理内存。每个程序都有自己独立的虚拟地址空间,这样就做到了进程地址空间的隔离。 引入了虚拟地址技术后,我们需要解决如何将虚拟地址映射到物理地址。这主要有分段和分页两种技术。

fork()与写时复制

没有写时复制时的问题最初在Unit系统中,在使用fork()系统调用创建子进程的时候,会复制父进程的整个地址空间并把复制的那一份分配给子进程。这种情况比较耗时。因为它需要: 为子进程的页表分配空间 为子进程的页分配页面 初始子进程的页表 把父进程的页复制到子进程相应的页中。 创建一个地址空间的这种方法涉及许多内存访问,消耗许多CPU周期,并且完全破环了高速缓存中的内容。在大多数情况下,这种做法常常时毫无意义的,因为许多子进程通过装入一个新的程序开始它们的执行,这样就完全丢弃了所继承的地址空间。

Linux内核设计与实现读书笔记一

进程管理进程相关概念进程就是处于执行期的程序。进程是处于执行期的程序以及相关资源的总称。线程是进程中的活动对象,每个线程都拥有一个独立的程序计数器、进程栈和一组进程寄存器。内核调度的对象是线程而不是进程。 进程描述符及任务结构内核吧进程的列表存放在叫做任务队列的双向循环列表中。链表中每一项的类型都是task_struct、被称为进程描述符。该结构包含了内核管理一个进程所需的所有信息。

Linux常用命令

查找文件find / -name filename.txt查找/目录下名字为filename.txt的文件。 find / -iname filename.txt忽略大小写。(忽略大小写都是在添加i) find /usr/ -path &q...