Linux进程概念

1.认识冯诺依曼体系结构

百度百科:冯诺依曼体系结构
把程序本身当作数据来对待,程序和该程序处理的数据用同样的方式储存。我们常见的计算机,如笔记本,大型计算机,服务器都遵循冯诺依曼体系结构。
在这里插入图片描述

现代计算机的硬件体系结构五大部件

  • 输入设备:输入设备是用来完成输入功能的部件,即向计算机送入程序、数据以及各种信息的设备。如键盘、鼠标、扫描仪、磁盘驱动器和触摸屏等。
  • 输出设备:输出设备是用来将计算机工作的中间结果及处理后的结果进行表现的设备。如显示器、打印机、绘图仪和磁盘驱动器等。
  • 存储器(内存):存储器是用来保存程序和数据,以及运算的中间结果和最后结果的记忆装置。
  • 运算器:计算机中进行算术运算和逻辑运算的主要部件,是计算机的主体。在控制器的控制下,运算器接收待运算的数据,完成程序指令指定的基于二进制数的算术运算或逻辑运算。
  • 控制器:计算机的指挥控制中心。

2.操作系统(Operator System)

概念: 计算机中用来管理其他软硬件的一系列程序集合。与硬件交互,管理所有软硬件资源,为用户程序提供一个良好的环境。包括内核(进程管理,内存管理,文件管理,驱动管理)和其他程序(函数库,shell程序)。

设计OS的目的

  • 与硬件交互,管理所有的软硬件资源
  • 为用户程序(应用程序)提供一个良好的执行环境

定位

  • 在整个计算机软硬件架构中,操作系统的定位是:一款纯正的搞管理的软件

操作系统就是进程的管理者
在这里插入图片描述

3.Linux进程

3.1 概念

进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动操作,是系统进行资源分配和独立调度的一个基本单位, 解决了操作系统中程序并发执行的问题, 提高系统资源的利用率和系统吞吐量

  • 用户的角度:进程就是运行中的程序,程序运行起来需要被加载到内存当中。
  • 操作系统的角度:操作系统为了更好的管理程序,对运行中的程序进行信息描述,分配系统资源。

进程和程序是有本质区别的:程序是静态的,它是一些保存在磁盘上的指令的有序集合,没有任何执行的概念;而进程是一个动态的概念,它是程序执行的过程,包括了动态创建、调度和消亡的整个过程。

3.2 描述进程–PCB

操作系统给每一个进程都分配了一个专门的数据结构,称之为进程控制块 ( Process Control Block )即 PCB。在Linux下这个PCB的数据结构是task_struct (结构体) , 在进程创建时, 会被加载到内存中。PCB描述进程对于操作系统, 就相当于学籍档案对于学校管理者。学籍档案里记录着我们的基本信息,PCB里也保存着进程的信息。学校可以通过学籍档案管理我们, 同样, 操作系统也靠着PCB来管理着进程。例如, 创建进程, 就是创建PCB。

进程信息被放在一个叫做进程控制块的数据结构中,可以理解为进程属性的集合,Linux系统下的PCB是task_struck结构体。

3.3 task_struck结构体中包含的内容

  • 标示符PID: 描述本进程的唯一标示符,用来区别其他进程。
  • 状态: 任务状态,退出代码,退出信号等。
  • 优先级: 相对于其他进程的优先级。
  • 程序计数器: 程序中即将被执行的下一条指令的地址。
  • 内存指针: 包括程序代码和进程相关数据的指针,还有和其他进程共享的内存块的指针
  • 上下文数据: 进程执行时处理器的寄存器中的数据[休学例子,要加图CPU,寄存器]。
  • I/O状态信息: 包括显示的I/O请求,分配给进程的I/O设备和被进程使用的文件列表。
  • 记账信息: 可能包括处理器时间总和,使用的时钟数总和,时间限制,记账号等。
  • 其他信息

操作系统通过PCB , 在Linux中也就是task_struct中的内存指针能够找到内存中运行的程序代码以及数据, 并且通过上下文数据来保存程序调度切换时正在处理的数据, 通过程序计数器保存进程切换时即将执行的下一步指令, 等等.通过这些描述信息来控制进程的运行, 所以就可以说, 对操作系统而言, 进程就是PCB。

