operating-system相关内容

线程有多贵?

操作系统本机线程有多贵?主机操作系统为线程堆栈分配一些虚拟内存,为线程控制结构分配一点内核内存.我错过了什么吗? 解决方案 它可以增加调度器的工作量,这取决于线程的繁忙程度,以及调度器的类型.它还将为堆栈的第一页分配物理内存. 在许多情况下,主要成本是缓存污染.有太多的活动并发任务会降低性能,因为太多的线程共享的缓存太少,而且它们只是不断地相互推回主内存,这对线程来说比简单地进入睡眠 ..
发布时间:2022-01-11 23:41:18 其他开发

将虚拟地址存储在指针中而不是物理地址有什么好处?

我浏览了下面的链接,它说在大多数操作系统上,指针存储的是虚拟地址而不是物理地址,但我无法获得将虚拟地址存储在指针中的好处. 最后我们可以直接通过指针修改特定内存位置的内容,那么它是虚拟地址还是物理地址有什么问题?同样在代码执行期间,大部分时间数据段也会保留在内存中,所以我们只处理物理内存位置,那么虚拟地址有什么用呢? C 指针和物理地址 解决方案 其实指针一般都持有LOGICA ..
发布时间:2022-01-11 23:41:11 其他开发

x86 处理器如何在引导加载程序加载 GDT 之后获取指令?

在为 x86 编写的典型简单引导加载程序中,我们有以下代码来加载 GDT 并执行远跳转(注意在执行以下代码之前 CS 为 0x0): lgdt gdtdesc移动 %cr0, %eaxorl $1, %eax移动 %eax, %cr0# 跳转到下一条指令,但在 32 位代码段中.# 将处理器切换到 32 位模式.ljmp $0x8, $protcseg.code32 # 汇编为 32 位模式程序 ..
发布时间:2022-01-11 23:41:05 其他开发

打印给定 pid 的子进程(MINIX)

我目前正在做一个项目,作为其中的一部分,我需要在 MINIX 中实现系统调用/库函数. 作为其中的一部分,我需要能够使用其 pid 打印给定进程的子进程列表.我想我已经找到了我需要的部分内容,但我坚持让它与给定的 pid 一起工作. struct task_struct *task;结构列表头*列表;list_for_each(list, ¤t->children) {任务=列 ..
发布时间:2022-01-11 23:40:51 其他开发

栈可以长成堆吗?

我目前正在学习操作系统,我了解到堆栈位于内核和堆之间.令我困惑的是,在大多数实现中,由于堆栈倾向于向下增长而堆增长到更高的内存地址,是什么阻止了堆栈增长到堆中?如果有可能,如果它确实增长到堆中会发生什么? 解决方案 传统上非常简化的内存视图看起来像这样: ====================|操作系统 |高内存====================|您的程序 ||-------- ..
发布时间:2022-01-11 23:40:38 其他开发

什么是插座?是一个过程吗?

我正在研究操作系统的概念,我发现套接字是通信的终点.现在究竟什么是套接字?它是系统通信的过程吗?提前致谢 解决方案 通过阅读维基百科的文章,我明白你为什么会感到困惑. 套接字是一个虚拟设备.也就是说,它是一种用软件编写的设备,没有物理设备.因此,您可以像在终端上一样读取和写入套接字. 套接字成对工作以进行通信,并且通常是双向的.一个读取套接字 (A) 并写入套接字 (B) -- ..
发布时间:2022-01-11 23:40:15 其他开发

CPU 如何从 RAM 访问应用程序和数据

在将应用程序加载到 RAM 并打开文件(因此文件的数据也存储在 RAM 中)之后,我无法理解 CPU 如何从 RAM 访问应用程序和数据. 据我了解,CPU 只是在程序计数器滴答作响或在中断后执行任务时从 RAM 获取指令.那么它如何访问应用程序和数据.是不是它没有并且仍然只是获取指令(例如,加载要在应用程序中打开的硬盘驱动器上的文件)并处理应用程序发出的任何请求,这些请求随后作为指令存储在 ..
发布时间:2022-01-11 23:39:52 其他开发

Windows Vista 是用什么编程语言编写的?

使用哪种编程语言对 Windows Vista 进行编码? 解决方案 从使用 Windows CE 操作系统开始,我会说它混合了用于老式代码和接口的 C,以及许多幕后的 C++用于驱动程序和其他代码.它(WinCE)在系统其余部分的 C 接口后面的驱动程序中使用 C++. 现在我要猜测一下,里面还有很多 C# 和其他代码. ..
发布时间:2022-01-11 23:39:32 其他开发

Mac OS 上的 Java 随机减速

我有一个 Java 程序,用于跨多个处理器执行一组科学计算,方法是将其分解为多个片段并在不同的线程中运行每个片段.这个问题是微不足道的,因此线程之间没有争用或通信.他们访问的唯一常见数据是一些不需要同步访问的共享静态缓存,以及硬盘驱动器上的一些数据文件.线程也不断地写入磁盘,但写入单独的文件. 我的问题是,有时当我运行程序时,我的速度非常快,而有时当我运行完全相同的程序时,它运行得非常慢.如 ..

如何使用 Python 列出远程主机目录中的文件?

我需要从远程主机目录获取文件列表,在我的本地机器上运行代码. 类似于 远程主机 上的 os.listdir(),而不是运行的本地机器上的 os.lisdir()蟒蛇代码. 在 bash 中这个命令有效ssh user@host "find/remote/path/-name "pattern*" -mmin -15" >/local/path/last_files.txt 解决方 ..
发布时间:2022-01-11 23:38:59 Python

处理缺页陷阱后的指令指针值

老实说,我真的对这个特定的虚拟内存相关概念感到困惑. Q1) 发生缺页时,处理器是否先完成当前指令的执行,然后将IP寄存器的内容(下一条指令的地址)移入堆栈?或者,它中止当前正在执行的指令并将指令指针寄存器的内容移动到堆栈? Q2) 如果第二种情况为真,那么它如何恢复被中止的指令,因为当它恢复时,堆栈包含的指令指针值只是下一条指令的地址.所以它永远不会恢复发生页面错误的指令. 我 ..
发布时间:2022-01-11 23:38:50 其他开发

