1、首先,什么是进程?
按照我的理解,进程就是执行中的程序,不是单单指程序代码,而是指执行中的程序这个事件。
2、其次,进程的状态:
(1)新的:表示进程刚刚被创建;
(2)运行:表示进程正在被执行;
(3)等待:进程等待某个事件的发生;
(4)就绪:进程等待分配处理器;
(5)终止:进程完成执行。
3、进程调度:
新创建的进程处于就绪队列中,它在就绪队列中可能被CPU执行也可能在等待过程中被派遣,也有可能发生以下几种情况:
(1)进程可能发出一个I/O请求,并被放到I/O队列中,当I/O口操作完成之后,回到就绪队列继续等待CPU执行。
(2)进程可能创建一个子进程,并等待其结束;
(3)进程可能由于中断而强制释放CPU,并被放回到就绪队列。
值得一提,在第二种情况下,创建子进程的进程称为父进程,父进程也可以和子进程并行执行。
4、进程操作
主要是进程创建以及终止。
(1)进程创建:
在Unix系统中,使用fork()函数创建进程,每一个创建的进程都有一个唯一的识别符pid来标识进程,pid是整数值,在进程中也可以创建进程:
当进程创建新进程时,有两种执行可能:
1)父进程和子进程并行执行;
2)父进程等待子进程执行完毕。
新进程的地址空间也有两种可能:
1)子进程是父进程的复制品;
2)子进程装入一个新程序。
调用fork()函数时,子进程的返回值为0,父进程的返回值为子进程的进程标识符(非零)
(2)进程终止:
当进程完成执行之后,调用系统调用exit()函数来终止进程。此时,进程可以返回状态值到父进程,所有进程资源都被系统释放。父进程也可以调用系统函数来终止子进程。
5、进程间通信:
不仅一台电脑上的进程之间可以通信,不同计算机上的进程也可以通信,实现这种通信有两种方式:
(1)共享内存,创建一块公共内存,让参与通信的每一个进程都可以访问。
(2)消息系统,进程间通过发送消息来通信