进程和线程总结

进程
程序运行的最小单位,一般一个可执行文件一个进程。
内存地址空间:代码段、数据段(静态区、常量区)、堆、栈、PCB(进程控制块)

父子进程
通过fork完全拷贝一份父进程的内存地址空间,这2个地址空间独立
执行顺序:不确定谁先获取时间片
vfork:复制一份地址空间,但是是空白的,配合excl等使用

孤儿进程:父进程先挂,子进程还在运行,由init进程托管
僵尸进程:子进程挂了,父进程不回收资源(办法:父进程wait回收、父进程挂掉等init接管)

进程状态:阻塞、就绪、执行。
进程上下文:触发中断,保存上下文(栈、寄存器等),执行中断,再恢复现场
进程调度:最短时间、先进先出、优先级等方式
并发:一个CPU同一时刻只能运行一个程序,通过时间片轮流执行来实现并发的效果
并行:多个CPU运行

进程间通信
2个进程是相互独立的地址空间,通信需要内核(进程A用户空间-》内核空间-》进程B用户空间)。
无名管道:用于父子兄弟等有血缘关系的进程,单向传输(读端写端),64K大小限制,当另一端关闭时,读会阻塞,写会管道破裂
有名管道:同无名管道,但可用于2个没关系的进程
socket:本机、局域网、远程RPC
信号:发出信号,触发信号处理函数
消息队列

内存映射
一个进程占2^32=4G大小,3G为用户空间,1G为内核空间。3G的用户空间通过页表映射到物理内存上。
虚拟地址到页表:32位的虚拟地址,高20位的值表示在页表的第几行,低12位表示在这个4K大小里的偏移。
页表到物理内存:页表上有一串不连续的地址(间隔4K),找到指定的行,取出行里的值,这个地址对应物理内存的首地址,并且对应物理内存的4K大小。

共享内存
通过内存映射,将用户空间映射到内存。2个进行的用户空间映射到同一片物理内存上即可通信(需要同步)。避免了用户空间和内核空间的拷贝,速度最快。

线程
进程调度的最小单位,一个进程可包含多个线程,多个线程共享这个进程的地址空间。共享代码段、数据段、堆栈等,共享用户组、文件描述符、信号处理等,但有自己的进程ID、私有栈等。

临界区资源
互斥锁
读写锁:可同时读,写时互斥
条件变量
信号量:计数,加锁减一,解锁加一

死锁
异常、忘记解锁、加锁顺序不对等造成的
智能锁

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值