操作系统知识点_进程管理

1、进程管理

进程与线程:一个程序至少有一个进程,一个进程至少有一个线程。

  进程:是一个动态概念,是程序执行过程总分配资源和管理的基本单位,竞争计算机资源的基本单位。每个进程拥有自己的数据空间,栈空间,包括用户栈和核心栈。进程大小只与处理机的位数有关。16位216,32位232.

  线程:进程的一个实体,是CPU调度和分配的基本单位。线程自己基本不拥有系统资源,只拥有一点运行中必不可少的资源(程序计数器、一组寄存器和栈),它与同属一个进程的其他线程共享进程所拥有的全部资源。在网络或多用户环境下,服务器需要接受很多用户的请求,每次创建进程的系统开销太大,转而创建多线程。线程是进程的一部分,一个没有线程的进程可以被看做是单线程。

联系:一个进程可同时拥有多个线程。线程是进程的一部分,他们都没有自己独立的资源和地址空间,多个线程共享进程的资源。单单一个线程的改变,如结束,并不会让改变进程的状态。

 

进程/线程同步:临界区,互斥量,信号量,事件

进程通信:管道(无名管道用于父子进程通信,有名管道用于其他进程之间的通信),系统IPC即:消息队列,信号量,共享存储等,还有socket

 

进程的状态:运行态,就绪态,等待态

  运行态:进程占用处理器正在运行的状态

  就绪态:进程啥都准备好了,就是没有给它处理器的状态

  等待态:又名阻塞态,睡眠态,表示进程正在等待某时间的完成,不具备可以运行的状态。

 

内核线程和用户线程:

  内核线程:建立和销毁都由操作系统负责,通过系统调用完成。如果一个进程中没有就绪态的线程,那么该进程就不会被调度占用CPU

  用户线程:不需要内核支持,在用户程序中实线的线程,不依赖于操作系统核心。利用线程库提供的创建、同步、调度和管理线程函数来控制。

引入用户线程的优势:可在不支持线程的操作系统中实线;创建销毁和切换线程管理的代价比内核线程小得多;允许每个线程定制自己的调度算法,管理灵活;线程可利用的表空间和堆栈空间比内核线程多,

用户线程的缺点:统一进程只能同时有一个线程运行,如果一个线程使用系统调用阻塞则这个进程挂起;页面失效也会导致整个进程挂起。

内核线程的优缺点干好相反。实际上,操作系统可以使用混合的方式实现线程。

 

处理器调度算法:

  非剥夺:先来先服务(FCFS)、最短作业优先(SJF)、响应比最高者优先(响应比=作业周转时间/作业处理时间=1+作业等待时间/作业处理时间)、

  剥夺式:最短剩余时间优先、轮转调度(RR)、多级反馈队列调度

  系统规定:优先级调度、彩票调度

 

内存池,进程池,线程池

  内存池:用new,malloc分配内存时,申请的内存块大小不定,会造成大量的内存碎片降低性能。内存池就是在使用内存前,申请分配一定数量,大小相等的内存块留做备用,使得内存分配效率得到提升。

  进程池:服务器预先创建一组子进程,子进程运行着相同的代码,相同的属性,当有新的任务来临时,主进程通过某种方式选择进程池中一个进程为其服务。

  线程池:需要大量线程来完成任务,且实现任务的时间比较短,适合用线程池,节约创建线程的时间。

死锁的概念和原因

  死锁:进程集合中的每一个进程都在等待一个进程才能继续执行,无外力无法推进,这种就叫死锁。

  互斥条件:分配到的资源不共享

  请求和保持条件:请求不到资源,但仍保持自己的资源不放。

  不可剥夺条件:进程在使用完资源前不可以被剥夺资源

  环路等待:必然存在一个环路。

解决方法:

  1.预防死锁:破坏条件
  2.避免死锁:银行家
  3.检测死锁:发生发生死锁,立马干预
  4.解除死锁:配合检测使用。

 

posted @ 2017-04-10 21:45  糯米米一粒  阅读(211)  评论(0编辑  收藏  举报