一、进程与线程
初识Linux进程
进程与线程的区别在于内存,每个进程独享内存,独立的代码段,有名管道是不同进程之间的通信工具,独立的数据段,线程的内存是共享的,进程可以独立存在而线程只能依赖于主线程(也可叫主id)运行。在Linux里通过ps -ef命令可以查看目前正在运行的进程与线程
【中括号括起来的是内核线程,像命令一样的是用户态进程,ps命令可以通过man命令查看具体内容】
Linux里区分内核线程与用户态进程,进程本身是用户态的一种体现,内核只有线程。在Linux里,所有线程起源于一个主线程,即启动系统的线程,当启动应用时,应用会获得一个进程资源,进程资源包括独立的代码段与数据段,还会获得一个进程号(简写为pid),而线程的启动依赖需要一个线程组id号(进程号充当,简写为tgid,大多数tgid=pid),依赖于同一线程主id的线程也会获得对应的线程号,简写为tid,同一个线程共享同组代码段数据段。
进程与线程可以简单归类为任务的表现形式,同属于任务表现形式的还有纤程与协程
任务表现形式:进程,线程,纤程,协程
如同线程一样,进程的启动也需要依赖一个名为sessionID的key(简称sid),当我们启动系统时,就会申请一个sessionID(会话id),sessionID,依赖于用户id(uid)和组id(gid)生成,组id是用户所在的组,sid有多sid和单一sid的情况,单一id意为在同一系统内,一个用户只能拥有一个id,多id意为在同一系统内,多个用户可以同时登录,申请不同的sid,比如Window就支持多会话。在Linux里,我们可以创建多用户执行不同任务
创建用户流程:
申请组id(groupadd+组名)——>申请uid(useradd+用户名)——>添加密码(passwd+用户) 需要自己创建文件
直接创建:
adduser+用户名
任务与运行方式
任务分为两种类型,一个叫做服务,一个叫做作业,服务的生命周期长期存在,只有用户主动关闭才会关闭,作业的生命周期是固定的,当程序执行完毕,作业就会自动结束,服务在业务角度上又分为为代理与服务,代理通常是客户端,服务通常是服务器端,服务与作业又分为前台进程及后台进程两大模式,前台进程时,在终端中输入命令不会干扰执行,而在后台进程输入命令会发生干扰,一个前台进程可以拥有多个后台进程,一个会话可以有多个后台进程组,但只能有一个前台进程组。
kill -9 此命令杀死前后台程序
kill -2(Ctrl-C)此命令只杀死前台程序
僵尸进程(Zombie)
僵尸进程产生于内存回收空间不足,在进程号处有z符号标注
二、权限
d rwxr-xr-x 30(硬连接数)wang(用户名)wang(组名)4096 (块数量)8月 2 11:36(修改时间) wang(文件路径)
开头标为【d:文件夹 -:文件 】 rwx:r-可读 w-可写 x-可执行