JAVAEE学习(进程篇)

一.什么是进程

     我们的电脑上通常存在大量的应用程序,这些程序运行起来我们就称为进程(process)也可以叫做任务(task),没有运行起来的应用程序就不能称之为进程。进程是内存、文件等资源分配的基本单位。


二.怎样描述和组织一个进程

  进程的描述和组织由操作系统来完成,进程由数据结构双向链表来组织,操作系统创建一个结构体来描述进程,这个结构体我们称之为进程控制块(PCB),PCB一般由4个部分组成。

(1)PID

     各给进程的标识,用来区分不同进程。

(2)内存指针

操作系统会将一些必要的数据和指令(代码)提前加载到进程所分配到的内存中,内存指针就记录了这片内存中那些是指令,哪些是数据。

     ps:操作系统为我们提供了“虚拟内存”的概念,我们平时代码中所获得的地址并非是真实物理内存中的地址而是这片虚拟内存中的地址。操作系统会根据所分配到的虚拟内存的地址结合mmu硬件设备将其映射到真实的物理内存上。例如进程中一个数组他所分配到的虚拟内存为0x1000~0x2000,当这个进程执行时,这个数组的虚拟内存会通过mmu硬件设备映射到实际的物理内存0x?~0x?。

 如果在该进程执行过程中,这个数组发生越界访问到原先分配地址以外的地址,操作系统内核会自动识别出来,并对该进程发送一个SIGN SENGMENT FAULT信号,使该进程崩溃,这样做的好处是避免进程间的相互影响,因为越界访问的这个地址可能属于其他进程,如果该进程继续执行,可能使其他进程产生一系列问题,无法正常执行。

(3)文件描述符集

    用来记录进程中所需要用到的文件资源。代码每打开一个文件就会在该集中建立一个表项来记录该文件。

(4)进程调度管理   

     1进程状态

          进程有不同的状态,主要有以下三种

            就绪状态(随时可以被调度到cpu上执行)

           运行状态(正在cpu上执行)

          阻塞状态(正处于其他操作中,例如大量io,短时间无法到cpu上执行)

     2优先级

        进程在cpu上执行的优先等级,优先级高的先被执行,反之则较后执行。

    3 上下文

        进程在cpu上被执行时产生的运算中间值会被保存在cpu上的寄存器中 ,当cpu进行进程切换时这些值会保存到该进程的pcb中,当下一次进程在到cpu上执行时,就会直接把这些值拿到寄存器中,从而能继续上一次的执行,不需要再重新执行,大大提高了进程的执行效率。

    4记账信息

       记录进程在cpu上的执行时间和执行过程中所发指令的数目,操作系统根据这些信息对该进程的调度进行调整。这样可以使进程在cpu上的执行更加均匀,不至于某个进程占用的cpu资源过多。


三.进程间的通信

   前面我们说过操作系统通过虚拟内存可以防止进程间相互影响,使进程间相互隔离,但有时我们也需要进程间产生一定的交互,为了达到这个目的,我们会为各进程开放一片公共空间,我们可以以这片空间为媒介来实现各进程的交互,但这片空间很多进程都能够进行访问,由此可能会产生进程安全的问题。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值