����linux�ں˼ܹ�������������-pg电子下载


�����ծ�����֧�����ǵĺ�����ҵ��

10Ԫ 50Ԫ





��֤�룺  ��֤��,�������?����ˢ����֤�� ����



  pg电子下载 ����    
   
 
     
   
����linux�ں˼ܹ�������������
 
���ߣ����⳾
  3388  次浏览      16
 2019-10-16  
 
�༭�ƽ�:
�����ص㽲��4�������ں�����ʵ�ֲ��ԣ��ں���ɲ��֣��ں��ر�֮����
����������cnblogs�����㿪ʼѧ�ܹ����ɻ�����������ȼ�༭�ƽ���

һ���ں˵�����

�����������ϣ��ں���ӳ����������֮���һ���м�㡣�����ǽ�ӧ�ó�������󴫵ݸ�ӳ�������䵱�ײ��������򣬶�ϵͳ�еĸ����豸���������ѱַ��

��ӧ�ó����ӽ��ͽ����ں˿��ա���ϊ��һ̨��ǿ�ļ�����������������һ���߲���ϡ�ӧ�ó�����ӳ����û����ϵ��ֻ���ں�����ϵ���ں���ӧ�ó�����֪���ij�νṹ�е���ײ㡣

�����ɳ�����ͬһϵͳ�в�������ʱ��ҳ���խ��ں���ϊ��դ���������ں˸��𽫿��ù�����դ���䵽����ϵͳ���̣�ͬʱ��֤ϵͳ�������ԡ�

���ں���ϊ�⣬���ṩ��һ������ϵͳ�����ͨ��ϵͳ����������������������

����ʵ�ֲ���

�ڲ���ϵͳ��ʵ�ַ��棬��������ҫ�ķ��ͣ�΢�ں˺ͺ��ںˡ�

΢�ںˣ�ֻ��������ĺ���ֱ�����ں�ʵ�֡����������ĺ��ܣ�ʃ���ļ�ϵͳ���ڴ�����ȣ���ί�и�һщ�����ľ��̣���щ����ͨ����ȷ�����ͨ�žӿ����ں�ͨ�š�������ʒ�ʽ�ŵ��������̬����չ�ժ�������ʱ�л���ҫ������������ڸ������֮��֧�ָ���ͨ����ҫ�����cpuʱ�䣬���ծ���΢�ں��ڸ��о��������ѳ�ϊ��ծ���⣬����ʹ���է����չ��΢��

���ںˣ����ں��ǹ���ϵͳ�ں˵ĵ�ͳ���������ַ����у��ں˵�ȫ���������������ϵͳ�����ڴ�������ļ�ϵͳ���豸�������򣩶������һ���ļ��с��ں���ÿ�����������է����ں������������֣����׵���դ�����г��ָ��ӵ�ƕ�ס�

��ǰ���ں˵�������ǿ��΢�ںˣ�linux��ȡ���ǻ��ں˵����ģʽ������ҳ������һ���̶��ϵĸľ���ϵͳ�����у�ģ����բ��뵽�ں˴����у�ҳ�����ƴ���

�����ں˵���ɲ���

ͼ1�������������linuxϵͳ�ĸ�����σ��լ��ں���������һщ��ҫ��ϵͳ��

ͼ1 linux�ں˵ĸ߲�θ����լ�������linuxϵͳ�еĸ������

1�����̡������л�������

���̣���ͳ��unix����ϵͳ�����е�ӧ�ó��򡢷��������������򶼳�ϊ���̡�ÿ�����̶���cpu�������ڴ��з����ַ�ռ䡣�������̵ĵ�ַ�ռ�����ȫ�����ġ�linux�ƕ�����ϵͳ��֧�ֲ���ִ�е����ɽ��̡�ϵͳ��ͬʱ���������еľ�����ŀ��಻����cpu����ŀ��

�����л�������֮����л����ں˽���cpu�i�������������л��ļ���ϸ�ڡ�ͨ���ڳ������̵�cpu��դ֮ǰ�������������״̬��ص�ҫ�أ������������ڿ���״̬�����¼������ʱ���������״̬ԭ���ָ���

