Linux—进程基础知识

本节主要陈述Linux进程相关概念,进程是Linux系统编程中非常重要的知识,下面让我们来一起学习Linux进程相关知识。

目录

程序与进程

程序:

进程:

并发:

CPU和MMU

进程PCB

环境变量

进程共享

文件描述符


程序与进程

程序:

程序就是我们所写的特定功能的代码集,其存在于磁盘上,不占用系统资源,程序是静态的概念。

进程:

当我们执行一个程序,让程序运行起来,系统会为该运行起来的程序分配系统资源,如分配内存空间存储全局变量,堆、栈等,此时改程序就变成了一个进程,进程就是运行起来的程序,进程是动态的概念。

并发:

并发是常见的概念,就是cpu在同一时间内运行很多个程序,且这些程序都处于运行期间,我们在打游戏同时听音乐,和对象聊微信等,但某一时刻cpu只能执行其中一个程序。

CPU和MMU

        CPU内部主要由ALU算数逻辑单元、译码器、预取器、寄存器、以及MMU虚拟内存映射单元组成,其通过预取器在cache中预取指令后交给译码器进行译码处理,处理后交给ALU运算器进行运算,ALU将运算过程中的临时数据在暂存到寄存器中,其存储介质主要含硬盘、内存、cache缓存,以及寄存器,硬盘其是物理操作,其速度较慢,当一个程序开始运行时需要将数据从磁盘加载到内存当中,但内存访问的速度远不足以匹配CPU处理速度,在此基础上就诞生了cache缓存,cpu通过与cache缓存交互,将经常反复调用的数据加载到cache中,这样就提高了程序的处理速度。

 MMU称为内存管理单元,主要完成虚拟地址到物理地址之间的映射,从上图可以看出,两个进程中的数据区会被MMU映射到不同的内存空间,而kernel内核区被映射到了同一块内存区,这就是为什么两个独立的进程之间可以通信,MMU映射时会对内核太和用户太进行分级,内核太称为0级,用户区为3级。

进程PCB

进程pcb称为进程控制块,描述了整个进程运行过程中的信息,其本质就是一个结构体,这个结构体主要存放一下内容。

struct tast_struct {        

        进程ID

        进程的状态:初始态、就绪态、运行态、阻塞/挂起态、停止态

        进程切换时需要保存和恢复的一些cpu寄存器

        描述虚拟地址的空间信息

        当前工作目录位置

        umask掩码

        文件描述符表

        用户ID和组ID

        和信号相关的信息

}

环境变量

PATH—可执行文件的位置

SHELL—shell命令解析器

TERM—当前终端

LANG—当前语言

HOME—家目录


进程共享

进程间仅仅共享文件描述符表,mmap映射区

父子进程相同:全局变量、data数据段、text代码段、堆栈、环境变量、宿主目录、用户ID和组ID

父子进程不同:进程ID、各自父进程、未决信号集、闹钟、进程运行时间

文件描述符

之前我们在文件编程阶段,利用系统调用函数操作文件时都是通过一个文件描述符来进行,open函数打开一个文件返回一个文件描述符,其是一个 int 类型整数。

               

 在进程PCB当中存在一个成员是文教描述符表,其本质是一个指针,指向了struct file 文件结构体,这个结构体中存放操作文件过程中很多信息,其中就包含文件描述符,linux文件描述符展示给我们操作的文件描述符的就是一个整数,文件描述符从0-1023依次递增,0称为标准输入,1是标准输出,2标准错误,所以通常我们打开文件返回的文件描述都是从3开始。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值