Linux内核简介

  • Unix从一个失败的多用户操作系统Multics中衍生来的。

  • Unix强大的原因:

    • 简洁
    • 几乎所有的东西都被当做文件来对待,可以通过相同的系统调用接口来进行调用。
    • 因为它是由c语言编写,所以具有强大的移植能力
    • 进程创建迅速,且拥有独特的fork()系统调用
    • 具备清晰的层次化
  • Unix操作系统多样的功能:

    • 抢占式多任务
    • 多线程
    • 虚拟内存
    • 换页
    • 动态链接
    • TCP/IP网络
  • Linux是类Unix系统,但它不是Unix。

  • Linux内核是自由软件。

操作系统和内核简介

  • 内核是操作系统的内在核心,有时候其被称为管理者或者是操作系统核心。
  • 应用程序通过系统调用与内核通信。
  • 内核可以通过中断号查找相应的中断服务程序,并调用这个程序响应和处理中断。
  • 每个处理器在任何指定时间点上的活动必然概括为下列三者之一:
    • 运行于用户空间,执行用户进程
    • 运行于内核空间,处于进程上下文,代表某个特定的进程执行。
    • 运行于内核空间,处于中断上下文,与任何进程无关,处理某个特定的中断。

Linux内核和传统Unix内核的比较

  • Unix内核通常需要硬件系统提供页机制(MMU)以管理内存。

  • 操作系统内核的两大阵营:单内核和微内核

    • 单内核:内核从整体上作为一个单独的大过程来实现,同时也运行在一个单独的地址空间上运行。内核可以直接调用函数。大多数的Unix系统设计为单模块。

      • 简单
      • 性能高
    • 微内核:其的功能被划分为多个独立的过程,每个过程叫做一个服务器。所有的服务器都保持独立并运行在各自的地址空间上,通过消息传递处理内核通信——IPC机制(进程间通信机制),消息传递需要一定的周期。

  • Linux是一个单内核,即Linx内核运行在单独的内核地址空间上。

  • Linux内核与传统的Unix系统之间存在一些显著的差异:

    • Linux支持动态加载内核模块
    • Linux支持对称多处理机制(SMP机制)
    • Linux内核可以抢占
    • Linux对线程支持的实现比较有意思
    • Linux提供具有设备类的面向对象的设备模型、热插拔时间,以及用户控件的设备文件系统
    • Linux忽略了一些拙劣的Unix特性
    • Linux体现了自由。

Linux内核版本

  • 主版本号.从版本号.修订版本号.稳定版本号

从内核出发

  • 使用Git获取Linux版本中的一种版本

      git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git
  • 更新版本

      git pull
  • 安装内核源代码

    • 若为bzip2的压缩形式:tar xvjf linux-x.y.z.tar.bz2
    • GNU的zip:tar xvzf linux-x..y.z.tar.gz
  • 使用补丁:patch -pl< ../patch-x.y.z

  • 内核的配置与安装通过Makefile与config所定。

我有话说:

如果让我一下子去学习内核里面的一堆代码内容,我只能呵呵呵呵呵,好在现在的我有时间,慢慢看吧,毕竟很多事情都可以一件一件一件一件一件一件地完成。