���ȣ��ں˱���ȷ��������ִ����֮�乲��cpuʱ�䡣��ҫ���̵õ���cpuʱ���һ�㣬��ҫ������һ�㣬ȷ���ĸ��������ж೤ʱ��ĺ��̳�ϊ���ȡ�

2��unix����

linux�խ��̲�����һ�ֲ��ϵͳ��ÿ�����̶�������һ�������̡��ں�����init������ϊ��һ�����̣������һ��ϵͳ��ʼ��������init�ǽ������ĸ������н��̶�ֱ�ӻ�����դ�ڸý��̣���linuxϵͳ�ն�����pstree�鿴����������

���ͽṹ����չ��ʽ���½��̴�����ʽ������ء�unix����ϵͳ�д����½��̵ļ������������ֱ���fork��exec��fork���դ�����ǰ���̵�һ������������pid���ӽ�����ȫ���ƹ����̵��ڴ����ݡ���linux�у�����дʱ���ƣ�copy on write�����������ڴ渴�ʋ����ӳٵ������̻��ӽ�����ij�ڴ�ҳ��д������֮ǰ����ֻ�����ʵ�����¸����̺��ӽ��̹���һ���ڴ�ҳ�������ִ��ч�ʡ�exec��һ���³�����ص���ǰ���̵��ڴ��в�ִ�у��ɳ�����ڴ�ҳ��ˢ�����������滻ϊ�����ݣ���ʼִ���³���

�̣߳���ʱҳ��ϊ���������̡�������һ�����̿����������߳���ɣ���щ�̹߳���ͬ�������ݺ���դ��������ִ�г����в�ͬ�ĵ���·����linux��clone���������̣߳�������ʽ������fork�����ǻ���ȷ����щ��դ�븸���̹�������щ��դϊ�̶߳���������ϸ���ȵ���դ������չ��һ���̵߳ĸ����һ���̶��������߳������֮�������ת����

�����ռ䣺��ͳ��linuxʹ��������ȫ���������������ռ����ǰ��ȫ����դ�����˲�ͬ�ķ��顣ÿ�������ռ���԰���һ���ض���pid���ϣ�������ṩ�ļ�ϵͳ�ij�ͬ��ͼ����ij�������ռ��й��صľ����ᴫ�������������ռ��с��������ں˵����в��ֶ���ȫ֧�������ռ䣩�����ռ�ľ�������֮һ������ͨ����ϊ�����������ռ�������ϵͳ�ķ����ͼ��һ̨�������п������ж�������������ȫ����������������kvm����ȣ�������϶���һ���ں����������е�������

3����ַ�ռ�����ȩ����

�����ڴ�������ͨ��ָ��ѱַ�����cpu���ֳ����������ܹ����ĵ�ַ�ռ����󳤶ȡ���32λϵͳϊ�������թ���232b=4gb���ڴ档

��ַ�ռ����󳤶���ʵ�ʿ��õ������ڴ������޹أ���˱���ϊ�����ַ�ռ䡣��ϵͳ��ÿ�����̵ľƕȿ�����ַ�ռ���ֻ������һ�����̣��޷���֪���������̵ĵ��ڡ�linux�������ַ�ռ仮��ϊ�������֣��ֱ�ϊ�ں˿ռ���û��ռ䣬��ͼ2��ʾ��

ͼ2 �����ַ�ռ�ļ���

ͼ3��ȩ����ļ�״ϵͳ

ϵͳ��ÿ�����̶��������������ַ��χ����0��task_size���û��ռ�֮�ϵ����������ں�ר�á���ia-32ϊ������ַ�ռ���3gb�����֣�ÿ�����������ַ�ռ䶼��3gb���ں˿ռ���1gb���á��˻������ڴ������޹ء����ڵ�ַ�ռ����⻯�ľ����ÿ���û����̶���ϊ������3gb�ڴ档����ϵͳ���̵��û��ռ�˴���ȫ���롣��64λ������ɹ����޴�����������ַ�ռ䣬����ϵͳ��������ʹ��с��64��λ����ʵ��ʹ�õ���42ϊ��47λ�ȣ����������խ�ʡһщcpu�ĺ���������

