进程和线程

一丶什么是进程?

进程就是跑起来的程序,想一些后缀名.exe的文件称为可执行文件,不用的时候在硬盘上,当我们执行的时候,操作系统就会把这些.exe文件加载到内存中,并让cpu开始执行这些.exe文件内部的一些指令(.exe就存了这些文件的一些二进制)

二丶什么是线程?

线程就是进程的一部分,进程包含了一个或多个线程 ,如果把进程比做一个工厂,进程就是工厂里的生产线,可以有多条

 

三丶操作系统是怎么管理进程的?

1.先描述一个进程(明确一个进程上面的一些属性)

2.在组织若干个进程(使用数据结构,把很多描述进程的信息放到一起,linux为例,典型的就是双链表的结构)

四丶PCB中的一些属性

1.pid(进程id) 进程的身份标识

2.内存指针:指明了这个进程要执行的代码/指令在内存的哪里,及所依赖的数据在哪里

3.文件描述符表:程序运行过程中要和文件打交道,进程每打开一个文件,就会在表中多加一项(可以想成一个数组,数组中的每个元素又是一个结构体,就对应一个文件信息)

上边的属性是基础属性,下面属性是为了进程的调度

1.状态:就绪状态(随时可以去cpu上执行)和阻塞状态(暂时不能去cpu上执行)

2.优先级:先分配谁时间,以及谁分配时间多,和谁分配的时间少(上cpu的时间)

3.记账信息:统计了每个进程,都分别执行了多久,分别都执行了那些执行,分别等了多久,给进程调度提供指导的依据

4.上下文:表示了上次出cpu的时候,当时程序的状态 进程调度出cpu之前,要把cpu中所有的寄存器中的数据保存到内存中,下次在上cpu的时候,就会把内存中的数据回复到寄存器中(相当于存档和读档)

五丶内存资源如何分配?

进程的独立性,就依仗了内存虚拟空间,操作系统上运行这多个进程,如果一个进程出现bug可能会影响到其他进程,因此我们要保证进程的独立性,互不干扰.内存虚拟空间解决了问题

六丶进程间的通信

通过操作系统提供的公共空间,间接的让进程通信

七丶进程和线程的区别?(重点)

1.进程包含线程,一个进程有一个或者多个线程

2.进程和线程都是为了处理并发编程这样的场景

但是进程创建和释放的效率更低,相比之下线程更轻量,创建和释放效率高(为啥轻量?少了申请释放资源的过程)

3.操作系统创建进程,要给进程分配资源,进程是操作系统分配资源的基本单位

操作系统创建的线程,是要在cpu上调度执行,线程是操作系统调度执行的基本单位

4.进程具有独立性,每个进程都对应各自的内存虚拟空间,一旦进程挂了,不会影响到其他

同一进程中有多个线程,多个线程公用一块内存空间,一旦一个线程挂了,可能影响其他线程,甚至导致进程崩溃

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值