• 操作系统内核


    如果说操作系统是一辆车,那么操作系统内核就是发动机。操作系统内核是操作系统最核心的部分,负责调度cpu资源,管理进程和内存等。用户应用程序不能直接操作硬件,而是需要通过内核这个中间层,由内核真正的操纵硬件资源(硬件驱动程序也属于内核当中)。

    操作系统内核的体系结构:

    Linux中每一个进程都依赖一个父进程,内核启动程序init程序作为第一个进程,该进程在系统初始化的时候再进一步创建其他进程(fork, 创建当前进程的副本,只有pid不同,内存也将被复制;exec,将一个新程序加入到当前进程的内存并执行)

    pstree可以看到进程的层次结构:

    在Linux中使用clone方法创建线程,工作方式类似于fork,但是启用了精确的检查,以确认哪些资源和父进程共享,哪些资源为线程自己创建。

    Linux提供了命名空间(namespace)技术,可以将不同进程进行分组,不同的组可以互相隔离(环境隔离),每个组中都有一个唯一的init进程(父进程),该技术让虚拟化技术得以发展。但是仅仅环境隔离还不够,因为进程使用CPU、内存、磁盘等资源还是可以随心所欲的,所以Linux内核又提供了CGroup技术,使得计算资源得以隔离,即A组中的进程只能使用分配给A的cpu、内存、磁盘等,而不能去干涉B组中的资源。虚拟机由此诞生。

    进程间的相互通信是通过信号(Signal)来实现的,信号用于将系统事件报告给进程。例如当用户按下Ctrl+C时,实际上是发送了一个SIGINT中断信号,用来终止当前执行的进程。Linux中大约有20多种不同的信号。

    当用户在键盘上敲入一个字符或者点击鼠标的时候,会产生中断(不同事件会有不同的标识,并由中断向量表来选择由哪个中断处理程序处理),当一个中断信号到达时,CPU必须停止它当前正在做的事情,保留上下文,并调用中断处理程序(内核控制路径,并不是进程)将中断尽可能快的处理完(关键而紧急的部分立即执行,其他的部分内核随后会执行,例如I/O设备(比如网卡)发出的所有中断请求都是可屏蔽中断,cpu在稍后会一起执行)。同步中断(又叫异常,只有在CPU执行完当前指令后才会发出中断,又分为故障(缺页异常),陷阱,异常终止,编程异常)和异步中断(中断,由其他硬件设备根据CPU时钟信号随机产生)统称为中断信号。

    内核线程(又叫守护进程)是直接由内核本身启动的进程,只运行在内核态,只能使用3~4G的虚拟地址空间。内核线程与用户进程并行地执行,实现内存页置换,监控资源等操作。

    读写自旋锁:rwlock_t结构,允许多个内核控制路径并发的读,但是如果有一个内核控制路径想修改结构,则需要先获取读写自旋锁的写锁。

  • 相关阅读:
    Cheapest Palindrome(区间DP)
    Dividing coins (01背包)
    Cow Exhibition (01背包)
    Bone Collector II(01背包kth)
    饭卡(01背包)
    Charm Bracelet(01背包)
    Investment(完全背包)
    Bone Collector(01背包)
    Robberies(01背包)
    ACboy needs your help(分组背包)
  • 原文地址:https://www.cnblogs.com/james111/p/7246802.html
Copyright © 2020-2023  润新知