��ȩ�����ں˰������ַ�ռ仮��ϊ�������֣�����ܹ���������ϵͳ���̣�ʹ֮�˴˷��롣�����ִ���cpu���ṩ�˼�����ȩ���𣬽��̿���פ����ijһ����ȩ����ia-32��ϵ�ṹʹ��4����ȩ���𹹳ɵ�ϵͳ����������կ����ǻ�����ͼ3��ʾ��intel��������4����ȩ����linuxֻʹ�����ֲ�ͬ��״̬������̬���û�״̬������״̬�ĺؼ���������û�״̬��ֹ�����ڴ�ռ䡣���û�״̬������̬���л�ͨ��ϵͳ���õ��ض�ת���ֶ���ɣ���ϵͳ���õ�ִ�������ϵͳ����ͬ��ͼ4�����˲�ͬ��ִ�������ģ���ϸ���ۼ���һƪ���ͣ������⣬�ڶദ����ϵͳ�у��߳�����ʱ����ָ��cpu��������ֻ�����ض�cpu�����с�

ͼ4 �ں���̬���û�ִ̬�у�cpu���ʱ����ִ���û��ռ��д��룬��ӧ�ó���ִ��ϵͳ����ʱ�л�������̬����ʱ���ں˿��է��������ַ�ռ��û����֡�ϵͳ���ý�����cpu�ص��û�״̬��ӳ���ж�ҳ����ʹcpu�л�������̬������������ں˲��ܷ����û��ռ䣩

�������£����������ַ�ռ�ͱ�ϵͳ�п��õ������ڴ�󡣴��⣬ÿ������ҳ���������������ַ�ռ䣬��ˣ��ں˺�cpu���뿼����ν�ʵ�ʿ��õ������ڴ�ӳ�䵽�����ַ�ռ������linux�ں�����ҳ����ϊ������ַ���������ַ�������ַ��ϵ�����̵��û��ռ���ں˿ռ䣬��������ַ������ѱַʵ�ʿ��õ��ڴ档ԭ����ͼ5��ʾ���������̵������ַ�ռ䶼������ϊ�ܶ�ȳ��ij��֣�ҳ���������ڴ�ͬ�����л��֡�

ͼ5 �����ַ��������ַ

�����ڴ�ҳ������ϊҳ֡��ҳ��ָ�����ַ�ռ��еļ��ֵ�λ�������ַ�ռ�������ڴ�֮���ӳ��ҳʹ�ý���֮��ĸ�����һ����ɶ����ں˸��������ַ�ռ�ӳ�䵽������ַ�ռ䣬������щ�ڴ������ڽ���֮�乲����щ����������ͼ5�������������ַ�ռ������ҳ��ӳ�䵽ij��ҳ֡����������ϊҳû��ʹ�ã����������в���ҫʹ�ö�û�����룩��

4��ҳ��

�����������ַ�ռ�ӳ�䵽������ַ�ռ�����ݽṹ��ϊҳ��������ҳ���ĺ������ö༶��ҳģ�͡���ͼ6��ʾ���������ַ���ֳ�4���֣�������ҫһ������ҳ��������ǰlinux�ں˲������ļ�ҳ�����˴�������ҳ��ϊ���������ַ�ĵ�һ���ֳ�ϊȫ��ҳŀ¼��page global directory, pgd�����������������е�һ�����飨ÿ���������ҽ���һ�����������ַ�ĵڶ������ֳ�ϊpmd��page middle directory������ͨ��pgd�е��������ҵ���ӧ��pmd֮��ʹ��pmd������pmd�������ַ�ĵ������ֳ�ϊpte��page table entry��������ҳ����������ҳ����������ָ��ҳ֡�������ڴ�ҳ��ҳ֮֡���ӳ���ɴ���ɣ������ڴ�����һ���ֳ�ϊƫ��������ָ����ҳ�ڲ���һ���ֽڵ�λ�á�ÿ����ַ��ָ���ַ�ռ���ψһ�����ij���ֽڡ�

ͼ6 ���������ַ