3.4 进程的特征

  • 动态性:进程的实质是程序在多道程序系统中的一次执行过程,进程是动态产生,动态消亡的。
  • 并发性:任何进程都可以同其他进程一起并发执行。
  • 独立性:进程是一个能独立运行的基本单位,同时也是系统分配资源和调度的独立单位。
  • 异步性:由于进程间的相互制约,使进程具有执行的间断性,即进程按各自独立的,不可预知的速度向前推进。
  • 结构特征:进程有程序、数据、和进程控制块三部分组成。
  • 多个不同的进程可以包含相同的程序:一个程序在不同的数据集里就构成不同的进程,能得到不同的结果;但是执行过程中,程序不能发生改变。

3.5 组织进程

Linux下所有在内存中运行的进程的PCB,也就是task_struct,是以双向循环链表 ( 也可叫做, 运行队列 ) 的形式在内核中。这样,Linux下进程被描述为task_struct,在内核中被组织成一个双向循环链表,这样,操作系统就可类似于学校管理学生一样管理进程了。

3.6 进程的切换调度

cpu的分时机制(并发):cpu只是在每个进程上运行很短的一段时间,如果cpu处理某个进程的时候,时间片用尽,cpu就要去调度运行个下一个进程了。一个进程并不是一直在被cpu处理的,而是不断地轮询切换被cpu调度运行。

3.7 查看进程

  • 1./proc
    在根目录下有一个叫 proc 的目录, 其中就保存着进程的相关信息。
    在这里插入图片描述

  • 2.ps / top 命令
    ps
    ps命令用于报告当前系统的进程状态。可以搭配 kill 指令随时中断、删除不必要的程序。ps命令是最基本同时也是非常强大的进程查看命令,使用该命令可以确定有哪些进程正在运行和运行的状态、进程是否结束、进程有没有僵死、哪些进程占用了过多的资源等等,总之大部分信息都是可以通过执行该命令得到的。
    通常用 ps -auxps -ef 通常搭配 grep 使用

    top
    top命令可以实时动态地查看系统的整体运行情况,是一个综合了多方信息 监测系统性能和运行信息的实用工具。通过top命令所提供的互动式界面, 按q 退出。
    在这里插入图片描述

  • 通过系统调用接口获取进程标志符(进程ID)
    进程标识 : PID 系统调用接口 : getpid()
    父进程标识: PPID 系统调用接口 : getppid()

#include <sys/types.h>
#include <unistd.h>
pid_t getpid(void); 返回:调用进程的进程 ID
pid_t getppid(void); 返回:调用进程的父进程 ID
uid_t getuid(void); 返回:调用进程的实际用户 ID
uid_t geteuid(void); 返回:调用进程的有效用户 ID
gid_t getgid(void); 返回:调用进程的实际组 ID
gid_t getegid(void); 返回:调用进程的有效组 ID

每个进程都有一个非负整数形式的唯一编号,即 PID。PID 在任何时刻都是唯一的,但是可以重用,当进程终止并被回收以后,其 PID 就可以为其它进程所用。进程的 PID 由系统内核根据延迟重用算法生成,以确保新进程的 PID 不同于最近终止进程的 PID。

特殊的进程标识

  • 0 号进程,调度进程:通常是调度进程,常常被称为交换进程(swapper)。该进程是内核的一部分,所有进程的根进程,它并不执行任何磁盘上的程序,因此也被称为系统进程。
  • 1 号进程,init进程:通常是 init 进程,在自举过程结束时由内核调用。
  • 2号进程,页守护进程:负责虚拟内存系统的分页操作。

3.8 进程运行状态与切换

(1)进程的三种基本状态

  1. 运行状态:获得CPU的进程处于此状态,对应的程序在CPU上运行着。
  2. 阻塞状态:为了等待某个外部事件的发生(如等待I/O操作的完成,等待另一个进程发来消息),暂时无法运行。也成为等待状态。
  3. 就绪状态:具备了一切运行需要的条件,由于其他进程占用CPU而暂时无法运行。

(2)进程状态切换

  1. 运行状态 ===> 阻塞状态:例如正在运行的进程提出I/O请求,由运行状态转化为阻塞状态。
  2. 阻塞状态 ===> 就绪状态:例如I/O操作完成之后,由阻塞状态转化为就绪状态。
  3. 就绪状态 ===> 运行状态:例如就绪状态的进程被进程调度程序选中,分配到CPU中运行,由就绪状态转化为运行状态。
  4. 运行状态 ===> 就绪状态:处于运行状态的进程的时间片用完,不得不让出CPU,由运行状态转化为就绪状态。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值