面试复习知识点

进程 ⭐⭐⭐⭐

进程的本质就是操作系统执行的一个程序。与每个进程相关的是地址空间(address space),这是从某个最小值的存储位置(通常是零)到某个最大值的存储位置的列表。

在这个地址空间中,进程可以进行读写操作。地址空间中存放有可执行程序,程序所需要的数据和它的栈。与每个进程相关的还有资源集,通常包括寄存器(registers)(寄存器一般包括程序计数器(program counter)和堆栈指针(stack pointer))、打开文件的清单、突发的报警、有关的进程清单和其他需要执行程序的信息。你可以把进程看作是容纳运行一个程序所有信息的一个容器。

地址空间 ⭐⭐

32 位或 64 位地址的计算机中,分别有 2^32 或 2^64 字节的地址空间
虚拟内存的技术,正如前面讲到过的,操作系统可以把部分地址空间装入主存,部分留在磁盘上,并且在需要时来回交换它们

在这里插入图片描述

文件⭐

几乎所有操作系统都支持的另一个关键概念就是文件系统。如前所述,操作系统的一项主要功能是屏蔽磁盘和其他 I/O 设备的细节特性,给程序员提供一个良好、清晰的独立于设备的抽象文件模型。创建文件、删除文件、读文件和写文件 都需要系统调用

保护⭐

UNIX 操作系统通过对每个文件赋予一个 9 位二进制保护代码
这些位就是著名的 rwx位

TCP⭐⭐⭐⭐

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

HTTP⭐⭐⭐

  • 状态码
    1XX: 指示信息,请求收到,继续处理
    2XX: 成功操作成功收到,分析,接受
    3XX: 完成请求必须进一步处理,重定向
    4XX: 请求包含一个错误语法,不能完成。指示客户端错误
    5XX: 服务器执行一个有效请求失败,指示服务端错误

  • HTTPS
    在这里插入图片描述

Actor⭐⭐

可以将Actor想象成面向对象编程语言中的对象实例,不同的是Actor的状态不能直接读取和修改,方法也不能直接调用。Actor只能通过消息传递的方式与外界通信。每个参与者存在一个代表本身的地址,但只能向该地址发送消息。

Actor模型的理念非常简单:万物皆Actor

  • Erlang引入了”随它崩溃“的哲学理念,这部分关键代码被监控着,监控者supervisor唯一的职责是知道代码崩溃后干什么,让这种理念成为可能的正是Actor模型。

  • 基于事件的调度
    事件可以理解为任务或消息的到来,而此时才会为Actor的任务分配线程并执行。

  • 可以把系统中所有事物都抽象成为一个Actor:

Actor的输入是接收到的消息
Actor接收到消息后处理消息中定义的任务
Actor处理完成任务后可以发送消息给其它Actor

Actor是由状态(state)、行为(behavior)、邮箱(mailbox)三者组成的。

状态(state):状态是指actor对象的变量信息,状态由actor自身管理,避免并发环境下的锁和内存原子性等问题。
行为(behavior):行为指定的是actor中计算逻辑,通过actor接收到的消息来改变actor的状态。
邮箱(mailbox):邮箱是actor之间的通信桥梁,邮箱内部通过FIFO消息队列来存储发送发消息,而接收方则从邮箱中获取消息。
Actor模型描述了一组为避免并发编程的公理:

所有的Actor状态是本地的,外部是无法访问的。
Actor必须通过消息传递进行通信
一个Actor可以响应消息、退出新Actor、改变内部状态、将消息发送到一个或多个Actor。
Actor可能会堵塞自己但Actor不应该堵塞自己运行的线程
在这里插入图片描述

互斥锁⭐⭐⭐

互斥锁其实就是一个bool型变量,为true时表示锁可获取,为false时表示已上锁。这里说的是互斥锁,其实是泛指linux中所有的锁机制。

我们采用互斥锁保护临界区,从而防止竞争条件。也就是说,一个线程在进入临界区时应得到锁;它在退出临界区时释放锁。函数 acquire() 获取锁,而函数 release() 释放锁,如图 :

有一个布尔变量 available,它的值表示锁是否可用。如果锁是可用的,那么调用 acquire() 会成功,并且锁不再可用。当一个线程试图获取不可用的锁时,它会阻塞,直到锁被释放。

信号量⭐⭐⭐

概念:信号量本质上是一个计数器,用于多进程对共享数据对象的读取,它主要是用来保护共享资源(信号量也属于临界资源),使得资源在一个时刻只有一个进程独享。

原理:由于信号量只能进行两种操作等待和发送信号,即P(sv)和V(sv),具体的行为如下:

(1)P(sv)操作:如果sv的值大于零,就给它减1;如果它的值为零,就挂起该进程的执行(信号量的值为正,进程获得该资源的使用权,进程将信号量减1,表示它使用了一个资源单位)。

(2)V(sv)操作:如果有其他进程因等待sv而被挂起,就让它恢复运行,如果没有进程因等待sv而挂起,就给它加1(若此时信号量的值为0,则进程进入挂起状态,直到信号量的值大于0,若进程被唤醒则返回至第一步)。

作用:用于多进程对共享数据对象的读取,它主要是用来保护共享资源(信号量也属于临界资源),使得资源在一个时刻只有一个进程独享。

C++

C++中虚函数表位于只读数据段(.rodata),也就是C++内存模型中的常量区;而虚函数则位于代码段(.text),也就是C++内存模型中的代码区。

面向对象的三个基本特征是:封装、继承、多态

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值