操作系统三个简单的部分(Operating Systems in Three Easy Pieces)4.1
2016-03-13 21:14
543 查看
4.1抽象化:进程
操作系统对一个正在运行的程序的抽象化,我们称之为进程。根据我们前面所说,一个进程简单说来就是一个运行中的程序;我们可以通过盘点程序在运行中的任意时刻对操作系统的不同部分的访问和造成的影响来概括进程。
想要了解进程是由什么构成,我们需要知道它的机器状态:一个程序运行的时候可以读取或者修改什么。在任何给定的时间,机器的哪些部分对于程序的执行来说很重要?
构成进程的一个很明显的机器状态的组件就是内存。程序指令就存放在内存中;运行状态中的程序读取和写入的数据也存放在内存中。所以内存的程序可用地址(称之为地址空间)就是进程的一部分。
机器状态中的寄存器也是构成进程的一部分。很多指令明确的读取或者更新寄存器,因而对于进程的执行来说他们很重要。
要知道,还有一些尤其特殊的寄存器也是机器状态的组成部分。比如,程序计数器(PC)(有时称之为指令集活着IP)可以告诉我们程序正在运行什么指令;同样地,一个堆栈指针和关联的帧指针被用来管理函数参数、局部变量喝返回地址的堆栈。
Tips:分离策略和机制
在很多操作系统中,一个常见的范例就是将高级的策略从他们的低级机制中分离出来。你可以想象一下这些机制是系统中用于解决问题的答案。比如,操作系统如何进行上下文切换?策略就给特定的问题提供了答案。比如,操作系统此刻应该启动哪个进程?将两者分离使得一方可以简单的选择策略而不需要重新考虑机制。这是模块化的一种形式,一种通用软件的设计原则。
最后,程序也经常访问永久存储设备。比如进程中已经打开的I/O信息就可能存在于文件列表中。
下一节:4.2进程API
操作系统对一个正在运行的程序的抽象化,我们称之为进程。根据我们前面所说,一个进程简单说来就是一个运行中的程序;我们可以通过盘点程序在运行中的任意时刻对操作系统的不同部分的访问和造成的影响来概括进程。
想要了解进程是由什么构成,我们需要知道它的机器状态:一个程序运行的时候可以读取或者修改什么。在任何给定的时间,机器的哪些部分对于程序的执行来说很重要?
构成进程的一个很明显的机器状态的组件就是内存。程序指令就存放在内存中;运行状态中的程序读取和写入的数据也存放在内存中。所以内存的程序可用地址(称之为地址空间)就是进程的一部分。
机器状态中的寄存器也是构成进程的一部分。很多指令明确的读取或者更新寄存器,因而对于进程的执行来说他们很重要。
要知道,还有一些尤其特殊的寄存器也是机器状态的组成部分。比如,程序计数器(PC)(有时称之为指令集活着IP)可以告诉我们程序正在运行什么指令;同样地,一个堆栈指针和关联的帧指针被用来管理函数参数、局部变量喝返回地址的堆栈。
Tips:分离策略和机制
在很多操作系统中,一个常见的范例就是将高级的策略从他们的低级机制中分离出来。你可以想象一下这些机制是系统中用于解决问题的答案。比如,操作系统如何进行上下文切换?策略就给特定的问题提供了答案。比如,操作系统此刻应该启动哪个进程?将两者分离使得一方可以简单的选择策略而不需要重新考虑机制。这是模块化的一种形式,一种通用软件的设计原则。
最后,程序也经常访问永久存储设备。比如进程中已经打开的I/O信息就可能存在于文件列表中。
下一节:4.2进程API
相关文章推荐
- 开源数据库连接池之Tomcat内置连接池
- “Linux内核分析”实验报告
- KVM 存储虚拟化 - 每天5分钟玩转 OpenStack(7)
- Linux内核设计与实现 第一章 第二章
- Linux内核分析第三周——构造一个简单的Linux系统MenuOS
- ubuntu14.04搭建hadoop伪集群环境
- 跟踪分析Linux内核的启动过程--20135334赵阳林
- docker 一些命令 记录一
- Linux下Nagios的安装与配置
- 克隆系统后LINUX如何设置网卡
- 用VMware克隆CentOS 6.4后网卡不能使用处理方法
- 20135302魏静静——linux课程第三周实验及总结
- Tomcat下使用Log4j 接管 catalina.out 日志文件生成方式:
- ecshop登录超时、session过期的解决办法
- TComponent,TControl,TWinControl,TGraphic的DefineProperties赏析与说明(不懂)
- 跟踪分析Linux内核的启动过程
- 【OpenCV】矩阵的创建与释放
- SOA架构
- Linux 第三周 学习笔记和实验
- Linux下gcc,g++,makefile的使用