1.cpu 相关的

进程的上下文切换是什么意思?

进程切换是保存当前进程运行状态恢复另一个进程的运行状态,主要包括栈指针,程序计数器,寄存器,如果是不同进程之间的线程切换,还包括地址切换,比如页表寄存器和页表内容。

 

用户态和内核态的切换和进程切换的不同之处在于切换发生在同一个进程,不需要切换地址空间。

 

Linux 进程内存包括哪些部分

首先是程序代码段,常量区,已初始化的全局变量和静态变量,未初始化的全局变量和静态变量的数据区,堆段,栈段,由高地址向低地址扩展。

堆和栈的区别是堆申请需要耗费更多资源,有程序调用,有分配和释放的过程。

 

一个 write 过程发生了什么?

答:首先系统调用,CPU 从用户态切换到内核态,把数据从用户空间拷贝到内核空间,之后就成功返回,write 调用成功不代表写入磁盘,异步刷盘,可以使用同步的 fsync 同步地刷盘。

如果 write 或者 send 的是套接字,就把数据缓存到 socket 缓冲区,由 TCP 封装成段,然后由驱动网卡异步地发送到对端,收到确认之后就清空缓冲区被确认的部分。

 

一个 read 过程发生了什么?

然后是系统调用,如果数据已经在内核的 page cache 中就直接把数据拷贝到用户空间,如果不存在就首先把数据从磁盘读入内核空间,然后拷贝到用户空间再返回。

 

2.输入输出设备相关

cpu 和 IO 设备交互的方式

有四种分别是 cpu 轮询,中断处理方式,dma 方式,通道 IO,cpu 轮询是 cpu 不断询问 io 处理的结果并处理,中断处理方式数据准备过程可以去做其他处理,然后设备异步通知cpu,由 cpu 处理,dma 方式可以由 dma 设备专门处理数据,处理速度更高效,cpu 只在传输前后处理,通道 io 提供了更多,有单独的通道处理器可以处理指令,cpu 可以指示通道处理器处理。

 

3.存储相关

虚拟地址是做什么的?

虚拟技术把一个物理上的实体映射成多个逻辑上的实体,虚拟地址空间实现了对物理内存的扩充,在实际使用过程中每个进程独享内存的地址空间,在实际访问中发生虚拟地址到物理地址的映射,主要是通过 TLB 和页表去完成地址转换。

虚拟技术是基于页面的换入换出的,如果页面不在内存中需要通过缺页异常调入内存。

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