Linux内核设计与实现(chapter1/2)的更多相关文章

  1. 《Linux内核设计与实现》CHAPTER1,2阅读梳理

    <Linux内核设计与实现>CHAPTER1,2阅读梳理 [学习时间:2.5hours] [学习内容:Linux内核简介——历史与现今版本:Linux内核源代码以及编译] CHAPTER1 ...

  2. 《Linux内核设计与实现》学习记录一

    chapter1 Linux内核简介 前言:Unix是一个具有相似应用程序编程接口(API)并且基于相似设计理念的操作系统家族. 1.1 Unix的历史 1.Unix演化版实现了任务管理.换页机制.T ...

  3. 《linux内核设计与实现》实践之模块及深入

     <linux内核设计与实现>实践之模块及深入 写在前面的话. 基础模块部分我已经做完了,设计到的知识点无非就是,编写模块代码,编写Makefile文件,加载模块和卸载模块部分.由于大家都 ...

  4. 《Linux内核设计与实现》CHAPTER13阅读梳理

    <Linux内核设计与实现>第13章阅读总结 [edited by 5216lwr] 一.虚拟文件系统概述 1.虚拟文件系统 (也称作虚拟文件交换或VF)作为内核子系统,为用户空间程序提供 ...

  5. 《Linux内核设计与实现》CHAPTER17阅读梳理

    <Linux内核设计与实现>CHAPTER17阅读梳理 [学习时间:3.5hours] [学习内容:设备类型,模块,内核对象,sysfs] 个人思考部分见[]标出的部分 一.课堂讲解整理& ...

  6. 《Linux内核设计与实现》课本第四章自学笔记——20135203齐岳

    <Linux内核设计与实现>课本第四章自学笔记 进程调度 By20135203齐岳 4.1 多任务 多任务操作系统就是能同时并发的交互执行多个进程的操作系统.多任务操作系统使多个进程处于堵 ...

  7. 《Linux内核设计与实现》课本第三章自学笔记——20135203齐岳

    <Linux内核设计与实现>课本第三章自学笔记 进程管理 By20135203齐岳 进程 进程:处于执行期的程序.包括代码段和打开的文件.挂起的信号.内核内部数据.处理器状态一个或多个具有 ...

  8. 《Linux内核设计与实现》课本第十八章自学笔记——20135203齐岳

    <Linux内核设计与实现>课本第十八章自学笔记 By20135203齐岳 通过打印来调试 printk()是内核提供的格式化打印函数,除了和C库提供的printf()函数功能相同外还有一 ...

  9. 《Linux内核设计与实现》课本第五章学习笔记——20135203齐岳

    <Linux内核设计与实现>课本第五章学习笔记 By20135203齐岳 与内核通信 用户空间进程和硬件设备之间通过系统调用来交互,其主要作用有三个. 为用户空间提供了硬件的抽象接口. 保 ...

  10. 《Linux内核设计与实现》读书笔记 - 目录 (完结)

    读完这本书回过头才发现, 第一篇笔记居然是 2012年8月发的, 将近一年半的时间才看完这本书(汗!!!). 为了方便以后查看, 做个<Linux内核设计与实现>读书笔记 的目录: < ...

随机推荐

  1. 测试dos攻击对openflow中flow_table溢出的影响

    环境准备 环境 ubuntu16.04 mininet pox scapy 安装mininet sudo apt-get update sudo apt-get upgrade git clone g ...

  2. Tushare test

    查看版本 import tushare print(tushare.__version__) 1.2.12 初步的调用方法为: import tushare as ts ts.get_hist_dat ...

  3. 计数dp

    计数dp 计数类的$dp$没做过几个,所以之前都放到"思维"标签下了,后来发现原来这属于一类问题啊...搬过来了. 管道取珠:https://www.lydsy.com/Judge ...

  4. c# winform 自动升级

    winform自动升级程序示例源码下载  客户端思路: 1.新建一个配置文件Update.ini,用来存放软件的客户端版本: [update] version=2011-09-09 15:26 2.新 ...

  5. 更改Apache默认起始(索引)页面:DirectoryIndex

    Apache默认索引页面是index.html,修改成其他文件需要修改httpd.conf文件: # # DirectoryIndex: sets the file that Apache will ...

  6. Oracle RMAN 恢复数据库到不同主机(一)

    一.RMAN 备份的内容 RMAN做数据库全备时包含了 数据文件.归档日志.控制文件和参数文件和备份日志,如下: arch_20160223_08qukp2t_1_1  arch_20160223_0 ...

  7. [转]VS2013+简单稀疏光束调整库SSBA配置(64位编译)

    有关SSBA库的资源比较少,我是在Github上搜索下载的,具体的GitHub官方下载地址为:SSBA 下载后在SSBA解压文件夹下新建文件夹build. 打开cmake gui,在source co ...

  8. char a='1'和char a=1区别

    char a='1'表示:把字符为1,ASSIC码为49的值赋值给a: char a= 1表示:把ASSIC码为1的值赋值给a

  9. Android-ProgressDialog点击对话框外部是不让其消失

    1)ProgressDialog.setCanceledOnTouchOutside(false); 调用这个方法时,按对话框以外的地方不起作用.按返回键还起作用 2)ProgressDialog.s ...

  10. C#/JS AES字符串加密和解密

    往往我们有一种需求:在页面端实现对即将传入到后台端的某些字符串进行加密,然后在后台端对传入进来的字符串做解密.在一些有安全要求的数据传输上会用到此种方式 下面分别列出js端和后台端的加密或解密代码. ...