百度百科上关于操作系统的定义是这样的:操作系统(operation system,简称OS)是管理计算机硬件与软件资源的计算机程序。操作系统需要处理如管理与配置内存、决定系统资源供需的优先次序、控制输入设备与输出设备、操作网络与管理文件系统等基本事务。操作系统也提供一个让用户与系统交互的操作界面。
简单点来说,操作系统就是一款软件,它的作用就是管理电脑,管好电脑硬件以及软件。
如上图,再试想学校是如何管理我们的?校长,党委书记就好像上图当中的操作系统一样,驱动程序类似于班主任,辅导员,而底层硬件正如苦逼的学生一样。
一个人能否进行管理,关键在于它是否具有决策权,正如校长一样,它可以决定你的去留。校长想要管理学生时,不必亲自跑到学生面前,而是通知辅导员去,此时辅导员履行的就是执行权。对于操作系统也是一样,它不必亲自管理硬件,只需让驱动去管理即可
校长想要了解某个学生的情况时,自然而然通过辅导员口中就可以了解到,正如操作系统想要知道底层硬件情况,可以查看驱动返回回来的参数
一个学校的学生可能多达成千上万,校长不可能一一过问,只需使用学生管理系统,把想要管理的信息设置进去(比如成绩),然后通过这些信息评判学生做出判断,并通知导员执行决定。对于操作系统也是一样,面对众多硬件,利用面向对象的思想,将需要了解的信息进行打包,通过信息管理硬件
所以,操作系统在进行管理时,可以用“先描述,再组织”的思想,如何描述?那就是把想要管理的信息使用结构体打包起来,如何组织?那当然就是数据结构的相关知识了。
请问,如何使用C语言在屏幕上输出一行字呢?你可能会说,这还不简单,直接printf,可是大家想过没有这个printf到底是怎么来的。
从我的角度上讲,我的要求就是要在屏幕上输出字,屏幕就是硬件,所以现在就是用户要操作硬件,很显然如果直接操作显然是不可能的,所以必须要经过操作系统,但是操作系统非常复杂,对于非专业人士来讲,随意操作还可能造成系统毁坏。所以系统一般是封装的,但是它会向外提供一些接口(也就是函数)称为系统调用接口。但是很不幸的事实是要很好地使用系统调用也是需要一定的知识的,所以一些开发者会对部分系统调用进行一定的封装,形成库(lib),有了库就有利于上层开发者更好的开发。
也就是说我现在正在开发,有一个需求是想要在屏幕上输出一行字,由于不便于直接去操作系统,虽然操作系统提供了我一些系统调用接口,但是这些接口依旧很难使用或者很复杂(因为就连屏幕打印个字都这么复杂,更不要说其他操作了),所以有了这个需求,一些开发者为了帮我实现整个功能,把某些系统调用进行分装,封装为一个函数叫做printf,而对于我来说,就可以直接使用这个函数了。
经过以上叙述可以总结系统调用和库函数如下
计算机是万万不能没有操作系统的,没有操作系统的计算机和一块砖没有区别。
操作系统对用户来说,他提供了一个稳定高效的工作环境,对下管好软硬件资源,为用户更好的服务