一: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. nowcoder172C 保护 (倍增lca+dfs序+主席树)

    https://www.nowcoder.com/acm/contest/172/C (sbw大佬太强啦 orz) 先把每一个路径(x,y)分成(x,lca),(y,lca)两个路径,然后就能发现,对 ...

  2. (转)Node.js module.exports与exports

    本文转自Node.js module.exports与exports 作者: chemdemo 折腾Node.js有些日子了,下面将陆陆续续记录下使用Node.js的一些细节. 熟悉Node.js的童 ...

  3. ElasticSearch集群介绍二

    ElasticSearch集群 一个运行中的 Elasticsearch 实例称为一个 节点,而集群是由一个或者多个拥有相同 cluster.name 配置的节点组成, 它们共同承担数据和负载的压力. ...

  4. H5新特性之video audio

    1.标签 <video src="~~~" autoplay loop controls controlslist="nodownload nofullscreen ...

  5. python---定义一个session类(无错)

    import tornado.web #放在内存 redis 文件 数据库 container={} #定义一个session类 class Session: def __init__(self,ha ...

  6. js的各种验证

    验证手机号格式是否正确 // 判断是否为手机号 isPoneAvailable: function (pone) { var myreg = /^[1][3,4,5,7,8][0-9]{9}$/; i ...

  7. vue-router源码分析

    上一篇我们写了前端路由,这几天比较闲,抽空研究了vue.js官方路由的vue-router的实现. 本文主要是以vue-router2.7.0(https://github.com/vuejs/vue ...

  8. python 爆破

    python 爆破 #!/usr/bin/python #-*- coding: GB2312 -*- #author:loversorry import urllib2 import urllib ...

  9. luogu 1064 金明的预算方案

    01背包 变形,有主附件的背包内则更改决策 original: 1) 不选   2)选,f[j-w[i]]+v[i] now :     1)不选   2)选主   3)主 附1  4)主 附2   ...

  10. myeclispe 一直运行debug问题

    window->preferences->Myeclipse->Servers->Tomcat 然后找到你的相应的Tomcat服务器的版本,选中然后展开其下面的子菜单会发现有个 ...