(简答)
1.进程概念:程序段、数据段和PCB构成了进程实体。一般情况,进程实体 = 进程。
2.进程的特征
(1)动态性:程序的一次执行过程叫做进程,而程序是一组有序指令的集合,本身不具备活动的含义是静态的。
(2)并发性:没有建立PCB的程序是不可以并发执行的。
(3) 独立性:进程是一个独立运行、独立获得资源和独立接受调度的基本单位,未建立PCB的程序不能作为独立的基本单位。
(4) 异步性:虽然具有异步性质,但是配置了同步机制,保证结果的可再现性。
3.进程状态的切换
不同的进程处于不同用户空间,因此当进程切换的时候,需要OS内核支持。CPU控制权从用户进程交给OS内核,OS内核把A进程的断点信息和寄存器存储的数值暂时存放在对应的私有堆栈内存区域,然后把CPU和控制权限分配给B进程去运行,改变B进程状态为内核态,系统开销相对比较大。
4.进程控制
创建新进程、终止完成的进程、将进程置于阻塞态、状态转换......
创建进程:申请空白的PCB -> 为进程申请资源 -> 初始化PCB ->PCB插入就绪队列
终止进程:从PCB集合找到终止的PCB ->正在运行剥夺CPU分配其他进程 ->终止子进程 ->归还所有资源 ->删除PCB
【拓展】阻塞block(是一种主动的行为,我阻塞我) 唤醒wakeup 挂起suspend 激活active
5.进程通信
(1)共享存储器系统:基于数据结构的共享(OS负责)和基于存储区的共享(进程负责)
(2)管道通信系统:半双工,互斥访问通道。写满不能写,读完不能读;没写满不能读,没读完不能写
(3)消息传递系统:直接通信方式和间接通信方式(中介:邮箱)
(4)客户机服务器系统:socket套接字
6.线程
引入线程以后:进程仍然是资源分配的基本单位,但是线程成为接受调度的基本单位。同一个进程之间的线程切换,不需要切换用户环境,系统开销减小。同一个进程的线程通信无须干预。同一进程的不同线程共享进程资源,而且线程几乎不需要系统的资源。
但是不同进程下的线程切换会引起进程的切换。
7.内核级线程和用户级线程
内核级线程在内核的支持下运行,创建、撤销和切换也都是在内核空间,通过系统调用完成的。切换需要从用户态转为内核,切换完毕要从内核态返回用户态,系统开销大。但是不同线程可以占用不同的cpu,合理利用多核CPU,并发度比较高。
用户级线程是在用户空间内实现的,对线程的创建、撤销、同步和通信等功能无需内核的支持,而且内核完全不知道用户级线程的存在。线程的切换无需进入内核,减少了模式切换的开销。同一个进程的线程通信无须干预。但是进程下的线程只能在一个cpu进行切换使用,一个线程阻塞可能导致整个进程的阻塞。
最好采用多对多模型,这样即克服了多对一并发度不高的缺点,又克服了一对一模型进程占用太多内核级线程的缺点。