Linux进程的学习的笔记

2021-01-03  本文已影响0人  132xin

进程的概念

 进程是一个可并发执行的程序在一个数据集上的一次运行。简单来说,进程就是程序的一次运行程序。

程序与进程的概念既是相互关联又相互区别。程序是进程的一个组成部分,是进程的执行文本。而进程是程序的执行过程。程序和进程有以下的关系:

  • 一个进程可以顺序执行多个程序。
  • 一个程序可以对应多个进程。

进程的特性

 进程具有以下的几个特性:

进程的运行状态

 进程有3个基本的状态:

进程的基本状态

 进程状态转换状态图:


image.png

引起状态转换的原因如下:
(1)运行态 →等待态:正在执行的进程因为等待某件事而无法执行下去,例如,进程申请某种资源,而资源恰好被其他进程占用,则该进程将交出cpu,进入等待状态。
(2)等待态→就绪态:处于等待状态的进程,当其申请的资源得到满足,则系统将分配资源给它,并将其状态变为就绪态。
(3)运行态→就绪态:正在执行的进程的时间片用完了,或者有更高优先级的进程到来,系统会暂停该进程的运行,使其进入就绪态,然后调度其他进程运行。
(4)就绪态→运行态:处于就绪状态的进程,当进程调度程序选中后,即进入cpu运行。此时该进程的状态变为运行态。

Linux系统中的进程

Linux进程的状态:

 Linux系统的进程状态与上面说的进程转态会有一点区别,下面我们来看一下Linux系统的进程转态:
 Linux系统中的有5中基本状态:运行,就绪,可中断睡眠,不可中断睡眠,暂停和僵死。状态转换图如下:


image.png

 (1)可执行态:可执行态实际包含了上述基本状态的运行和就绪两种状态。处于可执行态的线程均已具备运行条件。它们或在运行,或准备运行。
 (2)睡眠态:即等待态。进程在等待某个时间或某个资源。睡眠态又细分为可中断的和不可中断两种。它们的区别在于,在睡眠过程中,不可中断状态的进程会忽略信号,而处于可中断状态的进程如果收到信号会被唤醒而进入可执行状态,待处理完信号后再次进入睡眠状态。
 (3)暂停态:处于暂停态的进程是由运行态转换而来,等待某种特殊处理,当进程收到一个暂停信号时则进入暂停态,等待恢复运行的信号。
 (4)僵死态:进程运行结束或因某些原因被终止时,它将释放除PCB外的所有资源。这种占有PCB但已经无法运行的进程就处于僵死态。

查看进程消息

 查看进程命令是ps命令:

格式 ps [选项]
-e 显示所有进程
-t tty 显示终端tty上的进程
-f 以全格式显示
-o 以用户定义的格式显示
a 显示所有终端上的所有进程。
u 以面向用户的格式显示
x 显示所有不控制终端的进程
-C cmd 显示命令名为cmd的进程。
n 显示PID为n的进程。

Linux进程间的通信

进程间的通信详情可参考Linux进程间通信

进程空间划分

一个进程空间分为用户空间和内核空间,Linux操作系统和驱动程序运行在内核空间,应用程序运行在用户空间。

内核空间和用户空间的区别
  • 进程之间的用户空间的数据是不可共享的,所以用户空间=不可共享空间
  • 进程之间的内核空间的数据是可共享的,所以内核空间=共享空间。

 进程内用户空间和内核空间进行交互需要通过系统的调用:主要通过以下两个函数:

1.copy_from_user():将用户空间的数据拷贝到内核空间。
2.copy_to_user():将内核空间的数据拷贝到用户空间。

示意图:


image.png
上一篇 下一篇

猜你喜欢

热点阅读