操作系统问题

2014-09-22  本文已影响97人  nino天

1. 进程的有哪几种状态

  • 就绪状态:进程已经分配到除了CPU以外的所有必要资源,只要活得处理机边可以执行
比如等待IO,申请缓冲区不能满足,等待信号量等

2.进程与线程的区别。

线程的引入是为了减少程序在冰法执行时的时空开销,使os具有更好的并发性,从而进一步提高了资源的利用率和系统的吞吐量。

  • 调度:在传统的os中用友资源的基本单位和独立调度、分派的基本单位都是进程;在引入线程的os中,则把线程作为系统调度和分派的基本单位,而把进程作为拥有资源的基本单位。

3.进程通信的几种方式。

  • 共享存储器系统:
    (1)基于共享数据结构的通信方式。(此通信方式抵消,只适用于传递相对少量的数据)
    (2)基于共享存储区的通信方式:为了传送大量数据,在存储区中划出一块共享存储区,所有的进程可通过对共享存储区进行读或写数据实现通讯,可传输大量数据。

4.线程同步几种方式。

  • 临界区当多个线程访问一个独占性共享资源时,可以使用临界区对象。拥有临界区的线程可以访问被保护起来的资源或代码段,其他线程若想访问,则被挂起,直到用友临界区的线程放弃临界区为止。

5. 线程的实现方式.

就是用户线程与内核线程的区别:实现线程有两种 继承Thread类或者实现Runnable接口

CreateThread()和_beginthreadex()的区别:函数在创建新线程时会分配并初始化一个_tiddata块。这个_tiddata块自然是用来存放一些需要线程独享的数据。事实上新线程运行时会首先将_tiddata块与自己进一步关联起来。然后新线程调用标准C运行库函数如strtok()时就会先取得_tiddata块的地址再将需要保护的数据存入_tiddata块中。这样每个线程就只会访问和修改自己的数据而不会去篡改其它线程的数据了。因此,如果在代码中有使用标准C运行库中的函数时,尽量使用_beginthreadex()来代替CreateThread()。

6. 多线程同步和互斥有何异同

线程同步是指线程之间所具有的一种制约关系,一个线程的执行依赖另一个线程的消息,当它没有得到另一个线程的消息时应等待,直到消息到达时才被唤醒。
线程互斥是指对于共享的进程系统资源,在各单个线程访问时的排它性。当有若干个线程都要使用某一共享资源时,任何时刻最多只允许一个线程去使用,其它要使用该资源的线程必须等待,直到占用资源者释放该资源。线程互斥可以看成是一种特殊的线程同步(下文统称为同步)。

7. 用户态和核心态的区别。

当一个任务(进程)执行系统调用而陷入内核代码中执行时,我们就称进程处于内核运行态(或简称为内核态)。此时处理器处于特权级最高的(0级)内核代码中执行。当进程处于内核态时,执行的内核代码会使用当前进程的内核栈。每个进程都有自己的内核栈。当进程在执行用户自己的代码时,则称其处于用户运行态(用户态)。即此时处理器在特权级最低的(3级)用户代码中运行。当正在执行用户程序而突然被中断程序中断时,此时用户程序也可以象征性地称为处于进程的内核态。因为中断处理程序将使用当前进程的内核栈。这与处于内核态的进程的状态有些类似。

状态切换的方式:系统调用,异常,中断

8. 内存池、进程池、线程池。

平常我们使用new、malloc在堆区申请一块内存,但由于每次申请的内存大小不一样就会产生很多内存碎片,造成不好管理与浪费的情况内存池则是在真正使用内存之前,先申请分配一定数量的、大小相等(一般情况下)的内存块留作备用。当有新的内存需求时,就从内存池中分出一部分内存块,若内存块不够再继续申请新的内存。这样做的一个显著优点是尽量避免了内存碎片,使得内存分配效率得到提升。

9. 死锁的概念,导致死锁的原因.

10. 导致死锁的四个必要条件。

11. 处理死锁的四个方式。

12. 预防死锁的方法、避免死锁的方法。

13. 进程调度算法。(周转时间 = 程序结束时间 -- 开始服务时间、带权周转时间= 周转时间 / 要求服务时间)

14. Windows内存管理的方式(块式、页式、段式、段页式).

15. 内存连续分配方式采用的几种算法及各自优劣。

16. 动态链接及静态链接.

17. 基本分页、请求分页储存管理方式。

18. 基本分段、请求分段储存管理方式。

19. 分段分页方式的比较各自优缺点。

20. 几种页面置换算法,会算所需换页数。(LRU用程序如何实现?)

21. 虚拟内存的定义及实现方式。

22. 操作系统的四个特性。

23. DMA。

24. Spooling。

25. 外存分配的几种方式,及各种优劣。

上一篇 下一篇

猜你喜欢

热点阅读