一:linux系统如何构成的?
User space:User Applications and GNU C library (glibc)
kernel space:System Call interface, Kernel and Architecture-Dependent Kernel Code。

二:为什么linux系统会划分为User space and Kernel space ?

CPU通常实现了不同的工作模式,以ARM为例,实现了7种工作模式:
用户模式(usr),系统模式(sys),管理模式(svc),中断模式(irq),快速中断模式(fiq),数据访问中止模式(abt),未定义指令模式(und)

X86也实现了4个不同的级别:Ring0--Ring3。 Ring0下,可以执行特权指令,在Ring3则有很多限制。linux系统则利用这一特性,使用了其中两级来分别运行linux内核与应用程序,这样使操作系统本身得到充分的保护。 用户代码运行在Ring3,内核代码运行在Ring0.

内核空间与用户空间是程序执行的两种不同的状态,通过系统调用和硬件中断能够完成从用户控件到内核空间的转移

三:linux内核构架:
System Call Interface(SCI), Process Management(PM), Memory Management(MM), Arch, Virtual File System(VFS), Network Stack, Device Drivers(DD)

1:系统调用接口SCI

SCI层为用户空间空间提供了一套标准的系统调用函数来访问linux内核,搭起了用户空间到内核空间的桥梁。

2:进程管理

进程管理的重点是创建进程(fork, exec), 停止进程(kill, exit), 并控制它们之间的通信(signal或者POSIX机制). 进程管理还包括控制活动进程如何共享CPU,即进程调度。

3:内存管理

内存管理的主要作用是控制多个进程安全地共享内存区域

4:网络协议栈

内核协议栈为linux提供了丰富的网络协议实现。

5:Virtual File System

VFS隐藏各种文件系统的具体细节,为文件操作提供个统一的接口。

6:设备驱动

linux内核中有大量代码都在设备驱动程序中,它们控制特定的硬件设备。

参考网址:http://www.cnblogs.com/Daniel-G/archive/2012/10/11/2719944.html

linux 内核是什么?的更多相关文章

  1. Linux 内核概述 - Linux Kernel

    Linux 内核学习笔记整理. Unix unix 已有40历史,但计算机科学家仍认为其是现存操作系统中最大和最优秀的系统,它已成为一种传奇的存在,历经时间的考验却依然声名不坠. 1973 年,在用 ...

  2. 模仿Linux内核kfifo实现的循环缓存

    想实现个循环缓冲区(Circular Buffer),搜了些资料多数是基于循环队列的实现方式.使用一个变量存放缓冲区中的数据长度或者空出来一个空间来判断缓冲区是否满了.偶然间看到分析Linux内核的循 ...

  3. linux内核调试技术之printk

    原创博客:欢迎转载,转载请注明出处https://i.cnblogs.com/EditPosts.aspx?postid=6218383 1.简介(基于s3c2440 linux) 在内核调试技术之中 ...

  4. Linux内核启动过程概述

    版权声明:本文原创,转载需声明作者ID和原文链接地址. Hi!大家好,我是CrazyCatJack.今天给大家带来的是Linux内核启动过程概述.希望能够帮助大家更好的理解Linux内核的启动,并且创 ...

  5. Linux内核配置、编译及Makefile简述

    Hi,大家好!我是CrazyCatJack.最近在学习Linux内核的配置.编译及Makefile文件.今天总结一下学习成果,分享给大家^_^ 1.解压缩打补丁 首先是解压缩你获取到的Linux内核. ...

  6. linux内核数据结构之kfifo

    1.前言 最近项目中用到一个环形缓冲区(ring buffer),代码是由linux内核的kfifo改过来的.缓冲区在文件系统中经常用到,通过缓冲区缓解cpu读写内存和读写磁盘的速度.例如一个进程A产 ...

  7. 浅析linux内核中的idr机制

    idr在linux内核中指的就是整数ID管理机制,从本质上来说,这就是一种将整数ID号和特定指针关联在一起的机制.这个机制最早是在2003年2月加入内核的,当时是作为POSIX定时器的一个补丁.现在, ...

  8. gcc/linux内核中likely、unlikely和__attribute__(section(""))属性

    查看linux内核源码,你会发现有很多if (likely(""))...及if (unlikely(""))...语句,这些语句其实是编译器的一种优化方式,具 ...

  9. Linux 内核版本命名

    Linux 内核版本命名在不同的时期有其不同的规范,我们熟悉的也许是 2.x 版本奇数表示开发版.偶数表示稳定版,但到 2.6.x 以及 3.x 甚至将来的 4.x ,内核版本命名都不遵守这样的约定. ...

  10. 使用串口线真机调试Linux内核

    一.环境 ubuntu 14.04 一台有串口的PC(编号PC1,被调试机器) 另一台PC通过USB转串口线连接PC1(编号PC2,发起调试命令的机器) 二.串口线配置及测试 安装cutecom US ...

随机推荐

  1. oracle存储过程递归调用

    oracle存储过程递归调用,如果where子句使用的是传入的参数, 在以后的递归调用中参数就是第一次调用的参数值,解决办法是定义变量,使用自定义的变量问题可以解决.

  2. 逆向---02.je & jmp & jnz 、OD调试

    上一篇:逆向---01.Nop.中文字符串搜索.保存修改后程序 OD调试基础:(01.02篇练手工具:https://pan.baidu.com/s/1kW2qlCz) nop是删除跳转,你别问我,我 ...

  3. 【codevs1048】石子归并(初级版)

    采用动态规划的原因:合并有一定次序,即:只能相邻石子进行合并. 阶段:当前合并了的区间长度 状态:区间的左右端点 状态转移方程:\(dp[l][r]=min\{dp[l][r],dp[l][k]+dp ...

  4. 中文参考文献如何导入到endnote中

    比如我想在文献中插入“2型糖尿病患者并发脑卒中的前瞻性研究”这篇参考文献,在主题里面输入文献标题,勾选我们要找的文献,点击“导出/参考文献” 导出来以后,点击屏幕右下角界面的“导出/参考文献”,下图红 ...

  5. Kafka配置文件server.properties(三个版本)

    前言 其实每个版本都有些许改动,只不过改动大小而已,但是网上的教程都真的太老了,其实更新一下也费不了多少时间 0.9.0 # Licensed to the Apache Software Found ...

  6. ModuleNotFoundError: No module named 'Crypto.Cipher'

    ModuleNotFoundError: No module named 'Crypto.Cipher'报错问题 原因及处理: 在使用python3是经常会用到import一个第三方库,但是有时候会提 ...

  7. CSS的显示模式

    div与span div与span有什么区别 div单独占一行,span不会单独占一行 div是容器级的标签,而span是一个文本级的标签 容器级的标签有:div , h , ul , ol , dl ...

  8. Bash基本功能

    bash的基本功能 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 欢迎加入:   高级运维工程师之路               598432640 一.历史命令和命令补全 1.历 ...

  9. 10-SQL Server 2008 R2安装步骤

    一.  软件和环境 1.  软件 : SQL Server 2008 R2 企业版     软件下载地址:XXXX 2.  环境要求: .Net FrameWork 3.5 以上 (windows 7 ...

  10. 去除inline-block出现间距的几种方法

    display:inline-block,简单来说就是将对象呈现为inline对象,但是对象的内容作为block对象呈现,之后的内联对象会排列在同一行 比如两个input,默认中间会产生一些间距 &l ...