赞
踩
之前在知乎上回答过这个问题“shell、操作系统和内核是一回事吗?”,现在也在blog上总结一下
内核需要做的工作:进程管理(创建进程、进程调度等)、进程间通信(管道、信号等)、文件操作(在硬盘上以我们熟悉的文件的形式创建文件,读文件,写文件等和保存修改等),内存管理(段、页,线性地址到物理地址、进程共享页面),网络(TCP/IP,和远端的计算机收发消息的协议),缓冲区(内存与外设之间的cache,多进程操作缓冲区),以及最开始的计算机硬件中只是操作系统刚刚载入的空空如也的状态到系统怠速迎接响应用户的需求等等等等。内核是操作系统最最核心的部分,可以将内核比喻成大脑,遇到事情,如何应激面对,调用自己身体的其他部分(譬如一些外设)。
shell要做的工作:刚刚将内核比喻成大脑,shell我觉得可以比喻成皮肤、眼睛、耳朵等用于感知的器官。用户的应用程序如何让内核去调度去执行它,我们不可能一下子将应用程序要做的计算直接塞到大脑(内核)中,shell就是应用程序的入口。shell本身也是一个进程,当没有需求的时候它处于休眠状态,当有需求的时候,它就运行起来。当我们用户有需求的时候,譬如在terminal执行./HelloWorld,shell这个进程感知我们这一命令需求,它就作为我们HelloWorld的父进程,去为我们HelloWorld未来以后能够在进程调度的时候被调度做准备工作,例如fork()等,而fork做的工作,譬如创建进程控制块等就是内核要做的工作,可以比喻成你要记住一篇英语课文,那你的大脑需要分化出一部分脑细胞用于记住这篇课文。
硬件譬如显示器,硬盘,键盘等可以比喻成四肢、手(或者干脆比喻成骨头)等,因为他们是能够干具体的事情的,譬如你的手能够将大脑中记住的课文写下本子上,同时内核也能够根据应用程序的需要将“Hello World!”写在显示器上。
还有一部分很重要的就是硬件的驱动程序,可以将它比喻成神经细胞,就是大脑的命令需要他们传输到四肢上。
这样将计算机系统解剖了,可能不恰当。我认为操作系统 = 内核 + shell + 驱动,不知道这么说恰恰不恰当。哦,对了,操作系统的顺利工作离不开中断技术(硬、软)!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。