进程
我们在windows下面打开资源管理器,可以看到很多的进程。
在linux下,进程又是什么呢?
我们可以这样理解,电脑上面的所有软件都是由程序组成的,换言之,所有的软件都是程序,都是一行行的代码,是静态的。当我们把软件启动之后,就会衍生出许多许多的进程,而这许多许多的进程则是动态的。
进程就是动态的程序。
基本概念
课本概念:程序的一个执行实例,正在执行的程序等。
内核观点:担当分配系统资源(CPU时间、内存)的实体。
描述进程
进程包含很多信息,这些信息被放在一个叫做进程结构体的数据结构中。一般叫做PCB(Process control block),在linux下的PCD叫做:task struct,其实是一个结构体struct {…};。
PCB内保存着关于进程运行的很多信息:
●标示符:描述本进程的唯一标识符,用来区别其他进程。(相当于身份证,我们也可以通过标示符找到对应的进程)
●状态:任务状态,推出代码,退出信号等。(一个进程有很多状态,我们之后说)
●优先级:相对于其他进程的优先级。
●程序计数器:程序中即将被执行的下一条指令的地址。
●内存指针:包括程序代码和进程相关数据的指针,还有和其他进程共享的内存块的指针。
●上下文数据:进程执行时处理器的寄存器中的数据。
●I/O状态信息:包括显示的I/O请求,分配给进程的I/O设备和被进程使用的文件列表。
●记账信息:可能包括处理器时间总和,使用的时钟数总和,时间限制,记账号等。
●其他信息
进程状态
进程状态信息可以通过:ps aux来查看。
●R运行状态(running):并不一位着进程一定在运行中,它表明进程要么是在运行中要么是在队列里。
●S睡眠状态(sleeping):意味着进程在等待事件完成,也叫做可中断睡眠。
●D磁盘休眠状态(Disk sleep):有时也叫做不可中断睡眠状态,在这个状态的进程通常会等待IO的结束。
●T停止状态(stopped):可以发送SIGSTOP信号给进程来停止(T)进程。也可以通过发送SIGCONT信号来使进程继续运行。
●X死亡状态(dead):这个状态一般在任务列表里面看不到。
●Z僵尸状态(zombie):下一篇我们详细讨论。
一些知识点
并发:进程在CPU上交替运行,比如有CPU只有一个核,那么进程就会在CPU的这一个核上交替运行。
并行:多核CPU,一个核执行一个进程,多个内核同时工作。