操作系统:进程,线程的由来

     早期未配置OS的系统和单道批处理系统中,程序的执行方式是顺序执行,即在内存中仅装入一道用户程序,独占系统所有资源,一个用户程序执行完成后,才允许在内存装入另一个程序并执行。多道程序系统中,内存可同时装入多个程序,共享系统资源来并发执行,考虑到程序并发执行的特点,操作系统中才引入了进程的概念。

     进程在其生命周期内可能有多个状态,但至少应处于以下三种基本状态之一:就绪状态,执行状态,阻塞状态(申请缓存区失败,I/O请求等)

为了满足进程控制块对数据及操作的完整性要求及增强管理的灵活性,通常在操作系统还为进程引入了两种常见的状态:创建状态和终止状态。

挂起操作和进程状态的转换:

为了系统和用户观察,分析进程的需要,许多系统还引入了一个重要的对进程的操作——挂起操作,该操作作用于某个进程时,该进程挂起处理静止状态,若处于正在执行则将暂停执行,若原本处于就绪状态则将不接受调度。挂起操作对应的是激活操作。

进程与线程:

进程的两个基本属性:

1》进程是一个可拥有资源的独立单位

2》进程是一个可独立调度和分派的基本单位

每个核只能运行一个进程,进程切换时的时空开销比较大,而实际生活中一定需要某些功能是经常穿插执行(不断切换进程)的。于是引入了线程。例如:文字处理器可设置三个线程,一个用于从键盘读入数据,一个用于显示文字及图形,一个用于进行拼写和预发检查。网页浏览器可设置两个线程,一个线程来显示图像和文本,一个线程从网络中接收数据。还有处理多个相同功能的web服务器,一个服务器经常接收到多个用户的请求,若使用单线程的进程则每次只能为一个客户服务。有了多线程后可设置一个专门监听客户的请求,每到达一个请求则创建一个线程来处理该请求。

说白了,多线程就是为了降低为提高用户体验使相同或不同非阻塞进程之间进行的进程切换 和 进程阻塞时穿插执行非阻塞进程来提高CPU利用率时进行的进程切换(相互穿插的进程变为了同一进程中的相同或不同线程)。没有阻塞时单纯一个线程执行100个任务一定比100个线程不断切换交替执行的更快

对于一个进程,多线程的效率只能体现在同一进程中线程阻塞时切换到另一线程上(线程切换相对进程切换来说开销小)。

对于CPU,多线程的效率还体现在因线程的出现导致进程变少带来的进程切换次数减少。

猜你喜欢

转载自blog.csdn.net/u010287873/article/details/83274974