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

应用进程和内核的关系相关推荐

  1. linux内核运行关系图,一张图看懂Linux内核运行交互关系

    很多朋友如果接触过Linux的都知道Kernel的含义,kernel是操作系统的核心或者最重要的部分.众所周知的是,几乎整个互联网都运行在  Linux上,从网络协议,到服务器,到你平常访问的绝大多数 ...

  2. ARM架构与内核之间关系的简单讲解

    ARM产品越来越丰富,命名也越来越多.: ARM内核和架构都是什么意思?内核和架构的关系是什么?比如ARMv7架构,这个架构指的是什么? 1.ARM内核:从ARM7.ARM9到Cortex-A7.A8 ...

  3. Open vSwitch(OVS)版本与Linux内核的关系

    不同的Linux kernel需要不同的Open vSwitch版本, Ubuntu16.04的最新版Linux内核是4.15.2,只能在上面安装Open vSwitch的2.10和2.11版本. O ...

  4. spinlock与linux内核调度的关系

    作者:刘洪涛,华清远见嵌入式学院高级讲师,ARM公司授权ATC讲师. 关于自旋锁用法介绍的文章,已经有很多,但有些细节的地方点的还不够透.我这里就把我个人认为大家容易有疑问的地方拿出来讨论一下.   ...

  5. 6选择内核启动项_Linux内核都没搞懂,Alot和你还有什么关系?

    文章字数:3000 干货指数:⭐⭐⭐⭐⭐ 近几年,"AIoT"火的一塌糊涂,2020抗疫期间,我国更是应用了一系列AI机器人和物联网技术来防控疫情,"硬核科技" ...

  6. linux+模块与设备关系,《Linux内核设计与实现》读书笔记 第十七章 设备与模块...

    一.设备类型 1. Unix系统 - 块设备 - 字符设备 - 网络设备 2. 块设备 通常缩写为blkdev,它是可寻址的,寻址以块为单位,块大小随设备不同而不同:块设备通常支持重定位操作,也就是对 ...

  7. Android版本与Linux内核版本的关系

    Android版本与Linux内核版本的关系 一.Android版本与Linux内核的关系 英文名 中文名 Android版本 Linux内核版本 No 无 1.1 Cupcake 纸杯蛋糕 1.5 ...

  8. 【Linux 内核】进程管理 ( 系统调用简介 | 进程相关系统调用源码 )

    文章目录 一.系统调用简介 二.进程相关系统调用源码 一.系统调用简介 在开发应用程序时 , 进行 " 进程创建 " , 调用的 fork() , vfork() , clone( ...

  9. OS内核以及进程间通信方式IPC

    一.内核 1. 概念 计算机由各种外部硬件设备组成,如内存,cpu,硬盘等.如果每个程序要访问某个硬件,那它必须知道如何和这个硬件设备对接通信协议,那这样太麻烦了,因此这项工作交给了中间人-内核来负责 ...

最新文章

  1. Beginning IOS 7 Development Exploring the IOS SDK - Handling Basic Interface Fun
  2. View4.5测试参考文档7--View Administrator安装、配置、创建桌面池
  3. 【转】java接口的性能测试
  4. JavaScript jQuery获取radio/下拉框的选中值
  5. 软件系统安全测试和性能测试的区别,【安全测试】性能测试进阶——基本概念篇...
  6. HTML5模板生成工具
  7. vray渲染里服务器信息,Vray使用手册——设置V-Ray渲染服务器
  8. VS2015 vs2017 密钥
  9. 计算机专业毕设论文题目大全(一)
  10. 短信API接口比较常见的回调状态
  11. html鼠标悬停改变指针,把鼠标指针悬停在 div 元素上,它的外观会逐渐改变
  12. 国产etl 与 ODI
  13. 【周年福利Round1】一文看破Swift枚举本质
  14. Oracle-体系结构图
  15. 一:微信公众号 简介
  16. EDA开源仿真工具verilator入门9:资料总结和最新版本安装
  17. 超棒的响应式设计测试书签和工具(bookmarks)(转)
  18. 哈工大近世代数知识体系
  19. Untiy在update生命周期里UI的文字提示连续两次,进行慢慢进入慢慢消失操作,整体为流程控制逻辑加上DOTween的使用
  20. 写字楼招商难、收租慢、管理乱?用快鲸智慧楼宇系统快速解决

热门文章

  1. 对tuscany中domain、cloud、node、composite关系的理解
  2. 2015年计算机网络考研真题及解析
  3. Day2运营思考:七大步骤助推软件生命周期闭环
  4. HIS 与医保系统的接入方案及实现
  5. VM Workstation 16 Pro 下载安装以及下载配置Linux虚拟机(操作如下)
  6. js判断手机上是否安装某APP
  7. Android大作业:安卓开发图书管理系统APP
  8. wordpress内容调用_WordPress网站的基本内容
  9. 【Linux学习】如何编写Shell脚本调用企业微信api来发消息给企业微信成员?
  10. Linux常用文件管理命令详解