目前我正在阅读"理解Linux内核,第3版",在第22页,我可以阅读:
在最简单的情况下,CPU从第一条指令到最后一条指令顺序执行内核控制路径.但是,当发生以下事件之一时,CPU会交错内核控制路径:
- 在用户模式下执行的进程调用系统调用,相应的内核控制路径验证不能立即满足请求; 然后它调用调度程序来选择要运行的新进程.结果,发生了过程切换.第一个内核控制路径未完成,CPU恢复执行其他一些内核控制路径.在这种情况下,两个控制路径代表两个不同的进程执行.
内核控制路径可以从进行系统调用的用户空间进程中断?我认为优先级非常重要:
我检查了勘误表,但却找不到任何相关信息.
物业:
我试图在静态函数中锁定一个文件,该函数返回一个包含通道和锁的组合对象,因此另一个函数unlockFile(FileLocking fl)可用于关闭然后通道并释放锁.组合对象类如下所示:`
public class FileLocking {
public FileChannel channel;
public FileLock lock;
public FileLocking(FileChannel f, FileLock l) {
channel = f;
lock = l;
}
Run Code Online (Sandbox Code Playgroud)
锁定文件的函数如下所示:
public static synchronized FileLocking lockFile(String fileName) {
FileLocking result = null;
FileChannel channel = null;
try {
channel = new FileOutputStream(fileName).getChannel();
FileLock lock = channel.lock();
lock = channel.tryLock();
result = new FileLocking(channel, lock);
} catch (Exception e) {
Log(ERR, "Exception …Run Code Online (Sandbox Code Playgroud)