JAVA并发编程实践第一天

版权声明:转载标明来源! https://blog.csdn.net/qq_39213969/article/details/88784984

一,进程的介绍

1.操作系统的资源:内存,文件的句柄,安全证书。

2.进程间的通信方式:socket,信号量,文件,共享内存,信号处理。

3.线程允许程序的控制流的多分支同时存在于进程之中。他们共享进程中的资源,比如内存以及文件句柄。但是每一个线程都有自己独立的程序计数器,栈以及本地变量。线程也为多处理器系统中并行的使用硬件提供了自然而然的分解。同一程序内的多线程可以再多个cpu的基础上实现同时调度。

4.同一个进程中的多个线程访问相同的变量,以及在同一个堆中分配对象,这相对于进程来说实现了良好的数据共享。
但是要明确采用同步的方式来管理多个进程共享数据,一个线程可能会修改其他线程正在使用的数据,产生意外的结果。

5.线程在GUI桌面程序中的应用:改进用户接口的响应性,并在服务器应用中提高系统的利用率以及吞吐量。。同时他也可以简化JVM的实现----垃圾收集器通常运行在一个或者多个持续工作的线程中。

6.进程控制块PCB的作用:
(1)作为独立运行基本单位的标志(简单的理解就是当一个程序在多道处理系统中配置了PCB进程控制快之后他就是一个恁在处理系统中的独立运行的基本单位。
(2)能够实现进行的间断性运行,(简单理解就是程序在多到处理系统中是多个程序间断性按照时间片轮转来执行的。)
(3)提供进程管理所需要的信息(在程序的执行生命周期之中,操作系统根据PCB实施对进行的控制和管理,当程序被调用到内存中执行时,操作系统根据进程控制块中PCB中记录的本进程的执行需要的程序和数据。
(4)提供进程调度所需要的信息。(简单理解就是PCB可以提供本进程所处于的状态,进而可以使操作系统根据状态对进程进行操作。
(5)实现与其它进程的同步以及通信。(简单理解就是在进程的并发执行过程中,采用同步信号量机制才能使各个进程之间协调进行通信。)

7.进程控制快PCB之中的信息:
(1)进程标识符:1,外部标识符,通常是用于标识具体用户创建的进程。通常还有父进程符以及子进程符。除此之外可能还有用户标识。2,进程得内部标识符:通常是一个进程在操作系统中唯一的标识,也通常指的是进城在操作系统中得序号。
(2)处理机状态:主要是由处理机得各种寄存器以及其中的内容组成,通用寄存器,程序状态psw,指令计数器。一般来说处理机出于执行状态时,其大部分的信息都存放在寄存器中。当进程被切换时,处理机状态的信息都必须存储在PCB中以便下次进程恢复执行时能在断点处继续执行。
(3)进程调度信息,(简单来说就是优先级,调度顺序)
(4)进程控制信息,程序以及数据的地址,进程同步信号量,资源清单,连接指针,也就是这个PCB到下一个PCB得地址。

8.进程的创建
(1)申请空白的PCB(唯一数字标识符),
(2)为新进城分配运行时所需要的资源,程序以及数据。
(3)初始化进程控制块PCB的信息。
(4)如果进程的就绪队列能够容纳新的进程那么就将其加入进就绪队列。

9.同步机制遵循的原则(空闲让进,蟒则等待,有限等待,让权等待)。
10.共享资源的数据结构以及由对该共享数据实施的一系列操作组成的资源管理程序组成的模块。管城被请求和释放资源的进程调用。管城的组成:管城的名称,局部于管城的数据结构,以及对这组数据结构的操作,还有对数据以及数据结构进行初始化设置。

2.进程间的通信

1.类别四大类进程通信方式:共享存储器系统,管道通信系统,消息传递系统,客户机-服务器传递系统。

二,线程的知识

1.线程的具有的资源:用于控制线程运行的TCB,用于指令被执行指令序列的程序计数器,保留局部变量和少数状态参数和返回地址等的一组寄存器和堆栈。除此之外,多个线程可以共享进程中的资源,访问进程资源(共享内存地址空间)。
一个线程的堆栈可以被其他线程访问(读或者写),甚至可以完全删除。有一个线程打开的的文件可以供其它线程读和写。

2.线程的状态以及线程控制块:
(1)三种状态:执行状态,就绪状态,阻塞状态(IO操作)。
(2)线程是独立运行(或者说调度)的基本单位。进程是系统资源分配的基本单位。

三,死锁

1.基本知识

(1)产生死锁的必要条件:互斥条件,不可抢占,循环等待,请求保持。

(2)预防死锁从四个必要条件入手。

(3)避免死锁的方法:1.粗拉锁法(就是把内存提前扩充),2,锁排序法(把锁标上序号,让循环等待有序进行),
3.trylock()方法,就是固定时间没获取到锁就返回false。

(4)有序资源分配法(给资源编好编号, 这样就破坏了环路条件,避免了死锁的发生。)

(5)银行家算法。(系统给当前进程分配资源时,先检查是否安全)。(在满足当前的进程X资源申请后,是否还能有足够的资源去满足下一个距最大资源需求最近的进程(如某进程最大需要5个单位资源,已拥有1个,还尚需4个),若可以满足,则继续检查下一个距最大资源需求最近的进程,若均能满足所有进程,则表示为安全,可以允许给当前进程X分配其所需的资源申请,否则让该进程X进入等待。银行家算法(死锁避免算法)。在资源动态分配过程中,防止系统进入不安全状态,以避免发生死锁。数据库中会用到等待图进行死锁检测。)

2.死锁的检测(条件)
(1)保存有关资源的请求分配信息
(2)提供一种算法,它利用这些信息来检测系统是否进入死锁状态。
(3)死锁分配图,死锁·定理,死锁检测中的数据结构。

猜你喜欢

转载自blog.csdn.net/qq_39213969/article/details/88784984