进程

简而言之,程序的运行过程称为进程,进程是运行过程,是动态的,程序是内存上的数据和代码段,是静态的。

程序的结果可再现,进程的结果不一定可在现。(为了让进程的结果可在现,不会每次都不一样,因此需要进程的同步)

进程的三个基本状态:

1)运行态

2)就绪态

3)阻塞态

为了描述控制进程的运行,系统为每个进程定义了一个数据结构----进程控制块(PCB Process Control Block),它是进程实体的一部分,是操作系统中最重要的记录性数据结构。

进程是通过内核控制的。

内核简介:

  内核,是一个操作系统的核心。是基于硬件的第一层软件扩充,提供操作系统的最基本的功能,是操作系统工作的基础,它负责管理系统的进程、内存、设备驱动程序、文件和网络系统,决定着系统的性能和稳定性。
  现代操作系统设计中,为减少系统本身的开销,往往将一些与硬件紧密相关的(如中断处理程序、设备驱动程序等)、基本的、公共的、运行频率较高的模块(如时钟管理、进程调度等)以及关键性数据结构独立开来,使之常驻内存,并对他们进行保护。通常把这一部分称之为操作系统的内核。 
  程序可以直接地被调入计算机中执行,这样的设计说明了设计者不希望提供任何硬件抽象和操作系统的支持,它常见于早期计算机系统的设计中。最终,一些辅助性程序,例如程序加载器和调试器,被设计到机器核心当中,或者固化在只读存储器里。这些变化发生时,操作系统内核的概念就渐渐明晰起来了。
 
进程同步是一个操作系统级别的概念,是在多道程序的环境下,存在着不同的制约关系,为了协调这种互相制约的关系,实现资源共享和进程协作,从而避免进程之间的冲突,引入了进程同步。
进程同步(保证结果可在现):
1)进程间制约关系
2)资源共享关系
临界资源—独享的资源(如打印机)——进程互斥
共享资源(如磁盘)
 
 
信号量机制实现互斥和同步。http://blog.csdn.net/smstong/article/details/5607416
同步关系:即程序的运行先后关系。
 
 
经典的进程同步问题——生产者消费者问题:http://www.cnblogs.com/raymon/archive/2012/05/23/2547527.html
 
 
 进程通信(交换信息):
1)直接通信
2)消息缓冲队列通信(重点)
消息缓冲区是临界资源,需要互斥使用。
 
调度:
1)高级调度-作业调度
2)中级调度—交换
3)低级调度—进程调度
 
多级反馈队列调度算法(现代操作系统的基准算法)·······windows和unix都是这种方法
 
进程死锁:
所谓死锁是指计算机系统和进程所处的一种状态。在系统中,两个或多个进程无限期地等待永远不会发生的条件,此时称此系统处于死锁状态。
死锁原因:1)竞争资源。2)进程推进顺序不当
死锁的避免方法(这是重点,很长的篇幅讲这个,但是好像很麻烦的样子,我不太懂)
 
 
 
 
 
 
原文地址:https://www.cnblogs.com/qiaozhoulin/p/4788246.html