首页
学习
活动
专区
圈层
工具
发布
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    【Linux】地址空间&&虚拟地址

    这个地址绝对不是物理地址,理论上修改了数据为300之后不可能在输出有100,访问一个地址怎么可能又是100也是300。这个地址在系统层面上称之为虚拟地址。...在32位和64位下的地址空间大小是不一样的,为了方便这里使用32位来表述。32位从低到高一个有4GB的地址空间范围,实际上这个地址空间当中打印出来的地址,是该空间内对应的地址。...其实PCB和地址空间都是在物理内存里面的,只不过要访问初始化全局数据的时候,不在地址空间上保存,地址空间只会提供线性连续地址,让用户之后通过虚拟地址的地址空间,将虚拟地址转化到为了物理内存中。...,所以在地址空间的初始化数据中就有它的地址虚拟地址,页表的左侧也有它的虚拟地址,在页表右侧就有它对应的物理地址。...所以虚拟地址相同而物理地址不同。 3. 进程调度 Linux中的nice值并不是能任意调度的,而是从-20到19,这40个数字之间变换。

    2K10

    ganache-cli如何指定监听端口和地址?

    仿真器ganache-cli是开发以太坊智能合约和去中心化应用(DApp)必不可少的工具软件,本文将介绍启动ganache-cli时如何自定义设置其监听端口和监听地址。...例如,下面的命令将启动ganache-cli在7878端口监听: ~$ ganache-cli -p 7878 指定监听地址 默认情况下,ganache-cli的监听地址为0.0.0.0,这意味着从仿真器所在网络上的任意计算机都可以访问这个节点...例如,下面的命令将启动ganache-cli在地址127.0.0.1监听,这样只有本机上的应用才可以访问仿真节点: ~$ ganache-cli -h 127.0.0.1 同时指定监听地址和监听端口 同时使用...-h和-p启动选项来设定监听地址和端口。...例如,下面的命令将启动ganache-cli在地址127.0.0.1的7878端口监听: ~$ ganache-cli -h 127.0.0.1 -p 7878 如果你希望马上开始学习以太坊DApp开发

    2.3K60

    【Linux】基础IO

    今天我们要学习的是基础IO部分,主要涉及内存和外设之间的数据交互。接下来,就让我们共同探讨这部分内容吧,那我们就开始吧!...本文章重点: 复习C文件IO相关操作 认识文件相关系统调用接口 认识文件描述符,理解重定向 对比fd和FILE,理解系统调用和库函数的关系 理解文件系统中inode的概念 认识软硬链接,对比区别 认识动态静态库...buf:需要写入文件的字符串的起始地址。 count,写入文件的字符串的长度。 其中第三个参数需要注意,传入的字符串长度是不算 \0 的,因为这是系统调用接口,并非C语言。...3.read函数 read函数是Linux下的一个系统调用接口,C语言的fread函数的底层就是read。作用为从一个特定的文件流中读取内容。...4.close函数 close函数也是Linux下的一个系统调用接口,C语言的fclose底层就是close。 参数 fd:就是调用open时的返回值,本质是第一个文件描述符。

    92210

    Linux:基础IO

    2、将两个文件的结果都写到一个文件 这个意思是1号文件的地址变成了all.log 然后2也被写入到原来1的位置,所以最后其实都被写到了all.log文件里面 三、如何理解一切皆文件 1、计算机上进行的所有操作...——>其实我们还可以发现  这个文件其实就是基类,而外设就是派生类,然后指针指向什么就调用什么对象,这就是多态,只不过Linux必须用C语言写,所以只能用函数指针来完成这个工作!!...4、理解了Linux的一切皆文件后,懂得了文件操作的底层,即使以后在使用其他语言的文件操作时对接口不熟,但只要给时间查一下,很快就会懂得怎么用了!!...——>因为很多地方需要对软件做分层,设置出各种虚拟化的场景(比如刚刚提到的文件虚拟系统就是,只不过Linux必须用C写,否则肯定用C++写更方便) ——>封装、继承、多态!...缓冲区的大小 #define FLUSH_NOW 1 //立刻刷新 #define FLUSH_LINE 2 //行刷新 #define FLUSH_ALL 4 //全刷新 typedef struct IO_FILE

    1.8K10

    【Linux】基础IO

    件在磁盘⾥ 磁盘是永久性存储介质,因此⽂件在磁盘上的存储是永久性的 磁盘是外设(即是输出设备也是输⼊设备) 磁盘上的⽂件 本质是对⽂件的所有操作,都是对外设的输⼊和输出 简称 IO...不过,在认识系统⽂件IO之前,先要了解下如何给函数传递标志位,该⽅法在系统⽂件IO接⼝中会使⽤到: 2.1⼀种传递标志位的⽅法 # include # define...; int len = strlen (msg); while (count--){ write(fd, msg, len); //fd: 后⾯讲, msg :缓冲区⾸地址...函数,⼀般往 stdout 中输出,但是stdout底层访问⽂件的时候,找的还是fd:1, 但此时,fd:1下标所表⽰内容,已经变成了myfifile的地址,不再是显⽰器⽂件的地址,所以,输出的任何消息都会往...这样做最明显的好处是,开发者仅需要使⽤⼀套 API 和开发⼯具,即可调取 Linux 系统中绝⼤部分的资源。

    87810

    Linux基础IO

    操作文件的本质:进程在操作文件------>因此探讨的是进程与文件的关系. 1.2:默认打开的三个流 我们都知道在Linux下一切皆文件,也就是说Linux下的任何东西都可以看作是文件,那么显示器和键盘当然也可以看作是文件...我们在Linux平台下运行C代码时,C库函数就是对Linux系统调用接口进行的封装,在Windows平台下运行C代码时,C库函数就是对Windows系统调用接口进行的封装,这样做使得语言有了跨平台性,也方便进行二次开发...当进程打开log.txt文件时,我们需要先将该文件从磁盘当中加载到内存,形成对应的struct file,将该struct file链入到双向循环链表中,并将该结构体的首地址填入到fd_array数组当中下标为...fopen函数在上层为用户申请FILE结构体变量,并返回该结构体的地址(FILE*),在底层通过系统接口open打开对应的文件,得到文件描述符fd,并把fd填充到FILE结构体当中的_fileno变量中...所以我们的软链接和我们c语言的指针其实非常的像,那么指针的本质其实就是一个变量,只不过该变量的内容就是指向的变量的地址,而同理我们的软链接,也是一个文件,只不过内容保存的是指向的目标文件的路径字符串.

    33910

    Linux IO 模型

    fdset 从用户态拷贝到内核态,在高并发下是个巨大的性能开销(可优化为不拷贝); 调用 select 阻塞后,用户进程虽然没有轮询,但在内核还是通过遍历的方式来检查 fd 的就绪状态(可通过异步 IO...在 Linux 2.4 内核前主要是 select 和 poll,自 Linux 2.6 内核正式引入 epoll 以来,epoll 已经成为了目前实现高性能网络服务器的必备技术。...mmap 将用户空间的一块地址和内核空间的一块地址同时映射到相同的一块物理内存地址(不管是用户空间还是内核空间都是虚拟地址,最终要通过地址映射映射到物理地址),使得这块物理内存对内核和对用户均可见,减少用户态和内核态之间的数据交换...内核可以直接看到 epoll 监听的句柄,效率高。 红黑树:红黑树将存储 epoll 所监听的套接字。...以下是一个简单的 Java AIO 示例 import java.io.IOException; import java.net.InetSocketAddress; import java.nio.ByteBuffer

    1.9K20

    聊聊Linux IO

    而从步骤3到步骤5中间会涉及到大量 Linux IO 的原理,特别是Page Cache 和 Buffer Cache 等缓存。...Linux IO 缓存体系,stdio和内核缓存的区别,Page Cache和Buffer Cache的区别。 Buffered IO、mmap(2)、Direct IO的区别。...所以后面的讨论基本上是讨论 IO 相关的系统调用和文件系统Page Cache的一些机制。 Linux内核中的IO栈 这一小节来看 Linux 内核的 IO 栈的结构。先上一张全貌图[4]: ?...设备层,通过 DMA 与内存直接交互,完成数据和具体设备之间的交互 结合这个图,想想Linux系统编程里用到的Buffered IO、mmap(2)、Direct IO,这些机制怎么和 Linux IO...mmap(2)直接把Page Cache映射到了用户态的地址空间里了,所以mmap(2)的方式读文件是没有第二次拷贝过程的。那Direct IO做了什么?

    3.8K21

    【Linux】基础IO(二):系统文件IO

    一、IO操作的层级调用关系简单来说:C/C++程序(标准库)→调用→系统调用→调用→操作系统→调用→硬件驱动→操作→硬件。...Linux大神们只用了一个int类型(32位)就搞定了。这背后的核心魔法,就是比特位传递标志位。...掌握了“比特位传递标志位”,你就掌握了阅读Linux源码的一把金钥匙。...总结文件描述符(FileDescriptor,简称fd)是Linux系统操作文件的核心标识,它的本质并非随机数字,而是进程内一个指针数组的下标。...Linux进程会维护一个专门的指针数组,数组中每个元素(指针)都指向一个“已打开文件的信息结构体”,这个结构体包含了文件路径、读写位置、权限等所有文件相关信息,通过文件描述符这个下标,就能精准找到对应的文件信息

    45220

    【Linux高级IO】五种IO模型

    前言: 在信息技术日新月异的今天,Linux操作系统以其强大的稳定性和灵活性,成为了服务器、嵌入式系统以及众多开发者心中的首选平台。...而在Linux系统的广阔天地中,I/O(输入/输出)操作无疑是连接用户与硬件、软件之间的桥梁,其性能的优化直接关系到整个系统的响应速度和数据处理能力。...深入探索Linux的I/O模型,我们不难发现,这些模型不仅仅是数据流动的通道,更是理解系统并发处理、资源调度以及性能调优的关键所在。...让我们一同开启这段充满挑战与收获的旅程,探索Linux高级I/O模型的奥秘,为打造更加出色的系统应用奠定坚实的基础。...总结 随着本文的收尾,我们共同完成了对Linux高级I/O模型中五种核心机制的深入探索。

    85310

    聊聊Linux IO(下)

    对应到Linux的Page Cache上所谓Write Through就是指write(2)操作将数据拷贝到Page Cache后立即和下层进行同步的写操作,完成下层的更新后才返回。...Linux下Buffered IO默认使用的是Write back机制,即文件操作的写只写到Page Cache就返回,之后Page Cache到磁盘的更新操作是异步进行的。...磁盘的性能测试 在具体的机器上跑服务程序,如果涉及大量IO的话,首先要对机器本身的磁盘性能有明确的了解,包括不限于IOPS、IO Depth等等。...一般SSD的IO Depth都在32甚至更高,使用32或者64个线程才能跑满一个SSD磁盘的带宽(同步IO情况下)。 具体的SSD原理不在本文计划内,这里给出一篇详细的参考文章[7]。...写在最后 每天抽出不到半个小时,零零散散地写了一周,这是说是入门都有些谬赞了,只算是对Linux下的IO机制稍微深入的介绍了一点。

    3.8K11

    【Linux】基础IO认知

    不止是这些的C语言中的对于代码的修改,在Linux操作系统上的echo进行重定向,也能够对文件内容进行修改,所以输出重定向一定是文件操作,并且每次重定向写入的方式是先清空,再写入,其实根本上,这个输出重定向也就是按照...open函数的第一种方式代表的通常都是操作一些已经存在的文件,因为如果直接创建的话,在Linux操作系统中,我们不知道,我们创建的文件的权限是什么,所以说有的时候还会让我们创建的文件的权限出现乱码的情况...1、创建file 2、开辟文件缓冲区的空间,加载文件数据 3、查进程的文件描述表 4、file地址填入对应的表小表中 5、返回下标 话又说回来,其实read和write函数本质上也就是拷贝函数。...由于Linux操作系统一切皆文件,所以其中显示器,键盘的外设,也能够存在于sturct file链表中,所以就有了之前的0,1,2。 对于硬件来说的一切皆文件示意图。

    59410

    Linux多种IO模型

    Linux多种IO模型阻塞IO阻塞IO模型中,用户进程在内核等待网卡数据和内核数据拷贝到用户缓冲区两个阶段都处于等待状态。...IO多路复用无论是阻塞IO还是非阻塞IO,用户应用在一阶段都需要调用recvfrom来获取数据,差别在于无数据时的处理方案:如果调用recvfrom时,恰好 没有 数据,阻塞IO会使进程阻塞,非阻塞IO...文件描述符(File Descriptor): 简称FD,是一个从0开始递增的无符号整数,用来 关联 Linux中的一个文件。...在Linux中,一切皆文件,例如常规文件、视频、硬件设备等,当然也包括网络套接字(Socket)。...而IO多路复用就是利用 单个线程 去同时监听多个FD(Socket请求),当某个FD可读、可写的时候这个线程就会得到通知,然后去进行后续的处理,这样可以避免浪费CPU资源。

    47310
    领券