【无标题】

文章讨论了操作系统中的进程和线程概念,强调进程作为资源分配单位,线程作为调度单位,并指出线程切换的效率高于进程。此外,介绍了虚拟技术的两类——时间复用和空间复用,并以虚拟内存为例解释空间复用。在C++部分,提到了lambda表达式和多重继承,指出lambda的捕获列表、参数和返回类型,以及多重继承可能导致的复杂性。

OS八股

进程和线程

进程是资源分配的基本单位,线程是调度的基本单位。进程拥有CPU资源,内存资源,文件资源,句柄等等,线程仅仅拥有程序计数器PC,状态字,寄存器,栈等等。一个进程可以有多个线程,线程本质是一种轻量级的进程,同一个进程的线程会共享进程的内存资源。

线程切换的速度快于进程

在进行切换的时候,线程只需要保存程序计数器,栈,寄存器等等内容就行。其他资源由于是进程管理,因此无需保存。而进程在切换的时候需要保存CPU环境,高速cache会全部失效,虚拟地址空间,页表等等也需要切换这样就导致进程切换的开销远大于线程。

虚拟技术

虚拟技术把一个物理实体转为多个逻辑实体,目前主要有两种
1.时间复用技术
2.空间复用技术
多进程或者多线程并发的执行就是时间复用技术,虚拟内存就是空间复用技术,它将物理内存抽象为每个进程的地址空间,而对于一个进程的地址空间来说,它可能并不在物理内存中,如果被访问,就会到磁盘中取,如果内存已满就会使用页面置换算法替换页面。

C++八股

lamabda表达式

lamabda表达式由捕获列表,函数参数,mutable,返回参数,函数体组成。
捕获列表是捕获上下文中的变量以供lamabda表达式使用。有值捕获和引用捕获两种。这个是必选项。
函数参数是可选项,表示传入给lamabda表达式的函数参数。
mutable 默认情况下,lamabda表达式的返回值的类型是const,如果带了mutable修饰,就可以认为返回值可被修改。
参考https://zhuanlan.zhihu.com/p/267398634

多重继承

派生类只继承一个基类,就叫单继承,除此之外,C++还支持多继承。就是一个派生类继承多个基类,但是这样的机制可能会让代码的逻辑变得混乱,因此,java语言已经将其废弃。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值