开发者学堂课程【物联网开发- Linux 高级程序设计全套视频:进程的概念】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/660/detail/10981
进程的概念
内容简介:
一、程序的概念
二、进程的定义
三、小结
一、程序的概念
先看一下进程的概念,即什么是进程?
程序是存放在存储介质上的一个可执行文件,相当于什么?
比如以下代码:
[01_day]1s
Gaa.txt dest.txt my_cp my_cp.c read read.c test.txt wanqi.txt
[01_day]
其中 my_cp 是源代码, my_cp my_cp.c 生成一个可执行程序,这就是程序,此程序是存放在磁盘上的,是一些指令的集合,这是程序的概念。
二、进程的定义
进程是程序执行的实例,包括程序计数器、寄存器和变量的当前值等等,其实所谓的进程就是正在运行的程序
举例:
[01_day]1s
Gaa.txt dest.txt my_cp my_cp.c read read.c test.txt wanqi.txt
[01_day]ps
PID TTY TIM CMD
6044 pts/0 00:00:00 bash
6273 pts/0 00:00:00 pa
[01_day]
上述代码它的进程号是6044,在当前终端下边正在运行的 bash ,是等待获取命令,然后等获取了之后执行命令,
如下代码所示:
[01_day]1s
Gaa.txt dest.txt my_cp my_cp.c read read.c test.txt wanqi.txt
这个是一个进程,是一个正在运行的程序。
2、程序与进程
程序是静态的、进程是动态的,程序是存放在磁盘上的一个文件,指令的集合,而进程是它运行的过程,即把它执行起来。
进程的状态是变化的,其包括进程的创建,在点斜杠运行程序的时候相当于是它要创建一个进程,然后还包括调度, CPU 要执行这一个进程的指令,以及最后进程执行完了之后,它要消亡,系统要回收它的资源。
3、进程的概念
在 Linux 系统当中,进程是管理事务的基本单元,进程拥有自己独立的处理环境和系统资源,处理环境就是环境变量,系统资源就包括处理器、存储器、 I/O 设备、数据、程序,如果要执行一个程序,必须要创建一个进程,在 Linux Windows 下也有进程,之前执行了一个 WPS 软件,然后右击转到进程,那么 wps.exe *32 就是它对应的进程,正在运行的程序就被称为进程。
4、执行程序时的进程
在平常的时候注意执行一个程序,把它变成进程时,都是点斜杠(./)去执行的,其实在点斜杠的时候,shell命令显示器要去调用 exe.c函数, exec 函数有六个,其实就是调了一个函数,通过函数去启动的一个进程,点斜杠在执行时,这个 shell 的显示器应该会去创建一个进程,它怎么创建的?
它用 fork 创建的进程,然后用 exec替代进程的内容,注意创建进程的方法只有两种,一个是 fork ,另一个是 vfork ,然后在点斜杠时,它肯定要执行程序的时候,首先要建进程,建成之后它再去替代进程的内容,用其内的代码去替代进程的内容,注意创建进程使用的 fork ,而不是 exec ,等有了进程之后再通过 exec 将程序读入内存。
三、小结
总结一下什么是进程,进程就是程序执行的过程,程序就是一些指令的集合,是存放在磁盘上的一些程序的集合,是一个文件,进程是程序执行的过程,若要想运行一个程序,必须创建一个进程,有了进程在进程当中就是跑运行的一个程序的代码,进程有自己的处理环境和系统资源,进程是管理事务的基本单元,“可使用 exec 函数由内核将程序读入内存,使其执行起来成为一个进程”这句话有问题,应该使用 fork 或者 vfork 创建进程,在进程中通过 exec 函数加载程序运行代码,运行。
注意创建进程的方法只有这两种,然后有了进程之后,便要执行代码,再去通过 exec 函数去加载程序代码,这是所谓的进程,是程序执行的过程,进程是什么?
是处理管理事务的基本单元,进程是操作系统分配资源的基本单位,比如每个进程都有自己的内存,等等一些资源,进程是操作系统分配资源的基本单位,单位执行一个程序的时候,必须要创建一个进程,这是进程的一个概念。