问题标签 [operating-system]

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 投票
8 回答
14490 浏览

linux - 克隆 Debian/Ubuntu 安装

有没有一种简单的方法可以克隆整个已安装的 debian/ubuntu 系统?

我希望在已安装的软件包和尽可能多的设置方面进行相同的安装。

我研究了 aptitude、apt-get、synaptic 的选项,但一无所获。

0 投票
3 回答
14268 浏览

shell - ExitCodes 大于 255,可能吗?

如果是,在哪个操作系统、外壳或其他什么上?

考虑以下 java 程序(我以 java 为例,任何语言都可以解决这个问题,这更多地是关于操作系统):

在 Linux 和 bash 上运行它,它总是返回小于等于 255 的值,例如(echo $?打印上一个执行命令的退出代码)


已编辑:下面的(迄今为止唯一的)答案完全解释了 UNIX 上发生的情况。我仍然想知道其他操作系统。

0 投票
3 回答
530 浏览

audio - 获取 MP3 音频压缩库

我想知道在哪里可以找到 MP3 库,以便在操作系统中实现。

0 投票
6 回答
1998 浏览

windows - Windows 冗余交换?

这可能不是严格的编程相关,而是更多的操作系统结构相关。

在具有 3GB 内存的全新笔记本电脑上运行 Vista 32 位,运行空闲系统会消耗大约 40% 的内存。除了这本身就令人发指的事实之外,操作系统应该能够将所有进程很好地放入内存中,并且永远不需要交换到磁盘。
然而,查看任务管理器,我发现进程总是出现页面错误。不是很多,但仍然。例如 explorer.exe 大约每秒有一个。

这是为什么?为什么操作系统觉得有必要换出页面,尽管它有足够的物理内存?

0 投票
11 回答
5155 浏览

operating-system - 有多少操作系统可以用 Python 编写?

这是一个相当理论的问题,但是..

有多少操作系统可以用 Python、Ruby、Perl 或 Lisp、Haskell 等语言编写?

似乎很多像 init.d 这样的东西都可以用脚本语言轻松完成。防火墙设备操作系统之一(m0n0wall)使用 PHP 进行系统配置(包括启动时)。有人可能会争辩说“emacs 是一种操作系统,主要是用 Lisp 编写的”..

当然,有些位必须是汇编/C,但是有多少可以是常规的 .py/rb/.pl/.el/.hk 文件..?它可能没有最好的性能,但它会是迄今为止最容易修改的操作系统……

0 投票
2 回答
927 浏览

c - 如何在 Linux 中使用微状态记帐?

我想在 Linux 上以编程方式访问微状态记帐计时器。我想问题的第一部分是这些在哪里可用?哪些内核版本和发行版?哪些硬件平台?第二部分是如何实际访问计时器?什么是系统调用?

这是一个描述微状态会计的(有些旧的)页面,但我找不到那里描述的系统调用。

0 投票
4 回答
818 浏览

perl - 我如何知道系统是否已启动?

我正在编写一个通过网络启动系统的脚本。然后我需要在另一台主机上运行一些命令。如何知道系统是否已开机?

我的编程语言是 Perl,目标主机是 RHEL5。

是否有任何内核中断或网络引导信息表明系统已开机且操作系统已加载?

[在不同的情况下] 我也想知道如果我只是手动打开我的机器。确切地说是什么时候通电。以及操作系统应该何时完全启动以进行网络相关操作,例如在那里执行网络命令。如果系统在 DHCP 上怎么办,那么远程系统将如何搜索这台机器 [我猜这可能通过 mac 地址。但如果我错了]。

如果我错过了任何信息,请随时问我。如果您有任何建议可以使任务更轻松,请提出:)

谢谢伊姆金

0 投票
11 回答
77742 浏览

c++ - 自旋锁与信号量

信号量和自旋锁之间的基本区别是什么?

我们什么时候会在自旋锁上使用信号量?

0 投票
7 回答
5493 浏览

