Int 0x80
发表于
4k
4 分钟
什么是系统调用
上层应用是怎么使用操作系统的呢?操作系统提供系统调用来供上层应用来和操作系统交互,就相当于OS为上层应用暴露了一堆接口,应用使用这些接口来完成相应的功能。举个例子,当你使用printf("hello, world!");时,printf是怎么把 hello, world! 输出到控制台上的呢?这里就是printf通过系统调用接口write,将其输出到了控制台上。那为什么不是printf直接将内容输出,还要通过系统调用write来做呢?展示控制台的这个屏幕,称其为显存,说白了就是一块硬件,那么你在屏幕上显示hello, world!,其实就是在往显存这个硬件中写入数据,而往硬件中写入数据是进程控制CPU去做的,也就是内核部分做的事情,所以write这个动作就属于系统调用了,需要
虚拟内存学习笔记
发表于
2.2k
2 分钟
虚拟内存是什么?
虚拟内存是计算机系统内存管理的一种技术。它是的应用程序认为它拥有连续可用的内存,而实际在物理内存层面,可能是不连续的内存碎片,虚拟内存使用映射的方式将物理内存碎片映射起来,使其看起来是连续的内存。
虚拟地址和物理地址之间怎么映射的?
内存分段
内存分段是较早提出的一种分段方式,分段方法也简单,就是段到段的映射。当需要一块大小为n的虚拟内存时,此时就直接在物理内存中寻找一块连续的物理内存使用就好了。
内存分段解决了程序本身不需要关系局的物理内存地址的问题,但也存在以下问题:
* 内存碎片严重。
* 内存交换的效率低。
当你不断的申请释放申请释放内存时,就会产生很多不连续的小物理碎片,造成空间浪费。如何解决这个问题呢?就需要把不连续的内存空间重新连续起来,那么就要把
CPU是怎么执行任务的?
发表于
2.6k
2 分钟
CPU通过不断的执行一条条指令来运行程序,那执行任务又该怎么理解呢,任务是什么?你知道CPU伪共享是什么意思吗?
CPU Cache
发表于
2.9k
3 分钟
CPU Cache的数据结构与读取过程
CPU Cache的数据是从内存中读取过来的,它是以一小块一小块读取数据的,而不是按照单个元素来读取数据的,在CPU Cache中,这样一小块一小块的数据,被称为Cache Line (缓存块)。Cache Line对应到内存的那一小块数据称为Block(内存块)。
可以使用以下命令查看Cache Line的大小:
linux1
2
$ cat /sys/devices/system/cpu/cpu0/cache/index0/coherency_line_size
64
64即64字节,即L1 CPU Cache一次载入的数据大小为64字节。
比如,有一个int array[100]的数组,当载入array[0]时,也会同时将array[1
存储器结构层次
发表于
1.6k
1 分钟
你知道吗,位于CPU中的各类寄存器、CPU cache、内存 SSD硬盘、机械硬盘都是冯诺依曼模型中的存储单元,为什么设计了这么多存储器呢,他们之间的关系又是什么,存储器是怎么存储数据的,又是怎么提供给CPU使用的呢?
CPU是怎么运行程序的?
发表于
2.9k
3 分钟
你知道`a = 1 + 2`在CPU是怎么执行的吗?
Hexo博客写作技巧
发表于
7.6k
7 分钟
本文介绍Hexo博客的写作技巧。
Hello World
发表于
23
1 分钟
一切的起源都要从”Hello World”开始…