(补充知识)操作系统是一个在软件之上的硬件结构,他一边连通着硬件,一边连接用户。他跟硬件之间是通过二进制指令进行连接的。这又要牵扯到一些译码器的问题,在内存管理的内容中我会进行解释。而操作系统和用户之间是通过接口进行连接的,接口有三种,分别为命令接口,程序接口,图形用户接口。
上个文章中讲到了计算机操作系统中有一个系统调用,它是一种主动的系统调用,他需要跟程序接口进行区分。系统调用可以说是一种特殊的程序接口,给你举个例子加深理解,我们平时用的照相机走聚焦功能,而一般不会拍照的的人只能运行自动聚焦,而那些有很多照相经验的人他们就是作用手动聚焦,。只能说系统调用是一种特殊的程序接口,他们的功能在某些方面是具有相似性的。再举一个中断是的事例:我们都玩lol,当我们按q键的时候,英雄就会放技能。我们知道cpu的四周是有非常多的引脚的,我们现在有两个引脚连接着键盘,当我们按下q键的一瞬间,会传送一个脉冲给cpu,这个脉冲就相当于中断信号(我们平时用的脉冲信号,主要以高电平为主)cpu接受到这个信号时,会读取q按键所储存的二进制代码,判断出他是什么样的动作,之后让你的英雄进行适当技能。看似需要两个步骤,但是cpu的运行速率是非常快的,我们可以忽略不计其中的速度。
![a4cb7b07f858a5bb966408c1e3c51dd1.png](https://i-blog.csdnimg.cn/blog_migrate/562ee1e8a4498259cd875808049f6304.jpeg)
接下来我们谈一个进程管理所要学习的流程:
我们知道我们为我们的计算机安装上了操作系统,引入了多道程序,我们为了进一步的提高并发性,满足计算机对人们欲望的需求。我们就发明了进程(可以见到理解为动态的程序),既然有了进程,我们就要考虑进程所带来的问题,我们要随时的注意其动态所处于的状态(主要是用一个叫pcb的档案袋进行储存),之后就是对进程进行分配,也就是进程的调度。那么如何调度,怎么评价调度,这就引出了调度算法和调度准则。由于进程的并发性,异步性和独立性,就会引出两个问题,一个是死锁问题,另一个是合作与竞争问题(同步和互斥问题)。什么是死锁问题?死锁可以认为是计算机内部出现了问题,一般是由于僧多肉少和资源不足引起的。举个例子:还是类比于人,我把屋子里面积极打扫干净需要用到扫把和撮箕,但是我现在只有撮箕,扫把被人在用,这时我就没办法进行扫地,我必须停滞在那里,这就是死锁。然而要解决死锁问题,就用到了两个办法,银行家算法和死锁定理。还有另外一个问题就是竞争与合作问题,我们做一件事情的时候需要其他人帮助,或者只能我自己做,那么要进行这样的抉择,就需要进行进程间的通信,也就是我们所说的沟通交流。那么如何实现进程间的通信,这就牵扯到了信号量的PV操作,这就是我们进城管理部分的知识点框架。
![a7c8a9e0b3760127cbef7e05882580eb.png](https://i-blog.csdnimg.cn/blog_migrate/8adbc5cef005a2bdd30e82df05a832fd.jpeg)