linux编程须知(阅读开源服务器源码基础)

来源:互联网 发布:美容院软件 编辑:程序博客网 时间:2024/05/16 19:39

当阅读一些开源服务器源码的时候, 如果不知道以下知识, 就会有知识盲点, 导致不知所云.
这篇博客会讲述一些相关的编程知识点, 把之前的笔记总结一下.
还是那句老话, 带着问题阅读是最容易让人类迅速进入状态的.

进程的内存布局是什么样的?

这里写图片描述

线程的同步机制有哪些?

  • 互斥量
  • 条件变量
  • 自旋锁
  • 读写锁

如何避免死锁

  • 顺序加锁(例如,线程2和线程3只有在获取了锁A之后才能尝试获取锁C(译者注:获取锁A是获取锁C的必要条件)。因为线程1已经拥有了锁A,所以线程2和3需要一直等到锁A被释放。然后在它们尝试对B或C加锁之前,必须成功地对A加了锁。
  • 加锁时限(另外一个可以避免死锁的方法是在尝试获取锁的时候加一个超时时间,这也就意味着在尝试获取锁的过程中若超过了这个时限该线程则放弃对该锁请求。)

进程间的同步机制(也就是进程间通信, 能通信就能同步了嘛)有哪些?

  • 管道
  • FIFO
  • 消息队列
  • 信号量
  • 共享内存
  • 套接字

linux的任务调度机制是什么?

Linux 分实时进程和普通进程,实时进程应该先于普通进程而运行。
而实时进程的调度机制为:

  1. FIFO(先入先出服务调度)

  2. RR(时间片轮转调度)。

NAT有哪些类型及其穿透原理是什么?

NAT类型 :

  1. 锥NAT

    1. 全锥NAT :全锥NAT 把所有来自相同内部IP 地址和端口的请求映射到相同的外部IP 地址和端口。任何一个外部主机均可通过该映射发送数据包到该内部主机。
    2. 限制性锥NAT :限制性锥NAT 把所有来自相同内部IP 地址和端口的请求映射到相同的外部IP 地址和端口。但是, 和全锥NAT 不同的是:只有当内部主机先给外部主机发送数据包, 该外部主机才能向该内部主机发送数据包。
    3. 端口限制性锥NAT :端口限制性锥NAT 与限制性锥NAT 类似, 只是多了端口号的限制, 即只有内部主机先向外部地址:端口号对发送数据包, 该外部主机才能使用特定的端口号向内部主机发送数据包。
  2. 对称NAT :对称NAT 与上述3 种类型都不同, 不管是全锥NAT ,限制性锥NAT 还是端口限制性锥NAT ,它们都属于锥NAT (Cone NAT )。当同一内部主机使用相同的端口与不同地址的外部主机进行通信时, 对称NAT 会重新建立一个Session ,为这个Session 分配不同的端口号,或许还会改变IP 地址。

穿透原理 :

查看这篇博客

原创粉丝点击