进程是一个其中运行着一个或多个线程的地址空间和这些线程所需要的系统资源。通俗的讲进程就是正在运行的程序。
线程:
1)轻量级的进程。
2)进程有独立的地址空间,而线程没i有。
3)线程不能独立存在,它需由进程创建。
4)相对来讲,线程消耗的cpu,和内存空间少。
为什么有了进程后还要引入线程呢?线程具体有哪些优点呢?
和进程相比,线程是一种非常“节俭”的多任务操作方式,启动一个进程就必须为其分配独立的地址空间,建立众多的数据表来维护它的代码段、堆栈段和数据段,对内存空间来说,这是一种昂贵的多任务工作方式。而运行一个进程中的多线程彼此之间使用相同的地址空间,共享大部分数据,启动一个线程所话费的时间要远小于启动一个进程所花费的时间。据统计,一个进程的开销大约是一个线程开销的30倍左右,不过具体系统还要具体对待。
另外,对不同的进程,都有不同的数据空间,要进行数据的传递只能通过数据的通信来完成,这种方式不仅耗时而且很不方便。而线程则不同,由于同一进程下的线程运行于同一地址空间,所以一个线程的数据也可以用在其他线程,这样不仅快捷而且方便。但也要注意,线程的数据使用时要防止某些变量同时被多个线程修改,以及声明为static的变量可能给多线程带来可怕的后果。
除此之外,多线程还有以下优点:
1)提高应用程序响应。将耗时长的操作置于一个新的线程,这样可提高程序响应速度。
2)使多cpu更加有效。线程树少与cpu个数时,操作系统使线程运行与不同的cpu。
3)改善程序结构。将一个复杂的进程分割成多个进程。
如何显示系统正在运行的进程呢?
ps -a 显示当前终端的所有进程信息
ps -u 以用户的格式显示进程信息
ps -x 显示后台进程运行的参数
ps -aux 综合显示上述信息
如何关闭进程?
kill 进程号
有些进程会捕捉某些信号,倘若不能直接结束进程,则可以使用下面命令强制杀死进程。
kill -9 进程号
另外还有:
kill [ -s signal -p ] [ -a ] pid ...
kill -l [ signal ]
3)参数
-s指定发送的信号。
-p 模拟发送信号。
-l 指定信号的名称列表。
pid 要中止进程的ID号。
Signal 表示信号。