目录
操作系统的解释
操作系统是计算机中最基础的软件,它运行于内核模式,管理所有所有硬件,执行任何机器能执行的指令。剩下的软件运行于用户模式。每次开机,其实就是我们的操作系统在启动。
广义:操作系统内核+操作系统外壳周边程序(给用户提供使用操作系统的方式)
狭义:操作系统的内核
操作系统既然能管理所有硬件,就可以访问所有硬件,而每一种硬件的特性又不同。如果由操作系统直接访问硬件,则一旦硬件发生变化,操作系统就要响应的做出改变,对操作系统的影响很大。
所以增加了操作系统与硬件层中的驱动层(驱动层是软件,每一种硬件都有自己的驱动层),大部分驱动层都是由厂商自己提供的
体系架构的层状划分
对于我们的外接设备,比如显示器、键盘和鼠标,开机的时候会显示驱动程序正在启动,大约要等一两秒。
操作系统的意义:可以对硬件资源管理(手段),可以方便用户使用(目的)
操作系统对上为用户提供应该稳定、高效和安全的运行环境
操作系统对下提高基本的管理,让硬件在应该稳定、高效和安全的状态运行
操作系统中的管理
其实不止操作系统,很多系统的管理模式都是用面向对象的模式管理的
管理者并不在乎你每个人的个体特征。
在公司里,老板让你买咖啡,并且他很急。买咖啡有多种方式,例如点外卖、自己到楼下购买、托正在外面的同事捎来或者给老板花超绝三块钱冲雀巢等等。然后你就问老板说:老板,那我是去点外卖还是自己买还是给你冲速溶咖啡还是......老板根本不在乎你说的什么,他只会告诉你:不管怎样,我只要我的桌子上放有咖啡。
员工只要搞到咖啡就好了,而老板考虑的就多了(勾潮的鸣式还在追我
老板这个命令就叫面向对象(oop),他不在乎事情处理的过程;底层员工要做的就是处理好这些事情的过程。
面向对象就是把拥有复杂过程的事情抽象为一个类,比如在这里我们把自己买咖啡、点外卖、冲咖啡这种事情全部抽象为搞到咖啡(其实很像那些不近人情的上级会说:我不问过程只要结果呃呃)
本质上获得咖啡的途径,就是面向过程(opp)。也就是说,面向对象的最底层的实现方法还是面向过程。只不过在这里,面向过程被我们抽象为一个类。
按C++的STL来举例子:首先我们需要一个工具箱,里面装着我们需要的东西。于是我们先创造了工具箱这个东西;然后我们就要想在我们的工具箱里塞什么东西,比如说我需要一个排序的函数,需要一个求大值、最小值的函数;然后我们再去编写函数里面的内容,这个函数最里面的内容是面向过程,然后外边整体用的是面向对象的思想。
也就是说对特定对象先描述,再组织
那么和操作系统有什么关系?
也是先描述再组织,描述完才知道如何组织管理
除了用户使用系统,也有恶意的人下攻击系统。系统如何在保护自己的同时给普通用户正常体验?
我们的操作系统预设为所有人都是坏人,用户接触不到我们内部的属性结构,但是我们给用户一个接口,操作接口来使用系统。这种接口是操作系统提供的接口,需要一些知识;也有用户操作接口,方便若智用户的使用,例如C/C++标准库
我们之前提到程序的诞生的最后一步:链接,有动态和静态链接之分
ldd 文件名
查询该文件用了什么库
这个/lib64/libc.so.6就是C语言 动态库
如果要自己实现一门编程语言,那这三剑客必不可少:语法、标准库、编译器
这样以后就直接用库而不用系统接口的(安装VS的时候一方面在安装编译器,一方面在安装标准库、开发包)
不同系统提供的系统接口不同,如果用户直接调用系统接口,那这个代码就可能在Linux下能运行,在Windows下运行不了;但是如果调用用户操作接口来实现,底层差异上层看不见,用起来就很方便,具有跨平台性。
这部分可以被称作比较完备的操作系统: