铺面怎样做放上网站,有好的网站推荐一下吗,做兼职上什么网站,云阿里云做网站操作系统管理物理内存以及与外设磁盘硬件进行数据的交换 操作系统如何管理物理内存呢#xff1f; 其实操作系统内核先对内存先描述再组织的#xff01;操作系统管理内存的基本单位是4KB#xff0c;操作系统会为每一个4KB大小的物理内存块创建一个描述该4KB内存块的struct pa…操作系统管理物理内存以及与外设磁盘硬件进行数据的交换 操作系统如何管理物理内存呢 其实操作系统内核先对内存先描述再组织的操作系统管理内存的基本单位是4KB操作系统会为每一个4KB大小的物理内存块创建一个描述该4KB内存块的struct page结构体该结构体存储着这4KB内存块的属性信息通过管理struct page来对内存进行管理page结构体的大小比较小OS通常将它们组成一个数组因此只要对物理内存的管理就变成了对该数组的管理要想访问某几个页框仅需在page结构体数组中查找即可。 物理内存与磁盘进行数据输入输出时的基本单位是4KB但是如果物理内存现在要将100字节的数据输入给磁盘直接将这100字节的内存数据给磁盘就可以了为什么要必须给4KB内存数据呢 如果仅仅是要多少给多少磁盘是机械设备输入输出数据较慢就可能会导致OS频繁访问磁盘导致整个过程变慢。因此以4KB作为数据交互的基本单位的原因是1.减少IO次数减少访问外设次数提高效率。2.局部性原理。 OS还会对内存管理时采取slab内存分配机制来提升效率OS会将某些高频的数据结构对象用链表等数据结构连接起来存入缓存区先不释放它们这样一来就可以在下次OS需要创建数据结构对象省去malloc创建结构体对象而直接从缓存区拿这样一来就提高了操作系统的工作效率。 被打开文件与文件系统文件之间的联系
被打开文件和文件系统文件之间的联系如下图 将向文件内写入内容的过程 使用c库文件操作函数将内容写入用户级缓冲区再通过fd和write系统调用将内容写入对应的内核级缓冲区再将内容拷贝到磁盘上或直接使用write系统调用通过fd将文件写入对应的内核级缓冲区即页框中再将内容拷贝到磁盘上。 描述文件的struct file里虽然有一部分文件的属性而struct inode中有全部的文件属性。
struct file结构体中有指向struct address_sapce结构体的指针该结构体中有有指向struct page_tree的结构体的指针struct page_tree中有struct page文件页缓冲区内核缓冲区由该缓冲区将用户输入的内容拷贝到磁盘中。
Linux中每一个进程打开的每一个文件都要有自己的储存文件属性的inode和自己的文件页缓冲区。
操作系统在启动时会默认将文件系统中各分区的Super Block各分组的Group Descriptor Table数据拷贝到物理内存中这样就使文件页缓冲区向磁盘中拷贝数据时快速找到要写入的文件区域并且清楚哪些磁盘内存块是已被占用的那些是没被占用的避免造成数据覆盖也提高了文件拷贝的效率。