操作系统三个简单的部分(Operating Systems in Three Easy Pieces)4.1
来源:互联网 发布:知乎 可怕 编辑:程序博客网 时间:2024/06/02 04:36
4.1抽象化:进程
操作系统对一个正在运行的程序的抽象化,我们称之为进程。根据我们前面所说,一个进程简单说来就是一个运行中的程序;我们可以通过盘点程序在运行中的任意时刻对操作系统的不同部分的访问和造成的影响来概括进程。
想要了解进程是由什么构成,我们需要知道它的机器状态:一个程序运行的时候可以读取或者修改什么。在任何给定的时间,机器的哪些部分对于程序的执行来说很重要?
构成进程的一个很明显的机器状态的组件就是内存。程序指令就存放在内存中;运行状态中的程序读取和写入的数据也存放在内存中。所以内存的程序可用地址(称之为地址空间)就是进程的一部分。
机器状态中的寄存器也是构成进程的一部分。很多指令明确的读取或者更新寄存器,因而对于进程的执行来说他们很重要。
要知道,还有一些尤其特殊的寄存器也是机器状态的组成部分。比如,程序计数器(PC)(有时称之为指令集活着IP)可以告诉我们程序正在运行什么指令;同样地,一个堆栈指针和关联的帧指针被用来管理函数参数、局部变量喝返回地址的堆栈。
Tips:分离策略和机制
在很多操作系统中,一个常见的范例就是将高级的策略从他们的低级机制中分离出来。你可以想象一下这些机制是系统中用于解决问题的答案。比如,操作系统如何进行上下文切换?策略就给特定的问题提供了答案。比如,操作系统此刻应该启动哪个进程?将两者分离使得一方可以简单的选择策略而不需要重新考虑机制。这是模块化的一种形式,一种通用软件的设计原则。
最后,程序也经常访问永久存储设备。比如进程中已经打开的I/O信息就可能存在于文件列表中。
下一节:4.2进程API
0 0
- 操作系统三个简单的部分(Operating Systems in Three Easy Pieces)4.1
- 操作系统三个简单的部分(Operating Systems in Three Easy Pieces闲来无聊,翻译的)1,2(操作系统的介绍部分)
- 操作系统三个简单的部分(Operating Systems in Three Easy Pieces闲来无聊,翻译的)虚拟化部分-原文编号4进程的概念
- 操作系统三个简单的部分(Operating Systems in Three Easy Pieces闲来无聊,翻译的)虚拟化部分-原文编号3对话
- Operating Systems: Three Easy Pieces(操作系统:三个简单方面)4.3进程创建的更多细节
- Operating Systems: Three Easy Pieces(操作系统:三个简单方面)4.2进程API
- Operating Systems: Three Easy Pieces(操作系统:三个简单方面)4.4进程状态
- Operating Systems: Three Easy Pieces(操作系统:三个简单方面)4.5数据结构4.6总结
- Operating Systems: Three Easy Pieces(操作系统:三个简单方面)5穿插章节:进程API/5.1系统调用:fork()
- Operating Systems: Three Easy Pieces(操作系统:三个简单方面)5进程API/5.2&&5.3wait()和exec()
- Operating Systems: Three Easy Pieces阅读笔记(五)LFS
- Operating Systems: Three Easy Pieces阅读笔记(二)concurrence-lock&condition val&semaphores
- Operating Systems: Three Easy Pieces阅读笔记(三)DISK-RAID
- Operating Systems: Three Easy Pieces阅读笔记(四)FILE SYSTEM- VSFC&FSCK
- 【OS学习】之 进程初识(Operating Systems: Three Easy Pieces )
- operating system:three easy pieces
- 操作系统(Operating Systems)学习心得
- Modern Operating Systems (现代操作系统) 读书总结
- 在C语言中,static关键字的作用是什么?
- canvas绘图调用方法
- c#中 foreach 用法
- java多线程的线程池
- 随便写写C++,看看Essential C++
- 操作系统三个简单的部分(Operating Systems in Three Easy Pieces)4.1
- Java并发编程:Callable、Future和FutureTask
- POJ 1470 Closest Common Ancestors(离线tarjan-LCA)
- 使用病毒库检查手机中已经安装的程序
- java ssh
- HDU 2187
- HDU 1846 (巴什博弈)
- A.c和B.c两个文件中使用了名字相同的static变量,编译的时候会不会有问题?这两个static变量存储在什么地方?
- 七层登录之机房收费系统