Unix & Linux

Linux,FreeBSD和其他类似Un * x的操作系统用户的问答

5
Linux是否不使用分段而是仅使用分页?
Linux编程接口显示了进程的虚拟地址空间的布局。图中的每个区域都是一个分段吗? 通过了解Linux内核, 下列意思是否正确,即MMU中的分段单元将分段和分段内的偏移量映射到虚拟内存地址,然后分页单元将虚拟内存地址映射到物理内存地址? 存储器管理单元(MMU)通过称为分段单元的硬件电路将逻辑地址转换为线性地址。随后,称为分页单元的第二个硬件电路将线性地址转换为物理地址(见图2-1)。 那么为什么说Linux不使用分段而是仅使用分页呢? 分割已包含在80x86微处理器中,以鼓励程序员将其应用程序拆分为逻辑上相关的实体,例如子例程或全局和本地数据区域。但是, Linux以非常有限的方式使用分段。实际上,分段和分页在某种程度上是多余的,因为它们都可以用于分隔进程的物理地址空间:分段可以为每个进程分配不同的线性地址空间,而分页可以将同一线性地址空间映射到不同的物理地址空间。Linux倾向于分页而不是分段,原因如下: •当所有进程使用相同的段寄存器值(即它们共享同一组线性地址)时,内存管理会更简单。 •Linux的设计目标之一是可移植到多种体系结构。特别是RISC体系结构,对分段的支持有限。 Linux 2.6版仅在80x86体系结构要求时才使用分段。


3
/ bin / bash的内容是什么,如果不小心覆盖了它们该怎么办
我不小心用了我打算放在/ bin文件夹中的愚蠢脚本覆盖了/ bin / bash文件。 如何获取该文件的内容?有什么方法可以在网上找到内容,然后将它们复制回去?考虑到该终端在谈论“太多符号链接”时出错,我在这里有什么选择? 我仍然是这种事情的新来者,我很感谢我所能获得的所有帮助。 编辑:我忘了提到我在Kali 2.2 Rolling上,这几乎是具有一些附加功能的debian。 编辑2:我也重新启动了机器,因为直到几天前我才意识到自己的错误。这使这变得更加困难。

3
仍然有/ bin / sh二进制文件的系统吗?
/bin/sh,创建于1977年的Bourne shell曾经是Unix系统的默认shell。 时至今日,该文件仍然存在,但主要是指向系统上安装的默认POSIX兼容shell的符号链接: 在RHEL / CentOS上,它指向/bin/bashBourne Again shell 在Ubuntu Linux上,它指向/bin/dashDebian Almquist shell 在Debian上它指向/bin/dash(6.0及更高版本;较旧的Debian版本将其指向/bin/bash) 这让我很好奇:有没有一个Unix系统或Linux发行版,仍然提供了一个二进制的/bin/sh?




2
为什么我不能用SIGTERM终止SIGSTOP的进程,并且将待处理信号存储在哪里?
我正在使用Debian Stretch(systemd)。我在前台使用rsyslog守护程序运行 /usr/sbin/rsyslogd -n ,我做了一个Ctrl+ Z来停止它。进程的状态更改为Tl(已停止,已线程化)。我向流程发出了多个命令,流程的状态是相同的:。一旦我做了一个,它就死了。我有3个问题。kill -15 <pid>Tlfg 为什么SIGSTOP-ed过程没有响应SIGTERM?为什么内核将其保持在相同状态? 为什么收到SIGCONT信号后就被杀死了? 如果是由于先前的SIGTERM信号,在恢复过程之前将其保存在哪里?
24 process  kill  signals 

4
没有“&”的后台处理
假设您在Linux中启动了一个新应用程序(例如文本编辑器等),但是却忘记了使用“&”。您将使用什么命令来使该进程在后台运行,而不必关闭该应用程序?这样,您就可以同时打开和运行两个进程(例如,用于创建进程的命令行终端,以及诸如文本编辑器之类的进程仍在运行。
24 processes 

2
$ {PATH:+:$ {PATH}}是什么意思?
我最近在cygwin个人资料中注意到了以下内容: /usr/local/bin:/usr/bin${PATH:+:${PATH}} 这是什么意思?为什么不只是$ PATH?这是否是“如果$ PATH存在,然后添加:$ PATH”?我的目的是交换订单并将cygwin路径放在Windows路径后面。过去我会 $PATH:/usr/local/bin:/usr/bin 但这使我感到困惑。也许我应该做 PATH="${PATH:+${PATH}:}/usr/local/bin:/usr/bin" 在$ PATH的末尾附加:?


5
如何获取运行bash的tty?
在此页面提出的第二种方法中,使用以下命令获取正在运行bash的tty: ps ax | grep $$ | awk '{ print $2 }' 我个人认为这确实有点懒,列出所有正在运行的进程只是为了提取其中一个。这样做会不会更有效(我也在问这是否会带来不良影响)? ps -p $$ | tail -n 1 | awk '{ print $2 }' 仅供参考,我遇到了这个问题,因为有时第一个命令实际上会产生两行(或更多行)。当会有另一个进程运行包含PID $$作为子字符串的PID时,这将是随机发生的。在第二种方法中,我通过请求我知道自己想要的PID来避免此类情况。
24 bash  tty  ps 


4
是什么导致终端中的复制/粘贴有时执行命令?
在终端中粘贴某些命令时,它有时会自动执行该命令(就像按下“ Enter”键一样),有时则不会。 我使用Linux已有很长时间了,在许多发行版的各种控制台中粘贴了数千条命令,但我仍然无法确定我要粘贴的命令是否会自动执行。 是什么触发了这种行为?


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.