首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >打开系统调用

打开系统调用
EN

Stack Overflow用户
提问于 2009-02-15 21:05:51
回答 2查看 380关注 0票数 1

我正在为我的操作系统期中考试做准备,我想知道我是否能得到一些帮助。

有人能解释一下在open()系统调用期间的检查和内核做了什么吗?

谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-02-15 21:20:16

粗略地说,您可以想到以下步骤:

  1. 将文件名转换为inode,这是描述文件内容的实际文件系统对象。通过遍历文件系统数据structures.
  2. During这次遍历,内核将检查您是否通过文件的目录路径拥有足够的访问权限,并检查对文件本身的访问。精确的检查取决于传递到打开的模式。
  3. 在内核中创建有时称为打开的文件描述符。对于内核在每进程文件描述符表中代表任何process.
  4. Allocate打开的未使用索引的每个文件,都有一个这样的对象,并将它指向系统调用中的打开文件descriptor.
  5. Return此索引作为文件描述符。

对于打开普通文件和/或目录,这种描述基本上是正确的,但对于各种特殊文件,尤其是对于设备,情况是不同的。

票数 4
EN

Stack Overflow用户

发布于 2009-02-15 21:13:31

我会回到教授告诉你的-在open()过程中会发生很多事情,这取决于你打开的是什么(例如,一个设备,一个文件,一个目录),除非你写出教授想要的东西,否则你会失去分数。

也就是说,它主要涉及检查这个打开是否有效(即这个文件是否存在,用户是否有读/写它的权限,等等),然后在内核句柄表中分配一个条目来跟踪fd及其当前文件位置(当然还有其他一些东西)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/551586

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档