linux内核简介

2018-05-18 15:28:04

内核是用来管理和分配计算机资源的,它主要有进程调度、内存管理、提供文件系统、创建和终止进程、对设备的访问、联网、提供系统调用的接口等。
内核还可以为内阁用户模拟出抽象的虚拟私有计算机,每个用户都可以登录进系统独立操作,与其他用户大致无干。

内核态和用户态

现代处理器一般都允许cpu至少在2种不同的状态下运行即用户态和内核态。与之对应,可将虚拟内存区域划分为用户控件和内核控件。
在用户态运行时,cpu只能访问被标记为用户空间的内存,试图访问内核控件的内存会引发硬件异常。当运行在内核态时,2种内存空间都能访问。
仅当cpu运行在内核态时才能执行某些特定的操作如关机、访问内存管理硬件以及io操作的初始化等。基于这一特性,所以实现者们把操作系统置于内核空间,这就确保用户进程不能访问内核指令和数据结构,同时也无法执行不利于系统的操作。

刷新我们的认知

程序员们都习惯于面向进程的思维方式来考虑编程问题,当我们了解了内核态和用户态后,就应该站在内核的角度重新审视问题。
1.一个运行中的系统通常会有多个进程,对进程而言,它对很多事件的发生都无法预期。执行中的进程不清除自己对cpu的占用何时结束,进程不知道自己在RAM的位置(有没可能在交换空间),进程间不能直接通信,进程本身不同创建进程,连让自己终止的能力都内有。
2.内核则是运行在系统的中枢,它对系统的一切都了如指掌,为系统上的所有进程提供了便利。如上文说得cpu的调度,文件io等都只能是内核来完成,进程根本无能为力。

那么为啥我们平时所了解的,一个进程既可以和其他进程通信又可以写入文件、创建子进程、终止运行等等。其实都是进程通过内核接口来向内核请求的结果,也就是进程可以向内核发送指令(系统调用),然后内核帮助我们完成。


备注

1.本文对内核做了简单的介绍,如果有疑问可以给我留言
2.gcc4.8,运行环境centos7 64位
3.原文地址http://www.freecls.com/a/2712/28

©著作权归作者所有
收藏
推荐阅读
简介
天降大任于斯人也,必先苦其心志。