问题标签 [systems-programming]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
9 回答
89267 浏览

c++ - 以编程方式获取缓存行大小?

欢迎所有平台,请指定您回答的平台。

一个类似的问题:How to programmatically get the CPU cache page size in C++?

0 投票
5 回答
11411 浏览

c - 转换:uid_t 到字符串,off_t 到字符串

我目前正在编写系统编程作业,其中一部分我需要获取目录中文件的一些信息。

对于文件的统计信息,我们有ctime()time_t类型转换为string并返回指向它的指针的函数。

但是uid_toff_t类型呢?我通过互联网搜索并找不到任何功能..或者如果不存在任何功能,您能告诉我如何实现这样的功能吗?

0 投票
3 回答
2699 浏览

filesystems - 如何以编程方式真正清理删除文件?

所以你即将把你的工作电脑交给你的一些同事。你如何确保你真的删除了你所有的个人数据?

重新格式化,重新安装操作系统并不能真正解决问题。

我四处搜索,发现 一些 程序确实“擦除”磁盘。

这让我想到这些程序是如何工作的?我的意思是,他们使用什么算法以及这些实现有多低级?

有任何想法吗?

0 投票
10 回答
21116 浏览

c++ - C/C++ 如何判断一个程序是否已经在运行?

在 Windows 环境中,我不希望我的程序的两个实例同时运行。

有关的

是否使用互斥锁来防止同一程序的多个实例安全运行?

0 投票
2 回答
8013 浏览

memory-management - 关于 N 路集关联缓存步数的信息

我在 Internet 上访问的一些资源对集合关联缓存的工作方式存在分歧。

例如,硬件机密似乎相信它是这样工作的:

然后主 RAM 内存被划分为内存缓存中可用的相同数量的块。保持 512 KB 的 4 路组关联示例,主 RAM 将分为 2,048 个块,与内存高速缓存中可用的块数相同。每个内存块都链接到缓存内的一组行,就像在直接映射缓存中一样。

http://www.hardwaresecrets.com/printpage/481/8

他们似乎在说每个缓存块(4 个缓存行)映射到一个特定的连续 RAM 块。他们说不连续的系统内存(RAM)块不能映射到同一个缓存块。

这是hardwaresecrets认为它如何工作的图片 http://www.hardwaresecrets.com/fullimage.php?image=7864

与维基百科的设置关联缓存图片对比 http://upload.wikimedia.org/wikipedia/commons/9/93/Cache%2Cassociative-fill-both.png

布朗不同意硬件秘密

考虑一下如果每个高速缓存行有两组字段会发生什么:两个有效位、两个脏位、两个标记字段和两个数据字段。一组字段可以为主内存的一个区域缓存数据,而另一组字段可以为恰好映射到同一缓存行的另一个区域缓存数据。

http://www.spsu.edu/cs/faculty/bbrown/web_lectures/cache/

也就是说,系统内存的非连续块可以映射到同一个高速缓存块。

系统内存上的非连续块和缓存块之间的关系是如何创建的。我在某处读到这些关系是基于缓存步长的,但是除了它们存在之外,我找不到任何关于缓存步长的信息。

谁是对的?如果实际使用跨步,跨步是如何工作的,我是否有正确的技术名称?如何找到特定系统的步幅?它是基于寻呼系统的吗?有人可以指出一个详细解释 N 路集关联缓存的 url 吗?

另见: http ://www.cs.umd.edu/class/sum2003/cmsc311/Notes/Memory/set.html

0 投票
19 回答
9168 浏览

c - 我们必须“出于性能原因”使用 C

在这个语言众多的时代,几乎每项任务似乎都有一门很棒的语言,我发现自己在专业上与“只有 C 是快”的口头禅作斗争,其中“快”的真正意思是“足够快”。我与非常理性、思想开放的人一起工作,他们喜欢比较数字,而我所拥有的只是想法和意见。你能帮我找到超越主观意见进入“现实世界”的方法吗?

您能帮我找到有关是否可以将任何其他语言用于嵌入式和(Linux)系统编程的研究吗?我很可能会提出一个错误的假设,并且非常感谢研究向我展示这一点。您能否链接或包含好的数字,以帮助将“这只是他/她的意见”评论保持在最低限度。


所以这些是我的特殊要求

  • 记忆力不是一个严重的限制
  • 便携性不是一个严重的问题
  • 这不是一个实时系统
0 投票
2 回答
9121 浏览

c - *nix select 和 exceptfds/errorfds 语义

select系统调用需要 3 个文件描述符集来观察 fds 的可读/可写和文件描述符上的“异常” 。

我的选择手册页没有过多exceptfd说明描述符集。它是干什么用的; 什么样的异常可以并且会通知文件描述符?

我假设描述符类型可能会有所不同……无论是 TCP 套接字、管道、tty 等)。有没有人有更多关于select可以报告不同类型描述符的错误的信息?

0 投票
2 回答
42125 浏览

windows - 64 位 Windows 是否使用 KERNEL64?

我正在查看一些带有 dumpbin 的库,我注意到所有 64 位版本都链接到 KERNEL32。64 位 Windows 上没有 KERNEL64 吗?如果不是,为什么?

我所有的操作系​​统都是 32 位的,所以我不能只看。谷歌搜索没有带来任何有价值的东西,所以我怀疑没有 KERNEL64,但我仍然很好奇为什么会这样。

编辑:我后来发现这非常有用。 x64 的 MSDN 指南

0 投票
1 回答
793 浏览

systems-programming - 系统编程中的工作区是什么?

我在学习链接时读过它。当程序将要执行时,它首先由链接器链接。当时它被放在工作区。现在我想现在这个工作区是什么?

0 投票
7 回答
54464 浏览

linux - 如果指向的文件被移动或删除,Linux 上打开的文件句柄会发生什么

如果指向的文件同时获得,Linux 上的打开文件句柄会发生什么:

  • 移开 -> 文件句柄是否保持有效?
  • 已删除 -> 这是否会导致 EBADF,表明文件句柄无效?
  • 替换为新文件 -> 文件句柄是否指向这个新文件?
  • 替换为指向新文件的硬链接 -> 我的文件是否处理“跟随”此链接?
  • 替换为指向新文件的软链接 -> 我的文件句柄现在是否命中此软链接文件?

为什么我要问这样的问题:我正在使用热插拔硬件(例如 USB 设备等)。可能会发生设备(以及它的 /dev/file)被用户或另一个 Gremlin 重新连接的情况。

处理这个问题的最佳做法是什么?