硬盘

《操作系统真象还原》MBR

元气小坏坏 提交于 2019-12-04 12:04:14
  以下是读本书第三章的收获。   如何知道一个源程序的各符号(指令和变量)地址?简单来说,地址就是该符号偏移文件开头的距离,符号的地址是按顺序编排的,所以两个相邻的符号,其地址也是相邻的。对于指令来说,指令的地址=上一个指令的地址+上一个指令的大小,最初的符号地址为0,可以根据此公式推算出所有符号的地址。 section称为节,它是提供给程序员编排程序用的,我们可以将一段读取字符串的代码放在section A下,将读取硬盘的代码放进section B下,可以给A,B换成一个更具体的名字,来提高可读性。 例如,下图这段代码,将整个程序分成section code和section data两节,顾名思义,就是存放代码和数据的两个section,这样我们就很清楚地知道每部分代码是做什么用的。另一个值得注意的细节是section并不会对符号的编址用什么影响,去掉section和不去掉其实符号的地址都是一样的。 vstart用于告诉编译器,之后的符号都以某个地址为初始地址来编址。如下图,像$$的地址替换成以0x7c00为初始地址的地址,符号var1和var2的地址被替换成以0x900的地址。 当然,我们还可以通过section.节名称.start来获得在文件中真正的地址。如section.code.start值为0x0,即section code偏移文件的距离为0

Linux 虚拟机的安装与软件安装

谁说胖子不能爱 提交于 2019-12-04 11:10:01
(一)虚拟机的安装 安装过程:其实就是往硬盘里写数据的过程。 实验:这里我们采取镜像法创建虚拟机。导入本地iso文件方式新建一个虚拟机。步骤如下: 1.选择新建一个虚拟机 2.选择镜像文件 找到 3.设置硬盘空间。 注意: 如果要安装图形,则磁盘空间>4.8G 设置虚拟机名称 : 4.进入安装界面: 5.点击安装红帽,接下来: 6.进行一些设置,语言环境( 建议选择英语 ),时间等。在这一步,只需把带感叹号的设置成功,便可进行安装! 时区部分: 语言支持部分建议选择中文: 选择GUI 图形化基本环境 接下来是比较重要的部分,磁盘分区。采用标准分区,划分为三个扇区:/boot:200MB,/swap:500MB,/:剩余部分。 注意:分区提前规划好,一般swap分区为物理内存的1.5~2倍,/boot分区200M, 最后两个设置,是设置超级用户的密码,添加普通用户及密码 接下来,尝试编写脚本来完成安装工作,脚本可以一直使用(一次改到,终生受益!): 1.新建脚本文件 其中注释如下: #!/bin/bash ##命令运行环境的指定 virt-install \ ##安装虚拟机 --name $1 \ ##虚拟机名称指定,$1表示脚本后的第一串字符 --ram 1000 \ ##内存 --file /var/lib/libvirt/images/$1.img \ ##硬盘文件 -

linux初学者-虚拟机管理篇

我与影子孤独终老i 提交于 2019-12-04 11:04:29
之前已经介绍过,在 linux系统的学习中,一般需要在虚拟机中进行操作,但是虚拟机是如何安装的呢?又是如何管理的呢?下文将对虚拟机的安装和管理进行一个简要的介绍。 1、虚拟机的安装 虚拟机在安装时需要输入命令 "virt-manager"开启虚拟机管理界面,如下图所示。建立新的虚拟机需要在虚拟机的"name"行右击鼠标选择"New"。然后选择安装方式, 因为 iso镜像文件在本地,所以选择从本地进行安装。 。 点击 "Forword"后弹出如下界面,此界面是选择安装源,在"Use iso image"栏中选中安装源即iso镜像文件。 点击 "Forword"后弹出如下界面,此界面选择内存大小和cpu核数,在此处选择内存为1024,核数为1。 点击 "Forword"后弹出如下界面,此界面设置硬盘大小,此处设置为8G。 点击 "Forword"后弹出如下界面,输入虚拟机名称。 上述步骤设置完成后点击 "Finsh",即可进入虚拟机装机界面。如下图所示。 进入后将会进入下图选择系统语言界面。 点击继续后会进入下图选项界面。将在此界面中配置硬盘,预装软件等信息。 下图为硬盘的配置,并硬盘进行分区,分别分为 "/boot"、"swap"、"/"。 下图为预装软件的选择界面。 选择开始安装后,会进入如下界面。可以在此界面中设置超级用户密码和普通用户密码。 上述的设置虚拟机安装步骤略显复杂

win7 蓝屏 0x000000c5

