操作系统核心原理概述

操作系统概述


    操作系统是在硬件汇编级基础上的软件抽象,相应的,对于硬件汇编级的CPU、多级存储以及外设IO都有自己的程序抽象模型。操作系统向下管理不同的计算机硬件,所谓的管理即对不同硬件的有相应的软件模型,同时通过控制各个软件模型的协作和通讯,来控制各个硬件组件的协作和通讯。操作系统向上为应用软件提供控制硬件组件的程序模型接口,其实是应用软件开发过程中使用的底层接口。这样将应用软件和硬件隔离,不同机器的不同硬件的适配由操作系统完成,开发者不需要关心硬件细节,做到了底层和上层的实现互不影响。
    硬件汇编级的系列文章简略介绍了计算的底层架构,主要涉及CPU、多级存储和外设IO。在操作系统原理中,也有对应的模型和模型的管理方案:和CPU、汇编代码相关的是进程和线程等,代表程序执行的控制流;和多级存储相关的是内存管理、磁盘文件系统管理等,提供程序执行时所需要的数据;和硬件IO相关的是IO软件驱动,支持程序的输入和输出。这三部分的内容也就构成了操作系统的基本要点。

  • 进程与线程
        进程和线程的概念包含了操作系统是如何利用CPU硬件资源的,是动态情况下操作系统层面执行流程的抽象。进程和线程的内容主要包括进程线程的系统模型、创建和终止、进程和线程的调度。还有在分时系统中独占性资源不能同时被多个进程或者线程访问,需要实现进线程间的通讯和互斥,这个在应用程序编程中也常常遇到。这里需要解释一下分时系统。操作系统按照进程或者或者线程能否抢占CPU可以分为批处理操作系统和分时操作系统。在批处理操作系统中,进程一旦占用了CPU就不再放手,直到运行结束,系统才会调度另一进程运行。而分时操作系统中,如果进程或者线程(具体是进程还是线程要看操作系统的实现)不自动放弃CPU,则操作系统则会按照某种规则中断进程或者线程的执行,调度另一个进程或者线程占用CPU,这被称为抢占式调度。这种抢占式调度的时间单位一般是非常短的,短到正在使用电脑的你不能感知到操作系统在不同进程之间频繁切换,感觉上就像多个程序“同时”在运行。现在的大型网络服务器、个人电脑或手机,一般都是使用linux系统内核或者windows桌面系统,这两种操作系统都是分时系统。分时系统可以保证比较好的用户操作交互体验,因为用户操作的当前进程总有机会被分配CPU资源,进程不会因此出现未响应的情况。
  • 多级存储
        内存管理也面临着互斥问题。因为系统中可能有多个进程在运行,如果用汇编语言的执行来理解,就是可能出现多个程序的汇编语句同时读写一个内存地址的情况。这样因为数据被篡改,程序的运行结果和预想也许会不一样。如何保证多个进程使用内存空间时能够不互相影响,操作系统中引入了虚拟内存的设计方式。虚拟内存的实现需要对物理内存进行分块,所以页面置换算法也是内存管理比较重要的方面。
        对应多级存储,操作系统层面的另一个需要抽象的部分是文件系统,一般是指磁盘上数据的管理方式。文件管理系统需要关注的概念包括文件的结构、类型、属性,文件操作,目录的实现和管理,整个文件系统的实现和管理等。
  • IO原理
        最后和硬件汇编级的IO外设一一对应的是操作系统IO原理。由于计算机IO外设非常多,键盘、鼠标、硬盘、u盘、打印机、扫描仪、照相机等等,还包括一些专用设备。很多外设都有自己的配套的管理系统,不能穷举。因此IO软件原理只会涉及操作系统中IO驱动软件的管理方式和一些常见的IO外设的相关内容。

一般的应用程序开发都是在操作系统或者虚拟机的基础上,进程线程、内存管理和IO等都是开发中需要考虑的关键点,养成从底层到上层的思考习惯是解决问题的诀窍,所以深入了解操作系统的核心原理对开发人员来讲十分有必要。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章