关于如何理解操作系统,其实完全可以用暗杀教室来举例。
新的学期开始了,敬业的杀老师为了完成最后的约定,满怀期待地推开了教室的大门。
令他吃惊的是,教室里只有小渚一人站在那里。
杀老师无奈地叹了口气,开始了新学期的第一堂课。
好的,上述便是一个操作系统模型,请你把整个教室想象成一个操作系统。
★杀老师---CPU
★学生---用户级线程
★上课的这个过程---进程
不一会,小枫同学也推开了教室的大门。
小枫是一个差生,学习的进度完全赶不上小渚。还好这对于移动速度可以达到20马赫的杀老师来说都不是事。
一个人只要来回地不停移动,就可以完成犹如分身术一样的操作。
这下就可以一对一教学了
这便是多进程的图像,CPU通过时间片轮转的方式来回切换,实现了多个进程同时运行。
过了一会,小业同学也来了。
他可是个难缠的优等生,完全不把老师放在眼里。
他表示,“我只想一个人安静的看看书,有啥不懂的地方再来问老师 ”。老师也很无奈,但谁让人家学习好呢。
不过,事还每完,小业又说:”如果没有个座位的你让人怎么看书呢?亲爱的杀老师“。杀老师忍了,给他端了一个板凳过来。
★座位---内核级线程
★看书---IO请求
用户编写的程序是各式各样的,有一些便包含了对IO的请求(小业同学)。但是,一个用户线程不能达到直接对IO的控制,因为只有操作系统才能与硬件打交道,参与硬件的管理。因此,操作系统会向上层提供内核级线程(座位)的支持。当一个内核级线程服务于用户级线程时,便能够取得对外部设备的控制
话说学霸小业果真是学霸,学起来完全不用老师的操心。
老师点点头,发出了会心的微笑。
★自习的过程---阻塞态
通常,IO请求(例如读写磁盘)用时非常地长。在此期间,完全可以释放对CPU的占用,将自己置为阻塞态。CPU只要定期过来检查其是否完成便可,期间无序等待。
看到小业那么狂,有些同学不服气也要自习。
为了减轻工作量,杀老师给教室里添加了一个铃铛,有人想要自习了,只要敲一下铃铛老师就会拿一个板凳过来。
★铃铛---系统调用
有些线程会不定期地进行IO操作,当想要进行IO操作时,线程会通过系统调用来使操作系统为其分配内核级线程,达到对硬件的访问。
另一边,小冈和小贝上的是同一堂课程,它们坐在一起,对老师讲课的内容津津乐道。
同一个进程中(一堂课)会有多个线程,进程中的线程能够互相进行通信。