linux内核期中总结
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内核期中总结的更多相关文章
- Linux内核期中
Linux内核期中总结 一.计算机是如何工作的 个人理解:计算机就是通过和用户进行交互,执行用户的指令,这些指令存放在内存中,通过寄存器存储,堆栈变化,来一步步顺序执行. 二.存储程序计算机工作模型 ...
- 《Linux及安全》期中总结&《Linux内核分析》期终总结
[5216 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000] WEEK NINE ...
- 《Linux内核分析》期终总结&《Linux及安全》期中总结
<Linux内核分析>期终总结&<Linux及安全>期中总结 [李行之 原创作品 转载请注明出处 <Linux内核分析>MOOC课程http://mooc. ...
- Linux内核分析——期中总结
期中总结 一.MOOC课程 (一)计算机是如何工作的 1.冯诺依曼体系结构的核心思想是存储程序计算机. 2.CPU在实际取指令时根据cs:eip来准确定位一个指令. 3.寄存器模式,以%开头的寄存器标 ...
- Linux内核设计期中总结
Linux内核设计期中总结 ● 知识点 一.计算机是如何工作的 计算机是按照冯·诺依曼存储程序的原理. 在执行程序时须先将要执行的相关程序和数据放入内存储器中,在执行程序时CPU根据当前程序指针寄存器 ...
- 《Linux内核分析》 期中总结
Linux内核分析 期中总结 20135307 张嘉琪 一.Linux内核分析课程总结 学习笔记汇总 第一节 计算机是如何工作的 第二节 操作系统是如何工作的 第三节 构造一个简单的Linux系统Me ...
- Linux内核分析:期中总结
第一章:计算机是如何工作的 计算机大部分都是用冯诺依曼体系结构,即存储程序计算机. 两个层面: 1.硬件: cpu(IP寄存器:指针,指向内存的某块区域)——总线——内存(代码与数据) 2.程序员: ...
- 20135327郭皓--Linux内核分析第九周 期中总结
Linux内核分析第九周 期中总结 一.知识概要 1. 计算机是如何工作的 存储程序计算机工作模型:冯诺依曼体系结构 X86汇编基础 会变一个简单的C程序分析其汇编指令执行过程 2. 操作系统是如何工 ...
- Linux内核分析课程期中总结
Linux内核分析课程期中总结 姓名:王朝宪 学号:20135114 注: 原创作品转载请注明出处 + <Linux内核分析>MOOC课程http://mooc.study.163.com ...
随机推荐
- January 10th, 2018 Week 02nd Wednesday
No need to have a reason to love you. Anything can be a reason not to love you. 喜欢你,不需要什么理由:不喜欢你,什么都 ...
- pb中遍历查询数据库数据问题(数据库为 sql server)
指针可以实现但是不推荐 例如:(部分代码) for ll_a = 1 to ll_count ll_b = ll_i + ll_a //插入行行号先下移一位 dw_main.inser ...
- Android Studio入门问题汇总
1.如何设置 AS 中的字体大小 2.如何切换 AS 的皮肤颜色,默认为黑色,修改为白色,改为 default 3.首次安装 Android Studio并打开时,如果创建了一个新工程并将工程保存在另 ...
- Android之activity总结
http://www.cnblogs.com/lyp3314/archive/2011/11/10/2244971.html 一.什么是activity Activity 是用户接口程序,原则上它会提 ...
- matlab数字图像处理 入门基础
本代码基于张铮主编的<数字图像处理与机器视觉>一书. 源图片:lena A = imread ('lena.jpg'); %读入图像lena.jpg,赋给变量A %imwrite(A,'l ...
- Spark本地运行成功,集群运行空指针异。
一个很久之前写的Spark作业,当时运行在local模式下.最近又开始处理这方面数据了,就打包提交集群,结果频频空指针.最开始以为是程序中有null调用了,经过排除发现是继承App导致集群运行时候无法 ...
- 【转】抓包工具Fiddler的使用教程(十二)下:Fiddler抓取HTTPS
在教程十二(上),我们也了解了HTTPS协议,该教程就和大家分享Fiddler如何抓取HTTPS 抓包工具Fiddler的使用教程(十二):[转载]HTTPS协议 再次回忆一下关键内容: iddler ...
- go标准库的学习-crypto/aes
参考:https://studygolang.com/pkgdoc 导入方式: import "crypto/aes" aes包实现了AES加密算法,参见U.S. Federal ...
- RMAN 数据库克隆文件位置转换方法
在使用RMAN克隆数据库时,如果辅助数据库(新数据库)使用了与目标数据库(原数据库)使用了不同的路径,那么就存在位置转换的问题.在Oracle中,控制文件用于定位数据文件以及联机重做日志文件,如果没有 ...
- maven中的mirrors
文章转自http://blog.csdn.net/technologyboy/article/details/17143641 简单点来说,repository就是个仓库.maven里有两种仓库,本地 ...