从编程的角度理解操作系统及其软件设计

我们都知道操作系统是装在计算机上的,所有的计算机本质上是由CPU、存储器(内存)、IO设备组成,
CPU包括运算器和控制器组成,IO设备包括输入设备和输出设备。
CPU的设计是一个计算机的关键,所有的其他东西都是围绕CPU设计的,CPU通过主板和存储器以及IO设备沟通,
当CPU改变时,对应的主板、内存、IO设备一般都需要改变,当然也可以不改变,因为有标准的存在,有接口的存在。
CPU对编程来说特别关键,因为他包含人为定义的指令系统,指令是控制CPU的关键,CPU是控制计算机的关键。区别
CPU的一点就是这个CPU所支持的指令系统,越新的CPU所支持的指令越多,因为有需要先进的指令被加进来了。不同
厂商生产的CPU所包含的指令系统肯定也不一样,但是还是有标准来控制他们尽量兼容,但是最新的指令是很难兼容的。
操作系统安装在计算机上,因为计算机所使用的CPU不太相同,所以操作系统需要去为这些CPU来分别编写来支持他们,
你用x86的操作系统装以前使用ibm cpu的苹果机,肯定装不上啊,因为操作系统支持的cpu有误。操作系统主要用汇编和
c语言来编写,汇编是针对不同的cpu的,因为汇编是对cpu指令系统的对应,如果cpu不支持这种指令,你让汇编用这种
指令操作cpu肯定是不行的。而c是对汇编的再包装,是个高级语言,因此不用太在意cpu的型号,注意这是使用汇编和c来
编写操作系统而不是其他软件。
安装完操作系统之后,我们就可以编写系统软件和应用软件了,记住这些软件是通过操作系统来运行的,你不能绕过操作系统
去做你想做的事,操作系统就是管理这些软件的,他是硬件和软件的中介,软件想操作硬件,必须通过操作系统来完成或者经过
操作系统的允许。操作系统为什么有漏洞,就是因为软件没有经过操作系统允许就干了操作硬件的事了。
操作系统本质上由内核、外壳、软件组成。内核操作硬件,外壳也是一个软件,一个系统软件,是内核和用户的交互的环境,
注意是环境。既然操作系统是由汇编和c来编写的,那么操作系统肯定给软件们留下了大量汇编和c的库、系统调用或者函数,
以方便汇编或c程序员去在这个操作系统上快速的开发软件,而不用每个函数都要自己实现。这些库、函数或系统调用,
就是操作系统的API,大部分都是c哈,这些api肯定需要实现大部分c标准库了,以方操作系统在各个软件的移植,
这些api加上一些文档就成了操作系统的SDK了。我们使用操作系统的SDK就可以开发最接近
操作系统的软件了,一般是系统软件,当然不排除其他比较底层的应用。
差不多了,我们可以使用汇编来编写驱动了,可以使用c调用操作系统api来开发软件了。

你可能感兴趣的:(操作系统系列,java系列,编译原理系列,编程语言,c/c++系列)