进程线程(1)

进程与程序的区别

程序:代码+数据。是存储在硬盘中代码和数据的集合,是静态的。

进程:pcb + 进程实体(text|data|bss|堆栈)。是程序执行的过程,包括进程的创建、调度和消亡,是动态的。进程会分配内存资源(如栈、堆、静态区等)和CPU资源,具有程序状态的变化,可以并发执行,并且进程之间会竞争计算机的资源。一个程序可以运行多次,变成多个进程。

进程的作用

        进程的主要作用是实现并发,提高系统的效率。例如,在服务器程序中,通过创建多个进程可以同时处理多个客户端的请求,提高服务器的响应能力。

进程的一生

  1. 创建进程:通过fork函数可以从当前进程中克隆一个新进程,子进程是父进程的完全拷贝,但具有不同的pid。
  2. 执行任务
  3. 子进程可以执行与父进程相同的任务,也可以执行自己的任务。
  4. 子进程的执行过程是从fork函数之后开始。
  5. 进程结束

        孤儿进程:没有父亲的进程。

        僵尸进程:有父亲,但自己先挂了,且父亲没有收尸的进程。

进程的状态

基本操作系统中的状态:就绪→执行态→阻塞(等待,睡眠)。

Linux下的进程状态

process:

D uninterruptible sleep (usually IO)
R running or runnable (on run queue)
S interruptible sleep (waiting for an event to complete)
Tstopped by job control signal
t stopped by debugger during the tracing
W paging (not valid since the 2.6.xx kernel)
X dead (should never be seen)
Zdefunct ("zombie") process, terminated but not reaped by its parent

For BSD formats and when the stat keyword is used, additional characters may be displayed:

           

< high-priority (not nice to other users)
N low-priority (nice to other users)
Lhas pages locked into memory (for real-time and custom IO)
s is a session leader
l is multi-threaded (using CLONE_THREAD, like NPTL pthreads do)
+ is in the foreground process group
 

进程的调度

内核的主要功能之一就是完成进程调度,实现宏观并行和微观串行。

查询进程相关命令

ps aux | grep 进程名:查看进程相关信息,包括进程的状态(如就绪态、运行态、睡眠态、停止态、僵尸态等)。

top:根据CPU占用率查看进程相关信息。

killkillall:发送信号来控制进程,如kill pid发送信号给指定pid的进程,默认接收者会关闭;kill -9 进程pidD号发送强制关闭信号;killall -9 进程名发送信号给指定进程名的所有进程。

进程相关函数

函数功能
getpid获取当前进程的pid
getppid获取当前进程的父进程的pid
fork以当前进程为父进程,创建子进程

fork函数:

  • 功能:通过该函数可以从当前进程中克隆一个同名新进程,子进程是父进程的完全拷贝。
  • 返回值:在父进程中,成功返回值是子进程的PID号(大于0),失败返回 - 1;在子进程中,成功返回值是0,失败返回无。

getpid函数:

  • 功能:获得调用该函数进程的PID。
  • 参数:缺省。
  • 返回值:进程的PID。

getppid函数:

  • 功能:获得调用该函数进程的父进程PID号。
  • 参数:缺省。
  • 返回值:返回父进程ID号。

进程与文件的关系

        如果打开文件的操作在fork之前,则子进程会继承父进程已打开的文件的相关信息(文件表项),此时父子进程共享(文件表项),实现对同一个文件的操作;如果fork之后各自打开,则父子进程各自拥有各自的文件描述符及对应的文件表项,各自独立操作该文件,可能存在文件内容被覆盖的情况。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值