1.Linux下存在process和thread这两种操作系统基本概念
process是进程,thread是线程
计算机的核心是CPU,承担机器的计算任务,这就好比是一座工厂,时时刻刻都在运行和加工
2.假如这个工厂,电力有限,一次只能提供电力给一个车间使用,那某一个车间在干活的时候,其他车间都得停下来(可以理解为CPU一次只能处理一个任务)
3.进程的概念
进程就是Linux系统上的一个任务资源单位
进程就好比是一个工厂的车间,一个工厂可能有很多个车间,每一个车间代表CPU正在处理的任务,某一时刻,CPU总是在运行一个进程,其他进程处于非运行的状态
4.在一个车间内,想要完成某一项工作,必须得有很多个工人,工人才是实实在在干活的人员,并且多个工人,协同完成这个任务。每一个车间内的工人,都可以理解为linux系统的进程中的工作线程
车间 --> 进程
车间内的工人 --> 进程内的线程
5.车间内是由存放空间的,可以理解为linux的进程单位,是由存储空间的,在进程的空间内,线程共享这个资源
工厂内=进程内
工厂内部的房间,空间被工人共享 --> 进程内的内存空间,被线程共享
6.车间内的小房间,容量大小各不同
有的小房间可以容下多个工人(某一块内存数据可以被多个线程同时使用)
有的小房间只能容得下一个工人(某一块进程内的内存数据,只能给一个线程使用)
好比,进程内有一个线程正在使用一块内存数据,其他线程必须等待这个线程处理内存数据完毕,其他线程才能够使用内存(车间内的某一个卫生间,被一个人占用了,其他人必须在外面等着,等他出来,才能使用)
7.线程在使用内存数据的时候(好比某一个卫生间正在被一个工人使用中,但是另一个工人2,不愿意等待,直接破门而入,你是不是很烦),线程2不愿意等待,直接想去抢夺这一块内存数据,就很可能引发混乱,造成数据冲突,奔溃。
这个时候,线程针对内存数据,加一把锁,其他线程看到了这个内存数据被上锁了,就只能等着锁被打开,才能够拥有内存数据的使用权。
如上锁的概念,就是操作系统中,进线程中的互斥锁的概念(mutex,互斥锁,防止线程对内存数据抢夺的作用,防止多个线程同时读写同一块内存数据)
8.总结一下进程,线程的特点
Linux是一个多用户,多任务的操作系统,支持多进程,多线程
进程 --> 干活的车间
多进程(Linux操作系统内,可以同时有多个进程在工作)--> 一个工厂内,可以同时有多个车间在同时干活
多线程(一个进程内,有多个工人在干活)
单线程(一个进程内,只有一个工人在干活,效率及其低下)
网友评论