Bochs学习-安装配置篇

0 条评论

最近想学习如何从零编写一个操作系统,现在关于这个的资料蛮多的,《操作系统真象还原》,就是一本神级别的书,看得我醍醐灌顶。其他的书籍还有《Orange’S:一个操作系统的实现》,《30天自制操作系统》。

自己动手写操作系统,虚拟机是必不可少的,虽然我们的目标是写出一个物理机可以安装可以运行的操作系统,但是用物理机会非常的麻烦也花钱。虚拟机中,vmware和virtualbox比较出名,但是却不适合我们的场景,因为这两个虚拟机更注重效率,所以会使用硬件级的虚拟化,所以在硬件调试上,功能有限,而bochs这个开源虚拟机,是用软件虚拟了所有的硬件,所以调试可以做到非常细的粒度,比如每次cpu执行命令,我们都可以暂停,看寄存器状态,看内存状态,这对于操作系统开发调试的帮助太大太大了。所以我们使用bochs这个虚拟机来。

阅读全文

Java如何保证文件落盘?

0 条评论

在之前的文章Linux/UNIX编程如何保证文件落盘中,我们聊了从应用到操作系统,我们要如何保证文件落盘,来确保掉电等故障不会导致数据丢失。JDK也封装了对应的功能,并且为我们做好了跨平台的保证。

阅读全文

Linux/UNIX编程如何保证文件落盘

0 条评论

我们编写程序write数据到文件中时,其实数据不会立马写入磁盘,而是会经过层层缓存。每层缓存都有自己的刷新时机,每层缓存都刷新后才会写入磁盘。这些缓存的存在是为了加速读写操作,因为如果每次读写都对应真实磁盘操作,那么读写的效率会大大降低。带来的坏处是如果期间发生掉电或者别的故障,还未写入磁盘的数据就丢失了。对于数据安全敏感的应用,比如数据库,比如交易程序,这是无法忍受的。所以操作系统提供了保证文件落盘的机制。我们来看下这些机制的原理和使用。

阅读全文

MongoDB遍历方式对比

0 条评论

在处理数据时,需要遍历MongoDB全表数据。

阅读全文

JDK源码阅读-RandomAccessFile

0 条评论

FileInputStream只能用于读取文件,FileOutputStream只能用于写入文件,而对于同时读取文件,并且需要随意移动文件当前偏移量的话,就需要使用RandomAccessFile这个类了。RandomAccessFile是对操作系统提供的文件读写能力最完整的封装。

阅读全文

JDK源码阅读-FileOutputStream

0 条评论

FileOutputStream用户打开文件并获取输出流。

阅读全文

JDK源码阅读-FileInputStream

0 条评论

FileIntputStream用于打开一个文件并获取输入流。

阅读全文

JDK源码阅读-FileDescriptor

0 条评论

操作系统使用文件描述符来指代一个打开的文件,对文件的读写操作,都需要文件描述符作为参数。Java虽然在设计上使用了抽象程度更高的流来作为文件操作的模型,但是底层依然要使用文件描述符与操作系统交互,而Java世界里文件描述符的对应类就是FileDescriptor。

阅读全文

JVM堆内存使用率持续上升的一种排查思路

0 条评论

最近新版本发布后,在运行一段时间后程序突然无响应了,观察监控,发现JVM堆内存占用在某个时间点突然飙升,最终导致应用无响应:

重启Tomcat后,应用恢复正常,并且后续时间没有发生内存上涨问题。

阅读全文

AWS S3 Range下载响应测试

0 条评论

HTTP范围请求(Range Requests)是用于获取对象指定范围内容的请求规范,常用语HTTP断点续传和多线程下载。

Range头部的格式可能的格式较多,这里通过调用AWS S3服务来看一下,一个规范的文件下载服务是如何响应范围请求的。

HTTP范围请求的资料可以参考:

阅读全文