进程描述与控制(二)
先引入问题:
OS如何感知进程,控制进程及其所用的系统资源?
OS内核如何提供这些功能,操作系统也是进程吗?
进程创建过程要做些什么?
进程激活从外存回到内存后,是原来的位置还是不同位置?
进程所用资源的管理
操作系统就像公司的财务一样,需要管理许多表;这些表记录着资源和进程;那么OS中就有常用的表:
内存表 .I/O表. 进程表(链表结构).文件表,而且 还互相关联。
存储表:内存分配情况,外存分配情况,共享内存区权限,虚拟内存;
I/O表:设备状态,I/O状态,I/O传输位置;
文件表:外存位置,状态,属性,管理系统;
进程表:进程位置,进程属性:id,状态,进程位置;一组程序;
进程映像
包含:程序,数据,用户程序,堆栈.PCB
操作内核功能
Process Management :进程创建终止.调度.状态转换.同步与通信.管理PCB
Memory Management:为进程分配地址空间.对换.段/页管理
I/O Management :缓存,为进程分配I/O 通道和设备
支撑功能:中断管理,时钟管理,原子操作管理,统计管理,坚持管理
进程原语
进程切换/ 创建与终止 /阻塞与唤醒 / 挂起与激活
进程切换
时钟中断,io中断,存储访问失效,陷阱,管理程序进入
切换操作过程:保存现场,更新PCB,移入队列,内存空间修改,恢复现场
进程切换与模式切换
模式切换:用户态-系统态-用户态,不一定有进程切换;
进程切换一定有模式切换;
进程创建与终止
为进程分配id
分配空间,共享空间
初始化PCB
建立链接
正常结束
超时终止
内存不足
找不到文件
死锁
进程阻塞唤醒
【进程描述与控制(二)】请求系统服务
启动某种服务:IO
新数据未达到
无新工作
当阻塞发生,进程调用原语将自己阻塞,状态变为“阻塞状态”,并进入阻塞队列
当阻塞期待的事件发生,有关进行调用原语,将进程唤醒,状态为read,插入就绪队列
推荐阅读
- JAVA(抽象类与接口的区别&重载与重写&内存泄漏)
- Docker应用:容器间通信与Mariadb数据库主从复制
- 《真与假的困惑》???|《真与假的困惑》??? ——致良知是一种伟大的力量
- 第326天
- Shell-Bash变量与运算符
- 逻辑回归的理解与python示例
- Guava|Guava RateLimiter与限流算法
- 我和你之前距离
- leetcode|leetcode 92. 反转链表 II
- CGI,FastCGI,PHP-CGI与PHP-FPM