美文网首页程序员
操作系统 进程简介

操作系统 进程简介

作者: 金发萌音 | 来源:发表于2014-05-26 20:22 被阅读156次

    进程

    • 什么是进程?为什么要设立进程?进程有哪些特性

      • 进程可以简单的理解为执行中的程序,程序是我们放在硬盘中的一段代码,而通过创建进程,系统将程序放入内存中,同时运行它
      • 进程 = 程序(代码段) +程序计数器(记录下调指令的地址)+CPU寄存器+栈+数据段(特制全局变量)
      • 进程执行某种功能,使用多线程可以使得系统执行多任务并行
      • 进程的特性 动态性 独立性 并发性 结构化:
        1. 动态性:进程除了静态的代码外,其余一切都是动态的,如内存,数据,寄存器等等
        2. 独立性:两个进程间不互相干扰,如浏览器(chrome是进程,ie则是线程)多页面之间
        3. 并发性:进程可以并发.但除了有些特殊限制的(比如游戏什么的防止多开,不过可以使用沙盒多开..)
        4. 结构化:进程是有结构的
    • 进程是有状态的.为什么进程要有状态?进程有哪些状态?他们之间怎么转换?

      • 进程状态是体现进程调度的一种状态,进程调度使得单CPU的系统并行变得可能
      • 进程的状态有:
        1. new 创建一个进程,从静态到动态的过程,new 的程序不久会转为ready
        2. ready 进程已经就绪,只欠CPU的使用权了
        3. running ready的程序获得CPU使用权
        4. waiting 发生中断时,丢掉CPU使用权 由RUNING转来
        5. Terminated: 进程终止运行
      • 进程在执行过程中,其状态在不断变化 变化
    • 进程控制模块PCB:在操作系统内表示进程的方式
      用于保存关于进程的相关信息,如进程的状态 PC 寄存器等,当发生中断时必须保存,用于继续进程


    进程的调度

    • 什么是进程的调度?为什么要进行线程的调度?

      • 我们有很多想做的事情.于是我们创建了很多进程.但是CPU只有一个,而且进程不总是占用着CPU,他偶尔也会去进行IO操作.如何利用这时间,合理安排每个进程进入CPU的时间,这就是CPU调度
      • 目的是CPU的利用率最大
    • 如何实现CPU的调度?
      首先操作系统有很多队列:

      1. 就绪队列:处于就绪状态进程的队列, 短期调度程序从中选出一个进程使其获得CPU使用权,而关于 短期调度程序在第5章有详细解释
      2. 设备队列:如进程访问硬盘,但其他进程在访问硬盘,那么这个进程就要等了,他在等的位置就是设备队列
    • 什么是短期调度程序?

      • 上文中提到了短期调度程序,那么什么是短期调度程序?是不是有长期调度程序?中期调度程序?
        首先解释什么是调度程序
        • 进程的生命周期是不断在各种队列中转换的过程,那么选择什么样的进程来转换呢?这就是调度程序的作用了

        • 而上文中已经解释了 短期调度程序的作用了 我们再来谈一下中期调度程序,它是从硬盘中的进程(进程过大,无法完全保存在内存中.部分保存到硬盘中)加载到内存中

        • 长期调度程序:selects which processes should be loaded into memory for execution.

        • 长期调度程序还有一个十分重要的功能:进程大多分为CPU偏重或者IO偏重的,合理组合这两种进程可以最大化CPU使用率.这也是长期调度系统的作用

    • 其他?
      上下文切换,每次交换CPU使用权,操作系统总要进行一次上下文切换(上下文, 熟悉win32编程的的朋友可能知道)这是CPU在执行进程时候的状态,通常用PCB来保存)


    进程的操作

    • 额..好吧,这个题目还真是难问什么是"进程的操作"这样的问题的...进程的操作有哪些?如何操作?
      1. 进程的创建:
        • 父进程创建子进程,如此循环生成进程树
        • 系统创建有很多问题,如付进程子进程如何共享资源?子进程怎么执行?和父进程并行还是子进程先执行?地址空间如何分配呢?
        • 用UNIX系统举例: fork() 产生新进程(复制原来的地址空间形成,并行执行),exec()使用fork()之后,用该函数加载新的地址空间(也就是创建了一个全新的进程)
      2. 继承的终止
        • 使用系统调用exit()来结束
        • 向父进程返回状态值
        • 释放所有资源
        • 父进程也可以结束其子进程

    进程间通信

    • 进程间为什么要通信?如何实现?
      • 首先.我们要明确,并不是所有进程都是要进行通信的,比如初学者写的大多数程序创建的进程都是没有通信的,这种程序叫做独立程序,否则叫做协作程序

      • 通信有很多好处:

        1. 信息共享
        2. 提高运算速度
        3. 模块化
        4. 方便
      • 消息船体有两种机制 共享内存 消息传递

      • 共享内存方式:运行速度快,但要避免冲突,需要交流信息建立共享信息内存

      • 消息传递系统:

        • 什么是消息传递系统?有何优点?如何实现?
          • 消息传递系统是用消息传递机制传递信息的系统
          • 易于实现,但效率不高
          • 需要两个进程间建立链路之后send()或者receive()信息就好
          • 有直接或间接通信之分,有同步或异步之分,有自动或显示缓冲问题

    服务器-客户端交流

    • 服务器-客户端交流有哪些方式?各有哪些优缺点?
      • SOCKET

        • 在两个IP地址间建立连接,(包含端口号)
        • 所有连接唯一
        • 常用且高效
        • 但是低级,只允许在通信线程间交换无结构字节流
      • 远程过程调用(RPC):

        • 这样的方式可以再远程调用程序中的某个函数(当然这首先需要发起方将函数名和参数传递过来),并将函数的返回值传递回去,这样的方式可以传递很多数据结构
      • 远程方法调用RMI:

        • 类似 RPC JAVA在住址类时允许类中含有远程方法

    相关文章

      网友评论

        本文标题:操作系统 进程简介

        本文链接:https://www.haomeiwen.com/subject/smsdtttx.html