打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Linux知多少?内核的体系结构

尽管Linux是整体式的宏内核,但其具有相当良好的结构,尽管如此,Linux内核各个组成部分之间的彼此交互是不可避免的。各部分会共享数据结构,而且与严格隔离的系统相比,各部分(因为性能原因)协同工作时需要更多的函数。

下面是一个粗略的草图,概述了组成完成Linux系统的各个层次,以及内核所包含的一些重要子系统。

内核大体的体系结构

进程/切换/调度

传统上,UNIX操作系统下运行的应用程序、服务器以及其他程序都称为进程。每个进程都在CPU的虚拟内存中分配地址空间。各个进程的地址空间是完全独立的,因此进程并不会意识倒彼此的存在。对它们自己来说,它也会认为自己是系统中唯一的进程,如果进程想要彼此通信,就需要特定的内核机制。

Linux是多任务系统,虽然只是看上去并发的执行若干进程,但其实系统中同时真正在运行的进程数目不超过CPU的数目,因此内核会按照短的时间间隔在不同的进程之间切换,由于时间太快,用户是注意不到的,所以产生了并发的假象。

  • 内核借助于CPU的帮助,负责进程切换的技术细节。给每个进程一种错觉,造成CPU总是可用的。


  • 内核还必须确定如何在现存进程之间共享CPU时间,重要的获得的CPU时间多一些,次要的得到的少一点,确定哪个进程运行多长时间称为调度。


UNIX进程

Linux对进程采用了一种层次系统,每个进程都依赖于一个父进程。内核启动init程序作为第一个进程,这个进程负责进一步的系统初始化操作。

树型结构的扩展方式与新进程的创建方式密切相关,UNIX操作系统中创建进程有两种方式,一种是fork,一种是exec。

  • fork可以创建当前进程的一个副本,父进程和子进程只有PID(进程ID)不同。从使用角度来说,父进程内存的内存将被复制,Linux使用了copy on write来提高性能。

  • exec将一个新程序加载到当前进程的内存中并执行,旧程序的内存页将刷出,内容被替换为新数据,并执行新程序。


线程

当然系统除了进程以外,还提供了线程,有时也被成为轻量级进程。Linux使用clone方法创建线程。工作方式类似于fork,但启用了精确的检查,以确认哪些资源是和父进程共享,哪些资源为线程自己创建。在一定程度上,允许线程和进程之间的连续转换。


命名空间

命名空间则是将不同的进程进行分组,将它们隔离起来。在每个组里,进程同样有一个类似init的进程,每个组的资源对外是隔离的,这样的技术使得很多虚拟化技术得以发展,因为计算机上只需要有一个内核管理所有容器。



本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Linux进程管理之基础知识(每个进程都是由一个taskstruct结构来进行描述的(进程控制块)就是指taskstruct)
Linux 内核剖析
IBM developer带你了解Linux内核体系结构
内核体系结构
内核引导过程
高性能服务器设计|高性能服务器,设计
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服