不羁岁月 提交于 2019-12-04 08:55:27
解决 win7 蓝屏 最有效的方法- 蓝屏 代码C5 2011-12-24 13:16 最近好久没上来写博,这几天我正想呢,哟,这会可是好久木有碰到问题了,不太正常啊,正这么想呢,最麻烦的事情来了—— win7 蓝屏 不期而遇。这 蓝屏 可说是windows系统上最麻烦的事了,因为电脑它直接上—— 蓝屏 来了~~~给你看!而且这个 蓝屏 来得迅猛,频繁,很是唬人。 蓝屏 代码:Stop: 0x000000C5 (0x0000000000000033, 0x000000000000002, 0x0000000000000000000000, 0xFFFFF800047C9DD3) 嘿嘿~您要是就着这个去查 蓝屏 代码大全,哥告诉你,见它的鬼,这玩意根本不起作用。十六进制的代码,不是给一般人读的,除非你是微软的程序员,或者MVP之类的大虾,不然这个就是天书。 这最麻烦的事,果然不好解决,哥的各种猜测,各种怀疑也轮番上阵,折磨的哥那个内心痛苦啊,只好直接让电脑歇了三四天的机,不找到原因,誓不罢休,哥跟它干上了。当然,有的人可能会说,你重装系统不就结了吗?不,这种事,三年以前,哥就决定不再那样干了,至于我为什么不愿意重装系统,我的另一个博客的有详细论述,你也许看过那篇文章: 我为什么不愿意重装系统 情况是这样的,我一台i5 U/H55板子的台式机,装的是D版的windows 7

计算机操作系统

别等时光非礼了梦想. 提交于 2019-12-04 06:53:43
一、操作系统引入 可能有很多同学都有碰到下面我说的这个场景,当我们花了8888大洋买了一台16G内存的专业吃鸡电脑时,打开电脑发现自己的电脑内存只有15G不到,然后就开始了吃鸡之旅。 但是如果你对你少掉的内存关心的话,你会发现并不是厂商为了节省造价成本,而这少掉的内存被某种东西给占用了,这种东西就是我们这篇文章的主角——操作系统。 二、什么是操作系统? 在了解操作系统之前,我们首先回顾下编程的目的,编程的目的是奴役计算机,取代人力。 现在想象一个这样的场景,如果你是奴隶主(人),你在黑市上买了一个奴隶(计算机),你想让这个奴隶干扫地的活,但是这个奴隶可能不明白扫地是什么意思,甚至可能都不知道你全程在逼逼啥。这个时候你可能会考虑买一个管家(操作系统),这个管家既能和你交流,也能和奴隶交流,然后你有任何命令都将由这个管家传达给奴隶。 2.1 什么是文件? 现在让我们来想象我们在计算机上打开一个文件的流程:首先我们需要开机,其次我们需要打开一个文件。可能我们所有人都会认为这没啥,但是,这个时候你需要注意,文件它是什么呢?因为我们太习以为常了,所以我们忽略了这个问题:文件是什么呢?这个时候我不得不告诉你,你可以把文件理解成一个虚拟的单位,有了这个虚拟的单位,我们不再需要考虑机械手臂的运转,你只需要文件可以双击打开、可以写入数据、可以CTRL+S保存。

ucore_lab1

时光毁灭记忆、已成空白 提交于 2019-12-04 04:12:01
一、实验内容 通过阅读bootmain.c,了解bootloader如何加载ELF文件。通过分析源代码和通过qemu来运行并调试bootloader&OS, bootloader如何读取硬盘扇区的? bootloader是如何加载ELF格式的OS? 二、实验相关 ELF文件格式 ELF(Executable and linking format)文件格式是Linux系统下的一种常用 目标文件(object file)格式 ,有 三种主要类型 : 用于执行的可执行文件(executable file),用于提供程序的进程映像,加载到内存执行。 这也是本实验的OS文件类型。 用于连接的可重定位文件(relocatable file),可与其它目标文件一起创建可执行文件和共享目标文件。 共享目标文件(shared object file),连接器可将它与其它可重定位文件和共享目标文件连接成其它的目标文件,动态连接器又可将它与可执行文件和其它共享目标文件结合起来创建一个进程映像。 ELF文件有 两种视图 (View), 链接视图和执行视图 ,如下图: 链接视图通过Section Header Table描述,执行视图通过Program Header Table描述。Section Header Table描述了所有Section的信息,包括所在的文件偏移和大小等;Program

MinIO 分布式集群搭建

陌路散爱 提交于 2019-12-04 04:03:15
MinIO 分布式集群搭建 分布式 Minio 可以让你将多块硬盘(甚至在不同的机器上)组成一个对象存储服务。由于硬盘分布在不同的节点上,分布式 Minio 避免了单点故障。 Minio 分布式模式可以搭建一个高可用的对象存储服务,你可以使用这些存储设备,而不用考虑其真实物理位置。 (1)数据保护 分布式 Minio 采用纠删码(erasure code)来防范多个节点宕机和位衰减(bit rot)。 分布式 Minio 至少需要 4 个节点,使用分布式 Minio 就自动引入了纠删码功能。 纠删码是一种恢复丢失和损坏数据的数学算法, Minio 采用 Reed-Solomon code 将对象拆分成 N/2 数据和 N/2 奇偶校验块。 这就意味着如果是 12 块盘,一个对象会被分成 6 个数据块、6 个奇偶校验块,你可以丢失任意 6 块盘(不管其是存放的数据块还是奇偶校验块),你仍可以从剩下的盘中的数据进行恢复。 纠删码的工作原理和 RAID 或者复制不同,像 RAID6 可以在损失两块盘的情况下不丢数据,而 Minio 纠删码可以在丢失一半的盘的情况下,仍可以保证数据安全。 而且 Minio 纠删码是作用在对象级别,可以一次恢复一个对象,而RAID 是作用在卷级别,数据恢复时间很长。 Minio 对每个对象单独编码,存储服务一经部署,通常情况下是不需要更换硬盘或者修复

