线程和进程

目录

一:进程

1.进程的概念

2.进程控制抽象块(PCB)

3.CPU的进程调度 

4.进程的内存分配 

5.进程之间的通讯 

二:线程

1.线程的概念 

2.为什么要有线程

3.进程和线程之间的关系 

拓展——操作系统


一:进程

1.进程的概念

进程是程序的一次执行过程,是操作系统分配资源的基本单位。进程在电脑上就是一个个运行的软件,比如QQ、微型等。

2.进程控制抽象块(PCB)

 每个进程控制块如图 所示,它包含许多与当前进程相关的信息:

  • 进程状态:状态可以包括新的、就绪、运行、等待、停止等。
  • 程序计数器:计数器表示进程将要执行的下个指令的地址。
  • CPU 寄存器:根据计算机体系结构的不同,寄存器的类型和数量也会不同。它们包括累加器、索引寄存器、堆栈指针、通用寄存器和其他条件码信息寄存器。在发生中断时,这些状态信息与程序计数器一起需要保存,以便进程以后能正确地继续执行。
  • CPU 调度信息:这类信息包括进程优先级、调度队列的指针和其他调度参数。
  • 内存管理信息:根据操作系统使用的内存系统,这类信息可以包括基地址和界限寄存器的值、页表或段表。
  • 记账信息:这类信息包括 CPU 时间、实际使用时间、时间期限、记账数据、作业或进程数量等。
  • I/O 状态信息:这类信息包括分配给进程的 I/O 设备列表、打开文件列表等。

3.CPU的进程调度 

(1)进程的优先级:进程的优先级是指根据任务的重要性或紧急性给进程排序,重要的需要及时处理的优先级高,CPU就优先处理,相反的则CPU后处理。

(2)进程的状态:进程可以有很多状态,但大致分为两类:就绪状态和阻塞状态,就绪状态是指进程是准备就绪的,随时都可以上CPU;阻塞状态是指进程等待某个任务完成或资源分配到位以后才能让CPU执行。

(3)进程的记账信息:操作系统在为进程安排时间的时候,避免有些进程时间安排的太少或根本就没有分配时间,所以记录每个进程的执行时间。

(4)进程的上下文: 进程在调度的时候,被调出进程的寄存器状态会被保存在PCB中

4.进程的内存分配 

操作系统对系统资源的分配,采用的是空间模式,不同的进程使用内存中不同的区域,互相之间互不干扰。  

5.进程之间的通讯 

主要有管道、共享内存、文件、网络等 

二:线程

1.线程的概念 

线程:一个线程就是一个执行流,一个进程中包含多个线程,每个线程并发执行分别完成不同的任务,它是操作系统调度的最小单位。

2.为什么要有线程

因为现在的电脑处理多个任务就需要并发执行,为了解决并发执行就需要并发编程,虽然进程也能实现并发编程,但是创建进程和释放进程需要分配资源,比较消耗时间,创建进程以后,多个线程共享一份系统资源,所以只需要进程加载一次系统资源,线程共同利用这一份资源即可,系统不必在为每个线程再分配系统资源,从而大大降低了资源的开销。

总结上面就是线程的资源开销比进程小。

3.进程和线程之间的关系 

1.一个进程包含多个线程,如果把进程比作工厂,那么线程就是工厂中的流水线

2.每个进程有独立的虚拟空间,也有自己独立的文件描述表;同一个进程的多个线程之间,则共用这一份虚拟地址空间和文件描述表

3.进程是操作系统中资源分配的基本单位,线程是操作系统中执行调度的最小基本单位

4.多个进程同时执行的时候,如果一个进程挂了,一般不会影响到别的进程,同一个进程内的多个线程之间,如果一个线程挂了,很可能把整个进程都带走。 

看一段程序来加上进程和线程的理解:

class MyThread extends Thread{
    @Override
    public void run() {
        while(true){
            System.out.println("再见");
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
}
public class Thread01 {
    public static void main(String[] args) {
        MyThread thread = new MyThread();
        thread.start();
        while(true){
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            System.out.println("你好");
        }

    }
}

上面的整个程序就是进程,进程里面包含了多个线程,在上面就包含了main线程和thread线程。关于多线程会在将来的文章中详细将。

拓展——操作系统

一.操作系统的概念 :操作系统是一组做计算机软硬件管理的计算机系统软件,功能是为上层用户、应用程序提供简单易用的服务。

二:操作系统的功能和目标

  • 操作系统的核心功能:对下要管理各种硬件设备,对上要给各种软件提供稳定的运行环境
  • 作为系统资源的管理者需要提供处理机管理、存储器管理、文件管理、设备管理等;
  • 作为用户与计算机之间的接口需要提供命令接口、层序接口、图形用户接口(GUI);
  • 作为最近接硬件的层次是一种硬件的扩充机器;

三:操作系统的特征

  • 并发性:指两个或多个事件同一时间间隔发生,这些时间宏观上是同时发生的,但是微观上是交替发生的(区别并行:并行是指多个时间同一时刻同时发生);
  • 共享性:共享即资源共享,是指系统中的资源可供内存中多个并发执行的进程共同使用;这里的资源共享有两种共享方式:互斥共享(系统资源同一时间只允许一个进程访问该资源)、同时共享(允许一个时间段内有多个进程"同时"对他们进行访问);
  • 虚拟性:虚拟是指把一个物理上的实体变为若干个逻辑上的对应物。物理实体是是实际存在的,逻辑上的对应物是用户感受到的;
  • 异步性 :是指多道程序环境下,允许多个程序并发执行,但由于资源有限,进程的执行不是一贯到底的,而是走走停停,以不可预测的速度向前推进,这就是异步性

四:操作系统的分层图

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

咸鱼吐泡泡

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值