ҳ���������ַ�ռ��в���ҫ�����򣬲��ش����м�ҳŀ¼��ҳ������ʡ�˴������ڴ档����ÿ�η����ڴ�ʱ�������𼶷��ʶ��������ܽ������ַת��ϊ������ַ��

cpu��ͼʹ��mmu��memory management unit���ż��ڴ���ʲ�����ͬʱ���ڵ�ַת���г������ƶ����щ��ַ�����浽��ַת���󱸻�������translation lookaside buffer����cpu���ٻ����с���������ϵ�ṹ�и��ٻ������ת��͸���ģ���ijщ��ϵ�ṹ����ҫ�ں�ר�ŵ�����

��cpu������ia-32��ϵ�ṹ�ڽ������ַӳ�䵽������ַʱ��ֻ��������ҳ����64λ��ϵ�ṹ����ҫ�������ļ�ҳ�����ں�����ϵ�ṹ�޹صij������ǽٶ�ʹ���ļ�ҳ��������ֻ֧�ֶ���������ҳ����cpu��˵���ں�����ϵ�ṹ��ش������ͨ����ҳ����ȱ�ٵ�ҳ�����з��档

�ڴ�ӳ�䣺�ڴ�ӳ����һ����ҫ�ij����ֶρ�ӳ�䷽�����խ�������դ�����ݴ��䵽�����ַ�ռ��у���ϊӳ��ŀ��ĵ�ַ�ռ����򣬿�������ͨ�ڴ���ҳ��ͨ���ķ������ʡ��ں���ʱ���豸��������ʱ��ֱ��ʹ�����ڴ�ӳ�䣬���������/�������ӳ�䵽�����ַ�ռ�������у�������ڴ�����ķ�д����ϵͳ�ض����豸���������������ʵ�֡�

5�������ڴ�ķ���

�ں˷����ڴ�ʱ�����¼ҳ֡�ѷ�������״̬��������������ʹ��ͬ�����ڴ������ں�ֻ����������ҳ֡�����ڴ滮��ϊ��с�ij��ֹ�����ί�и��û��ռ��еı�׼�⡣

�ں˲��û��ϵͳ���п��ټ���ڴ��е���������ϵͳ�е��ڴ�������������飬ÿ���������ڴ���ϊ��顣��������鶼���у�����ϲ�ϊһ�������ڴ�飬��ϊ��һ����ϵ�ij���ڴ��ļ�顣ͼ7ʦ���˻��ϵͳ����ʼ��сϊ8ҳ�����ϵ��£����ϵͳ��ҫ8��ҳ֡����16��ҳ֡��ɵŀ��ϊ������飬��������...��

ͼ7 ���ϵͳ

�ں˱���������ҫ������ҳ֡с�ö���ڴ�飬�����ں��޷�ʹ�ñ�׼�⺯��������ڻ��ϵͳ�ļ����ϣ��������ڴ�����㣬�����ϵͳ�ṩ��ҳ����ϊ��с�ij��֣����⻹ϊƶ��ʹ�õ�с����������slab���档slab�����զ�ά������ϵͳ�ľ������ڻ����þ�ʱ�������ŵ�ҳ֡��ͼ8�����˻��ϵͳ��slab�������լ��ں���������֮��ĺ�����

ͼ8 ҳ֡�ķ����ɻ��ϵͳ���у���slab�������������с�ڴ��լ��ṩһ���ե��ں˻���

ҳ�潻��ͨ�����ô��̿ռ���ϊ��չ�ڴ棬�����˿����ڴ档�ں���ҫ�����ڴ�ʱ��������ʹ�õ�ҳ����д��ӳ�̣�����ҫ���ʵ�ʱ��ͨ��ȱҳ�쳣���ƣ�����ӧ��ҳ�л����ڴ档

ҳ��������ڽ��ڴ�ӳ�䱻�޸ĵ�������ײ�ŀ��豸ͬ������ʱ������ݻ�д��

6����ʱ

ȫ�ֱ���jiffies_64��jiffies���ֱ���64λ��32λ��ϊ�ں˵�ʱ�����꣬�ᰴ�㶨��ʱ����������������ĸ��²�����ʹ�õײ���ϵ�ṹ�ṩ�ĸ��ֶ�ʱ������ִ�у�

