学习操作系统原理最好的方法是自己写一个简单的操作系统。写程序不免需要调试,写不同的程序调试方式也不同。如果做应用软件开发,相应的程序调试方式是建立在有操作系统支持的基础上的。而我们现在是要开发操作系统,如何调试操作系统的程序呢?如果操作系统程序直接跑在真机上或虚拟机上(比如VirtualBox)是很难调试的,所以我们在开发阶段操作系统程序主要在虚拟机QEMU上跑,因为QEMU支持调试。当然很多事情都是有利也有弊的,QEMU虽然支持调试,但它的运行效率比VitrualBox要低,所以我们最终的GrapeOS程序是跑在VirtalBox上的。QEMU需要结合GDB才能实现调试,下面我们一起来学习一
学习操作系统原理最好的方法是自己写一个简单的操作系统。写程序不免需要调试,写不同的程序调试方式也不同。如果做应用软件开发,相应的程序调试方式是建立在有操作系统支持的基础上的。而我们现在是要开发操作系统,如何调试操作系统的程序呢?如果操作系统程序直接跑在真机上或虚拟机上(比如VirtualBox)是很难调试的,所以我们在开发阶段操作系统程序主要在虚拟机QEMU上跑,因为QEMU支持调试。当然很多事情都是有利也有弊的,QEMU虽然支持调试,但它的运行效率比VitrualBox要低,所以我们最终的GrapeOS程序是跑在VirtalBox上的。QEMU需要结合GDB才能实现调试,下面我们一起来学习一
学习操作系统原理最好的方法是自己写一个简单的操作系统。前面铺垫了这么久,今天终于开始写程序了。本讲将介绍3个逐步深入但非常简单的程序,一方面是让大家熟悉开发流程,另一方面是顺便解决前面遇到的CPU占用率高的问题。一、mbr1.asm回顾mbr1.asm的代码之前我们介绍过,这里我们回顾一下代码和演示步骤。mbr1.asm代码如下:;生成一个空的MBRtimes510db0;前510个字节全为0db0x55,0xaa;最后两个字节是0x55和0xaa。下面我们来演示:1.启动并登录CentOS在VirtualBox中启动CentOS虚拟机,并用PowerShell登录到CentOS虚拟机。2.创
学习操作系统原理最好的方法是自己写一个简单的操作系统。前面铺垫了这么久,今天终于开始写程序了。本讲将介绍3个逐步深入但非常简单的程序,一方面是让大家熟悉开发流程,另一方面是顺便解决前面遇到的CPU占用率高的问题。一、mbr1.asm回顾mbr1.asm的代码之前我们介绍过,这里我们回顾一下代码和演示步骤。mbr1.asm代码如下:;生成一个空的MBRtimes510db0;前510个字节全为0db0x55,0xaa;最后两个字节是0x55和0xaa。下面我们来演示:1.启动并登录CentOS在VirtualBox中启动CentOS虚拟机,并用PowerShell登录到CentOS虚拟机。2.创
在DATAwhale的组织下,开始新的一轮深度学习,感谢组织,感谢沐神.机器学习(machinelearning,ML)是一类强大的可以从经验中学习的技术。通常采用观测数据或与环境交互的形式,机器学习算法会积累更多的经验,其性能也会逐步提高。数据遵循独立同分布(independentlyandidenticallydistributed,i.i.d.)(大多数情况,假设的前题)由一组称为特征(features,或协变量(covariates))的属性组成器学习模型会根据这些属性进行预测 拥有越多数据的时候,工作就越容易。 还需要正确的数据模型转换数据 将输入数据通过模型输出相应
在DATAwhale的组织下,开始新的一轮深度学习,感谢组织,感谢沐神.机器学习(machinelearning,ML)是一类强大的可以从经验中学习的技术。通常采用观测数据或与环境交互的形式,机器学习算法会积累更多的经验,其性能也会逐步提高。数据遵循独立同分布(independentlyandidenticallydistributed,i.i.d.)(大多数情况,假设的前题)由一组称为特征(features,或协变量(covariates))的属性组成器学习模型会根据这些属性进行预测 拥有越多数据的时候,工作就越容易。 还需要正确的数据模型转换数据 将输入数据通过模型输出相应
数据操作 张量(Numpy-ndarray,Pytorch,TensorFlow-Tensor)torch.arange()torch.shapetorch.numel()张量中元素数量torch.reshape()改变张量的形状而不改变元素数量和元素值torch.randon()默认从均值为0 标准差为1 的标准高斯分布(正态分布)+,-,*,/,**torch.cat()连接 求和torch.sum() 广播机制索引切片内存分配对象转换数据预处理读取数据集importosos.makedirs(os.path.join('..','data'),exist_ok=True)data_fi
数据操作 张量(Numpy-ndarray,Pytorch,TensorFlow-Tensor)torch.arange()torch.shapetorch.numel()张量中元素数量torch.reshape()改变张量的形状而不改变元素数量和元素值torch.randon()默认从均值为0 标准差为1 的标准高斯分布(正态分布)+,-,*,/,**torch.cat()连接 求和torch.sum() 广播机制索引切片内存分配对象转换数据预处理读取数据集importosos.makedirs(os.path.join('..','data'),exist_ok=True)data_fi
希望您们先看过书,再来看本blog,否则可能会看不懂,原因是我只写书上没写或者很新奇的东西。先引个torch包importtorch2.1数据操作2.1.1入门x.numel()会返回张量中元素的总数。torch.tensor()与torch.Tensor()的区别torch.tensor()是(当你未指定dtype的类型时)将data转化为torch.FloatTensor、torch.LongTensor、torch.DoubleTensor等类型,转化类型依据于data的类型或者dtype的值直接使用vec=torch.tensor()会报错,可以考虑如下方案修改:vec=torch.T
希望您们先看过书,再来看本blog,否则可能会看不懂,原因是我只写书上没写或者很新奇的东西。先引个torch包importtorch2.1数据操作2.1.1入门x.numel()会返回张量中元素的总数。torch.tensor()与torch.Tensor()的区别torch.tensor()是(当你未指定dtype的类型时)将data转化为torch.FloatTensor、torch.LongTensor、torch.DoubleTensor等类型,转化类型依据于data的类型或者dtype的值直接使用vec=torch.tensor()会报错,可以考虑如下方案修改:vec=torch.T