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 文件操作系统大览(布局篇)

1.2 硬盘驱动编写(异步的,中断)

内核层对文件的处理本就是异步进行的,读的时候会告诉驱动程序读取的扇面号(比如是读写磁盘)和需要读取的缓冲区地址,驱动程序向文件控制模块发送指令后就干别的了,当硬件完成了工作后会向cpu发送中断信号从而被内核捕获,内核会从中断点开始继续执行。

1.3

线程与进程

进程回收(父进程子进程与init进程)

进程间通信

4 socket编程篇(网络编程/网络进程通信)

https://www.jianshu.com/p/f86... 高性能网络编程

i/o模型(同步/异步 阻塞/非阻塞)

阻塞io 是自己去阻塞的 把线程/进程 变成阻塞状态

5种网络编程模型

https://blog.csdn.net/qq_2910...

单点

多进程

多线程

几乎所有的IO接口 ( 包括socket接口 ) 都是阻塞型的。这给网络编程带来了一个很大的问题,如在调用send()的同时,线程将被阻塞,在此期间,线程将无法执行任何运算或响应任何的网络请求。

一个简单的改进方案是在服务器端使用多线程(或多进程)。多线程(或多进程)的目的是让每个连接都拥有独立的线程(或进程),这样任何一个连接的阻塞都不会影响其他的连接。具体使用多进程还是多线程,并没有一个特定的模式。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值