����jiffies�ļ�ʱ������ƚθ֣��ڵײ�ӳ������������ǰ���£��ں˿�ʹ�ø߷ֱ��ʵķ�ʱ���ṩ����ļ�ʱ�ֶσ��ܹ������뼶�ľ�ȷ�ⱥͷֱ��ʼ���ʱ�䡣

��ʱ�����ڿ��զ�̬�ı䣬��̬�ı��ʱ���ڶ��ڹ������޵�ϵͳ������ʼdz����ժ�ƕ��ʽϵͳ���ǻ����õġ�

7��ϵͳ����

ϵͳ�������û��������ں˽����ľ��䷽����posix��׼����������ϵͳ���ã��լ���щϵͳ�������������posix��ϵͳ����linux�ϵ����塣��ͳ��ϵͳ���ð���ͬ�����飬ϊ��

���̹����������½��̣���ѯ��ϣ�����ԡ�

�źţ������źţ���ʱ���լ���ش������ơ�

�ļ����������򿪺͹ر��ļ������ļ���ȡ�����ļ�д�룬��ѯ��ϣ��״̬��

ŀ¼���ļ�ϵͳ��������ɾ����������ŀ¼����ѯ��ϣ�����ӣ����ŀ¼��

�������ƣ���ȡ�ͱ��uid/gid�������ռ�ĵ�����

��ʱ����������ʱ��������ͳ����ϣ��

�û�����ҫ���û�״̬�л�������̬������ϵͳ�ؼ�����ί�ɸ��ں�ִ�у�ϵͳ�����dz���֮·������ͬ���dz�ͬ��ӳ��ƽ̨�ṩ���л����ʋ�����ͬ��

8���豸�������򡢿��豸���ַ��豸

�豸��������������ϵͳ���ӵ�����/���װ��ͨ�ţ���ӳ�̡����������ֽ�ڡ������ȡ�

������է�ϊ���豸���ַ��豸��

���豸��ӧ�ó��������������豸���ݣ����������ȷ����ȡ���ݵ�λ�á����ݵķ�дֻ���կ�ı�����ͨ��512b�����у���֧�ֻ����ַ���ѱַ����ӧ�ã�ӳ�̣�

�ַ��豸���ṩ��������������ӧ�ó������˳���ȡ��ͨ����֧�������ȡ���෴�������豸֧�ְ��ֽ�/�ַ�����д���ݡ���ӧ�ã����ƽ������

�����ں�ϊ���ϵͳ���ܣ��㷺ʹ���˻�����ƣ����豸����������ַ��豸���ӡ�

9������

����������ͨ���ڼ䣬���ݴ�����˸���э����с����յ�����ʱ���ں˱�����ը�э���ĵ����������ݽ��в���������ȼ����ч���ݴ��ݸ�ӧ�ó��򣻷�������ʱ���ں˱������ȸ��ݸ�э����ҫ�������ݣ����ܷ��͡�linuxʹ����դ��bsd���׽��ֳ�����֧��ͨ���ļ��ӿڴ����������ӡ��׽��ֿ��կ���ϊӧ�ó����ļ��ӿڡ��ں˵�����ʵ��֮��ĵ�����

10���ļ�ϵͳ

linuxϵͳ�ɴ����ļ���ɣ������ݴ洢��ӳ�̻��������豸���洢ʹ���˲��ʽ�ļ�ϵͳ��linux֧�����಻ͬ���ļ�ϵͳ����׼��ext2��ext3��ext4�ļ�ϵͳ��reiserfs��xfs��vfat��ϊ����dos���ȵȡ���ͬ���ļ�ϵͳ���ڲ�ͬ�ĸ�����󡣴����ں˱����ṩһ��vfs��virtual filesystem��virtual filesystem switch���������ֵײ��ļ�ϵͳ�ľ���������ӧ�ò���롣��ͼ9��ʾ��vfs�������µľӿڣ������ļ�ϵͳ������ʵ�ָýӿڣ���ͬʱҳ�����ϵľӿڣ��û�����ͨ��ϵͳ���������ܹ������ļ�ϵͳ���ܣ���

