20135132陈雨鑫 + 原创作品转载请注明出处 + 《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000 ”

第一周http://www.cnblogs.com/20135132yoggie/p/5220003.html

第二周http://www.cnblogs.com/20135132yoggie/p/5240418.html

第三周http://www.cnblogs.com/20135132yoggie/p/5251382.html

第四周http://www.cnblogs.com/20135132yoggie/p/5279906.html

第五周http://www.cnblogs.com/20135132yoggie/p/5312850.html

第六周http://www.cnblogs.com/20135132yoggie/p/5333026.html

第七周http://www.cnblogs.com/20135132yoggie/p/5363734.html

第八周http://www.cnblogs.com/20135132yoggie/p/5389083.html

一、计算机是如何工作的?

1、存储程序计算机工作模型

  1)冯诺依曼体系结构

  2)存储程序计算机工作模型

  3)CPU识别什么样的指令?如何定义?

    API:程序员与计算机的接口界面。

    ABI:程序与CPU接口界面

2、X86汇编基础

  1) X86 CPU的寄存器

  2)常见汇编指令

二、操作系统是如何工作的

1、函数调用堆栈

  1)三个法宝 计算机是如何工作的?(总结)——三个法宝(存储程序计算机、函数调用堆栈、中断机制)

  2)深入理解函数调用堆栈

2、借助Linux内核部分源代码模拟存储程序计算机工作模型及时钟中断

3、在mykernel基础上构造一个简单的操作系统内核

三、构造一个简单的Linux系统MenuOS

1、linux内核源代码简介

三大法宝(存储程序计算机、函数调用堆栈、中断)和两把宝剑(中断上下文的切换:保存现场和恢复现场、进程上下文的切换)

  1)在linux内核源码里面arch占有的代码量相当庞大。arch/x86目录下的代码是我们重点关注的。

  2)内核启动相关的代码基本都在init目录下(main.c)。

  start_kernel是初始化linux内核的起点。

  start_kernel相当于c程序中的main函数

  3)linux内核的核心代码在kernel目录中

2、构造一个简单的linux系统

  init是第一个用户态进程,是1号进程。

3、跟踪调试Linux内核的启动过程

四、扒开系统调用的三层皮(上)

1、用户态、内核态和中断

  库函数将系统调用封装起来。

  1)什么是用户态和内核态

  2)在linux内核代码中区分用户态和内核态

    用cs(代码段选择寄存器)和eip(偏移量寄存器)进行区分。

  3)中断处理是从用户态进入内核态的主要方式

2、系统调用概述

3、使用库函数API和C代码中嵌入汇编代码触发同一个系统调用

五、扒开系统调用的三层皮(下)

1、给menuOS增加time和time-asm

2、使用gdb跟踪系统调用内核函数sys_time

3、系统调用在内核代码中的工作机制和初始化

  1) 系统调用在内核代码中的工作机制和初始化

  2) 简化后便于理解的system_call伪代码

  3)简单浏览system_call和iret之间的主要代码

六、进程的描述和进程的创建

1、进程的描述

  1)进程描述符task_struct数据结构(一)

  操作系统的三大功能:进程管理(核心)、内存管理、文件系统。

2、进程的创建

七、可执行程序的装载

1、预处理、编译、链接和目标文件的格式

  1)可执行程序是怎么得来的

  2)目标文件的格式ELF

  3)静态链接的ELF可执行文件和进程的地址空间

2、可执行程序、共享库和动态加载

  1)装载可执行程序之前的工作

  2)装载时动态链接和运行时动态链接应用举例

  3)可执行程序的装载

    1.可执行程序的装载相关关键问题分析

    2.sys_execve的内部处理过程

    3.使用gdb跟踪sys_execve内核函数的处理过程

    4.可执行程序的装载与庄生梦蝶的故事

    5.浅析动态链接的可执行程序的装载

八、进程的切换和系统的一般执行过程

1、进程切换的关键代码switch_to分析

  1)进程进度与进程调度的时机分析

  2)进程上下文切换相关代码分析

2、Linux系统的一般执行过程

  1)Linux系统的一般执行过程分析

  2)Linux系统执行过程中的几个特殊情况

  3)内核与舞女

3、Linux系统架构和执行过程概览

  1)Linux操作系统架构概览

  2)最简单也是最复杂的操作——执行ls操作

  3)从CPU和内存的角度看Linux系统的执行

总结

  linux内核分析的网课转眼就结束了,这几个月来,还是收获颇丰,至少现在对一些操作还是有些了解,在实验过程中,虽然碰到了许多问题,但还是一个一个的解决了,使用gdb调试,设断点等等一系列操作。了解了计算机是怎么工作的,什么是操作系统,操作系统是如何工作的,了解系统调用的过程,以及进程的描述和创建,可执行程序的装载,进程的创建等等。需要在今后的学习中,通过不断练习加深理解。

