计算机系统

大端小端是什么? 博客

  1. Little-Endian就是低位字节排放在内存的低地址端,高位字节排放在内存的高地址端。
  2. 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算力大,希望能获得更长的时间轮片而不是经常切换;这样使用进程较好,进程本身优于线程,只是切换调度消耗的资源多。

CPU密集型 vs IO密集型

协程VS多线程 应用场景比对

多线程如何确保线程安全: 5个步骤,教你瞬间明白线程和线程安全

条件变量的作用:
C++11条件变量使用详解

互斥锁和条件变量的作用

进程间通信的几种方式 :博客1 博客2

线程怎么知道临界区是锁住的: 进程同步的基本概念:临界资源、同步和互斥

深入理解select、poll和epoll及区别 还未搞懂
tcp select使用方法

linux如何查看已使用的端口

线程在内存占用大小

栈空间最大占8M,堆空间理论上无限制。

什么是IO多路复用,理解IO多路复用

对称加密和非对称加密(一)初步理解

gdb 调试工具 — 使用方法浅析

逻辑地址、线性地址、物理地址和虚拟地址理解

Linux-什么是文件描述符以及相关应用

Linux基础指令
Linux下如何查看CPU、内存占用率

僵尸进程&孤儿进程&解决方案

Linux如何创建一个进程

Linux进程之如何查看进程详情?

Linux中write()函数的行为

操作系统总结之文件管理

操作系统对内存管理:内存碎片的处理方法

通俗理解,上下文,也就是执行任务所需要的相关信息。这个任务可以是一段代码,一个线程,一个进程,一个函数。当这个“任务”,相关信息需要保存下来,就可以使用Context来记录了。

大话select,poll,epoll
INUX内核研究----IO复用函数epoll内核源代码深度剖析

reactor模式是什么

linux系统资源查看详解

我们知道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进制表示的范围。任意地址范围求字节数

操作系统–多线程之间共享哪些资源?

c语言线程能否访问其他线程的栈空间呢 ?

什么是协程

线程退出和线程资源回收问题

进程间通讯方式以及各个方式的优缺点

Linux CPU占用率过高时问题排查

awk ‘BEGIN{count=0;}length($0)>23,count++{if(count>=3){print NR;};print count}END{print count;}’

一分钟学awk够用(产品经理都懂了)

linux awk使用实例

grep命令详解

git教程

mkdir命令的功能作用及其如何使用

4操作系统的系统调用,什么是系统调用

操作系统中的中断

操作系统–中断与系统调用

什么是消息队列?什么场景需要他?用了会出现什么问题?

i++操作是否能保证线程安全

局部性原理以及应用

Linux—创建进程(fork和vfork的区别)

共享内存的实现详解

【面试题】Linux如何实现共享内存

操作系统的各种锁

可重入锁详解(什么是可重入)

栈帧详解

C++ 多线程之间的通信方式(windows下实现)

人人都在说的虚拟内存到底是什么

虚拟内存到底是什么?为什么我们在C语言中看到的地址是假的?

为什么使用多级页表?

操作系统的进程调度算法

线程5种状态及常见问题

多核cpu如何保证cache缓存数据的一致性(复杂版)

多处理机Cache一致性问题及解决办法(缩减版)

什么是可重入(Reentrant)?
究竟什么是可重入锁?

软链接和硬链接到底有啥作用和区别

死锁的四个必要条件,预防,检测

内存管理之伙伴算法、slab机制,解决内存碎片问题

为什么Linux和Windows的可执行文件不能通用?

epoll系列系统调用

C++线程调度策略

进程优先级的字段[ PRI Nice ]

CPU调度和进程优先级的关系:在采用优先级进程调度时,运行进程是否一定是系统中优先级最高的进程?为什么?

不一定。因为高优先级的进程有可能正处在阻塞队列中,进程调度就从就绪队列中选一个进程占用 CPU,这个被选中的进程可能优先级较低。

关于malloc(0)返回值的一些看法

linux共享内存实现底层原理

分布式一致性协议

【操作系统】进程和线程调度的区别

线程的生命周期及五种基本状态

怎么理解线程使用而不拥有资源?为什么进程切换的开销比线程切换大呢?

Linux 上下文切换的实现

程序kill -9与kill -15的区别,以及回调函数的作用

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值