操作系统和内核的关系

今天翻看了一下垫桌神器《现代计算机导论》,里面提到”进程是系统分配资源的最小单位“,系统当然就是指操作系统,但是由操作系统分配资源这个说法显然不够准确。这仅仅是一个比”由这台设备/硬件/电脑分配资源“稍好一点的答案。

网上看了资料发现,更准确的答案应该是由内核负责分配资源给进程。内核又分为“宏内核”和“微内核”。现在所说的内核基本上都是指宏内核,宏内核所负责的东西比较多:进程/线程调度(在 Linux 系统中,线程其实就是进程,只是有些非主线程对应的进程共享了主线程对应的进程的资源)、内存管理、文件系统、中断等等;而微内核则是一个较新的概念,微内核主张只做进程/线程调度,其余的内存管理、文件系统、中断等都由守护进程去实现。

微内核相比于宏内核的优点是提高了稳定性,当内存管理、文件系统、中断等某个环节出现问题,只需要 kill 并重启对应进程即可,而宏内核如果某个环节出现问题,则会导致整个操作系统崩溃,需要对整个操作系统重启;而微内核相比于宏内核的缺点是降低了执行效率,主要是额外多了对多个守护进程的调度。

然后又产生了新的疑问,资源除了内存、硬盘读写(文件句柄)、显卡显存还包括什么?有更全面的概括吗?为什么内核是更准确的答案?操作系统和内核两者之间存在什么关系?

资源包括硬件资源和软件资源:硬件资源包括外设资源(键盘鼠标等输入设备)、总线资源(USB)、CPU资源(时钟,中断等);软件资源包括内存、地址空间、管道等。

操作系统是指管理计算机软硬件的系统软件,而内核是操作系统的核心部分,负责管理和分配系统资源,提供对软件层面的抽象(进程、文件系统、同步、内存、网络协议等对象的操作和权限控制)和对硬件访问的抽象(磁盘,显示,网络接口),所以两者是包含关系,是 os 包含 kernel 的关系。操作系统除了内核外还包括很多预设好的软件,例如 Ubuntu 操作系统除了包括 Linux 内核以外,还包括图形化操作界面和终端等各种软件。

Java 动态代理 几个挺有意思的Java疑问

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×