ͼ9 �����ļ�ϵͳ�㡢�ļ�ϵͳʵ�ֺͿ��豸��֮��ļ�����

11��ģ����ȳ��

ģ������������ʱ��̬���ں����ӹ��ܣ����豸���������ļ�ϵͳ������э��ȣ��������˺��ں���΢�ں����һ����ҫ�ij���֮����ģ��ҳ����������ʱ���ں�д�ڣ������˿������ں������

ģ�鱾����ҳ����ͨ�����������ṩijщ�������ģ���ʼ������ֹʱִ�у��ա����ں�ע���ע��ģ�顣ģ������������뵽�ں��еĵ���һ���������ں����к��������ݡ�

��֧���ȳ�ζ��ԣ�ģ�鱾�����dz���ġ�ijщ���ߣ�����usb��������ϵͳ����ʱ�����豸������������ϵͳ��⵽�豸ʱ��ͨ�����ض�ӧ��ģ�飬���������ӵ��ں��с���ijщģ�鿪����դ�����ۣ�

12������

�ں�ʹ�û������ľ����ܡ��ӵ��ٵŀ��豸��ȡ�����ݻ���ʱ�������ڴ��у�ӧ�ó����´η�������ʱ�������ƹ����ٵŀ��豸�������ں�ͨ������ҳ���ڴ�ӳ����ʵ�ֶկ��豸�ķ��ʣ���˻���ҳ��ҳ��֯����ϊҳ���档�黺�����ڻ���û����֯��ҳ�����ݣ�����ѱ�ҳ����ȡ����

13����������

c�������ظ����ֵ�һ�������ƕ�˫�������ĵ������ں�ͬ����ҫ�����������������ں��ṩ��һ����׼�����������ڽ��κ����͵����ݽṹ�˴����������������ͱ�ȫ�����������������ݽṹ�������һ������ϊlist_head�ij�ա�����а���������ͷ���ָ�롣�����������list_head��ʵ����ͨ����list_head��list_name������������ʼ����ͼ10ϊ�ں˽����ı�׼˫����ʾ��ͼ�����������в���ʱ���ں˶�����һщapi��

ͼ10 ��׼˫����

list_add(new,head)���ڽ���head֮�����newԪ�ء�

list_add_tail(new,head)����head֮ǰ��������ĩβ������newԪ�ء�

list_del(entry)����������ɾ��һ�

list_empty(head)����������ƿ�ϊ�ա�

list_splice(list,head)����head�����list�������ϲ�����������

list_entry(ptr,type,member)����������Ԫ�ء���ptrϊָ�����ݽṹlist_head��ָ�룬type�ǹ����ݽṹ�����ͣ�member�����ݽṹ�б�ʾ����Ԫ�صij�ա����

list_for_each(pos,head)��������������Ԫ�ء�

14��������������ü���

�ں�������ط���ҫ���ټ�¼c�����нṹ��ʵ������ᵼ�´��븴�ơ���ˣ����ں�2.5�����ڼ䣬����һ���եķ����������ں˶�������ֹ��ϊ�˷�ֹ���븴�ƣ�ͬʱҳϊ�ں˲�ͬ���ֹ����ķ����ṩ��һ�µ���ͼ�������ಿ�ֿ�����ч��ʹ�������ϣ��һ���ե��ں˶�����ƿ�����ִ�у����ü����������������������ϼ��������������ե������û��ռ䣨ͨ��sysfs�ļ�ϵͳ����

��1��һ���ե��ں˶���

һ���ե��ں˶���������һ���ṹ��kobject�������ں˶���ļ�����

struct kobject{
  struct kref kref; //���ڼ����ü����ĺ���
  struct list_head entry; //��׼����Ԫ��
  struct kobject * parent; //һ��ָ�򸸶����ָ��
  struct kset * kset; //������������������õ�һ������ʱ��ҫ
  struct kobj_type *ktype; //�ṩ�˰���kobject���ݽṹ������ϸ��ϣ
  struct sysfs_dirent * sd;
}

 

