Questions tagged «architecture»

有关(UNIX)OS体系结构的一般问题

4
如何理解管道
当我只是在bash中使用管道时,我对此并没有多加考虑。但是,当我使用系统调用pipe()和fork()一起阅读一些C代码示例时,我不知道如何理解管道,包括匿名管道和命名管道。 经常听到“ Linux / Unix中的所有内容都是文件”。我想知道管道实际上是否是文件,以便它连接的一部分写入管道文件,而另一部分从管道文件读取吗?如果是,在哪里创建匿名管道的管道文件?在/ tmp,/ dev或...? 但是,从命名管道的示例中,我还了解到,使用管道比显式使用临时文件具有空间和时间性能上的优势,这可能是因为管道的实现中没有涉及文件。同样,管道似乎不像文件那样存储数据。所以我怀疑管道实际上是一个文件。

2
像ls这样的系统命令是如何创建的?
我对* nix有一些疑问。 我不知道哪种可执行文件是ls.sh或.ksh或其他类型的系统可执行文件,那是什么? 当我尝试查看ls命令的源代码是什么时,它表明某些内容不可读,* nix使用什么方法来创建这些类型的不可读文件,并且可以使我的文件类似于这些文件(例如ls-不可读)。

4
如何在Unix文件系统中实现目录?
我的问题是目录如何实现?我可以相信像表,数组或类似变量这样的数据结构。由于UNIX是开放源代码,因此我可以在源代码中查看程序在创建新目录时的功能。您能告诉我该主题的内容吗?目录“是”我可以理解的文件,并且目录真的是文件吗?我不确定文件是否确实存储在“文件中”,而您仍然可以说出关于几乎所有内容的word文件,我不确定这绝对不是文件,因为您甚至可以将变量称为a文件。例如,链接当然不是文件,而链接就像目录,但是这违反了目录是文件?

4
完全引导linux所需的最小根文件系统应用程序是什么?
这是有关用户空间应用程序的问题,但是请听我说! 可以说,启动Linux的功能发行版需要三个“应用程序”: Bootloader-对于嵌入式设备,通常不是U-Boot,虽然不是硬性要求。 内核-非常简单。 根文件系统-没有它就无法启动到外壳。包含内核引导至的文件系统,并在其中init称为表格。 我的问题是关于#3的。如果有人想构建一个极小的rootfs(对于这个问题,可以说没有GUI,仅shell),那么引导到shell需要什么文件/程序?

3
系统调用,消息传递和中断之间有什么关系?
我正在阅读有关过程管理的Wikipedia文章。我的重点是Linux。我无法弄清楚系统调用,消息传递和中断之间的关系和区别。它们全都用于向内核请求资源和服务的进程吗? 文章中的某些语录和其他一些语录: OS有两种可能的方法可以在程序执行期间重新获得对处理器的控制,以使OS执行取消分配或分配: 该进程发出系统调用(有时称为软件中断);例如,发生I / O请求,请求访问硬盘上的文件。 发生硬件中断;例如,按下键盘上的一个键,或定时器用完(用于抢先式多任务处理)。 在用户模式下执行的程序可以通过两种技术来请求内核的服务: * System call * Message passing 中断是表示需要注意的异步信号,或者是表示需要更改执行方式的软件中的同步事件。 硬件中断使处理器保存其执行状态并开始执行中断处理程序。软件中断通常以指令集中的指令的形式实现,这导致上下文切换到类似于硬件中断的中断处理程序。



3
首先安装FreeBSD。关于Linux和BSD之间的区别,我应该知道什么吗?
我想今天在闲置的备用硬盘上安装FreeBSD。我想对其进行试用,学习一些知识,如果适合我,我将用它替换当前的Ubuntu 10.10“服务器/ NAS /编码盒”。好奇心是主要原因。我还想看到大多数主要错误在GNOME 3 / Unity消除之前,我跳入下一个Ubuntu迭代。 我没有使用BSD的经验(OS X除外),但是多年来,我已经安装并使用了许多Linux发行版。我对如何启动和运行Linux 有相当不错的理解,包括一些自带的发行版,例如Arch。但无论如何,我都不是专家。基本上,我会说我比奶奶好。 那么,在初次安装FreeBSD时我应该记住什么?特别是,安装和设置FreeBSD和Linux发行版之间有什么主要区别吗?此外,我应该使用i386版本吗?我在文档中的某个地方读到了推荐使用i386的信息,但是我不确定这是不是最新信息。

2
dpkg:错误:无法删除数据库当前正在使用的体系结构“ i386”
我使用此命令添加了i386拱门: sudo dpkg --add-architecture i386 然后,在没有安装任何软件包之后,我立即尝试删除i386拱门,如下所示: sudo dpkg --remove-architecture i386 而且我得到了错误: dpkg: error: cannot remove architecture 'i386' currently in use by the database 我已经看到了迄今为止涉及移除i386的包装解决方案,我还没有安装任何,是的那些安装有该操作系统的运作至关重要。我该怎么办? 编辑,请阅读以下内容,以免破坏您的操作系统: 原来64位Linux操作系统已经包含了i386架构,因此该命令sudo dpkg --add-architecture i386实际上并没有执行任何操作。




3
登录和su内部
我试图了解用户权限在Linux中的工作方式。内核启动并init以root身份启动,对吗?然后,Init运行启动脚本并再次以root身份运行getty(agetty)。login我认为Agetty只是读取用户名并运行,仍然以root身份运行。没什么有趣的。但是登录有什么作用?我找不到比“尝试登录”更好的东西。假设登录发现密码匹配(并且我们尝试以普通用户身份登录),它如何更改用户ID?我以为应该对此进行系统调用,但我找不到它(也许我只是盲目的?) 另外,约su。su设置了“ setuid”位,因此当我们运行它时,它始终以root身份运行。但是,当我们告诉它以通常的用户身份登录时,它再次需要更改用户ID。我是否正确理解相同的“魔术”发生在何时su以及login何时需要更改用户?如果是这样,为什么要有两个不同的程序?运行登录时是否还会发生其他严肃的事情?


2
如何在x86-64机器上为i386目标构建rpm?
我正在使用rpmbuild命令构建一个rpm : rpmbuild -bb --root <DIRECTORY> --target i386 --define "_topdir <DIRECTORY>" <specfile>.spec 当我使用SLED 10 SP3 x86计算机时,它可以成功运行。但是在我的SLES 10 SP3 x64虚拟机上,它显示以下错误: error: No compatible architectures found for build 最初我没有使用--targetoption,它仍然在x86机器上运行,但是x64机器上存在相同的错误。 请帮助我解决此错误

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.