文件操作

1、文件描述符

    对于内核而言,所有打开的文件都通过文件描述符引用。文件描述符是一个非负整数。当打开一个现有文件或创建一个新文件时,内核向进程返回一个文件描述符。当读或写一个文件时,使用open或creat返回的文件描述符标识该文件,将其作为参数传递给read或write。

2、文件共享

    父子进程对同一个文件使用了同一个文件偏移量。如果父子进程写到同一个文件描述符,但没有任何形式的同步那么他们的输出就会相互混合,在fork之后处理文件描述符有两种情况:

  1. 父进程等待子进程完成。在这种情况下,父进程无须对其描述符做任何处理。当子进程终止后,它曾进行过读、写的一个共享描述符的文件偏移量已经执行了相应的的更新。

父子进程各自执行不同的程序段。这种情况下,在fork之后,父子进程各自关闭他们不需要使用的文件描述符,这样就不会干扰对方使用的文件描述符。

3、系统调用与库函数的区别

    库函数:语言本身带的库文件,其中是特定功能的实现。函数调用是在用户态,逻辑实践也是在用户态。

    系统调用函数操作系统内核提供给外层访问的一些接口函数,调用在用户态,实现实现在内核态。

4、系统调用的执行过程

    系统调用函数触发0x80中断,并且将系统调用号存储在eax寄存器中,然后陷插入内核,内核开始执行中断处理程序,在系统调用表中查找系统调用号对应的内核函数并调用,执行完成后又将返回值通过 eax寄存器传递会用户空间。

5、用户态和内核态的区别

    用户态(也称内目态)——操作系统在系统态运行——运行操作系统程序

    内核态(也称内管态或核心态)——应用程序只能在用户态运行——运行用户程序

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值