小编Jun*_*Zhi的帖子

Kinesis Stream和DynamoDB流之间的区别

他们似乎对我做同样的事情.任何人都可以向我解释这个区别吗?

amazon-kinesis amazon-dynamodb-streams

16
推荐指数
2
解决办法
8671
查看次数

Linux内核v2.6 +中的pthread与kthread

这是一个概念性问题.

根据这篇文章,pthread实际上是使用clone()系统调用实现的.因此,我们可以推断在用户空间中有一个内核线程(或轻量级进程)备份pthread.内核知道pthread并且可以像进程一样安排它.

至于kthread,根据Robert Love的说法,kthreads也是用clone()系统调用创建的:

clone(CLONE_VM| CLONE_FS | CLONE_FILES | CLONE_SIGHAND, 0)
Run Code Online (Sandbox Code Playgroud)

所以pthread和kthread都使用clone()调用.我的第一个问题是:

  1. 这两种线程之间有区别吗?

为了回答我自己的问题,我继续读到:

内核线程和普通进程之间的显着区别是内核线程没有地址空间(事实上,它们的mm指针是NULL).

这有区别吗?我的意思是,由pthread_create()创建的线程与正常进程共享地址空间.相反,kthread没有自己的地址空间.那是对的吗?

还有什么不同?

linux multithreading kernel pthreads linux-kernel

8
推荐指数
1
解决办法
6291
查看次数

使用时间戳实现 LRU:内存存储和加载的成本有多高?

我说的是用 C 实现的 LRU 内存页面替换算法,而不是用 Java 或 C++ 实现。

根据操作系统课程笔记

好的,那么我们如何实际实现 LRU 呢?想法1):用时间戳标记我们接触过的一切。每当我们需要驱逐页面时,我们都会选择最旧的页面(=最近最少使用)。事实证明,这个简单的想法并不那么好。为什么?因为对于每个内存加载,我们都必须读取时钟的内容并执行内存存储!因此很明显,保留时间戳将使计算机速度至少慢一倍。我

内存加载和存储操作应该非常快。真的有必要摆脱这些微小的操作吗?

在内存替换的情况下,从磁盘加载页面的开销应该比内存操作大很多。为什么要真正关心内存存储和加载?

如果注释所说的不正确,那么使用时间戳实现 LRU 的真正问题是什么?

编辑:

当我深入挖掘时,我能想到的原因如下。这些内存存储和加载操作在页面命中时发生。在这种情况下,我们没有从磁盘加载页面,因此比较无效。

由于预计命中率会非常高,因此更新与LRU相关的数据结构应该非常频繁。这就是为什么我们关心更新过程中重复的操作,例如内存加载和存储。

但我仍然无法相信内存加载和存储的开销有多大。周围应该有一些测量值。有人可以指点我吗?谢谢!

performance operating-system kernel memory-management lru

5
推荐指数
1
解决办法
1626
查看次数