应用进程和内核的关系

用户态和内核态:
所有用户程序都是运行在用户态的,但是有时候程序确实需要做一些内核态的事情,例如从硬盘读取数据等。而唯一可以做这些事情的就是操作系统,所以此时程序就需要先操作系统请求以程序的名义来执行这些操作。这时需要一个这样的机制:用户态程序切换到内核态,但是不能控制在内核态中执行的指令。这种机制叫系统调用,在CPU中的实现称之为陷阱指令(Trap Instruction)文件描述符:
文件描述符在形式上是一个非负整数。实际上,它是一个索引值,指向内核为每一个进程所维护的该进程打开文件的记录表。当程序打开一个现有文件或者创建一个新文件时,内核向进程返回一个文件描述符。在程序设计中,一些涉及底层的程序编写往往会围绕着文件描述符展开。
Linux 系统中,把一切都看做是文件,当进程打开现有文件或创建新文件时,内核向进程返回一个文件描述符,文件描述符就是内核为了高效管理已被打开的文件所创建的索引,用来指向被打开的文件,所有执行I/O操作的系统调用都会通过文件描述符。
文件描述符、文件、进程间的关系
1.描述:
•	每个文件描述符会与一个打开的文件相对应
•	不同的文件描述符也可能指向同一个文件
•	相同的文件可以被不同的进程打开,也可以在同一个进程被多次打开
2.系统为维护文件描述符,建立了三个表:
•	进程级的文件描述符表
•	系统级的文件描述符表
•	文件系统的i-node表
内核即操作系统内核,用于控制计算机硬件。同时将用户态的程序和底层硬件隔离
开,以保障整个计算机系统的稳定运转(如果用户态的程序可以控制底层硬件,那
么一些病毒就会针对硬件进行破坏,比如 CIH 病毒)。应用进程即用户态进程,
运行于操作系统之上,通过系统调用与操作系统进行交互。上图中,内核指的是
TCP/IP 等协议及相关驱动程序。客户端发送的请求,并不是直接送达给应用程
序,而是要先经过内核。内核将请求数据缓存在内核空间,应用进程通过
recvfrom 调用,将数据从内核空间拷贝到自己的进程空间内。

在这里插入图片描述

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值