在 Python 中获取 Windows 版本

当我输入控制台(CMD)“winver"时我将获得我的 Windows 版本(内部版本号左侧的四个数字,例如:1803,1903,1909,2004,20H2)但是我怎样才能在 python 中获得我的 Windows 版本呢?我已经试过了: 导入操作系统os.system("winver")输入() 但是它会像在 cmd 中一样打开一个新窗口,但我只想打印 winver 而不打印其余部分,因 ..
发布时间:2022-01-11 23:38:42 Python

通过 Java 找出系统 RAM

我正在编写一个程序,我需要在其中进行最低限度的系统 RAM 验证.如何计算在其 JVM 中执行代码的机器的 RAM? 解决方案 你可以看看Runtime类: Runtime.getRuntime().maxMemory(); 但来自运行时文档: 返回 Java 虚拟机的最大内存量将尝试使用.如果没有固有限制,则该值Long.MAX_VALUE 将被返回 ..
发布时间:2022-01-11 23:38:36 Java开发

在 python 中获取 Windows 版本的更好方法是什么?

我将编写一个执行 Windows 操作系统版本检查的程序,因为我可以使用 sys.windowsversion()[0] 或返回字符串而不是 int 的平台模块来执行此操作,这将是获取 Windows 发布版本的更好方法? 解决方案 你可以通过调用 sys.getwindowsversion.例如这个输出: >>>sys.getwindowsversion()sys.getwindows ..
发布时间:2022-01-11 23:38:20 Python

当线程被调度在不同的 CPU 内核上时,预期的内存语义(例如写入后读取)会发生什么情况?

单线程中的代码具有一定的内存保证,例如先写后读(即,将一些值写入内存位置,然后将其读回应该给出您写入的值). 如果线程被重新调度以在不同的 CPU 内核上执行,这种内存保证会发生什么情况?假设一个线程将 10 写入内存位置 X,然后被重新调度到不同的核心.该内核的 L1 缓存可能具有不同的 X 值(来自之前在该内核上执行的另一个线程),因此现在读取 X 不会像线程预期的那样返回 10.当线程 ..