linux的实现原理,操作系统实现原理

写这些东西的目的

本人虽然是计算机专业,但是读书时候对计算机系统科学并没有认真学习,工作之后才感觉到自己计算机基础知识的不扎实,虽然大家都是curd或者socket boy。但是对底层的知识如果没有一个了解,那么就不能更好的协助开发!

这个专栏是我对于操作系统的学习心得与笔记,另附上linux操作系统实现的代码

专栏分为几块

1 汇编基础知识

1.1 存储设备概述

1.1.1 内存地址编号与寻址

变量到底是个啥?

变量名和变量类型

变量名是汇编语言中的标号,标号又是啥?标号就是人性化的内存地址的表现样子,最终被编译器转换为一个物理内存地址(区别与虚拟内存地址)

变量类型是表名该变量在内存中占用的大小!

int a =4;

汇编就是

.a

db 4;

访问变量,就是通过 变量的起始地址+变量类型的大小

内存中的栈与堆

1.1.2 寄存器

1.1.2 硬盘

1.2 汇编

1.2.1 标号

1.2 实模式

实模式是个啥?

实模式下的寄存器

2.1 实模式下内存寻址/分段机制

16位8086型号的cpu的寻址

2.2 实模式下的汇编指令讲解

mov数据传输指令

movs(b/w/d/x)系列集 用于字符串在内存中的拷贝需要搭配cld与std还有rep

loop 循环指令

db dw cbw 与 cwd指令

convert byte to word

convert word to double word

cmp 比较 进行标志位的改变

cmpsb cmpsw cmpsd

j系列条件跳转指令

jmp 无条件跳转指令

运算类型汇编

add adc inc dec sub mul div idiv

位运算指令

not or and xor

call与ret

位移动指令

ror(rotate旋转 right)

rol

shr

shl

栈操作指令

push pushf/pushfd pop popf/popfd

lgdt 全局描述符设置指令

sgdt

中断指令

int3 int 中断号

into 中断溢出指令

iret

cli(clear Interrupt flag)与sti

改变flag寄存器的if标志位

hlt 处理器停止执行指令,可以通过外部中断指令来唤醒cpu

arpl调整段选择子的rpl值

1.2 保护模式

保护模式下的内存寻址

1.2.1 全局描述符

lgdt 与 sgdt

1.2.2 保护模式下的特权级

1.3 内存分页/虚拟地址

函数与汇编

函数名与标号一样,只是地址的人性化展示,最终会被编译器转换为一个实际的数字地址

//定义函数,这个函数本身不在栈里面存储

int abc(int a,int b){

int d;

return a+b;

}

.abc

db d

add a,b

mov eax,a

ret

//调用函数,需要利用到栈

abc(3,4)

push 4

push 3

call abc;//把当前地址入栈 然后跳转到abc地址处执行

1.6 i/o汇编

特权级概述

1.7 中断与 系统(函数)调用

8259a编程

利用0x15中断获取内存大小

2 内存管理模块

1.1 bitmap与地址池

3 任务模块(线程/进程)

3 文件操作系统

1.1 文件操作系统大览(布局篇)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值