提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
前言
一、概念
二、结构示意图
三、尝试理解操作系统
系统调用和库函数概念
承上启下
总结
前言
世上有两种耀眼的光芒,一种是正在升起的太阳,一种是正在努力学习编程的你!一个爱学编程的人。各位看官,我衷心的希望这篇博客能对你们有所帮助,同时也希望各位看官能对我的文章给与点评,希望我们能够携手共同促进进步,在编程的道路上越走越远!
提示:以下是本篇文章正文内容,下面案例可供参考
一、概念
任何计算机系统都包含一个基本的程序集合,称为操作系统(OS)。
操作系统是进行软硬件资源管理的软件。
广义的认识:操作系统的内核(进程管理,内存管理,文件管理,驱动管理) + 操作系统的外壳周边程序(给用户提供使用操作系统的方式,比如:图形化界面)
狭义:只是操作系统的内核
二、结构示意图
如果操作系统直接去管理硬件的话,比如:操作系统直接管理磁盘,那么当磁盘更换或更新时,操作系统不一定还能管理磁盘,此时只能修改操作系统了,好让操作系统能继续管理磁盘,这是非常不好的。
所以有了驱动层的出现,驱动程序大部分是由厂商来提供的,也就是说每一个硬件都有属于自己的驱动程序,驱动层给操作系统提供一个接口,操作系统就通过接口来管理硬件了。那么当硬件变更的时候,只需要接上硬件匹配的驱动程序就可以了,不用在对操作系统做修改了。
操作系统对下:对软硬件进行资源的管理(手段)。
操作系统对上:为用户提供一个良好的、稳定的、安全的、高效的运行环境(目的)。
三、尝试理解操作系统
校长 -----> 辅导员 -------> 学生
校长管理好学生,不需要管理者和被管理者直接接触。
如何管理的呢?拿到你的数据才是目的!管理学生,本质是对学生数据做管理。
任何管理:
先描述 -------> 再组织
比如:校长要管理好10000名学生,校长可以用C语言中的结构体,先对学生进行描述,学生的类别都是一样的,都是人,但是人们的属性不一样,有男有女,有高有低,有年纪的区别,学习成绩的好坏等等;所以用结构体来描述学生,结构体的成员有性别、年龄、身高、成绩、年级等等,描述完成之后;可以把每一个学生的结构体当作一个节点对象,用链表来将他们组织起来【这里的链表起容器(数据结构)的作用】,然后可以对链表进行增删查改的运算操作,就能对链表管理起来了。
这里我们做个比喻:
操作系统:校长 驱动程序:辅导员 底层硬件:学生 用户:其他学校的校长
用户可以直接访问底层硬件吗?
不能,这就好比其他学校的校长可以直接在自己本学校随意指挥学生吗?其他学校的校长要想要使用本学校的学生,只能找本地学校的校长来进行沟通。
所以,我们的用户想要访问底层硬件,只能通过操作系统来访问。
操作系统是来进行软硬件资源管理的,所以操作系统内部有所有软硬件的数据。
那用户能直接使用操作系统内的数据吗?
不能,这就好比,你在银行里存钱、取钱的操作,能让你一个人来完成吗?很显然,银行不会相信任何人,他们会设一个窗口,来进行业务的完成。
所以,出现了系统调用接口,就相当于系统调用接口是函数声明,而操作系统是函数的实现,用户要通过调用函数(系统调用接口)来访问函数的实现(操作系统)。
系统调用和库函数概念
- 在开发角度,操作系统对外会表现为一个整体,但是会暴露自己的部分接口,供上层开发使用,这部分由操作系统提供的接口,叫做系统调用。
- 系统调用在使用上,功能比较基础,对用户的要求相对也比较高,所以,有心的开发者可以对部分系统调用进行适度封装,从而形成库,有了库,就很有利于更上层用户或者开发者进行二次开发。
承上启下
那在还没有学习进程之前,就问大家,操作系统是怎么管理进行进程管理的呢?很简单,先把进程描述起来,再把 进程组织起来!
总结
好了,本篇博客到这里就结束了,如果有更好的观点,请及时留言,我会认真观看并学习。
不积硅步,无以至千里;不积小流,无以成江海。