每当我们打开一个程序并选择对话框(例如libre office)来选择文件时,我们实际上是在遍历硬盘的文件结构。但这是系统调用吗?如果是,那么当您单击每个文件夹时切换回用户和内核模式是否太多,这将使用户交互过程变慢。?
为进程加载的本地内存怎么样?是否需要系统调用来访问它?
最佳答案
访问文件系统是一个系统调用。
您必须意识到,“慢”在计算机中具有多种含义,具体取决于您的抽象级别。在汇编级别,您处理的是单个 CPU 周期,这对于人类来说是无限短且快速的。在 C 语言规模上,像 Ruby 这样的语言速度非常慢。在用户规模上,相同的 Ruby 代码的执行时间(对于人类来说)是不可察觉的。
内核和用户空间之间的切换仅在程序集级别上“慢”。您的计算机可能每秒在两千上千次之间切换。您在文件系统操作中感受到的任何缓慢都来自硬盘驱动器本身的延迟,硬盘驱动器按照自己的时间尺度运行。
您的代码始终可以直接访问您自己的进程内存。仅需要设置新的分页区域(例如新分配的内存、共享内存、映射文件等)时才需要系统调用。如果任何内存访问触发页面错误以允许内核分页/移动/错误丢失页面,也会触发到内核空间的切换。
关于file - 进程是否需要系统调用来访问内存,例如文件、RAM 上的本地内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20500798/