"linux进程"笔记

什么是进程?

根据维基百科的定义,进程(Process)是计算机中已运行程序的实体。用户下达运行程序的命令后,就会产生进程。进程需要一些资源才能完成工作,如CPU使用时间、存储器、文件以及I/O设备,且为依序逐一进行,也就是每个CPU核心任何时间内仅能运行一项进程。需要注意的是,进程不一定都是正在运行的,也可能在等待调度或者停止。


PID,全称Process ID,是标识和区分进程的ID,它是一个全局唯一的正整数。


PPID,每个进程(PID为1的进程除外)除了一定有PID还会有PPID,也就是父进程ID,进程都是由父进程衍生出来的,通过PPID可以找到父进程的信息。PID为1的进程是由内核创建的init进程,其他子进程都是由它衍生出来,故PID为1的进程并没有PPID。


进程的输入与输出,每个进程操作系统都会分配三个文件资源,分别是标准输入(STDIN)、标准输出(STDOUT)和错误输出(STDERR)。通过这些输入流,我们能够轻易得从键盘获得数据,然后在显示器输出数据。


进程越多越好?

系统中,并不是进程越多越好,多进程有一个坏处就是带来了CPU上下文切换时间,所以一味提高进程个数反而使系统系能下降。当然如果当前进程小于CPU个数,就没有充分利用多核的资源。

所以进程数应该等于CPU数,但是如果进程有阻塞呢?这时应该提高进程数来增加并行数。

另外还可以绑定进程与CPU,这就保证了最少的CPU上下文切换。


查看进程信息,

在Linux中“一切皆文件”,进程的一切运行信息(占用CPU、内存等)都可以在文件系统找到,例如看一下PID为1的进程信息。

ls /proc/1/

查看运行状态,通过cat /proc/1/status命令


死锁(Deadlock)

就是一个进程拿着资源A请求资源B,另一个进程拿着资源B请求资源A,双方都不释放自己的资源,导致两个进程都进行不下去。


活锁(Livelock)

指线程1可以使用资源,但它很礼貌,让其他线程先使用资源,线程2也可以使用资源,但它很绅士,也让其他线程先使用资源。这样你让我,我让你,最后两个线程都无法使用资源。

活锁会导致CPU耗尽的,解决办法是引入随机变量、增加重试次数等。


饥饿(starvation)

指如果线程T1占用了资源R,线程T2又请求封锁R,于是T2等待。T3也请求资源R,当T1释放了R上的封锁后,系统首先批准了T3的请求,T2仍然等待。然后T4又请求封锁R,当T3释放了R上的封锁之后,系统又批准了T4的请求......,T2可能永远等待。


POSIX(Portable Operation System Interface)

Unix和Linux操作系统的接口标准。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值