操作系统

  • 进程与线程
    • 进程与线程的区别:
      • 进程是一段程序动态执行的过程,内部可以分解成线程。进程是资源分配最小单位,线程是cpu调度。
      • 进程有独立的地址空间,进程健壮(崩溃不会对其它进程产生影响),切换开销大;线程……有自己的栈和局部变量。
      • 通信:进程间通信通过IPC(管道、信号、消息队列、共享内存、信号量),线程中通过全局变量、静态变量等。
    • 线程同步
      • 互斥量:互斥对象只有一个,所以可以保证公共资源不会被多个线程同时访问。
      • 信号量:(资源数量,+1,-1)它允许多个线程访问,但是需要控制最大线程数量。
      • 事件(信号):通过通知操作的方式来保持多线程同步,还可以方便的实现多线程优先级的比较操作。
    • 进程同步:
      • 信号,软件中断,ctrl+C,仅能用作快速响应机制;
      • 管道,基于内存文件,从父进程继承的文件描述符;
      • 消息队列,基本单位为字节序列;
      • 共享存储,进程与线程机制不一样,需要同步机制(信号量),速度快(不需要系统调用)
      • 套接字
    • 死锁
      • 多进程争夺资源造成的僵局
      • 原因:互斥、非抢占、持有并等待、循环等待
      • 处理:银行家算法,剩余资源是否满足所有线程的未来需要。
  • 内存管理
    • 连续物理内存
      • MMU:逻辑地址 => 物理地址
      • 连续内存分配:动态分区分配(最先匹配、最佳、最差)
      • 碎片整理:紧凑,分区兑换(等待进程搬至外存,开销大)
    • 非连续物理内存(非连续物理地址、动态加载、段页表开销)
      • 段式(满足代码逻辑):按数据、堆栈、堆、代码分离,段基址+段内偏移
      • 页式(提高代码利用率):页帧(物理),页面(逻辑),(页帧偏移相同,号不相同),页表(页号、帧号对应)
      • 段页式:段号+页号+页内偏移。共享(指向同一个页表基址)
    • 虚拟存储
      • 虚拟页式存储:程序部分装入页面=>缺页异常=>加载相应页面
      • 置换算法:减少页面调入调出次数(最优、FIFO、LRU、LFU、时钟)
      • Belady现象:物理页面增加,缺页次数增加(FIFO存在)
  • 文件系统:管理持久性数据(分配空间,管理集合,可靠性与持久性)
    • 文件描述符
      • 打开文件表的索引
      • 数据块:基本访问单位(4KB)
      • 访问模式:顺序,随机(虚拟内存),内容(数据库)
    • 虚拟文件系统VFS
      • 对不同文件系统的抽象
      • 卷控制块(文件系统信息), 文件控制块(文件信息),目录节点

计算机网络

  • OSI7层模型
    • 物理:利用传输介质提供物理连接,实现比特流的传输。RJ45、中继器,集线器
    • 数据链路层:通过控制协议,将有差错的物理信道变为无差错的数据链路。VLAN、MAC (网桥,交换机)
    • 网络层:将数据转换为数据包,让信息在网络设备间传输。IP、(路由器)
    • 传输层:提供可靠的差错和流量控制,保证报文的正确传输。TCP、UDP
    • 会话层:协调两个会话进程之间的通信,并对数据交换进行管理。
    • 表示层:对数据进行翻译、加密和压缩。
    • 应用层:允许访问OSI环境的手段。FTP、DNS、HTTP、WWW
  • TCP、UDP
    • 三次握手
      • 客户端发送连接请求,SYN置1,序号x;进入SYN_SEND状态,等待确认
      • 服务器收到SYN报文,SYN置1,确认号x+1,序号y;进入SYN_RECV状态
      • 客户端收到SYN+ACK包,ACK为y+1
      • 为什么:存在网络延迟时,信号可能在失效后到达server,此时server相应,并一直等待(浪费),而client并不理会。
    • 四次分手
      • 主机1设置序号和确认号,发送一个FIN报文段;主机1进入FIN_WAIT_1状态。
      • 主机2收到FIN包后,确认序号为收到序号+1;主机1进入FIN_WAIT_2状态。
      • 主机2发送FIN报文段;同时主机2进入LAST_ACK状态。
      • 主机1收到FIN后,发送确认序号为收到序号+1。
      • 为什么:将确认关闭关闭连接分开,先快速同意,然后将缓冲中剩下的数据发送。
    • TCP(或传输控制协议)和 UDP(用户数据报协议)区别
      • TCP通信前需要建立连接(三次握手),可靠性高,效率低;
      • TCP面向字节流,数据可以被分割并在接收端重组;UDP面向数据报传输,数据分割后接受端不会重组。
  • 解析网址
    • 在浏览器缓存、系统缓存、路由器缓存查找DNS信息,ISP DNS服务器解析域名,得到IP
    • 建立TCP连接,3次握手
    • 浏览器向web服务器发送一个HTTP请求
    • 服务器发送HTTP响应报文

C++

  • volatile:可能被额外的因素改变(操作系统等),直接从内存中读取数据,禁止编译器做寄存器优化
  • new、malloc:构造函数,指定大小,异常,返回void*
  • 宏定义区别:无返回值,没有类型检查,简单替换,不占内存
  • 堆与栈:程序员分配、动态、容量大、碎片
  • 初始化成员列表:const、reference、基类构造函数、成员对象构造函数(避免二次赋值)
  • 静(动)态链接:静态链接编译时拷贝库,改变时要重新编译,运行时执行效率高。

ShengYg

Step after step the ladder is ascended.


Tags •