第四周课本学习 (第一章 第二章 )

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第四周课本学习 (第一章 第二章 )相关的知识,希望对你有一定的参考价值。

Linux内核简介 

1.3 操作系统和内核简介 

操作系统 :是指在整个系统中负责完成最基本功能和系统管理的那些部分 它包括:内核 设备驱动 启动引导程序 命令行shell或者其他种类的用户界面 基本的文件管理工具和系统工具 

内核:由负责响应中断的中断服务程序,负责管理多个进程从而分享处理器的时间调度程序,负责管理进程地址空间的内存程序和网络,进程间通讯等系统服务程序共同组成 

处理器的活动必然其下三者之一:

  • 运行于用户空间,执行用户进程
  • 运行于内核空间,处于进程上下文,代表某个特定的进程执行

1.4 Linux内核与传统内核的比较

•  单内核与微内核设计之比较 

•  单内核是一种较为简单的设计 所有的内核都设计成单内核 单内核就是把它从整体上作为一个单独的大过程来实现 同时也运行在一个单独的地址空间上  所有的内核服务都是在这样的一个大内核地址空间上运行 。

(内核之间的通信是微不足道的 )

  • 微内核
  • 内核按功能被划分成各个独立的过程。每个过程独立的运行在自己的地址空间上。
    • 微内核
      • 内核按功能被划分成各个独立的过程。每个过程独立的运行在自己的地址空间上。
      • 优点:安全。内核的各种服务独立运行,一种服务挂了不会影响其他服务。
      • 缺点:内核各个服务之间的调用涉及进程间的通信,比较复杂且效率低。
    优点:安全。内核的各种服务独立运行,一种服务挂了不会影响其他服务。缺点:内核各个服务之间的调用涉及进程间的通信,比较复杂且效率低。

1.5 Linux内核版本


Linux内核有两种 :•  稳定的

                               • 处于开发的

技术分享

偶数:稳定版

奇数:开发版

 

从内核出发

1.2 获取内核源码 

 

1.21. Git

 

  • git实际上是一种开源的分布式版本控制工具。
  • Linux作为一个开源的内核,其源代码也可以用git下载和管理

    - 获取最新提交到版本树的一个副本
    - $ git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git
    - 下载代码后,更新自己的分支到最新分支
    - $ git pull

 

1.22安装内核源代码

 

  • 压缩形式为bzip2:$ tar xvjf linux-x.y.z.tar.bz2
  • 压缩形式为zip:$ tar xvzf linux-x.y.z.tar.gz

    关于参数:
    -x 解开.tar格式的文件
    -v 显示详细信息
    -j 使用bzip2程序
    -z 使用gzip程序
    -f 使用归档文件

 

1.23 使用补丁

 

从内部源码树开始,运行$ patch -p1 < ../patch-x,y,z

2.2 内核源码树 

技术分享

 

2.3 编译内核 

 

 配置选项(指定内核源码可以访问的值,一般以预处理宏的形式表示)

•  决定哪些文件编译进内核;通过预处理命令处理代码。

•  .二选一:yes/no

•  三选一:yes(把代码编译进主内核映像中)/no/module(该配置项被选定了)【驱动程序一般是三选一】

•  可以是字符串或整数 - 配置工具: $ make config 配置命令解释器,最简单的一个字符界面下的命令行工具; $ make menuconfig 配置用户界面,基于ncurse库的图形界面工具; $ make gconfig 基于gtk+的图形工具; $ make defconfig 基于默认的配置为个人的体系结构创建一个配置; $ make oldconfig 验证和更新配置; - .config文件:配置项会被存放在内核代码树根目录下。

 

2.4 内核开发的特点 

内核编程时既不能访问C库也不能访问标准的C头文件

内核编程时必须使用GNU C 

  • 内联函数: 函数会在所调用的位置上展开。 定义时,需要使用static作为关键字,用inline限定它。 内联函数必须在使用之前就定义好,一般在头文件中定义。 内核中优先使用内联函数而不是宏。

  • 内联汇编: 通常使用asm()指令嵌入汇编代码,用volatile表示不优化

  • 分支声明: unlikely(x) - x很少出现,绝少发生,通常为假 likely(y) - y经常出现,通常为真

内核编程时缺乏像内存空间那样的内存保护机制 

难以执行浮点运算

考虑可移植的重要性 

 

技术分享

以上是关于第四周课本学习 (第一章 第二章 )的主要内容,如果未能解决你的问题,请参考以下文章

20155232 《信息安全系统设计基础》课程总结

课本学习笔记1:第一二章 20135115臧文君

20155312 《信息安全系统设计基础》课程总结

第四周国庆作业有感

2017-2018-1 20155310 《信息安全系统设计基础》课程总结

# 20155310 2017-2018-1 《信息安全系统设计基础》课程总结