linux内核期中总结的更多相关文章

  1. Linux内核期中

    Linux内核期中总结 一.计算机是如何工作的 个人理解:计算机就是通过和用户进行交互,执行用户的指令,这些指令存放在内存中,通过寄存器存储,堆栈变化,来一步步顺序执行. 二.存储程序计算机工作模型 ...

  2. 《Linux及安全》期中总结&《Linux内核分析》期终总结

    [5216 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000] WEEK NINE ...

  3. 《Linux内核分析》期终总结&《Linux及安全》期中总结

    <Linux内核分析>期终总结&<Linux及安全>期中总结 [李行之 原创作品 转载请注明出处 <Linux内核分析>MOOC课程http://mooc. ...

  4. Linux内核分析——期中总结

    期中总结 一.MOOC课程 (一)计算机是如何工作的 1.冯诺依曼体系结构的核心思想是存储程序计算机. 2.CPU在实际取指令时根据cs:eip来准确定位一个指令. 3.寄存器模式,以%开头的寄存器标 ...

  5. Linux内核设计期中总结

    Linux内核设计期中总结 ● 知识点 一.计算机是如何工作的 计算机是按照冯·诺依曼存储程序的原理. 在执行程序时须先将要执行的相关程序和数据放入内存储器中,在执行程序时CPU根据当前程序指针寄存器 ...

  6. 《Linux内核分析》 期中总结

    Linux内核分析 期中总结 20135307 张嘉琪 一.Linux内核分析课程总结 学习笔记汇总 第一节 计算机是如何工作的 第二节 操作系统是如何工作的 第三节 构造一个简单的Linux系统Me ...

  7. Linux内核分析:期中总结

    第一章:计算机是如何工作的 计算机大部分都是用冯诺依曼体系结构,即存储程序计算机. 两个层面: 1.硬件: cpu(IP寄存器:指针,指向内存的某块区域)——总线——内存(代码与数据) 2.程序员: ...

  8. 20135327郭皓--Linux内核分析第九周 期中总结

    Linux内核分析第九周 期中总结 一.知识概要 1. 计算机是如何工作的 存储程序计算机工作模型:冯诺依曼体系结构 X86汇编基础 会变一个简单的C程序分析其汇编指令执行过程 2. 操作系统是如何工 ...

  9. Linux内核分析课程期中总结

    Linux内核分析课程期中总结 姓名:王朝宪 学号:20135114 注: 原创作品转载请注明出处 + <Linux内核分析>MOOC课程http://mooc.study.163.com ...

随机推荐

  1. C# 动态方法和静态方法的区别

    C# 动态方法和静态方法的区别 (转) 动态方法与静态方法的区别: 1,使用方法上的区别:动态方法,在使用时需要先创建实例,才能调用实例方法,而静态方法则不需要,直接使用即可. 示例代码如下:静态方法 ...

  2. windows 2003 IIS 设置 FTP被动模式

    IIS FTP 将21端口更改为xx123端口: 更改数据端口: cd c:/Inetpub/AdminScripts cscript.exe adsutil.vbs set /MSFTPSVC/Pa ...

  3. iOS-省市区选择的实现

    一.简介 该文主要实现的是省市区的选择,可在个人修改地址的地方使用. 二.需要的东西 制作这个首先需要一个area.plist文件,该文件中保存这所有的关于省市区的信息,下载地址:http://pan ...

  4. Properties集合概述与存和取

    Properties集合:(Map集合下的Hashtable集合下的一个子类) 特点: 1.集合中的键和值都是字符串 2.集合中的数据可以保存到流中,或者从流中获取 该集合通常用于操作以键值对形式存在 ...

  5. Destroying Array CF 722C

    题目大意就是给长度为 n 一个数列,有 n 每次删除,每一次删除第 i 个位置上的数,求每一次删除后剩余不连续数列的最大区间和. 输入样例 4 1 3 2 5 3 4 1 2 输出样例 5 4 3 0 ...

  6. go标准库的学习-sync互斥

    https://studygolang.com/pkgdoc 导入方法: import "sync" sync包提供了基本的同步基元,如互斥锁.除了Once和WaitGroup类型 ...

  7. mysql 日期操作 增减天数、时间转换、时间戳(转)

    转自http://www.cnblogs.com/wenzichiqingwa/archive/2013/03/05/2944485.html http://hi.baidu.com/juntao_l ...

  8. Objective-C 单例实现

    Objective-C中用的最多的设计模式就是单例,它最常见的实现如下: + (WPXXService *)sharedInstance { static WPXXService *g_service ...

  9. Android开发中代码下面出现波浪线问题

    在Android Studio中写代码时,经常会在一个英文单词的下面出现波浪线,这是因为系统检测到你的这个英文单词不符合规范,如下所示: 解决办法:选中这个单词,点击鼠标右键,点击:Spelling ...

  10. 利用 ProtoThreads实现Arduino多线程处理(1)

    转载请注明:@小五义http://www.cnblogs.com/xiaowuyiQQ群:64770604 这几天和群里小V同学讨论一个项目时,偶然发现了 ProtoThreads,简称PT,用其来实 ...