操作系统进程和线程

一、操作系统

操作系统(Operation System, OS) 是指控制和管理整个计算机的硬件和软件资源、合理的组织和调度计算的任务和资源的分配、并给用户和应用软件提供合理的接口和环境的一种系统软件,它是计算机系统中最基本的系统软件。简单点说,操作系统有两个作用,一是关系下层硬件,二是给上层用户和软件提供接口。

1、对硬件资源进行管理、分配、调度

有了操作系统之后,这个程序需要占多少内存,今天具体把哪一块内存空间分给它,使用者无需关心,操作系统帮你打理;这个文件存在硬盘的哪个磁道哪个扇区,使用者无需关心,操作系统帮你打理;电脑里只有一个CPU,为什么可以同时运行多个程序,使用者无需关心,操作系统帮你打理。

2、向用户提供接口

计算机是由一个一个硬件组成的,最古老的计算机是很大很大的,因为一个计算机能提供很多的功能,而在最初没有操作系统的时候,这一个一个功能都是需要人们手动来开关的,所以可能会有成千上万个按钮来让人们使用,这样就很麻烦了。随着科技的进步,人们发明了操作系统,有计算机本身来管理硬件,然后把所有的功能包装成一个用户界面,人们只需要轻轻的点两下就可以实现一个功能了。

二、进程

进程是一个具有一定独立功能的程序在一个数据集上的一次动态执行的过程,是操作系统进行资源分配和调度的一个独立单位,是应用程序运行的载体。进程是一种抽象的概念,从来没有统一的标准定义。

1、进程的状态

在这里插入图片描述

  • 就绪:进程处于可运行的状态,只是CPU时间片还没有轮转到该进程,则该进程处于就绪状态。
  • 运行:进程处于可运行的状态,且CPU时间片轮转到该进程,该进程正在执行代码,则该进程处于运行状态
  • 阻塞:进程不具备运行条件,正在等待某个事件的完成。

2、时间片

现在的操作系统都支持"多任务"调度,一个任务就是一个进程,多任务就是一个操作系统可以同时运行多个任务。操作系统的任务调度都是采用时间片轮转的抢占式调度,也就是说每一个进程执行一段时间后,先暂停,然后执行下一个进程,每个进程轮流进行。任务执行的一段时间就叫做时间片,正在执行的进程处于执行状态,等待的进程处于就绪状态,这样每个进程都能得到执行,由于CPU的执行效率很高,时间片非常短,在各个任务之间快速切换,给人感觉就像是在同时进行,这就是所说的并发

3、并发和并行

现在,多核CPU已经非常普及了,由于任务数量远远多于CPU的核心数量,所以,操作系统也会自动把很多任务轮流调度到每个核心上执行。

  • 并发:多个进程在一个CPU下采用时间片轮转的方式,在一段时间之内,让多个进程都得以推进,称之为并发
  • 并行:多个进程在多个CPU下分别,同时进行运行,这称之为并行

4、内核态和用户态

一般的操作系统(如Windows、Linux)对执行权限进行分级:用户态和内核态

  • 操作系统内核作为直接控制硬件设备的底层软件,权限最高,称为内核态,或核心态
  • 用户程序的权限最低,称为用户态

5、进程中的上下文

上下文简单说来就是一个环境,进程在时间片轮转切换时,由于每个进程运行环境不同,就涉及到转换前后的上下文环境的切换。

  • 就是一个进程在执行的时候,CPU的所有寄存器中的值、进程的状态以及堆栈上的内容
  • 切换时需要保存当前进程的所有状态,即保存当前进程的进程上下文,以便再次执行该进程时,能够恢复切换时的状态,继续执行

三、线程

进程是系统分配资源的最小单位,线程是系统调度的最小单位。一个进程内的线程之间是可以共享资源的。在早期是没有线程这个概念的,进程是能拥有资源的独立运行的最小单位,也是程序执行的最小单位,后来,随着计算机的发展,对CPU的要求越来越高,进程之间的切换开销较大,已经无法满足越来越复杂的程序的要求了,于是就发明了线程。每一个进程最少拥有一个线程,这时这一个线程也就相当于进程,所以线程还有一个叫法叫"轻量级进程"。

线程是程序执行中一个单一的顺序控制流程,是程序执行流的最小单元,是处理器调度和分派的基本单位。一个进程可以有一个或多个线程,各个线程之间共享程序的内存空间(也就是所在进程的内存空间)。一个标准的线程由线程ID、当前指令指针(PC)、寄存器和堆栈组成。而进程由内存空间(代码、数据、进程空间、打开的文件)和一个或多个线程组成。线程的调度方式和状态等都和进程相似。

线程的优点:

  1. 创建一个新线程的代价要比创建一个新进程小得多
  2. 与进程之间的切换相比,线程之间的切换需要操作系统做的工作要少很多
  3. 线程占用的资源要比进程少很多
  4. 能充分利用多处理器的可并行数量
  5. 在等待慢速I/O操作结束的同时,程序可执行其他的计算任务
  6. 计算密集型应用,为了能在多处理器系统上运行,将计算分解到多个线程中实现
  7. I/O密集型应用,为了提高性能,将I/O操作重叠。线程可以同时等待不同的I/O操作

四、进程和线程的区别

  1. 进程是系统分配资源的最小单位,线程是系统调度的最小单位
  2. 一个进程由一个或多个线程组成,线程是一个进程中代码的不同执行路线
  3. 进程之间相互独立,但同一进程下的各个线程之间共享程序的内存空间(包括代码段、数据集、堆等)及一些进程级的资源(如打开文件和信号),某进程内的线程在其它进程不可见
  4. 由于同一进程的各线程间共享内存和文件资源,可以不通过内核进行直接通信
  5. 线程的创建、切换及终止效率更高
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值