内核与操作系统:

内核是操作系统的核心部分,包含了系统运行的核心过程,决定系统的性能,操作系统启动内核被装入到RAM中;

操作系统与底层硬件设备交互和为运行应用程序提供执行环境。

Linux内核与微内核比较:

微内核:内核只需要一个很小的函数集,通常包括几个同步原语,一个简单的调度程序和进程间通信机制。

运行在微内核之上的几个系统进程实现系统级功能:内存分配,设备驱动程序……完全的模块化进程。任何操作

系统层都是独立的程序模块,通过模块化的方法定义明确清晰的软件接口与其它层交互。内核中暂且不需要执行

的系统进程可以被调出或者撤销。微内核便于移植和充分利用RAM,但开销大效率是个问题。

宏内核:Linux内核:单块结构。内核的全部代码,包括所有子系统(如内存管理、文件系统、设备驱动程序)

都打包到一个文件中。内核中的每个函数都可以访问内核中所有其他部分。模块特性依赖于内核与用户层之间设计

精巧的通信方法,这使得模块的热插拔和动态装载得以实现。

每个内核层都被继承到整个内核程序中,并代表着当前进程在内核态下运行。

模块化(非进程)——允许在运行状态下动态的安装。模块是一个目标文件,其代码在运行时链接到内核或从内核解除链接。

目标代码通常是一组函数组成,用来实现文件系统,驱动程序……这些模块与其他静态链接内核函数一样,代表着当前进程

在内核态下执行,直接函数调用避免进程切换消息传递的开销,效率可能更高。

Linux用户程序两种状态:

用户态和内核态;用户态切换到内核态:

    l  进程系统调用

    l  CPU异常

    l  中断

    l  内核线程被执行

  多用户系统:

    能并发执行和独立的执行多个用户的应用程序,各个用户拥有独立空间。用户组,Root用户。

Linux进程:

进程Process:

    l  操作系统的基本抽象。

    l  进程是程序执行时的一个实例;一个运行程序的执行上下文。

    l  几个进程能并发的执行同一个程序;而同一个进程能顺序执行几个程序。

    l  具有独立的地址空间;多个进程可以同时执行。

  进程受内核管理;每个进程由一个进程描述符表示,包含进程当前的状态信息。

  当内核暂停一个进程的执行时,就把几个相关处理器寄存器的内容保存在进程描述符中。这些寄存器包括:

    l  程序计数器PC和栈指针SP寄存器

    l  通用寄存器

    l  浮点寄存器

    l  包含CPU状态信息的处理控制寄存器

    l  跟踪进程对RAM访问的内存管理寄存器

  当内核恢复执行进程时:将进程描述符中合适字段来装在CPU寄存器,根据程序计数器指向恢复到程序执行的地方。

Linux重入内核:

  内核可重入:

    可重入函数:使用局部变量

    实现同步机制:信号量、锁、关中断

  进程执行状态切换: 进程在用户态与内核态的转换,Linux是抢占式内核

  进程地址空间:每个进程运行在似有地址空间

  同步和临界区:内核数据操作访问。

  进程间通信IPC:信号量、消息队列、共享内存

  进程管理:fork与_exit,exec(),子进程与父进程

Linux文件系统:

  文件系统是对存储设备上的数据和元数据进行组织的机制,以树形结构组织。

文件类型:

    不同文件

    目录

    符号链接

    面向块得设备文件                               (设备驱动相关)

    面向字符的设备文件                           (设备驱动相关)

    管道(pipe)和命名管道(named pipe)(进程间通信相关)

    套接字(socket)                             (进程间通信相关)

  文件访问权限和访问模式

  文件描述符和索引节点:记录文件的信息数据。

  文件操作的系统调用:open、read、write……

内存管理:

虚拟内存:处于应用程序内存请求与硬件内存单元之间的逻辑层。

随即访问存储器RAM:一部分用于内核映像,其余虚拟内存处理

内核内存分配器:KMA 处理内存请求子系统

    l  速度快

    l  减少内存浪费

    l  减轻内存碎片

    l  与其他内存管理合作(页框)

    l  内存分配算法

  进程虚拟空间地址处理:内核分配给进程的虚拟地址空间由以下内存区组成:

    l  程序的可执行代码

    l  程序的初始化数据

    l  程序未初始化数据

    l  初始化程序栈

    l  所需共享库的可执行代码和数据

    l  程序动态请求的内存堆

  高速缓存:

设备驱动程序:

内核通过设备驱动程序与I/O设备交互,设备驱动程序在内核中,用户程序通过内核访问设备。

