前言:
在大一时接触爬虫时就已经了解到进程的概念了,一直模模糊糊的,直到今天上了操作系统课,才稍微清晰了一些。十分感谢老师的耐心讲解, 逢师如此,幸甚。
一、基本概念。
1、定义:A process is an instance of a computer program that is being executed. It contains the program code and its current activity. (翻译不好,就直接上英文了)
总之,一个进程和程序是不一样的,进程包括了程序代码,也包括了一些数据等等。
–如果看了这个有点懵的话,下面有个形象的例子。
2、例子:
3、总结:直观来说,进程是运用一系列原材料(CPU, 内存,程序代码)的一个动作(计算). ,人(CPU)在一个时间内只能做一个特定动作(在一个CPU的核内,一个时间片只能处理一个进程),人做了一个动作可以做其他动作(切换进程)。
二、进程创建方法
进程创建的方法一共有四种。1、系统初始化(开机时).2、正在执行的进程执行了创建进程的系统调用。3、用户请求创建进程(双击可执行文件)。4、批处理作业初始化。
我们重点理解第二点。系统调用创建进程。
1、系统调用和普通调用。
系统调用工作在内核态,如fork函数等(后来会讲解). 普通调用一般工作在用户态,有时也会工作在内核态,比如C语言的库函数。(这句话是根据老师上课内容自己理解的)。
2、Unix系统中的系统调用创建机制。
首先强调:UNIX系统中,只有一个系统调用可以用来创建新进程。就是fork。这个系统函数会创建一个与调用进程相同的副本(包含程序,栈等数据结构等)。然后子进程执行execve或类似系统调用,修改这个副本来运行一个新的程序.
–如果看了这个有点懵的话,我们来看一共例子。首先看代码:
main()
{
pid_t val;