标签: architecture

为什么我们需要 fork 来创建新进程?

在Unix中,每当我们想要创建一个新进程时,我们会fork当前进程,创建一个与父进程完全相同的新子进程;然后我们执行 exec 系统调用以将来自父进程的所有数据替换为新进程的所有数据。

为什么我们首先创建父进程的副本而不是直接创建新进程?

process fork architecture

115
推荐指数
4
解决办法
6万
查看次数

键盘输入和文本输出如何工作?

假设我A在文本编辑器中按下键,这会a在文档中插入字符并将其显示在屏幕上。我知道编辑器应用程序没有直接与硬件通信(中间有内核和其他东西),那么我的计算机内部发生了什么?

keyboard x11 architecture display

105
推荐指数
2
解决办法
3万
查看次数

为什么cp没有wget这样的进度条?

请注意,我不问如何。我已经知道像pv和这样的选项rsync -P

我想问一下为什么cp实现进度条,至少作为标志?

cp wget architecture

68
推荐指数
3
解决办法
2万
查看次数

在 Linux 的一种“风格”上编译的 Linux 可执行文件会在不同的 Linux 上运行吗?

一个非常简单的小程序的可执行文件,比如下面显示的,在一种 Linux 上编译的,它会在不同的 Linux 上运行吗?还是需要重新编译?

在这种情况下,机器架构重要吗?

int main()
{
  return (99);
}
Run Code Online (Sandbox Code Playgroud)

linux compiling compatibility architecture

65
推荐指数
6
解决办法
2万
查看次数

为什么允许 rm 删除其他用户拥有的文件?

来自帖子为什么 rm 可以删除只读文件?我明白那个rm只需要对目录的写权限即可删除文件。但是我发现很难消化我们可以轻松删除所有者和分组不同的文件的行为。

我尝试了以下

mtk : 我的用户名
abc : 创建了一个新用户

$ ls -l file
-rw-rw-r-- 1 mtk mtk       0 Aug 31 15:40 file
$ sudo chown abc file
$ sudo chgrp abc file
$ ls -l file
-rw-rw-r-- 1 abc abc       0 Aug 31 15:40 file
$ rm file
$ ls -l file
<deleted>
Run Code Online (Sandbox Code Playgroud)

我在想这不应该被允许。用户应该只能删除其所有权下的文件吗?有人可以解释为什么允许这样做吗?避免这种情况的方法是什么?我可以认为只限制父目录的写权限以禁止意外删除文件。

permissions history architecture rm files

53
推荐指数
2
解决办法
2万
查看次数

在 Unix 系统上,为什么我们必须显式地`open()` 和`close()` 文件才能`read()` 或`write()` 它们?

为什么在 Unix 文件系统设计中存在open()close()存在?

操作系统不能只检测第一次read()或被write()调用并做open()通常会做的事情吗?

filesystems api architecture files

51
推荐指数
6
解决办法
8734
查看次数

确定特定 ARM 体系结构字符串的简单命令行方法?

我正在尝试编写一个脚本,该脚本将根据机器的架构确定操作。我已经uname -m习惯收集架构线了,但是我不知道有多少个ARM架构,也不知道一个是armhf, armel, 还是arm64.

由于这是需要这种脚本来确定脚本的部分是否可以运行或不,我试图找到一个简单的方法来确定该架构armhfarmelarm64。是否有可用于输出或者任何单行或简单的命令armhfarmelarm64

该脚本是专门为 Debian 和 Ubuntu 系统编写的,我正在考虑这一点(如果您不在这些发行版之一上,它会自动退出,但是如果命令存在)


编辑:最近了解到 armel 已死,并且 arm64 软件构建器(PPA 或基于虚拟的)并不是最稳定的。所以我有一个通配符搜索查找arm*和假设 armhf,但仍然有必要找出一个返回三个之一的一个 liner - 无论是 Ubuntu/Debian 命令还是内核调用或其他东西。

scripting ubuntu debian architecture cpu-architecture

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

什么是软件和硬件中断,它们是如何处理的?

我不确定我是否理解硬件和软件中断的概念。

如果我理解正确,硬件中断的目的是引起 CPU 的一些注意,这是实现 CPU 多任务处理的一部分。

  1. 那么硬件中断是怎么产生的呢?是硬件驱动程序吗?
  2. 如果是,硬件驱动程序进程在哪里运行?如果它运行在CPU上,那么它就不必通过硬件中断来引起CPU的注意,对吗?那么它在其他地方运行吗?
  3. 硬件中断是直接中断CPU,还是先联系内核进程,内核进程再联系/中断CPU?

另一方面,我认为软件中断的目的是让当前在 CPU 上运行的进程请求一些资源。

  1. 有哪些资源?它们都是运行进程的形式吗?比如CPU驱动进程和内存驱动进程代表CPU和内存资源吗?I/O设备的驱动进程是否代表I/O资源?其他正在运行的进程是否也希望与资源通信?
  2. 如果是,软件中断是否通过内核进程间接联系进程(代表资源)?与硬件中断不同,软件中断从不直接中断 CPU,而是中断/联系内核进程,这对吗?

cpu interrupt architecture

45
推荐指数
1
解决办法
9万
查看次数

*nix 的面向对象 shell

前言:我喜欢 bash 并且无意开始任何形式的争论或圣战,希望这不是一个非常幼稚的问题。

这个问题与超级用户上的这篇文章有些相关,但我认为 OP 并不真正知道他在问什么。我在 FreeBSD、linux、OS X 和 Windows 上的 cygwin 上使用 bash。我最近在 Windows 上使用 PowerShell 也有丰富的经验。

是否有用于 *nix 的 shell,已经可用或正在开发中,它与 bash 兼容,但在混合中添加了一层面向对象的脚本?我所知道的唯一接近的是 python 控制台,但据我所知,它不提供对标准 shell 环境的访问。例如,我不能只是cd ~and ls,然后chmod +x file在 python 控制台中。我将不得不使用 python 来执行这些任务,而不是标准的 unix 二进制文件,或者使用 python 代码调用二进制文件。

这样的壳存在吗?

shell scripting bash architecture

43
推荐指数
4
解决办法
3万
查看次数

外行解释“一切都是文件”——与Windows有什么不同?

我知道“一切都是文件”意味着即使设备在 Unix 和类 Unix 系统中也有它们的文件名和路径,并且这允许在各种资源上使用通用工具,而不管它们的性质如何。但我无法将其与 Windows 进行对比,这是我使用过的唯一其他操作系统。我读过一些关于这个概念的文章,但我认为对于非开发人员来说,它们有些难以掌握。外行的解释是人们需要的!

例如,当我想将文件复制到连接到读卡器的 CF 卡时,我将使用类似

zcat name_of_file > /dev/sdb
Run Code Online (Sandbox Code Playgroud)

在 Windows 中,我认为读卡器将作为驱动程序出现,我认为我们将做类似的事情。那么,“一切都是文件”的哲学在这里有何不同?

windows architecture files unix-philosophy

43
推荐指数
1
解决办法
1万
查看次数