我正在阅读有关Linux内存管理的内容.我知道
Linux内核负责创建和维护页表,但使用CPU的内存管理单元(MMU)将进程的虚拟内存访问转换为相应的物理内存访问.
但是,我也知道内核可以使用它的一些功能来管理内存,例如virt_to_phys(),virt_to_page(),__pa(),...
例:
static inline unsigned long virt_to_phys(volatile void *address)
{
return __pa(address);
}
Run Code Online (Sandbox Code Playgroud)
用于将虚拟地址转换为物理地址.
我对他们很困惑.请帮我们看一下MMU翻译与内核翻译之间的关系并区分它们?
如何在Linux中正确获取USB设备文件路径.我使用命令:find/-iname"usb"并获得如下结果:
/dev/bus/usb
/sys/bus/usb
/sys/bus/usb/drivers/usb
/sys/kernel/debug/usb
Run Code Online (Sandbox Code Playgroud)
在/ dev/bus/usb下我看到:
001 002 003 004 005 006
Run Code Online (Sandbox Code Playgroud)
但我认为它们不是我需要的文件.
在/ sys/bus/usb/devices /下:
sh-3.2# ls /sys/bus/usb/devices/
1-0:1.0 1-1:1.0 3-0:1.0 5-0:1.0 usb1 usb3 usb5
1-1 2-0:1.0 4-0:1.0 6-0:1.0 usb2 usb4 usb6
Run Code Online (Sandbox Code Playgroud)
在/ sys/bus/scsi/devices /下我插入USB时看到:
2:0:0:0 host0 host2 target2:0:0
Run Code Online (Sandbox Code Playgroud)
当我删除USB时,我看到:
sh-3.2# ls
host0
Run Code Online (Sandbox Code Playgroud)
那么哪个设备文件用于USB?我怎么辨认呢?我需要用USB设备文件制作一个C程序...
还有,你能解释一下我的数字是1-1:1.0吗?这是什么意思?
谢谢.
我的 Rails 应用程序目前有两个user模型transaction:
user has_many :transactions
transaction belong_to :user
class Transaction < ApplicationRecord
belongs_to :user
end
Run Code Online (Sandbox Code Playgroud)
TypeError (no implicit conversion of nil into Integer)我可以在我的应用程序中很好地创建用户,但是当我创建交易时,即使记录创建成功,它总是显示错误消息。
irb(main):007:0> t = Transaction.new
=> #<Transaction id: nil, user_id: nil, gateway: nil, status: nil, txn_id: ...
irb(main):008:0> t.save
Traceback (most recent call last):
1: from (irb):8:in `<main>'
TypeError (no implicit conversion of nil into Integer)
irb(main):009:0> User.last.transactions.create
User Load (1.2ms) SELECT "users".* FROM "users" ORDER BY "users"."id" DESC LIMIT $1 [["LIMIT", …Run Code Online (Sandbox Code Playgroud)