`
yeshucheng
  • 浏览: 24554 次
  • 性别: Icon_minigender_1
  • 来自: 登陆上海
社区版块
存档分类
最新评论

理解进程意义及过度到其他技术(一)

阅读更多

 

在学习Erlang程序过程中,总觉得对于进程还是没有很好的把握。所以自己对于进程的再次提及让我不得不重温操作系统这门看似抽象的课程了。但是总觉得如果单一讲解进程或许略显抽象不够理解,自己就想把某些经验和知识片段有个很好的系统联系起来,我想这样可以让自己更好加强记忆理解。长话短说,我们进入主题,既然在Erlang的学习中始终围绕着进程一词来深入研究,我们就从进程这个话题谈起。

进程概念

1.         进程是运行中的程序。这里我们就可以稍微延伸下以便帮助我们记忆理解了:

在这里我们只要抓住“运动”词汇,就不然发现进程是个动态的实体,与之对应的是我们常说的程序,程序而是一个静态实体了。(bw:这里突然想到以前对于认识EJB2中也有一个对应的概念就是EntityBeanSessionBean,它们与之对应的就是一个典型的名词和动词概念了,哈哈啰嗦了,转回正题)。那我们会想是什么来体现我们说的进程为一个动态实体呢?立刻会联系产生接下来的一个特点了。

2.         进程不仅仅是程序代码,它包含了当前状态。而这种状态由两个方面来表示:

u       程序计数器(program counter

u       cpu中的寄存器(registers

就是由于进程中有程序计数器指明下一条要执行的指令而且拥有一组相关的资源。这里又要继续反问:到底是一个什么资源呢?那就要看下面会讲到的PCB的概念了。

3.         进程还包含进程栈(process stack)。

例如:方法参数(method parameters;返回地址与本地变量等

4.         两个进程可能会关联到同样的程序,刚才我们说到了所谓程序是一个静态实体。顾名思义就是两个进程允许使用同样的代码段,只是在参数不同而已。但是仍然认为这两个进程是独立执行的序列。例如:几个用户可能会同事运行主程序的不同拷贝一样。

进程状态

注:上面就是一个完整的进程状态图了。这里没有必要多说什么了,图表给了我们一个轮廓。

进程控制块(PCB

这里就是我们要讲到的进程控制块了,对于操作系统都是需要通过PCB来表示进程的。有些资料上也称作为:任务控制块。对于PCB的整体描述我们还是以图表的方式来说明(这也是本人最喜欢也觉得最直观的一种理解方式了):

Pointer(指针)

Process state(进程状态)

Process number(进程序列号)

Program counter(程序计数器)

Register(寄存器)

Memory limits(主存中受限说明)

List of open files

。。。(这里其实还有很多,就不再一一列举了)

PCB描述图

既然是操作系统都需要通过进程控制块来调用进程过程,那我们在这里举例说明下如果有两个进程结合PCB是如何在CPU之中切换使用进程的。为了更加清晰了解它们的过程,还是老规矩使用一个图表来展示两个进程分别为P1,P2怎么运行的。

(这个图在自己的笔记本上已经用笔画出来了,可就是找不到一个好的工具,暂时放置在这,待续画图了)

进程调度

由于我们目前接触的其实多半都是以分时系统为主的,其目标也是为了在进程之间频繁转换cpu以便由于用户与运行的程序来交互。

1.         进程进入系统后,都被放在队列中了,我们称这个队列为:作业队列(也有些书上不是这么称呼的),所有的进程都在这个其中。

2.         处于就绪进程都被保留在一个列表中——就绪列表

3.         一旦进程获得了CPU并且执行,就可能发生一下某个事件存在:

u       进程可能发出一个I/O请求,然后被放置在I/O队列中;

u       进程也可能创建一个新的子进程并且等待它终止;

u       有时候发生一个中断,导致进程强行从CPU里移除并返回就绪队列;

调度程序

这里需要了解两个主要的概念:

1.         长程调度(操作系统调度程序):从一个池中选择进程并其载入内存中。

注:咋看不是很了解,可能这里需要了解虚拟存储过程对于这个概念就比较好理解。这里大致说明下。由于过去我们所使用的内存(主存储器)空间非常有限,在抢占的进程志愿中如果都想放入内存中显然是不够科学,而对于我们的后备动力辅助存储器——磁盘(这里我们说是硬盘,当然也有3.5英寸的小磁盘了,呵呵)来说,就可以充分考虑到使用它来做个过度动态的存储器。所以这样一来我们就不需要把一个进程中所有的信息都装载到内存中,而是在需要是再来考虑换入;而与之相反的就是不需要时就换出了(bw这里的换入/换出如果比较频繁也就证明我们的内耗比较严重,一般称作这个叫:抖动现象。大家有时候感兴趣的可以观察我们主机的硬盘灯如果在频繁的闪动就表示资源在不断换入换出了,呵呵)。而这也就是虚拟存储的一个本质过程,当然中间需要通过逻辑转换表来过度,在这里我们就不再具体复述了。有兴趣的可以去看看相关OS方面的书籍。

2.         近程调度(CPU调度程序):从这些进程中选择就绪进程并为其某个分配CPU

注:说白了这里就是我们的cpu直接通过缓冲通道来调用就绪的程序进入运行。

上下文转换

前面我们也谈到了进程是在CPU中来回切换运行的,既然是一种来回切换运行那势必需要让CPU知道我们切换到下一个状态执行的地址或者说切入点在哪了。这个就是为什么需要一个程序计数器的功效了。那我们把这种来回切换状态,同时需要保存当前运行进程状态信息给记录下来以便下一次能够定位到的方式称作是——上下文转换。

就上面的这样一次转换表述在一定程度上需要耗的硬件资源非常大(这里又要我强调下,更多的信息需要你还了解一些计算机组成体系结构了。希望有时间自己也总结一篇关于一个简单程序在体系中运行过程)。因此上下文转换在很大程度上就取决于硬件的支持了。

接下来要讲到的应该是最核心的也是对以后我们无论是写程序好还是学习一门新语言好,都需要很好理解的部分了。在这里也尽可能表述清楚。
(待续......)

分享到:
评论

相关推荐

    windows进程守护

    在Windows操作系统中,"进程守护"是一个重要的概念,它涉及到系统稳定性、程序可靠性和服务持续性。...对于开发者和系统管理员来说,理解并掌握这一技术对于优化和维护Windows环境下的服务具有重要意义。

    单进程占用cpu限制程序

    在IT领域,管理和优化CPU资源是至关重要的,特别是在多任务并行运行...综上所述,"单进程占用CPU限制程序"是通过监控和控制进程资源使用来实现系统优化的工具,对于理解和管理多任务环境下的CPU资源分配具有重要意义。

    一个Oracle server process进程会消耗多少内存

    ### Oracle Server Process 进程内存消耗分析 ...总之,理解Oracle Server Process 进程的内存消耗机制对于提高数据库性能、合理规划资源分配具有重要意义。希望本文能够为相关领域的技术人员提供有价值的参考和帮助。

    进程调度模拟-优先级和最高响应比调度算法

    ### 进程调度模拟设计——优先级法、最高响应比优先调度算法 #### 1. 课程设计目的与功能描述 ...通过实践,我学会了如何将理论知识应用于实际问题中,这对于未来的学术研究和技术开发都有着重要的意义。

    Windows进程提取与监测软件的设计与实现(论文)

    #### 一、项目背景与意义 随着信息技术的飞速发展,计算机已经成为日常生活中不可或缺的一部分。然而,随着计算机上安装的应用软件越来越多,计算机性能的压力也随之增大,例如,软件运行时可能出现异常,无法正常...

    中国现代化进程中的大众文化与青年社会化.pdf

    另一方面,它也可能导致某些消极现象,如过度消费主义、价值观念的同质化等。 #### 三、青年社会化的重要性 - **社会发展的关键因素**:青年是推动社会进步的主要力量之一。他们的成长和发展直接关系到社会的整体...

    CGI技术全面接触(PDG)

    总的来说,CGI技术是Web服务动态化的重要里程碑,虽然现在已被更多高效的技术所取代,但了解CGI的工作原理和应用仍然对理解Web服务器和动态网站的运作有着重要的意义。通过学习"CGI技术全面接触(PDG)"这份资料,你...

    技术创新战略PPT教案.pptx

    5. 合作创新战略:企业与其他企业、科研机构合作,共享资源,共同进行技术研发,降低风险,加速创新进程。 三、技术创新战略的制定 制定技术创新战略需要考虑以下因素: 1. 市场分析:了解市场需求、竞争态势,...

    浅析计算机网络技术在小学数学教学中的应用 (1).pdf

    标题和描述中提到的是计算机网络技术在小学数学教学中的应用,这一主题着重探讨了如何将现代信息技术融入到基础教育中,以提升教学效果。本文主要分析了计算机网络技术在教学中的三大优势:提高课堂导入效果、提升...

    信息技术与课程整合的误区分析-教育评价方法与技术.pptx

    这种观点往往将信息技术课程等同于单纯的技能训练,如打字课,而忽视了如何利用信息技术来支持学习,帮助学生理解数字文化的意义,促进他们的全面发展。信息技术教育的真正目标应该是培养学生的信息化素养和能力,使...

    计算机科学与技术专业综述.pdf

    根据提供的文件信息和要求,尽管【标签】处为空,【部分内容】的信息看起来是通过OCR扫描技术从实体文档中提取...这些知识点都是该专业领域内重要的组成部分,对于理解和把握计算机科学与技术专业的发展具有重要意义。

    ChatGPT技术与机器人对话交互的前景展望.docx

    ChatGPT技术是OpenAI开发的一种先进的自然语言处理模型,其核心在于利用深度学习技术对大量语料库进行训练,从而使机器人具备理解并生成人类语言的能力。这项技术的出现极大地提升了机器人对话交互的质量,使机器人...

    大田作物水稻种植技术研究.docx

    随着社会的进步,提升水稻种植技术以增加产量,对于支持国家经济发展和现代化建设具有重要意义。本文主要探讨了优化水稻种植技术的策略和提高种植效益的方法。 1. 优化水稻种植技术的方法途径 1.1 水稻检查技术 ...

    苏州地区低技术溢出效应的原因探析——基于内外资企业博弈模型分析.pdf

    合理的激励措施能够促进技术转移,而过度保护主义则可能阻碍这一进程。 3. **企业战略差异**:外资企业和内资企业在技术获取、研发投入等方面的战略差异也会影响技术溢出的效率。例如,外资企业更倾向于采用先进的...

    九年级历史下册 第23课(科学技术大发展)教案 华东师大版 教案.doc

    通过本课的学习,学生不仅能够掌握第三次科技革命的相关知识,还能深入理解科技对社会经济的巨大影响,从而认识到科技是第一生产力,对个人和社会的重要性不言而喻。同时,课程还引导学生思考如何把握未来科技革命的...

    科学技术哲学复习题研究报告生总结篇.doc

    3. 科学技术现代化的重要性:科学技术现代化在国家现代化进程中扮演关键角色,能推动经济增长、提升产业竞争力、改善生活质量,并促进社会进步。 4. 海德格尔的技术哲学观:海德格尔认为技术不仅是工具和手段,更是...

Global site tag (gtag.js) - Google Analytics