大端小端是什么? 博客
- Little-Endian就是低位字节排放在内存的低地址端,高位字节排放在内存的高地址端。
- Big-Endian就是高位字节排放在内存的低地址端,低位字节排放在内存的高地址端。
3)下面是两个具体例子:
16bit宽的数0x1234在Little-endian模式(以及Big-endian模式)CPU内存中的存放方式(假设从地址0x4000开始存放)为:
内存地址 小端模式存放内容 大端模式存放内容
0x4000 0x34 0x12
0x4001 0x12 0x34
32bit宽的数0x12345678在Little-endian模式以及Big-endian模式)CPU内存中的存放方式(假设从地址0x4000开始存放)为:
内存地址 小端模式存放内容 大端模式存放内容
0x4000 0x78 0x12
0x4001 0x56 0x34
0x4002 0x34 0x56
0x4003 0x12 0x78
能否用c++代码简单测试下当前os是大端还是小端的? :博客
如果内存只有1G,但是进程要占2G是否可以?
系统会自动在你的硬盘上做一个虚拟内存,用来解决物理内存不足时系统性能急剧下降的问题。在内存比较小的系统中,也能一定程度的改善系统性能。
c++协程 博客
关于内存对齐是否了解?博客
docker 博客
IO密集型,大部分时间在处理I/O请求,不需要CPU提供多大算力,这是后频繁切换可以提高并发性,所以I/O密集型的处理,希望在高并发下进行,多线程并发消耗资源少。CPU密集型,占用CPU算力大,希望能获得更长的时间轮片而不是经常切换;这样使用进程较好,进程本身优于线程,只是切换调度消耗的资源多。
CPU密集型,占用CPU算力大,希望能获得更长的时间轮片而不是经常切换;这样使用进程较好,进程本身优于线程,只是切换调度消耗的资源多。
多线程如何确保线程安全: 5个步骤,教你瞬间明白线程和线程安全
条件变量的作用:
C++11条件变量使用详解
线程怎么知道临界区是锁住的: 进程同步的基本概念:临界资源、同步和互斥
深入理解select、poll和epoll及区别 还未搞懂
tcp select使用方法
栈空间最大占8M,堆空间理论上无限制。
通俗理解,上下文,也就是执行任务所需要的相关信息。这个任务可以是一段代码,一个线程,一个进程,一个函数。当这个“任务”,相关信息需要保存下来,就可以使用Context来记录了。
大话select,poll,epoll
INUX内核研究----IO复用函数epoll内核源代码深度剖析
我们知道epoll的底层使用了红黑树来管理文件描述符,为什么会选择红黑树这种结构呢?
以下是个人理解:
epoll和poll的一个很大的区别在于,poll每次调用时都会存在一个将pollfd结构体数组中的每个结构体元素从用户态向内核态中的一个链表节点拷贝的过程,而内核中的这个链表并不会一直保存,当poll运行一次就会重新执行一次上述的拷贝过程,这说明一个问题:poll并不会在内核中为要监听的文件描述符长久的维护一个数据结构来存放他们,而epoll内核中维护了一个内核事件表,它是将所有的文件描述符全部都存放在内核中,系统去检测有事件发生的时候触发回调,当你要添加新的文件描述符的时候也是调用epoll_ctl函数使用EPOLL_CTL_ADD宏来插入,epoll_wait也不是每次调用时都会重新拷贝一遍所有的文件描述符到内核态。当我现在要在内核中长久的维护一个数据结构来存放文件描述符,并且时常会有插入,查找和删除的操作发生,这对内核的效率会产生不小的影响,因此需要一种插入,查找和删除效率都不错的数据结构来存放这些文件描述符,那么红黑树当然是不二的人选。
应用场景
很容易产生一种错觉认为只要用 epoll 就可以了,select 和 poll 都已经过时了,其实它们都有各自的使用场景。
1、select 应用场景
select 的 timeout 参数精度为微秒,而 poll 和 epoll 为毫秒,因此 select 更加适用于实时性要求比较高的场景,比如核反应堆的控制。
select 可移植性更好,几乎被所有主流平台所支持。
2、 poll 应用场景
poll 没有最大描述符数量的限制,如果平台支持并且对实时性要求不高,应该使用 poll 而不是 select。
3、 epoll 应用场景
只需要运行在 Linux 平台上,有大量的描述符需要同时轮询,并且这些连接最好是长连接。
需要同时监控小于 1000 个描述符,就没有必要使用 epoll,因为这个应用场景下并不能体现 epoll 的优势。
epoll并不是在所有的应用场景都会比select和poll高很多。尤其是当活动连接比较多的时候,回调函数被触发得过于频繁的时候,epoll的效率也会受到显著影响!所以,epoll特别适用于连接数量多,但活动连接较少的情况。
1byte、1KB、4KB,1MB、1GB用16进制表示的范围。任意地址范围求字节数
awk ‘BEGIN{count=0;}length($0)>23,count++{if(count>=3){print NR;};print count}END{print count;}’
进程优先级的字段[ PRI Nice ]
CPU调度和进程优先级的关系:在采用优先级进程调度时,运行进程是否一定是系统中优先级最高的进程?为什么?
不一定。因为高优先级的进程有可能正处在阻塞队列中,进程调度就从就绪队列中选一个进程占用 CPU,这个被选中的进程可能优先级较低。