当前位置: 首页 > news >正文

【Linux】Linux进程概念(一)

目录

  • 前言
  • 一、冯诺依曼体系结构
  • 二、操作系统(OS)
  • 三、进程、PCB

前言

【Linux】Linux调试器----gdb/cgdb详情请点击,今天将介绍一个新的内容【Linux】Linux进程概念(一):主要讲解冯诺依曼体系、操作系统、进程、PCB

一、冯诺依曼体系结构

冯诺依曼体系是由冯诺依曼提出的计算机设计基本框架,包括五大部件:输入设备、存储器、运算器、控制器、输出设备;我们常见的计算机,如笔记本。我们不常见的计算机,如服务器,大部分都遵守冯诺依曼体系。

  • 其中运算器和控制器就是我们常说的中央处理器(CPU)
  • 输入设备和输出设备是我们常说的外设(外部设备),外设相比于CPU特别慢
    在这里插入图片描述
  1. 存储器:存储器指的是内存
  2. 输入设备:鼠标、键盘、摄像头、话筒、网卡、磁盘…
  3. 输出设备:显示器、打印机、网卡、磁盘…
  4. 从上面结构上看,CPU能且只能对内存进行读写,不能访问外设(输入或输出设备)(数据层面),外设(输入或输出设备)要输入或者输出数据,也只能写入内存或者从内存中读取。所有设备都只能直接和内存打交道

在这里插入图片描述

  1. 一个程序(程序是二进制文件,里面有数据和逻辑,程序本质上就是数据)要运行,必须先将程序加载到内存中,因为在数据层面,CPU只和内存打交道
  2. 存储是分级的,CPU的运行速度非常快(纳米级别),磁盘(外设)的运行速度是毫秒级别的,如果计算机CPU直接去读取和写入磁盘数据,那么根据木桶效应,计算机的效率会下降很多,所以让内存(微秒级别)作为中间枢纽分别和CPU、外设打交道,整体计算机的效率会比直接和外设打交道高得多

二、操作系统(OS)

任何计算机系统都包含一个基本的程序集合,称为操作系统(OS)。笼统的理解,操作系统包括内核(进程管理,内存管理,文件管理,驱动管理)和其他程序(函数库,shell程序)
在这里插入图片描述

  1. 操作系统对下管理好软硬件资源,目的是对上为用户提供良好(稳定、高效、安全)的环境
  1. 操作系统并不相信用户,因此为了服务用户且保证自身数据的安全,操作系统以接口的方式给用户提供调用的接口,让用户通过接口访问操作系统
  2. 在开发角度,操作系统对外会表现为⼀个整体,但是会暴露自己的部分接口,供上层开发使用,
    这部分由操作系统提供的接口,叫做系统调用
  3. 系统调用在使用上,功能比较基础,对用户的要求相对也比较高,所以有心的开发者可以对部
    分系统调用进行适度封装,从而形成库,有了库,就很有利于更上层用户或者开发者进行二次开

    在这里插入图片描述

操作系统的定位是:⼀款纯正的“搞管理”的软件,那么操作系统如何进行管理的呢?

  1. 先描述,再组织。在管理结构中分为管理者(操作系统)、执行者(驱动程序)、被管理者(底层硬件)
  2. 管理的本质是对数据的管理,通过对数据的管理(增删查改),数据通过执行者拿到
  3. 操作系统管理首先先描述,描述被管理者对象属性,Linux操作系统是由C语言写的,因此描述对象属性的数据被封装在struct结构体中,当管理对象的时候,首先使用结构体去实例化出具体对象,包含属性+指针(指向某个空间)
  4. 多个事物进行管理,只需要用指针将struct结构关联起来,这样就使用单链表将被管理者组织起来了,这个组织过程叫做建模
  5. 用单链表组织起来后,对事物的管理就转变成了对链表的增删查改
  6. 所以,在操作系统中,管理任何事物都是先描述再组织,最终都可以转化为对数据结构的增删查改,所以操作系统一定会存在大量的数据结构

三、进程、PCB

