上一篇博客我们从硬件的角度谈了计算机,我们说到了计算机的效率跟操作系统写的好不好有着直接的关系,那么这篇博客我们从软件的角度,就来谈一谈究竟什么是操作系统,为什么要有操作系统?
首先我们来大体的认识一下操作系统,看看操作系统在从用户和硬件之间处于哪个位置,我们看下面这张图
下面我们来解释一下这张图
有了如上的关系,我们就可以很好的切入进操作系统了:
实际上,当我们给电脑通电时,第一个被加载的软件就是操作系统了,操作系统是进行软硬件资源管理的软件。
那么什么叫管理呢?管理就是做决策+执行。做决策要根据什么呢?比如在学校中,校长要对每个学生做管理,校长拿到学生的信息就可以做管理,他们之间根本不需要见面。这跟操作系统也是一样的,操作系统要拿到数据,对于数据进行做决策,也就是管理。
如果信息十分多呢?我们的校长可以选择写一个struct结构体,把信息通过链表组织起来,这样对于学生的管理操作就变成了对于链表的增删查改。恰巧,我们的Linux就是用C语言写的,它的内核就是这么干的。我们叫做:先描述再组织
那么为什么要有操作系统呢?说白了就是为什么要操作系统的管理?对下管理好软硬件资源,这是手段,对上提供一个稳定、安全、高效的运行环境,这是目的。
那我们要用操作系统就离不开它上面的用户操作接口和系统调用接口。下面我们再来详细的介绍一下它们两个
系统调用接口其实就是函数,因为Linux内核是用C语言写的,所以就是C语言的函数。不同的操作系统的系统调用接口是不一样的。但是用户操作接口为了满足语言的跨平台性,可移植性,在不同的操作系统是相同的,比如printf函数在不同平台都可以用。它们之间的关系大概就像这样:
库函数也是去调用系统调用接口,要不为什么说它们是上下层关系