linux系统编程学习_(1)进程相关概念、多道程序设计概念、CPU与MMU、进程控制块(PCB)及环境变量

本文介绍了Linux系统编程中的进程相关概念,包括程序与进程的区别,以及并发和多道程序设计。讨论了CPU与MMU在进程管理中的作用,特别是MMU在虚拟内存和物理内存映射中的角色。此外,还详细讲解了进程控制块(PCB)及其重要组成部分,并提及环境变量的定义、用途和常见环境变量。
摘要由CSDN通过智能技术生成

linux系统编程学习_(1)进程相关概念、多道程序设计概念、CPU与MMU、进程控制块(PCB)及环境变量

进程相关概念

程序和进程

程序,是指编译好的二进制文件,在磁盘上,不占用系统资源(cpu、内存、打开的文件、设备、锁…)
进程,是一个抽象的概念,与操作系统原理联系紧密。进程是活跃的程序,占用系统资源。在内存中执行。(程序运行起来,产生一个进程)
程序 → 剧本(纸) 进程 → 戏(舞台、演员、灯光、道具…)
同一个剧本可以在多个舞台同时上演。同样,同一个程序也可以加载为不同的进程(彼此之间互不影响)
如:同时开两个终端。各自都有一个bash但彼此ID不同。

并发

并发,在操作系统中,一个时间段中有多个进程都处于已启动运行到运行完毕之间的状态。但,任一个时刻点上仍只有一个进程在运行。

多道程序设计

在计算机内存中同时存放几道相互独立的程序,它们在管理程序控制之下,相互穿插的运行。多道程序设计必须有硬件基础作为保证。
时钟中断即为多道程序设计模型的理论基础。 并发时,任意进程在执行期间都不希望放弃cpu。因此系统需要一种强制让进程让出cpu资源的手段。

时钟中断有硬件基础作为保障,对进程而言不可抗拒。 操作系统中的中断处理函数,来负责调度程序执行。

在多道程序设计模型中,多个进程轮流使用CPU (分时复用CPU资源)。而当下常见CPU为纳秒级,1秒可以执行大约10亿条指令。由于人眼的反应速度是毫秒级,所以看似同时在运行。

实质上,并发是宏观并行,微观串行!
-----推动了计算机蓬勃发展,将人类引入了多媒体时代。

CPU和MMU

couMMU:

  1. 虚拟内存与物理内存的映射
  2. 设置修改内存访问级别

内存管理单元MMUpage是MMU划分物理内存的最小单位,当我执行2个a.out时,虚拟地址空间2份,其中user空间映射的物理内存需要重新开辟空间,因为进程彼此独立,但kernel虚拟空间在物理内存中只映射一份,因为内核一份,但PCB进程控制块依然2份,不一样。

进程控制块(PCB)

我们知道,每个进程在内核中都有一个进程控制块(PCB)来维护进程相关的信息,Linux内核的进程控制块是task_struct结构体。
通过命令:
grep -r “task_struct {” /usr/src/linux-headers-3.16.0-30/include/linux/sched.h

或者直接打开/usr/src/linux-headers-3.16.0-30/include/linux/sched.h文件中可以查看struct task_struct 结构体定义。其内部成员有很多,重点掌握以下部分即可:

  • 进程id。系统中每个进程有唯一的id,在C语言中用pid_t类型表示,其实就是一个非负整数。
  • 进程的状态,有就绪、运行、挂起、停止等状态。
  • 进程切换时需要保存和恢复的一些CPU寄存器。
  • 描述虚拟地址空间的信息。
  • 描述控制终端的信息。
  • 当前工作目录(Current Working Directory)。
  • umask掩码。
  • 文件描述符表,包含很多指向file结构体的指针。
  • 和信号相关的信息。
  • 用户id和组id。
  • 会话(Session)和进程组。
  • 进程可以使用的资源上限(Resource Limit
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值