内核的角色

进程管理
内核负责创建和销毁进程, 并处理它们与外部世界的联系(输入和输出). 不同进程
间通讯(通过信号, 管道, 或者进程间通讯原语)对整个系统功能来说是基本的, 也
由内核处理. 另外, 调度器, 控制进程如何共享 CPU, 是进程管理的一部分. 更通
常地, 内核的进程管理活动实现了多个进程在一个单个或者几个 CPU 之上的抽象.
内存管理
计算机的内存是主要的资源, 处理它所用的策略对系统性能是至关重要的. 内核为
所有进程的每一个都在有限的可用资源上建立了一个虚拟地址空间. 内核的不同部
分与内存管理子系统通过一套函数调用交互, 从简单的 malloc/free 对到更多更
复杂的功能.
文件系统
Unix 在很大程度上基于文件系统的概念; 几乎 Unix 中的任何东西都可看作一个
文件. 内核在非结构化的硬件之上建立了一个结构化的文件系统, 结果是文件的抽
象非常多地在整个系统中应用. 另外, Linux 支持多个文件系统类型, 就是说, 物
理介质上不同的数据组织方式. 例如, 磁盘可被格式化成标准 Linux 的 ext3 文
件系统, 普遍使用的 FAT 文件系统, 或者其他几个文件系统.
设备控制
几乎每个系统操作最终都映射到一个物理设备上. 除了处理器, 内存和非常少的别
的实体之外, 全部中的任何设备控制操作都由特定于要寻址的设备相关的代码来进
行. 这些代码称为设备驱动. 内核中必须嵌入系统中出现的每个外设的驱动, 从硬
盘驱动到键盘和磁带驱动器. 内核功能的这个方面是本书中的我们主要感兴趣的地
方.
网络
网络必须由操作系统来管理, 因为大部分网络操作不是特定于某一个进程: 进入系
统的报文是异步事件. 报文在某一个进程接手之前必须被收集, 识别, 分发. 系统
负责在程序和网络接口之间递送数据报文, 它必须根据程序的网络活动来控制程序
的执行. 另外, 所有的路由和地址解析问题都在内核中实现.

时间: 2024-12-05 06:59:31

内核的角色的相关文章

如何切入 Linux 内核源代码

Makefile不是Make Love 从前在学校,混了四年,没有学到任何东西,每天就是逃课,上网,玩游戏,睡觉.毕业的时候,人家跟我说Makefile我完全不知,但是一说Make Love我就来劲了,现在想来依然觉得丢人. 毫不夸张地说,Kconfig和Makefile是我们浏览内核代码时最为依仗的两个文件.基本上,Linux内核中每一个目录下边都会有一个 Kconfig文件和一个Makefile文件.对于一个希望能够在Linux内核的汪洋代码里看到一丝曙光的人来说,将它们放在怎么重要的地位都

Linux Kernel - Debug Guide (Linux内核调试指南 )

http://blog.csdn.net/blizmax6/article/details/6747601 linux内核调试指南 一些前言 作者前言 知识从哪里来 为什么撰写本文档 为什么需要汇编级调试 ***第一部分:基础知识*** 总纲:内核世界的陷阱 源码阅读的陷阱 代码调试的陷阱 原理理解的陷阱 建立调试环境 发行版的选择和安装 安装交叉编译工具 bin工具集的使用 qemu的使用 initrd.img的原理与制作 x86虚拟调试环境的建立 arm虚拟调试环境的建立 arm开发板调试环

linux内核分析之内存管理

1.struct page 1 /* Each physical page in the system has a struct page associated with 2 * it to keep track of whatever it is we are using the page for at the 3 * moment. Note that we have no way to track which tasks are using 4 * a page, though if it

Helloworld模块之内核makefile详解

Hello World 模块以及对应的内核makefile详解 hello.c: #include <linux/module.h> //所有模块都需要的头文件 #include <linux/init.h> // init&exit相关宏 MODULE_LICENSE("GPL"); MODULE_AUTHOR("feifei"); MODULE_DESCRIPTION("hello world module")

Linux 内核通知链机制的原理及实现

一.概念: 大多数内核子系统都是相互独立的,因此某个子系统可能对其它子系统产生的事件感兴趣.为了满足这个需求,也即是让某个子系统在发生某个事件时通知其它的子 系统,Linux内核提供了通知链的机制.通知链表只能够在内核的子系统之间使用,而不能够在内核与用户空间之间进行事件的通知. 通知链表是一个函数链表,链表上的每一个节点都注册了一个函数.当某个事情发生时,链表上所有节点对应的函数就会被执行.所以对于通知链表来说有一个通知 方与一个接收方.在通知这个事件时所运行的函数由被通知方决定,实际上也即是

使用 /proc 文件系统来访问 linux操作系统 内核的内容 &amp;&amp; 虚拟文件系统vfs及proc详解

http://blog.163.com/he_junwei/blog/static/19793764620152743325659/ http://www.01yun.com/other/20130422/366044.html 使用 /proc 文件系统来访问 Linux 内核的内容 这个虚拟文件系统在内核空间和用户空间之间打开了一个通信窗口 简介: /proc 文件系统是一个虚拟文件系统,通过它可以使用一种新的方法在 Linux? 内核空间和用户空间之间进行通信.在 /proc 文件系统中,

Linux内核——内存管理

内存管理 页 内核把物理页作为内存管理的基本单位:内存管理单元(MMU,管理内存并把虚拟地址转换为物理地址)通常以页为单位进行处理.MMU以页大小为单位来管理系统中的页表.从虚拟内存的角度看,页就是最小单位. 32位系统:页大小4KB 64位系统:页大小8KB 在支持4KB页大小并有1GB物理内存的机器上,物理内存会被划分为262144个页.内核用 struct page 结构表示系统中的每个物理页. struct page { page_flags_t flags;   /* 表示页的状态,每

内核审计系统的实用程序

auditctl - 协助控制内核审计系统的实用程序 概要 auditctl[options] 描述 auditctl程序用于控制行为,获取状态,以及在2.6内核的审计系统中添加或删除规则. 选项 -bbacklog 设置允许的未完成审计缓冲区的最大数量(内核默认值= 64)如果所有缓冲区都已满,则查询故障标志 由内核采取行动. -e[0..2] 设置启用标志.当通过0时,可以暂时禁用审计.当1作为参数传递时,它会 启用审核.要锁定审计配置以使其不能更改,请传递2作为参数.锁定配置 - 意图是任

Linux内核中的通用双向循环链表

开发中接触Linux越来越多,休息放松之余,免不了翻看翻看神秘的Linux的内核.看到双向链表时,觉得挺有意思的,此文记下. 作为众多基础数据结构中的一员,双向循环链表在各种“教科书”中的实现是相当的标准和一致的. 大概就是下面这个样子: 1 typedef struct node_tag{ 2 //T data; 3 struct node_tag *prev; 4 struct node_tag *next; 5 }node; 当你需要某种类型的链表时,把数据成员之类的往节点里塞就是了.比如