【面试八股文之操作系统】

1.什么是用户态和内核态?

        用户态和内核态是操作系统中的两种运行模式或特权级别。

用户态:在用户态下,应用程序以及用户自己编写的代码运行,其权限受到限制,不能直接访问底层系统资源和执行特权操作。用户态只能受限地访问内存,且不允许访问外围设备,占用CPU的能力被剥夺,CPU资源可以被其他程序获取。

内核态:内核态是具有最高权限的运行模式,可以执行特权指令和直接访问硬件设备。在内核态下,CPU可以访问内存的所有数据,包括外围设备,例如硬盘、网卡等。CPU也可以将自己从一个程序切换到另一个程序。

        内核态相比用户态拥有更高的特权级别,因此能够执行更底层、更敏感的操作。不过,由于进入内核态需要付出较高的开销(需要进行一系列的上下文切换和权限检查),应该尽量减少进入内核态的次数,以提高系统的性能和稳定性。

2.什么是系统调用

         系统调用是操作系统提供给应用程序访问操作系统服务和资源的接口。应用程序通常运行在用户态,处于用户态的进程有诸多限制(如不能进行I/O操作),所以有些功能必须由内核代劳完成。因此,操作系统需要提供访问这些内核态运行的程序的接口,这些接口的集合就叫做系统调用。通过系统调用,应用程序可以请求操作系统执行特定的任务,如读写文件、创建进程、申请内存等。简要地说,系统调用是内核向用户进程提供服务的唯一方法。

3.你了解系统调用的过程吗?

         系统调用是操作系统提供给应用程序用来访问操作系统服务和资源的接口12。在Linux中,系统调用是用户空间访问内核的唯一手段。以下是一个系统调用的基本过程:

        (1)应用程序调用库函数(API):应用程序通常通过调用库函数来发起一个系统调用。

        (2)API将系统调用号存入EAX:库函数会将对应的系统调用号存入EAX寄存器,并通过中断调用使系统进入内核态。

        (3)内核中的中断处理函数根据系统调用号,调用对应的内核函数(系统调用):内核中的中断处理函数会根据EAX寄存器中的系统调用号,在系统调用表中找到并执行对应的内核函数。

        (4)系统调用完成相应功能,将返回值存入EAX,返回到中断处理函数:内核函数执行完毕后,会将返回值存入EAX寄存器,并返回到中断处理函数。

        (5)返回到用户态的wrapper函数中:最后,控制权会返回到用户态的wrapper函数中,继续执行系统调用之后的代码。

4.内存映射的原理

        将一块内存空间映射到不同的进程空间中

  • 6
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

放牛的守护神_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值