- 博客(5)
- 收藏
- 关注
原创 线程调度都有哪些方法?
线程调度都有哪些方法?非抢占的先到先服务的模型是最朴素的,公平性和吞吐量可以保证。但是因为希望减少用户的平均等待时间,操作系统往往需要实现抢占。操作系统实现抢占,仍然希望有优先级,希望有最短任务优先。但是这里有个困难,操作系统无法预判每个任务的预估执行时间,就需要使用分级队列。最高优先级的任务可以考虑非抢占的优先级队列。 其他任务放到分级队列模型中执行,从最高优先级时间片段最小向最低优先级时间片段最大逐渐沉淀。这样就同时保证了小任务先行和高优任务最先执行。...
2020-11-14 15:03:52
821
原创 brk/srbk的应用:在不知道个数的情况下为同类型的数据分配内存
1. 前言看了一些写brk/sbrk的技术文章,整体看的还是一头雾水,我这里就不写那些晦涩难懂的解释,只写一个简单的例子,介绍下其使用场景。对于一个已知数量的结构分配内存,我们一般都是用的malloc/free。如果我们不知道数量呢?比如说给你一堆同类型的数据,让你把满足某些条件的数据保存下来。通常我们的做法是先遍历一遍这堆数据,找到满足条件的个数,然后根据个数用malloc分配内存,然后再遍历一遍把满足条件的个数保存到内存。这里面有两个问题需要注意:1.这里我们遍历了两遍,效率太低;2.如果这
2020-10-15 19:31:56
349
原创 利用结构体成员偏移量和结构体成员地址求结构体的地址
利用结构体成员偏移量和结构体成员地址求结构体的地址1. 前言在实际项目开发中,发现了两个有意思的宏定义。#define offsetof(type, member) ((unsigned long)(&((type *)0)->member))#define LIST_ENTRY(optr, type, member) ((type *)((char *)(optr) - offsetof(type, member)))第一个是求结构体成员的偏移量。假设在地址0处有一个type类
2020-10-14 17:29:10
718
原创 实现从包含‘\0‘的主字符串中匹配指定的子字符串的函数
从包含’\0’的主字符串中匹配指定的子字符串1.前言在做项目的过程中,处理pcap数据包,对包里的内容进行字符查找时,要注意对’\0’的处理。举个列子,下图中是wireshark打开的一个http2的数据包,比方你想从流里面查找“3gpp.ngap”这个子串,如果直接用strstr函数去查找,就查找不到该子串。因为其查找遇到‘00‘就停止了,他认为遇到了字符串的结束标志。因此这个时候需要自己手动去实现一个可以从包含’\0’的主字符串中匹配指定的子字符串的函数。因此自己实现了一个从包含’\0’的主字符串
2020-10-13 17:50:34
354
1
原创 越界导致函数参数的地址改变
越界导致函数参数的地址改变1.前言2.代码3.总结4.问题1.前言最近做的项目当中,遇到了一个函数的参数地址被改变的问题,导致后面系统崩溃。现将其提炼成一段小代码,记录如下。2.代码#include <stdio.h>#include <stdlib.h>#include <string.h>void func(char *param, char *s, char *buf){ //模拟做了一些解码处理,然后把一段字符赋值给buf //但是没有对长度做
2020-10-12 19:56:26
547
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人