Loading

Linux总结

Linux 模型

  • 系统调用
  • I/O
    • 文件系统
    • 设备驱动
  • 内存管理
    • 虚拟内存
    • 页面替换
    • 页面缓存
  • 进程管理
    • 创建
    • 切换
    • 调度
  • 中断

进程管理

进程创建

  • 0 号进程由上帝之手创建
  • 1 号进程由 pthread_create()创建,是用户进程的祖先
  • 2 号进程同样由 pthread_create()创建,是内核线程的祖先

fork()和 pthread_create()都调用了_do_fork()

进程切换

假设某一时刻进程 A 在 CPU 上运行,突然来了一个时钟中断,此时硬件会把 CPU 相关状态保存到进程 A 的内核栈并陷入内核,这是中断上下文的切换,此时 CPU 的控制权由内核持有,假设内核决定切换到进程 B,它会调用 switch 例程,把当前 CPU 状态保存到 task_struct 结构体里,这是进程上下文的切换,后面会从进程 B 的 task_struct 结构体里保存的 CPU 状态恢复到相关寄存器,这就切换到了进程 B,接着从进程 B 的内核栈恢复相关寄存器,从内核态返回用户态。

进程调度

Linux 有 0~139 共 140 个优先级,0~99 为实时进程,100~139 为普通进程,可分为三种调度:

  • 实时 FIFO
  • 实时 RR
  • 普通优先级调度
posted @ 2021-05-18 17:28  景彡  阅读(70)  评论(0)    收藏  举报