操作系统设计思想--主奴思想

操作系统设计思想–主奴思想

对于操作系统而言,如何稳定可靠运行无疑是最重要的。目前的方案均为将用户进程和其他用户进程、将用户进程和操作系统进行分离。实现操作系统可以管理用户进程,但用户进程不能侵入内核,同时用户进程之间也不能互相干预。那么,在同一个cpu同一个指令集以及内存条等的情况下,如何实现该机制?

这就是操作系统设计的一个思想,主奴思想,即特权思想。

我们希望能够实现,操作系统可以访问以及管理应用程序,但应用程序之间不能够互相干预,同时应用程序的权限是有限的,即不可以干扰操作系统。

因此,操作系统需要管理应用程序,令其可访问的内存空间是有界的,同时操作系统负责管理用户进程的CPU访问时间,并且全权管理硬件,应用程序需要使用外设等必须向操作系统请示。

主奴机制的三方面体现
  • 进程调度方面。由操作系统全权管理CPU的调度,Linux操作系统每次分配给进程的运行时间由若干时间片组成,分配多少直接由操作系统决定,同时时间片一旦用完将强制交还给内核。因此,操作系统完全支配CPU调度,这保证了应用程序占用CPU资源的情况最多也只影响分配给该程序的时间片范围,避免了如果由进程自己管理则会出现恶意进程占据CPU不归还的现象,将导致系统崩溃。

  • 内存管理方面。操作系统将管理内存分配,在进程的task_struct结构中明确定义了进程的边界,未经允许的跨界行为将被制止。因此清晰的边界保证了进程不能直接越界访问操作系统内核,也不能随意直接访问其他进程的空间。

    在Linux设计中,将空间氛围了内核专用区和进程分页区,内核可以访问两个区域,但进程不可以访问内核专用区。同时,通过段页机制,用户进程只能访问虚拟地址而不能直接使用物理地址。因为一旦内核地址泄露便很可能会被利用而攻击,一旦恶意程序获得了内核的管理权则直接完全控制了整个机器。

  • 文件系统方面。操作系统管理着磁盘调度,用户需要读写文件都需要向操作系统申请,同时该过程受操作系统调度。

实现主奴机制的关键技术
  • 保护和分页
  • 依托CPU硬件提供的特权级
  • 中断:实现特权级切换
建立主奴机制的决定性因素–先机

理论上,上述的一切前提,都是操作系统能够直接获得最高的优先级。计算机开机时是实模式,没有特权的区分,此时,开始加载BIOS、内核等,因此,操作系统是最早执行的程序,其他进程都是它直接或间接创建的,那其他进程便都是受其管理的。因此,如果一个病毒能够先于操作系统启动,则它将获得最高的特权级,也就将完全控制这个机器。

你可能感兴趣的:(Linux内核)