kobject������������ԣ�c /java���еķ��������������ơ�kobject�����ṩ�����ں�ʹ������������ŀ����ԡ�

��2�����󼯺�

�ܶ�����£���ҫ����ͬ���ں˶�����ൽ�����у����������ַ��豸���ϣ����л���pci���豸���ϵȣ���

1 struct kset{
2 ��������struct kobj_type ��������* ktype;
//ָ��kset�и��ں˶���ĺ���kobj_type�ṹ���ṩ����sysfs�ļ�ϵͳ�ľӿ�
3 ��������struct list_head ���� ����list;//��ǰ���ϵ��ں˶�������
4 ...
5 ��������struct kobject ������������kobj;
6 ��������struct kset_uevent_ops * uevent_ops; //�ṩ�����ɺ���ָ�룬������״̬���ݸ��û���
7 }

 

kset���ں˶���ӧ�õĵ�һ�����ӣ�����kobject�ĺ�������kset��ƕ����һ��kobject��ʵ��kobj�����뼯���а����ĸ���kobject�޹أ�ֻ����������kset��������

��3�����ü���

���ü������ڼ���ں����ж��ٵط�ʹ����ij������ÿ���ں˵�һ��������ҫij����������������ϣʱ���ö������ü�����1�����������ҫ�������ü�����1��������ϊ0ʱ���ں�֪��������ҫ�ö��󣬱���ڴ��н����ͷš��������ü����ij���ϊԭ�ӳ�����

15����������

��1�����ͷ���

�ں�ʹ��typedef��������������ͣ�������������ϵ�ṹ��ص����ԡ�������sector_t����ָ�����豸������ţ�pid_t��ʾ����id��_s8(8λ�з�����)��_u8(8λ�޷�����)�ȣ�

��2���ֽ���

�ִ���������ô����big endian����с����little endian����ʽ��������у���λ�ڵ��ֽڣ�с�����е�λ�ڵ��ֽڡ��ں��ṩ�˸��ֺ����ͺ꣬������cpuʹ�õĸ�ʽ���ض���ʾ��֮��ת����

��3��per_cpu����

per_cpu������ͨ��define_per_cpu(name,type)��������������cpu��smpϵͳ�ϣ���ϊÿ��cpu�ֱ𴴽�������һ��ʵ��������ij���ض�cpu��ʵ������ͨ��get_cpu(name,cpu)��ã�����smp_processor_id()���է��ص�ǰ�������id������per_cpu�����ô� ���������ݺܿ��ܴ����ڴ����������у���˿��կ��ٷ��ʣ��ƹ��˶ദ����ϵͳ��ʹ�ÿ��ܱ�����cpuͬʱ���ʵı�����ͨ�����⡣

��4�������û��ռ�

դ�����жദָ����ϊ_user����ʾ���û��ռ�������δ֪����û�н�һ��Ԥ����ʩʱ���������׷�����щָ��ָ���������ϊ�ڴ���ͨ��ҳ��ӳ�䵽�����ַ�ռ���û��ռ䲿�ֵģ������������ڴ�ֱ��ӳ��ģ��ں���ҫȷ��ָ����ָ��ҳ֡ȷʵ�����������ڴ��с�

�ġ��ں��ر�֮��

�����ں�ͨ���ȵ����û���������ѡ�

�ں��ṩ�����ศ���������������û��ռ��c���կ⣬���ں������еķ����������صöࡣ

�û�����������ܻᵼ��segmentation fault��core dump�����ں˴���ᵼ������ϵͳ���ϡ�

���뿼�ǵ��ں����е�������ϵ�ṹ�ϸ�����֧�ַƕ�����ڴ���ʡ�

�����ں˴��붼�����dz�����ȫ�ġ����ڶദ�����������֧�֣�linux�ں˴�������ǿɳ�����̰߳�ȫ�ġ�

�ں˴��������с����ʹ���������϶��ܹ�������

���������ϵ�ṹ�������������ں���ִ�и�����㣬��˼�����ҫ��취�������������

 
   
3388 �����       16
 
�������

 
����ĵ�

 
��ؿγ�

"));
网站地图