进程线程的调度阻塞唤醒

  

1 cpu线程调度

  

1一个CPU最多可以运行一个进程或者一个线程,如果是双核的CPU最多可运行两个进程或两个线程,操作系统是多任务操作系统,他不止同时运行两个任务,可能有很多个,如词文档,QQ,音乐,浏览器,等都是一个或多个进程或线程,如果要跑这个多个进程每个进程都对应一个应用程序,或里面的线程,如果有N个这样的线程,那么一个2核的CPU处理这样的线程,每一次一个核只能挂一个线程,这时候就涉及到调度。

  

2什么是调度怎么调度:操作系统会给每个进程或线程可调度的单元一个叫做时间片的东西,根据线程的级别给时间片,每个CPU执行这个线程时间是根据这个时间片决定的,然后把这个线程挂起,就是暂停,然后这个CPU的核去执行另一个线程执行完所有线程后,回来又开始执行第一个线程或进程。每一个线程根据时间片一次进行调度,这样就保证了每个线程都能被执行的到,人类是感觉不到这个暂停的,因为CPU的速度是非常快的,
线程会经常休眠,强制休眠就是时间片到了,系统给你休眠挂起,还有就是主动休眠,例如一个程序窗口
打开后不去动他,他就是休眠状态。

  

3主动休眠:比如说c语言的阅读读取文件的函数调用之后就会主动休眠,他要等操作系统从磁盘里读取文件数据到内存,然后这个线程才会被唤醒,读到文件,满足他继续往下的条件。

  

4阻塞与唤醒:比如一个网卡,他和操作系统相连有很多的套接字对象,又有很多的线程,其中的线程就阻塞在这个插座对象上面,知道OS线程读取到网卡的数据,然后解析到这个插座对象上,这时候就会唤醒这个线程。

进程线程的调度阻塞唤醒