(笔记)Linux内核学习(一)之内核介绍的更多相关文章

  1. (笔记)Linux内核学习(九)之内核内存管理方式

    一 页 内核把物理页作为内存管理的基本单位:内存管理单元(MMU)把虚拟地址转换为物理 地址,通常以页为单位进行处理.MMU以页大小为单位来管理系统中的也表. 32位系统:页大小4KB 64位系统:页 ...

  2. (笔记)Linux内核学习(七)之内核同步机制和实现方式

    一 原子操作 指令以原子的方式执行——执行过程不被打断. 1 原子整数操作 原子操作函数接收的操作数类型——atomic_t //定义 atomic_t v;//初始化 atomic_t u = AT ...

  3. [linux基础学习]默认的目录介绍

    以下用一个表格来罗列linux默认的目录或文件及其用途: 目录/文件 用途 来源 / /处于Linux文件系统树形结构的最顶端,它是Linux文件系统的入口,所有的目录.文件.设备都在/之下. - / ...

  4. [笔记]linux命令学习

    scp /root/Downloads/cymothoa-1-beta.tar.gz root@192.168.1.66:/root/ rc.local exit 0前加入: sh /root/abc ...

  5. linux 驱动学习笔记01--Linux 内核的编译

    由于用的学习材料是<linux设备驱动开发详解(第二版)>,所以linux驱动学习笔记大部分文字描述来自于这本书,学习笔记系列用于自己学习理解的一种查阅和复习方式. #make confi ...

  6. Linux内核学习笔记-1.简介和入门

    原创文章,转载请注明:Linux内核学习笔记-1.简介和入门 By Lucio.Yang 部分内容来自:Linux Kernel Development(Third Edition),Robert L ...

  7. Linux内核学习笔记-2.进程管理

    原创文章,转载请注明:Linux内核学习笔记-2.进程管理) By Lucio.Yang 部分内容来自:Linux Kernel Development(Third Edition),Robert L ...

  8. Linux内核学习笔记二——进程

    Linux内核学习笔记二——进程   一 进程与线程 进程就是处于执行期的程序,包含了独立地址空间,多个执行线程等资源. 线程是进程中活动的对象,每个线程都拥有独立的程序计数器.进程栈和一组进程寄存器 ...

  9. 20135316王剑桥Linux内核学习笔记

    王剑桥Linux内核学习笔记 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 计算机是如何工作的 个人理 ...

随机推荐

  1. Python3练习题系列(10)——项目骨架构建

    目标: 如何创建<项目“骨架”目录> 包含:项目文件布局.自动化测试代码,模组,以及安装脚本. 由于编写一个Python文件可以作为一个模块,一个带__init__.py的目录算一个包. ...

  2. C++ 友元函数总结

    1.为什么要引入友元函数:在实现类之间数据共享时,减少系统开销,提高效率 具体来说:为了使其他类的成员函数直接访问该类的私有变量 即:允许外面的类或函数去访问类的私有变量和保护变量,从而使两个类共享同 ...

  3. react-native ES5与ES6写法对照表

    转载链接:http://www.ncloud.hk/%E6%8A%80%E6%9C%AF%E5%88%86%E4%BA%AB/react-native-es5-and-es6-writing-tabl ...

  4. emSecure Use Digital Signatures to protect your products

    emSecure Use Digital Signatures to protect your products emSecure is an RSA based software solution ...

  5. 【2013Esri全球用户大会精彩案例】GIS for Philadelphia’s Finest --费城警用GIS

     行业领域:警务   拥有6000多警员和侦探的费城警察局,历时三年,搭建了费城警用GIS,目前可以对每天发生的事进行汇总(如图1),并可动态的进行热点分析(如图2).区域指挥官可方便的查看警员的活动 ...

  6. CDH:cdh5环境搭建

    安装环境三台centos7 vmw: cdh- 192.168.0.141 [主节点] cdh- 192.168.0.142 [从节点] cdh- 192.168.0.143 [从节点] 1)[各节点 ...

  7. ThinkPhp 使用PhpExcel导出导入多语言文件

    在ThinkPHP 里已经实现了多语言功能,只要在指定的目录下创建对应的语言文件并填充内容,即可实现多语言功能 而多语言的翻译却是一个很麻烦的事情,因为客户特定的行业问题导致我们翻译可能是不准确的 于 ...

  8. 【T01】理解面向连接和无连接协议之间的区别

    1.面向连接和无连接指的是协议,本质区别在于:对于无连接协议来说,每个分组的处理都独立于其他的分组. 而对于面向连接的协议,协议实现维护了当前分组与后继分组有关的状态信息. 2.无连接就是指udp,分 ...

  9. JAVA消息服务JMS规范及原理详解

    JAVA消息服务JMS规范及原理详解 一.简介 JMS即Java消息服务(Java Message Service)应用程序接口,是一个Java平台中关于面向消息中间件(MOM)的API,用于在两个应 ...

  10. 魅族便签,是否能成为国内便签应用的No.1?

    继前不久锤子科技推出便签 Android 新版后,近期魅族在PRO 6公布会上也公布了最新的魅族便签应用.这一次魅族把便签应用拓展到了整个Android体系,也就是说.其它不论什么的Android手机 ...