Operating system 关于核空间的几个问题

Operating system 关于核空间的几个问题,operating-system,Operating System,1.每个进程都有自己的虚拟地址空间,内核也有自己的虚拟地址空间,内核是一堆进程,这是否意味着每个内核进程都有自己的虚拟地址空间 2.在32位体系结构的系统中,每个进程都有4GB的虚拟地址空间,内核空间的大小是多少 3.0x00000000-0xFFFFFF的用户空间被内核占用,但它们是不同的空间,这是如何实现的 4.为什么内核需要将某些内容复制到自己的空间中 每个进程都有自己的虚拟地址空间,内核也有自己的虚拟地址空间,内核是一组进程,这是否意味着每个内核进程都有自己的虚拟地址空间 内核可能没有特

1.每个进程都有自己的虚拟地址空间,内核也有自己的虚拟地址空间,内核是一堆进程,这是否意味着每个内核进程都有自己的虚拟地址空间

2.在32位体系结构的系统中,每个进程都有4GB的虚拟地址空间,内核空间的大小是多少

3.0x00000000-0xFFFFFF的用户空间被内核占用,但它们是不同的空间,这是如何实现的

4.为什么内核需要将某些内容复制到自己的空间中

每个进程都有自己的虚拟地址空间,内核也有自己的虚拟地址空间,内核是一组进程,这是否意味着每个内核进程都有自己的虚拟地址空间

内核可能没有特殊的内核进程。它甚至可能没有特殊的内核线程。例如,不管MSDOS是多么原始,它都没有。它所拥有的只是ISR,各种东西的大量内部代码(如文件系统驱动程序、内存管理器等)和应用程序的系统调用API

操作系统的某些功能可以由用户进程提供(或委托给用户进程)。这就是微内核的概念。与常规进程相比,这些专用进程可能具有额外的特权

在这种情况下,内核几乎是一组子例程,用户进程可以通过某种方式调用(DOS就是这样,除了没有进程,所有的东西都有一个地址空间)。内核仍然必须能够被所有人访问,因此它所在的内存在所有地址空间中共享(例如,通过页面转换)。每个内核都有这样一个公共/共享部分

在32位体系结构系统中,每个进程都有4GB的虚拟地址空间,内核空间的大小是多少

它取决于CPU和内核实现。32位Windows通常为地址空间的用户和内核部分保留2GB。如果需要的话,这可能会被覆盖为用户3GB,内核1GB

内核占用了用户空间的0x00000000-0xFFFFFF,但它们是不同的空间,这是如何实现的

这取决于CPU的MMU。通过x86上的页表,您可以以这样的方式组织整个虚拟地址空间:在进程/线程切换期间,只有一部分虚拟地址空间更改其到物理内存的映射(这是用户部分),而另一部分保持不变(这是共享内核部分)

通常,从CPU的角度来看,只有一个虚拟地址空间。但通常将其部分称为单独的用户和内核虚拟地址空间

为什么内核需要将某些东西复制到自己的空间中

它将如何从进程(例如系统调用参数)获取输入?但最重要的是,如果它必须异步执行一些长时间的输入处理,只接收输入,让调用方继续,然后在工作完成时向调用方发送信号,该怎么办?调用进程可以自由修改或释放刚刚传递给内核的数据缓冲区。内核可能不太“高兴”地观察它正在处理的数据的变化或消失。如果进程中有多个线程,那么即使使用同步调用也会出现此问题,因为在内核处理缓冲区时,另一个线程可以更改缓冲区

将数据复制到或保留在地址空间的内核部分可能还有其他原因

每个进程都有自己的虚拟地址空间,内核也有自己的虚拟地址空间,内核是一组进程,这是否意味着每个内核进程都有自己的虚拟地址空间

内核可能没有特殊的内核进程。它甚至可能没有特殊的内核线程。例如,不管MSDOS是多么原始,它都没有。它所拥有的只是ISR,各种东西的大量内部代码(如文件系统驱动程序、内存管理器等)和应用程序的系统调用API

操作系统的某些功能可以由用户进程提供(或委托给用户进程)。这就是微内核的概念。与常规进程相比,这些专用进程可能具有额外的特权

在这种情况下,内核几乎是一组子例程,用户进程可以通过某种方式调用(DOS就是这样,除了没有进程,所有的东西都有一个地址空间)。内核仍然必须能够被所有人访问,因此它所在的内存在所有地址空间中共享(例如,通过页面转换)。每个内核都有这样一个公共/共享部分

在32位体系结构系统中,每个进程都有4GB的虚拟地址空间,内核空间的大小是多少

它取决于CPU和内核实现。32位Windows通常为地址空间的用户和内核部分保留2GB。如果需要的话,这可能会被覆盖为用户3GB,内核1GB

内核占用了用户空间的0x00000000-0xFFFFFF,但它们是不同的空间,这是如何实现的

这取决于CPU的MMU。通过x86上的页表,您可以以这样的方式组织整个虚拟地址空间:在进程/线程切换期间,只有一部分虚拟地址空间更改其到物理内存的映射(这是用户部分),而另一部分保持不变(这是共享内核部分)

通常,从CPU的角度来看,只有一个虚拟地址空间。但通常将其部分称为单独的用户和内核虚拟地址空间

为什么内核需要将某些东西复制到自己的空间中

它将如何从进程(例如系统调用参数)获取输入?但最重要的是,如果它必须异步执行一些长时间的输入处理,只接收输入,让调用方继续,然后在工作完成时向调用方发送信号,该怎么办?调用进程可以自由修改或取消分配