我对计算机操作系统中的调度/多任务处理有一些疑问。如果细节是特定于平台的,我说的是在 x86 上运行的 Linux。
我知道调度程序是操作系统的组件,它将执行线程分配给物理处理核心(假设没有超线程。)我的问题是,调度程序如何告诉核心停止从当前内存中的任何位置执行代码,并开始从内存中的不同点执行代码?这似乎是调度程序发送到处理核心的某种中断,但 AFAIK 中断最终返回到原始执行线程。(因为他们“打断”谈话,而不是改变话题。)
我会阅读 Linux 调度程序代码,但我对 C 的理解不是很好。
我对计算机操作系统中的调度/多任务处理有一些疑问。如果细节是特定于平台的,我说的是在 x86 上运行的 Linux。
我知道调度程序是操作系统的组件,它将执行线程分配给物理处理核心(假设没有超线程。)我的问题是,调度程序如何告诉核心停止从当前内存中的任何位置执行代码,并开始从内存中的不同点执行代码?这似乎是调度程序发送到处理核心的某种中断,但 AFAIK 中断最终返回到原始执行线程。(因为他们“打断”谈话,而不是改变话题。)
我会阅读 Linux 调度程序代码,但我对 C 的理解不是很好。
在 Linux 中,您可以将串行终端连接到您的机器并通过/dev/ttySx
. 同样,您可以将串行终端连接到您的 Windows 机器并通过COMx
. 您只需写入这些文件即可轻松地将文本写入终端。在 Windows 中,您可以通过设备管理器更改终端设置。在 Linux 中,您可以通过stty
. 现在假设我想在终端上显示登录提示或 shell。在 Linux 中,我可以使用getty
. 如何在 Windows 中执行此操作?Windows 相当于getty
什么?
我可以cmd
使用将输出重定向到终端
cmd > COMx
但这对标准输入或标准错误没有任何作用。我也想知道使用 PuTTY 是否可以做到这一点,但我不知道是否可行。
对于拨号和 DSL 电话线调制解调器以及使用蜂窝网络的调制解调器,所有调制解调器都必须有一个可以拨打的电话号码,就好像它们是电话一样。当我的手机调制解调器有 SIM 卡时,我可以通过查看它的管理页面来确认这一点。它显示了我的调制解调器的“电话号码”。
我的问题是,(如果我对任何事实不正确,请原谅我,请随时给我打电话)如何将 IP 地址解析为电话号码以连接(例如)拨号调制解调器?
比如说,我有一个朋友仍然有拨号上网。假设我有光纤互联网,并且我想连接到在他的计算机上运行的 Web 服务器,因为他不想为云托管付费。(我知道在具有拨号连接的网络上托管 Web 服务器计算机是一个非常糟糕的主意,但请继续使用它)。我的电脑将通过以太网路由器连接到我的 FO 调制解调器,但我朋友的电脑将通过以太网直接连接到他的 DU 调制解调器(没有路由器)。
这应该是我的计算机用来连接到 Web 服务器的大致路径(我将跳过 TCP 协议的详细信息,假设所有数据包都完美到达):
GET / HTTP/1.1
Host: 162.176.34.20
Accept: */*
数据包通过以太网电缆发送到我的以太网路由器,路由器检测到目标 IP 地址不在此网络中,然后通过另一条以太网电缆将其发送到我的 FO 调制解调器。
我的 FO 调制解调器将数据包数据转换为光束,这些光束通过光缆快速发送到我的 ISP。
不知何故(细节不重要),数据包数据从路由器传递到路由器,最终到达我朋友的 ISP。
数据包被我朋友 ISP 的调制解调器转换成电话信号。
不知何故(这部分是我的问题)ISP 发现该 IP 地址对应于某个电话号码,并拨打该电话号码。我朋友的调制解调器接听电话,他的 ISP 通过一条普通的旧电话线发送数据包数据。
我朋友的调制解调器通过以太网线路将数据发送到我朋友的计算机,而不是通过路由器。
我朋友的计算机(特别是 Web 服务器)处理收到的数据包数据并创建一个新数据包到 162.127.98.70(我的 IP 地址)端口 29963,从 162.178.34.20(我朋友的 IP 地址)端口 80,具有以下内容:
HTTP/1.1 200 OK
Content-Type: text/html
Server: friends-server
<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
<meta charset="utf-8">
<title>Hello World!</title>
</head>
<body>
<h1>Welcome to My Website</h1>
<p>I'm a guy who's stuck in the past, and can't get new internet.</p>
</body>
</html>
分组数据被发送回我朋友的调制解调器,它将数据转换为电话信号,再次,这是我的问题,路由器以某种方式找出 ISP 的电话号码,将数据发送给他们,整个过程反过来进行。
最后,一旦我的计算机接收到数据,我的网络浏览器就会开始解析 HTTP,并从中获取 HTML。然后它将它呈现到我的屏幕上,我可以看到他的网页。(耶!)
注意:为了简化过程,我省略了 DNS 系统。想象一下,浏览到他的网站,我输入了http://162.178.34.20/
,就是这样。
我真诚地赞同这个超长的问题,但让我提醒您要点:IP 地址如何解析为拨号调制解调器的电话号码?另外,请注意,此过程中绝对不涉及无线网络。我讨厌无线网络。
我有一个 2000 年代早期的戴尔 Inspiron 1300。我在内部硬盘上设置了密码,但忘记了。我联系了戴尔支持,但他们说他们无能为力。我不担心驱动器上的数据,因为没有。没有一个分区。我想恢复它的原因是因为我想将操作系统重新安装到磁盘上。我也想这样做,因为当我从外部驱动器启动时,它需要永远启动,因为它正在尝试从磁盘读取。磁盘拒绝,并不断尝试,直到最终放弃。
我正在尝试在 gparted 中调整我的根文件系统的大小,但是当我尝试拖动分区时它不会做任何事情。如果我更改大小字段中的数字,它会跳回原来的位置。我需要调整它的大小以便为双启动 Windows 10 腾出空间。这是我的内部硬盘,/dev/sda
:
Green is /dev/sda1
,mounted at /boot/efi
,
Blue is /dev/sda2
,mounted at /
,
Red is /dev/sda3
, 一个 linux 交换
空间, Gray 是可用空间,只有 1.02 MiB,显然对于 Windows 10 或其他任何东西来说都不够用。
我选择/dev/sda2
并单击分区 > 调整大小/移动。我无法拖动分区或更改大小编号。这就是它的样子。
我真诚地希望有人能提供帮助。谢谢
我发现了什么可能是一个线索。分区列表中的名称旁边有一个键的小图标。这是否意味着分区被“锁定”在其大小?如果是这样,我怎样才能“解锁”它?
你好!
我希望移植我的 Minecraft 服务器,以便我可以与在不同网络上的朋友一起玩它。
我知道关于这个主题还有其他问题,但它们都是特定于某些调制解调器的。
我的调制解调器是 ZTE MF275R,它缺少其他调制解调器上的一些输入。
这是一个参考图像
IP:192.168.0.100(计算机的私有 IP)
端口范围:25565-25565
协议:TCP&UDP
注释:minecraft
当我将这些放入我的路由器然后将我的路由器的 WAN IP 地址放入我的世界时,它给了我这个错误:
io.netty.channel.AbstractChannel$AnnotatedConnectException: Connection refused:
如果有人可以请告诉我我做错了什么以及如何解决它会很棒。
在此先感谢,
列侬麦克莱恩
编辑:当我输入计算机的本地 IP 地址时,我可以正常加入服务器。