operating-system - 除了 malloc/free 程序是否需要操作系统来提供其他任何东西?

我正在为我正在开发的操作系统设计内核(我实际上将其称为“核心”只是为了不同,但它基本相同)。如果我无法启动并运行多任务、内存管理和其他基本功能,那么操作系统本身的细节就无关紧要了,所以我需要先解决这个问题。我有一些关于设计 malloc 例程的问题。

我认为 malloc() 要么是内核本身的一部分(我倾向于这个)要么是程序的一部分,但我将不得不编写自己的 C 标准库的实现方式,所以我开始写一个malloc。在这方面我的问题实际上相当简单,C(或C++)如何管理它的堆?

我在理论课上一直被教导的是,堆是一块不断扩展的内存,从指定的地址开始,并且在很多意义上表现得像一个堆栈。这样,我知道在全局范围内声明的变量在开头,更多的变量在各自的范围内声明时被“推送”到堆上,超出范围的变量只是留在内存空间中,但是该空间被标记为空闲,因此如果需要,堆可以扩展更多。

我需要知道的是,C 究竟如何以这种方式处理动态扩展堆?编译后的 C 程序是否会自己调用 malloc 例程并处理自己的堆,还是需要为它提供自动扩展空间?另外,C 程序如何知道堆的开始位置?

哦,我知道同样的概念也适用于其他语言,但我希望任何示例都使用 C/C++,因为我最熟悉那种语言。我也不想担心堆栈等其他事情,因为我认为我能够自己处理这样的事情。

所以我想我真正的问题是,除了 malloc/free(它自己处理获取和释放页面等)之外,程序是否需要操作系统来提供其他任何东西?

谢谢!

编辑我对 C 如何使用与堆相关的 malloc 比对 malloc 例程本身的实际工作更感兴趣。如果有帮助,我会在 x86 上执行此操作,但 C 是交叉编译器,所以没关系。^_^

进一步编辑:我知道我可能会混淆术语。我被告知“堆”是程序存储诸如全局/局部变量之类的东西的地方。我习惯于在汇编编程中处理“堆栈”,我刚刚意识到我可能是这个意思。我的一些研究表明,“堆”更常用来指代程序为自己分配的总内存,或者操作系统提供的内存页的总数(和顺序)。

那么,考虑到这一点,我该如何处理不断扩大的堆栈?(看来我的 C 理论课有点……有缺陷。)

0 投票
5 回答
7548 浏览

operating-system - 内核开发中使用的堆栈大小

我正在开发一个操作系统,而不是编写内核,我正在设计内核。该操作系统针对 x86 架构,而我的目标是针对现代计算机。所需 RAM 的估计数量为 256Mb 或更多。

使每个线程的堆栈在系统上运行的合适大小是多少?我是否应该尝试以这样一种方式设计系统,即如果达到最大长度,堆栈可以自动扩展?

我想如果我没记错的话,RAM 中的一个页面是 4k 或 4096 字节,这对我来说似乎并不多。我绝对可以看到时间,尤其是在使用大量递归时,我希望一次在 RAM 中拥有超过 1000 个整数。现在,真正的解决方案是让程序通过使用malloc和管理自己的内存资源来做到这一点,但我真的很想知道用户对此的看法。

4k 是否足以容纳现代计算机程序的堆栈?堆栈应该比那个大吗?堆栈是否应该自动扩展以适应任何类型的大小?从实际开发人员的角度和安全的角度来看,我对此都很感兴趣。

4k对于堆栈来说太大了吗?考虑到正常的程序执行,特别是从 C++ 中的类的角度来看,我注意到好的源代码倾向于malloc/new在创建类时提供所需的数据,以最大限度地减少函数调用中抛出的数据。

我什至没有进入的是处理器高速缓存的大小。理想情况下,我认为堆栈将驻留在缓存中以加快速度,我不确定我是否需要实现这一点,或者处理器是否可以为我处理它。我只是打算使用常规无聊的旧 RAM 进行测试。我无法决定。有什么选择?