操作系统概念之进程
2015-08-26 15:33
176 查看
一、基本概念
我们知道并发执行是提高CPU利用率最重要的方法之一,这一方法要求各种程序提供更严格的控制和更好的划分。这就产生了进程的概念。
(一)进程概念之与程序的区别?
1)进程是执行中的程序。更准确的说进程不只是程序代码(或者称之为文本段、代码段),还包括当前活动,通过程序计数器的值和处理器寄存器的内容来表示。
2)进程是活动实体(有一个PC用以表示下一个要执行的命令和相关资源),而程序只是被动实体(如存储在磁盘上包含一系列指令的文件内容/可执行文件)。
(二)进程状态--并发执行的基础
![](http://c.biancheng.net/cpp/uploads/allimg/140629/1-14062Z21T1A4.png)
(三)进程控制块PCB
1)PCB包含许多与特定进程相关的信息-----进程状态、PC、CPU Reg、CPU调度信息(进程优先级、调度队列指针等).......
2)PCB是程序中断时要修改的对象(进程上下文用PCB表示!!!)、是调度队列中排队的对象........
3)PCB的实现Eg:在Linux中PCB是通过C结构task_struct来表示的,块中各字段表示了PCB这的各信息。
二、进程调度
进程调度选择一个可用的进程到CPU上执行。
(一)调度队列
1)作业队列---包括系统中所以进程;
就绪队列---包括驻留在内存中就绪的、等待运行的进程;
设备队列---等待特定I/O设备的进程列表。
2)实现:通常链表实现,以PCB为队列对象。
(二)调度程序scheduler---进行进程选择
1)区别长期/作业调度程序与短期/CPU调度程序?
A.前者从大容量存储设备(通常为磁盘)的缓冲池中选择进程,并装入内存以准备执行。后者从准备执行的进程中选择进程;
B.两者执行频率不同,后者更频繁。
2)长期调度程序控制多道程序设计的程度(内存中的进程数量)。而且由于其执行时间间隔较长,故可使用更多时间来选择执行进程。
3)中期调度程序的核心思想是能将进程从内存(或从CPU竞争)中移出,而之后又可重新被调入内存并从中断处继续执行【这种方案被称为交换swapping】。
(三)上下文切换
中断使CPU从当前任务改变为允许内核子程序,同时要保存当前进程的上下文。进程上下文用进程PCB表示。
So.....将CPU切换到另一个进程需要保存当前进程的状态并恢复另一个进程的状态,这一任务称为context switch。
三、进程操作---OS必须提供某种机制或工具以创建和终止进程。
四、进程间通信--协作进程须通信来交换数据和信息。
(一)共享内存系统---建立共享内存区域,并且想访问该内存段的进程须将其加入地址空间。
(二)消息传递系统---由OS提供机制,让协作进程能提供消息传递工具来进行通信。
1)直接/间接通信【send/receive]:前者直接明确地命名通信的接受者或发送者。后者提供邮箱或端口来发送和接受消息;
2)同步/异步(阻塞/非阻塞):前者是指发送/接受进程阻塞直到被接受/消息可用;
3)缓冲:a.零容量:此时必须阻塞发送; b.有限容量:当线路满时必须阻塞发送; c.无限容量。
(三)上述两者比较
消息传递对于交换较少数量的数据很有用(因为无须避免冲突(同时访问同一内存地址?==?)),而共享内存允许以最快的速度进行方便的通信(因消息传递通常用系统调用来实现从而需要更多的内核介入的时间消耗)。
五、客户机-服务器系统通信
(一)Socket
(二)远程过程调用RPC
(三)远程方法调用---一个类似于RPC的Java特性。
我们知道并发执行是提高CPU利用率最重要的方法之一,这一方法要求各种程序提供更严格的控制和更好的划分。这就产生了进程的概念。
(一)进程概念之与程序的区别?
1)进程是执行中的程序。更准确的说进程不只是程序代码(或者称之为文本段、代码段),还包括当前活动,通过程序计数器的值和处理器寄存器的内容来表示。
2)进程是活动实体(有一个PC用以表示下一个要执行的命令和相关资源),而程序只是被动实体(如存储在磁盘上包含一系列指令的文件内容/可执行文件)。
(二)进程状态--并发执行的基础
![](http://c.biancheng.net/cpp/uploads/allimg/140629/1-14062Z21T1A4.png)
(三)进程控制块PCB
1)PCB包含许多与特定进程相关的信息-----进程状态、PC、CPU Reg、CPU调度信息(进程优先级、调度队列指针等).......
2)PCB是程序中断时要修改的对象(进程上下文用PCB表示!!!)、是调度队列中排队的对象........
3)PCB的实现Eg:在Linux中PCB是通过C结构task_struct来表示的,块中各字段表示了PCB这的各信息。
二、进程调度
进程调度选择一个可用的进程到CPU上执行。
(一)调度队列
1)作业队列---包括系统中所以进程;
就绪队列---包括驻留在内存中就绪的、等待运行的进程;
设备队列---等待特定I/O设备的进程列表。
2)实现:通常链表实现,以PCB为队列对象。
(二)调度程序scheduler---进行进程选择
1)区别长期/作业调度程序与短期/CPU调度程序?
A.前者从大容量存储设备(通常为磁盘)的缓冲池中选择进程,并装入内存以准备执行。后者从准备执行的进程中选择进程;
B.两者执行频率不同,后者更频繁。
2)长期调度程序控制多道程序设计的程度(内存中的进程数量)。而且由于其执行时间间隔较长,故可使用更多时间来选择执行进程。
3)中期调度程序的核心思想是能将进程从内存(或从CPU竞争)中移出,而之后又可重新被调入内存并从中断处继续执行【这种方案被称为交换swapping】。
(三)上下文切换
中断使CPU从当前任务改变为允许内核子程序,同时要保存当前进程的上下文。进程上下文用进程PCB表示。
So.....将CPU切换到另一个进程需要保存当前进程的状态并恢复另一个进程的状态,这一任务称为context switch。
三、进程操作---OS必须提供某种机制或工具以创建和终止进程。
四、进程间通信--协作进程须通信来交换数据和信息。
(一)共享内存系统---建立共享内存区域,并且想访问该内存段的进程须将其加入地址空间。
(二)消息传递系统---由OS提供机制,让协作进程能提供消息传递工具来进行通信。
1)直接/间接通信【send/receive]:前者直接明确地命名通信的接受者或发送者。后者提供邮箱或端口来发送和接受消息;
2)同步/异步(阻塞/非阻塞):前者是指发送/接受进程阻塞直到被接受/消息可用;
3)缓冲:a.零容量:此时必须阻塞发送; b.有限容量:当线路满时必须阻塞发送; c.无限容量。
(三)上述两者比较
消息传递对于交换较少数量的数据很有用(因为无须避免冲突(同时访问同一内存地址?==?)),而共享内存允许以最快的速度进行方便的通信(因消息传递通常用系统调用来实现从而需要更多的内核介入的时间消耗)。
五、客户机-服务器系统通信
(一)Socket
(二)远程过程调用RPC
(三)远程方法调用---一个类似于RPC的Java特性。
相关文章推荐
- HDU 4512 吉哥系列故事――完美队形I(最长公共上升子序列)
- (3)PHP 学习笔记进阶篇 from imooc
- Couldn't load weibosdkcore from loader dalvik.system.PathClassLoader[DexPathList[[zip file "/data/ap
- 进程控制のfork()
- 堆和栈的区别(转过无数次的文章)
- vmware11.1.2里安装hyper-v
- [JQ权威指南]第十二天:使用Jquery事件改变文本框的样式
- [PHP]swoole_server几个进程的分工
- SharePoint PowerShell命令系列 (10) Get-SPWeb & Set-SPWeb
- selenium使用等待的几种方式
- Sysctl命令及linux内核参数调整
- oracle学习笔记 ---- 常用SQL*PLUS命令(一)
- 马哥-51CTO-Linux培训-4-用户管理和权限管理
- C语言连接MySQL数据库
- RDBMS分布式两阶段提交与Zookeeper的Paxos同步算法
- startActivityForResult的用法
- Android控件显示和隐藏
- 你应该认识的 12 位最有影响力的程序员
- eclipse启动tomcat访问不到主页
- HDFS——如何将文件从HDFS复制到本地