概念:加载到内存中的程序、正在运行的程序叫做进程
细致来说:进程是由内核PCB数据结构+代码和数据构成

    1. 内核PCB数据结构:进程属性的集合,这个集合放在了进程控制块中
    1. 程序是二进制文件,由代码和数据构成
  1. 不同操作系统的PCB不同,Linux 操作系统下的PCB是: task_struct
  2. 通过操作系统如何进行管理的我们知道,任何一个事物要进行管理都需要先描述再组织,多个进程也需要被操作系统管理,那么对多个进程的管理,也要先创建用于描述进程属性的结构体对象再进行组织,最终会转化为对某种数据结构的增删查改
  3. task_struct 是 Linux 内核的⼀种数据结构类型,它会被装载到RAM(内存)里并且包含着进程的信息

PCB结构体大致包括:

  • 标示符:描述本进程的唯⼀标⽰符,⽤来区别其他进程
  • 进程的状态,进程是启动,是休眠,还是关闭
  • 进程的优先级,同时存在多种进程优先执行哪个进程
  • 程序计数器:程序中即将被执行的下⼀条指令的地址
  • 内存指针:包括程序代码和进程相关数据的指针,还有和其他进程共享的内存块的指针
  • 上下文数据:进程执行时处理器的寄存器中的数据
  • 其它信息
  1. 我们使用ps ajx来获取操作系统上的所有进程信息
    在这里插入图片描述
  2. 现在运行一个死循环程序并使用ps ajx |head -1 && ps ajx | grep 二进制文件名查看进程信息,其中PID就是该进程的标识符

在这里插入图片描述

在这里插入图片描述

  1. Linux中在/proc系统目录中,存储着进程的进程的信息
    在这里插入图片描述
  2. 使用ll /proc/标识符,查看该进程的属性
  1. exe文件时链接文件,exe对应着二进制可执行文件的绝对路径
  2. cwd是当前进程的工作目录,进程的所有工作都将默认在这个工作目录中执行,进程在运行时产生临时文件的路径即默认为cwd对应的工作目录下
    在这里插入图片描述
  3. 如果要修改当前进程的工作目录,使用函数chdir(),传入修改后的工作路径即可
    在这里插入图片描述
http://www.dtcms.com/a/484335.html

相关文章:

  • 怎么给网站做广告专做运动品牌的网站
  • 宝塔建设的网站火车头发布失败湖南建筑行业
  • 做网站哪个好湖南省建设工程施工合同示范文本
  • 网站做成响应式的有什么弊端简单安卓app开发
  • 网站开发和移动开发购买帝国cms做网站代理
  • 做個app网站价格网站平台建设公司经营范围
  • linux网站建设技术指南 pdf注册岩土工程师
  • 网站建设所需人力网站制作公司 云南
  • 计算机中浮点数的存储
  • 电子电气架构 --- 车载操作系统Android
  • 网站设计苏州dedecms后台程序已经安装完了怎么把自己的网站加进去?
  • asp网站后台源码企业办公软件排名
  • 上海网站 备案网上学编程的有哪些比较好的网站
  • 推荐几个做网站比较好的公司网站开发与管理实验五
  • 青海省建设厅网站怎么搭建一个博客网站
  • 庆元建设局网站网站建设预计资金投入
  • 网站开发前的准备巢湖网站开发
  • 北京网站定制建设logo素材大图
  • 哪个基层司法所网站做的比较好求个网站你懂我意思是
  • 重庆建设教育协会网站app下载平台哪个好
  • 高校思政网站建设意义wordpress可以接广告吗
  • TikTok推荐算法快速解析
  • 开源网站程序怎样下一本wordpress
  • 北京 手机网站建设程序员为什么不敢创业做网站
  • 新余网站建设找谁做小程序推广app
  • RoboTwin 2.0 部署DexVLA模型记录
  • 宝塔面板安装MySQL数据库并通过内网穿透工具实现公网远程访问
  • 网站应该怎么做运维上海建设协会网站
  • 网站建设技术指标给我免费观看片在线电影的
  • ip达1万的网站怎么做福建建筑人才市场官网