多进程基础概念学习笔记

进程概念

实行多任务并发执行的一种途径

1 > 进程周期 : 创建态 ,就绪态,执行态,挂起态,死亡态

2 > 进程是计算机资源分配的基本单位 

        系统会给每个进程分配0--4G的虚拟内存 ,0--3G是用户空间,3--4G是内核空间

        用户空间分为 : 堆区 ,栈区,静态区

3  > 进程调度机制 : 时间片轮询上下文切换

4 >   并发 与 并行

并发 针对与单核cpu系统,使用相关的调度机制,实现多个任务进行细化时间片轮询,

                同一时刻只有一个任务被cup处理

并行 :   针对多核cup , 每个cup是并行的

                真正意义上的任务同时执行

进程的内存管理(重点了解)

1>物理内存             在内存上的

2>虚拟内存              在磁盘上的

        

3>swap分区  : 硬盘上的分区,当内存不够时会将内存中的某些进程切换进来

4>用户空间   : 每个进程用拥有独立的用户空间

5>内核空间   : 所有进程共享同一内核空间

6>内存映射   : 操作系统会通过内存映射单元(mmu),将物理内存映射出虚拟内存

进程的种类

1>交互进程 : 直接与用户交互 由shell控制 例如vim

2> 批处理进程 : 内部维护了一个队列,被放入的进程会被统一处理 例如 g++一步编译

3> 守护进程脱离终端,随着操作系统启动退出而运行和停止

PID(process ID): 进程号

1> 进程号是大于0的整数值 进程的唯一标识,不可能重复

2>PPID(parent Process ID): 父进程号 , 系统中允许的进程都是拷贝父进程资源得到的

3> liunx 下 /proc目录下数字命名的都是一个进程

特殊的进程

1> 0号进程(idel) :liunx启动后运行的第一个进程(空闲进程)没有其他进程运行时会运行该进程也是1号2号进程的父进程

2> 1号进程(init) : 完成硬件必要初始化工作,收养 孤儿进程 

3> 2号进程(kthreadd) : 调度进程 主要完成任务调度问题

4> 孤儿进程 : 当前进程还在运行其父进程已经退出

                说明 : 每个进程退出后,其分配的系统资源由其父进程回收,否则会造成资源浪费

5> 僵尸进程 : 当前进程已经退出但是其父进程没有为其回收资源

进程操作的指令

1 > ps  : 能够查看但前进程的相关属性

ps -ef  : 能够显示进程之间的关系

UID 用户id号 

PID:进程号   

PPID :父进程号

STIME : 开始运行的时间

TTY :如果是问好表示这个进程不依赖与终端而存在

CMD :名称

ps -ajx : 能够显示进程的状态

PGID : 进程组的ID

SID : 会话组 (哪个终端)

STAT :进程的状态

ps -aux : 查看进程对cup和内存的占有率

2> top : 动态查看进程运行属性3 > kill : 发送信号的指令

kill -信号号 进程号
kill -l  : 查看能够发送的信号有哪些

1,一共62个信号 前32个稳定信号

2,常用的信号

1) SIGHUP : 当进程所在的终端被关闭时,终端会给进程发送信号默认结束进程

2) SIGINT : 中断信号 ,当用户ctrl+c 时发射出来

3) SIGQUIT :退出信号, ctrl +/ 时发送 ,退出进程

9) SIGKILL :杀死指定的进程

11) SIGSEGV : 指针越界访问时会发射,表示段错误

13) SIGPIPE : 当管道破裂时会发射

14) SIGALRM :当定时器超时后会发射

19) SIGSTOP :暂停进程 ,ctrl + z 时会发射

20) SIGTSTP :暂停进程

17) SIGCHLD : 当子进程退出时向父进程发送信号

SIGUSR1 ,SIGUSR2 : 留给用户自定义信号,没有默认操作

3,两个特殊信号 SIGKILL和SIGSTOP 不能被捕获,不能被忽略

4> pidof 

pidof 进程名   : 查看进程号

进程状态的切换

1> 进程的状态 man ps

进程主状态:
        D : 不可中断的休眠态,通常是IO操作
        R : 运行态
        S : 可中断的休眠态
        T : 停止态
        t : 可调式的停止态
        W : 已经弃用的状态
        X : 死亡态
        Z : 僵尸态
附加态 : 
        < : 高优先级
        N : 低优先级
        L : 锁在内存里的进程
        s : 会话组
        l : 包含多线程的进程
        + : 前台运行的进程(输入输出都占用终端)

2> 进程切换

        1,如果有停止的进程   jobs -l   查看停止的进程的作业号

        2,通过 bg 作业号  实现将停止的进程进入后台运行

        3,通过fg 作业号     实现后台作业切换到前台

        4,直接把程序放在后台 ./程序 + &

准备的程序:

运行 ,打开另一个终端

可以看到S+运行态,发送信号让他暂停 (因为程序是主要是输出和sleep为休眠态) 

kill -SIGSTOP 4793

状态变了

执行bg + 任务号 继续执行

bg 1

变为S态了

要让他变成前台运行执行 fg + 作业号

fg 1

./a.out & 直接在后台运行

./a.out &

3 > 进程的5态图

多进程的实现

多进程的实现学习笔记-CSDN博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值