0%

risc-v有三种运行模式,机器模式、管理模式、用户模式。今天我们来介绍下这三种模式,以及在xv6中使用的例子

阅读全文 »

玩了十一个月,玩起来的日子过得可真快呀,靠时间去想明白一些事情确实是有成本的,但是不想明白心里也总是有刺一样,接下来的日子要继续从三项基础技术抓起,逐渐步入正轨,至于客户端还是服务端,也想明白了,客户端还是更加适合我一些,尽管某些时候很讨厌客户端的一些职责,尽管某些时候很喜欢服务端做的事情。为什么选择客户端呢,相比服务端,客户端对于自己的项目与架构拥有更完善的视角,也拥有更多可控力,服务端总有些枯燥乏味的感觉,同时自身也有一两年的客户端开发经验,所以选择一条轻松喜欢的道路何乐而不为呢,毕竟将来人生的道路也有了新的选择。(回老家开超市哈哈哈哈。) 所以,列个计划吧。 巩固基础 没什么好说的,提升这三者的理解至关重要,基础必须牢嘛 算法 23年快要过去了,接下来的几年我都要跟进算法,毕竟这
阅读全文 »

传输层就关注两个TCP和UDP。 除此之外我们再关注下多路复用与多路分解。 在对UDP和TCP介绍之前,我们先简要介绍下网络层,网络层协议即IP,IP的服务模型即尽力而为去交付,尽力而为是委婉的说法,直接点说就是网络层是不靠谱的,传输中数据可能丢失、被更改、等等,即IP是不可靠的服务协议。TCP和UDP是建立在IP之上实现的。TCP和UDP的主要职责就是将两个IP之间的数据传输转换到两个进程之间的数据传输,并以此引出多路复用与多路分解。 多路复用与多路分解 什么是多路复用与多路分解呢,就是将网络层两个IP之间的数据传输转换到两个端进程的数据传输。 多路复用其实就是把各端口(进程绑定端口)的数据用端口号包装了下,扔到了网络层。 到了目的传输层后,通过拆解端口的包装来决定分配给哪个socke
阅读全文 »

为什么要有应用层 想想为什么要有系统调用,针对用户程序来说,系统调用可以让其使用计算机提供的各种接口,来实现其功能。 对应的,针对应用层来说,应用层可以使用调用下一层(传输层)提供的能力来完成网络能力,传输层为应用层提供了网络接口,帮助其实现网络应用。 网络应用程序体系结构 体系结构是有应用程序的研发者设计的,至于怎么设计都是限制在应用层上的,设计可以根据你所需要的业务场景决定,但大部分场景也就一种客户端-服务端体系结构,针对部分应用有对等网络结构(P2P)。 * 客户端-服务端体系结构,当你打开一个浏览器,或者用手机打开抖音,其都是在使用这种结构,你通过一个浏览器进程或者APP进程访问一个固定的IP地址,从对应的进程中获取数据并返回到你的屏幕上。所以这种结构需要一个处理各种业务数据的
阅读全文 »

当RISC-V计算机上电时,它会初始化自己并运行一个存储在只读内存中的引导加载程序。引导加载程序将xv6内核加载到内存中。然后,在机器模式下,中央处理器从_entry (kernel/entry.S:6)开始运行xv6。 _entry.S 入口 简述:完成多核cpu栈的分配并跳转到kernel/start.c执行start函数 entry.S1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 # qemu -kernel loads the kernel at 0x80000000 # and causes each CPU to jump there. # kernel.ld causes t
阅读全文 »

当你本地有一个仓库,还没有对应的远端仓库,你想把他推到远端去,首先需要在远端(这里拿github举例)创建仓库 当你创建完一个仓库的时候,这时github其实已经提示你如何操作了,类似这样 git remote add origin git@github.com:michaelliao/learngit.git 这步就是添加一个名叫origin的远端仓库 同时,如果你已经有了一个名叫origin的远端仓库,可以通过以下两种方式来更改 1. 更换origin的仓库url: git remote set-url origin git://new.url.here 2. 删除origin远端仓库并重新添加 * git remote remove
阅读全文 »

先来想下,块设备涉及到什么,块设备属于IO设备,涉及到读写,与字符流设备不同的点就在于能够根据块来进行读写,仅取自己想要的块就OK,我们忽略块设备和字符流设备的区别,那么块设备作为IO设备,最重要的作用就是IO,即读写数据。体现到我们平常的使用则是read write,这些。学习块设备主要要学习的就两步,一是对于linux来说一切皆文件,那么一个文件的路径,是如何映射到块设备对应的块的,二是块设备上的数据是怎么与内存交互的,即怎么读进来的。 从源码开始,分析linux0.11的源码,从中梳理过程,带着上面我们提到的两个疑问,开始阅读代码 从open开始 open都清楚,打开一个文件,那么涉及到的就是文件与IO设备的映射关系。我们从fs/open.c的sys_open函数说起: fs/o
阅读全文 »

本节介绍从开机到执行到linux的main函数,中间经历了什么,是怎么执行到main.c的,本文涉及到bootsect.s、setup.s、head.s的源码,以及操作系统与汇编相关的一些知识。是近几天对内核源码学习的总结与记录。

阅读全文 »