内核与操作系统:

内核是操作系统的核心部分,包含了系统运行的核心过程,决定系统的性能,操作系统启动内核被装入到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. BZOJ.1070.[SCOI2007]修车(费用流SPFA)

    题目链接 /* 神tm看错题*2.. 假如人员i依次维修W1,W2,...,Wn,那么花费的时间是 W1 + W1+W2 + W1+W2+W3... = W1*n + W2*(n-1) + ... + ...

  2. SQL LOAD TABLE tbl_name FROM MASTER语法 把表的拷贝从主服务器转移到从属服务器。

    用于把表的拷贝从主服务器转移到从属服务器.本语句的主要作用是调试LOAD DATA FROM MASTER.它要求用于连接主服务器的帐户拥有对主服务器的RELOAD和SUPER权限,并拥有对要载入的主 ...

  3. 在Windows系统配置Jekyll

    Jekyll 是一个简单的网站静态页面生成工具.由于是用Ruby语音编写的,所以在Windows系统上配置起来还是稍微有点繁琐的.具体过程如下: 安装Ruby:在Windows系统上当然使用rubyi ...

  4. Eclipse 重构

    使用重构工具可以快捷地将代码变成整洁而高度模块化的代码. Rename Rename 是 Eclipse 中最常用的重构.利用这个重构,可以对变量.类.方法.包.文件夹及几乎任何的 Java 标识符进 ...

  5. SourceTree + Beynod Compare解决Git冲突的方法

    https://www.cnblogs.com/yufeng218/p/6523422.html

  6. VMware内CentOS7虚拟机硬盘扩容

    转自:https://blog.csdn.net/Wang_Xin_SH/article/details/77872885 简介 CentOS7虚拟机原硬盘空间只分配了10GB,需要扩容到20GB.  ...

  7. 隐藏控件--HiddenField控件

    HiddenField控件百度查的结果(帮助大家对比理解): HiddenField控件顾名思义就是隐藏输入框的服务器控件,它能让你保存那些不需要显示在页面上的且对安全性要求不高的数据.也许这个时候应 ...

  8. 【GPU编解码】GPU硬编码 (转)

    一.OpenCV中的硬编码 OpenCV2.4.6中,已实现利用GPU进行写视频,编码过程由cv::gpu::VideoWriter_GPU完成,其示例程序如下. 1 int main(int arg ...

  9. virt-manager中为centos 7.2 扩容根分区

    1. 打开virt-manager,添加一块磁盘. Add Hardware --> 选中Storage --> Manager (操作参考下图) 点击Manager之后,弹出Choose ...

  10. 【AaronYang第一讲】ASP.NET MVC企业开发的基本环境[资源服务器概念]

    学完了ASP.NET MVC4 IN ACTION 六波以后 企业开发演习 标签:AaronYang  茗洋  EasyUI1.3.4   ASP.NET MVC 3 本篇博客地址:http://ww ...