linux磁盘管理

血红的双手。 提交于 2019-12-04 03:41:33
计算机硬盘简介 硬盘是计算机主要存储媒介之一,linux系统中硬件设备相关配置文件存放在/dev下,IDE硬盘接口在Linux中设备名为/dev/hda, SAS,SCSI,SATA硬盘接口在linux中设备名为sda,高效云盘硬盘接口会识别为/dev/vda等 文件存储在硬盘上,硬盘的最小存储单位叫做sector(扇区),每个sector存储512字节,操作系统在读取硬盘的时候,不会逐个sector地去读,这样效率很低,为了提升读取效率,操作系统会一次性连续读取多个sector,即一次性读取多个sector称为一个block(块) 由多个sector组成的block是文件存储的最小单位,block的大小常见有1KB,2KB,4KB,block在linux中长设置为4KB,即连续8个sector组成一个block 一个block只能存放一个文件,如果文件的大小比block大,会申请更多的block,相反如果文件的大小比默认block小,扔会占用一个block,这样剩余的空间就会被浪费 硬盘block及inode 通常而言,操作系统对文件数据的存放包括两部分,一个是文件内容,而是权限及文件属性,操作系统文件存放是基于文件系统,文件系统会将文件的实际内容存储到block中,而将权限与属性等信息存放至inode中 每个inode与block都有编号,而每个文件都会占用一个inode

kafka速度快的原因

人走茶凉 提交于 2019-12-04 03:22:40
我们都知道Kafka非常快,比绝大多数的市场上其他消息中间件都要快。这里来研究下那么为什么Kafka那么快(当然不会是因为它用了Scala)。 Kafka的消息是保存或缓存在磁盘上的,一般认为在磁盘上读写数据是会降低性能的,因为寻址会比较消耗时间。 但是实际上,Kafka其中一个特性却是高吞吐率,即使是普通的服务器,Kafka也能轻松支持每秒百万级的写入请求,超过了大部分的消息中间件。这种特性使得Kafka在日志处理等海量数据场景中应用广泛。那么为什么Kafka速度那么快,可以从数据写入和数据读取两方面来分析。 Kafka的数据写入(生产者) 生产者(Producer)是负责向Kafka提交数据的,Kafka会把收到的消息都写入到磁盘中,因此可以认为它绝对不会丢失数据。 而为了优化写入速度,Kafka采用了两种技术,一种是顺序写入,一种是MMFile。 顺序写入 磁盘读写的快慢取决于你怎么使用它,一般可以分为顺序读写或者随机读写。 因为硬盘是机械结构,每次读写都会经过一个【寻址->写入】的过程,其中的寻址是一个十分耗时的机械动作,所以硬盘最讨厌随机I/O,最喜欢顺序I/O。为了提高读写硬盘的速度,Kafka就是使用的顺序I/O。而且Linux对于磁盘的读写优化也比较多,包括read-ahead、write-behind和磁盘缓存等。更多的,对Java的内存管理和垃圾回收会有优化

Python--文件的基本操作

ε祈祈猫儿з 提交于 2019-12-04 02:44:53
#!/usr/bin/env python # -*- coding: utf-8 -*- # ******************************一:文件的操作****************************** # 1. 打开文件,得到文件句柄并赋值给一个变量 # 2. 通过句柄对文件进行操作 # 3. 关闭文件 # 注意:open()一个文件也就是创建了一个对象,把这个对象赋值给变量f,这样变量f文件之间就建立了引用关系 # f = open("a.txt","r") #打开文件,得到文件句柄并赋值给一个变量;文件路径可以是绝对路径也可以是相对路径 # data = f.read() #通过句柄对文件进行操作 # f.close() #关闭文件 # ******************************二:文件的打开方式****************************** # 1.文件的打开方式(默认为文本模式t): # r 以读模式打开文件 # w 以写模式打开文件;如果文件存在,则清空文件,再写入新内容;如果文件不存在则创建文件 # a 以追加模式打开文件(打开文件后,文件光标自动跳转到文件末尾),如果文件不存在则创建文件;注意追加模式下只能进行写操作 # f1 = open("f1.txt","r") #文件不存在则报错 # f1