请您根据本课程所学内容总结梳理出一个精简的Linux系统概念模型,最大程度统摄整顿本课程及相关的知识信息,模型应该是逻辑上可以运转的、自洽的,并举例某一两个具体例子(比如读写文件、分配内存、使用I/O驱动某个硬件等)纳入模型中验证模型。
谈谈您对课程的心得体会,改进建议等。
冯·诺依曼体系结构计算机中,计算机分为五个部分:运算器、控制器、存储器、输入设备和输出设备,各个部分之间由总线相互连接。存储器负责存储计算所需的数据和程序指令,因为指令和数据都可以以二进制形式存储。该体系结构的工作流程是,程序和操作数通过输入设备从外界接收并存于存储器内。当计算机工作时,控制器和存储器之间通过一个名为程序计数器(PC)的寄存器而相互关联,该寄存器内存储将要执行的下一条指令的存储地址,控制器以次为依据通过总线与存储器交互,获取所需的指令内容,后解析指令,得知执行指令所需的操作数,再通过多种寻址策略从存储器中取得所需的操作数,交给运算器执行。最后根据指令的含义,将执行结果进行适当的处理,PC自增,执行下一条指令,循环此过程即可实现计算机自动执行大量指令。
说易行难。上述过程仅仅存在于一个抽象的理论框架,要想在现实中实现这一切需要解决很多问题。
首先第一个问题:用户怎样把程序和数据通过输入设备输入计算机内?换种说法,如何提供一种用户与计算机进行方便交互的接口?
第一个问题还引申出更为复杂的问题——当用户需要输入数据的时候,正赶上计算机正在运行其他程序,用户怎样进行输入才能使计算机正常运转不被干扰?
第三个问题:计算机硬件门类众多,用户编程需要经常调用底层各种硬件,极为复杂且不安全。如何解决此问题?是否可以考虑提供对底层调用的通用接口,解放用户编程中最危险的部分,将最麻烦且最危险的步骤交给计算机处理?
第四个问题:随着计算机应用领域的广泛以及需求愈加复杂,越来越多的情况下需要计算机及时处理突发状况。当计算机遇到紧急任务急需处理,如何安全地保留当前执行任务的现场,并且尽快转而处理更紧急的任务?
第五个问题:用户输入数据的速度远慢于CPU执行的速度,这导致大量时间被浪费在I/O操作上,工作效率极低。现在对计算机提出更高的要求:如何使计算机进行多任务+批处理?
第六个问题:程序和数据在存储器空间中不是随意存储的。如何管理存储器的存储空间,才能高效运行?
解决上述问题需要一个落于底层硬件上层,但是位于其他应用程序下层,负责和底层硬件进行多种交互的应用程序,也就是操作系统。
考虑上述问题,其中第问题二、三、四、五的本质都是一样的——如何让计算机在执行一任务的时刻转而执行另一任务。做到这一点的是中断机制。
此外,问题三的解决需要操作系统区分内核态与用户态,并利用系统调用机制。
问题五的解决需要引入进程与线程,并且解决进程间调度、通信、同步与防死锁的问题。
问题四涉及到实时操作系统的调度策略。
问题一的解决,需要操作系统为用户提供一套与计算机交互的接口,如shell命令接口;或者GUI图形界面。此外也需要操作系统提供文件管理+I/O设备管理机制。
问题六的解决,需要操作系统提供内存管理机制。
综上所述,操作系统的必要性体现在——
1.操作系统是计算机系统资源的管理者;
2.操作系统为用户与计算机硬件系统之间提供接口。
操作系统提供的功能包括:进程管理、内存管理、文件管理、I/O设备管理等。
Linux内核实现了操作系统的三⼤核⼼功能,即进程管理、内存管理和⽂件系统,对应操作系统原理课程中最重要的 3 个抽象概念是进程、虚拟地址和⽂件。其中,操作系统内核中最核⼼的功能是进程管理。本课程重点讲述的是进程管理和中断机制。