你见过的最长的C语言结构体有多长?

waring:标题党前言:点进来的小伙伴可能是为了看看结构体的长度的,当然不会让大家失望的,整个复制下来贴在下面了,另外学习C语言的方法无非就是多写多看,看优秀的demo,下面的故事从一个结构体开始,这个结构体选自Linux3.5版本,在/include/linux/sched.h里面,

==========================正文========================

  该结构体长360行,这么大的结构体到底在描述什么?下面我们一起来走进这个结构体,看看这个结构体到底在做什么?

  从操作系统的角度来看,每一个运行的程序都可以视为一个进程,我们知道,在计算机中可以同时运行很多的进程,这些进程彼此运行互不干扰,但是计算机的资源是有限的呀(寄存器,内存)操作系统是怎么做到进程间的相安无事呢?

  这是因为操作系统在创建每个进程的同时,还会为每个进程创建一个进程控制块——简称PCB,这个PCB中定义了一切和该进程相关的信息,一个PCB对应一个进程,一个进程对应一个PCB,我们在谈论进程的同时就可以说是在谈论PCB。

  进程有几个状态,在不同的操作系统下面对进程描述略微有区别,但是大概对进程的描述可以是下面四种:起始态,就绪态,运行态,等待态。每个态下面都对应一个队列,让PCB在这些态中来回的切换。这样就实现了,我在电脑上可以听着音乐写着论坛的效果啦。

下面的代码很长,读者看看中文注释即可,感兴趣的可以详细了解其他的部分。

  那么有很多小伙伴可能就有疑问了,这么大的结构体访问起来岂不是很麻烦?

  没错这个结构体在访问的时候,不是常规的指针的访问形式,这样很慢,他是结构体首地址加上偏移量的形式进行访问。所以每个量的位置不可以随便移动。

扫描二维码关注公众号,回复: 7352102 查看本文章

 

 

 

 

 

  

老九学堂会员出品

作者:快乐的镜子

猜你喜欢

转载自www.cnblogs.com/ljxt/p/11579845.html