zoukankan      html  css  js  c++  java
  • 线程、进程、死锁

    题目转自http://blog.csdn.net/morewindows/article/details/7392749

    第一题:线程的基本概念、线程的基本状态及状态之间的关系?

    线程,有时称为轻量级进程,是CPU使用的基本单元;它由线程ID、程序计数器、寄存器集合和堆栈组成。它与属于同一进程的其他线程共享其代码段、数据段和其他操作系统资源(如打开文件和信号)。

    线程有四种状态:新生状态、可运行状态、被阻塞状态、死亡状态。状态之间的转换如下图所示:

    第二题:线程与进程的区别?

    1、 线程是进程的一部分,所以线程有的时候被称为是轻权进程或者轻量级进程。
    2、 一个没有线程的进程是可以被看作单线程的,如果一个进程内拥有多个进程,进程的执行过程不是一条线(线程)的,而是多条线(线程)共同完成的。
    3、 系统在运行的时候会为每个进程分配不同的内存区域,但是不会为线程分配内存(线程所使用的资源是它所属的进程的资源),线程组只能共享资源。那就是说,出了CPU之外(线程在运行的时候要占用CPU资源),计算机内部的软硬件资源的分配与线程无关,线程只能共享它所属进程的资源。
    4、 与进程的控制表PCB相似,线程也有自己的控制表TCB,但是TCB中所保存的线程状态比PCB表中少多了。
    5、 进程是系统所有资源分配时候的一个基本单位,拥有一个完整的虚拟空间地址,并不依赖线程而独立存在。

     

    第三题:多线程有几种实现方法,都是什么?

     1. 继承 Thread 类
      2. 实现 Runnable 接口再 new Thread(YourRunnableOjbect) 

    第四题:多线程同步和互斥有几种实现方法,都是什么?



    线程间的同步方法大体可分为两类:用户模式和内核模式。顾名思义,内核模式就是指利用系统内核对象的单一性来进行同步,使用时需要切换内核态与用户态,而用户模式就是不需要切换到内核态,只在用户态完成操作。
    用户模式下的方法有:原子操作(例如一个单一的全局变量),临界区。内核模式下的方法有:事件,信号量,互斥量。

    第五题:多线程同步和互斥有何异同,在什么情况下分别使用他们?举例说明。

    线程同步是指线程之间所具有的一种制约关系,一个线程的执行依赖另一个线程的消息,当它没有得到另一个线程的消息时应等待,直到消息到达时才被唤醒。

    线程互斥是指对于共享的进程系统资源,在各单个线程访问时的排它性。当有若干个线程都要使用某一共享资源时,任何时刻最多只允许一个线程去使用,其它要使用该资源的线程必须等待,直到占用资源者释放该资源。线程互斥可以看成是一种特殊的线程同步。

    操作系统发生死锁的必要条件:

    1.互斥条件:进程对所分配到的资源进行排他性使用,在一段时间内某资源只由一个进程占用;

    2.请求保持条件:指一个进程已经保持了至少一个资源,但又提出了一个新的资源请求,而此资源被其他进程占用,此时请求进程阻塞,但又对自己已经找有的资源保持不放;

    3.不剥夺条件:进程已经获得资源,在未使用完之前,不能被剥夺,只能在使用完时,由进程自己释放;

    4.环路等待条件:发生死锁时,必然存在一个进程-资源的环形链。

  • 相关阅读:
    WSP部署错误—SharePoint管理框架中的对象“SPSolutionLanguagePack Name=0”依赖其他不存在的对象
    Elevate Permissions To Modify User Profile
    Error with Stsadm CommandObject reference not set to an instance of an object
    ASP.NET MVC3添加Controller时没有Scaffolding options
    测试使用Windows Live Writer写日志
    配置TFS 2010出现错误—SQL Server 登录的安全标识符(SID)与某个指定的域或工作组帐户冲突
    使用ADO.NET DbContext Generator出现错误—Unable to locate file
    CSS
    HTML DIV标签
    数据库
  • 原文地址:https://www.cnblogs.com/jswu-ustc/p/8560499.html
Copyright © 2011-2022 走看看